@tuki-io/tuki-widgets 0.0.157 → 0.0.159

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 (27) hide show
  1. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  2. package/esm2020/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.mjs +22 -12
  3. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +37 -27
  4. package/esm2020/user-device-manage/src/services/dns.service.mjs +34 -2
  5. package/esm2020/user-device-manage/src/services/line.service.mjs +4 -4
  6. package/esm2020/user-device-manage/src/services/user.service.mjs +68 -47
  7. package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +5 -7
  8. package/esm2020/users-list/src/services/dns.service.mjs +2 -2
  9. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +314 -247
  10. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  11. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +4 -7
  12. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  13. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +1 -1
  14. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  15. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +317 -248
  16. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  17. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +4 -6
  18. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  19. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +1 -1
  20. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  21. package/package.json +1 -1
  22. package/user-device-manage/src/classes/deviceProfile.d.ts +9 -0
  23. package/user-device-manage/src/device-associated-line/device-associated-line-extension/device-associated-line-extension.component.d.ts +6 -2
  24. package/user-device-manage/src/device-manage-widget.component.d.ts +8 -4
  25. package/user-device-manage/src/services/dns.service.d.ts +4 -0
  26. package/user-device-manage/src/services/user.service.d.ts +20 -18
  27. package/user-manage/src/user-calling/user-calling.component.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { FormControl } from '@angular/forms';
2
+ import { FormArray, FormControl } from '@angular/forms';
3
3
  import { finalize, Subject, takeUntil } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "./services/user.service";
@@ -9,16 +9,18 @@ import * as i4 from "./services/line.service";
9
9
  import * as i5 from "./services/site-settings.service";
10
10
  import * as i6 from "./services/validation.service";
11
11
  import * as i7 from "@angular/material/dialog";
