@tuki-io/tuki-widgets 0.0.219-dev.45 → 0.0.219-dev.47

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 (23) hide show
  1. package/esm2020/locations/src/locations.component.mjs +2 -2
  2. package/esm2020/locations/src/services/locations.service.mjs +1 -3
  3. package/esm2020/workspaces/src/app.constants.mjs +10 -1
  4. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +9 -4
  5. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +3 -3
  6. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +80 -22
  7. package/esm2020/workspaces/src/services/workspaces.service.mjs +23 -10
  8. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  9. package/esm2020/workspaces/src/workspaces.component.mjs +7 -6
  10. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +1 -3
  11. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  12. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +116 -41
  13. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  14. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +1 -3
  15. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  16. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +122 -40
  17. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/workspaces/src/app.constants.d.ts +8 -0
  20. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +2 -1
  21. package/workspaces/src/services/workspace-detail.service.d.ts +11 -2
  22. package/workspaces/src/services/workspaces.service.d.ts +1 -1
  23. package/workspaces/src/types/workspace.d.ts +69 -0
@@ -83,10 +83,10 @@ export class WorkspacesTableComponent {
83
83
  }
84
84
  }
85
85
  WorkspacesTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesTableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
86
- WorkspacesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: { workspaces: "workspaces", total: "total", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", pendingWorkspaceIds: "pendingWorkspaceIds" }, outputs: { openWorkspace: "openWorkspace", licenseWithHybrid: "licenseWithHybrid", migrateToMT: "migrateToMT", enableWebexCalling: "enableWebexCalling", migrateToUCM: "migrateToUCM", addDevice: "addDevice", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ workspace.displayName }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Hybrid\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate User to MT\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
86
+ WorkspacesTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: { workspaces: "workspaces", total: "total", pageIndex: "pageIndex", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", pendingWorkspaceIds: "pendingWorkspaceIds" }, outputs: { openWorkspace: "openWorkspace", licenseWithHybrid: "licenseWithHybrid", migrateToMT: "migrateToMT", enableWebexCalling: "enableWebexCalling", migrateToUCM: "migrateToUCM", addDevice: "addDevice", pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ workspace.displayName }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Cloud Intelligence\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i4.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i4.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i4.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i5.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
87
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesTableComponent, decorators: [{
88
88
  type: Component,
89
- args: [{ selector: 'tk-workspaces-table', template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ workspace.displayName }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Hybrid\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate User to MT\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"] }]
89
+ args: [{ selector: 'tk-workspaces-table', template: "<div class=\"tk-workspaces-table__bulk-bar\">Select one or more workspaces for bulk actions</div>\r\n\r\n<div class=\"tk-workspaces-table__wrapper\">\r\n <table class=\"tk-workspaces-table__table\">\r\n <thead>\r\n <tr>\r\n <th class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"allSelected\" [indeterminate]=\"someSelected\" (change)=\"toggleAll()\" />\r\n </th>\r\n <th>Name</th>\r\n <th>Devices</th>\r\n <th>Scheduling</th>\r\n <th>Calling</th>\r\n <th>Provisioning Type</th>\r\n <th>Status</th>\r\n <th class=\"tk-workspaces-table__settings-cell\">\r\n <mat-icon class=\"tk-workspaces-table__settings-icon\">settings</mat-icon>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let workspace of workspaces\"\r\n [class.tk-workspaces-table__row--selected]=\"isSelected(workspace.id)\">\r\n <td class=\"tk-workspaces-table__checkbox-cell\">\r\n <input type=\"checkbox\" [checked]=\"isSelected(workspace.id)\" (change)=\"toggleRow(workspace.id)\" />\r\n </td>\r\n <td class=\"tk-workspaces-table__name-cell\" (click)=\"onOpenWorkspace(workspace)\">\r\n <div class=\"tk-workspaces-table__name-wrapper\">\r\n <span class=\"tk-workspaces-table__name-icon\">\r\n <img src=\"assets/icons/device-in-room-regular.svg\" alt=\"\" />\r\n </span>\r\n <div class=\"tk-workspaces-table__name-info\">\r\n <a href=\"javascript:void(0)\" class=\"tk-workspaces-table__name-link\">{{ workspace.displayName }}</a>\r\n <div class=\"tk-workspaces-table__name-meta\">\r\n <span class=\"tk-workspaces-table__name-type\">{{ workspace.typeLabel }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/people-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__name-capacity\">{{ workspace.capacity ?? 'No capacity' }}</span>\r\n <span class=\"tk-workspaces-table__meta-sep\">&middot;</span>\r\n <!-- <mat-icon class=\"tk-workspaces-table__meta-icon\">location_on</mat-icon> -->\r\n <img class=\"tk-workspaces-table__meta-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <a\r\n *ngIf=\"workspace.location; else noLocation\"\r\n href=\"javascript:void(0)\"\r\n class=\"tk-workspaces-table__location-link\">{{ workspace.location }}</a>\r\n <ng-template #noLocation>\r\n <span class=\"tk-workspaces-table__location-empty\">No location</span>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"tk-workspaces-table__devices\">\r\n <ng-container *ngIf=\"workspace.devices.length; else noDevices\">\r\n <span *ngFor=\"let device of workspace.devices\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container>\r\n <!-- <ng-container *ngFor=\"let device of workspace.devices\">\r\n <span *ngIf=\"device && device.model else noDevice\" class=\"tk-workspaces-table__device-card\" [title]=\"device.label\">\r\n <img\r\n class=\"tk-workspaces-table__device-icon\"\r\n [src]=\"getDeviceIcon(device.model)\"\r\n [alt]=\"device.label\" />\r\n </span>\r\n </ng-container> -->\r\n <ng-template #noDevices>\r\n <button\r\n type=\"button\"\r\n class=\"tk-workspaces-table__device-add\"\r\n (click)=\"onAddDevice(workspace, $event)\">\r\n <span class=\"tk-workspaces-table__device-add-label\">\r\n <img\r\n class=\"tk-workspaces-table__device-add-icon\"\r\n src=\"assets/icons/multipled-devices-regular.svg\"\r\n alt=\"\" />\r\n Add device\r\n </span>\r\n </button>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td>{{ workspace.scheduling }}</td>\r\n <td class=\"tk-workspaces-table__calling-cell\">\r\n <span class=\"tk-workspaces-table__calling-content\">\r\n <img class=\"tk-workspaces-table__calling-icon\" src=\"assets/icons/location-regular.svg\" alt=\"\" />\r\n <span class=\"tk-workspaces-table__calling-text\" title=\"Cisco Webex Calling Professional Workspace\">Cisco Webex Calling Professional Workspace</span>\r\n </span>\r\n </td>\r\n <td>\r\n <div *ngIf=\"workspace.isHybrid\" class=\"tk-workspaces-table__provisioning-icons\">\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </div>\r\n <ng-container *ngIf=\"!workspace.isHybrid\">\r\n <span *ngIf=\"workspace.device.cucmId != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'di'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/di_cloud_24.svg\"\r\n [matTooltip]=\"'Webex Calling DI'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n <span *ngIf=\"workspace.device.webexUUID != null\" class=\"icon-wrapper\" (click)=\"onOpenWorkspace(workspace, 'webex'); $event.stopPropagation()\"\r\n ><img\r\n src=\"assets/icons/webex.svg\"\r\n [matTooltip]=\"'Webex Calling'\"\r\n matTooltipPosition=\"right\"\r\n width=\"20\"\r\n alt=\"\"\r\n /></span>\r\n </ng-container>\r\n </td>\r\n <td>\r\n <span class=\"tk-workspaces-table__status\">\r\n <span\r\n class=\"tk-workspaces-table__status-dot\"\r\n [class.tk-workspaces-table__status-dot--hybrid]=\"workspace.isHybrid\"\r\n [class.tk-workspaces-table__status-dot--active]=\"!workspace.isHybrid\"></span>\r\n {{ workspace.isHybrid ? 'Hybrid' : 'Active' }}\r\n </span>\r\n </td>\r\n <td class=\"tk-workspaces-table__actions-cell\">\r\n <mat-progress-spinner\r\n *ngIf=\"isPending(workspace.id)\"\r\n class=\"tk-workspaces-table__actions-spinner\"\r\n [diameter]=\"20\"\r\n strokeWidth=\"2\"\r\n mode=\"indeterminate\">\r\n </mat-progress-spinner>\r\n <button\r\n *ngIf=\"!isPending(workspace.id)\"\r\n type=\"button\"\r\n class=\"tk-workspaces-table__actions-button\"\r\n [matMenuTriggerFor]=\"rowMenu\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu #rowMenu=\"matMenu\">\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"licenseWithHybrid.emit(workspace)\">\r\n License with Cloud Intelligence\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMoveToMTDisabled(workspace)\"\r\n (click)=\"migrateToMT.emit(workspace)\">\r\n Migrate Workspace To Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isEnableWebexCallingDisabled(workspace)\"\r\n (click)=\"enableWebexCalling.emit(workspace)\">\r\n Enable Webex Calling\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-menu-item\r\n [disabled]=\"isMigrateToUCMDisabled(workspace)\"\r\n (click)=\"migrateToUCM.emit(workspace)\">\r\n Migrate User to UCM\r\n </button>\r\n </mat-menu>\r\n </td>\r\n </tr>\r\n <tr *ngIf=\"!workspaces.length\">\r\n <td [attr.colspan]=\"8\" class=\"tk-workspaces-table__empty\">No workspaces to display.</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n<mat-paginator\r\n class=\"tk-workspaces-table__paginator\"\r\n [length]=\"total\"\r\n [pageIndex]=\"pageIndex\"\r\n [pageSize]=\"pageSize\"\r\n [pageSizeOptions]=\"pageSizeOptions\"\r\n (page)=\"onPage($event)\">\r\n</mat-paginator>\r\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";:host{display:block;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2}.tk-workspaces-table__bulk-bar{margin-bottom:1rem;font-size:.875rem;color:#000000f2}.tk-workspaces-table__wrapper{overflow-x:auto}.tk-workspaces-table__paginator{border:1px solid rgba(0,0,0,.12);border-top:none;background:#fff;font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif}.tk-workspaces-table__table{width:100%;border-collapse:collapse;font-family:Inter,sans-serif}.tk-workspaces-table__table th{height:39px;padding:.5rem 1.5rem .5rem .75rem;background-color:#ededed;text-align:start;font-size:.75rem;font-weight:500;color:#000000b3;word-break:break-all;max-inline-size:100%;cursor:pointer}.tk-workspaces-table__table th:hover{background-color:#dedede}.tk-workspaces-table__table td{height:49px;padding:.5rem 1.5rem .5rem .75rem;box-shadow:inset 0 -1px #0003;background-color:#fff;text-align:start;font-size:.875rem;color:#000000f2;word-break:break-all;cursor:pointer;transition:background-color .2s,box-shadow .2s}.tk-workspaces-table__table tbody tr:hover td{background:#ededed}.tk-workspaces-table__table tbody tr.tk-workspaces-table__row--selected td{background:#f0f6ff}.tk-workspaces-table__checkbox-cell{width:2.5rem;cursor:default}.tk-workspaces-table__settings-cell{width:2.5rem;text-align:center}.tk-workspaces-table__settings-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#00000080}.tk-workspaces-table__name-cell{min-width:14rem}.tk-workspaces-table__name-wrapper{display:flex;align-items:center;gap:.625rem}.tk-workspaces-table__name-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;flex-shrink:0;border-radius:50%;background:#2b2b2b;color:#fff}.tk-workspaces-table__name-icon img{height:1.125rem;width:1.125rem;filter:brightness(0) invert(1)}.tk-workspaces-table__name-info{display:flex;flex-direction:column;gap:.5rem;min-width:0}.tk-workspaces-table__name-link{color:#000000de;font-weight:500;text-decoration:none}.tk-workspaces-table__name-meta{display:flex;align-items:center;gap:.25rem;font-size:.875rem;color:#0009;white-space:nowrap}.tk-workspaces-table__name-meta .tk-workspaces-table__name-type,.tk-workspaces-table__name-meta .tk-workspaces-table__name-capacity{color:#0006}.tk-workspaces-table__meta-icon{font-size:.875rem;height:.875rem;width:.875rem;color:#0006}.tk-workspaces-table__meta-sep{color:#0000004d}.tk-workspaces-table__location-link{color:#0353a8;text-decoration:none}.tk-workspaces-table__location-empty{color:#0009}.tk-workspaces-table__devices{display:flex;align-items:flex-start;gap:.625rem;padding:.5rem 0}.tk-workspaces-table__device-card{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;padding:.5rem;border:1px solid rgba(0,0,0,.12);border-radius:.5rem;background:#fff;box-sizing:border-box;padding:12px;block-size:60px}.tk-workspaces-table__device-icon{inline-size:40px;display:inline-block;vertical-align:middle;max-inline-size:100%;block-size:auto}.tk-workspaces-table__device-avatar{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:50%;background:#757575;color:#fff;font-size:.6875rem;font-weight:600}.tk-workspaces-table__device-add{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3.5rem;padding:.5rem 1.25rem;border:none;border-radius:.5rem;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg width%3D%22186%22 height%3D%2274%22 viewBox%3D%220 0 186 74%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M1 8.51269C1 4.09442 4.58172 0.512695 9 0.512695H65C69.4183 0.512695 73 4.09442 73 8.5127V64.5127C73 68.931 69.4183 72.5127 65 72.5127H9C4.58172 72.5127 1 68.931 1 64.5127V8.51269Z%22 stroke%3D%22url(%23paint0_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 8.51269C77 4.09442 80.5817 0.512695 85 0.512695H111C115.418 0.512695 119 4.09442 119 8.5127V26.5127C119 30.931 115.418 34.5127 111 34.5127H85C80.5817 34.5127 77 30.931 77 26.5127V8.51269Z%22 stroke%3D%22url(%23paint1_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M123 8.51269C123 4.09442 126.582 0.512695 131 0.512695H177C181.418 0.512695 185 4.09442 185 8.5127V26.5127C185 30.931 181.418 34.5127 177 34.5127H131C126.582 34.5127 123 30.931 123 26.5127V8.51269Z%22 stroke%3D%22url(%23paint2_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M77 46.5127C77 42.0944 80.5817 38.5127 85 38.5127H131C135.418 38.5127 139 42.0944 139 46.5127V64.5127C139 68.931 135.418 72.5127 131 72.5127H85C80.5817 72.5127 77 68.931 77 64.5127V46.5127Z%22 stroke%3D%22url(%23paint3_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22%23DEDEDE%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cpath d%3D%22M143 46.5127C143 42.0944 146.582 38.5127 151 38.5127H177C181.418 38.5127 185 42.0944 185 46.5127V64.5127C185 68.931 181.418 72.5127 177 72.5127H151C146.582 72.5127 143 68.931 143 64.5127V46.5127Z%22 stroke%3D%22url(%23paint4_radial_6222_238881)%22 stroke-dasharray%3D%224 4%22%2F%3E%0D%3Cdefs%3E%0D%3CradialGradient id%3D%22paint0_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint1_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint2_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint3_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3CradialGradient id%3D%22paint4_radial_6222_238881%22 cx%3D%220%22 cy%3D%220%22 r%3D%221%22 gradientUnits%3D%22userSpaceOnUse%22 gradientTransform%3D%22translate(93 36.5127) rotate(90) scale(36 92)%22%3E%0D%3Cstop stop-color%3D%22white%22%2F%3E%0D%3Cstop offset%3D%221%22 stop-color%3D%22white%22 stop-opacity%3D%220%22%2F%3E%0D%3C%2FradialGradient%3E%0D%3C%2Fdefs%3E%0D%3C%2Fsvg%3E%0D\");background-repeat:no-repeat;background-position:center;background-size:contain;font-family:inherit;white-space:nowrap;cursor:pointer;box-sizing:border-box}.tk-workspaces-table__device-add-label{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem .75rem;border-radius:999px;color:#000000f2;font-size:.875rem;transition:background-color .15s}.tk-workspaces-table__device-add:hover .tk-workspaces-table__device-add-label{background-color:#ededed}.tk-workspaces-table__device-add-icon{height:1.125rem;width:1.125rem}.tk-workspaces-table__devices-empty{color:#0000004d}.tk-workspaces-table__calling-cell{max-width:14rem}.tk-workspaces-table__calling-content{display:flex;align-items:center;gap:.375rem}.tk-workspaces-table__calling-icon{flex:none;width:1rem;height:1rem;opacity:.4}.tk-workspaces-table__calling-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-workspaces-table__provisioning-icon{font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0009}.tk-workspaces-table__provisioning-icons{display:flex;align-items:center;gap:.5rem}.tk-workspaces-table__status{display:inline-flex;align-items:center;gap:.375rem;white-space:nowrap}.tk-workspaces-table__status-dot{width:.5rem;height:.5rem;border-radius:50%;background:rgba(0,0,0,.3);flex-shrink:0}.tk-workspaces-table__status-dot--active{background:#1d805f}.tk-workspaces-table__status-dot--inactive{background:#c73636}.tk-workspaces-table__status-dot--hybrid{background:#639fff}.tk-workspaces-table__actions-cell{width:2.5rem;text-align:center}.tk-workspaces-table__actions-button{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:.25rem;color:#00000080;cursor:pointer;border-radius:4px}.tk-workspaces-table__actions-button:hover{background:rgba(0,0,0,.06)}.tk-workspaces-table__actions-spinner{display:inline-flex;margin:0 auto}.tk-workspaces-table__empty{padding:1.5rem;text-align:center;color:#0009;cursor:default}\n"] }]
90
90
  }], propDecorators: { workspaces: [{
91
91
  type: Input
92
92
  }], total: [{
@@ -114,4 +114,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
114
114
  }], pageChange: [{
115
115
  type: Output
116
116
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvY29tcG9uZW50cy93b3Jrc3BhY2VzLXRhYmxlL3dvcmtzcGFjZXMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL2NvbXBvbmVudHMvd29ya3NwYWNlcy10YWJsZS93b3Jrc3BhY2VzLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLGFBQWEsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTVcsZUFBVSxHQUFnQixFQUFFLENBQUM7UUFDN0IsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLHdCQUFtQixHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTVDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDdkQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENB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QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzdELENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxTQUFvQjtRQUMvQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzVELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFvQjtRQUN6QyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDdEUsQ0FBQzs7c0hBdEZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLDBkQ2ZyQywyOFNBMk1BOzRGRDVMYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUt0QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlLCBXb3Jrc3BhY2VPcGVuRXZlbnQgfSBmcm9tICcuLi8uLi90eXBlcy93b3Jrc3BhY2UnO1xyXG5pbXBvcnQgeyBnZXREZXZpY2VJY29uIGFzIHJlc29sdmVEZXZpY2VJY29uIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLWljb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzUGFnZUNoYW5nZSB7XHJcbiAgcGFnZUluZGV4OiBudW1iZXI7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay13b3Jrc3BhY2VzLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcclxuICBASW5wdXQoKSBwYWdlSW5kZXggPSAwO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjUsIDUwLCAxMDBdO1xyXG4gIEBJbnB1dCgpIHBlbmRpbmdXb3Jrc3BhY2VJZHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlbldvcmtzcGFjZSA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlT3BlbkV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBsaWNlbnNlV2l0aEh5YnJpZCA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPigpO1xyXG4gIEBPdXRwdXQoKSBtaWdyYXRlVG9NVCA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPigpO1xyXG4gIEBPdXRwdXQoKSBlbmFibGVXZWJleENhbGxpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtzcGFjZT4oKTtcclxuICBAT3V0cHV0KCkgbWlncmF0ZVRvVUNNID0gbmV3IEV2ZW50RW1pdHRlcjxXb3Jrc3BhY2U+KCk7XHJcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXb3Jrc3BhY2VzUGFnZUNoYW5nZT4oKTtcclxuXHJcbiAgc2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZ2V0IGFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRJZHMuc2l6ZSA9PT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBzb21lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZElkcy5zaXplID4gMCAmJiAhdGhpcy5hbGxTZWxlY3RlZDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLmFsbFNlbGVjdGVkID8gbmV3IFNldCgpIDogbmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UuaWQpKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVJvdyh3b3Jrc3BhY2VJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U2VsZWN0aW9uID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkSWRzKTtcclxuICAgIGlmIChuZXh0U2VsZWN0aW9uLmhhcyh3b3Jrc3BhY2VJZCkpIHtcclxuICAgICAgbmV4dFNlbGVjdGlvbi5kZWxldGUod29ya3NwYWNlSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV4dFNlbGVjdGlvbi5hZGQod29ya3NwYWNlSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IG5leHRTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkKHdvcmtzcGFjZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzLmhhcyh3b3Jrc3BhY2VJZCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Xb3Jrc3BhY2Uod29ya3NwYWNlOiBXb3Jrc3BhY2UsIGNvbm5lY3Rpb25UeXBlPzogV29ya3NwYWNlQ29ubmVjdGlvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KHsgaWQ6IHdvcmtzcGFjZS5pZCwgY29ubmVjdGlvblR5cGU6IGNvbm5lY3Rpb25UeXBlID8/IHRoaXMucmVzb2x2ZUNvbm5lY3Rpb25UeXBlKHdvcmtzcGFjZSkgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVDb25uZWN0aW9uVHlwZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiAhd29ya3NwYWNlLmlzSHlicmlkICYmIHdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEICE9IG51bGwgPyAnd2ViZXgnIDogJ2RpJztcclxuICB9XHJcblxyXG4gIG9uQWRkRGV2aWNlKHdvcmtzcGFjZTogV29ya3NwYWNlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREZXZpY2UuZW1pdCh3b3Jrc3BhY2UuaWQpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KCk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2VJbmRleDogZXZlbnQucGFnZUluZGV4LCBwYWdlU2l6ZTogZXZlbnQucGFnZVNpemUgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREZXZpY2VJY29uKG1vZGVsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiByZXNvbHZlRGV2aWNlSWNvbihtb2RlbCk7XHJcbiAgfVxyXG5cclxuICBpc1BlbmRpbmcod29ya3NwYWNlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5oYXMod29ya3NwYWNlSWQpO1xyXG4gIH1cclxuXHJcbiAgaXNNb3ZlVG9NVERpc2FibGVkKHdvcmtzcGFjZTogV29ya3NwYWNlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAod29ya3NwYWNlLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5pc0h5YnJpZCAmJiAhIXdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVXZWJleENhbGxpbmdEaXNhYmxlZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHdvcmtzcGFjZS5zdGF0dXMgIT09ICdpbmFjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5pc0h5YnJpZCAmJiAhd29ya3NwYWNlLmRldmljZS53ZWJleFVVSUQ7XHJcbiAgfVxyXG5cclxuICBpc01pZ3JhdGVUb1VDTURpc2FibGVkKHdvcmtzcGFjZTogV29ya3NwYWNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdhY3RpdmUnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fYnVsay1iYXJcIj5TZWxlY3Qgb25lIG9yIG1vcmUgd29ya3NwYWNlcyBmb3IgYnVsayBhY3Rpb25zPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fd3JhcHBlclwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3RhYmxlXCI+XHJcbiAgICA8dGhlYWQ+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGggY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19jaGVja2JveC1jZWxsXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIiBbaW5kZXRlcm1pbmF0ZV09XCJzb21lU2VsZWN0ZWRcIiAoY2hhbmdlKT1cInRvZ2dsZUFsbCgpXCIgLz5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0aD5OYW1lPC90aD5cclxuICAgICAgICA8dGg+RGV2aWNlczwvdGg+XHJcbiAgICAgICAgPHRoPlNjaGVkdWxpbmc8L3RoPlxyXG4gICAgICAgIDx0aD5DYWxsaW5nPC90aD5cclxuICAgICAgICA8dGg+UHJvdmlzaW9uaW5nIFR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5TdGF0dXM8L3RoPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3NldHRpbmdzLWNlbGxcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3NldHRpbmdzLWljb25cIj5zZXR0aW5nczwvbWF0LWljb24+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDx0clxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB3b3Jrc3BhY2Ugb2Ygd29ya3NwYWNlc1wiXHJcbiAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXMtdGFibGVfX3Jvdy0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCh3b3Jrc3BhY2UuaWQpXCI+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQod29ya3NwYWNlLmlkKVwiIChjaGFuZ2UpPVwidG9nZ2xlUm93KHdvcmtzcGFjZS5pZClcIiAvPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS1jZWxsXCIgKGNsaWNrKT1cIm9uT3BlbldvcmtzcGFjZSh3b3Jrc3BhY2UpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZGV2aWNlLWluLXJvb20tcmVndWxhci5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWluZm9cIj5cclxuICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWxpbmtcIj57eyB3b3Jrc3BhY2UuZGlzcGxheU5hbWUgfX08L2E+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX25hbWUtbWV0YVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLXR5cGVcIj57eyB3b3Jrc3BhY2UudHlwZUxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19tZXRhLXNlcFwiPiZtaWRkb3Q7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9wZW9wbGUtcmVndWxhci5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWNhcGFjaXR5XCI+e3sgd29ya3NwYWNlLmNhcGFjaXR5ID8/ICdObyBjYXBhY2l0eScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtc2VwXCI+Jm1pZGRvdDs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtaWNvblwiPmxvY2F0aW9uX29uPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbWV0YS1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2xvY2F0aW9uLXJlZ3VsYXIuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlLmxvY2F0aW9uOyBlbHNlIG5vTG9jYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19sb2NhdGlvbi1saW5rXCI+e3sgd29ya3NwYWNlLmxvY2F0aW9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0xvY2F0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2xvY2F0aW9uLWVtcHR5XCI+Tm8gbG9jYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZXNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtzcGFjZS5kZXZpY2VzLmxlbmd0aDsgZWxzZSBub0RldmljZXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHdvcmtzcGFjZS5kZXZpY2VzXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtY2FyZFwiIFt0aXRsZV09XCJkZXZpY2UubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0RGV2aWNlSWNvbihkZXZpY2UubW9kZWwpXCJcclxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJkZXZpY2UubGFiZWxcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHdvcmtzcGFjZS5kZXZpY2VzXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkZXZpY2UgJiYgZGV2aWNlLm1vZGVsIGVsc2Ugbm9EZXZpY2VcIiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZS1jYXJkXCIgW3RpdGxlXT1cImRldmljZS5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXREZXZpY2VJY29uKGRldmljZS5tb2RlbClcIlxyXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cImRldmljZS5sYWJlbFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EZXZpY2VzPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtYWRkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZERldmljZSh3b3Jrc3BhY2UsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fZGV2aWNlLWFkZC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtYWRkLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9tdWx0aXBsZWQtZGV2aWNlcy1yZWd1bGFyLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgQWRkIGRldmljZVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+e3sgd29ya3NwYWNlLnNjaGVkdWxpbmcgfX08L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2NhbGxpbmctY2VsbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19jYWxsaW5nLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2NhbGxpbmctaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9sb2NhdGlvbi1yZWd1bGFyLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fY2FsbGluZy10ZXh0XCIgdGl0bGU9XCJDaXNjbyBXZWJleCBDYWxsaW5nIFByb2Zlc3Npb25hbCBXb3Jrc3BhY2VcIj5DaXNjbyBXZWJleCBDYWxsaW5nIFByb2Zlc3Npb25hbCBXb3Jrc3BhY2U8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwid29ya3NwYWNlLmlzSHlicmlkXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19wcm92aXNpb25pbmctaWNvbnNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25PcGVuV29ya3NwYWNlKHdvcmtzcGFjZSwgJ3dlYmV4Jyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy93ZWJleC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1dlYmV4IENhbGxpbmcnXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cIm9uT3BlbldvcmtzcGFjZSh3b3Jrc3BhY2UsICdkaScpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgID48aW1nXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvZGlfY2xvdWRfMjQuc3ZnXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidXZWJleCBDYWxsaW5nIERJJ1wiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgIC8+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtzcGFjZS5pc0h5YnJpZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndvcmtzcGFjZS5kZXZpY2UuY3VjbUlkICE9IG51bGxcIiBjbGFzcz1cImljb24td3JhcHBlclwiIChjbGljayk9XCJvbk9wZW5Xb3Jrc3BhY2Uod29ya3NwYWNlLCAnZGknKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RpX2Nsb3VkXzI0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInV2ViZXggQ2FsbGluZyBESSdcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAvPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3b3Jrc3BhY2UuZGV2aWNlLndlYmV4VVVJRCAhPSBudWxsXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25PcGVuV29ya3NwYWNlKHdvcmtzcGFjZSwgJ3dlYmV4Jyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy93ZWJleC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1dlYmV4IENhbGxpbmcnXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fc3RhdHVzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19zdGF0dXMtZG90XCJcclxuICAgICAgICAgICAgICBbY2xhc3MudGstd29ya3NwYWNlcy10YWJsZV9fc3RhdHVzLWRvdC0taHlicmlkXT1cIndvcmtzcGFjZS5pc0h5YnJpZFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXMtdGFibGVfX3N0YXR1cy1kb3QtLWFjdGl2ZV09XCIhd29ya3NwYWNlLmlzSHlicmlkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB7eyB3b3Jrc3BhY2UuaXNIeWJyaWQgPyAnSHlicmlkJyA6ICdBY3RpdmUnIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLWNlbGxcIj5cclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImlzUGVuZGluZyh3b3Jrc3BhY2UuaWQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLXNwaW5uZXJcIlxyXG4gICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjBcIlxyXG4gICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxyXG4gICAgICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNQZW5kaW5nKHdvcmtzcGFjZS5pZClcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3dNZW51XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI3Jvd01lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTW92ZVRvTVREaXNhYmxlZCh3b3Jrc3BhY2UpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibGljZW5zZVdpdGhIeWJyaWQuZW1pdCh3b3Jrc3BhY2UpXCI+XHJcbiAgICAgICAgICAgICAgTGljZW5zZSB3aXRoIEh5YnJpZFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb3ZlVG9NVERpc2FibGVkKHdvcmtzcGFjZSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtaWdyYXRlVG9NVC5lbWl0KHdvcmtzcGFjZSlcIj5cclxuICAgICAgICAgICAgICBNaWdyYXRlIFVzZXIgdG8gTVRcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRW5hYmxlV2ViZXhDYWxsaW5nRGlzYWJsZWQod29ya3NwYWNlKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVuYWJsZVdlYmV4Q2FsbGluZy5lbWl0KHdvcmtzcGFjZSlcIj5cclxuICAgICAgICAgICAgICBFbmFibGUgV2ViZXggQ2FsbGluZ1xyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNaWdyYXRlVG9VQ01EaXNhYmxlZCh3b3Jrc3BhY2UpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWlncmF0ZVRvVUNNLmVtaXQod29ya3NwYWNlKVwiPlxyXG4gICAgICAgICAgICAgIE1pZ3JhdGUgVXNlciB0byBVQ01cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIDx0ciAqbmdJZj1cIiF3b3Jrc3BhY2VzLmxlbmd0aFwiPlxyXG4gICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cIjhcIiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2VtcHR5XCI+Tm8gd29ya3NwYWNlcyB0byBkaXNwbGF5LjwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L3Rib2R5PlxyXG4gIDwvdGFibGU+XHJcbjwvZGl2PlxyXG5cclxuPG1hdC1wYWdpbmF0b3JcclxuICBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3BhZ2luYXRvclwiXHJcbiAgW2xlbmd0aF09XCJ0b3RhbFwiXHJcbiAgW3BhZ2VJbmRleF09XCJwYWdlSW5kZXhcIlxyXG4gIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXHJcbiAgW3BhZ2VTaXplT3B0aW9uc109XCJwYWdlU2l6ZU9wdGlvbnNcIlxyXG4gIChwYWdlKT1cIm9uUGFnZSgkZXZlbnQpXCI+XHJcbjwvbWF0LXBhZ2luYXRvcj5cclxuIl19
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvY29tcG9uZW50cy93b3Jrc3BhY2VzLXRhYmxlL3dvcmtzcGFjZXMtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL2NvbXBvbmVudHMvd29ya3NwYWNlcy10YWJsZS93b3Jrc3BhY2VzLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdkUsT0FBTyxFQUFFLGFBQWEsSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7OztBQVk3RSxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTVcsZUFBVSxHQUFnQixFQUFFLENBQUM7UUFDN0IsVUFBSyxHQUFHLENBQUMsQ0FBQztRQUNWLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZCxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2Qsb0JBQWUsR0FBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLHdCQUFtQixHQUFnQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTVDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDdkQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNsRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDNUMsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNuRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENB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QyxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzdELENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxTQUFvQjtRQUMvQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFO1lBQ25DLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBQzVELENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxTQUFvQjtRQUN6QyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDdEUsQ0FBQzs7c0hBdEZVLHdCQUF3QjswR0FBeEIsd0JBQXdCLDBkQ2ZyQyx1K1NBMk1BOzRGRDVMYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UscUJBQXFCOzhCQUt0QixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlLCBXb3Jrc3BhY2VPcGVuRXZlbnQgfSBmcm9tICcuLi8uLi90eXBlcy93b3Jrc3BhY2UnO1xyXG5pbXBvcnQgeyBnZXREZXZpY2VJY29uIGFzIHJlc29sdmVEZXZpY2VJY29uIH0gZnJvbSAnLi4vLi4vdXRpbHMvZGV2aWNlLWljb24nO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzUGFnZUNoYW5nZSB7XHJcbiAgcGFnZUluZGV4OiBudW1iZXI7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0ay13b3Jrc3BhY2VzLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRvdGFsID0gMDtcclxuICBASW5wdXQoKSBwYWdlSW5kZXggPSAwO1xyXG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XHJcbiAgQElucHV0KCkgcGFnZVNpemVPcHRpb25zOiBudW1iZXJbXSA9IFsxMCwgMjUsIDUwLCAxMDBdO1xyXG4gIEBJbnB1dCgpIHBlbmRpbmdXb3Jrc3BhY2VJZHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xyXG5cclxuICBAT3V0cHV0KCkgb3BlbldvcmtzcGFjZSA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlT3BlbkV2ZW50PigpO1xyXG4gIEBPdXRwdXQoKSBsaWNlbnNlV2l0aEh5YnJpZCA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPigpO1xyXG4gIEBPdXRwdXQoKSBtaWdyYXRlVG9NVCA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya3NwYWNlPigpO1xyXG4gIEBPdXRwdXQoKSBlbmFibGVXZWJleENhbGxpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtzcGFjZT4oKTtcclxuICBAT3V0cHV0KCkgbWlncmF0ZVRvVUNNID0gbmV3IEV2ZW50RW1pdHRlcjxXb3Jrc3BhY2U+KCk7XHJcbiAgQE91dHB1dCgpIGFkZERldmljZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBwYWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxXb3Jrc3BhY2VzUGFnZUNoYW5nZT4oKTtcclxuXHJcbiAgc2VsZWN0ZWRJZHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcclxuXHJcbiAgZ2V0IGFsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMud29ya3NwYWNlcy5sZW5ndGggPiAwICYmIHRoaXMuc2VsZWN0ZWRJZHMuc2l6ZSA9PT0gdGhpcy53b3Jrc3BhY2VzLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGdldCBzb21lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZElkcy5zaXplID4gMCAmJiAhdGhpcy5hbGxTZWxlY3RlZDtcclxuICB9XHJcblxyXG4gIHRvZ2dsZUFsbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSB0aGlzLmFsbFNlbGVjdGVkID8gbmV3IFNldCgpIDogbmV3IFNldCh0aGlzLndvcmtzcGFjZXMubWFwKHdvcmtzcGFjZSA9PiB3b3Jrc3BhY2UuaWQpKTtcclxuICB9XHJcblxyXG4gIHRvZ2dsZVJvdyh3b3Jrc3BhY2VJZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZXh0U2VsZWN0aW9uID0gbmV3IFNldCh0aGlzLnNlbGVjdGVkSWRzKTtcclxuICAgIGlmIChuZXh0U2VsZWN0aW9uLmhhcyh3b3Jrc3BhY2VJZCkpIHtcclxuICAgICAgbmV4dFNlbGVjdGlvbi5kZWxldGUod29ya3NwYWNlSWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV4dFNlbGVjdGlvbi5hZGQod29ya3NwYWNlSWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZElkcyA9IG5leHRTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBpc1NlbGVjdGVkKHdvcmtzcGFjZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSWRzLmhhcyh3b3Jrc3BhY2VJZCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW5Xb3Jrc3BhY2Uod29ya3NwYWNlOiBXb3Jrc3BhY2UsIGNvbm5lY3Rpb25UeXBlPzogV29ya3NwYWNlQ29ubmVjdGlvblR5cGUpOiB2b2lkIHtcclxuICAgIHRoaXMub3BlbldvcmtzcGFjZS5lbWl0KHsgaWQ6IHdvcmtzcGFjZS5pZCwgY29ubmVjdGlvblR5cGU6IGNvbm5lY3Rpb25UeXBlID8/IHRoaXMucmVzb2x2ZUNvbm5lY3Rpb25UeXBlKHdvcmtzcGFjZSkgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc29sdmVDb25uZWN0aW9uVHlwZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlIHtcclxuICAgIHJldHVybiAhd29ya3NwYWNlLmlzSHlicmlkICYmIHdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEICE9IG51bGwgPyAnd2ViZXgnIDogJ2RpJztcclxuICB9XHJcblxyXG4gIG9uQWRkRGV2aWNlKHdvcmtzcGFjZTogV29ya3NwYWNlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREZXZpY2UuZW1pdCh3b3Jrc3BhY2UuaWQpO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlKGV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJZHMgPSBuZXcgU2V0KCk7XHJcbiAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh7IHBhZ2VJbmRleDogZXZlbnQucGFnZUluZGV4LCBwYWdlU2l6ZTogZXZlbnQucGFnZVNpemUgfSk7XHJcbiAgfVxyXG5cclxuICBnZXREZXZpY2VJY29uKG1vZGVsPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiByZXNvbHZlRGV2aWNlSWNvbihtb2RlbCk7XHJcbiAgfVxyXG5cclxuICBpc1BlbmRpbmcod29ya3NwYWNlSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5oYXMod29ya3NwYWNlSWQpO1xyXG4gIH1cclxuXHJcbiAgaXNNb3ZlVG9NVERpc2FibGVkKHdvcmtzcGFjZTogV29ya3NwYWNlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAod29ya3NwYWNlLnN0YXR1cyAhPT0gJ2FjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5pc0h5YnJpZCAmJiAhIXdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEO1xyXG4gIH1cclxuXHJcbiAgaXNFbmFibGVXZWJleENhbGxpbmdEaXNhYmxlZCh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHdvcmtzcGFjZS5zdGF0dXMgIT09ICdpbmFjdGl2ZScpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5pc0h5YnJpZCAmJiAhd29ya3NwYWNlLmRldmljZS53ZWJleFVVSUQ7XHJcbiAgfVxyXG5cclxuICBpc01pZ3JhdGVUb1VDTURpc2FibGVkKHdvcmtzcGFjZTogV29ya3NwYWNlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIXdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdhY3RpdmUnO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fYnVsay1iYXJcIj5TZWxlY3Qgb25lIG9yIG1vcmUgd29ya3NwYWNlcyBmb3IgYnVsayBhY3Rpb25zPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fd3JhcHBlclwiPlxyXG4gIDx0YWJsZSBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3RhYmxlXCI+XHJcbiAgICA8dGhlYWQ+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICA8dGggY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19jaGVja2JveC1jZWxsXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NoZWNrZWRdPVwiYWxsU2VsZWN0ZWRcIiBbaW5kZXRlcm1pbmF0ZV09XCJzb21lU2VsZWN0ZWRcIiAoY2hhbmdlKT1cInRvZ2dsZUFsbCgpXCIgLz5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIDx0aD5OYW1lPC90aD5cclxuICAgICAgICA8dGg+RGV2aWNlczwvdGg+XHJcbiAgICAgICAgPHRoPlNjaGVkdWxpbmc8L3RoPlxyXG4gICAgICAgIDx0aD5DYWxsaW5nPC90aD5cclxuICAgICAgICA8dGg+UHJvdmlzaW9uaW5nIFR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5TdGF0dXM8L3RoPlxyXG4gICAgICAgIDx0aCBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3NldHRpbmdzLWNlbGxcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX3NldHRpbmdzLWljb25cIj5zZXR0aW5nczwvbWF0LWljb24+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDx0clxyXG4gICAgICAgICpuZ0Zvcj1cImxldCB3b3Jrc3BhY2Ugb2Ygd29ya3NwYWNlc1wiXHJcbiAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXMtdGFibGVfX3Jvdy0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCh3b3Jrc3BhY2UuaWQpXCI+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fY2hlY2tib3gtY2VsbFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIFtjaGVja2VkXT1cImlzU2VsZWN0ZWQod29ya3NwYWNlLmlkKVwiIChjaGFuZ2UpPVwidG9nZ2xlUm93KHdvcmtzcGFjZS5pZClcIiAvPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS1jZWxsXCIgKGNsaWNrKT1cIm9uT3BlbldvcmtzcGFjZSh3b3Jrc3BhY2UpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbmFtZS1pY29uXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaWNvbnMvZGV2aWNlLWluLXJvb20tcmVndWxhci5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWluZm9cIj5cclxuICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWxpbmtcIj57eyB3b3Jrc3BhY2UuZGlzcGxheU5hbWUgfX08L2E+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX25hbWUtbWV0YVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLXR5cGVcIj57eyB3b3Jrc3BhY2UudHlwZUxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19tZXRhLXNlcFwiPiZtaWRkb3Q7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9wZW9wbGUtcmVndWxhci5zdmdcIiBhbHQ9XCJcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19uYW1lLWNhcGFjaXR5XCI+e3sgd29ya3NwYWNlLmNhcGFjaXR5ID8/ICdObyBjYXBhY2l0eScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtc2VwXCI+Jm1pZGRvdDs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxtYXQtaWNvbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX21ldGEtaWNvblwiPmxvY2F0aW9uX29uPC9tYXQtaWNvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fbWV0YS1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2xvY2F0aW9uLXJlZ3VsYXIuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgIDxhXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwid29ya3NwYWNlLmxvY2F0aW9uOyBlbHNlIG5vTG9jYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19sb2NhdGlvbi1saW5rXCI+e3sgd29ya3NwYWNlLmxvY2F0aW9uIH19PC9hPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0xvY2F0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2xvY2F0aW9uLWVtcHR5XCI+Tm8gbG9jYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZXNcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIndvcmtzcGFjZS5kZXZpY2VzLmxlbmd0aDsgZWxzZSBub0RldmljZXNcIj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHdvcmtzcGFjZS5kZXZpY2VzXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtY2FyZFwiIFt0aXRsZV09XCJkZXZpY2UubGFiZWxcIj5cclxuICAgICAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZ2V0RGV2aWNlSWNvbihkZXZpY2UubW9kZWwpXCJcclxuICAgICAgICAgICAgICAgICAgW2FsdF09XCJkZXZpY2UubGFiZWxcIiAvPlxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZGV2aWNlIG9mIHdvcmtzcGFjZS5kZXZpY2VzXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkZXZpY2UgJiYgZGV2aWNlLm1vZGVsIGVsc2Ugbm9EZXZpY2VcIiBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZS1jYXJkXCIgW3RpdGxlXT1cImRldmljZS5sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2RldmljZS1pY29uXCJcclxuICAgICAgICAgICAgICAgICAgW3NyY109XCJnZXREZXZpY2VJY29uKGRldmljZS5tb2RlbClcIlxyXG4gICAgICAgICAgICAgICAgICBbYWx0XT1cImRldmljZS5sYWJlbFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj4gLS0+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EZXZpY2VzPlxyXG4gICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtYWRkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZERldmljZSh3b3Jrc3BhY2UsICRldmVudClcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fZGV2aWNlLWFkZC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19kZXZpY2UtYWRkLWljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy9tdWx0aXBsZWQtZGV2aWNlcy1yZWd1bGFyLnN2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgLz5cclxuICAgICAgICAgICAgICAgICAgQWRkIGRldmljZVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+e3sgd29ya3NwYWNlLnNjaGVkdWxpbmcgfX08L3RkPlxyXG4gICAgICAgIDx0ZCBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2NhbGxpbmctY2VsbFwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19jYWxsaW5nLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXMtdGFibGVfX2NhbGxpbmctaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9sb2NhdGlvbi1yZWd1bGFyLnN2Z1wiIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fY2FsbGluZy10ZXh0XCIgdGl0bGU9XCJDaXNjbyBXZWJleCBDYWxsaW5nIFByb2Zlc3Npb25hbCBXb3Jrc3BhY2VcIj5DaXNjbyBXZWJleCBDYWxsaW5nIFByb2Zlc3Npb25hbCBXb3Jrc3BhY2U8L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQ+XHJcbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwid29ya3NwYWNlLmlzSHlicmlkXCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19wcm92aXNpb25pbmctaWNvbnNcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25PcGVuV29ya3NwYWNlKHdvcmtzcGFjZSwgJ3dlYmV4Jyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy93ZWJleC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1dlYmV4IENhbGxpbmcnXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvbi13cmFwcGVyXCIgKGNsaWNrKT1cIm9uT3BlbldvcmtzcGFjZSh3b3Jrc3BhY2UsICdkaScpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxyXG4gICAgICAgICAgICAgID48aW1nXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJhc3NldHMvaWNvbnMvZGlfY2xvdWRfMjQuc3ZnXCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidXZWJleCBDYWxsaW5nIERJJ1wiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXHJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjIwXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiXHJcbiAgICAgICAgICAgIC8+PC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXdvcmtzcGFjZS5pc0h5YnJpZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIndvcmtzcGFjZS5kZXZpY2UuY3VjbUlkICE9IG51bGxcIiBjbGFzcz1cImljb24td3JhcHBlclwiIChjbGljayk9XCJvbk9wZW5Xb3Jrc3BhY2Uod29ya3NwYWNlLCAnZGknKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICA+PGltZ1xyXG4gICAgICAgICAgICAgICAgc3JjPVwiYXNzZXRzL2ljb25zL2RpX2Nsb3VkXzI0LnN2Z1wiXHJcbiAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInV2ViZXggQ2FsbGluZyBESSdcIlxyXG4gICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxyXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyMFwiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAvPjwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ3b3Jrc3BhY2UuZGV2aWNlLndlYmV4VVVJRCAhPSBudWxsXCIgY2xhc3M9XCJpY29uLXdyYXBwZXJcIiAoY2xpY2spPVwib25PcGVuV29ya3NwYWNlKHdvcmtzcGFjZSwgJ3dlYmV4Jyk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgPjxpbWdcclxuICAgICAgICAgICAgICAgIHNyYz1cImFzc2V0cy9pY29ucy93ZWJleC5zdmdcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1dlYmV4IENhbGxpbmcnXCJcclxuICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcclxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjBcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCJcclxuICAgICAgICAgICAgLz48L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGstd29ya3NwYWNlcy10YWJsZV9fc3RhdHVzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19zdGF0dXMtZG90XCJcclxuICAgICAgICAgICAgICBbY2xhc3MudGstd29ya3NwYWNlcy10YWJsZV9fc3RhdHVzLWRvdC0taHlicmlkXT1cIndvcmtzcGFjZS5pc0h5YnJpZFwiXHJcbiAgICAgICAgICAgICAgW2NsYXNzLnRrLXdvcmtzcGFjZXMtdGFibGVfX3N0YXR1cy1kb3QtLWFjdGl2ZV09XCIhd29ya3NwYWNlLmlzSHlicmlkXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICB7eyB3b3Jrc3BhY2UuaXNIeWJyaWQgPyAnSHlicmlkJyA6ICdBY3RpdmUnIH19XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICA8dGQgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLWNlbGxcIj5cclxuICAgICAgICAgIDxtYXQtcHJvZ3Jlc3Mtc3Bpbm5lclxyXG4gICAgICAgICAgICAqbmdJZj1cImlzUGVuZGluZyh3b3Jrc3BhY2UuaWQpXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLXNwaW5uZXJcIlxyXG4gICAgICAgICAgICBbZGlhbWV0ZXJdPVwiMjBcIlxyXG4gICAgICAgICAgICBzdHJva2VXaWR0aD1cIjJcIlxyXG4gICAgICAgICAgICBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPlxyXG4gICAgICAgICAgPC9tYXQtcHJvZ3Jlc3Mtc3Bpbm5lcj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNQZW5kaW5nKHdvcmtzcGFjZS5pZClcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19hY3Rpb25zLWJ1dHRvblwiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJyb3dNZW51XCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8bWF0LW1lbnUgI3Jvd01lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTW92ZVRvTVREaXNhYmxlZCh3b3Jrc3BhY2UpXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibGljZW5zZVdpdGhIeWJyaWQuZW1pdCh3b3Jrc3BhY2UpXCI+XHJcbiAgICAgICAgICAgICAgTGljZW5zZSB3aXRoIENsb3VkIEludGVsbGlnZW5jZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIG1hdC1tZW51LWl0ZW1cclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNb3ZlVG9NVERpc2FibGVkKHdvcmtzcGFjZSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJtaWdyYXRlVG9NVC5lbWl0KHdvcmtzcGFjZSlcIj5cclxuICAgICAgICAgICAgICBNaWdyYXRlIFdvcmtzcGFjZSBUbyBXZWJleCBDYWxsaW5nXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LW1lbnUtaXRlbVxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0VuYWJsZVdlYmV4Q2FsbGluZ0Rpc2FibGVkKHdvcmtzcGFjZSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJlbmFibGVXZWJleENhbGxpbmcuZW1pdCh3b3Jrc3BhY2UpXCI+XHJcbiAgICAgICAgICAgICAgRW5hYmxlIFdlYmV4IENhbGxpbmdcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtbWVudS1pdGVtXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTWlncmF0ZVRvVUNNRGlzYWJsZWQod29ya3NwYWNlKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1pZ3JhdGVUb1VDTS5lbWl0KHdvcmtzcGFjZSlcIj5cclxuICAgICAgICAgICAgICBNaWdyYXRlIFVzZXIgdG8gVUNNXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgICA8dHIgKm5nSWY9XCIhd29ya3NwYWNlcy5sZW5ndGhcIj5cclxuICAgICAgICA8dGQgW2F0dHIuY29sc3Bhbl09XCI4XCIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19lbXB0eVwiPk5vIHdvcmtzcGFjZXMgdG8gZGlzcGxheS48L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG48L2Rpdj5cclxuXHJcbjxtYXQtcGFnaW5hdG9yXHJcbiAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzLXRhYmxlX19wYWdpbmF0b3JcIlxyXG4gIFtsZW5ndGhdPVwidG90YWxcIlxyXG4gIFtwYWdlSW5kZXhdPVwicGFnZUluZGV4XCJcclxuICBbcGFnZVNpemVdPVwicGFnZVNpemVcIlxyXG4gIFtwYWdlU2l6ZU9wdGlvbnNdPVwicGFnZVNpemVPcHRpb25zXCJcclxuICAocGFnZSk9XCJvblBhZ2UoJGV2ZW50KVwiPlxyXG48L21hdC1wYWdpbmF0b3I+XHJcbiJdfQ==
@@ -1,29 +1,57 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
2
+ import { forkJoin, of } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import { API } from '../app.constants';
3
5
  import * as i0 from "@angular/core";
4
- // No dedicated detail API exists yet, so the Overview/Calling tabs are
5
- // populated with mock data derived from the already-loaded workspace record.
6
+ import * as i1 from "./api-webex.service";
6
7
  export class WorkspaceDetailService {
7
- getByWorkspace(workspace) {
8
+ constructor(apiWebexService) {
9
+ this.apiWebexService = apiWebexService;
10
+ }
11
+ getByWorkspace(workspace, connectionType, customerId) {
12
+ if (connectionType === 'webex' && workspace.device.webexUUID) {
13
+ return this.getWebexDetails(customerId, workspace.device.webexUUID);
14
+ }
15
+ return this.getCucmDetails(workspace);
16
+ }
17
+ getWebexDetails(customerId, workspaceId) {
18
+ const params = { customerId: String(customerId), workspaceId };
19
+ return forkJoin([
20
+ this.apiWebexService.fetch(this.buildUrl(API.DETAILS.WEBEX.WORKSPACE, params)),
21
+ this.apiWebexService.fetch(this.buildUrl(API.DETAILS.WEBEX.NUMBERS, params)),
22
+ this.apiWebexService.fetch(this.buildUrl(API.DETAILS.WEBEX.CALLERID, params)),
23
+ ]).pipe(map(([workspaceRes, numbersRes, callerIdRes]) => this.toWebexDetails(workspaceRes, numbersRes, callerIdRes)));
24
+ }
25
+ toWebexDetails(workspaceRes, numbersRes, callerIdRes) {
26
+ const primaryNumber = numbersRes.phoneNumbers?.find(number => number.primary) ?? numbersRes.phoneNumbers?.[0];
27
+ return {
28
+ issues: this.buildIssues(workspaceRes.type, workspaceRes.capacity),
29
+ location: {
30
+ country: numbersRes.location?.name || workspaceRes.locationName || 'Not set',
31
+ address: numbersRes.location?.address || 'Address not available',
32
+ },
33
+ calling: {
34
+ license: workspaceRes.licenseName || 'Not set',
35
+ sipAddress: workspaceRes.sipAddress || 'Not assigned',
36
+ directoryNumber: primaryNumber?.external || primaryNumber?.extension || 'Not assigned',
37
+ routePartition: '',
38
+ callingSearchSpace: '',
39
+ securityProfile: '',
40
+ externalCallerIdName: callerIdRes.locationExternalCallerIdName || callerIdRes.customExternalCallerIdName || undefined,
41
+ externalCallerIdNumber: callerIdRes.locationNumber || callerIdRes.customNumber || callerIdRes.directNumber || undefined,
42
+ },
43
+ schedulingConfigured: false,
44
+ plannedMaintenanceEnabled: false,
45
+ notes: null,
46
+ capacity: workspaceRes.capacity,
47
+ };
48
+ }
49
+ getCucmDetails(workspace) {
8
50
  const device = workspace.device;
9
51
  const directoryNumber = device.associatedDNs?.[0]?.directoryNumber ?? '';
10
52
  const sipAddress = `${(device.name || workspace.displayName || 'workspace').toLowerCase()}@tukidev.rooms.webex.com`;
11
- const issues = [
12
- !workspace.typeLabel || workspace.typeLabel === 'No type' ? {
13
- id: 'type',
14
- message: 'Workspace type not set',
15
- timestamp: 'Just now',
16
- actionLabel: 'Assign type',
17
- } : null,
18
- workspace.capacity == null ? {
19
- id: 'capacity',
20
- message: 'Workspace capacity not set',
21
- timestamp: 'Just now',
22
- actionLabel: 'Set capacity',
23
- } : null,
24
- ].filter((issue) => issue !== null);
25
53
  const details = {
26
- issues,
54
+ issues: this.buildIssues(workspace.typeLabel, workspace.capacity),
27
55
  location: {
28
56
  country: workspace.location || 'Not set',
29
57
  address: device.location || 'Address not available',
@@ -42,13 +70,43 @@ export class WorkspaceDetailService {
42
70
  };
43
71
  return of(details);
44
72
  }
73
+ buildUrl(template, params) {
74
+ return Object.keys(params).reduce((url, key) => url.replace(`:${key}`, params[key]), template);
75
+ }
76
+ buildIssues(typeLabel, capacity) {
77
+ const timestamp = this.formatTimestamp(new Date());
78
+ return [
79
+ !typeLabel || typeLabel === 'No type' || typeLabel.toLowerCase() === 'notset' ? {
80
+ id: 'type',
81
+ message: 'Workspace type not set',
82
+ timestamp,
83
+ actionLabel: 'Assign type',
84
+ } : null,
85
+ capacity == null ? {
86
+ id: 'capacity',
87
+ message: 'Workspace capacity not set',
88
+ timestamp,
89
+ actionLabel: 'Set capacity',
90
+ } : null,
91
+ ].filter((issue) => issue !== null);
92
+ }
93
+ formatTimestamp(date) {
94
+ return date.toLocaleString('en-US', {
95
+ year: '2-digit',
96
+ month: 'numeric',
97
+ day: 'numeric',
98
+ hour: 'numeric',
99
+ minute: '2-digit',
100
+ hour12: true,
101
+ });
102
+ }
45
103
  }
46
- WorkspaceDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
104
+ WorkspaceDetailService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailService, deps: [{ token: i1.ApiWebexService }], target: i0.ɵɵFactoryTarget.Injectable });
47
105
  WorkspaceDetailService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailService, providedIn: 'root' });
48
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspaceDetailService, decorators: [{
49
107
  type: Injectable,
50
108
  args: [{
51
109
  providedIn: 'root'
52
110
  }]
53
- }] });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWRldGFpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZS1kZXRhaWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR3RDLHVFQUF1RTtBQUN2RSw2RUFBNkU7QUFJN0UsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxjQUFjLENBQUMsU0FBb0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUNoQyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztRQUN6RSxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSwwQkFBMEIsQ0FBQztRQUVwSCxNQUFNLE1BQU0sR0FBRztZQUNiLENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFELEVBQUUsRUFBRSxNQUFNO2dCQUNWLE9BQU8sRUFBRSx3QkFBd0I7Z0JBQ2pDLFNBQVMsRUFBRSxVQUFVO2dCQUNyQixXQUFXLEVBQUUsYUFBYTthQUMzQixDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQ1IsU0FBUyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMzQixFQUFFLEVBQUUsVUFBVTtnQkFDZCxPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxTQUFTLEVBQUUsVUFBVTtnQkFDckIsV0FBVyxFQUFFLGNBQWM7YUFDNUIsQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNULENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFzQyxFQUFFLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRXhFLE1BQU0sT0FBTyxHQUFxQjtZQUNoQyxNQUFNO1lBQ04sUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxTQUFTLENBQUMsUUFBUSxJQUFJLFNBQVM7Z0JBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLHVCQUF1QjthQUNwRDtZQUNELE9BQU8sRUFBRTtnQkFDUCxPQUFPLEVBQUUsU0FBUyxDQUFDLGNBQWMsSUFBSSw0Q0FBNEM7Z0JBQ2pGLFVBQVU7Z0JBQ1YsZUFBZSxFQUFFLGVBQWUsSUFBSSxjQUFjO2dCQUNsRCxjQUFjLEVBQUUsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixJQUFJLFNBQVM7Z0JBQzFFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsSUFBSSxTQUFTO2dCQUM5RCxlQUFlLEVBQUUsTUFBTSxDQUFDLGVBQWUsSUFBSSxTQUFTO2FBQ3JEO1lBQ0Qsb0JBQW9CLEVBQUUsS0FBSztZQUMzQix5QkFBeUIsRUFBRSxLQUFLO1lBQ2hDLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQztRQUVGLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLENBQUM7O29IQXpDVSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZyQixNQUFNOzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZSwgV29ya3NwYWNlRGV0YWlscyB9IGZyb20gJy4uL3R5cGVzL3dvcmtzcGFjZSc7XHJcblxyXG4vLyBObyBkZWRpY2F0ZWQgZGV0YWlsIEFQSSBleGlzdHMgeWV0LCBzbyB0aGUgT3ZlcnZpZXcvQ2FsbGluZyB0YWJzIGFyZVxyXG4vLyBwb3B1bGF0ZWQgd2l0aCBtb2NrIGRhdGEgZGVyaXZlZCBmcm9tIHRoZSBhbHJlYWR5LWxvYWRlZCB3b3Jrc3BhY2UgcmVjb3JkLlxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VEZXRhaWxTZXJ2aWNlIHtcclxuICBnZXRCeVdvcmtzcGFjZSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IE9ic2VydmFibGU8V29ya3NwYWNlRGV0YWlscz4ge1xyXG4gICAgY29uc3QgZGV2aWNlID0gd29ya3NwYWNlLmRldmljZTtcclxuICAgIGNvbnN0IGRpcmVjdG9yeU51bWJlciA9IGRldmljZS5hc3NvY2lhdGVkRE5zPy5bMF0/LmRpcmVjdG9yeU51bWJlciA/PyAnJztcclxuICAgIGNvbnN0IHNpcEFkZHJlc3MgPSBgJHsoZGV2aWNlLm5hbWUgfHwgd29ya3NwYWNlLmRpc3BsYXlOYW1lIHx8ICd3b3Jrc3BhY2UnKS50b0xvd2VyQ2FzZSgpfUB0dWtpZGV2LnJvb21zLndlYmV4LmNvbWA7XHJcblxyXG4gICAgY29uc3QgaXNzdWVzID0gW1xyXG4gICAgICAhd29ya3NwYWNlLnR5cGVMYWJlbCB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSAnTm8gdHlwZScgPyB7XHJcbiAgICAgICAgaWQ6ICd0eXBlJyxcclxuICAgICAgICBtZXNzYWdlOiAnV29ya3NwYWNlIHR5cGUgbm90IHNldCcsXHJcbiAgICAgICAgdGltZXN0YW1wOiAnSnVzdCBub3cnLFxyXG4gICAgICAgIGFjdGlvbkxhYmVsOiAnQXNzaWduIHR5cGUnLFxyXG4gICAgICB9IDogbnVsbCxcclxuICAgICAgd29ya3NwYWNlLmNhcGFjaXR5ID09IG51bGwgPyB7XHJcbiAgICAgICAgaWQ6ICdjYXBhY2l0eScsXHJcbiAgICAgICAgbWVzc2FnZTogJ1dvcmtzcGFjZSBjYXBhY2l0eSBub3Qgc2V0JyxcclxuICAgICAgICB0aW1lc3RhbXA6ICdKdXN0IG5vdycsXHJcbiAgICAgICAgYWN0aW9uTGFiZWw6ICdTZXQgY2FwYWNpdHknLFxyXG4gICAgICB9IDogbnVsbCxcclxuICAgIF0uZmlsdGVyKChpc3N1ZSk6IGlzc3VlIGlzIE5vbk51bGxhYmxlPHR5cGVvZiBpc3N1ZT4gPT4gaXNzdWUgIT09IG51bGwpO1xyXG5cclxuICAgIGNvbnN0IGRldGFpbHM6IFdvcmtzcGFjZURldGFpbHMgPSB7XHJcbiAgICAgIGlzc3VlcyxcclxuICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICBjb3VudHJ5OiB3b3Jrc3BhY2UubG9jYXRpb24gfHwgJ05vdCBzZXQnLFxyXG4gICAgICAgIGFkZHJlc3M6IGRldmljZS5sb2NhdGlvbiB8fCAnQWRkcmVzcyBub3QgYXZhaWxhYmxlJyxcclxuICAgICAgfSxcclxuICAgICAgY2FsbGluZzoge1xyXG4gICAgICAgIGxpY2Vuc2U6IHdvcmtzcGFjZS5jYWxsaW5nTGljZW5zZSB8fCAnQ2lzY28gV2ViZXggQ2FsbGluZyBQcm9mZXNzaW9uYWwgV29ya3NwYWNlJyxcclxuICAgICAgICBzaXBBZGRyZXNzLFxyXG4gICAgICAgIGRpcmVjdG9yeU51bWJlcjogZGlyZWN0b3J5TnVtYmVyIHx8ICdOb3QgYXNzaWduZWQnLFxyXG4gICAgICAgIHJvdXRlUGFydGl0aW9uOiBkZXZpY2UuYXNzb2NpYXRlZEROcz8uWzBdPy5yb3V0ZVBhcnRpdGlvbk5hbWUgfHwgJ05vdCBzZXQnLFxyXG4gICAgICAgIGNhbGxpbmdTZWFyY2hTcGFjZTogZGV2aWNlLmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJ05vdCBzZXQnLFxyXG4gICAgICAgIHNlY3VyaXR5UHJvZmlsZTogZGV2aWNlLnNlY3VyaXR5UHJvZmlsZSB8fCAnTm90IHNldCcsXHJcbiAgICAgIH0sXHJcbiAgICAgIHNjaGVkdWxpbmdDb25maWd1cmVkOiBmYWxzZSxcclxuICAgICAgcGxhbm5lZE1haW50ZW5hbmNlRW5hYmxlZDogZmFsc2UsXHJcbiAgICAgIG5vdGVzOiBudWxsLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gb2YoZGV0YWlscyk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
111
+ }], ctorParameters: function () { return [{ type: i1.ApiWebexService }]; } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlLWRldGFpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZS1kZXRhaWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQWV2QyxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUFJLENBQUM7SUFFekQsY0FBYyxDQUNaLFNBQW9CLEVBQ3BCLGNBQXVDLEVBQ3ZDLFVBQTJCO1FBRTNCLElBQUksY0FBYyxLQUFLLE9BQU8sSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUM1RCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDckU7UUFDRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxVQUEyQixFQUFFLFdBQW1CO1FBQ3RFLE1BQU0sTUFBTSxHQUFHLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUUvRCxPQUFPLFFBQVEsQ0FBQztZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8s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QyxDQUFDLElBQUk7WUFDUixRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakIsRUFBRSxFQUFFLFVBQVU7Z0JBQ2QsT0FBTyxFQUFFLDRCQUE0QjtnQkFDckMsU0FBUztnQkFDVCxXQUFXLEVBQUUsY0FBYzthQUM1QixDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQXNDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUU7WUFDbEMsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsU0FBUztZQUNoQixHQUFHLEVBQUUsU0FBUztZQUNkLElBQUksRUFBRSxTQUFTO1lBQ2YsTUFBTSxFQUFFLFNBQVM7WUFDakIsTUFBTSxFQUFFLElBQUk7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDOztvSEF2SFUsc0JBQXNCO3dIQUF0QixzQkFBc0IsY0FGckIsTUFBTTs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcbmltcG9ydCB7IEFwaVdlYmV4U2VydmljZSB9IGZyb20gJy4vYXBpLXdlYmV4LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgV2ViZXhDYWxsZXJJZFJlc3BvbnNlLFxuICBXZWJleE51bWJlcnNSZXNwb25zZSxcbiAgV2ViZXhXb3Jrc3BhY2VEZXRhaWxzUmVzcG9uc2UsXG4gIFdvcmtzcGFjZSxcbiAgV29ya3NwYWNlQ29ubmVjdGlvblR5cGUsXG4gIFdvcmtzcGFjZURldGFpbHMsXG4gIFdvcmtzcGFjZUlzc3VlLFxufSBmcm9tICcuLi90eXBlcy93b3Jrc3BhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VEZXRhaWxTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZSkgeyB9XG5cbiAgZ2V0QnlXb3Jrc3BhY2UoXG4gICAgd29ya3NwYWNlOiBXb3Jrc3BhY2UsXG4gICAgY29ubmVjdGlvblR5cGU6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlLFxuICAgIGN1c3RvbWVySWQ6IHN0cmluZyB8IG51bWJlcixcbiAgKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VEZXRhaWxzPiB7XG4gICAgaWYgKGNvbm5lY3Rpb25UeXBlID09PSAnd2ViZXgnICYmIHdvcmtzcGFjZS5kZXZpY2Uud2ViZXhVVUlEKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRXZWJleERldGFpbHMoY3VzdG9tZXJJZCwgd29ya3NwYWNlLmRldmljZS53ZWJleFVVSUQpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRDdWNtRGV0YWlscyh3b3Jrc3BhY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRXZWJleERldGFpbHMoY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyLCB3b3Jrc3BhY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VEZXRhaWxzPiB7XG4gICAgY29uc3QgcGFyYW1zID0geyBjdXN0b21lcklkOiBTdHJpbmcoY3VzdG9tZXJJZCksIHdvcmtzcGFjZUlkIH07XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgdGhpcy5hcGlXZWJleFNlcnZpY2UuZmV0Y2godGhpcy5idWlsZFVybChBUEkuREVUQUlMUy5XRUJFWC5XT1JLU1BBQ0UsIHBhcmFtcykpLFxuICAgICAgdGhpcy5hcGlXZWJleFNlcnZpY2UuZmV0Y2godGhpcy5idWlsZFVybChBUEkuREVUQUlMUy5XRUJFWC5OVU1CRVJTLCBwYXJhbXMpKSxcbiAgICAgIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLmZldGNoKHRoaXMuYnVpbGRVcmwoQVBJLkRFVEFJTFMuV0VCRVguQ0FMTEVSSUQsIHBhcmFtcykpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt3b3Jrc3BhY2VSZXMsIG51bWJlcnNSZXMsIGNhbGxlcklkUmVzXTogW1xuICAgICAgICBXZWJleFdvcmtzcGFjZURldGFpbHNSZXNwb25zZSxcbiAgICAgICAgV2ViZXhOdW1iZXJzUmVzcG9uc2UsXG4gICAgICAgIFdlYmV4Q2FsbGVySWRSZXNwb25zZSxcbiAgICAgIF0pID0+IHRoaXMudG9XZWJleERldGFpbHMod29ya3NwYWNlUmVzLCBudW1iZXJzUmVzLCBjYWxsZXJJZFJlcykpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHRvV2ViZXhEZXRhaWxzKFxuICAgIHdvcmtzcGFjZVJlczogV2ViZXhXb3Jrc3BhY2VEZXRhaWxzUmVzcG9uc2UsXG4gICAgbnVtYmVyc1JlczogV2ViZXhOdW1iZXJzUmVzcG9uc2UsXG4gICAgY2FsbGVySWRSZXM6IFdlYmV4Q2FsbGVySWRSZXNwb25zZSxcbiAgKTogV29ya3NwYWNlRGV0YWlscyB7XG4gICAgY29uc3QgcHJpbWFyeU51bWJlciA9IG51bWJlcnNSZXMucGhvbmVOdW1iZXJzPy5maW5kKG51bWJlciA9PiBudW1iZXIucHJpbWFyeSkgPz8gbnVtYmVyc1Jlcy5waG9uZU51bWJlcnM/LlswXTtcblxuICAgIHJldHVybiB7XG4gICAgICBpc3N1ZXM6IHRoaXMuYnVpbGRJc3N1ZXMod29ya3NwYWNlUmVzLnR5cGUsIHdvcmtzcGFjZVJlcy5jYXBhY2l0eSksXG4gICAgICBsb2NhdGlvbjoge1xuICAgICAgICBjb3VudHJ5OiBudW1iZXJzUmVzLmxvY2F0aW9uPy5uYW1lIHx8IHdvcmtzcGFjZVJlcy5sb2NhdGlvbk5hbWUgfHwgJ05vdCBzZXQnLFxuICAgICAgICBhZGRyZXNzOiBudW1iZXJzUmVzLmxvY2F0aW9uPy5hZGRyZXNzIHx8ICdBZGRyZXNzIG5vdCBhdmFpbGFibGUnLFxuICAgICAgfSxcbiAgICAgIGNhbGxpbmc6IHtcbiAgICAgICAgbGljZW5zZTogd29ya3NwYWNlUmVzLmxpY2Vuc2VOYW1lIHx8ICdOb3Qgc2V0JyxcbiAgICAgICAgc2lwQWRkcmVzczogd29ya3NwYWNlUmVzLnNpcEFkZHJlc3MgfHwgJ05vdCBhc3NpZ25lZCcsXG4gICAgICAgIGRpcmVjdG9yeU51bWJlcjogcHJpbWFyeU51bWJlcj8uZXh0ZXJuYWwgfHwgcHJpbWFyeU51bWJlcj8uZXh0ZW5zaW9uIHx8ICdOb3QgYXNzaWduZWQnLFxuICAgICAgICByb3V0ZVBhcnRpdGlvbjogJycsXG4gICAgICAgIGNhbGxpbmdTZWFyY2hTcGFjZTogJycsXG4gICAgICAgIHNlY3VyaXR5UHJvZmlsZTogJycsXG4gICAgICAgIGV4dGVybmFsQ2FsbGVySWROYW1lOiBjYWxsZXJJZFJlcy5sb2NhdGlvbkV4dGVybmFsQ2FsbGVySWROYW1lIHx8IGNhbGxlcklkUmVzLmN1c3RvbUV4dGVybmFsQ2FsbGVySWROYW1lIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZXh0ZXJuYWxDYWxsZXJJZE51bWJlcjogY2FsbGVySWRSZXMubG9jYXRpb25OdW1iZXIgfHwgY2FsbGVySWRSZXMuY3VzdG9tTnVtYmVyIHx8IGNhbGxlcklkUmVzLmRpcmVjdE51bWJlciB8fCB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgc2NoZWR1bGluZ0NvbmZpZ3VyZWQ6IGZhbHNlLFxuICAgICAgcGxhbm5lZE1haW50ZW5hbmNlRW5hYmxlZDogZmFsc2UsXG4gICAgICBub3RlczogbnVsbCxcbiAgICAgIGNhcGFjaXR5OiB3b3Jrc3BhY2VSZXMuY2FwYWNpdHksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q3VjbURldGFpbHMod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiBPYnNlcnZhYmxlPFdvcmtzcGFjZURldGFpbHM+IHtcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xuICAgIGNvbnN0IGRpcmVjdG9yeU51bWJlciA9IGRldmljZS5hc3NvY2lhdGVkRE5zPy5bMF0/LmRpcmVjdG9yeU51bWJlciA/PyAnJztcbiAgICBjb25zdCBzaXBBZGRyZXNzID0gYCR7KGRldmljZS5uYW1lIHx8IHdvcmtzcGFjZS5kaXNwbGF5TmFtZSB8fCAnd29ya3NwYWNlJykudG9Mb3dlckNhc2UoKX1AdHVraWRldi5yb29tcy53ZWJleC5jb21gO1xuXG4gICAgY29uc3QgZGV0YWlsczogV29ya3NwYWNlRGV0YWlscyA9IHtcbiAgICAgIGlzc3VlczogdGhpcy5idWlsZElzc3Vlcyh3b3Jrc3BhY2UudHlwZUxhYmVsLCB3b3Jrc3BhY2UuY2FwYWNpdHkpLFxuICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgY291bnRyeTogd29ya3NwYWNlLmxvY2F0aW9uIHx8ICdOb3Qgc2V0JyxcbiAgICAgICAgYWRkcmVzczogZGV2aWNlLmxvY2F0aW9uIHx8ICdBZGRyZXNzIG5vdCBhdmFpbGFibGUnLFxuICAgICAgfSxcbiAgICAgIGNhbGxpbmc6IHtcbiAgICAgICAgbGljZW5zZTogd29ya3NwYWNlLmNhbGxpbmdMaWNlbnNlIHx8ICdDaXNjbyBXZWJleCBDYWxsaW5nIFByb2Zlc3Npb25hbCBXb3Jrc3BhY2UnLFxuICAgICAgICBzaXBBZGRyZXNzLFxuICAgICAgICBkaXJlY3RvcnlOdW1iZXI6IGRpcmVjdG9yeU51bWJlciB8fCAnTm90IGFzc2lnbmVkJyxcbiAgICAgICAgcm91dGVQYXJ0aXRpb246IGRldmljZS5hc3NvY2lhdGVkRE5zPy5bMF0/LnJvdXRlUGFydGl0aW9uTmFtZSB8fCAnTm90IHNldCcsXG4gICAgICAgIGNhbGxpbmdTZWFyY2hTcGFjZTogZGV2aWNlLmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJ05vdCBzZXQnLFxuICAgICAgICBzZWN1cml0eVByb2ZpbGU6IGRldmljZS5zZWN1cml0eVByb2ZpbGUgfHwgJ05vdCBzZXQnLFxuICAgICAgfSxcbiAgICAgIHNjaGVkdWxpbmdDb25maWd1cmVkOiBmYWxzZSxcbiAgICAgIHBsYW5uZWRNYWludGVuYW5jZUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgbm90ZXM6IG51bGwsXG4gICAgfTtcblxuICAgIHJldHVybiBvZihkZXRhaWxzKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwodGVtcGxhdGU6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocGFyYW1zKS5yZWR1Y2UoKHVybCwga2V5KSA9PiB1cmwucmVwbGFjZShgOiR7a2V5fWAsIHBhcmFtc1trZXldKSwgdGVtcGxhdGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZElzc3Vlcyh0eXBlTGFiZWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGNhcGFjaXR5OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogV29ya3NwYWNlSXNzdWVbXSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gdGhpcy5mb3JtYXRUaW1lc3RhbXAobmV3IERhdGUoKSk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgIXR5cGVMYWJlbCB8fCB0eXBlTGFiZWwgPT09ICdObyB0eXBlJyB8fCB0eXBlTGFiZWwudG9Mb3dlckNhc2UoKSA9PT0gJ25vdHNldCcgPyB7XG4gICAgICAgIGlkOiAndHlwZScsXG4gICAgICAgIG1lc3NhZ2U6ICdXb3Jrc3BhY2UgdHlwZSBub3Qgc2V0JyxcbiAgICAgICAgdGltZXN0YW1wLFxuICAgICAgICBhY3Rpb25MYWJlbDogJ0Fzc2lnbiB0eXBlJyxcbiAgICAgIH0gOiBudWxsLFxuICAgICAgY2FwYWNpdHkgPT0gbnVsbCA/IHtcbiAgICAgICAgaWQ6ICdjYXBhY2l0eScsXG4gICAgICAgIG1lc3NhZ2U6ICdXb3Jrc3BhY2UgY2FwYWNpdHkgbm90IHNldCcsXG4gICAgICAgIHRpbWVzdGFtcCxcbiAgICAgICAgYWN0aW9uTGFiZWw6ICdTZXQgY2FwYWNpdHknLFxuICAgICAgfSA6IG51bGwsXG4gICAgXS5maWx0ZXIoKGlzc3VlKTogaXNzdWUgaXMgTm9uTnVsbGFibGU8dHlwZW9mIGlzc3VlPiA9PiBpc3N1ZSAhPT0gbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFRpbWVzdGFtcChkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVN0cmluZygnZW4tVVMnLCB7XG4gICAgICB5ZWFyOiAnMi1kaWdpdCcsXG4gICAgICBtb250aDogJ251bWVyaWMnLFxuICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICBtaW51dGU6ICcyLWRpZ2l0JyxcbiAgICAgIGhvdXIxMjogdHJ1ZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,4 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { forkJoin } from 'rxjs';
2
3
  import { map } from 'rxjs/operators';
3
4
  import { API } from '../app.constants';
4
5
  import * as i0 from "@angular/core";
@@ -58,23 +59,35 @@ function mergeWorkspacesByDeviceName(workspaces) {
58
59
  }
59
60
  return Array.from(merged.values());
60
61
  }
62
+ const FETCH_ALL_SIZE = 9999;
61
63
  export class WorkspacesService {
62
64
  constructor(apiService) {
63
65
  this.apiService = apiService;
64
66
  }
65
- fetchWorkspaces(customerId, size = 10, page = 0) {
66
- const queryParams = {
67
+ fetchWorkspaces(customerId) {
68
+ const baseParams = {
67
69
  type: 'ORPHAN_DEVICE',
68
- 'device-name': 'SEP',
69
70
  customerid: customerId.toString(),
70
- size: size.toString(),
71
- page: page.toString(),
71
+ size: FETCH_ALL_SIZE.toString(),
72
+ page: '0',
72
73
  };
73
- return this.apiService.fetch(API.WORKSPACES.GET_ALL, queryParams).pipe(map((response) => {
74
- const parsed = parseResponse(response);
74
+ const cucm$ = this.apiService.fetch(API.WORKSPACES.GET_ALL, {
75
+ ...baseParams,
76
+ 'device-name': 'SEP',
77
+ provisionType: 'CUCM',
78
+ });
79
+ const webex$ = this.apiService.fetch(API.WORKSPACES.GET_ALL, {
80
+ ...baseParams,
81
+ provisionType: 'WEBEX',
82
+ });
83
+ return forkJoin([cucm$, webex$]).pipe(map(([cucmResponse, webexResponse]) => {
84
+ const cucmParsed = parseResponse(cucmResponse);
85
+ const webexParsed = parseResponse(webexResponse);
86
+ const items = [...(cucmParsed?.pageData || []), ...(webexParsed?.pageData || [])];
87
+ const workspaces = mergeWorkspacesByDeviceName(items.map(toWorkspace));
75
88
  return {
76
- workspaces: mergeWorkspacesByDeviceName((parsed?.pageData || []).map(toWorkspace)),
77
- total: parsed?.total ?? 0,
89
+ workspaces,
90
+ total: workspaces.length,
78
91
  };
79
92
  }));
80
93
  }
@@ -87,4 +100,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
87
100
  providedIn: 'root'
88
101
  }]
89
102
  }], ctorParameters: function () { return [{ type: i1.APIService }]; } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQUl2QyxTQUFTLGFBQWEsQ0FBQyxRQUFhO0lBQ2xDLE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDeEUsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLGtCQUFpQztJQUNqRCxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDdkIsT0FBTyxhQUFhLENBQUM7S0FDdEI7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLElBQXVCLEVBQUUsS0FBYTtJQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzNCLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7SUFFOUUsT0FBTztRQUNMLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsSUFBSSxNQUFNLENBQUMs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QUFJLENBQ3BFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3BCLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQXVCLENBQUM7WUFDN0QsT0FBTztnQkFDTCxVQUFVLEVBQUUsMkJBQTJCLENBQUMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDbEYsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksQ0FBQzthQUMxQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OytHQXhCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9hcHAuY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBXb3Jrc3BhY2UsIFdvcmtzcGFjZUxpc3RJdGVtLCBXb3Jrc3BhY2VzUGFnZSwgV29ya3NwYWNlc1Jlc3BvbnNlLCBXb3Jrc3BhY2VTdGF0dXMgfSBmcm9tICcuLi90eXBlcy93b3Jrc3BhY2UnO1xyXG5cclxuZnVuY3Rpb24gcGFyc2VSZXNwb25zZShyZXNwb25zZTogYW55KTogYW55IHtcclxuICByZXR1cm4gdHlwZW9mIHJlc3BvbnNlID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UocmVzcG9uc2UpIDogcmVzcG9uc2U7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvU3RhdHVzKHByb3Zpc2lvbmluZ1N0YXR1czogc3RyaW5nIHwgbnVsbCk6IFdvcmtzcGFjZVN0YXR1cyB7XHJcbiAgaWYgKCFwcm92aXNpb25pbmdTdGF0dXMpIHtcclxuICAgIHJldHVybiAndW5hdmFpbGFibGUnO1xyXG4gIH1cclxuICByZXR1cm4gcHJvdmlzaW9uaW5nU3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdhY3RpdmUnID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnO1xyXG59XHJcblxyXG5mdW5jdGlvbiB0b1dvcmtzcGFjZShpdGVtOiBXb3Jrc3BhY2VMaXN0SXRlbSwgaW5kZXg6IG51bWJlcik6IFdvcmtzcGFjZSB7XHJcbiAgY29uc3QgZGV2aWNlID0gaXRlbS5kZXZpY2U7XHJcbiAgY29uc3QgZmlyc3REaXJlY3RvcnlOdW1iZXIgPSBkZXZpY2UuYXNzb2NpYXRlZEROcz8uWzBdPy5kaXJlY3RvcnlOdW1iZXIgPz8gJyc7XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZGV2aWNlLnBraWQgfHwgaXRlbS53b3Jrc3BhY2VEZXZpY2VzPy5bMF0/LmRldmljZUlkIHx8IGRldmljZS5uYW1lIHx8IGB3b3Jrc3BhY2UtJHtpbmRleH1gLFxyXG4gICAgZGlzcGxheU5hbWU6IGRldmljZS5uZXdOYW1lIHx8IGRldmljZS5uYW1lIHx8ICdVbm5hbWVkIGRldmljZScsXHJcbiAgICB0eXBlTGFiZWw6IGRldmljZS51c2VyRGV2aWNlVHlwZSB8fCAnTm8gdHlwZScsXHJcbiAgICBjYXBhY2l0eTogbnVsbCxcclxuICAgIGxvY2F0aW9uOiBpdGVtLnNpdGU/Lm5hbWUgfHwgZGV2aWNlLnNpdGVOYW1lIHx8IGRldmljZS5sb2NhdGlvbiB8fCAnJyxcclxuICAgIGRldmljZXM6IChpdGVtLndvcmtzcGFjZURldmljZXMgfHwgW10pLm1hcCh3b3Jrc3BhY2VEZXZpY2UgPT4gKHtcclxuICAgICAgaWQ6IHdvcmtzcGFjZURldmljZS5kZXZpY2VJZCxcclxuICAgICAga2luZDogJ2RldmljZScgYXMgY29uc3QsXHJcbiAgICAgIGxhYmVsOiB3b3Jrc3BhY2VEZXZpY2UubW9kZWwgfHwgd29ya3NwYWNlRGV2aWNlLm1hYyxcclxuICAgICAgbW9kZWw6IHdvcmtzcGFjZURldmljZS5tb2RlbCxcclxuICAgIH0pKSxcclxuICAgIHNjaGVkdWxpbmc6ICdOb3Qgc2V0JyxcclxuICAgIGNhbGxpbmdMaWNlbnNlOiBmaXJzdERpcmVjdG9yeU51bWJlcixcclxuICAgIHByb3Zpc2lvbmluZ1R5cGU6ICdPbi1wcmVtaXNlcycsXHJcbiAgICBzdGF0dXM6IHRvU3RhdHVzKGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMpLFxyXG4gICAgc3RhdHVzTGFiZWw6IGRldmljZS5wcm92aXNpb25pbmdTdGF0dXMgfHwgJ1N0YXR1cyB1bmF2YWlsYWJsZScsXHJcbiAgICBkZXZpY2UsXHJcbiAgICBpc0h5YnJpZDogZmFsc2UsXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWVyZ2VEZXZpY2VzKGE6IFdvcmtzcGFjZVsnZGV2aWNlJ10sIGI6IFdvcmtzcGFjZVsnZGV2aWNlJ10pOiBXb3Jrc3BhY2VbJ2RldmljZSddIHtcclxuICByZXR1cm4ge1xyXG4gICAgLi4uYSxcclxuICAgIC4uLmIsXHJcbiAgICBjdWNtSWQ6IGIuY3VjbUlkID8/IGEuY3VjbUlkLFxyXG4gICAgd2ViZXhVVUlEOiBiLndlYmV4VVVJRCA/PyBhLndlYmV4VVVJRCxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZVdvcmtzcGFjZXNCeURldmljZU5hbWUod29ya3NwYWNlczogV29ya3NwYWNlW10pOiBXb3Jrc3BhY2VbXSB7XHJcbiAgY29uc3QgbWVyZ2VkID0gbmV3IE1hcDxzdHJpbmcsIFdvcmtzcGFjZT4oKTtcclxuXHJcbiAgZm9yIChjb25zdCB3b3Jrc3BhY2Ugb2Ygd29ya3NwYWNlcykge1xyXG4gICAgY29uc3Qga2V5ID0gd29ya3NwYWNlLmRldmljZS5uYW1lO1xyXG4gICAgY29uc3QgZXhpc3RpbmcgPSBtZXJnZWQuZ2V0KGtleSk7XHJcbiAgICBtZXJnZWQuc2V0KGtleSwgZXhpc3RpbmcgPyB7XHJcbiAgICAgIC4uLmV4aXN0aW5nLFxyXG4gICAgICAuLi53b3Jrc3BhY2UsXHJcbiAgICAgIGRldmljZTogbWVyZ2VEZXZpY2VzKGV4aXN0aW5nLmRldmljZSwgd29ya3NwYWNlLmRldmljZSksXHJcbiAgICAgIGlzSHlicmlkOiB0cnVlLFxyXG4gICAgfSA6IHdvcmtzcGFjZSk7XHJcbiAgfVxyXG5cclxuICByZXR1cm4gQXJyYXkuZnJvbShtZXJnZWQudmFsdWVzKCkpO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlKSB7IH1cclxuXHJcbiAgZmV0Y2hXb3Jrc3BhY2VzKFxyXG4gICAgY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyLFxyXG4gICAgc2l6ZSA9IDEwLFxyXG4gICAgcGFnZSA9IDAsXHJcbiAgKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VzUGFnZT4ge1xyXG4gICAgY29uc3QgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgICAgIHR5cGU6ICdPUlBIQU5fREVWSUNFJyxcclxuICAgICAgJ2RldmljZS1uYW1lJzogJ1NFUCcsXHJcbiAgICAgIGN1c3RvbWVyaWQ6IGN1c3RvbWVySWQudG9TdHJpbmcoKSxcclxuICAgICAgc2l6ZTogc2l6ZS50b1N0cmluZygpLFxyXG4gICAgICBwYWdlOiBwYWdlLnRvU3RyaW5nKCksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5mZXRjaChBUEkuV09SS1NQQUNFUy5HRVRfQUxMLCBxdWVyeVBhcmFtcykucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2VSZXNwb25zZShyZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICB3b3Jrc3BhY2VzOiBtZXJnZVdvcmtzcGFjZXNCeURldmljZU5hbWUoKHBhcnNlZD8ucGFnZURhdGEgfHwgW10pLm1hcCh0b1dvcmtzcGFjZSkpLFxyXG4gICAgICAgICAgdG90YWw6IHBhcnNlZD8udG90YWwgPz8gMCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3dvcmtzcGFjZXMvc3JjL3NlcnZpY2VzL3dvcmtzcGFjZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxRQUFRLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSXZDLFNBQVMsYUFBYSxDQUFDLFFBQWE7SUFDbEMsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsa0JBQWlDO0lBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRTtRQUN2QixPQUFPLGFBQWEsQ0FBQztLQUN0QjtJQUNELE9BQU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUMvRSxDQUFDO0FBRUQsU0FBUyxXQUFXLENBQUMsSUFBdUIsRUFBRSxLQUFhO0lBQ3pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDM0IsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUU5RSxPQUFPO1FBQ0wsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksYUFBYSxLQUFLLEVBQUU7UUFDOUYsV0FBVyxFQUFFLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksSUFBSSxnQkFBZ0I7UUFDOUQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksU0FBUztRQUM3QyxRQUFRLEVBQUUsSUFBSTtRQUNkLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtRQUNyRSxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3RCxFQUFFLEVBQUUsZUFBZSxDQUFDLFFBQVE7WUFDNUIsSUFBSSxFQUFFLFFBQWlCO1lBQ3ZCLEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSyxJQUFJLGVBQWUsQ0FBQyxHQUFHO1lBQ25ELEtBQUssRUFBRSxlQUFlLENBQUMsS0FBSztTQUM3QixDQUFDLENBQUM7UUFDSCxVQUFVLEVBQUUsU0FBUztRQUNyQixjQUFjLEVBQUUsb0JBQW9CO1FBQ3BDLGdCQUFnQixFQUFFLGFBQWE7UUFDL0IsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7UUFDM0MsV0FBVyxFQUFFLE1BQU0sQ0FBQyxrQkFBa0IsSUFBSSxvQkFBb0I7UUFDOUQsTUFBTTtRQUNOLFFBQVEsRUFBRSxLQUFLO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsQ0FBc0IsRUFBRSxDQUFzQjtJQUNsRSxPQUFPO1FBQ0wsR0FBRyxDQUFDO1FBQ0osR0FBRyxDQUFDO1FBQ0osTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE1BQU07UUFDNUIsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksQ0FBQyxDQUFDLFNBQVM7S0FDdEMsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUFDLFVBQXVCO0lBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksR0FBRyxFQUFxQixDQUFDO0lBRTVDLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUN6QixHQUFHLFFBQVE7WUFDWCxHQUFHLFNBQVM7WUFDWixNQUFNLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN2RCxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2hCO0lBRUQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUM7QUFLNUIsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUksQ0FBQztJQUUvQyxlQUFlLENBQUMsVUFBMkI7UUFDekMsTUFBTSxVQUFVLEdBQTJCO1lBQ3pDLElBQUksRUFBRSxlQUFlO1lBQ3JCLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ2pDLElBQUksRUFBRSxjQUFjLENBQUMsUUFBUSxFQUFFO1lBQy9CLElBQUksRUFBRSxHQUFHO1NBQ1YsQ0FBQztRQUVGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQzFELEdBQUcsVUFBVTtZQUNiLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGFBQWEsRUFBRSxNQUFNO1NBQ3RCLENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQzNELEdBQUcsVUFBVTtZQUNiLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNuQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQXVCLENBQUM7WUFDckUsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBdUIsQ0FBQztZQUN2RSxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEYsTUFBTSxVQUFVLEdBQUcsMkJBQTJCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBRXZFLE9BQU87Z0JBQ0wsVUFBVTtnQkFDVixLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU07YUFDekIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzsrR0FuQ1UsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2FwcC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IFdvcmtzcGFjZSwgV29ya3NwYWNlTGlzdEl0ZW0sIFdvcmtzcGFjZXNQYWdlLCBXb3Jrc3BhY2VzUmVzcG9uc2UsIFdvcmtzcGFjZVN0YXR1cyB9IGZyb20gJy4uL3R5cGVzL3dvcmtzcGFjZSc7XHJcblxyXG5mdW5jdGlvbiBwYXJzZVJlc3BvbnNlKHJlc3BvbnNlOiBhbnkpOiBhbnkge1xyXG4gIHJldHVybiB0eXBlb2YgcmVzcG9uc2UgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZSkgOiByZXNwb25zZTtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9TdGF0dXMocHJvdmlzaW9uaW5nU3RhdHVzOiBzdHJpbmcgfCBudWxsKTogV29ya3NwYWNlU3RhdHVzIHtcclxuICBpZiAoIXByb3Zpc2lvbmluZ1N0YXR1cykge1xyXG4gICAgcmV0dXJuICd1bmF2YWlsYWJsZSc7XHJcbiAgfVxyXG4gIHJldHVybiBwcm92aXNpb25pbmdTdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ2FjdGl2ZScgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZSc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRvV29ya3NwYWNlKGl0ZW06IFdvcmtzcGFjZUxpc3RJdGVtLCBpbmRleDogbnVtYmVyKTogV29ya3NwYWNlIHtcclxuICBjb25zdCBkZXZpY2UgPSBpdGVtLmRldmljZTtcclxuICBjb25zdCBmaXJzdERpcmVjdG9yeU51bWJlciA9IGRldmljZS5hc3NvY2lhdGVkRE5zPy5bMF0/LmRpcmVjdG9yeU51bWJlciA/PyAnJztcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIGlkOiBkZXZpY2UucGtpZCB8fCBpdGVtLndvcmtzcGFjZURldmljZXM/LlswXT8uZGV2aWNlSWQgfHwgZGV2aWNlLm5hbWUgfHwgYHdvcmtzcGFjZS0ke2luZGV4fWAsXHJcbiAgICBkaXNwbGF5TmFtZTogZGV2aWNlLm5ld05hbWUgfHwgZGV2aWNlLm5hbWUgfHwgJ1VubmFtZWQgZGV2aWNlJyxcclxuICAgIHR5cGVMYWJlbDogZGV2aWNlLnVzZXJEZXZpY2VUeXBlIHx8ICdObyB0eXBlJyxcclxuICAgIGNhcGFjaXR5OiBudWxsLFxyXG4gICAgbG9jYXRpb246IGl0ZW0uc2l0ZT8ubmFtZSB8fCBkZXZpY2Uuc2l0ZU5hbWUgfHwgZGV2aWNlLmxvY2F0aW9uIHx8ICcnLFxyXG4gICAgZGV2aWNlczogKGl0ZW0ud29ya3NwYWNlRGV2aWNlcyB8fCBbXSkubWFwKHdvcmtzcGFjZURldmljZSA9PiAoe1xyXG4gICAgICBpZDogd29ya3NwYWNlRGV2aWNlLmRldmljZUlkLFxyXG4gICAgICBraW5kOiAnZGV2aWNlJyBhcyBjb25zdCxcclxuICAgICAgbGFiZWw6IHdvcmtzcGFjZURldmljZS5tb2RlbCB8fCB3b3Jrc3BhY2VEZXZpY2UubWFjLFxyXG4gICAgICBtb2RlbDogd29ya3NwYWNlRGV2aWNlLm1vZGVsLFxyXG4gICAgfSkpLFxyXG4gICAgc2NoZWR1bGluZzogJ05vdCBzZXQnLFxyXG4gICAgY2FsbGluZ0xpY2Vuc2U6IGZpcnN0RGlyZWN0b3J5TnVtYmVyLFxyXG4gICAgcHJvdmlzaW9uaW5nVHlwZTogJ09uLXByZW1pc2VzJyxcclxuICAgIHN0YXR1czogdG9TdGF0dXMoZGV2aWNlLnByb3Zpc2lvbmluZ1N0YXR1cyksXHJcbiAgICBzdGF0dXNMYWJlbDogZGV2aWNlLnByb3Zpc2lvbmluZ1N0YXR1cyB8fCAnU3RhdHVzIHVuYXZhaWxhYmxlJyxcclxuICAgIGRldmljZSxcclxuICAgIGlzSHlicmlkOiBmYWxzZSxcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZXJnZURldmljZXMoYTogV29ya3NwYWNlWydkZXZpY2UnXSwgYjogV29ya3NwYWNlWydkZXZpY2UnXSk6IFdvcmtzcGFjZVsnZGV2aWNlJ10ge1xyXG4gIHJldHVybiB7XHJcbiAgICAuLi5hLFxyXG4gICAgLi4uYixcclxuICAgIGN1Y21JZDogYi5jdWNtSWQgPz8gYS5jdWNtSWQsXHJcbiAgICB3ZWJleFVVSUQ6IGIud2ViZXhVVUlEID8/IGEud2ViZXhVVUlELFxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1lcmdlV29ya3NwYWNlc0J5RGV2aWNlTmFtZSh3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSk6IFdvcmtzcGFjZVtdIHtcclxuICBjb25zdCBtZXJnZWQgPSBuZXcgTWFwPHN0cmluZywgV29ya3NwYWNlPigpO1xyXG5cclxuICBmb3IgKGNvbnN0IHdvcmtzcGFjZSBvZiB3b3Jrc3BhY2VzKSB7XHJcbiAgICBjb25zdCBrZXkgPSB3b3Jrc3BhY2UuZGV2aWNlLm5hbWU7XHJcbiAgICBjb25zdCBleGlzdGluZyA9IG1lcmdlZC5nZXQoa2V5KTtcclxuICAgIG1lcmdlZC5zZXQoa2V5LCBleGlzdGluZyA/IHtcclxuICAgICAgLi4uZXhpc3RpbmcsXHJcbiAgICAgIC4uLndvcmtzcGFjZSxcclxuICAgICAgZGV2aWNlOiBtZXJnZURldmljZXMoZXhpc3RpbmcuZGV2aWNlLCB3b3Jrc3BhY2UuZGV2aWNlKSxcclxuICAgICAgaXNIeWJyaWQ6IHRydWUsXHJcbiAgICB9IDogd29ya3NwYWNlKTtcclxuICB9XHJcblxyXG4gIHJldHVybiBBcnJheS5mcm9tKG1lcmdlZC52YWx1ZXMoKSk7XHJcbn1cclxuXHJcbmNvbnN0IEZFVENIX0FMTF9TSVpFID0gOTk5OTtcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdvcmtzcGFjZXNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UpIHsgfVxyXG5cclxuICBmZXRjaFdvcmtzcGFjZXMoY3VzdG9tZXJJZDogc3RyaW5nIHwgbnVtYmVyKTogT2JzZXJ2YWJsZTxXb3Jrc3BhY2VzUGFnZT4ge1xyXG4gICAgY29uc3QgYmFzZVBhcmFtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgdHlwZTogJ09SUEhBTl9ERVZJQ0UnLFxyXG4gICAgICBjdXN0b21lcmlkOiBjdXN0b21lcklkLnRvU3RyaW5nKCksXHJcbiAgICAgIHNpemU6IEZFVENIX0FMTF9TSVpFLnRvU3RyaW5nKCksXHJcbiAgICAgIHBhZ2U6ICcwJyxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgY3VjbSQgPSB0aGlzLmFwaVNlcnZpY2UuZmV0Y2goQVBJLldPUktTUEFDRVMuR0VUX0FMTCwge1xyXG4gICAgICAuLi5iYXNlUGFyYW1zLFxyXG4gICAgICAnZGV2aWNlLW5hbWUnOiAnU0VQJyxcclxuICAgICAgcHJvdmlzaW9uVHlwZTogJ0NVQ00nLFxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3Qgd2ViZXgkID0gdGhpcy5hcGlTZXJ2aWNlLmZldGNoKEFQSS5XT1JLU1BBQ0VTLkdFVF9BTEwsIHtcclxuICAgICAgLi4uYmFzZVBhcmFtcyxcclxuICAgICAgcHJvdmlzaW9uVHlwZTogJ1dFQkVYJyxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBmb3JrSm9pbihbY3VjbSQsIHdlYmV4JF0pLnBpcGUoXHJcbiAgICAgIG1hcCgoW2N1Y21SZXNwb25zZSwgd2ViZXhSZXNwb25zZV0pID0+IHtcclxuICAgICAgICBjb25zdCBjdWNtUGFyc2VkID0gcGFyc2VSZXNwb25zZShjdWNtUmVzcG9uc2UpIGFzIFdvcmtzcGFjZXNSZXNwb25zZTtcclxuICAgICAgICBjb25zdCB3ZWJleFBhcnNlZCA9IHBhcnNlUmVzcG9uc2Uod2ViZXhSZXNwb25zZSkgYXMgV29ya3NwYWNlc1Jlc3BvbnNlO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zID0gWy4uLihjdWNtUGFyc2VkPy5wYWdlRGF0YSB8fCBbXSksIC4uLih3ZWJleFBhcnNlZD8ucGFnZURhdGEgfHwgW10pXTtcclxuICAgICAgICBjb25zdCB3b3Jrc3BhY2VzID0gbWVyZ2VXb3Jrc3BhY2VzQnlEZXZpY2VOYW1lKGl0ZW1zLm1hcCh0b1dvcmtzcGFjZSkpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgd29ya3NwYWNlcyxcclxuICAgICAgICAgIHRvdGFsOiB3b3Jrc3BhY2VzLmxlbmd0aCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==