@c8y/ngx-components 1017.0.8 → 1017.0.9
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.
- package/esm2020/actility-device-registration/actility-device-registration.component.mjs +3 -3
- package/esm2020/context-dashboard/context-dashboard.component.mjs +3 -3
- package/esm2020/context-dashboard/dashboard-detail.component.mjs +3 -3
- package/esm2020/context-dashboard/device-info-dashboard/device-info-dashboard.component.mjs +43 -51
- package/esm2020/context-dashboard/widget-preview.component.mjs +3 -3
- package/esm2020/core/authentication/sms-challenge.component.mjs +3 -3
- package/esm2020/core/authentication/totp-challenge.component.mjs +3 -3
- package/esm2020/core/breadcrumb/breadcrumb-outlet.component.mjs +3 -3
- package/esm2020/core/dashboard/dashboard-child.component.mjs +3 -3
- package/esm2020/core/dashboard/widget-time-context.component.mjs +3 -3
- package/esm2020/core/data-grid/data-grid.component.mjs +3 -3
- package/esm2020/core/date-picker/date-picker.component.mjs +3 -3
- package/esm2020/core/drop-area/drop-area.component.mjs +3 -3
- package/esm2020/core/file-picker/file-picker.component.mjs +3 -3
- package/esm2020/core/header/application/app-switcher.component.mjs +3 -3
- package/esm2020/core/login/credentials.component.mjs +3 -3
- package/esm2020/core/login/login.component.mjs +3 -3
- package/esm2020/core/modal/modal.component.mjs +3 -3
- package/esm2020/core/select/typeahead.component.mjs +3 -3
- package/esm2020/device-grid/columns/alarms.cell-renderer.component.mjs +3 -3
- package/esm2020/loriot-device-registration/loriot-device-registration-button.component.mjs +3 -1
- package/esm2020/loriot-device-registration/loriot-device-registration.component.mjs +3 -3
- package/esm2020/operations/bulk-operations-list/bulk-operations-list.component.mjs +3 -3
- package/esm2020/operations/operations-list/operations-list-item.component.mjs +3 -3
- package/esm2020/operations/operations-list/operations-list.component.mjs +3 -3
- package/esm2020/register-device/bulk/bulk-device-registration-modal.component.mjs +3 -3
- package/esm2020/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.mjs +3 -3
- package/esm2020/register-device/extensible/single/extensible-device-registration-modal.component.mjs +3 -3
- package/esm2020/register-device/general/general-device-registration.component.mjs +3 -3
- package/esm2020/repository/software/device-tab/device-software-list.component.mjs +3 -3
- package/esm2020/repository/software/device-tab/installed-software.component.mjs +3 -3
- package/esm2020/repository/software/list/add-software-modal.component.mjs +3 -3
- package/esm2020/sigfox-device-registration/sigfox-device-registration.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-actility-device-registration.mjs +2 -2
- package/fesm2015/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +48 -56
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-device-grid.mjs +2 -2
- package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs +4 -2
- package/fesm2015/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
- package/fesm2015/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-operations-operations-list.mjs +4 -4
- package/fesm2015/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-register-device.mjs +8 -8
- package/fesm2015/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-repository-software.mjs +6 -6
- package/fesm2015/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
- package/fesm2015/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +28 -28
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-actility-device-registration.mjs +2 -2
- package/fesm2020/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +48 -56
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-device-grid.mjs +2 -2
- package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs +4 -2
- package/fesm2020/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs +2 -2
- package/fesm2020/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-operations-operations-list.mjs +4 -4
- package/fesm2020/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-register-device.mjs +8 -8
- package/fesm2020/c8y-ngx-components-register-device.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-repository-software.mjs +6 -6
- package/fesm2020/c8y-ngx-components-repository-software.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs +2 -2
- package/fesm2020/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +28 -28
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +6 -9
- package/package.json +2 -2
|
@@ -200,7 +200,7 @@ export class GeneralDeviceRegistrationComponent {
|
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
202
|
GeneralDeviceRegistrationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GeneralDeviceRegistrationComponent, deps: [{ token: i1.TenantUiService }, { token: i2.TenantService }, { token: i3.RegisterDeviceService }, { token: i2.InventoryService }, { token: i0.ChangeDetectorRef }, { token: i4.BsModalRef }, { token: i1.GainsightService }], target: i0.ɵɵFactoryTarget.Component });
|
|
203
|
-
GeneralDeviceRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: GeneralDeviceRegistrationComponent, selector: "c8y-general-device-registration", ngImport: i0, template: "<c8y-modal [headerClasses]=\"'dialog-header'\"
|
|
203
|
+
GeneralDeviceRegistrationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: GeneralDeviceRegistrationComponent, selector: "c8y-general-device-registration", ngImport: i0, template: "<c8y-modal\n [title]=\"'Register devices' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <c8y-stepper [hideStepProgress]=\"true\" linear c8y-modal-body>\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-16 text-center sticky-top separator-bottom bg-component\">\n <p class=\"text-medium text-16\" translate>Register a general device</p>\n </div>\n <div>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n class=\"formly-group-array-cols d-block p-24 min-height-fit p-r-8\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"!form?.valid\"\n [pending]=\"isLoading$ | async\"\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-24 min-height-fit\">\n <c8y-operation-result\n *ngIf=\"success.length === 1 && failed.length === 0\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0 && failed.length === 1\"\n text=\"{{ 'Failed to register device' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n\n <ng-container *ngIf=\"success.length > 1 || failed.length > 1\">\n <c8y-operation-result\n *ngIf=\"failed.length === 0\"\n [text]=\"\n '{{ successfulDevicesCount }} devices registered'\n | translate: { successfulDevicesCount: success.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0\"\n [text]=\"\n '{{ failedDevicesCount }} devices failed to register'\n | translate: { failedDevicesCount: failed.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-container>\n\n <div *ngIf=\"success.length > 0 && failed.length > 0\" class=\"p-l-24 p-r-24 text-center\">\n <c8y-operation-result\n text=\"{{ 'Several devices failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <p\n ngNonBindable\n translate\n [translateParams]=\"{ count: failed.length, total: failed.length + success.length }\"\n class=\"p-b-16 text-danger\"\n >\n Registration failed for {{ count }} devices out of {{ total }}.\n </p>\n </div>\n\n <div class=\"m-b-8 p-l-24 p-r-24\" *ngIf=\"success.length > 0\" translate>\n Turn on the registered device(s) and wait for connection(s) to be established. Once a\n device is connected, its status will change to \"Pending acceptance\". You will need to\n approve it by clicking on the \"Accept\" button.\n </div>\n\n <c8y-list-group class=\"separator-top m-t-16\">\n <c8y-li *ngFor=\"let fail of failed\">\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <p>{{ fail?.id }}</p>\n <small>{{ fail?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ fail?.details | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n\n <c8y-li *ngFor=\"let s of success\">\n <c8y-li-icon class=\"text-success\" [icon]=\"'check-circle'\"></c8y-li-icon>\n {{ s?.id }}\n </c8y-li>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n (onCustom)=\"bsModalRef.hide()\"\n (onBack)=\"fixErrors($event, failed)\"\n [showButtons]=\"{ back: failed.length > 0, custom: true }\"\n [labels]=\"{ back: 'Fix errors', custom: 'Close' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "component", type: i1.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i1.C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "component", type: i6.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: i1.C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i7.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.JsonPipe, name: "json" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
204
204
|
__decorate([
|
|
205
205
|
memoize(),
|
|
206
206
|
__metadata("design:type", Function),
|
|
@@ -221,6 +221,6 @@ __decorate([
|
|
|
221
221
|
], GeneralDeviceRegistrationComponent.prototype, "getGroups$", null);
|
|
222
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GeneralDeviceRegistrationComponent, decorators: [{
|
|
223
223
|
type: Component,
|
|
224
|
-
args: [{ selector: 'c8y-general-device-registration', changeDetection: ChangeDetectionStrategy.OnPush, template: "<c8y-modal [headerClasses]=\"'dialog-header'\"
|
|
224
|
+
args: [{ selector: 'c8y-general-device-registration', changeDetection: ChangeDetectionStrategy.OnPush, template: "<c8y-modal\n [title]=\"'Register devices' | translate\"\n [headerClasses]=\"'dialog-header'\"\n [customFooter]=\"true\"\n>\n <ng-container c8y-modal-title>\n <span [c8yIcon]=\"'c8y-device-connect'\"></span>\n </ng-container>\n <c8y-stepper [hideStepProgress]=\"true\" linear c8y-modal-body>\n <cdk-step [stepControl]=\"form\">\n <div class=\"p-16 text-center sticky-top separator-bottom bg-component\">\n <p class=\"text-medium text-16\" translate>Register a general device</p>\n </div>\n <div>\n <formly-form\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n class=\"formly-group-array-cols d-block p-24 min-height-fit p-r-8\"\n ></formly-form>\n </div>\n <c8y-stepper-buttons\n (onNext)=\"create($event)\"\n (onCancel)=\"bsModalRef.hide()\"\n [showButtons]=\"{ cancel: true, next: true }\"\n [disabled]=\"!form?.valid\"\n [pending]=\"isLoading$ | async\"\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n ></c8y-stepper-buttons>\n </cdk-step>\n <cdk-step state=\"final\">\n <div class=\"p-24 min-height-fit\">\n <c8y-operation-result\n *ngIf=\"success.length === 1 && failed.length === 0\"\n text=\"{{ 'Device registered' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0 && failed.length === 1\"\n text=\"{{ 'Failed to register device' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n\n <ng-container *ngIf=\"success.length > 1 || failed.length > 1\">\n <c8y-operation-result\n *ngIf=\"failed.length === 0\"\n [text]=\"\n '{{ successfulDevicesCount }} devices registered'\n | translate: { successfulDevicesCount: success.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"success\"\n class=\"lead\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngIf=\"success.length === 0\"\n [text]=\"\n '{{ failedDevicesCount }} devices failed to register'\n | translate: { failedDevicesCount: failed.length }\n \"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n </ng-container>\n\n <div *ngIf=\"success.length > 0 && failed.length > 0\" class=\"p-l-24 p-r-24 text-center\">\n <c8y-operation-result\n text=\"{{ 'Several devices failed to register' | translate }}\"\n [size]=\"84\"\n [vertical]=\"true\"\n type=\"error\"\n class=\"lead\"\n ></c8y-operation-result>\n <p\n ngNonBindable\n translate\n [translateParams]=\"{ count: failed.length, total: failed.length + success.length }\"\n class=\"p-b-16 text-danger\"\n >\n Registration failed for {{ count }} devices out of {{ total }}.\n </p>\n </div>\n\n <div class=\"m-b-8 p-l-24 p-r-24\" *ngIf=\"success.length > 0\" translate>\n Turn on the registered device(s) and wait for connection(s) to be established. Once a\n device is connected, its status will change to \"Pending acceptance\". You will need to\n approve it by clicking on the \"Accept\" button.\n </div>\n\n <c8y-list-group class=\"separator-top m-t-16\">\n <c8y-li *ngFor=\"let fail of failed\">\n <c8y-li-icon class=\"text-danger\" [icon]=\"'ban'\"></c8y-li-icon>\n <p>{{ fail?.id }}</p>\n <small>{{ fail?.message | translate }}</small>\n <c8y-li-collapse>\n <pre><code>{{ fail?.details | json }}</code></pre>\n </c8y-li-collapse>\n </c8y-li>\n\n <c8y-li *ngFor=\"let s of success\">\n <c8y-li-icon class=\"text-success\" [icon]=\"'check-circle'\"></c8y-li-icon>\n {{ s?.id }}\n </c8y-li>\n </c8y-list-group>\n </div>\n <c8y-stepper-buttons\n class=\"sticky-bottom d-block p-t-16 p-b-16 separator-top bg-level-0\"\n (onCustom)=\"bsModalRef.hide()\"\n (onBack)=\"fixErrors($event, failed)\"\n [showButtons]=\"{ back: failed.length > 0, custom: true }\"\n [labels]=\"{ back: 'Fix errors', custom: 'Close' }\"\n ></c8y-stepper-buttons>\n </cdk-step>\n </c8y-stepper>\n</c8y-modal>\n" }]
|
|
225
225
|
}], ctorParameters: function () { return [{ type: i1.TenantUiService }, { type: i2.TenantService }, { type: i3.RegisterDeviceService }, { type: i2.InventoryService }, { type: i0.ChangeDetectorRef }, { type: i4.BsModalRef }, { type: i1.GainsightService }]; }, propDecorators: { canLoadTenants$: [], getTenants$: [], getGroups$: [] } });
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9nZW5lcmFsL2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvZ2VuZXJhbC9nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLE9BQU8sRUFFUCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBR0wsZ0JBQWdCLEVBR2hCLGFBQWEsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQWFqRCxNQUFNLE9BQU8sa0NBQWtDO0lBbUk3QyxZQUNVLGVBQWdDLEVBQ2hDLGFBQTRCLEVBQzVCLHFCQUE0QyxFQUM1QyxnQkFBa0MsRUFDbEMsRUFBcUIsRUFDdEIsVUFBc0IsRUFDckIsZ0JBQWtDO1FBTmxDLG9CQUFlLEdBQWYsZUFB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RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUM3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFDdEUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FDbkIsQ0FDRixDQUNGLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OytIQTFPVSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyx1RUN6Qy9DLHd4SkEwSEE7QURzSUU7SUFEQyxPQUFPLEVBQUU7OztvQ0FDaUIsVUFBVTt5RUFFcEM7QUFHRDtJQURDLE9BQU8sRUFBRTs7O29DQUNhLFVBQVU7cUVBRWhDO0FBR0Q7SUFEQyxPQUFPLEVBQUU7OztvQ0FDWSxVQUFVO29FQVMvQjsyRkExT1Usa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGlDQUFpQyxtQkFFMUIsdUJBQXVCLENBQUMsTUFBTTs2UkF5TnZDLGVBQWUsTUFLZixXQUFXLE1BS1gsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7XG4gIFRlbmFudFVpU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgQzh5U3RlcHBlcixcbiAgbWVtb2l6ZSxcbiAgR2FpbnNpZ2h0U2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIElEZXZpY2VSZWdpc3RyYXRpb24sXG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJbnZlbnRvcnlTZXJ2aWNlLFxuICBJUmVzdWx0TGlzdCxcbiAgSVRlbmFudCxcbiAgVGVuYW50U2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBSZWdpc3RlckRldmljZVNlcnZpY2UgfSBmcm9tICcuLi9yZWdpc3Rlci1kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDZGtTdGVwIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbnRlcmZhY2UgR2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbk1vZGVsVHlwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlbmFudD86IHsgaWQ6IHN0cmluZyB9O1xuICBncm91cD86IHsgaWQ6IHN0cmluZzsgbmFtZT86IHN0cmluZyB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdnZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgTUFOQUdFTUVOVCA9ICdtYW5hZ2VtZW50JztcbiAgcmVhZG9ubHkgRklMVEVSOiBvYmplY3QgPSB7XG4gICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgcGFnZVNpemU6IDI1XG4gIH07XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHtcbiAgICBkZXZpY2VzVG9DcmVhdGU6IFt7fSBhcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlXVxuICB9O1xuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHtcbiAgICBmb3JtU3RhdGU6IHtcbiAgICAgIGNhbkxvYWRUZW5hbnRzOiB0cnVlXG4gICAgfVxuICB9O1xuXG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHN1Y2Nlc3M6IElEZXZpY2VSZWdpc3RyYXRpb25bXSA9IFtdO1xuICBmYWlsZWQ6IElEZXZpY2VSZWdpc3RyYXRpb25bXSA9IFtdO1xuXG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAga2V5OiAnZGV2aWNlc1RvQ3JlYXRlJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBhZGRUZXh0OiBnZXR0ZXh0KCdBZGQgZGV2aWNlJyksXG4gICAgICAgIGFkZFRleHREYXRhQ3k6ICdhZGQtZGV2aWNlJ1xuICAgICAgfSxcbiAgICAgIGZpZWxkQXJyYXk6IHtcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2lkJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZm9jdXM6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzYWIzMmZjZCcsXG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXZpY2UgSUQnKSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgICAgIHVuaXF1ZToge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSAoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wucm9vdC5nZXQoJ2RldmljZXNUb0NyZWF0ZScpLnZhbHVlIGFzIEFycmF5PHsgaWQ6IHN0cmluZyB9PlxuICAgICAgICAgICAgICAgICAgKS5maWx0ZXIoZWwgPT4gZWwuaWQgPT09IGNvbnRyb2wudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICgpID0+IGdldHRleHQoJ0RldmljZSBJRCBkdXBsaWNhdGVzIGFyZSBub3QgYWxsb3dlZCcpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3RlbmFudCcsXG4gICAgICAgICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgICAgICAgIGhpZGVFeHByZXNzaW9uOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWZvcm1TdGF0ZT8uY2FuTG9hZFRlbmFudHMpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gIWZvcm1TdGF0ZT8uY2FuTG9hZFRlbmFudHMgfHwgZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGlkOiB0aGlzLk1BTkFHRU1FTlQgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQWRkIHRvIHRlbmFudCcpLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5jYW5Mb2FkVGVuYW50cyQoKS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihjYW5Mb2FkID0+IGNhbkxvYWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldFRlbmFudHMkKCkpXG4gICAgICAgICAgICAgICkgYXMgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJVGVuYW50Pj4sXG4gICAgICAgICAgICAgIGNvbnRhaW5lcjogJ2JvZHknLFxuICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICdpZCcsXG4gICAgICAgICAgICAgIHZhbHVlUHJvcGVydGllczogWydpZCddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgb25Jbml0OiBfZmllbGQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhbkxvYWRUZW5hbnRzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAoY2FuTG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUuY2FuTG9hZFRlbmFudHMgPSBjYW5Mb2FkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZ3JvdXAnLFxuICAgICAgICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhbnksXG4gICAgICAgICAgICAgICAgZm9ybVN0YXRlOiBhbnksXG4gICAgICAgICAgICAgICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnXG4gICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtU3RhdGU/LmNhbkxvYWRUZW5hbnRzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobW9kZWw/LnRlbmFudD8uaWQgIT09IHRoaXMuTUFOQUdFTUVOVCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiAhKG1vZGVsPy50ZW5hbnQ/LmlkID09PSB0aGlzLk1BTkFHRU1FTlQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgZmllbGQ/LnRlbXBsYXRlT3B0aW9ucz8uZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FkZCB0byBncm91cCcpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICAgICAnWW91IGNhbiBhZGQgZGV2aWNlIHRvIHNwZWNpZmljIGdyb3VwIGZvciBtYW5hZ2VtZW50IHRlbmFudCBvbmx5LidcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ25hbWUnLFxuICAgICAgICAgICAgICB2YWx1ZVByb3BlcnRpZXM6IFsnaWQnXSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5nZXRHcm91cHMkKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICBvbkluaXQ6IF9maWVsZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY2FuTG9hZFRlbmFudHMkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChjYW5Mb2FkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5jYW5Mb2FkVGVuYW50cyA9IGNhbkxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbGFzdENyZWF0ZWREZXZpY2VzOiBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbmFudFVJU2VydmljZTogVGVuYW50VWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlZ2lzdGVyRGV2aWNlU2VydmljZTogUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2UubG9hZGluZyQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBjcmVhdGUoZXZlbnRPYmplY3Q6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9KSB7XG4gICAgaWYgKHRoaXMubW9kZWw/LmRldmljZXNUb0NyZWF0ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sYXN0Q3JlYXRlZERldmljZXMgPSBbLi4udGhpcy5tb2RlbC5kZXZpY2VzVG9DcmVhdGVdO1xuXG4gICAgICBjb25zdCBkYXRhVG9TZW5kID0gdGhpcy5tb2RlbC5kZXZpY2VzVG9DcmVhdGUubWFwKFxuICAgICAgICAoZWw6IEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Nb2RlbFR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGlkLCB0ZW5hbnQsIGdyb3VwIH0gPSBlbDtcbiAgICAgICAgICBsZXQgZGF0YTogeyBpZDogc3RyaW5nOyB0ZW5hbnRJZD86IHN0cmluZzsgZ3JvdXBJZD86IHN0cmluZyB9ID0geyBpZCB9O1xuXG4gICAgICAgICAgaWYgKHRlbmFudD8uaWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIHRlbmFudElkOiB0ZW5hbnQuaWQgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZ3JvdXA/LmlkKSB7XG4gICAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBncm91cElkOiBncm91cC5pZCB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZVxuICAgICAgICAuY3JlYXRlTXVsdGlwbGUoZGF0YVRvU2VuZClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcXVlc3RzID0+IHtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSByZXF1ZXN0cy5zdWNjZXNzO1xuICAgICAgICAgIGlmICh0aGlzLnN1Y2Nlc3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnLFxuICAgICAgICAgICAgICBuYW1lOiAnc2luZ2xlR2VuZXJhbFJlZ2lzdHJhdGlvbidcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmFpbGVkID0gcmVxdWVzdHMuZmFpbGVkO1xuICAgICAgICAgIGlmICh0aGlzLmZhaWxlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KCdkbURldmljZVJlZ2lzdHJhdGlvbicsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAncmVnaXN0cmF0aW9uRmFpbHVyZScsXG4gICAgICAgICAgICAgIG5hbWU6ICdzaW5nbGVHZW5lcmFsUmVnaXN0cmF0aW9uJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50T2JqZWN0KSB7XG4gICAgICAgICAgICBldmVudE9iamVjdC5zdGVwcGVyLm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpeEVycm9ycyhldmVudDogeyBzdGVwcGVyOiBDOHlTdGVwcGVyOyBzdGVwOiBDZGtTdGVwIH0sIGZhaWxlZFJlcXVlc3RzOiBJRGV2aWNlUmVnaXN0cmF0aW9uW10pIHtcbiAgICBpZiAoZmFpbGVkUmVxdWVzdHMgJiYgZmFpbGVkUmVxdWVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoe1xuICAgICAgICBkZXZpY2VzVG9DcmVhdGU6IFtcbiAgICAgICAgICAuLi50aGlzLmxhc3RDcmVhdGVkRGV2aWNlcy5maWx0ZXIoZWwgPT5cbiAgICAgICAgICAgIGZhaWxlZFJlcXVlc3RzLm1hcChkYXRhID0+IGRhdGEuaWQpLmluY2x1ZGVzKGVsLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgZXZlbnQ/LnN0ZXBwZXIucHJldmlvdXMoKTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBjYW5Mb2FkVGVuYW50cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRVSVNlcnZpY2UuaXNNYW5hZ2VtZW50VGVuYW50KCkpKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRUZW5hbnRzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElUZW5hbnQ+PiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRTZXJ2aWNlLmxpc3QodGhpcy5GSUxURVIpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0R3JvdXBzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgZnJvbShcbiAgICAgICAgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3RRdWVyeShcbiAgICAgICAgICB7IF9fZmlsdGVyOiB7IF9faGFzOiAnYzh5X0lzRGV2aWNlR3JvdXAnIH0sIF9fb3JkZXJieTogW3sgbmFtZTogMSB9XSB9LFxuICAgICAgICAgIHsgLi4udGhpcy5GSUxURVIgfVxuICAgICAgICApXG4gICAgICApXG4gICAgKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxufVxuIiwiPGM4eS1tb2RhbCBbaGVhZGVyQ2xhc3Nlc109XCInZGlhbG9nLWhlYWRlcidcIiBbY3VzdG9tRm9vdGVyXT1cInRydWVcIj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPHNwYW4gW2M4eUljb25dPVwiJ2M4eS1kZXZpY2UtY29ubmVjdCdcIj48L3NwYW4+XG4gICAgPGg0IGlkPVwibW9kYWwtdGl0bGVcIj57eyAnUmVnaXN0ZXIgZGV2aWNlcycgfCB0cmFuc2xhdGUgfX08L2g0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGM4eS1zdGVwcGVyIFtoaWRlU3RlcFByb2dyZXNzXT1cInRydWVcIiBsaW5lYXIgaWQ9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGNkay1zdGVwIFtzdGVwQ29udHJvbF09XCJmb3JtXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiB0ZXh0LWNlbnRlciBzdGlja3ktdG9wIHNlcGFyYXRvci1ib3R0b20gYmctY29tcG9uZW50XCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1tZWRpdW0gdGV4dC0xNiBcIiB0cmFuc2xhdGU+UmVnaXN0ZXIgYSBnZW5lcmFsIGRldmljZTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8Zm9ybWx5LWZvcm1cbiAgICAgICAgICBbZm9ybV09XCJmb3JtXCJcbiAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgW21vZGVsXT1cIm1vZGVsXCJcbiAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm1seS1ncm91cC1hcnJheS1jb2xzIGQtYmxvY2sgcC0yNCBtaW4taGVpZ2h0LWZpdFwiXG4gICAgICAgID48L2Zvcm1seS1mb3JtPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICAob25OZXh0KT1cImNyZWF0ZSgkZXZlbnQpXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgY2FuY2VsOiB0cnVlLCBuZXh0OiB0cnVlIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWZvcm0/LnZhbGlkXCJcbiAgICAgICAgW3BlbmRpbmddPVwiaXNMb2FkaW5nJCB8IGFzeW5jXCJcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICAgIDxjZGstc3RlcCBzdGF0ZT1cImZpbmFsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0yNCBtaW4taGVpZ2h0LWZpdFwiPlxuICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAxICYmIGZhaWxlZC5sZW5ndGggPT09IDBcIlxuICAgICAgICAgIHRleHQ9XCJ7eyAnRGV2aWNlIHJlZ2lzdGVyZWQnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgKm5nSWY9XCJzdWNjZXNzLmxlbmd0aCA9PT0gMCAmJiBmYWlsZWQubGVuZ3RoID09PSAxXCJcbiAgICAgICAgICB0ZXh0PVwie3sgJ0ZhaWxlZCB0byByZWdpc3RlciBkZXZpY2UnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgIHR5cGU9XCJlcnJvclwiXG4gICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMSB8fCBmYWlsZWQubGVuZ3RoID4gMVwiPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgKm5nSWY9XCJmYWlsZWQubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgICAne3sgc3VjY2Vzc2Z1bERldmljZXNDb3VudCB9fSBkZXZpY2VzIHJlZ2lzdGVyZWQnXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgc3VjY2Vzc2Z1bERldmljZXNDb3VudDogc3VjY2Vzcy5sZW5ndGggfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICAgIFt2ZXJ0aWNhbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIHR5cGU9XCJzdWNjZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAwXCJcbiAgICAgICAgICAgIFt0ZXh0XT1cIlxuICAgICAgICAgICAgICAne3sgZmFpbGVkRGV2aWNlc0NvdW50IH19IGRldmljZXMgZmFpbGVkIHRvIHJlZ2lzdGVyJ1xuICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IGZhaWxlZERldmljZXNDb3VudDogZmFpbGVkLmxlbmd0aCB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgKm5nSWY9XCJzdWNjZXNzLmxlbmd0aCA+IDAgJiYgZmFpbGVkLmxlbmd0aCA+IDBcIiBjbGFzcz1cInAtbC0yNCBwLXItMjQgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgIHRleHQ9XCJ7eyAnU2V2ZXJhbCBkZXZpY2VzIGZhaWxlZCB0byByZWdpc3RlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgICAgPjwvYzh5LW9wZXJhdGlvbi1yZXN1bHQ+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIG5nTm9uQmluZGFibGVcbiAgICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7IGNvdW50OiBmYWlsZWQubGVuZ3RoLCB0b3RhbDogZmFpbGVkLmxlbmd0aCArIHN1Y2Nlc3MubGVuZ3RoIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJwLWItMTYgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFJlZ2lzdHJhdGlvbiBmYWlsZWQgZm9yIHt7IGNvdW50IH19IGRldmljZXMgb3V0IG9mIHt7IHRvdGFsIH19LlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm0tYi04IHAtbC0yNCBwLXItMjRcIiAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMFwiIHRyYW5zbGF0ZT5cbiAgICAgICAgICBUdXJuIG9uIHRoZSByZWdpc3RlcmVkIGRldmljZShzKSBhbmQgd2FpdCBmb3IgY29ubmVjdGlvbihzKSB0byBiZSBlc3RhYmxpc2hlZC4gT25jZSBhXG4gICAgICAgICAgZGV2aWNlIGlzIGNvbm5lY3RlZCwgaXRzIHN0YXR1cyB3aWxsIGNoYW5nZSB0byBcIlBlbmRpbmcgYWNjZXB0YW5jZVwiLiBZb3Ugd2lsbCBuZWVkIHRvXG4gICAgICAgICAgYXBwcm92ZSBpdCBieSBjbGlja2luZyBvbiB0aGUgXCJBY2NlcHRcIiBidXR0b24uXG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjOHktbGlzdC1ncm91cCBjbGFzcz1cInNlcGFyYXRvci10b3AgbS10LTE2XCI+XG4gICAgICAgICAgPGM4eS1saSAqbmdGb3I9XCJsZXQgZmFpbCBvZiBmYWlsZWRcIj5cbiAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgW2ljb25dPVwiJ2JhbidcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgPHA+e3sgZmFpbD8uaWQgfX08L3A+XG4gICAgICAgICAgICA8c21hbGw+e3sgZmFpbD8ubWVzc2FnZSB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8Yzh5LWxpLWNvbGxhcHNlPlxuICAgICAgICAgICAgICA8cHJlPjxjb2RlPnt7IGZhaWw/LmRldGFpbHMgfCBqc29uIH19PC9jb2RlPjwvcHJlPlxuICAgICAgICAgICAgPC9jOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgPC9jOHktbGk+XG5cbiAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBzIG9mIHN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxjOHktbGktaWNvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiIFtpY29uXT1cIidjaGVjay1jaXJjbGUnXCI+PC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgIHt7IHM/LmlkIH19XG4gICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIGNsYXNzPVwic3RpY2t5LWJvdHRvbSBkLWJsb2NrIHAtdC0xNiBwLWItMTYgc2VwYXJhdG9yLXRvcCBiZy1sZXZlbC0wXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImJzTW9kYWxSZWYuaGlkZSgpXCJcbiAgICAgICAgKG9uQmFjayk9XCJmaXhFcnJvcnMoJGV2ZW50LCBmYWlsZWQpXCJcbiAgICAgICAgW3Nob3dCdXR0b25zXT1cInsgYmFjazogZmFpbGVkLmxlbmd0aCA+IDAsIGN1c3RvbTogdHJ1ZSB9XCJcbiAgICAgICAgW2xhYmVsc109XCJ7IGJhY2s6ICdGaXggZXJyb3JzJywgY3VzdG9tOiAnQ2xvc2UnIH1cIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICA8L2M4eS1zdGVwcGVyPlxuPC9jOHktbW9kYWw+XG4iXX0=
|
|
226
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3JlZ2lzdGVyLWRldmljZS9nZW5lcmFsL2dlbmVyYWwtZGV2aWNlLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9yZWdpc3Rlci1kZXZpY2UvZ2VuZXJhbC9nZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFFVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLE9BQU8sRUFFUCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFlLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDeEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRixPQUFPLEVBR0wsZ0JBQWdCLEVBR2hCLGFBQWEsRUFDZCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7OztBQWFqRCxNQUFNLE9BQU8sa0NBQWtDO0lBbUk3QyxZQUNVLGVBQWdDLEVBQ2hDLGFBQTRCLEVBQzVCLHFCQUE0QyxFQUM1QyxnQkFBa0MsRUFDbEMsRUFBcUIsRUFDdEIsVUFBc0IsRUFDckIsZ0JBQWtDO1FBTmxDLG9CQUFlLEdBQWYsZUFB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RixJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUM3QixFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFDdEUsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FDbkIsQ0FDRixDQUNGLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7OytIQTFPVSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyx1RUN6Qy9DLHd3SkE2SEE7QURtSUU7SUFEQyxPQUFPLEVBQUU7OztvQ0FDaUIsVUFBVTt5RUFFcEM7QUFHRDtJQURDLE9BQU8sRUFBRTs7O29DQUNhLFVBQVU7cUVBRWhDO0FBR0Q7SUFEQyxPQUFPLEVBQUU7OztvQ0FDWSxVQUFVO29FQVMvQjsyRkExT1Usa0NBQWtDO2tCQUw5QyxTQUFTOytCQUNFLGlDQUFpQyxtQkFFMUIsdUJBQXVCLENBQUMsTUFBTTs2UkF5TnZDLGVBQWUsTUFLZixXQUFXLE1BS1gsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZywgRm9ybWx5Rm9ybU9wdGlvbnMgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7XG4gIFRlbmFudFVpU2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgQzh5U3RlcHBlcixcbiAgbWVtb2l6ZSxcbiAgR2FpbnNpZ2h0U2VydmljZVxufSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBmcm9tLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCBkZWZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIElEZXZpY2VSZWdpc3RyYXRpb24sXG4gIElNYW5hZ2VkT2JqZWN0LFxuICBJbnZlbnRvcnlTZXJ2aWNlLFxuICBJUmVzdWx0TGlzdCxcbiAgSVRlbmFudCxcbiAgVGVuYW50U2VydmljZVxufSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBSZWdpc3RlckRldmljZVNlcnZpY2UgfSBmcm9tICcuLi9yZWdpc3Rlci1kZXZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDZGtTdGVwIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuXG5pbnRlcmZhY2UgR2VuZXJhbERldmljZVJlZ2lzdHJhdGlvbk1vZGVsVHlwZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRlbmFudD86IHsgaWQ6IHN0cmluZyB9O1xuICBncm91cD86IHsgaWQ6IHN0cmluZzsgbmFtZT86IHN0cmluZyB9O1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZ2VuZXJhbC1kZXZpY2UtcmVnaXN0cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICdnZW5lcmFsLWRldmljZS1yZWdpc3RyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgTUFOQUdFTUVOVCA9ICdtYW5hZ2VtZW50JztcbiAgcmVhZG9ubHkgRklMVEVSOiBvYmplY3QgPSB7XG4gICAgd2l0aFRvdGFsUGFnZXM6IHRydWUsXG4gICAgcGFnZVNpemU6IDI1XG4gIH07XG5cbiAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICBtb2RlbCA9IHtcbiAgICBkZXZpY2VzVG9DcmVhdGU6IFt7fSBhcyBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlXVxuICB9O1xuICBvcHRpb25zOiBGb3JtbHlGb3JtT3B0aW9ucyA9IHtcbiAgICBmb3JtU3RhdGU6IHtcbiAgICAgIGNhbkxvYWRUZW5hbnRzOiB0cnVlXG4gICAgfVxuICB9O1xuXG4gIGlzTG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHN1Y2Nlc3M6IElEZXZpY2VSZWdpc3RyYXRpb25bXSA9IFtdO1xuICBmYWlsZWQ6IElEZXZpY2VSZWdpc3RyYXRpb25bXSA9IFtdO1xuXG4gIGZpZWxkczogRm9ybWx5RmllbGRDb25maWdbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAga2V5OiAnZGV2aWNlc1RvQ3JlYXRlJyxcbiAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICBhZGRUZXh0OiBnZXR0ZXh0KCdBZGQgZGV2aWNlJyksXG4gICAgICAgIGFkZFRleHREYXRhQ3k6ICdhZGQtZGV2aWNlJ1xuICAgICAgfSxcbiAgICAgIGZpZWxkQXJyYXk6IHtcbiAgICAgICAgZmllbGRHcm91cDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ2lkJyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgZm9jdXM6IHRydWUsXG4gICAgICAgICAgICB0ZW1wbGF0ZU9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcwMTIzYWIzMmZjZCcsXG4gICAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdEZXZpY2UgSUQnKSxcbiAgICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgICAgIHVuaXF1ZToge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBGb3JtQ29udHJvbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSAoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wucm9vdC5nZXQoJ2RldmljZXNUb0NyZWF0ZScpLnZhbHVlIGFzIEFycmF5PHsgaWQ6IHN0cmluZyB9PlxuICAgICAgICAgICAgICAgICAgKS5maWx0ZXIoZWwgPT4gZWwuaWQgPT09IGNvbnRyb2wudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZvdW5kLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICgpID0+IGdldHRleHQoJ0RldmljZSBJRCBkdXBsaWNhdGVzIGFyZSBub3QgYWxsb3dlZCcpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGtleTogJ3RlbmFudCcsXG4gICAgICAgICAgICB0eXBlOiAndHlwZWFoZWFkJyxcbiAgICAgICAgICAgIGhpZGVFeHByZXNzaW9uOiAobW9kZWw6IGFueSwgZm9ybVN0YXRlOiBhbnksIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWZvcm1TdGF0ZT8uY2FuTG9hZFRlbmFudHMpIHtcbiAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gIWZvcm1TdGF0ZT8uY2FuTG9hZFRlbmFudHMgfHwgZmFsc2U7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IGlkOiB0aGlzLk1BTkFHRU1FTlQgfSxcbiAgICAgICAgICAgIHRlbXBsYXRlT3B0aW9uczoge1xuICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQWRkIHRvIHRlbmFudCcpLFxuICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5jYW5Mb2FkVGVuYW50cyQoKS5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcihjYW5Mb2FkID0+IGNhbkxvYWQpLFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldFRlbmFudHMkKCkpXG4gICAgICAgICAgICAgICkgYXMgT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxJVGVuYW50Pj4sXG4gICAgICAgICAgICAgIGNvbnRhaW5lcjogJ2JvZHknLFxuICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydHk6ICdpZCcsXG4gICAgICAgICAgICAgIHZhbHVlUHJvcGVydGllczogWydpZCddXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgb25Jbml0OiBfZmllbGQgPT5cbiAgICAgICAgICAgICAgICB0aGlzLmNhbkxvYWRUZW5hbnRzJCgpLnBpcGUoXG4gICAgICAgICAgICAgICAgICB0YXAoY2FuTG9hZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy5mb3JtU3RhdGUuY2FuTG9hZFRlbmFudHMgPSBjYW5Mb2FkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnZ3JvdXAnLFxuICAgICAgICAgICAgdHlwZTogJ3R5cGVhaGVhZCcsXG4gICAgICAgICAgICBleHByZXNzaW9uUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAndGVtcGxhdGVPcHRpb25zLmRpc2FibGVkJzogKFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhbnksXG4gICAgICAgICAgICAgICAgZm9ybVN0YXRlOiBhbnksXG4gICAgICAgICAgICAgICAgZmllbGQ6IEZvcm1seUZpZWxkQ29uZmlnXG4gICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmb3JtU3RhdGU/LmNhbkxvYWRUZW5hbnRzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobW9kZWw/LnRlbmFudD8uaWQgIT09IHRoaXMuTUFOQUdFTUVOVCkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5mb3JtQ29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHJldHVybiAhKG1vZGVsPy50ZW5hbnQ/LmlkID09PSB0aGlzLk1BTkFHRU1FTlQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgZmllbGQ/LnRlbXBsYXRlT3B0aW9ucz8uZGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGVtcGxhdGVPcHRpb25zOiB7XG4gICAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0FkZCB0byBncm91cCcpLFxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0dGV4dChcbiAgICAgICAgICAgICAgICAnWW91IGNhbiBhZGQgZGV2aWNlIHRvIHNwZWNpZmljIGdyb3VwIGZvciBtYW5hZ2VtZW50IHRlbmFudCBvbmx5LidcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgY29udGFpbmVyOiAnYm9keScsXG4gICAgICAgICAgICAgIGRpc3BsYXlQcm9wZXJ0eTogJ25hbWUnLFxuICAgICAgICAgICAgICB2YWx1ZVByb3BlcnRpZXM6IFsnaWQnXSxcbiAgICAgICAgICAgICAgYzh5Rm9yT3B0aW9uczogdGhpcy5nZXRHcm91cHMkKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBob29rczoge1xuICAgICAgICAgICAgICBvbkluaXQ6IF9maWVsZCA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY2FuTG9hZFRlbmFudHMkKCkucGlwZShcbiAgICAgICAgICAgICAgICAgIHRhcChjYW5Mb2FkID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmZvcm1TdGF0ZS5jYW5Mb2FkVGVuYW50cyA9IGNhbkxvYWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfVxuICBdO1xuXG4gIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgbGFzdENyZWF0ZWREZXZpY2VzOiBHZW5lcmFsRGV2aWNlUmVnaXN0cmF0aW9uTW9kZWxUeXBlW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbmFudFVJU2VydmljZTogVGVuYW50VWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlZ2lzdGVyRGV2aWNlU2VydmljZTogUmVnaXN0ZXJEZXZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZixcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pc0xvYWRpbmckID0gdGhpcy5yZWdpc3RlckRldmljZVNlcnZpY2UubG9hZGluZyQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBjcmVhdGUoZXZlbnRPYmplY3Q6IHsgc3RlcHBlcjogQzh5U3RlcHBlcjsgc3RlcDogQ2RrU3RlcCB9KSB7XG4gICAgaWYgKHRoaXMubW9kZWw/LmRldmljZXNUb0NyZWF0ZT8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sYXN0Q3JlYXRlZERldmljZXMgPSBbLi4udGhpcy5tb2RlbC5kZXZpY2VzVG9DcmVhdGVdO1xuXG4gICAgICBjb25zdCBkYXRhVG9TZW5kID0gdGhpcy5tb2RlbC5kZXZpY2VzVG9DcmVhdGUubWFwKFxuICAgICAgICAoZWw6IEdlbmVyYWxEZXZpY2VSZWdpc3RyYXRpb25Nb2RlbFR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGlkLCB0ZW5hbnQsIGdyb3VwIH0gPSBlbDtcbiAgICAgICAgICBsZXQgZGF0YTogeyBpZDogc3RyaW5nOyB0ZW5hbnRJZD86IHN0cmluZzsgZ3JvdXBJZD86IHN0cmluZyB9ID0geyBpZCB9O1xuXG4gICAgICAgICAgaWYgKHRlbmFudD8uaWQpIHtcbiAgICAgICAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIHRlbmFudElkOiB0ZW5hbnQuaWQgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZ3JvdXA/LmlkKSB7XG4gICAgICAgICAgICBkYXRhID0geyAuLi5kYXRhLCBncm91cElkOiBncm91cC5pZCB9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICB0aGlzLnJlZ2lzdGVyRGV2aWNlU2VydmljZVxuICAgICAgICAuY3JlYXRlTXVsdGlwbGUoZGF0YVRvU2VuZClcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgICAuc3Vic2NyaWJlKHJlcXVlc3RzID0+IHtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MgPSByZXF1ZXN0cy5zdWNjZXNzO1xuICAgICAgICAgIGlmICh0aGlzLnN1Y2Nlc3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudCgnZG1EZXZpY2VSZWdpc3RyYXRpb24nLCB7XG4gICAgICAgICAgICAgIGFjdGlvbjogJ3JlZ2lzdHJhdGlvblN1Y2Nlc3MnLFxuICAgICAgICAgICAgICBuYW1lOiAnc2luZ2xlR2VuZXJhbFJlZ2lzdHJhdGlvbidcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuZmFpbGVkID0gcmVxdWVzdHMuZmFpbGVkO1xuICAgICAgICAgIGlmICh0aGlzLmZhaWxlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudHJpZ2dlckV2ZW50KCdkbURldmljZVJlZ2lzdHJhdGlvbicsIHtcbiAgICAgICAgICAgICAgYWN0aW9uOiAncmVnaXN0cmF0aW9uRmFpbHVyZScsXG4gICAgICAgICAgICAgIG5hbWU6ICdzaW5nbGVHZW5lcmFsUmVnaXN0cmF0aW9uJ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50T2JqZWN0KSB7XG4gICAgICAgICAgICBldmVudE9iamVjdC5zdGVwcGVyLm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpeEVycm9ycyhldmVudDogeyBzdGVwcGVyOiBDOHlTdGVwcGVyOyBzdGVwOiBDZGtTdGVwIH0sIGZhaWxlZFJlcXVlc3RzOiBJRGV2aWNlUmVnaXN0cmF0aW9uW10pIHtcbiAgICBpZiAoZmFpbGVkUmVxdWVzdHMgJiYgZmFpbGVkUmVxdWVzdHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5vcHRpb25zLnJlc2V0TW9kZWwoe1xuICAgICAgICBkZXZpY2VzVG9DcmVhdGU6IFtcbiAgICAgICAgICAuLi50aGlzLmxhc3RDcmVhdGVkRGV2aWNlcy5maWx0ZXIoZWwgPT5cbiAgICAgICAgICAgIGZhaWxlZFJlcXVlc3RzLm1hcChkYXRhID0+IGRhdGEuaWQpLmluY2x1ZGVzKGVsLmlkKVxuICAgICAgICAgIClcbiAgICAgICAgXVxuICAgICAgfSk7XG4gICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gICAgZXZlbnQ/LnN0ZXBwZXIucHJldmlvdXMoKTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBjYW5Mb2FkVGVuYW50cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRVSVNlcnZpY2UuaXNNYW5hZ2VtZW50VGVuYW50KCkpKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxuXG4gIEBtZW1vaXplKClcbiAgcHJpdmF0ZSBnZXRUZW5hbnRzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElUZW5hbnQ+PiB7XG4gICAgcmV0dXJuIGRlZmVyKCgpID0+IGZyb20odGhpcy50ZW5hbnRTZXJ2aWNlLmxpc3QodGhpcy5GSUxURVIpKSkucGlwZShzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBAbWVtb2l6ZSgpXG4gIHByaXZhdGUgZ2V0R3JvdXBzJCgpOiBPYnNlcnZhYmxlPElSZXN1bHRMaXN0PElNYW5hZ2VkT2JqZWN0Pj4ge1xuICAgIHJldHVybiBkZWZlcigoKSA9PlxuICAgICAgZnJvbShcbiAgICAgICAgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmxpc3RRdWVyeShcbiAgICAgICAgICB7IF9fZmlsdGVyOiB7IF9faGFzOiAnYzh5X0lzRGV2aWNlR3JvdXAnIH0sIF9fb3JkZXJieTogW3sgbmFtZTogMSB9XSB9LFxuICAgICAgICAgIHsgLi4udGhpcy5GSUxURVIgfVxuICAgICAgICApXG4gICAgICApXG4gICAgKS5waXBlKHNoYXJlUmVwbGF5KDEpKTtcbiAgfVxufVxuIiwiPGM4eS1tb2RhbFxuICBbdGl0bGVdPVwiJ1JlZ2lzdGVyIGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgW2hlYWRlckNsYXNzZXNdPVwiJ2RpYWxvZy1oZWFkZXInXCJcbiAgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCJcbj5cbiAgPG5nLWNvbnRhaW5lciBjOHktbW9kYWwtdGl0bGU+XG4gICAgPHNwYW4gW2M4eUljb25dPVwiJ2M4eS1kZXZpY2UtY29ubmVjdCdcIj48L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuICA8Yzh5LXN0ZXBwZXIgW2hpZGVTdGVwUHJvZ3Jlc3NdPVwidHJ1ZVwiIGxpbmVhciBjOHktbW9kYWwtYm9keT5cbiAgICA8Y2RrLXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHRleHQtY2VudGVyIHN0aWNreS10b3Agc2VwYXJhdG9yLWJvdHRvbSBiZy1jb21wb25lbnRcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LW1lZGl1bSB0ZXh0LTE2XCIgdHJhbnNsYXRlPlJlZ2lzdGVyIGEgZ2VuZXJhbCBkZXZpY2U8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxmb3JtbHktZm9ybVxuICAgICAgICAgIFtmb3JtXT1cImZvcm1cIlxuICAgICAgICAgIFtmaWVsZHNdPVwiZmllbGRzXCJcbiAgICAgICAgICBbbW9kZWxdPVwibW9kZWxcIlxuICAgICAgICAgIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybWx5LWdyb3VwLWFycmF5LWNvbHMgZC1ibG9jayBwLTI0IG1pbi1oZWlnaHQtZml0IHAtci04XCJcbiAgICAgICAgPjwvZm9ybWx5LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjOHktc3RlcHBlci1idXR0b25zXG4gICAgICAgIChvbk5leHQpPVwiY3JlYXRlKCRldmVudClcIlxuICAgICAgICAob25DYW5jZWwpPVwiYnNNb2RhbFJlZi5oaWRlKClcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBjYW5jZWw6IHRydWUsIG5leHQ6IHRydWUgfVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhZm9ybT8udmFsaWRcIlxuICAgICAgICBbcGVuZGluZ109XCJpc0xvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInN0aWNreS1ib3R0b20gZC1ibG9jayBwLXQtMTYgcC1iLTE2IHNlcGFyYXRvci10b3AgYmctbGV2ZWwtMFwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gICAgPGNkay1zdGVwIHN0YXRlPVwiZmluYWxcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTI0IG1pbi1oZWlnaHQtZml0XCI+XG4gICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPT09IDEgJiYgZmFpbGVkLmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgdGV4dD1cInt7ICdEZXZpY2UgcmVnaXN0ZXJlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgIGNsYXNzPVwibGVhZFwiXG4gICAgICAgID48L2M4eS1vcGVyYXRpb24tcmVzdWx0PlxuICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID09PSAwICYmIGZhaWxlZC5sZW5ndGggPT09IDFcIlxuICAgICAgICAgIHRleHQ9XCJ7eyAnRmFpbGVkIHRvIHJlZ2lzdGVyIGRldmljZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIFtzaXplXT1cIjg0XCJcbiAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgdHlwZT1cImVycm9yXCJcbiAgICAgICAgICBjbGFzcz1cImxlYWRcIlxuICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPiAxIHx8IGZhaWxlZC5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgPGM4eS1vcGVyYXRpb24tcmVzdWx0XG4gICAgICAgICAgICAqbmdJZj1cImZhaWxlZC5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgW3RleHRdPVwiXG4gICAgICAgICAgICAgICd7eyBzdWNjZXNzZnVsRGV2aWNlc0NvdW50IH19IGRldmljZXMgcmVnaXN0ZXJlZCdcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBzdWNjZXNzZnVsRGV2aWNlc0NvdW50OiBzdWNjZXNzLmxlbmd0aCB9XG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3NpemVdPVwiODRcIlxuICAgICAgICAgICAgW3ZlcnRpY2FsXT1cInRydWVcIlxuICAgICAgICAgICAgdHlwZT1cInN1Y2Nlc3NcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgICA8Yzh5LW9wZXJhdGlvbi1yZXN1bHRcbiAgICAgICAgICAgICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPT09IDBcIlxuICAgICAgICAgICAgW3RleHRdPVwiXG4gICAgICAgICAgICAgICd7eyBmYWlsZWREZXZpY2VzQ291bnQgfX0gZGV2aWNlcyBmYWlsZWQgdG8gcmVnaXN0ZXInXG4gICAgICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHsgZmFpbGVkRGV2aWNlc0NvdW50OiBmYWlsZWQubGVuZ3RoIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiAqbmdJZj1cInN1Y2Nlc3MubGVuZ3RoID4gMCAmJiBmYWlsZWQubGVuZ3RoID4gMFwiIGNsYXNzPVwicC1sLTI0IHAtci0yNCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxjOHktb3BlcmF0aW9uLXJlc3VsdFxuICAgICAgICAgICAgdGV4dD1cInt7ICdTZXZlcmFsIGRldmljZXMgZmFpbGVkIHRvIHJlZ2lzdGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICBbc2l6ZV09XCI4NFwiXG4gICAgICAgICAgICBbdmVydGljYWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICB0eXBlPVwiZXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJsZWFkXCJcbiAgICAgICAgICA+PC9jOHktb3BlcmF0aW9uLXJlc3VsdD5cbiAgICAgICAgICA8cFxuICAgICAgICAgICAgbmdOb25CaW5kYWJsZVxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICBbdHJhbnNsYXRlUGFyYW1zXT1cInsgY291bnQ6IGZhaWxlZC5sZW5ndGgsIHRvdGFsOiBmYWlsZWQubGVuZ3RoICsgc3VjY2Vzcy5sZW5ndGggfVwiXG4gICAgICAgICAgICBjbGFzcz1cInAtYi0xNiB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgUmVnaXN0cmF0aW9uIGZhaWxlZCBmb3Ige3sgY291bnQgfX0gZGV2aWNlcyBvdXQgb2Yge3sgdG90YWwgfX0uXG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibS1iLTggcC1sLTI0IHAtci0yNFwiICpuZ0lmPVwic3VjY2Vzcy5sZW5ndGggPiAwXCIgdHJhbnNsYXRlPlxuICAgICAgICAgIFR1cm4gb24gdGhlIHJlZ2lzdGVyZWQgZGV2aWNlKHMpIGFuZCB3YWl0IGZvciBjb25uZWN0aW9uKHMpIHRvIGJlIGVzdGFibGlzaGVkLiBPbmNlIGFcbiAgICAgICAgICBkZXZpY2UgaXMgY29ubmVjdGVkLCBpdHMgc3RhdHVzIHdpbGwgY2hhbmdlIHRvIFwiUGVuZGluZyBhY2NlcHRhbmNlXCIuIFlvdSB3aWxsIG5lZWQgdG9cbiAgICAgICAgICBhcHByb3ZlIGl0IGJ5IGNsaWNraW5nIG9uIHRoZSBcIkFjY2VwdFwiIGJ1dHRvbi5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwic2VwYXJhdG9yLXRvcCBtLXQtMTZcIj5cbiAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBmYWlsIG9mIGZhaWxlZFwiPlxuICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiBbaWNvbl09XCInYmFuJ1wiPjwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICA8cD57eyBmYWlsPy5pZCB9fTwvcD5cbiAgICAgICAgICAgIDxzbWFsbD57eyBmYWlsPy5tZXNzYWdlIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDxjOHktbGktY29sbGFwc2U+XG4gICAgICAgICAgICAgIDxwcmU+PGNvZGU+e3sgZmFpbD8uZGV0YWlscyB8IGpzb24gfX08L2NvZGU+PC9wcmU+XG4gICAgICAgICAgICA8L2M4eS1saS1jb2xsYXBzZT5cbiAgICAgICAgICA8L2M4eS1saT5cblxuICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IHMgb2Ygc3VjY2Vzc1wiPlxuICAgICAgICAgICAgPGM4eS1saS1pY29uIGNsYXNzPVwidGV4dC1zdWNjZXNzXCIgW2ljb25dPVwiJ2NoZWNrLWNpcmNsZSdcIj48L2M4eS1saS1pY29uPlxuICAgICAgICAgICAge3sgcz8uaWQgfX1cbiAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGM4eS1zdGVwcGVyLWJ1dHRvbnNcbiAgICAgICAgY2xhc3M9XCJzdGlja3ktYm90dG9tIGQtYmxvY2sgcC10LTE2IHAtYi0xNiBzZXBhcmF0b3ItdG9wIGJnLWxldmVsLTBcIlxuICAgICAgICAob25DdXN0b20pPVwiYnNNb2RhbFJlZi5oaWRlKClcIlxuICAgICAgICAob25CYWNrKT1cImZpeEVycm9ycygkZXZlbnQsIGZhaWxlZClcIlxuICAgICAgICBbc2hvd0J1dHRvbnNdPVwieyBiYWNrOiBmYWlsZWQubGVuZ3RoID4gMCwgY3VzdG9tOiB0cnVlIH1cIlxuICAgICAgICBbbGFiZWxzXT1cInsgYmFjazogJ0ZpeCBlcnJvcnMnLCBjdXN0b206ICdDbG9zZScgfVwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gIDwvYzh5LXN0ZXBwZXI+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
@@ -98,10 +98,10 @@ export class DeviceSoftwareListComponent {
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
DeviceSoftwareListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareListComponent, deps: [{ token: i1.AdvancedSoftwareService }], target: i0.ɵɵFactoryTarget.Component });
|
|
101
|
-
DeviceSoftwareListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: { softwareList: "softwareList", device: "device", deviceSoftwareChanges: "deviceSoftwareChanges", filterCriteria$: "filterCriteria$" }, outputs: { update: "update", remove: "remove", onListEmpty: "onListEmpty" }, ngImport: i0, template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs
|
|
101
|
+
DeviceSoftwareListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: { softwareList: "softwareList", device: "device", deviceSoftwareChanges: "deviceSoftwareChanges", filterCriteria$: "filterCriteria$" }, outputs: { update: "update", remove: "remove", onListEmpty: "onListEmpty" }, ngImport: i0, template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n (click)=\"remove.emit(software)\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: i3.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i3.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i3.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i3.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: i3.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] });
|
|
102
102
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceSoftwareListComponent, decorators: [{
|
|
103
103
|
type: Component,
|
|
104
|
-
args: [{ selector: 'c8y-device-software-list', template: "<c8y-list-group class=\"no-border-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs
|
|
104
|
+
args: [{ selector: 'c8y-device-software-list', template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n (click)=\"update.emit(software)\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n (click)=\"remove.emit(software)\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n type=\"button\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n" }]
|
|
105
105
|
}], ctorParameters: function () { return [{ type: i1.AdvancedSoftwareService }]; }, propDecorators: { softwareList: [{
|
|
106
106
|
type: Input
|
|
107
107
|
}], device: [{
|
|
@@ -117,4 +117,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
|
|
|
117
117
|
}], onListEmpty: [{
|
|
118
118
|
type: Output
|
|
119
119
|
}] } });
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNvZnR3YXJlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9zb2Z0d2FyZS9kZXZpY2UtdGFiL2RldmljZS1zb2Z0d2FyZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvc29mdHdhcmUvZGV2aWNlLXRhYi9kZXZpY2Utc29mdHdhcmUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUl2QixrQkFBa0IsRUFDbkIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFNaEcsTUFBTSxPQUFPLDJCQUEyQjtJQXlCdEMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUF4QnBFLHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBUS9CLG9CQUFlLEdBQStCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFD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WUFDTCxJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ0U7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZ0I7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7d0hBakhVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDZSQ2xCeEMseWhIQTZGQTsyRkQzRWEsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLDBCQUEwQjs4R0FLdkIsWUFBWTtzQkFBeEIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZFNvZnR3YXJlU2VydmljZSxcbiAgRGV2aWNlU29mdHdhcmUsXG4gIERldmljZVNvZnR3YXJlQ2hhbmdlLFxuICBGaWx0ZXJDcml0ZXJpYSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgZmlsdGVyLCBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1zb2Z0d2FyZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdkZXZpY2Utc29mdHdhcmUtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU29mdHdhcmVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuICBASW5wdXQoKSBzZXQgc29mdHdhcmVMaXN0KHNvZnR3YXJlTGlzdDogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIGlmIChzb2Z0d2FyZUxpc3QgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGVnYWN5U29mdHdhcmVMaXN0JC5uZXh0KHNvZnR3YXJlTGlzdCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIEBJbnB1dCgpIGRldmljZVNvZnR3YXJlQ2hhbmdlczogRGV2aWNlU29mdHdhcmVDaGFuZ2VbXTtcbiAgQElucHV0KCkgZmlsdGVyQ3JpdGVyaWEkOiBPYnNlcnZhYmxlPEZpbHRlckNyaXRlcmlhPiA9IG9mKG51bGwpO1xuICBAT3V0cHV0KCkgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXZpY2VTb2Z0d2FyZT4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV2aWNlU29mdHdhcmU+KCk7XG4gIEBPdXRwdXQoKSBvbkxpc3RFbXB0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzb2Z0d2FyZUl0ZW1zJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4+O1xuICBzaG93VXBkYXRlOiBib29sZWFuO1xuICBzaG93UmVtb3ZlOiBib29sZWFuO1xuICBlbXB0eUxpc3Q6IGJvb2xlYW47XG4gIG5vU2VhcmNoUmVzdWx0czogYm9vbGVhbjtcbiAgYWxyZWFkeUluc3RhbGxlZE1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGlzIHNvZnR3YXJlIGlzIGFscmVhZHkgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2UnKTtcbiAgc3VwcG9ydHNTb2Z0d2FyZU9wZXJhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9wZXJhdGlvblR5cGVzID0gWydjOHlfU29mdHdhcmVVcGRhdGUnLCAnYzh5X1NvZnR3YXJlTGlzdCcsICdjOHlfU29mdHdhcmUnXTtcblxuICBwcml2YXRlIGxlZ2FjeVNvZnR3YXJlTGlzdCQ6IEJlaGF2aW9yU3ViamVjdDxEZXZpY2VTb2Z0d2FyZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2U6IEFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc29mdHdhcmVJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEkLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5sZWdhY3lTb2Z0d2FyZUxpc3QkXG4gICAgXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2ZpbHRlckNyaXRlcmlhLCBsZWdhY3lTb2Z0d2FyZUxpc3RdKSA9PiB7XG4gICAgICAgIGlmIChsZWdhY3lTb2Z0d2FyZUxpc3QpIHtcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy5nZXRMZWdhY3lTb2Z0d2FyZUxpc3QoZmlsdGVyQ3JpdGVyaWEpKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3VsdExpc3QgPT4gKHsgcmVzdWx0TGlzdCwgZmlsdGVyQ3JpdGVyaWEgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChmaWx0ZXJDcml0ZXJpYSkudGhlbihyZXN1bHRMaXN0ID0+ICh7XG4gICAgICAgICAgICByZXN1bHRMaXN0LFxuICAgICAgICAgICAgZmlsdGVyQ3JpdGVyaWFcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKCh7IHJlc3VsdExpc3QsIGZpbHRlckNyaXRlcmlhIH0pID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0RW1wdHkoIXJlc3VsdExpc3Q/LnBhZ2luZz8udG90YWxQYWdlcyAmJiAhZmlsdGVyQ3JpdGVyaWEpO1xuICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9ICFyZXN1bHRMaXN0Py5wYWdpbmc/LnRvdGFsUGFnZXMgJiYgISFmaWx0ZXJDcml0ZXJpYTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCh7IHJlc3VsdExpc3QgfSkgPT4gcmVzdWx0TGlzdCksXG4gICAgICBzaGFyZSgpXG4gICAgKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRPcGVyYXRpb25zID0gZ2V0KHRoaXMuZGV2aWNlLCAnYzh5X1N1cHBvcnRlZE9wZXJhdGlvbnMnLCBbXSk7XG4gICAgdGhpcy5zdXBwb3J0c1NvZnR3YXJlT3BlcmF0aW9ucyA9IHRoaXMub3BlcmF0aW9uVHlwZXMuc29tZShcbiAgICAgIG9wZXJhdGlvblR5cGUgPT4gc3VwcG9ydGVkT3BlcmF0aW9ucy5pbmRleE9mKG9wZXJhdGlvblR5cGUpID4gLTFcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuc2hvd1VwZGF0ZSA9IHRoaXMudXBkYXRlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICAgIHRoaXMuc2hvd1JlbW92ZSA9IHRoaXMucmVtb3ZlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNTb2Z0d2FyZUdvaW5nVG9CZUNoYW5nZWQoc29mdHdhcmU6IERldmljZVNvZnR3YXJlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVsZXZhbnRDaGFuZ2VzID0gZmlsdGVyKHRoaXMuZGV2aWNlU29mdHdhcmVDaGFuZ2VzLCBzb2Z0d2FyZSk7XG4gICAgcmV0dXJuIHJlbGV2YW50Q2hhbmdlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChcbiAgICBmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWFcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4+IHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIGRldmljZUlkOiB0aGlzLmRldmljZS5pZCxcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8ubmFtZSkge1xuICAgICAgc2V0KHF1ZXJ5RmlsdGVyLCAnbmFtZScsIGAqJHtmaWx0ZXJDcml0ZXJpYS5uYW1lfSpgKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlckNyaXRlcmlhPy5zb2Z0d2FyZVR5cGUpIHtcbiAgICAgIHNldChxdWVyeUZpbHRlciwgJ3R5cGUnLCBgJHtmaWx0ZXJDcml0ZXJpYS5zb2Z0d2FyZVR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlLmxpc3QocXVlcnlGaWx0ZXIpIGFzIHVua25vd24gYXMgUHJvbWlzZTxcbiAgICAgIElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPlxuICAgID47XG4gIH1cblxuICBwcml2YXRlIGdldExlZ2FjeVNvZnR3YXJlTGlzdChmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWEpOiBJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4ge1xuICAgIGNvbnN0IGRhdGEgPSBmaWx0ZXJDcml0ZXJpYVxuICAgICAgPyB0aGlzLmxlZ2FjeVNvZnR3YXJlTGlzdCQudmFsdWUuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgaWYgKGZpbHRlckNyaXRlcmlhPy5uYW1lKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0ubmFtZT8uaW5jbHVkZXMoZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8uc29mdHdhcmVUeXBlKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0uc29mdHdhcmVUeXBlID09PSBmaWx0ZXJDcml0ZXJpYS5zb2Z0d2FyZVR5cGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9KVxuICAgICAgOiB0aGlzLmxlZ2FjeVNvZnR3YXJlTGlzdCQudmFsdWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICByZXM6IG51bGwsXG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgdG90YWxQYWdlczogZGF0YS5sZW5ndGhcbiAgICAgIH0gYXMgUGFnaW5nPERldmljZVNvZnR3YXJlPlxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeUxpc3RFbXB0eShpc0VtcHR5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eUxpc3QgPSBpc0VtcHR5O1xuICAgIHRoaXMub25MaXN0RW1wdHkuZW1pdChpc0VtcHR5KTtcbiAgfVxufVxuIiwiPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibm8tYm9yZGVyLWxhc3RcIj5cbiAgPGM4eS1saVxuICAgIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IGlzU29mdHdhcmVHb2luZ1RvQmVDaGFuZ2VkKHNvZnR3YXJlKSB9XCJcbiAgICAqYzh5Rm9yPVwibGV0IHNvZnR3YXJlIG9mIHNvZnR3YXJlSXRlbXMkXCJcbiAgPlxuICAgIDwhLS0gU09GVFdBUkUgSUNPTiAtLT5cbiAgICA8Yzh5LWxpLWljb24+XG4gICAgICA8aSBjOHlJY29uPVwiYzh5LXRvb2xzXCI+PC9pPlxuICAgIDwvYzh5LWxpLWljb24+XG5cbiAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtMjBcIj5cbiAgICAgIDxkaXYgdGl0bGU9XCJ7eyBzb2Z0d2FyZS5uYW1lIH19XCIgY2xhc3M9XCJjb2wtOVwiPlxuICAgICAgICA8cCBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgIDwhLS0gU09GVFdBUkUgTkFNRSAtLT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIj5cbiAgICAgICAgICAgIHt7IHNvZnR3YXJlLm5hbWUgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSBTT0ZUV0FSRSBUWVBFLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLXByaW1hcnkgbS1sLThcIj57eyBzb2Z0d2FyZS5zb2Z0d2FyZVR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDwhLS0gU09GVFdBUkUgVkVSU0lPTiAtLT5cbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSB0ZXh0LWxhYmVsLXNtYWxsIG0tci00XCIgdHJhbnNsYXRlPlZlcnNpb248L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlIG0tci00XCIgdGl0bGU9XCJ7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XCI+XG4gICAgICAgICAgICB7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cInNvZnR3YXJlLmluc3RhbGxlZFwiXG4gICAgICAgICAgICBjOHlJY29uPVwid2FybmluZ1wiXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtd2FybmluZyBhLXMtY2VudGVyXCJcbiAgICAgICAgICAgIFt0b29sdGlwXT1cIlxuICAgICAgICAgICAgICBhbHJlYWR5SW5zdGFsbGVkTWVzc2FnZVxuICAgICAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IHNvZnR3YXJlLm5hbWUsIHZlcnNpb246IHNvZnR3YXJlLnZlcnNpb24gfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwidG9wXCJcbiAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwic3VwcG9ydHNTb2Z0d2FyZU9wZXJhdGlvbnMgJiYgKHNob3dVcGRhdGUgfHwgc2hvd1JlbW92ZSlcIlxuICAgICAgICBjbGFzcz1cImNvbC0zIHRleHQtcmlnaHQgbS0wIGZsZXgtZ3JvdyBkLWZsZXggYS1pLWNlbnRlclwiXG4gICAgICA+XG4gICAgICAgIDwhLS0gVVBEQVRFIFNPRlRXQVJFIC0tPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJzaG93VXBkYXRlICYmICFpc1NvZnR3YXJlR29pbmdUb0JlQ2hhbmdlZChzb2Z0d2FyZSlcIlxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi14cyBzaG93T25Ib3ZlciBtLWwtYXV0byBtLXItNFwiXG4gICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZS5lbWl0KHNvZnR3YXJlKVwiXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnVXBkYXRlYHNvZnR3YXJlLHZlcmJgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICBbYWN0aW9uTmFtZV09XCJQUk9EVUNUX0VYUEVSSUVOQ0UuU09GVFdBUkUuRVZFTlRTLkRFVklDRV9UQUJcIlxuICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLlNPRlRXQVJFLkNPTVBPTkVOVFMuREVWSUNFX1NPRlRXQVJFX0xJU1QsXG4gICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5TT0ZUV0FSRS5BQ1RJT05TLk9QRU5fVVBEQVRFX1NPRlRXQVJFXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAnVXBkYXRlYHNvZnR3YXJlLHZlcmJgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8IS0tIFJFTU9WRSBTT0ZUV0FSRSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1JlbW92ZSAmJiAhaXNTb2Z0d2FyZUdvaW5nVG9CZUNoYW5nZWQoc29mdHdhcmUpXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IGJ0bi1kb3QtLWRhbmdlciBzaG93T25Ib3ZlciBtLWwtNFwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlbW92ZS5lbWl0KHNvZnR3YXJlKVwiXG4gICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmVgc29mdHdhcmUsdmVyYmAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmVgc29mdHdhcmUsdmVyYmAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLlNPRlRXQVJFLkVWRU5UUy5ERVZJQ0VfVEFCXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5TT0ZUV0FSRS5DT01QT05FTlRTLkRFVklDRV9TT0ZUV0FSRV9MSVNULFxuICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuU09GVFdBUkUuQUNUSU9OUy5ERUxFVEVfU09GVFdBUkVcbiAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9jOHktbGktYm9keT5cbiAgPC9jOHktbGk+XG48L2M4eS1saXN0LWdyb3VwPlxuPCEtLSBOTyBTRUFSQ0ggUkVTVUxUUyBTVEFURSAtLT5cbjxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrXCIgKm5nSWY9XCJub1NlYXJjaFJlc3VsdHMgfHwgZW1wdHlMaXN0XCI+XG4gIDxuZy1jb250ZW50ICpuZ0lmPVwiZW1wdHlMaXN0XCIgc2VsZWN0PVwiLmM4eS1lbXB0eS1zdGF0ZTpub3QoLmM4eS1uby1yZXN1bHRzLXN0YXRlKVwiPjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRlbnQgKm5nSWY9XCJub1NlYXJjaFJlc3VsdHNcIiBzZWxlY3Q9XCIuYzh5LW5vLXJlc3VsdHMtc3RhdGVcIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNvZnR3YXJlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcmVwb3NpdG9yeS9zb2Z0d2FyZS9kZXZpY2UtdGFiL2RldmljZS1zb2Z0d2FyZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3JlcG9zaXRvcnkvc29mdHdhcmUvZGV2aWNlLXRhYi9kZXZpY2Utc29mdHdhcmUtbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUNMLHVCQUF1QixFQUl2QixrQkFBa0IsRUFDbkIsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFNaEcsTUFBTSxPQUFPLDJCQUEyQjtJQXlCdEMsWUFBb0IsdUJBQWdEO1FBQWhELDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUF4QnBFLHVCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBUS9CLG9CQUFlLEdBQStCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFDNUMsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFD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WUFDTCxJQUFJO1lBQ0osR0FBRyxFQUFFLElBQUk7WUFDVCxNQUFNLEVBQUU7Z0JBQ04sVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNO2FBQ0U7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFTyxlQUFlLENBQUMsT0FBZ0I7UUFDdEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsQ0FBQzs7d0hBakhVLDJCQUEyQjs0R0FBM0IsMkJBQTJCLDZSQ2xCeEMscWdIQTZGQTsyRkQzRWEsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLDBCQUEwQjs4R0FLdkIsWUFBWTtzQkFBeEIsS0FBSztnQkFLRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIElSZXN1bHRMaXN0LCBQYWdpbmcgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBZHZhbmNlZFNvZnR3YXJlU2VydmljZSxcbiAgRGV2aWNlU29mdHdhcmUsXG4gIERldmljZVNvZnR3YXJlQ2hhbmdlLFxuICBGaWx0ZXJDcml0ZXJpYSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgZmlsdGVyLCBnZXQsIHNldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHNoYXJlLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LWRldmljZS1zb2Z0d2FyZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICdkZXZpY2Utc29mdHdhcmUtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlU29mdHdhcmVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuICBASW5wdXQoKSBzZXQgc29mdHdhcmVMaXN0KHNvZnR3YXJlTGlzdDogRGV2aWNlU29mdHdhcmVbXSkge1xuICAgIGlmIChzb2Z0d2FyZUxpc3QgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubGVnYWN5U29mdHdhcmVMaXN0JC5uZXh0KHNvZnR3YXJlTGlzdCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIGRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIEBJbnB1dCgpIGRldmljZVNvZnR3YXJlQ2hhbmdlczogRGV2aWNlU29mdHdhcmVDaGFuZ2VbXTtcbiAgQElucHV0KCkgZmlsdGVyQ3JpdGVyaWEkOiBPYnNlcnZhYmxlPEZpbHRlckNyaXRlcmlhPiA9IG9mKG51bGwpO1xuICBAT3V0cHV0KCkgdXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxEZXZpY2VTb2Z0d2FyZT4oKTtcbiAgQE91dHB1dCgpIHJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RGV2aWNlU29mdHdhcmU+KCk7XG4gIEBPdXRwdXQoKSBvbkxpc3RFbXB0eTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBzb2Z0d2FyZUl0ZW1zJDogT2JzZXJ2YWJsZTxJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4+O1xuICBzaG93VXBkYXRlOiBib29sZWFuO1xuICBzaG93UmVtb3ZlOiBib29sZWFuO1xuICBlbXB0eUxpc3Q6IGJvb2xlYW47XG4gIG5vU2VhcmNoUmVzdWx0czogYm9vbGVhbjtcbiAgYWxyZWFkeUluc3RhbGxlZE1lc3NhZ2UgPSBnZXR0ZXh0KCdUaGlzIHNvZnR3YXJlIGlzIGFscmVhZHkgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2UnKTtcbiAgc3VwcG9ydHNTb2Z0d2FyZU9wZXJhdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9wZXJhdGlvblR5cGVzID0gWydjOHlfU29mdHdhcmVVcGRhdGUnLCAnYzh5X1NvZnR3YXJlTGlzdCcsICdjOHlfU29mdHdhcmUnXTtcblxuICBwcml2YXRlIGxlZ2FjeVNvZnR3YXJlTGlzdCQ6IEJlaGF2aW9yU3ViamVjdDxEZXZpY2VTb2Z0d2FyZVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYWR2YW5jZWRTb2Z0d2FyZVNlcnZpY2U6IEFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc29mdHdhcmVJdGVtcyQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEkLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLFxuICAgICAgdGhpcy5sZWdhY3lTb2Z0d2FyZUxpc3QkXG4gICAgXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2ZpbHRlckNyaXRlcmlhLCBsZWdhY3lTb2Z0d2FyZUxpc3RdKSA9PiB7XG4gICAgICAgIGlmIChsZWdhY3lTb2Z0d2FyZUxpc3QpIHtcbiAgICAgICAgICByZXR1cm4gb2YodGhpcy5nZXRMZWdhY3lTb2Z0d2FyZUxpc3QoZmlsdGVyQ3JpdGVyaWEpKS5waXBlKFxuICAgICAgICAgICAgbWFwKHJlc3VsdExpc3QgPT4gKHsgcmVzdWx0TGlzdCwgZmlsdGVyQ3JpdGVyaWEgfSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChmaWx0ZXJDcml0ZXJpYSkudGhlbihyZXN1bHRMaXN0ID0+ICh7XG4gICAgICAgICAgICByZXN1bHRMaXN0LFxuICAgICAgICAgICAgZmlsdGVyQ3JpdGVyaWFcbiAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGFwKCh7IHJlc3VsdExpc3QsIGZpbHRlckNyaXRlcmlhIH0pID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZnlMaXN0RW1wdHkoIXJlc3VsdExpc3Q/LnBhZ2luZz8udG90YWxQYWdlcyAmJiAhZmlsdGVyQ3JpdGVyaWEpO1xuICAgICAgICB0aGlzLm5vU2VhcmNoUmVzdWx0cyA9ICFyZXN1bHRMaXN0Py5wYWdpbmc/LnRvdGFsUGFnZXMgJiYgISFmaWx0ZXJDcml0ZXJpYTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCh7IHJlc3VsdExpc3QgfSkgPT4gcmVzdWx0TGlzdCksXG4gICAgICBzaGFyZSgpXG4gICAgKTtcbiAgICBjb25zdCBzdXBwb3J0ZWRPcGVyYXRpb25zID0gZ2V0KHRoaXMuZGV2aWNlLCAnYzh5X1N1cHBvcnRlZE9wZXJhdGlvbnMnLCBbXSk7XG4gICAgdGhpcy5zdXBwb3J0c1NvZnR3YXJlT3BlcmF0aW9ucyA9IHRoaXMub3BlcmF0aW9uVHlwZXMuc29tZShcbiAgICAgIG9wZXJhdGlvblR5cGUgPT4gc3VwcG9ydGVkT3BlcmF0aW9ucy5pbmRleE9mKG9wZXJhdGlvblR5cGUpID4gLTFcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuc2hvd1VwZGF0ZSA9IHRoaXMudXBkYXRlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICAgIHRoaXMuc2hvd1JlbW92ZSA9IHRoaXMucmVtb3ZlLm9ic2VydmVycy5sZW5ndGggPiAwO1xuICB9XG5cbiAgaXNTb2Z0d2FyZUdvaW5nVG9CZUNoYW5nZWQoc29mdHdhcmU6IERldmljZVNvZnR3YXJlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVsZXZhbnRDaGFuZ2VzID0gZmlsdGVyKHRoaXMuZGV2aWNlU29mdHdhcmVDaGFuZ2VzLCBzb2Z0d2FyZSk7XG4gICAgcmV0dXJuIHJlbGV2YW50Q2hhbmdlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBZHZhbmNlZFNvZnR3YXJlTGlzdChcbiAgICBmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWFcbiAgKTogUHJvbWlzZTxJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4+IHtcbiAgICBjb25zdCBxdWVyeUZpbHRlciA9IHtcbiAgICAgIGRldmljZUlkOiB0aGlzLmRldmljZS5pZCxcbiAgICAgIGN1cnJlbnRQYWdlOiAxLFxuICAgICAgcGFnZVNpemU6IDUwLFxuICAgICAgd2l0aFRvdGFsUGFnZXM6IHRydWVcbiAgICB9O1xuICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8ubmFtZSkge1xuICAgICAgc2V0KHF1ZXJ5RmlsdGVyLCAnbmFtZScsIGAqJHtmaWx0ZXJDcml0ZXJpYS5uYW1lfSpgKTtcbiAgICB9XG4gICAgaWYgKGZpbHRlckNyaXRlcmlhPy5zb2Z0d2FyZVR5cGUpIHtcbiAgICAgIHNldChxdWVyeUZpbHRlciwgJ3R5cGUnLCBgJHtmaWx0ZXJDcml0ZXJpYS5zb2Z0d2FyZVR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkdmFuY2VkU29mdHdhcmVTZXJ2aWNlLmxpc3QocXVlcnlGaWx0ZXIpIGFzIHVua25vd24gYXMgUHJvbWlzZTxcbiAgICAgIElSZXN1bHRMaXN0PERldmljZVNvZnR3YXJlPlxuICAgID47XG4gIH1cblxuICBwcml2YXRlIGdldExlZ2FjeVNvZnR3YXJlTGlzdChmaWx0ZXJDcml0ZXJpYTogRmlsdGVyQ3JpdGVyaWEpOiBJUmVzdWx0TGlzdDxEZXZpY2VTb2Z0d2FyZT4ge1xuICAgIGNvbnN0IGRhdGEgPSBmaWx0ZXJDcml0ZXJpYVxuICAgICAgPyB0aGlzLmxlZ2FjeVNvZnR3YXJlTGlzdCQudmFsdWUuZmlsdGVyKGl0ZW0gPT4ge1xuICAgICAgICAgIGxldCBtYXRjaCA9IHRydWU7XG4gICAgICAgICAgaWYgKGZpbHRlckNyaXRlcmlhPy5uYW1lKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0ubmFtZT8uaW5jbHVkZXMoZmlsdGVyQ3JpdGVyaWEubmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmaWx0ZXJDcml0ZXJpYT8uc29mdHdhcmVUeXBlKSB7XG4gICAgICAgICAgICBtYXRjaCA9IG1hdGNoICYmIGl0ZW0uc29mdHdhcmVUeXBlID09PSBmaWx0ZXJDcml0ZXJpYS5zb2Z0d2FyZVR5cGU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICB9KVxuICAgICAgOiB0aGlzLmxlZ2FjeVNvZnR3YXJlTGlzdCQudmFsdWU7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICByZXM6IG51bGwsXG4gICAgICBwYWdpbmc6IHtcbiAgICAgICAgdG90YWxQYWdlczogZGF0YS5sZW5ndGhcbiAgICAgIH0gYXMgUGFnaW5nPERldmljZVNvZnR3YXJlPlxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIG5vdGlmeUxpc3RFbXB0eShpc0VtcHR5OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5lbXB0eUxpc3QgPSBpc0VtcHR5O1xuICAgIHRoaXMub25MaXN0RW1wdHkuZW1pdChpc0VtcHR5KTtcbiAgfVxufVxuIiwiPGM4eS1saXN0LWdyb3VwIGNsYXNzPVwibm8tYm9yZGVyLTJuZC1sYXN0XCI+XG4gIDxjOHktbGlcbiAgICBbbmdDbGFzc109XCJ7IGRpc2FibGVkOiBpc1NvZnR3YXJlR29pbmdUb0JlQ2hhbmdlZChzb2Z0d2FyZSkgfVwiXG4gICAgKmM4eUZvcj1cImxldCBzb2Z0d2FyZSBvZiBzb2Z0d2FyZUl0ZW1zJFwiXG4gID5cbiAgICA8IS0tIFNPRlRXQVJFIElDT04gLS0+XG4gICAgPGM4eS1saS1pY29uPlxuICAgICAgPGkgYzh5SWNvbj1cImM4eS10b29sc1wiPjwvaT5cbiAgICA8L2M4eS1saS1pY29uPlxuXG4gICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTIwXCI+XG4gICAgICA8ZGl2IHRpdGxlPVwie3sgc29mdHdhcmUubmFtZSB9fVwiIGNsYXNzPVwiY29sLTlcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICA8IS0tIFNPRlRXQVJFIE5BTUUgLS0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCI+XG4gICAgICAgICAgICB7eyBzb2Z0d2FyZS5uYW1lIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwhLS0gU09GVFdBUkUgVFlQRS0tPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC1wcmltYXJ5IG0tbC04XCI+e3sgc29mdHdhcmUuc29mdHdhcmVUeXBlIH19PC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8IS0tIFNPRlRXQVJFIFZFUlNJT04gLS0+XG4gICAgICAgIDxwIGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUgdGV4dC1sYWJlbC1zbWFsbCBtLXItNFwiIHRyYW5zbGF0ZT5WZXJzaW9uPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZSBtLXItNFwiIHRpdGxlPVwie3sgc29mdHdhcmUudmVyc2lvbiB9fVwiPlxuICAgICAgICAgICAge3sgc29mdHdhcmUudmVyc2lvbiB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgKm5nSWY9XCJzb2Z0d2FyZS5pbnN0YWxsZWRcIlxuICAgICAgICAgICAgYzh5SWNvbj1cIndhcm5pbmdcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdhcm5pbmcgYS1zLWNlbnRlclwiXG4gICAgICAgICAgICBbdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgYWxyZWFkeUluc3RhbGxlZE1lc3NhZ2VcbiAgICAgICAgICAgICAgICB8IHRyYW5zbGF0ZTogeyBuYW1lOiBzb2Z0d2FyZS5uYW1lLCB2ZXJzaW9uOiBzb2Z0d2FyZS52ZXJzaW9uIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cInN1cHBvcnRzU29mdHdhcmVPcGVyYXRpb25zICYmIChzaG93VXBkYXRlIHx8IHNob3dSZW1vdmUpXCJcbiAgICAgICAgY2xhc3M9XCJjb2wtMyB0ZXh0LXJpZ2h0IG0tMCBmbGV4LWdyb3cgZC1mbGV4IGEtaS1jZW50ZXJcIlxuICAgICAgPlxuICAgICAgICA8IS0tIFVQREFURSBTT0ZUV0FSRSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1VwZGF0ZSAmJiAhaXNTb2Z0d2FyZUdvaW5nVG9CZUNoYW5nZWQoc29mdHdhcmUpXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4teHMgbS1sLWF1dG8gbS1yLTRcIlxuICAgICAgICAgIChjbGljayk9XCJ1cGRhdGUuZW1pdChzb2Z0d2FyZSlcIlxuICAgICAgICAgIHRpdGxlPVwie3sgJ1VwZGF0ZWBzb2Z0d2FyZSx2ZXJiYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLlNPRlRXQVJFLkVWRU5UUy5ERVZJQ0VfVEFCXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5TT0ZUV0FSRS5DT01QT05FTlRTLkRFVklDRV9TT0ZUV0FSRV9MSVNULFxuICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuU09GVFdBUkUuQUNUSU9OUy5PUEVOX1VQREFURV9TT0ZUV0FSRVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ1VwZGF0ZWBzb2Z0d2FyZSx2ZXJiYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLSBSRU1PVkUgU09GVFdBUkUgLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cInNob3dSZW1vdmUgJiYgIWlzU29mdHdhcmVHb2luZ1RvQmVDaGFuZ2VkKHNvZnR3YXJlKVwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBidG4tZG90LS1kYW5nZXIgbS1sLTRcIlxuICAgICAgICAgIChjbGljayk9XCJyZW1vdmUuZW1pdChzb2Z0d2FyZSlcIlxuICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlYHNvZnR3YXJlLHZlcmJgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlYHNvZnR3YXJlLHZlcmJgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5TT0ZUV0FSRS5FVkVOVFMuREVWSUNFX1RBQlwiXG4gICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgY29tcG9uZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuU09GVFdBUkUuQ09NUE9ORU5UUy5ERVZJQ0VfU09GVFdBUkVfTElTVCxcbiAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLlNPRlRXQVJFLkFDVElPTlMuREVMRVRFX1NPRlRXQVJFXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYzh5LWxpLWJvZHk+XG4gIDwvYzh5LWxpPlxuPC9jOHktbGlzdC1ncm91cD5cbjwhLS0gTk8gU0VBUkNIIFJFU1VMVFMgU1RBVEUgLS0+XG48ZGl2IGNsYXNzPVwiY2FyZC1ibG9ja1wiICpuZ0lmPVwibm9TZWFyY2hSZXN1bHRzIHx8IGVtcHR5TGlzdFwiPlxuICA8bmctY29udGVudCAqbmdJZj1cImVtcHR5TGlzdFwiIHNlbGVjdD1cIi5jOHktZW1wdHktc3RhdGU6bm90KC5jOHktbm8tcmVzdWx0cy1zdGF0ZSlcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50ICpuZ0lmPVwibm9TZWFyY2hSZXN1bHRzXCIgc2VsZWN0PVwiLmM4eS1uby1yZXN1bHRzLXN0YXRlXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|