12
- import * as i8 from "@angular/common";
13
- import * as i9 from "@angular/forms";
14
- import * as i10 from "@angular/material/divider";
15
- import * as i11 from "@angular/material/tooltip";
16
- import * as i12 from "@angular/material/core";
17
- import * as i13 from "@angular/material/select";
18
- import * as i14 from "@angular/material/slide-toggle";
19
- import * as i15 from "./utils/app-loader/app-loader";
20
- import * as i16 from "./device-info/device-info.component";
21
- import * as i17 from "./pipes/mac-address.pipe";
12
+ import * as i8 from "./services/dns.service";
13
+ import * as i9 from "@angular/common";
14
+ import * as i10 from "@angular/forms";
15
+ import * as i11 from "@angular/material/divider";
16
+ import * as i12 from "@angular/material/tooltip";
17
+ import * as i13 from "@angular/material/core";
18
+ import * as i14 from "@angular/material/select";
19
+ import * as i15 from "@angular/material/slide-toggle";
20
+ import * as i16 from "./utils/app-loader/app-loader";
21
+ import * as i17 from "./device-associated-line/device-associated-line-extension/device-associated-line-extension.component";
22
+ import * as i18 from "./device-info/device-info.component";
23
+ import * as i19 from "./pipes/mac-address.pipe";
22
24
  export class DeviceManageWidgetComponent {
23
25
  get firstName() {
24
26
  return this.userService.userName;
@@ -30,9 +32,9 @@ export class DeviceManageWidgetComponent {
30
32
  return this.userService.userDevice?.form;
31
33
  }
32
34
  get isWebex() {
33
- return localStorage.getItem('webexUUID') && localStorage.getItem('webexUUID')?.length;
35
+ return localStorage.getItem('webexUUID') && localStorage.getItem('webexUUID') !== 'null';
34
36
  }
35
- constructor(userService, deviceService, apiService, lineService, siteSettingsService, validationService, dialog) {
37
+ constructor(userService, deviceService, apiService, lineService, siteSettingsService, validationService, dialog, dnsService) {
36
38
  this.userService = userService;
37
39
  this.deviceService = deviceService;
38
40
  this.apiService = apiService;
@@ -40,6 +42,7 @@ export class DeviceManageWidgetComponent {
40
42
  this.siteSettingsService = siteSettingsService;
41
43
  this.validationService = validationService;
42
44
  this.dialog = dialog;
45
+ this.dnsService = dnsService;
43
46
  this.onSave = new EventEmitter();
44
47
  this.onChange = new EventEmitter();
45
48
  this.discardChanges = new EventEmitter();
@@ -53,6 +56,7 @@ export class DeviceManageWidgetComponent {
53
56
  this.tags = [];
54
57
  this.isAdding = false;
55
58
  this.newTag = '';
59
+ this.linesControls = new FormArray([]);
56
60
  }
57
61
  ngOnInit() {
58
62
  this.apiService.token = this.token;
@@ -88,6 +92,7 @@ export class DeviceManageWidgetComponent {
88
92
  this.dataPending = true;
89
93
  let request;
90
94
  const deviceType = localStorage.getItem('deviceType');
95
+ // const deviceType = this.deviceName;
91
96
  if (localStorage.getItem('isWebex') === 'true') {
92
97
  // request
93
98
  const customerId = localStorage.getItem('customerId');
@@ -102,16 +107,24 @@ export class DeviceManageWidgetComponent {
102
107
  .pipe(finalize(() => this.dataPending = false))
103
108
  .subscribe((data) => {
104
109
  this.device = data;
110
+ this.initFormData(this.device);
105
111
  });
106
112
  }
113
+ initFormData(device) {
114
+ this.linesControls = new FormArray(this.device.lines.map((line) => new FormControl(String(line.extension) || '')));
115
+ }
107
116
  onNumberChange(event, index) {
108
117
  const value = event.target.innerText.trim();
109
118
  this.device.lines[index].number = value;
110
119
  this.onChange.emit();
111
120
  }
112
- onExtensionChange(event, index) {
113
- const value = event.target.innerText.trim();
121
+ onExtensionChange(value, index) {
122
+ // const value = (event.target as HTMLElement).innerText.trim();
123
+ const extension = this.dnsService.getDnValue(value);
124
+ const number = this.dnsService.getMappedDids(extension, '0');
114
125
  this.device.lines[index].extension = value;
126
+ this.device.lines[index].number = number || '';
127
+ this.linesControls.at(index).setValue(extension);
115
128
  this.onChange.emit();
116
129
  }
117
130
  saveChanges() {
@@ -119,14 +132,11 @@ export class DeviceManageWidgetComponent {
119
132
  return;
120
133
  }
121
134
  const updatedLines = this.device.lines.filter((line, index) => this.userService.lineUpdated(line, index));
122
- updatedLines.forEach((line) => {
123
- this.userService.editTranslationPattern(this.userService.cucmId, this.userService.getOriginalNumber(line), line.number, line.extension, line.routePartitionName, line.description || '').subscribe(() => {
124
- this.dataPending = false;
125
- this.onSave.next("device's line has been saved successfully..");
126
- // subscription.unsubscribe();
127
- }, () => this.dataPending = false);
128
- });
135
+ updatedLines.forEach((line) => this.userService.saveNewLine(line));
129
136
  this.dataPending = true;
137
+ setTimeout(() => {
138
+ this.dataPending = false;
139
+ }, 20000);
130
140
  }
131
141
  ngOnDestroy() {
132
142
  this.destroy$.next();
@@ -136,12 +146,12 @@ export class DeviceManageWidgetComponent {
136
146
  this.goBack.emit();
137
147
  }
138
148
  }
139
- DeviceManageWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceManageWidgetComponent, deps: [{ token: i1.UserService }, { token: i2.DeviceService }, { token: i3.APIService }, { token: i4.LineService }, { token: i5.SiteSettingsService }, { token: i6.ValidationService }, { token: i7.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
140
- DeviceManageWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceManageWidgetComponent, selector: "app-device-manage-widget", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", isLdap: "isLdap", deviceName: "deviceName" }, outputs: { onSave: "onSave", onChange: "onChange", discardChanges: "discardChanges", goBack: "goBack" }, viewQueries: [{ propertyName: "tagInput", first: true, predicate: ["tagInput"], descendants: true }], ngImport: i0, template: "\r\n\r\n<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!dataPending\">\r\n <!-- <div class=\"go-back-box\" (click)=\"onGoBack()\"> -->\r\n <div class=\"go-back-box\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Devices</span>\r\n </div>\r\n </div>\r\n\r\n <app-device-info \r\n [device]=\"device\" \r\n [firstName]=\"firstName\" \r\n [lastName]=\"lastName\"\r\n (onclickBack)=\"onGoBack()\"\r\n >\r\n \r\n </app-device-info>\r\n <div class=\"device-info\">\r\n\r\n <div class=\"device-info-part\">\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('maxLineCount')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Lines</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ (form?.get('macAddress')?.value | macAddress) || 'N/A' }}</span>\r\n <span class=\"extra-info\">MAC address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('ipAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Host IP address</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('remoteIpAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">Cisco</span>\r\n <span class=\"extra-info\">Managed By</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Software</span>\r\n <div class=\"icon-bordered-wrapper\">\r\n <i class=\"icon configure-icon rem1\"></i>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareVersion')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software Channel</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareChannel')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software version</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Tags</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div class=\"tags-list-container\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tag-label\">\r\n <span class=\"tag-desccription\">{{ tag }}</span>\r\n <i class=\"icon close-icon\" (click)=\"removeTag(i)\" style=\"width: 0.75rem; height: 0.75rem; flex: 0 0 auto;\"></i>\r\n </div>\r\n </div>\r\n <div class=\"tags-list-container\">\r\n <button class=\"tag-label add-tag\" (click)=\"showInput()\">\r\n <span class=\"icon plus-icon\" style=\"width: 0.75rem; height: 0.75rem;\"></span>\r\n <span>Add tag</span>\r\n </button>\r\n <input \r\n #tagInput\r\n id=\"enter-tag-input\" \r\n *ngIf=\"isAdding\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onBlur()\"\r\n type=\"text\"\r\n class=\"add-tag-input\" \r\n placeholder=\"Enter tag...\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n\r\n <div class=\"device-info-part\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Issues & Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"description\">\r\n <i class=\"icon check-icon rem1\" style=\"filter: invert(26%) sepia(27%) saturate(1093%) hue-rotate(114deg) brightness(93%) contrast(90%);\"></i>\r\n <span class=\"text-description\">No reported issues at this time</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Hoteling</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <span class=\"text-description\">Allow this device to be used as a Hoteling Host by visiting guests.</span>\r\n <div class=\"toggle-wrapper\">\r\n <mat-slide-toggle class=\"custom-toggle\" name=\"logMissedCalls\" [formControl]=\"hotelingEnabled\"></mat-slide-toggle>\r\n <i class=\"icon info-icon rem1\" \r\n style=\"filter: invert(20%) sepia(99%) saturate(2065%) hue-rotate(197deg) brightness(92%) contrast(101%);\"\r\n [matTooltip]=\"'Enabling this device for Hoteling means that a guest (end user) can log into this host (workspace phone) and use this phone as if it were their own. This is useful when traveling to a remote office but still needing to place/receive calls with their telephone number and to access features normally available to them on their own office phone.'\"\r\n ></i>\r\n </div>\r\n <span class=\"text-description\">Limit the time a guest can use this phone to</span>\r\n <mat-select [formControl]=\"guestHoursLimit\">\r\n <mat-option *ngFor=\"let type of HOTELING_TIME_HOURS\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Management</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <p class=\"text-description\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <div class=\"flex-column\">\r\n <span class=\"text-description\">To add and remove users and workspaces, select <b>Configure Lines.</b></span>\r\n <span class=\"text-description\">To customize the programmable Line Keys, select <b>Configure Layout.</b></span>\r\n <span class=\"text-description\">To set up the display settings and dialing options, select <b>Device Settings</b>.</span>\r\n </div>\r\n <table style=\"border-collapse:collapse;\">\r\n <thead>\r\n <tr style=\"background:#ededed;\">\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Index #</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Name</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Number/Extension</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Appearances</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"device?.lines && device?.lines.length\">\r\n <tr style=\"background:#fff; cursor:pointer;\" onmouseover=\"this.style.background='#fafafa'\" onmouseout=\"this.style.background='#fff'\"\r\n \r\n *ngFor=\"let line of device.lines; let i = index\">\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\"></span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">{{line?.name}}</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onNumberChange($event, i)\">\r\n {{ line?.number || 'NA' }}\r\n </span> /\r\n <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onExtensionChange($event, i)\">\r\n {{ line?.extension }}\r\n </span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">1</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <i class=\"icon warning-icon rem1\" [matTooltip]=\"'Unregistered'\"></i>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </tbody>\r\n </table>\r\n <div class=\"totals\">\r\n <span class=\"text-description\">15 of 16 total lines available</span>\r\n </div>\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Lines</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Layout</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Device Settings</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Support</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Meetings & Calls</span>\r\n <span class=\"label new\">New</span>\r\n <i class=\"icon info-icon rem1\"\r\n [matTooltip]=\"'Troubleshooting provides details about the device related to status, network activity, and call information.'\"\r\n ></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Go to troubleshooting</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Device Logs</span>\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Generate device logs and download them to your computer.'\"></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.spinner-container{width:100%;display:flex;justify-content:center;align-items:center}.spinner-container ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#000}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#636363;font-size:14px}.webex-table tr:hover td{background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host :ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px;max-width:175px;margin-left:2.75rem;border:2px solid gray;padding:.25rem .75rem;border-radius:8px}:host ::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}:host ::ng-deep .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:#bfe3ff;color:#000}:host ::ng-deep .mat-select-panel .mat-option:not(.search-input):hover{background:#daedfc}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-tab-group{font-family:Inter,sans-serif}:host ::ng-deep .mat-tab-label{font-weight:500!important;font-size:16px!important;height:auto!important;min-width:auto!important;padding:0!important;opacity:1!important;color:#000!important}:host ::ng-deep .mat-ink-bar{background-color:#000!important;height:3px!important}:host ::ng-deep .mat-tab-labels{gap:30px}:host ::ng-deep .mat-progress-spinner{position:absolute!important;top:40%;left:45%}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.app-icon{transition:all .15s ease-out}.icon-webex-right-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-right%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M14.0812 9.66902L6.58119 2.16902C6.53813 2.12351 6.48638 2.0871 6.429 2.06193C6.37162 2.03677 6.30978 2.02336 6.24713 2.0225C6.18448 2.02165 6.1223 2.03336 6.06425 2.05695C6.00621 2.08053 5.95348 2.11552 5.90919 2.15983C5.8649 2.20415 5.82994 2.25689 5.80638 2.31495C5.78282 2.373 5.77113 2.43519 5.77202 2.49784C5.77291 2.56049 5.78634 2.62232 5.81153 2.67969C5.83673 2.73705 5.87316 2.78879 5.91869 2.83183L13.0874 10.0003L5.91869 17.169C5.87316 17.2121 5.83673 17.2638 5.81153 17.3212C5.78634 17.3785 5.77291 17.4404 5.77202 17.503C5.77113 17.5657 5.78282 17.6279 5.80638 17.6859C5.82994 17.744 5.8649 17.7967 5.90919 17.841C5.95348 17.8853 6.00621 17.9203 6.06425 17.9439C6.1223 17.9675 6.18448 17.9792 6.24713 17.9783C6.30978 17.9775 6.37162 17.9641 6.429 17.9389C6.48638 17.9138 6.53813 17.8773 6.58119 17.8318L14.0812 10.3318C14.1691 10.2439 14.2184 10.1247 14.2184 10.0004C14.2184 9.87613 14.1691 9.75692 14.0812 9.66902Z%22 fill%3D%22%230F0F0F%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.device-info{display:flex;gap:1rem;padding:1.5rem}.device-info .device-info-part{display:flex;flex-direction:column;gap:1rem;flex:1;min-width:0}.device-info .device-info-part .card{display:flex;flex-direction:column;padding:1rem 1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0}.device-info .device-info-part .card .header{display:flex;align-items:center;justify-content:space-between}.device-info .device-info-part .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif}.device-info .device-info-part .card .main-content{display:flex;flex-direction:column;min-width:0}.device-info .device-info-part .card .main-content .detail-row{display:flex;flex:1;padding:1rem 0;min-width:0}.device-info .device-info-part .card .main-content .detail-row .side{display:flex;flex-direction:column;flex:1}.device-info .device-info-part .card .main-content .detail-row .side .main-value{font-weight:500;font-size:.875rem}.device-info .device-info-part .card .main-content .detail-row .side .extra-info{font-weight:350;font-size:.75rem}.device-info .device-info-part .card .main-content .detail-row .description{display:flex;gap:.5rem;align-items:center}.device-info .device-info-part .card .main-content .detail-row .toggle-wrapper{display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.device-info .device-info-part .card .main-content .detail-row .configure-lines{display:flex;flex-direction:column}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line{display:flex;align-items:center;justify-content:space-between;flex:1;padding:.5rem 0}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div{gap:.5rem;display:flex;align-items:center}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label{display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid transparent;border-radius:.25rem;line-height:1;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label.new{font-size:.75rem;border-color:#30c9b0;background-color:#e9f7f3;color:#12615a}.device-info .device-info-part .card .main-content .tags-list-container{display:flex;gap:.5rem;flex-wrap:wrap;min-width:0}.device-info .device-info-part .card .main-content .tags-list-container .tag-label{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;gap:.5rem;height:40px;font-size:smaller;max-width:100%;min-width:0;overflow:hidden}.device-info .device-info-part .card .main-content .tags-list-container .tag-label .tag-desccription{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;height:40px;font-size:smaller;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important;margin-left:-99px}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input:focus-visible{outline:none}.device-info .device-info-part .card .main-content .add-tag{background-color:#fff!important}.device-info .device-info-part .card .main-content .add-tag:hover{color:#0353a8!important}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon-bordered-wrapper{display:flex;inline-size:1.5rem;border-radius:50rem;border:1px solid rgba(0,0,0,.5019607843);width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer}.configure-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 10.25A5.75 5.75 0 1 0 21.75 16 5.756 5.756 0 0 0 16 10.25m0 10a4.25 4.25 0 1 1 0-8.5 4.25 4.25 0 0 1 0 8.5M28 13.25H25.67a.25.25 0 0 1-.231-.155l-.667-1.633a.25.25 0 0 1 .057-.273l1.66-1.631a1.75 1.75 0 0 0 .024-2.475l-1.4-1.427a1.753 1.753 0 0 0-2.476-.024l-1.665 1.635a.25.25 0 0 1-.273.053l-1.796-.754a.25.25 0 0 1-.154-.23V4A1.75 1.75 0 0 0 17 2.25h-2A1.75 1.75 0 0 0 13.25 4v2.331a.25.25 0 0 1-.155.232l-1.714.71a.25.25 0 0 1-.273-.054L9.459 5.571a1.75 1.75 0 0 0-2.475 0L5.57 6.985a1.75 1.75 0 0 0 0 2.474l1.65 1.649a.25.25 0 0 1 .054.272l-.712 1.716a.25.25 0 0 1-.23.154H4A1.75 1.75 0 0 0 2.25 15v2A1.75 1.75 0 0 0 4 18.75h2.332a.25.25 0 0 1 .23.155l.71 1.713a.25.25 0 0 1-.053.274L5.57 22.54a1.75 1.75 0 0 0 0 2.476l1.415 1.414a1.75 1.75 0 0 0 2.476 0l1.648-1.65a.25.25 0 0 1 .272-.054l1.716.712a.25.25 0 0 1 .153.23V28A1.75 1.75 0 0 0 15 29.75h2A1.75 1.75 0 0 0 18.75 28v-2.332a.25.25 0 0 1 .156-.231l1.715-.71a.25.25 0 0 1 .272.054l1.649 1.649a1.753 1.753 0 0 0 2.474 0l1.416-1.415a1.753 1.753 0 0 0-.002-2.475l-1.648-1.648a.25.25 0 0 1-.055-.273l.712-1.715a.25.25 0 0 1 .23-.154H28A1.75 1.75 0 0 0 29.75 17v-2A1.75 1.75 0 0 0 28 13.25m.25 3.75a.25.25 0 0 1-.25.25h-2.331a1.74 1.74 0 0 0-1.617 1.08l-.712 1.716a1.75 1.75 0 0 0 .38 1.907L25.37 23.6a.25.25 0 0 1 0 .355l-1.414 1.414a.25.25 0 0 1-.273.054.3.3 0 0 1-.08-.054l-1.65-1.65a1.74 1.74 0 0 0-1.907-.379l-1.713.71a1.74 1.74 0 0 0-1.082 1.617V28a.25.25 0 0 1-.25.25h-2a.25.25 0 0 1-.25-.25v-2.332a1.74 1.74 0 0 0-1.08-1.616l-1.716-.712a1.74 1.74 0 0 0-1.907.38L8.4 25.37a.25.25 0 0 1-.355 0L6.63 23.955a.25.25 0 0 1 0-.354l1.65-1.648a1.745 1.745 0 0 0 .379-1.908l-.71-1.714a1.74 1.74 0 0 0-1.617-1.08H4a.25.25 0 0 1-.25-.25v-2a.25.25 0 0 1 .25-.25h2.332a1.74 1.74 0 0 0 1.616-1.082l.712-1.715a1.75 1.75 0 0 0-.38-1.907L6.63 8.4a.25.25 0 0 1 0-.354l1.414-1.414a.25.25 0 0 1 .355 0l1.648 1.649a1.74 1.74 0 0 0 1.908.379l1.713-.71A1.74 1.74 0 0 0 14.75 6.33v-2.33a.25.25 0 0 1 .25-.25h2a.25.25 0 0 1 .25.25v2.334a1.75 1.75 0 0 0 1.073 1.614l1.796.754a1.75 1.75 0 0 0 1.903-.364h.001l1.666-1.636a.255.255 0 0 1 .355.003l1.4 1.428a.25.25 0 0 1-.004.354l-1.66 1.63a1.745 1.745 0 0 0-.396 1.91l.668 1.636a1.74 1.74 0 0 0 1.62 1.086H28a.25.25 0 0 1 .25.25z%22%2F%3E%3C%2Fsvg%3E\")}.arrow-right-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\")}.check-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 2.25A13.75 13.75 0 1 0 29.75 16 13.765 13.765 0 0 0 16 2.25m0 26A12.25 12.25 0 1 1 28.25 16 12.264 12.264 0 0 1 16 28.25M20.512 12.43l-6.472 5.547-2.509-2.521a.75.75 0 0 0-1.062 1.058l3 3.015a.75.75 0 0 0 1.02.04l7-6a.75.75 0 1 0-.977-1.139%22%2F%3E%3C%2Fsvg%3E\")}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.warning-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M29.379 23.624 18.382 4.625a2.75 2.75 0 0 0-4.764 0l-11 19A2.75 2.75 0 0 0 5 27.75h21.997a2.75 2.75 0 0 0 2.382-4.126m-1.3 2.001a1.24 1.24 0 0 1-1.082.625H5a1.25 1.25 0 0 1-1.082-1.874l10.999-19A1.25 1.25 0 0 1 16 4.75a1.25 1.25 0 0 1 1.083.626l10.997 19a1.24 1.24 0 0 1 0 1.25M16 23.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16 19.75a.75.75 0 0 0 .75-.75v-7a.75.75 0 1 0-1.5 0v7a.75.75 0 0 0 .75.75%22%2F%3E%3C%2Fsvg%3E\")}.plus-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M26 15.25h-9.25V6a.75.75 0 1 0-1.5 0v9.25H6a.75.75 0 1 0 0 1.5h9.25V26a.75.75 0 1 0 1.5 0v-9.25H26a.75.75 0 1 0 0-1.5%22%2F%3E%3C%2Fsvg%3E\")}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem}.rem1-25{height:1.25rem;width:1.25rem}\n"], dependencies: [{ kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i10.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i11.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i12.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i13.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i14.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i15.AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: i16.DeviceInfoComponent, selector: "app-device-info", inputs: ["device", "firstName", "lastName", "active", "email", "position"], outputs: ["onclickBack"] }, { kind: "pipe", type: i17.MacAddressPipe, name: "macAddress" }] });
149
+ DeviceManageWidgetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceManageWidgetComponent, deps: [{ token: i1.UserService }, { token: i2.DeviceService }, { token: i3.APIService }, { token: i4.LineService }, { token: i5.SiteSettingsService }, { token: i6.ValidationService }, { token: i7.MatDialog }, { token: i8.DnsService }], target: i0.ɵɵFactoryTarget.Component });
150
+ DeviceManageWidgetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceManageWidgetComponent, selector: "app-device-manage-widget", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", isLdap: "isLdap", deviceName: "deviceName" }, outputs: { onSave: "onSave", onChange: "onChange", discardChanges: "discardChanges", goBack: "goBack" }, viewQueries: [{ propertyName: "tagInput", first: true, predicate: ["tagInput"], descendants: true }], ngImport: i0, template: "\r\n\r\n<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!dataPending\">\r\n <!-- <div class=\"go-back-box\" (click)=\"onGoBack()\"> -->\r\n <div class=\"go-back-box\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Devices</span>\r\n </div>\r\n </div>\r\n\r\n <app-device-info \r\n [device]=\"device\" \r\n [firstName]=\"firstName\" \r\n [lastName]=\"lastName\"\r\n (onclickBack)=\"onGoBack()\"\r\n >\r\n \r\n </app-device-info>\r\n <div class=\"device-info\">\r\n\r\n <div class=\"device-info-part\">\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('maxLineCount')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Lines</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ (form?.get('macAddress')?.value | macAddress) || 'N/A' }}</span>\r\n <span class=\"extra-info\">MAC address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('ipAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Host IP address</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('remoteIpAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">Cisco</span>\r\n <span class=\"extra-info\">Managed By</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Software</span>\r\n <div class=\"icon-bordered-wrapper\">\r\n <i class=\"icon configure-icon rem1\"></i>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareVersion')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software Channel</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareChannel')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software version</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Tags</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div class=\"tags-list-container\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tag-label\">\r\n <span class=\"tag-desccription\">{{ tag }}</span>\r\n <i class=\"icon close-icon\" (click)=\"removeTag(i)\" style=\"width: 0.75rem; height: 0.75rem; flex: 0 0 auto;\"></i>\r\n </div>\r\n </div>\r\n <div class=\"tags-list-container\">\r\n <button class=\"tag-label add-tag\" (click)=\"showInput()\">\r\n <span class=\"icon plus-icon\" style=\"width: 0.75rem; height: 0.75rem;\"></span>\r\n <span>Add tag</span>\r\n </button>\r\n <input \r\n #tagInput\r\n id=\"enter-tag-input\" \r\n *ngIf=\"isAdding\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onBlur()\"\r\n type=\"text\"\r\n class=\"add-tag-input\" \r\n placeholder=\"Enter tag...\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n\r\n <div class=\"device-info-part\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Issues & Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"description\">\r\n <i class=\"icon check-icon rem1\" style=\"filter: invert(26%) sepia(27%) saturate(1093%) hue-rotate(114deg) brightness(93%) contrast(90%);\"></i>\r\n <span class=\"text-description\">No reported issues at this time</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Hoteling</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <span class=\"text-description\">Allow this device to be used as a Hoteling Host by visiting guests.</span>\r\n <div class=\"toggle-wrapper\">\r\n <mat-slide-toggle class=\"custom-toggle\" name=\"logMissedCalls\" [formControl]=\"hotelingEnabled\"></mat-slide-toggle>\r\n <i class=\"icon info-icon rem1\" \r\n style=\"filter: invert(20%) sepia(99%) saturate(2065%) hue-rotate(197deg) brightness(92%) contrast(101%);\"\r\n [matTooltip]=\"'Enabling this device for Hoteling means that a guest (end user) can log into this host (workspace phone) and use this phone as if it were their own. This is useful when traveling to a remote office but still needing to place/receive calls with their telephone number and to access features normally available to them on their own office phone.'\"\r\n ></i>\r\n </div>\r\n <span class=\"text-description\">Limit the time a guest can use this phone to</span>\r\n <mat-select [formControl]=\"guestHoursLimit\">\r\n <mat-option *ngFor=\"let type of HOTELING_TIME_HOURS\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Management</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <p class=\"text-description\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <div class=\"flex-column\">\r\n <span class=\"text-description\">To add and remove users and workspaces, select <b>Configure Lines.</b></span>\r\n <span class=\"text-description\">To customize the programmable Line Keys, select <b>Configure Layout.</b></span>\r\n <span class=\"text-description\">To set up the display settings and dialing options, select <b>Device Settings</b>.</span>\r\n </div>\r\n <table style=\"border-collapse:collapse;\">\r\n <thead>\r\n <tr style=\"background:#ededed;\">\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Index #</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Name</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Number/Extension</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Appearances</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"device?.lines && device?.lines.length\">\r\n <tr style=\"background:#fff; cursor:pointer;\" onmouseover=\"this.style.background='#fafafa'\" onmouseout=\"this.style.background='#fff'\"\r\n \r\n *ngFor=\"let line of device.lines; let i = index\">\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\"></span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">{{line?.name}}</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <div style=\"width: 120px;\"\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onNumberChange($event, i)\">\r\n {{ line?.number || 'NA' }}\r\n </div> \r\n <span> &nbsp;/&nbsp; </span>\r\n <!-- <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onExtensionChange($event, i)\">\r\n {{ line?.extension }}\r\n </span> -->\r\n <app-device-associated-line-extension\r\n [control]=\"linesControls.at(i)\"\r\n [routePartition]=\"line.routePartitionName\"\r\n [directoryNumber]=\"line.directoryNumber\"\r\n [siteId]=\"siteId\"\r\n (onChange)=\"onExtensionChange($event, i)\">\r\n </app-device-associated-line-extension>\r\n </div>\r\n \r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">1</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <i class=\"icon warning-icon rem1\" [matTooltip]=\"'Unregistered'\"></i>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </tbody>\r\n </table>\r\n <div class=\"totals\">\r\n <span class=\"text-description\">15 of 16 total lines available</span>\r\n </div>\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Lines</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Layout</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Device Settings</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Support</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Meetings & Calls</span>\r\n <span class=\"label new\">New</span>\r\n <i class=\"icon info-icon rem1\"\r\n [matTooltip]=\"'Troubleshooting provides details about the device related to status, network activity, and call information.'\"\r\n ></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Go to troubleshooting</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Device Logs</span>\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Generate device logs and download them to your computer.'\"></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.spinner-container{width:100%;display:flex;justify-content:center;align-items:center}.spinner-container ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#000}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#636363;font-size:14px}.webex-table tr:hover td{background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host :ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px;max-width:175px;margin-left:2.75rem;border:2px solid gray;padding:.25rem .75rem;border-radius:8px}:host ::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}:host ::ng-deep .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:#bfe3ff;color:#000}:host ::ng-deep .mat-select-panel .mat-option:not(.search-input):hover{background:#daedfc}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-tab-group{font-family:Inter,sans-serif}:host ::ng-deep .mat-tab-label{font-weight:500!important;font-size:16px!important;height:auto!important;min-width:auto!important;padding:0!important;opacity:1!important;color:#000!important}:host ::ng-deep .mat-ink-bar{background-color:#000!important;height:3px!important}:host ::ng-deep .mat-tab-labels{gap:30px}:host ::ng-deep .mat-progress-spinner{position:absolute!important;top:40%;left:45%}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.app-icon{transition:all .15s ease-out}.icon-webex-right-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-right%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M14.0812 9.66902L6.58119 2.16902C6.53813 2.12351 6.48638 2.0871 6.429 2.06193C6.37162 2.03677 6.30978 2.02336 6.24713 2.0225C6.18448 2.02165 6.1223 2.03336 6.06425 2.05695C6.00621 2.08053 5.95348 2.11552 5.90919 2.15983C5.8649 2.20415 5.82994 2.25689 5.80638 2.31495C5.78282 2.373 5.77113 2.43519 5.77202 2.49784C5.77291 2.56049 5.78634 2.62232 5.81153 2.67969C5.83673 2.73705 5.87316 2.78879 5.91869 2.83183L13.0874 10.0003L5.91869 17.169C5.87316 17.2121 5.83673 17.2638 5.81153 17.3212C5.78634 17.3785 5.77291 17.4404 5.77202 17.503C5.77113 17.5657 5.78282 17.6279 5.80638 17.6859C5.82994 17.744 5.8649 17.7967 5.90919 17.841C5.95348 17.8853 6.00621 17.9203 6.06425 17.9439C6.1223 17.9675 6.18448 17.9792 6.24713 17.9783C6.30978 17.9775 6.37162 17.9641 6.429 17.9389C6.48638 17.9138 6.53813 17.8773 6.58119 17.8318L14.0812 10.3318C14.1691 10.2439 14.2184 10.1247 14.2184 10.0004C14.2184 9.87613 14.1691 9.75692 14.0812 9.66902Z%22 fill%3D%22%230F0F0F%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.device-info{display:flex;gap:1rem;padding:1.5rem}.device-info .device-info-part{display:flex;flex-direction:column;gap:1rem;flex:1;min-width:0}.device-info .device-info-part .card{display:flex;flex-direction:column;padding:1rem 1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0}.device-info .device-info-part .card .header{display:flex;align-items:center;justify-content:space-between}.device-info .device-info-part .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif}.device-info .device-info-part .card .main-content{display:flex;flex-direction:column;min-width:0}.device-info .device-info-part .card .main-content .detail-row{display:flex;flex:1;padding:1rem 0;min-width:0}.device-info .device-info-part .card .main-content .detail-row .side{display:flex;flex-direction:column;flex:1}.device-info .device-info-part .card .main-content .detail-row .side .main-value{font-weight:500;font-size:.875rem}.device-info .device-info-part .card .main-content .detail-row .side .extra-info{font-weight:350;font-size:.75rem}.device-info .device-info-part .card .main-content .detail-row .description{display:flex;gap:.5rem;align-items:center}.device-info .device-info-part .card .main-content .detail-row .toggle-wrapper{display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.device-info .device-info-part .card .main-content .detail-row .configure-lines{display:flex;flex-direction:column}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line{display:flex;align-items:center;justify-content:space-between;flex:1;padding:.5rem 0}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div{gap:.5rem;display:flex;align-items:center}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label{display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid transparent;border-radius:.25rem;line-height:1;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label.new{font-size:.75rem;border-color:#30c9b0;background-color:#e9f7f3;color:#12615a}.device-info .device-info-part .card .main-content .tags-list-container{display:flex;gap:.5rem;flex-wrap:wrap;min-width:0}.device-info .device-info-part .card .main-content .tags-list-container .tag-label{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;gap:.5rem;height:40px;font-size:smaller;max-width:100%;min-width:0;overflow:hidden}.device-info .device-info-part .card .main-content .tags-list-container .tag-label .tag-desccription{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;height:40px;font-size:smaller;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important;margin-left:-99px}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input:focus-visible{outline:none}.device-info .device-info-part .card .main-content .add-tag{background-color:#fff!important}.device-info .device-info-part .card .main-content .add-tag:hover{color:#0353a8!important}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon-bordered-wrapper{display:flex;inline-size:1.5rem;border-radius:50rem;border:1px solid rgba(0,0,0,.5019607843);width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer}.configure-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 10.25A5.75 5.75 0 1 0 21.75 16 5.756 5.756 0 0 0 16 10.25m0 10a4.25 4.25 0 1 1 0-8.5 4.25 4.25 0 0 1 0 8.5M28 13.25H25.67a.25.25 0 0 1-.231-.155l-.667-1.633a.25.25 0 0 1 .057-.273l1.66-1.631a1.75 1.75 0 0 0 .024-2.475l-1.4-1.427a1.753 1.753 0 0 0-2.476-.024l-1.665 1.635a.25.25 0 0 1-.273.053l-1.796-.754a.25.25 0 0 1-.154-.23V4A1.75 1.75 0 0 0 17 2.25h-2A1.75 1.75 0 0 0 13.25 4v2.331a.25.25 0 0 1-.155.232l-1.714.71a.25.25 0 0 1-.273-.054L9.459 5.571a1.75 1.75 0 0 0-2.475 0L5.57 6.985a1.75 1.75 0 0 0 0 2.474l1.65 1.649a.25.25 0 0 1 .054.272l-.712 1.716a.25.25 0 0 1-.23.154H4A1.75 1.75 0 0 0 2.25 15v2A1.75 1.75 0 0 0 4 18.75h2.332a.25.25 0 0 1 .23.155l.71 1.713a.25.25 0 0 1-.053.274L5.57 22.54a1.75 1.75 0 0 0 0 2.476l1.415 1.414a1.75 1.75 0 0 0 2.476 0l1.648-1.65a.25.25 0 0 1 .272-.054l1.716.712a.25.25 0 0 1 .153.23V28A1.75 1.75 0 0 0 15 29.75h2A1.75 1.75 0 0 0 18.75 28v-2.332a.25.25 0 0 1 .156-.231l1.715-.71a.25.25 0 0 1 .272.054l1.649 1.649a1.753 1.753 0 0 0 2.474 0l1.416-1.415a1.753 1.753 0 0 0-.002-2.475l-1.648-1.648a.25.25 0 0 1-.055-.273l.712-1.715a.25.25 0 0 1 .23-.154H28A1.75 1.75 0 0 0 29.75 17v-2A1.75 1.75 0 0 0 28 13.25m.25 3.75a.25.25 0 0 1-.25.25h-2.331a1.74 1.74 0 0 0-1.617 1.08l-.712 1.716a1.75 1.75 0 0 0 .38 1.907L25.37 23.6a.25.25 0 0 1 0 .355l-1.414 1.414a.25.25 0 0 1-.273.054.3.3 0 0 1-.08-.054l-1.65-1.65a1.74 1.74 0 0 0-1.907-.379l-1.713.71a1.74 1.74 0 0 0-1.082 1.617V28a.25.25 0 0 1-.25.25h-2a.25.25 0 0 1-.25-.25v-2.332a1.74 1.74 0 0 0-1.08-1.616l-1.716-.712a1.74 1.74 0 0 0-1.907.38L8.4 25.37a.25.25 0 0 1-.355 0L6.63 23.955a.25.25 0 0 1 0-.354l1.65-1.648a1.745 1.745 0 0 0 .379-1.908l-.71-1.714a1.74 1.74 0 0 0-1.617-1.08H4a.25.25 0 0 1-.25-.25v-2a.25.25 0 0 1 .25-.25h2.332a1.74 1.74 0 0 0 1.616-1.082l.712-1.715a1.75 1.75 0 0 0-.38-1.907L6.63 8.4a.25.25 0 0 1 0-.354l1.414-1.414a.25.25 0 0 1 .355 0l1.648 1.649a1.74 1.74 0 0 0 1.908.379l1.713-.71A1.74 1.74 0 0 0 14.75 6.33v-2.33a.25.25 0 0 1 .25-.25h2a.25.25 0 0 1 .25.25v2.334a1.75 1.75 0 0 0 1.073 1.614l1.796.754a1.75 1.75 0 0 0 1.903-.364h.001l1.666-1.636a.255.255 0 0 1 .355.003l1.4 1.428a.25.25 0 0 1-.004.354l-1.66 1.63a1.745 1.745 0 0 0-.396 1.91l.668 1.636a1.74 1.74 0 0 0 1.62 1.086H28a.25.25 0 0 1 .25.25z%22%2F%3E%3C%2Fsvg%3E\")}.arrow-right-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\")}.check-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 2.25A13.75 13.75 0 1 0 29.75 16 13.765 13.765 0 0 0 16 2.25m0 26A12.25 12.25 0 1 1 28.25 16 12.264 12.264 0 0 1 16 28.25M20.512 12.43l-6.472 5.547-2.509-2.521a.75.75 0 0 0-1.062 1.058l3 3.015a.75.75 0 0 0 1.02.04l7-6a.75.75 0 1 0-.977-1.139%22%2F%3E%3C%2Fsvg%3E\")}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.warning-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M29.379 23.624 18.382 4.625a2.75 2.75 0 0 0-4.764 0l-11 19A2.75 2.75 0 0 0 5 27.75h21.997a2.75 2.75 0 0 0 2.382-4.126m-1.3 2.001a1.24 1.24 0 0 1-1.082.625H5a1.25 1.25 0 0 1-1.082-1.874l10.999-19A1.25 1.25 0 0 1 16 4.75a1.25 1.25 0 0 1 1.083.626l10.997 19a1.24 1.24 0 0 1 0 1.25M16 23.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16 19.75a.75.75 0 0 0 .75-.75v-7a.75.75 0 1 0-1.5 0v7a.75.75 0 0 0 .75.75%22%2F%3E%3C%2Fsvg%3E\")}.plus-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M26 15.25h-9.25V6a.75.75 0 1 0-1.5 0v9.25H6a.75.75 0 1 0 0 1.5h9.25V26a.75.75 0 1 0 1.5 0v-9.25H26a.75.75 0 1 0 0-1.5%22%2F%3E%3C%2Fsvg%3E\")}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem}.rem1-25{height:1.25rem;width:1.25rem}\n"], dependencies: [{ kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i11.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i12.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i13.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i14.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i15.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i16.AppLoaderComponent, selector: "app-loader" }, { kind: "component", type: i17.DeviceAssociatedLineExtensionComponent, selector: "app-device-associated-line-extension", inputs: ["control", "routePartition", "directoryNumber", "siteId"], outputs: ["onChange"] }, { kind: "component", type: i18.DeviceInfoComponent, selector: "app-device-info", inputs: ["device", "firstName", "lastName", "active", "email", "position"], outputs: ["onclickBack"] }, { kind: "pipe", type: i19.MacAddressPipe, name: "macAddress" }] });
141
151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceManageWidgetComponent, decorators: [{
142
152
  type: Component,
143
- args: [{ selector: 'app-device-manage-widget', template: "\r\n\r\n<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!dataPending\">\r\n <!-- <div class=\"go-back-box\" (click)=\"onGoBack()\"> -->\r\n <div class=\"go-back-box\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Devices</span>\r\n </div>\r\n </div>\r\n\r\n <app-device-info \r\n [device]=\"device\" \r\n [firstName]=\"firstName\" \r\n [lastName]=\"lastName\"\r\n (onclickBack)=\"onGoBack()\"\r\n >\r\n \r\n </app-device-info>\r\n <div class=\"device-info\">\r\n\r\n <div class=\"device-info-part\">\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('maxLineCount')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Lines</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ (form?.get('macAddress')?.value | macAddress) || 'N/A' }}</span>\r\n <span class=\"extra-info\">MAC address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('ipAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Host IP address</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('remoteIpAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">Cisco</span>\r\n <span class=\"extra-info\">Managed By</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Software</span>\r\n <div class=\"icon-bordered-wrapper\">\r\n <i class=\"icon configure-icon rem1\"></i>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareVersion')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software Channel</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareChannel')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software version</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Tags</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div class=\"tags-list-container\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tag-label\">\r\n <span class=\"tag-desccription\">{{ tag }}</span>\r\n <i class=\"icon close-icon\" (click)=\"removeTag(i)\" style=\"width: 0.75rem; height: 0.75rem; flex: 0 0 auto;\"></i>\r\n </div>\r\n </div>\r\n <div class=\"tags-list-container\">\r\n <button class=\"tag-label add-tag\" (click)=\"showInput()\">\r\n <span class=\"icon plus-icon\" style=\"width: 0.75rem; height: 0.75rem;\"></span>\r\n <span>Add tag</span>\r\n </button>\r\n <input \r\n #tagInput\r\n id=\"enter-tag-input\" \r\n *ngIf=\"isAdding\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onBlur()\"\r\n type=\"text\"\r\n class=\"add-tag-input\" \r\n placeholder=\"Enter tag...\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n\r\n <div class=\"device-info-part\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Issues & Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"description\">\r\n <i class=\"icon check-icon rem1\" style=\"filter: invert(26%) sepia(27%) saturate(1093%) hue-rotate(114deg) brightness(93%) contrast(90%);\"></i>\r\n <span class=\"text-description\">No reported issues at this time</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Hoteling</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <span class=\"text-description\">Allow this device to be used as a Hoteling Host by visiting guests.</span>\r\n <div class=\"toggle-wrapper\">\r\n <mat-slide-toggle class=\"custom-toggle\" name=\"logMissedCalls\" [formControl]=\"hotelingEnabled\"></mat-slide-toggle>\r\n <i class=\"icon info-icon rem1\" \r\n style=\"filter: invert(20%) sepia(99%) saturate(2065%) hue-rotate(197deg) brightness(92%) contrast(101%);\"\r\n [matTooltip]=\"'Enabling this device for Hoteling means that a guest (end user) can log into this host (workspace phone) and use this phone as if it were their own. This is useful when traveling to a remote office but still needing to place/receive calls with their telephone number and to access features normally available to them on their own office phone.'\"\r\n ></i>\r\n </div>\r\n <span class=\"text-description\">Limit the time a guest can use this phone to</span>\r\n <mat-select [formControl]=\"guestHoursLimit\">\r\n <mat-option *ngFor=\"let type of HOTELING_TIME_HOURS\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Management</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <p class=\"text-description\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <div class=\"flex-column\">\r\n <span class=\"text-description\">To add and remove users and workspaces, select <b>Configure Lines.</b></span>\r\n <span class=\"text-description\">To customize the programmable Line Keys, select <b>Configure Layout.</b></span>\r\n <span class=\"text-description\">To set up the display settings and dialing options, select <b>Device Settings</b>.</span>\r\n </div>\r\n <table style=\"border-collapse:collapse;\">\r\n <thead>\r\n <tr style=\"background:#ededed;\">\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Index #</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Name</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Number/Extension</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Appearances</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"device?.lines && device?.lines.length\">\r\n <tr style=\"background:#fff; cursor:pointer;\" onmouseover=\"this.style.background='#fafafa'\" onmouseout=\"this.style.background='#fff'\"\r\n \r\n *ngFor=\"let line of device.lines; let i = index\">\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\"></span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">{{line?.name}}</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onNumberChange($event, i)\">\r\n {{ line?.number || 'NA' }}\r\n </span> /\r\n <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onExtensionChange($event, i)\">\r\n {{ line?.extension }}\r\n </span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">1</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <i class=\"icon warning-icon rem1\" [matTooltip]=\"'Unregistered'\"></i>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </tbody>\r\n </table>\r\n <div class=\"totals\">\r\n <span class=\"text-description\">15 of 16 total lines available</span>\r\n </div>\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Lines</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Layout</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Device Settings</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Support</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Meetings & Calls</span>\r\n <span class=\"label new\">New</span>\r\n <i class=\"icon info-icon rem1\"\r\n [matTooltip]=\"'Troubleshooting provides details about the device related to status, network activity, and call information.'\"\r\n ></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Go to troubleshooting</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Device Logs</span>\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Generate device logs and download them to your computer.'\"></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.spinner-container{width:100%;display:flex;justify-content:center;align-items:center}.spinner-container ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#000}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#636363;font-size:14px}.webex-table tr:hover td{background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host :ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px;max-width:175px;margin-left:2.75rem;border:2px solid gray;padding:.25rem .75rem;border-radius:8px}:host ::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}:host ::ng-deep .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:#bfe3ff;color:#000}:host ::ng-deep .mat-select-panel .mat-option:not(.search-input):hover{background:#daedfc}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-tab-group{font-family:Inter,sans-serif}:host ::ng-deep .mat-tab-label{font-weight:500!important;font-size:16px!important;height:auto!important;min-width:auto!important;padding:0!important;opacity:1!important;color:#000!important}:host ::ng-deep .mat-ink-bar{background-color:#000!important;height:3px!important}:host ::ng-deep .mat-tab-labels{gap:30px}:host ::ng-deep .mat-progress-spinner{position:absolute!important;top:40%;left:45%}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.app-icon{transition:all .15s ease-out}.icon-webex-right-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-right%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M14.0812 9.66902L6.58119 2.16902C6.53813 2.12351 6.48638 2.0871 6.429 2.06193C6.37162 2.03677 6.30978 2.02336 6.24713 2.0225C6.18448 2.02165 6.1223 2.03336 6.06425 2.05695C6.00621 2.08053 5.95348 2.11552 5.90919 2.15983C5.8649 2.20415 5.82994 2.25689 5.80638 2.31495C5.78282 2.373 5.77113 2.43519 5.77202 2.49784C5.77291 2.56049 5.78634 2.62232 5.81153 2.67969C5.83673 2.73705 5.87316 2.78879 5.91869 2.83183L13.0874 10.0003L5.91869 17.169C5.87316 17.2121 5.83673 17.2638 5.81153 17.3212C5.78634 17.3785 5.77291 17.4404 5.77202 17.503C5.77113 17.5657 5.78282 17.6279 5.80638 17.6859C5.82994 17.744 5.8649 17.7967 5.90919 17.841C5.95348 17.8853 6.00621 17.9203 6.06425 17.9439C6.1223 17.9675 6.18448 17.9792 6.24713 17.9783C6.30978 17.9775 6.37162 17.9641 6.429 17.9389C6.48638 17.9138 6.53813 17.8773 6.58119 17.8318L14.0812 10.3318C14.1691 10.2439 14.2184 10.1247 14.2184 10.0004C14.2184 9.87613 14.1691 9.75692 14.0812 9.66902Z%22 fill%3D%22%230F0F0F%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.device-info{display:flex;gap:1rem;padding:1.5rem}.device-info .device-info-part{display:flex;flex-direction:column;gap:1rem;flex:1;min-width:0}.device-info .device-info-part .card{display:flex;flex-direction:column;padding:1rem 1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0}.device-info .device-info-part .card .header{display:flex;align-items:center;justify-content:space-between}.device-info .device-info-part .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif}.device-info .device-info-part .card .main-content{display:flex;flex-direction:column;min-width:0}.device-info .device-info-part .card .main-content .detail-row{display:flex;flex:1;padding:1rem 0;min-width:0}.device-info .device-info-part .card .main-content .detail-row .side{display:flex;flex-direction:column;flex:1}.device-info .device-info-part .card .main-content .detail-row .side .main-value{font-weight:500;font-size:.875rem}.device-info .device-info-part .card .main-content .detail-row .side .extra-info{font-weight:350;font-size:.75rem}.device-info .device-info-part .card .main-content .detail-row .description{display:flex;gap:.5rem;align-items:center}.device-info .device-info-part .card .main-content .detail-row .toggle-wrapper{display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.device-info .device-info-part .card .main-content .detail-row .configure-lines{display:flex;flex-direction:column}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line{display:flex;align-items:center;justify-content:space-between;flex:1;padding:.5rem 0}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div{gap:.5rem;display:flex;align-items:center}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label{display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid transparent;border-radius:.25rem;line-height:1;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label.new{font-size:.75rem;border-color:#30c9b0;background-color:#e9f7f3;color:#12615a}.device-info .device-info-part .card .main-content .tags-list-container{display:flex;gap:.5rem;flex-wrap:wrap;min-width:0}.device-info .device-info-part .card .main-content .tags-list-container .tag-label{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;gap:.5rem;height:40px;font-size:smaller;max-width:100%;min-width:0;overflow:hidden}.device-info .device-info-part .card .main-content .tags-list-container .tag-label .tag-desccription{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;height:40px;font-size:smaller;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important;margin-left:-99px}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input:focus-visible{outline:none}.device-info .device-info-part .card .main-content .add-tag{background-color:#fff!important}.device-info .device-info-part .card .main-content .add-tag:hover{color:#0353a8!important}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon-bordered-wrapper{display:flex;inline-size:1.5rem;border-radius:50rem;border:1px solid rgba(0,0,0,.5019607843);width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer}.configure-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 10.25A5.75 5.75 0 1 0 21.75 16 5.756 5.756 0 0 0 16 10.25m0 10a4.25 4.25 0 1 1 0-8.5 4.25 4.25 0 0 1 0 8.5M28 13.25H25.67a.25.25 0 0 1-.231-.155l-.667-1.633a.25.25 0 0 1 .057-.273l1.66-1.631a1.75 1.75 0 0 0 .024-2.475l-1.4-1.427a1.753 1.753 0 0 0-2.476-.024l-1.665 1.635a.25.25 0 0 1-.273.053l-1.796-.754a.25.25 0 0 1-.154-.23V4A1.75 1.75 0 0 0 17 2.25h-2A1.75 1.75 0 0 0 13.25 4v2.331a.25.25 0 0 1-.155.232l-1.714.71a.25.25 0 0 1-.273-.054L9.459 5.571a1.75 1.75 0 0 0-2.475 0L5.57 6.985a1.75 1.75 0 0 0 0 2.474l1.65 1.649a.25.25 0 0 1 .054.272l-.712 1.716a.25.25 0 0 1-.23.154H4A1.75 1.75 0 0 0 2.25 15v2A1.75 1.75 0 0 0 4 18.75h2.332a.25.25 0 0 1 .23.155l.71 1.713a.25.25 0 0 1-.053.274L5.57 22.54a1.75 1.75 0 0 0 0 2.476l1.415 1.414a1.75 1.75 0 0 0 2.476 0l1.648-1.65a.25.25 0 0 1 .272-.054l1.716.712a.25.25 0 0 1 .153.23V28A1.75 1.75 0 0 0 15 29.75h2A1.75 1.75 0 0 0 18.75 28v-2.332a.25.25 0 0 1 .156-.231l1.715-.71a.25.25 0 0 1 .272.054l1.649 1.649a1.753 1.753 0 0 0 2.474 0l1.416-1.415a1.753 1.753 0 0 0-.002-2.475l-1.648-1.648a.25.25 0 0 1-.055-.273l.712-1.715a.25.25 0 0 1 .23-.154H28A1.75 1.75 0 0 0 29.75 17v-2A1.75 1.75 0 0 0 28 13.25m.25 3.75a.25.25 0 0 1-.25.25h-2.331a1.74 1.74 0 0 0-1.617 1.08l-.712 1.716a1.75 1.75 0 0 0 .38 1.907L25.37 23.6a.25.25 0 0 1 0 .355l-1.414 1.414a.25.25 0 0 1-.273.054.3.3 0 0 1-.08-.054l-1.65-1.65a1.74 1.74 0 0 0-1.907-.379l-1.713.71a1.74 1.74 0 0 0-1.082 1.617V28a.25.25 0 0 1-.25.25h-2a.25.25 0 0 1-.25-.25v-2.332a1.74 1.74 0 0 0-1.08-1.616l-1.716-.712a1.74 1.74 0 0 0-1.907.38L8.4 25.37a.25.25 0 0 1-.355 0L6.63 23.955a.25.25 0 0 1 0-.354l1.65-1.648a1.745 1.745 0 0 0 .379-1.908l-.71-1.714a1.74 1.74 0 0 0-1.617-1.08H4a.25.25 0 0 1-.25-.25v-2a.25.25 0 0 1 .25-.25h2.332a1.74 1.74 0 0 0 1.616-1.082l.712-1.715a1.75 1.75 0 0 0-.38-1.907L6.63 8.4a.25.25 0 0 1 0-.354l1.414-1.414a.25.25 0 0 1 .355 0l1.648 1.649a1.74 1.74 0 0 0 1.908.379l1.713-.71A1.74 1.74 0 0 0 14.75 6.33v-2.33a.25.25 0 0 1 .25-.25h2a.25.25 0 0 1 .25.25v2.334a1.75 1.75 0 0 0 1.073 1.614l1.796.754a1.75 1.75 0 0 0 1.903-.364h.001l1.666-1.636a.255.255 0 0 1 .355.003l1.4 1.428a.25.25 0 0 1-.004.354l-1.66 1.63a1.745 1.745 0 0 0-.396 1.91l.668 1.636a1.74 1.74 0 0 0 1.62 1.086H28a.25.25 0 0 1 .25.25z%22%2F%3E%3C%2Fsvg%3E\")}.arrow-right-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\")}.check-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 2.25A13.75 13.75 0 1 0 29.75 16 13.765 13.765 0 0 0 16 2.25m0 26A12.25 12.25 0 1 1 28.25 16 12.264 12.264 0 0 1 16 28.25M20.512 12.43l-6.472 5.547-2.509-2.521a.75.75 0 0 0-1.062 1.058l3 3.015a.75.75 0 0 0 1.02.04l7-6a.75.75 0 1 0-.977-1.139%22%2F%3E%3C%2Fsvg%3E\")}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.warning-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M29.379 23.624 18.382 4.625a2.75 2.75 0 0 0-4.764 0l-11 19A2.75 2.75 0 0 0 5 27.75h21.997a2.75 2.75 0 0 0 2.382-4.126m-1.3 2.001a1.24 1.24 0 0 1-1.082.625H5a1.25 1.25 0 0 1-1.082-1.874l10.999-19A1.25 1.25 0 0 1 16 4.75a1.25 1.25 0 0 1 1.083.626l10.997 19a1.24 1.24 0 0 1 0 1.25M16 23.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16 19.75a.75.75 0 0 0 .75-.75v-7a.75.75 0 1 0-1.5 0v7a.75.75 0 0 0 .75.75%22%2F%3E%3C%2Fsvg%3E\")}.plus-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M26 15.25h-9.25V6a.75.75 0 1 0-1.5 0v9.25H6a.75.75 0 1 0 0 1.5h9.25V26a.75.75 0 1 0 1.5 0v-9.25H26a.75.75 0 1 0 0-1.5%22%2F%3E%3C%2Fsvg%3E\")}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem}.rem1-25{height:1.25rem;width:1.25rem}\n"] }]
144
- }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.DeviceService }, { type: i3.APIService }, { type: i4.LineService }, { type: i5.SiteSettingsService }, { type: i6.ValidationService }, { type: i7.MatDialog }]; }, propDecorators: { onSave: [{
153
+ args: [{ selector: 'app-device-manage-widget', template: "\r\n\r\n<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div *ngIf=\"!dataPending\">\r\n <!-- <div class=\"go-back-box\" (click)=\"onGoBack()\"> -->\r\n <div class=\"go-back-box\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Devices</span>\r\n </div>\r\n </div>\r\n\r\n <app-device-info \r\n [device]=\"device\" \r\n [firstName]=\"firstName\" \r\n [lastName]=\"lastName\"\r\n (onclickBack)=\"onGoBack()\"\r\n >\r\n \r\n </app-device-info>\r\n <div class=\"device-info\">\r\n\r\n <div class=\"device-info-part\">\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('maxLineCount')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Lines</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ (form?.get('macAddress')?.value | macAddress) || 'N/A' }}</span>\r\n <span class=\"extra-info\">MAC address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('ipAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Host IP address</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('remoteIpAddress')?.value || 'N/A' }}</span>\r\n <span class=\"extra-info\">Remote IP address</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">Cisco</span>\r\n <span class=\"extra-info\">Managed By</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Software</span>\r\n <div class=\"icon-bordered-wrapper\">\r\n <i class=\"icon configure-icon rem1\"></i>\r\n </div>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side left-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareVersion')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software Channel</span>\r\n </div>\r\n <div class=\"side right-part\">\r\n <span class=\"main-value\">{{ form?.get('softwareChannel')?.value || 'N/A'}}</span>\r\n <span class=\"extra-info\">Software version</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Tags</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\" style=\"flex-direction: column; gap: 1rem;\">\r\n <div class=\"tags-list-container\">\r\n <div *ngFor=\"let tag of tags; let i = index\" class=\"tag-label\">\r\n <span class=\"tag-desccription\">{{ tag }}</span>\r\n <i class=\"icon close-icon\" (click)=\"removeTag(i)\" style=\"width: 0.75rem; height: 0.75rem; flex: 0 0 auto;\"></i>\r\n </div>\r\n </div>\r\n <div class=\"tags-list-container\">\r\n <button class=\"tag-label add-tag\" (click)=\"showInput()\">\r\n <span class=\"icon plus-icon\" style=\"width: 0.75rem; height: 0.75rem;\"></span>\r\n <span>Add tag</span>\r\n </button>\r\n <input \r\n #tagInput\r\n id=\"enter-tag-input\" \r\n *ngIf=\"isAdding\"\r\n [(ngModel)]=\"newTag\"\r\n (blur)=\"onBlur()\"\r\n type=\"text\"\r\n class=\"add-tag-input\" \r\n placeholder=\"Enter tag...\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n </div>\r\n\r\n <div class=\"device-info-part\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Issues & Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"description\">\r\n <i class=\"icon check-icon rem1\" style=\"filter: invert(26%) sepia(27%) saturate(1093%) hue-rotate(114deg) brightness(93%) contrast(90%);\"></i>\r\n <span class=\"text-description\">No reported issues at this time</span>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Hoteling</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <span class=\"text-description\">Allow this device to be used as a Hoteling Host by visiting guests.</span>\r\n <div class=\"toggle-wrapper\">\r\n <mat-slide-toggle class=\"custom-toggle\" name=\"logMissedCalls\" [formControl]=\"hotelingEnabled\"></mat-slide-toggle>\r\n <i class=\"icon info-icon rem1\" \r\n style=\"filter: invert(20%) sepia(99%) saturate(2065%) hue-rotate(197deg) brightness(92%) contrast(101%);\"\r\n [matTooltip]=\"'Enabling this device for Hoteling means that a guest (end user) can log into this host (workspace phone) and use this phone as if it were their own. This is useful when traveling to a remote office but still needing to place/receive calls with their telephone number and to access features normally available to them on their own office phone.'\"\r\n ></i>\r\n </div>\r\n <span class=\"text-description\">Limit the time a guest can use this phone to</span>\r\n <mat-select [formControl]=\"guestHoursLimit\">\r\n <mat-option *ngFor=\"let type of HOTELING_TIME_HOURS\" [value]=\"type\">\r\n {{type}}\r\n </mat-option>\r\n </mat-select>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Management</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <p class=\"text-description\">The users and workspaces that appear on this device are displayed below in the order of appearance.</p>\r\n <div class=\"flex-column\">\r\n <span class=\"text-description\">To add and remove users and workspaces, select <b>Configure Lines.</b></span>\r\n <span class=\"text-description\">To customize the programmable Line Keys, select <b>Configure Layout.</b></span>\r\n <span class=\"text-description\">To set up the display settings and dialing options, select <b>Device Settings</b>.</span>\r\n </div>\r\n <table style=\"border-collapse:collapse;\">\r\n <thead>\r\n <tr style=\"background:#ededed;\">\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Index #</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Name</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Number/Extension</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Appearances</th>\r\n <th style=\"padding:10px 16px; font-size:.75rem; font-weight:400; color:#545454; text-align:left; border-bottom:1px solid #e8e8e8;\">Registered</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngIf=\"device?.lines && device?.lines.length\">\r\n <tr style=\"background:#fff; cursor:pointer;\" onmouseover=\"this.style.background='#fafafa'\" onmouseout=\"this.style.background='#fff'\"\r\n \r\n *ngFor=\"let line of device.lines; let i = index\">\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\"></span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">{{line?.name}}</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <div style=\"width: 120px;\"\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onNumberChange($event, i)\">\r\n {{ line?.number || 'NA' }}\r\n </div> \r\n <span> &nbsp;/&nbsp; </span>\r\n <!-- <span\r\n [attr.contenteditable]=\"!isWebex\"\r\n (blur)=\"onExtensionChange($event, i)\">\r\n {{ line?.extension }}\r\n </span> -->\r\n <app-device-associated-line-extension\r\n [control]=\"linesControls.at(i)\"\r\n [routePartition]=\"line.routePartitionName\"\r\n [directoryNumber]=\"line.directoryNumber\"\r\n [siteId]=\"siteId\"\r\n (onChange)=\"onExtensionChange($event, i)\">\r\n </app-device-associated-line-extension>\r\n </div>\r\n \r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <span style=\"display:inline-block; color:#000000f2; padding:4px 14px; font-size:.875rem; font-weight:400;\">1</span>\r\n </td>\r\n <td style=\"padding: .25rem 1.25rem .25rem .75rem;; border-bottom:1px solid #e8e8e8;\">\r\n <i class=\"icon warning-icon rem1\" [matTooltip]=\"'Unregistered'\"></i>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n \r\n </tbody>\r\n </table>\r\n <div class=\"totals\">\r\n <span class=\"text-description\">15 of 16 total lines available</span>\r\n </div>\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Lines</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Configure Layout</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <i class=\"icon configure-icon rem1-25\"></i>\r\n <span class=\"text-description\">Device Settings</span>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Support</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row flex-column gap-0_75\">\r\n <div class=\"configure-lines\">\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Meetings & Calls</span>\r\n <span class=\"label new\">New</span>\r\n <i class=\"icon info-icon rem1\"\r\n [matTooltip]=\"'Troubleshooting provides details about the device related to status, network activity, and call information.'\"\r\n ></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Go to troubleshooting</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"line\">\r\n <div>\r\n <span class=\"text-description\">Device Logs</span>\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Generate device logs and download them to your computer.'\"></i>\r\n </div>\r\n <div style=\"cursor: pointer\">\r\n <span class=\"text-description\" style=\"font-weight: 500;\">Manage</span>\r\n <i class=\"icon arrow-right-icon rem1-25\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n \r\n</div>", styles: ["@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";.fa:hover{color:#0d56aa!important}.mat-icon-button{background:transparent}.icon-webex-box{width:2rem;height:2rem;font-size:.7rem;line-height:1rem;display:inline-block;background:#d0d0d0;border-radius:2rem;line-height:40px;text-align:center}.icon-webex{filter:invert(12%) sepia(14%) saturate(4%) hue-rotate(354deg) brightness(103%) contrast(90%);background-repeat:no-repeat;background-position:center;display:inline-block;height:1rem;width:1rem}.icon-webex-user{background-image:url(\"data:image/svg+xml,%3C%3Fxml version%3D%221.0%22 encoding%3D%22UTF-8%22%3F%3E%3Csvg id%3D%22a%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 viewBox%3D%220 0 16.67 15.56%22%3E%3Cdefs%3E%3Cstyle%3E.b%7Bfill%3Anone%3Bstroke%3A%232c355d%3Bstroke-width%3A1.4px%3B%7D%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cpath class%3D%22b%22 d%3D%22M4.87%2C3.89c0-1.72%2C1.51-3.19%2C3.47-3.19s3.47%2C1.47%2C3.47%2C3.19-1.51%2C3.19-3.47%2C3.19-3.47-1.47-3.47-3.19ZM.7%2C12.64c0-.37%2C.19-.76%2C.67-1.17%2C.48-.41%2C1.17-.78%2C2-1.09%2C1.66-.62%2C3.66-.93%2C4.97-.93s3.31%2C.31%2C4.97%2C.93c.83%2C.31%2C1.52%2C.68%2C2%2C1.09%2C.47%2C.41%2C.67%2C.8%2C.67%2C1.17v2.22H.7v-2.22Z%22%2F%3E%3C%2Fsvg%3E\")}.icon-user-status{display:inline-block}*{margin:0}body{background:#f7f7f7}body,th,td{font-family:Poppins,Poppins,sans-serif;font-size:14px}th{color:#0000008a;text-align:left}td{box-sizing:border-box;padding:10px 5px 10px 0}.content-box{margin:auto;position:relative;width:95%}.content-box table{width:100%}.edit-icon-td{width:50px;position:relative}.edit-icon-td button{position:absolute;top:4px}.mat-progress-spinner circle,.mat-spinner circle{stroke:gray!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}.flex-box{display:flex;justify-content:flex-start}.spinner-container{width:100%;display:flex;justify-content:center;align-items:center}.spinner-container ::ng-deep .mat-progress-spinner circle,.mat-spinner circle{stroke:#000}.user-info-box{background:white;display:grid;grid-template-columns:30% 70%;border-radius:8px;border:rgba(0,0,0,.2) 1px solid;padding:24px;font-weight:400;font-size:14px}.user-info-box h3{display:block;font-weight:500;font-size:16px}.mat-divider{margin:5px 0!important}.info-boxes-container{padding:24px 0;display:flex;flex-direction:column;gap:24px}.header-box{height:60px;width:100%;line-height:60px;background:white;border-bottom:1px solid #dedddd}.header-box .header-back-block{float:left}.header-box .header-button-block{float:right}.webex-table{width:100%;margin:auto}.webex-table tr{border-bottom:1px solid #dedede}.webex-table th{background:#f7f7f7;color:#636363;font-size:12px}.webex-table td{background:#fff;color:#636363;font-size:14px}.webex-table tr:hover td{background:#ededed;cursor:pointer}.webex-table th.mat-header-cell,.webex-table td.mat-cell,.webex-table td.mat-footer-cell{border-bottom:1px solid #dedede}.webex-table tr.mat-header-row{height:37px}.mat-form-field{padding:0 0 5px;width:93%}.mat-form-field.mat-form-field-disabled{border-bottom:none}.mat-error{color:#c73636;margin:13px 0 0}.select-box{border-radius:30px;background:#F3F6F6;border:1px solid #E2E9EF;height:35px;position:relative}.select-box select{border:none!important;background:transparent;height:100%;width:92%;margin:auto;display:block}option:focus,option:focus-visible{border:none!important;outline:none!important}option{height:30px;cursor:pointer;color:#636363}option:hover{background:#ededed!important}.mat-select{height:100%!important}.info-holder,.input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__name,.input-holder__name{font-weight:500!important;font-size:14px!important}.info-holder__inputs .input-holder,.input-holder__inputs .input-holder{display:grid;grid-template-columns:30% 70%;align-items:baseline}.info-holder__inputs .input-holder__name,.input-holder__inputs .input-holder__name{font-weight:400!important;font-size:14px!important}table{border-collapse:collapse;border-spacing:0}.mat-form-field-appearance-outline .mat-form-field-infix{padding:0!important}.mat-divider{margin:12px 0}:host ::ng-deep .mat-form-field-wrapper{height:30px}:host ::ng-deep .mat-form-field-flex{height:30px}:host ::ng-deep .mat-form-field-appearance-outline .mat-form-field-outline{height:35px}:host :ng-deep .mat-form-field-outline .mat-form-field-outline-thick{height:35px}:host ::ng-deep .mat-select{line-height:20px;max-width:175px;margin-left:2.75rem;border:2px solid gray;padding:.25rem .75rem;border-radius:8px}:host ::ng-deep .mat-option{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important;line-height:48px!important;height:48px!important;padding:0 10px!important;text-align:left!important;text-decoration:none!important;position:relative!important;cursor:pointer!important;outline:none!important;display:flex!important;flex-direction:row!important;max-width:100%!important;box-sizing:border-box!important;align-items:center!important;-webkit-tap-highlight-color:rgba(0,0,0,0)!important}:host ::ng-deep .mat-select-panel .mat-option.mat-selected:not(.mat-option-multiple){background:#bfe3ff;color:#000}:host ::ng-deep .mat-select-panel .mat-option:not(.search-input):hover{background:#daedfc}:host ::ng-deep .mat-form-field-infix{border-top:0px!important}:host ::ng-deep .mat-tab-group{font-family:Inter,sans-serif}:host ::ng-deep .mat-tab-label{font-weight:500!important;font-size:16px!important;height:auto!important;min-width:auto!important;padding:0!important;opacity:1!important;color:#000!important}:host ::ng-deep .mat-ink-bar{background-color:#000!important;height:3px!important}:host ::ng-deep .mat-tab-labels{gap:30px}:host ::ng-deep .mat-progress-spinner{position:absolute!important;top:40%;left:45%}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center}.app-icon{transition:all .15s ease-out}.icon-webex-right-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2220%22 height%3D%2220%22 viewBox%3D%220 0 20 20%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-right%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M14.0812 9.66902L6.58119 2.16902C6.53813 2.12351 6.48638 2.0871 6.429 2.06193C6.37162 2.03677 6.30978 2.02336 6.24713 2.0225C6.18448 2.02165 6.1223 2.03336 6.06425 2.05695C6.00621 2.08053 5.95348 2.11552 5.90919 2.15983C5.8649 2.20415 5.82994 2.25689 5.80638 2.31495C5.78282 2.373 5.77113 2.43519 5.77202 2.49784C5.77291 2.56049 5.78634 2.62232 5.81153 2.67969C5.83673 2.73705 5.87316 2.78879 5.91869 2.83183L13.0874 10.0003L5.91869 17.169C5.87316 17.2121 5.83673 17.2638 5.81153 17.3212C5.78634 17.3785 5.77291 17.4404 5.77202 17.503C5.77113 17.5657 5.78282 17.6279 5.80638 17.6859C5.82994 17.744 5.8649 17.7967 5.90919 17.841C5.95348 17.8853 6.00621 17.9203 6.06425 17.9439C6.1223 17.9675 6.18448 17.9792 6.24713 17.9783C6.30978 17.9775 6.37162 17.9641 6.429 17.9389C6.48638 17.9138 6.53813 17.8773 6.58119 17.8318L14.0812 10.3318C14.1691 10.2439 14.2184 10.1247 14.2184 10.0004C14.2184 9.87613 14.1691 9.75692 14.0812 9.66902Z%22 fill%3D%22%230F0F0F%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.device-info{display:flex;gap:1rem;padding:1.5rem}.device-info .device-info-part{display:flex;flex-direction:column;gap:1rem;flex:1;min-width:0}.device-info .device-info-part .card{display:flex;flex-direction:column;padding:1rem 1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0}.device-info .device-info-part .card .header{display:flex;align-items:center;justify-content:space-between}.device-info .device-info-part .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif}.device-info .device-info-part .card .main-content{display:flex;flex-direction:column;min-width:0}.device-info .device-info-part .card .main-content .detail-row{display:flex;flex:1;padding:1rem 0;min-width:0}.device-info .device-info-part .card .main-content .detail-row .side{display:flex;flex-direction:column;flex:1}.device-info .device-info-part .card .main-content .detail-row .side .main-value{font-weight:500;font-size:.875rem}.device-info .device-info-part .card .main-content .detail-row .side .extra-info{font-weight:350;font-size:.75rem}.device-info .device-info-part .card .main-content .detail-row .description{display:flex;gap:.5rem;align-items:center}.device-info .device-info-part .card .main-content .detail-row .toggle-wrapper{display:flex;align-items:center;justify-content:flex-start;gap:.5rem}.device-info .device-info-part .card .main-content .detail-row .configure-lines{display:flex;flex-direction:column}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line{display:flex;align-items:center;justify-content:space-between;flex:1;padding:.5rem 0}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div{gap:.5rem;display:flex;align-items:center}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label{display:inline-flex;flex:0 0 auto;gap:.25rem;align-items:center;justify-content:center;overflow:hidden;padding:.25rem .5rem;border:.0625rem solid transparent;border-radius:.25rem;line-height:1;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .detail-row .configure-lines .line>div .label.new{font-size:.75rem;border-color:#30c9b0;background-color:#e9f7f3;color:#12615a}.device-info .device-info-part .card .main-content .tags-list-container{display:flex;gap:.5rem;flex-wrap:wrap;min-width:0}.device-info .device-info-part .card .main-content .tags-list-container .tag-label{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;gap:.5rem;height:40px;font-size:smaller;max-width:100%;min-width:0;overflow:hidden}.device-info .device-info-part .card .main-content .tags-list-container .tag-label .tag-desccription{flex:1 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input{border:1px solid rgba(0,0,0,.2);display:flex;align-items:center;padding:8px 12px;border-radius:25px;color:#000000b3;background-color:#ededed;font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;height:40px;font-size:smaller;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important;margin-left:-99px}.device-info .device-info-part .card .main-content .tags-list-container .add-tag-input:focus-visible{outline:none}.device-info .device-info-part .card .main-content .add-tag{background-color:#fff!important}.device-info .device-info-part .card .main-content .add-tag:hover{color:#0353a8!important}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.icon-bordered-wrapper{display:flex;inline-size:1.5rem;border-radius:50rem;border:1px solid rgba(0,0,0,.5019607843);width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer}.configure-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 10.25A5.75 5.75 0 1 0 21.75 16 5.756 5.756 0 0 0 16 10.25m0 10a4.25 4.25 0 1 1 0-8.5 4.25 4.25 0 0 1 0 8.5M28 13.25H25.67a.25.25 0 0 1-.231-.155l-.667-1.633a.25.25 0 0 1 .057-.273l1.66-1.631a1.75 1.75 0 0 0 .024-2.475l-1.4-1.427a1.753 1.753 0 0 0-2.476-.024l-1.665 1.635a.25.25 0 0 1-.273.053l-1.796-.754a.25.25 0 0 1-.154-.23V4A1.75 1.75 0 0 0 17 2.25h-2A1.75 1.75 0 0 0 13.25 4v2.331a.25.25 0 0 1-.155.232l-1.714.71a.25.25 0 0 1-.273-.054L9.459 5.571a1.75 1.75 0 0 0-2.475 0L5.57 6.985a1.75 1.75 0 0 0 0 2.474l1.65 1.649a.25.25 0 0 1 .054.272l-.712 1.716a.25.25 0 0 1-.23.154H4A1.75 1.75 0 0 0 2.25 15v2A1.75 1.75 0 0 0 4 18.75h2.332a.25.25 0 0 1 .23.155l.71 1.713a.25.25 0 0 1-.053.274L5.57 22.54a1.75 1.75 0 0 0 0 2.476l1.415 1.414a1.75 1.75 0 0 0 2.476 0l1.648-1.65a.25.25 0 0 1 .272-.054l1.716.712a.25.25 0 0 1 .153.23V28A1.75 1.75 0 0 0 15 29.75h2A1.75 1.75 0 0 0 18.75 28v-2.332a.25.25 0 0 1 .156-.231l1.715-.71a.25.25 0 0 1 .272.054l1.649 1.649a1.753 1.753 0 0 0 2.474 0l1.416-1.415a1.753 1.753 0 0 0-.002-2.475l-1.648-1.648a.25.25 0 0 1-.055-.273l.712-1.715a.25.25 0 0 1 .23-.154H28A1.75 1.75 0 0 0 29.75 17v-2A1.75 1.75 0 0 0 28 13.25m.25 3.75a.25.25 0 0 1-.25.25h-2.331a1.74 1.74 0 0 0-1.617 1.08l-.712 1.716a1.75 1.75 0 0 0 .38 1.907L25.37 23.6a.25.25 0 0 1 0 .355l-1.414 1.414a.25.25 0 0 1-.273.054.3.3 0 0 1-.08-.054l-1.65-1.65a1.74 1.74 0 0 0-1.907-.379l-1.713.71a1.74 1.74 0 0 0-1.082 1.617V28a.25.25 0 0 1-.25.25h-2a.25.25 0 0 1-.25-.25v-2.332a1.74 1.74 0 0 0-1.08-1.616l-1.716-.712a1.74 1.74 0 0 0-1.907.38L8.4 25.37a.25.25 0 0 1-.355 0L6.63 23.955a.25.25 0 0 1 0-.354l1.65-1.648a1.745 1.745 0 0 0 .379-1.908l-.71-1.714a1.74 1.74 0 0 0-1.617-1.08H4a.25.25 0 0 1-.25-.25v-2a.25.25 0 0 1 .25-.25h2.332a1.74 1.74 0 0 0 1.616-1.082l.712-1.715a1.75 1.75 0 0 0-.38-1.907L6.63 8.4a.25.25 0 0 1 0-.354l1.414-1.414a.25.25 0 0 1 .355 0l1.648 1.649a1.74 1.74 0 0 0 1.908.379l1.713-.71A1.74 1.74 0 0 0 14.75 6.33v-2.33a.25.25 0 0 1 .25-.25h2a.25.25 0 0 1 .25.25v2.334a1.75 1.75 0 0 0 1.073 1.614l1.796.754a1.75 1.75 0 0 0 1.903-.364h.001l1.666-1.636a.255.255 0 0 1 .355.003l1.4 1.428a.25.25 0 0 1-.004.354l-1.66 1.63a1.745 1.745 0 0 0-.396 1.91l.668 1.636a1.74 1.74 0 0 0 1.62 1.086H28a.25.25 0 0 1 .25.25z%22%2F%3E%3C%2Fsvg%3E\")}.arrow-right-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m22.53 15.47-12-12a.75.75 0 1 0-1.06 1.06L20.94 16 9.47 27.47a.75.75 0 1 0 1.06 1.06l12-12a.75.75 0 0 0 0-1.06%22%2F%3E%3C%2Fsvg%3E\")}.check-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M16 2.25A13.75 13.75 0 1 0 29.75 16 13.765 13.765 0 0 0 16 2.25m0 26A12.25 12.25 0 1 1 28.25 16 12.264 12.264 0 0 1 16 28.25M20.512 12.43l-6.472 5.547-2.509-2.521a.75.75 0 0 0-1.062 1.058l3 3.015a.75.75 0 0 0 1.02.04l7-6a.75.75 0 1 0-.977-1.139%22%2F%3E%3C%2Fsvg%3E\")}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.warning-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M29.379 23.624 18.382 4.625a2.75 2.75 0 0 0-4.764 0l-11 19A2.75 2.75 0 0 0 5 27.75h21.997a2.75 2.75 0 0 0 2.382-4.126m-1.3 2.001a1.24 1.24 0 0 1-1.082.625H5a1.25 1.25 0 0 1-1.082-1.874l10.999-19A1.25 1.25 0 0 1 16 4.75a1.25 1.25 0 0 1 1.083.626l10.997 19a1.24 1.24 0 0 1 0 1.25M16 23.75a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16 19.75a.75.75 0 0 0 .75-.75v-7a.75.75 0 1 0-1.5 0v7a.75.75 0 0 0 .75.75%22%2F%3E%3C%2Fsvg%3E\")}.plus-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M26 15.25h-9.25V6a.75.75 0 1 0-1.5 0v9.25H6a.75.75 0 1 0 0 1.5h9.25V26a.75.75 0 1 0 1.5 0v-9.25H26a.75.75 0 1 0 0-1.5%22%2F%3E%3C%2Fsvg%3E\")}.close-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22m17.06 16 8.47-8.47a.75.75 0 0 0-.242-1.224.75.75 0 0 0-.819.163L16 14.94 7.53 6.47A.75.75 0 1 0 6.47 7.53L14.94 16l-8.47 8.47a.75.75 0 0 0 1.06 1.06L16 17.06l8.47 8.47a.75.75 0 1 0 1.06-1.06z%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem}.rem1-25{height:1.25rem;width:1.25rem}\n"] }]
154
+ }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.DeviceService }, { type: i3.APIService }, { type: i4.LineService }, { type: i5.SiteSettingsService }, { type: i6.ValidationService }, { type: i7.MatDialog }, { type: i8.DnsService }]; }, propDecorators: { onSave: [{
145
155
  type: Output
146
156
  }], onChange: [{
147
157
  type: Output
@@ -165,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
165
175
  type: ViewChild,
166
176
  args: ['tagInput']
167
177
  }] } });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsV0FBVyxFQUEwQyxNQUFNLGdCQUFnQixDQUFDO0FBS3JGLE9BQU8sRUFBRSxRQUFRLEVBQVksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlCOUQsTUFBTSxPQUFPLDJCQUEyQjtJQTRCdEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN4RixDQUFDO0lBRUQsWUFDUyxXQUF3QixFQUN4QixhQUE0QixFQUMzQixVQUFz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QUE7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQzs7eUhBN0pVLDJCQUEyQjs2R0FBM0IsMkJBQTJCLHlZQ3ZCeEMsaTVnQkFpU007NEZEMVFPLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwwQkFBMEI7MlFBSzFCLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFFa0IsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Db250cm9sTmFtZSwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTaW1wbGlmaWVkVXNlciB9IGZyb20gJy4vY2xhc3Nlcy9zaW1wbGlmaWVkLXVzZXInO1xyXG5pbXBvcnQgeyBMaW5lQXNzb2NpYXRpb24gfSBmcm9tICcuL2NsYXNzZXMvbGluZS1hc3NvY2lhdGlvbic7XHJcbmltcG9ydCB7IExpbmVBc3NvY2lhdGlvbkludGVyZmFjZSB9IGZyb20gJy4vY2xhc3Nlcy9saW5lLWFzc29jaWF0aW9uLWludGVyZmFjZSc7XHJcbmltcG9ydCB7IERldmljZSwgRGV2aWNlVmlld1R5cGUgfSBmcm9tICcuL2NsYXNzZXMvZGV2aWNlJztcclxuaW1wb3J0IHsgZmluYWxpemUsIGZvcmtKb2luLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0VGFiR3JvdXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJzJztcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuaW1wb3J0IHsgSW5mb0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2cvaW5mby1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3VzZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERldmljZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2RldmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5lU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvbGluZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvc2l0ZS1zZXR0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3ZhbGlkYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IFRPR0dMRV9UWVBFUyB9IGZyb20gJy4vYXBwLmNvbnN0YW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2UtbWFuYWdlLXdpZGdldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1tYW5hZ2Utd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZXZpY2UtbWFuYWdlLXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2aWNlTWFuYWdlV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGRpc2NhcmRDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBnb0JhY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaXRlSWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdXNlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzTGRhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGV2aWNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgIEBWaWV3Q2hpbGQoJ3RhZ0lucHV0JykgdGFnSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG5cclxuICBkYXRhUGVuZGluZyE6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIGRldmljZTogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgdG9rZW5PYmo6IGFueSA9IG51bGw7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBIT1RFTElOR19USU1FX0hPVVJTID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTIwIH0sIChfLCBpbmRleCkgPT4gaW5kZXgpO1xyXG5cclxuICAvLyBwdWJsaWMgcmVhZG9ubHkgaG90ZWxpbmdMaW1pdFRpbWUgPSBuZXcgRm9ybUNvbnRyb2woMjQpO1xyXG4gIHB1YmxpYyBsb2dNaXNzZWRDYWxsID0gbmV3IEZvcm1Db250cm9sKHRydWUpO1xyXG5cclxuICB0YWdzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzQWRkaW5nID0gZmFsc2U7XHJcbiAgbmV3VGFnID0gJyc7XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJOYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3ROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS51c2VyTGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybSgpOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZT8uZm9ybTtcclxuICB9XHJcblxyXG4gIGdldCBpc1dlYmV4KCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2ViZXhVVUlEJyk/Lmxlbmd0aDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHB1YmxpYyBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxpbmVTZXJ2aWNlOiBMaW5lU2VydmljZSxcclxuICAgIHB1YmxpYyBzaXRlU2V0dGluZ3NTZXJ2aWNlOiBTaXRlU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBpU2VydmljZS50b2tlbiA9IHRoaXMudG9rZW47XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0O1xyXG4gICAgY29uc29sZS5sb2coJ3RoaXMuYXBpU2VydmljZS5hcGlVcmwgPSAnLCB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsKTtcclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgc2hvd0lucHV0KCkge1xyXG4gICAgdGhpcy5pc0FkZGluZyA9IHRydWU7XHJcblxyXG4gICAgLy8gd2FpdCB1bnRpbCBpbnB1dCBhcHBlYXJzIGluIERPTVxyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMudGFnSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25CbHVyKCkge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm5ld1RhZy50cmltKCk7XHJcblxyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHRoaXMudGFncy5wdXNoKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5ld1RhZyA9ICcnO1xyXG4gICAgdGhpcy5pc0FkZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlVGFnKGluZGV4OiBudW1iZXIpIHtcclxuICAgIHRoaXMudGFncy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdGVsaW5nRW5hYmxlZCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoJ2hvdGVsaW5nJyk/LmdldCgnZW5hYmxlZCcpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGd1ZXN0SG91cnNMaW1pdCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5mb3JtPy5nZXQoJ2hvdGVsaW5nJyk/LmdldCgnZ3Vlc3RIb3Vyc0xpbWl0JykgYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldERhdGEoKSB7XHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIGxldCByZXF1ZXN0O1xyXG4gICAgY29uc3QgZGV2aWNlVHlwZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkZXZpY2VUeXBlJyk7XHJcbiAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnaXNXZWJleCcpID09PSAndHJ1ZScpIHtcclxuICAgICAgLy8gcmVxdWVzdFxyXG4gICAgICBjb25zdCBjdXN0b21lcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1c3RvbWVySWQnKTtcclxuICAgICAgY29uc3Qgd2ViZXhJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKTtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMudXNlclNlcnZpY2UuZmV0Y2hXZWJleFVzZXJEZXZpY2UoY3VzdG9tZXJJZCEsIHdlYmV4SWQhLCBkZXZpY2VUeXBlISk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0ID0gdGhpcy51c2VyU2VydmljZS5mZXRjaERJVXNlckRldmljZSh0aGlzLnNpdGVJZCwgdGhpcy51c2VySWQsIGRldmljZVR5cGUhKTtcclxuICAgIH1cclxuICAgIHJlcXVlc3RcclxuICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZSkpXHJcbiAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5kZXZpY2UgPSBkYXRhO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OdW1iZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dC50cmltKCk7XHJcbiAgICB0aGlzLmRldmljZS5saW5lc1tpbmRleF0ubnVtYmVyID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkV4dGVuc2lvbkNoYW5nZShldmVudDogRXZlbnQsIGluZGV4OiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LnRyaW0oKTtcclxuICAgIHRoaXMuZGV2aWNlLmxpbmVzW2luZGV4XS5leHRlbnNpb24gPSB2YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMudXNlclNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMoKSB8fCB0aGlzLmZvcm0/LmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHVwZGF0ZWRMaW5lcyA9IHRoaXMuZGV2aWNlLmxpbmVzLmZpbHRlcigobGluZTogYW55LCBpbmRleDogYW55KSA9PiB0aGlzLnVzZXJTZXJ2aWNlLmxpbmVVcGRhdGVkKGxpbmUsIGluZGV4KSk7XHJcbiAgICB1cGRhdGVkTGluZXMuZm9yRWFjaCgobGluZTogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuZWRpdFRyYW5zbGF0aW9uUGF0dGVybihcclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmN1Y21JZCxcclxuICAgICAgICB0aGlzLnVzZXJTZXJ2aWNlLmdldE9yaWdpbmFsTnVtYmVyKGxpbmUpLFxyXG4gICAgICAgIGxpbmUubnVtYmVyLFxyXG4gICAgICAgIGxpbmUuZXh0ZW5zaW9uLFxyXG4gICAgICAgIGxpbmUucm91dGVQYXJ0aXRpb25OYW1lLFxyXG4gICAgICAgIGxpbmUuZGVzY3JpcHRpb24gfHwgJycsXHJcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMub25TYXZlLm5leHQoXCJkZXZpY2UncyBsaW5lIGhhcyBiZWVuIHNhdmVkIHN1Y2Nlc3NmdWxseS4uXCIpO1xyXG4gICAgICAgICAgLy8gc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfSwgKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKTtcclxuICAgIH0pXHJcblxyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgb25Hb0JhY2soKTogdm9pZCB7XHJcbiAgICB0aGlzLmdvQmFjay5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIlxyXG5cclxuPGFwcC1sb2FkZXIgKm5nSWY9XCJkYXRhUGVuZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuPGRpdiAqbmdJZj1cIiFkYXRhUGVuZGluZ1wiPlxyXG4gIDwhLS0gPGRpdiBjbGFzcz1cImdvLWJhY2stYm94XCIgKGNsaWNrKT1cIm9uR29CYWNrKClcIj4gLS0+XHJcbiAgPGRpdiBjbGFzcz1cImdvLWJhY2stYm94XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3gtY29udGFpbmVyXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLWljb24gaWNvbi13ZWJleC1sZWZ0LWFycm93XCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImdvLWJhY2stdGl0bGVcIj5EZXZpY2VzPC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxhcHAtZGV2aWNlLWluZm8gXHJcbiAgICBbZGV2aWNlXT1cImRldmljZVwiIFxyXG4gICAgW2ZpcnN0TmFtZV09XCJmaXJzdE5hbWVcIiBcclxuICAgIFtsYXN0TmFtZV09XCJsYXN0TmFtZVwiXHJcbiAgICAob25jbGlja0JhY2spPVwib25Hb0JhY2soKVwiXHJcbiAgICA+XHJcbiAgICBcclxuICA8L2FwcC1kZXZpY2UtaW5mbz5cclxuICA8ZGl2IGNsYXNzPVwiZGV2aWNlLWluZm9cIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZGV2aWNlLWluZm8tcGFydFwiPlxyXG5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkRldGFpbHM8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlIGxlZnQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBmb3JtPy5nZXQoJ21heExpbmVDb3VudCcpPy52YWx1ZSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TGluZXM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgcmlnaHQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyAoZm9ybT8uZ2V0KCdtYWNBZGRyZXNzJyk/LnZhbHVlIHwgbWFjQWRkcmVzcykgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPk1BQyBhZGRyZXNzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgbGVmdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGZvcm0/LmdldCgnaXBBZGRyZXNzJyk/LnZhbHVlIHx8ICdOL0EnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5Ib3N0IElQIGFkZHJlc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgcmlnaHQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBmb3JtPy5nZXQoJ3JlbW90ZUlwQWRkcmVzcycpPy52YWx1ZSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+UmVtb3RlIElQIGFkZHJlc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZSBsZWZ0LXBhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+Q2lzY288L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPk1hbmFnZWQgQnk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlNvZnR3YXJlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tYm9yZGVyZWQtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBjb25maWd1cmUtaWNvbiByZW0xXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlIGxlZnQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBmb3JtPy5nZXQoJ3NvZnR3YXJlVmVyc2lvbicpPy52YWx1ZSB8fCAnTi9BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5Tb2Z0d2FyZSBDaGFubmVsPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlIHJpZ2h0LXBhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZm9ybT8uZ2V0KCdzb2Z0d2FyZUNoYW5uZWwnKT8udmFsdWUgfHwgJ04vQSd9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+U29mdHdhcmUgdmVyc2lvbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+VGFnczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCIgc3R5bGU9XCJmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDFyZW07XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtbGlzdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGFnIG9mIHRhZ3M7IGxldCBpID0gaW5kZXhcIiBjbGFzcz1cInRhZy1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWctZGVzY2NyaXB0aW9uXCI+e3sgdGFnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNsb3NlLWljb25cIiAoY2xpY2spPVwicmVtb3ZlVGFnKGkpXCIgc3R5bGU9XCJ3aWR0aDogMC43NXJlbTsgaGVpZ2h0OiAwLjc1cmVtOyBmbGV4OiAwIDAgYXV0bztcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWdzLWxpc3QtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0YWctbGFiZWwgYWRkLXRhZ1wiIChjbGljayk9XCJzaG93SW5wdXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uIHBsdXMtaWNvblwiIHN0eWxlPVwid2lkdGg6IDAuNzVyZW07IGhlaWdodDogMC43NXJlbTtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BZGQgdGFnPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgI3RhZ0lucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVudGVyLXRhZy1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0FkZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIm5ld1RhZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZC10YWctaW5wdXRcIiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgdGFnLi4uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZGV2aWNlLWluZm8tcGFydFwiPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPklzc3VlcyAmIEluZm9ybWF0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNoZWNrLWljb24gcmVtMVwiIHN0eWxlPVwiZmlsdGVyOiBpbnZlcnQoMjYlKSBzZXBpYSgyNyUpIHNhdHVyYXRlKDEwOTMlKSBodWUtcm90YXRlKDExNGRlZykgYnJpZ2h0bmVzcyg5MyUpIGNvbnRyYXN0KDkwJSk7XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5ObyByZXBvcnRlZCBpc3N1ZXMgYXQgdGhpcyB0aW1lPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+SG90ZWxpbmc8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvdyBmbGV4LWNvbHVtbiBnYXAtMF83NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPkFsbG93IHRoaXMgZGV2aWNlIHRvIGJlIHVzZWQgYXMgYSBIb3RlbGluZyBIb3N0IGJ5IHZpc2l0aW5nIGd1ZXN0cy48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvZ2dsZS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIG5hbWU9XCJsb2dNaXNzZWRDYWxsc1wiIFtmb3JtQ29udHJvbF09XCJob3RlbGluZ0VuYWJsZWRcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBpbmZvLWljb24gcmVtMVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmaWx0ZXI6IGludmVydCgyMCUpIHNlcGlhKDk5JSkgc2F0dXJhdGUoMjA2NSUpIGh1ZS1yb3RhdGUoMTk3ZGVnKSBicmlnaHRuZXNzKDkyJSkgY29udHJhc3QoMTAxJSk7XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidFbmFibGluZyB0aGlzIGRldmljZSBmb3IgSG90ZWxpbmcgbWVhbnMgdGhhdCBhIGd1ZXN0IChlbmQgdXNlcikgY2FuIGxvZyBpbnRvIHRoaXMgaG9zdCAod29ya3NwYWNlIHBob25lKSBhbmQgdXNlIHRoaXMgcGhvbmUgYXMgaWYgaXQgd2VyZSB0aGVpciBvd24uIFRoaXMgaXMgdXNlZnVsIHdoZW4gdHJhdmVsaW5nIHRvIGEgcmVtb3RlIG9mZmljZSBidXQgc3RpbGwgbmVlZGluZyB0byBwbGFjZS9yZWNlaXZlIGNhbGxzIHdpdGggdGhlaXIgdGVsZXBob25lIG51bWJlciBhbmQgdG8gYWNjZXNzIGZlYXR1cmVzIG5vcm1hbGx5IGF2YWlsYWJsZSB0byB0aGVtIG9uIHRoZWlyIG93biBvZmZpY2UgcGhvbmUuJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+TGltaXQgdGhlIHRpbWUgYSBndWVzdCBjYW4gdXNlIHRoaXMgcGhvbmUgdG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cImd1ZXN0SG91cnNMaW1pdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdHlwZSBvZiBIT1RFTElOR19USU1FX0hPVVJTXCIgW3ZhbHVlXT1cInR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+RGV2aWNlIE1hbmFnZW1lbnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvdyBmbGV4LWNvbHVtbiBnYXAtMF83NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPlRoZSB1c2VycyBhbmQgd29ya3NwYWNlcyB0aGF0IGFwcGVhciBvbiB0aGlzIGRldmljZSBhcmUgZGlzcGxheWVkIGJlbG93IGluIHRoZSBvcmRlciBvZiBhcHBlYXJhbmNlLjwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+VG8gYWRkIGFuZCByZW1vdmUgdXNlcnMgYW5kIHdvcmtzcGFjZXMsIHNlbGVjdCA8Yj5Db25maWd1cmUgTGluZXMuPC9iPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+VG8gY3VzdG9taXplIHRoZSBwcm9ncmFtbWFibGUgTGluZSBLZXlzLCBzZWxlY3QgPGI+Q29uZmlndXJlIExheW91dC48L2I+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5UbyBzZXQgdXAgdGhlIGRpc3BsYXkgc2V0dGluZ3MgYW5kIGRpYWxpbmcgb3B0aW9ucywgc2VsZWN0IDxiPkRldmljZSBTZXR0aW5nczwvYj4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDx0YWJsZSBzdHlsZT1cImJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgc3R5bGU9XCJiYWNrZ3JvdW5kOiNlZGVkZWQ7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJwYWRkaW5nOjEwcHggMTZweDsgZm9udC1zaXplOi43NXJlbTsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojNTQ1NDU0OyB0ZXh0LWFsaWduOmxlZnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+SW5kZXggIzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJwYWRkaW5nOjEwcHggMTZweDsgZm9udC1zaXplOi43NXJlbTsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojNTQ1NDU0OyB0ZXh0LWFsaWduOmxlZnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+TmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJwYWRkaW5nOjEwcHggMTZweDsgZm9udC1zaXplOi43NXJlbTsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojNTQ1NDU0OyB0ZXh0LWFsaWduOmxlZnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+TnVtYmVyL0V4dGVuc2lvbjwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJwYWRkaW5nOjEwcHggMTZweDsgZm9udC1zaXplOi43NXJlbTsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojNTQ1NDU0OyB0ZXh0LWFsaWduOmxlZnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+QXBwZWFyYW5jZXM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPVwicGFkZGluZzoxMHB4IDE2cHg7IGZvbnQtc2l6ZTouNzVyZW07IGZvbnQtd2VpZ2h0OjQwMDsgY29sb3I6IzU0NTQ1NDsgdGV4dC1hbGlnbjpsZWZ0OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O1wiPlJlZ2lzdGVyZWQ8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXZpY2U/LmxpbmVzICYmIGRldmljZT8ubGluZXMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgc3R5bGU9XCJiYWNrZ3JvdW5kOiNmZmY7IGN1cnNvcjpwb2ludGVyO1wiIG9ubW91c2VvdmVyPVwidGhpcy5zdHlsZS5iYWNrZ3JvdW5kPScjZmFmYWZhJ1wiIG9ubW91c2VvdXQ9XCJ0aGlzLnN0eWxlLmJhY2tncm91bmQ9JyNmZmYnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxpbmUgb2YgZGV2aWNlLmxpbmVzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwicGFkZGluZzogLjI1cmVtIDEuMjVyZW0gLjI1cmVtIC43NXJlbTs7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7IGNvbG9yOiMwMDAwMDBmMjsgcGFkZGluZzo0cHggMTRweDsgZm9udC1zaXplOi44NzVyZW07IGZvbnQtd2VpZ2h0OjQwMDtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiAuMjVyZW0gMS4yNXJlbSAuMjVyZW0gLjc1cmVtOzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgY29sb3I6IzAwMDAwMGYyOyBwYWRkaW5nOjRweCAxNHB4OyBmb250LXNpemU6Ljg3NXJlbTsgZm9udC13ZWlnaHQ6NDAwO1wiPnt7bGluZT8ubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwicGFkZGluZzogLjI1cmVtIDEuMjVyZW0gLjI1cmVtIC43NXJlbTs7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb250ZW50ZWRpdGFibGVdPVwiIWlzV2ViZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25OdW1iZXJDaGFuZ2UoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZT8ubnVtYmVyIHx8ICdOQScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPiAvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb250ZW50ZWRpdGFibGVdPVwiIWlzV2ViZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25FeHRlbnNpb25DaGFuZ2UoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZT8uZXh0ZW5zaW9uIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInBhZGRpbmc6IC4yNXJlbSAxLjI1cmVtIC4yNXJlbSAuNzVyZW07OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBjb2xvcjojMDAwMDAwZjI7IHBhZGRpbmc6NHB4IDE0cHg7IGZvbnQtc2l6ZTouODc1cmVtOyBmb250LXdlaWdodDo0MDA7XCI+MTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInBhZGRpbmc6IC4yNXJlbSAxLjI1cmVtIC4yNXJlbSAuNzVyZW07OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gd2FybmluZy1pY29uIHJlbTFcIiBbbWF0VG9vbHRpcF09XCInVW5yZWdpc3RlcmVkJ1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG90YWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+MTUgb2YgMTYgdG90YWwgbGluZXMgYXZhaWxhYmxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtbGluZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNvbmZpZ3VyZS1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+Q29uZmlndXJlIExpbmVzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwO1wiPk1hbmFnZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gYXJyb3ctcmlnaHQtaWNvbiByZW0xLTI1XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNvbmZpZ3VyZS1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+Q29uZmlndXJlIExheW91dDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj5NYW5hZ2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGFycm93LXJpZ2h0LWljb24gcmVtMS0yNVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBjb25maWd1cmUtaWNvbiByZW0xLTI1XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPkRldmljZSBTZXR0aW5nczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj5NYW5hZ2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGFycm93LXJpZ2h0LWljb24gcmVtMS0yNVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlN1cHBvcnQ8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvdyBmbGV4LWNvbHVtbiBnYXAtMF83NVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtbGluZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+TWVldGluZ3MgJiBDYWxsczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIG5ld1wiPk5ldzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gaW5mby1pY29uIHJlbTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCInVHJvdWJsZXNob290aW5nIHByb3ZpZGVzIGRldGFpbHMgYWJvdXQgdGhlIGRldmljZSByZWxhdGVkIHRvIHN0YXR1cywgbmV0d29yayBhY3Rpdml0eSwgYW5kIGNhbGwgaW5mb3JtYXRpb24uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj5HbyB0byB0cm91Ymxlc2hvb3Rpbmc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGFycm93LXJpZ2h0LWljb24gcmVtMS0yNVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPkRldmljZSBMb2dzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBpbmZvLWljb24gcmVtMVwiIFttYXRUb29sdGlwXT1cIidHZW5lcmF0ZSBkZXZpY2UgbG9ncyBhbmQgZG93bmxvYWQgdGhlbSB0byB5b3VyIGNvbXB1dGVyLidcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDA7XCI+TWFuYWdlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBhcnJvdy1yaWdodC1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG4gIFxyXG48L2Rpdj4iXX0=
178
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLW1hbmFnZS13aWRnZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoSSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBMEMsTUFBTSxnQkFBZ0IsQ0FBQztBQUtoRyxPQUFPLEVBQUUsUUFBUSxFQUFZLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCOUQsTUFBTSxPQUFPLDJCQUEyQjtJQTZCdEMsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLE1BQU0sQ0FBQztJQUMzRixDQUFDO0lBRUQsWUFDUyxXQUF3QixFQUN4QixhQUE0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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBGb3JtQ29udHJvbE5hbWUsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgU2ltcGxpZmllZFVzZXIgfSBmcm9tICcuL2NsYXNzZXMvc2ltcGxpZmllZC11c2VyJztcclxuaW1wb3J0IHsgTGluZUFzc29jaWF0aW9uIH0gZnJvbSAnLi9jbGFzc2VzL2xpbmUtYXNzb2NpYXRpb24nO1xyXG5pbXBvcnQgeyBMaW5lQXNzb2NpYXRpb25JbnRlcmZhY2UgfSBmcm9tICcuL2NsYXNzZXMvbGluZS1hc3NvY2lhdGlvbi1pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2UsIERldmljZVZpZXdUeXBlIH0gZnJvbSAnLi9jbGFzc2VzL2RldmljZSc7XHJcbmltcG9ydCB7IGZpbmFsaXplLCBmb3JrSm9pbiwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IE1hdFRhYkdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEluZm9EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2NvbmZpcm0tZGlhbG9nL2luZm8tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kZXZpY2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGluZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2xpbmUuc2VydmljZSc7XHJcbmltcG9ydCB7IFNpdGVTZXR0aW5nc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy92YWxpZGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUT0dHTEVfVFlQRVMgfSBmcm9tICcuL2FwcC5jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBEbnNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9kbnMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2UtbWFuYWdlLXdpZGdldCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RldmljZS1tYW5hZ2Utd2lkZ2V0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kZXZpY2UtbWFuYWdlLXdpZGdldC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2aWNlTWFuYWdlV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIGRpc2NhcmRDaGFuZ2VzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBnb0JhY2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgdG9rZW4hOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcclxuICBASW5wdXQoKSBzaXRlSWQhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdXNlcklkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlzTGRhcCE6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGV2aWNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgQFZpZXdDaGlsZCgndGFnSW5wdXQnKSB0YWdJbnB1dCE6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XHJcblxyXG4gIGRhdGFQZW5kaW5nITogYm9vbGVhbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwdWJsaWMgZGV2aWNlOiBhbnkgPSBudWxsO1xyXG4gIHB1YmxpYyB0b2tlbk9iajogYW55ID0gbnVsbDtcclxuXHJcbiAgcHVibGljIHJlYWRvbmx5IEhPVEVMSU5HX1RJTUVfSE9VUlMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiAxMjAgfSwgKF8sIGluZGV4KSA9PiBpbmRleCk7XHJcblxyXG4gIC8vIHB1YmxpYyByZWFkb25seSBob3RlbGluZ0xpbWl0VGltZSA9IG5ldyBGb3JtQ29udHJvbCgyNCk7XHJcbiAgcHVibGljIGxvZ01pc3NlZENhbGwgPSBuZXcgRm9ybUNvbnRyb2wodHJ1ZSk7XHJcblxyXG4gIHRhZ3M6IHN0cmluZ1tdID0gW107XHJcbiAgaXNBZGRpbmcgPSBmYWxzZTtcclxuICBuZXdUYWcgPSAnJztcclxuICBsaW5lc0NvbnRyb2xzID0gbmV3IEZvcm1BcnJheTxGb3JtQ29udHJvbDxzdHJpbmc+PihbXSk7XHJcblxyXG4gIGdldCBmaXJzdE5hbWUoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnVzZXJTZXJ2aWNlLnVzZXJOYW1lO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3ROYW1lKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS51c2VyTGFzdE5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXQgZm9ybSgpOiBGb3JtR3JvdXAgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMudXNlclNlcnZpY2UudXNlckRldmljZT8uZm9ybTtcclxuICB9XHJcblxyXG4gIGdldCBpc1dlYmV4KCkge1xyXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKSAmJiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd2ViZXhVVUlEJykgIT09ICdudWxsJztcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHB1YmxpYyBkZXZpY2VTZXJ2aWNlOiBEZXZpY2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhcGlTZXJ2aWNlOiBBUElTZXJ2aWNlLFxyXG4gICAgcHVibGljIGxpbmVTZXJ2aWNlOiBMaW5lU2VydmljZSxcclxuICAgIHB1YmxpYyBzaXRlU2V0dGluZ3NTZXJ2aWNlOiBTaXRlU2V0dGluZ3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogVmFsaWRhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkbnNTZXJ2aWNlOiBEbnNTZXJ2aWNlLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdDtcclxuICAgIGNvbnNvbGUubG9nKCd0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gJywgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCk7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIHNob3dJbnB1dCgpIHtcclxuICAgIHRoaXMuaXNBZGRpbmcgPSB0cnVlO1xyXG5cclxuICAgIC8vIHdhaXQgdW50aWwgaW5wdXQgYXBwZWFycyBpbiBET01cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnRhZ0lucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQmx1cigpIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5uZXdUYWcudHJpbSgpO1xyXG5cclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICB0aGlzLnRhZ3MucHVzaCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5uZXdUYWcgPSAnJztcclxuICAgIHRoaXMuaXNBZGRpbmcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJlbW92ZVRhZyhpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnRhZ3Muc3BsaWNlKGluZGV4LCAxKTtcclxuICB9XHJcblxyXG4gIGdldCBob3RlbGluZ0VuYWJsZWQoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCdob3RlbGluZycpPy5nZXQoJ2VuYWJsZWQnKSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGdldCBndWVzdEhvdXJzTGltaXQoKTogRm9ybUNvbnRyb2wge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybT8uZ2V0KCdob3RlbGluZycpPy5nZXQoJ2d1ZXN0SG91cnNMaW1pdCcpIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhKCkge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcmVxdWVzdDtcclxuICAgIGNvbnN0IGRldmljZVR5cGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnZGV2aWNlVHlwZScpO1xyXG4gICAgLy8gY29uc3QgZGV2aWNlVHlwZSA9IHRoaXMuZGV2aWNlTmFtZTtcclxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc1dlYmV4JykgPT09ICd0cnVlJykge1xyXG4gICAgICAvLyByZXF1ZXN0XHJcbiAgICAgIGNvbnN0IGN1c3RvbWVySWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VzdG9tZXJJZCcpO1xyXG4gICAgICBjb25zdCB3ZWJleElkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3dlYmV4VVVJRCcpO1xyXG4gICAgICByZXF1ZXN0ID0gdGhpcy51c2VyU2VydmljZS5mZXRjaFdlYmV4VXNlckRldmljZShjdXN0b21lcklkISwgd2ViZXhJZCEsIGRldmljZVR5cGUhKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlcXVlc3QgPSB0aGlzLnVzZXJTZXJ2aWNlLmZldGNoRElVc2VyRGV2aWNlKHRoaXMuc2l0ZUlkLCB0aGlzLnVzZXJJZCwgZGV2aWNlVHlwZSEpO1xyXG4gICAgfVxyXG4gICAgcmVxdWVzdFxyXG4gICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgIC5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmRldmljZSA9IGRhdGE7XHJcbiAgICAgIHRoaXMuaW5pdEZvcm1EYXRhKHRoaXMuZGV2aWNlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW5pdEZvcm1EYXRhKGRldmljZTogYW55KSB7XHJcblxyXG4gICAgdGhpcy5saW5lc0NvbnRyb2xzID0gbmV3IEZvcm1BcnJheShcclxuICAgICAgdGhpcy5kZXZpY2UubGluZXMubWFwKChsaW5lOiBhbnkpID0+XHJcbiAgICAgICAgbmV3IEZvcm1Db250cm9sKFN0cmluZyhsaW5lLmV4dGVuc2lvbikgfHwgJycpXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25OdW1iZXJDaGFuZ2UoZXZlbnQ6IEV2ZW50LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dC50cmltKCk7XHJcbiAgICB0aGlzLmRldmljZS5saW5lc1tpbmRleF0ubnVtYmVyID0gdmFsdWU7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkV4dGVuc2lvbkNoYW5nZSh2YWx1ZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICAvLyBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dC50cmltKCk7XHJcbiAgICBjb25zdCBleHRlbnNpb24gPSB0aGlzLmRuc1NlcnZpY2UuZ2V0RG5WYWx1ZSh2YWx1ZSk7XHJcbiAgICBjb25zdCBudW1iZXIgPSB0aGlzLmRuc1NlcnZpY2UuZ2V0TWFwcGVkRGlkcyhleHRlbnNpb24sICcwJyk7XHJcbiAgICB0aGlzLmRldmljZS5saW5lc1tpbmRleF0uZXh0ZW5zaW9uID0gdmFsdWU7XHJcbiAgICB0aGlzLmRldmljZS5saW5lc1tpbmRleF0ubnVtYmVyID0gbnVtYmVyIHx8ICcnO1xyXG4gICAgdGhpcy5saW5lc0NvbnRyb2xzLmF0KGluZGV4KS5zZXRWYWx1ZShleHRlbnNpb24pO1xyXG4gICAgdGhpcy5vbkNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBzYXZlQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy51c2VyU2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcygpIHx8IHRoaXMuZm9ybT8uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgdXBkYXRlZExpbmVzID0gdGhpcy5kZXZpY2UubGluZXMuZmlsdGVyKChsaW5lOiBhbnksIGluZGV4OiBhbnkpID0+IHRoaXMudXNlclNlcnZpY2UubGluZVVwZGF0ZWQobGluZSwgaW5kZXgpKTtcclxuICAgIHVwZGF0ZWRMaW5lcy5mb3JFYWNoKChsaW5lOiBhbnkpID0+IHRoaXMudXNlclNlcnZpY2Uuc2F2ZU5ld0xpbmUobGluZSkpO1xyXG5cclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YVBlbmRpbmcgPSBmYWxzZTtcclxuICAgIH0sIDIwMDAwKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBvbkdvQmFjaygpOiB2b2lkIHtcclxuICAgIHRoaXMuZ29CYWNrLmVtaXQoKTtcclxuICB9XHJcbn1cclxuIiwiXHJcblxyXG48YXBwLWxvYWRlciAqbmdJZj1cImRhdGFQZW5kaW5nXCI+PC9hcHAtbG9hZGVyPlxyXG48ZGl2ICpuZ0lmPVwiIWRhdGFQZW5kaW5nXCI+XHJcbiAgPCEtLSA8ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3hcIiAoY2xpY2spPVwib25Hb0JhY2soKVwiPiAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3hcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJnby1iYWNrLWJveC1jb250YWluZXJcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJhcHAtaWNvbiBpY29uLXdlYmV4LWxlZnQtYXJyb3dcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiZ28tYmFjay10aXRsZVwiPkRldmljZXM8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGFwcC1kZXZpY2UtaW5mbyBcclxuICAgIFtkZXZpY2VdPVwiZGV2aWNlXCIgXHJcbiAgICBbZmlyc3ROYW1lXT1cImZpcnN0TmFtZVwiIFxyXG4gICAgW2xhc3ROYW1lXT1cImxhc3ROYW1lXCJcclxuICAgIChvbmNsaWNrQmFjayk9XCJvbkdvQmFjaygpXCJcclxuICAgID5cclxuICAgIFxyXG4gIDwvYXBwLWRldmljZS1pbmZvPlxyXG4gIDxkaXYgY2xhc3M9XCJkZXZpY2UtaW5mb1wiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXZpY2UtaW5mby1wYXJ0XCI+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+RGV0YWlsczwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgbGVmdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGZvcm0/LmdldCgnbWF4TGluZUNvdW50Jyk/LnZhbHVlIHx8ICdOL0EnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5MaW5lczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZSByaWdodC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IChmb3JtPy5nZXQoJ21hY0FkZHJlc3MnKT8udmFsdWUgfCBtYWNBZGRyZXNzKSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TUFDIGFkZHJlc3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZSBsZWZ0LXBhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZm9ybT8uZ2V0KCdpcEFkZHJlc3MnKT8udmFsdWUgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPkhvc3QgSVAgYWRkcmVzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZSByaWdodC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGZvcm0/LmdldCgncmVtb3RlSXBBZGRyZXNzJyk/LnZhbHVlIHx8ICdOL0EnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5SZW1vdGUgSVAgYWRkcmVzczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlIGxlZnQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj5DaXNjbzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TWFuYWdlZCBCeTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+U29mdHdhcmU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1ib3JkZXJlZC13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGNvbmZpZ3VyZS1pY29uIHJlbTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgbGVmdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGZvcm0/LmdldCgnc29mdHdhcmVWZXJzaW9uJyk/LnZhbHVlIHx8ICdOL0EnfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPlNvZnR3YXJlIENoYW5uZWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUgcmlnaHQtcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBmb3JtPy5nZXQoJ3NvZnR3YXJlQ2hhbm5lbCcpPy52YWx1ZSB8fCAnTi9BJ319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5Tb2Z0d2FyZSB2ZXJzaW9uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5UYWdzPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIiBzdHlsZT1cImZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMXJlbTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFncy1saXN0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCB0YWcgb2YgdGFnczsgbGV0IGkgPSBpbmRleFwiIGNsYXNzPVwidGFnLWxhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhZy1kZXNjY3JpcHRpb25cIj57eyB0YWcgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2xvc2UtaWNvblwiIChjbGljayk9XCJyZW1vdmVUYWcoaSlcIiBzdHlsZT1cIndpZHRoOiAwLjc1cmVtOyBoZWlnaHQ6IDAuNzVyZW07IGZsZXg6IDAgMCBhdXRvO1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhZ3MtbGlzdC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRhZy1sYWJlbCBhZGQtdGFnXCIgKGNsaWNrKT1cInNob3dJbnB1dCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImljb24gcGx1cy1pY29uXCIgc3R5bGU9XCJ3aWR0aDogMC43NXJlbTsgaGVpZ2h0OiAwLjc1cmVtO1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFkZCB0YWc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjdGFnSW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZW50ZXItdGFnLWlucHV0XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQWRkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3VGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRkLXRhZy1pbnB1dFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciB0YWcuLi5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXZpY2UtaW5mby1wYXJ0XCI+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+SXNzdWVzICYgSW5mb3JtYXRpb248L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGV0YWlsLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2hlY2staWNvbiByZW0xXCIgc3R5bGU9XCJmaWx0ZXI6IGludmVydCgyNiUpIHNlcGlhKDI3JSkgc2F0dXJhdGUoMTA5MyUpIGh1ZS1yb3RhdGUoMTE0ZGVnKSBicmlnaHRuZXNzKDkzJSkgY29udHJhc3QoOTAlKTtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPk5vIHJlcG9ydGVkIGlzc3VlcyBhdCB0aGlzIHRpbWU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5Ib3RlbGluZzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93IGZsZXgtY29sdW1uIGdhcC0wXzc1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+QWxsb3cgdGhpcyBkZXZpY2UgdG8gYmUgdXNlZCBhcyBhIEhvdGVsaW5nIEhvc3QgYnkgdmlzaXRpbmcgZ3Vlc3RzLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9nZ2xlLXdyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgbmFtZT1cImxvZ01pc3NlZENhbGxzXCIgW2Zvcm1Db250cm9sXT1cImhvdGVsaW5nRW5hYmxlZFwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8taWNvbiByZW0xXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZpbHRlcjogaW52ZXJ0KDIwJSkgc2VwaWEoOTklKSBzYXR1cmF0ZSgyMDY1JSkgaHVlLXJvdGF0ZSgxOTdkZWcpIGJyaWdodG5lc3MoOTIlKSBjb250cmFzdCgxMDElKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0VuYWJsaW5nIHRoaXMgZGV2aWNlIGZvciBIb3RlbGluZyBtZWFucyB0aGF0IGEgZ3Vlc3QgKGVuZCB1c2VyKSBjYW4gbG9nIGludG8gdGhpcyBob3N0ICh3b3Jrc3BhY2UgcGhvbmUpIGFuZCB1c2UgdGhpcyBwaG9uZSBhcyBpZiBpdCB3ZXJlIHRoZWlyIG93bi4gVGhpcyBpcyB1c2VmdWwgd2hlbiB0cmF2ZWxpbmcgdG8gYSByZW1vdGUgb2ZmaWNlIGJ1dCBzdGlsbCBuZWVkaW5nIHRvIHBsYWNlL3JlY2VpdmUgY2FsbHMgd2l0aCB0aGVpciB0ZWxlcGhvbmUgbnVtYmVyIGFuZCB0byBhY2Nlc3MgZmVhdHVyZXMgbm9ybWFsbHkgYXZhaWxhYmxlIHRvIHRoZW0gb24gdGhlaXIgb3duIG9mZmljZSBwaG9uZS4nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5MaW1pdCB0aGUgdGltZSBhIGd1ZXN0IGNhbiB1c2UgdGhpcyBwaG9uZSB0bzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwiZ3Vlc3RIb3Vyc0xpbWl0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0eXBlIG9mIEhPVEVMSU5HX1RJTUVfSE9VUlNcIiBbdmFsdWVdPVwidHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3t0eXBlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5EZXZpY2UgTWFuYWdlbWVudDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93IGZsZXgtY29sdW1uIGdhcC0wXzc1XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+VGhlIHVzZXJzIGFuZCB3b3Jrc3BhY2VzIHRoYXQgYXBwZWFyIG9uIHRoaXMgZGV2aWNlIGFyZSBkaXNwbGF5ZWQgYmVsb3cgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5UbyBhZGQgYW5kIHJlbW92ZSB1c2VycyBhbmQgd29ya3NwYWNlcywgc2VsZWN0IDxiPkNvbmZpZ3VyZSBMaW5lcy48L2I+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5UbyBjdXN0b21pemUgdGhlIHByb2dyYW1tYWJsZSBMaW5lIEtleXMsIHNlbGVjdCA8Yj5Db25maWd1cmUgTGF5b3V0LjwvYj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPlRvIHNldCB1cCB0aGUgZGlzcGxheSBzZXR0aW5ncyBhbmQgZGlhbGluZyBvcHRpb25zLCBzZWxlY3QgPGI+RGV2aWNlIFNldHRpbmdzPC9iPi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRhYmxlIHN0eWxlPVwiYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT1cImJhY2tncm91bmQ6I2VkZWRlZDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInBhZGRpbmc6MTBweCAxNnB4OyBmb250LXNpemU6Ljc1cmVtOyBmb250LXdlaWdodDo0MDA7IGNvbG9yOiM1NDU0NTQ7IHRleHQtYWxpZ246bGVmdDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5JbmRleCAjPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInBhZGRpbmc6MTBweCAxNnB4OyBmb250LXNpemU6Ljc1cmVtOyBmb250LXdlaWdodDo0MDA7IGNvbG9yOiM1NDU0NTQ7IHRleHQtYWxpZ246bGVmdDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5OYW1lPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInBhZGRpbmc6MTBweCAxNnB4OyBmb250LXNpemU6Ljc1cmVtOyBmb250LXdlaWdodDo0MDA7IGNvbG9yOiM1NDU0NTQ7IHRleHQtYWxpZ246bGVmdDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5OdW1iZXIvRXh0ZW5zaW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT1cInBhZGRpbmc6MTBweCAxNnB4OyBmb250LXNpemU6Ljc1cmVtOyBmb250LXdlaWdodDo0MDA7IGNvbG9yOiM1NDU0NTQ7IHRleHQtYWxpZ246bGVmdDsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5BcHBlYXJhbmNlczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9XCJwYWRkaW5nOjEwcHggMTZweDsgZm9udC1zaXplOi43NXJlbTsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjojNTQ1NDU0OyB0ZXh0LWFsaWduOmxlZnQ7IGJvcmRlci1ib3R0b206MXB4IHNvbGlkICNlOGU4ZTg7XCI+UmVnaXN0ZXJlZDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRldmljZT8ubGluZXMgJiYgZGV2aWNlPy5saW5lcy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT1cImJhY2tncm91bmQ6I2ZmZjsgY3Vyc29yOnBvaW50ZXI7XCIgb25tb3VzZW92ZXI9XCJ0aGlzLnN0eWxlLmJhY2tncm91bmQ9JyNmYWZhZmEnXCIgb25tb3VzZW91dD1cInRoaXMuc3R5bGUuYmFja2dyb3VuZD0nI2ZmZidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbGluZSBvZiBkZXZpY2UubGluZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiAuMjVyZW0gMS4yNXJlbSAuMjVyZW0gLjc1cmVtOzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgY29sb3I6IzAwMDAwMGYyOyBwYWRkaW5nOjRweCAxNHB4OyBmb250LXNpemU6Ljg3NXJlbTsgZm9udC13ZWlnaHQ6NDAwO1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cInBhZGRpbmc6IC4yNXJlbSAxLjI1cmVtIC4yNXJlbSAuNzVyZW07OyBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZThlOGU4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrOyBjb2xvcjojMDAwMDAwZjI7IHBhZGRpbmc6NHB4IDE0cHg7IGZvbnQtc2l6ZTouODc1cmVtOyBmb250LXdlaWdodDo0MDA7XCI+e3tsaW5lPy5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiAuMjVyZW0gMS4yNXJlbSAuMjVyZW0gLjc1cmVtOzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6IDEyMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuY29udGVudGVkaXRhYmxlXT1cIiFpc1dlYmV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbk51bWJlckNoYW5nZSgkZXZlbnQsIGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbGluZT8ubnVtYmVyIHx8ICdOQScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiAmbmJzcDsvJm5ic3A7IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5jb250ZW50ZWRpdGFibGVdPVwiIWlzV2ViZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uRXh0ZW5zaW9uQ2hhbmdlKCRldmVudCwgaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBsaW5lPy5leHRlbnNpb24gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWRldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250cm9sXT1cImxpbmVzQ29udHJvbHMuYXQoaSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVQYXJ0aXRpb25dPVwibGluZS5yb3V0ZVBhcnRpdGlvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlyZWN0b3J5TnVtYmVyXT1cImxpbmUuZGlyZWN0b3J5TnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NpdGVJZF09XCJzaXRlSWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FeHRlbnNpb25DaGFuZ2UoJGV2ZW50LCBpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWRldmljZS1hc3NvY2lhdGVkLWxpbmUtZXh0ZW5zaW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiAuMjVyZW0gMS4yNXJlbSAuMjVyZW0gLjc1cmVtOzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazsgY29sb3I6IzAwMDAwMGYyOyBwYWRkaW5nOjRweCAxNHB4OyBmb250LXNpemU6Ljg3NXJlbTsgZm9udC13ZWlnaHQ6NDAwO1wiPjE8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9XCJwYWRkaW5nOiAuMjVyZW0gMS4yNXJlbSAuMjVyZW0gLjc1cmVtOzsgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2U4ZThlODtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIHdhcm5pbmctaWNvbiByZW0xXCIgW21hdFRvb2x0aXBdPVwiJ1VucmVnaXN0ZXJlZCdcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRvdGFsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPjE1IG9mIDE2IHRvdGFsIGxpbmVzIGF2YWlsYWJsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLWxpbmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBjb25maWd1cmUtaWNvbiByZW0xLTI1XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPkNvbmZpZ3VyZSBMaW5lczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImN1cnNvcjogcG9pbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiIHN0eWxlPVwiZm9udC13ZWlnaHQ6IDUwMDtcIj5NYW5hZ2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGFycm93LXJpZ2h0LWljb24gcmVtMS0yNVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBjb25maWd1cmUtaWNvbiByZW0xLTI1XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPkNvbmZpZ3VyZSBMYXlvdXQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDA7XCI+TWFuYWdlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBhcnJvdy1yaWdodC1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gY29uZmlndXJlLWljb24gcmVtMS0yNVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5EZXZpY2UgU2V0dGluZ3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDA7XCI+TWFuYWdlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBhcnJvdy1yaWdodC1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9zZWN0aW9uPlxyXG5cclxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5TdXBwb3J0PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3cgZmxleC1jb2x1bW4gZ2FwLTBfNzVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLWxpbmVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPk1lZXRpbmdzICYgQ2FsbHM8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBuZXdcIj5OZXc8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8taWNvbiByZW0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ1Ryb3VibGVzaG9vdGluZyBwcm92aWRlcyBkZXRhaWxzIGFib3V0IHRoZSBkZXZpY2UgcmVsYXRlZCB0byBzdGF0dXMsIG5ldHdvcmsgYWN0aXZpdHksIGFuZCBjYWxsIGluZm9ybWF0aW9uLidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIiBzdHlsZT1cImZvbnQtd2VpZ2h0OiA1MDA7XCI+R28gdG8gdHJvdWJsZXNob290aW5nPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBhcnJvdy1yaWdodC1pY29uIHJlbTEtMjVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGVzY3JpcHRpb25cIj5EZXZpY2UgTG9nczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gaW5mby1pY29uIHJlbTFcIiBbbWF0VG9vbHRpcF09XCInR2VuZXJhdGUgZGV2aWNlIGxvZ3MgYW5kIGRvd25sb2FkIHRoZW0gdG8geW91ciBjb21wdXRlci4nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCIgc3R5bGU9XCJmb250LXdlaWdodDogNTAwO1wiPk1hbmFnZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb24gYXJyb3ctcmlnaHQtaWNvbiByZW0xLTI1XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvc2VjdGlvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuICBcclxuPC9kaXY+Il19