@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
24 lines • 32.1 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components";
import * as i2 from "@angular/common";
import * as i3 from "@angular/forms";
export class FeatureConfigComponent {
constructor() {
this.onUpdate = new EventEmitter();
}
updateFeatures() {
this.onUpdate.emit();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FeatureConfigComponent, selector: "c8y-feature-config", inputs: { config: "config" }, outputs: { onUpdate: "onUpdate" }, ngImport: i0, template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'SearchModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'CockpitAlarmsModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'ReportDashboardModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'DatapointLibraryModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1.PluginLoadedPipe, name: "c8yPluginLoaded" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FeatureConfigComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-feature-config', template: "<c8y-list-group>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'SearchModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"search\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global search' | translate }}</p>\n <p>\n <small translate>Display the global search in the main header.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global search' | translate }}\"\n >\n <input\n name=\"search\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.search\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Groups' | translate }}</p>\n <p>\n <small translate>Display top level groups under the Groups navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Groups' | translate }}\"\n >\n <input\n name=\"groups\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.groups\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'CockpitAlarmsModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"bell\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Alarms' | translate }}</p>\n <p>\n <small translate>Display a link to the global alarms list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global Alarms view' | translate }}\"\n >\n <input\n name=\"alarms\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.alarms\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-data-explorer\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data explorer' | translate }}</p>\n <p>\n <small translate>\n Display the data explorer in the navigator menu and on the group tabs.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data explorer' | translate }}\"\n >\n <input\n name=\"dataExplorer\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataExplorer\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'ReportDashboardModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-reports\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Reports' | translate }}</p>\n <p>\n <small translate>Display a link to the Reports list in the navigator menu.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Reports' | translate }}\"\n >\n <input\n name=\"reports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.reports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"graph-report\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Exports' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Exports list under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Exports' | translate }}\"\n >\n <input\n name=\"exports\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.exports\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\" *ngIf=\"'DatapointLibraryModule' | c8yPluginLoaded | async\">\n <c8y-li-icon icon=\"c8y-data-points\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Data point library' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Data point library under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Data point library' | translate }}\"\n >\n <input\n name=\"dataPointLibrary\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dataPointLibrary\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Global smart rules' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Global smart rules under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Global smart rules' | translate }}\"\n >\n <input\n name=\"globalSmartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.globalSmartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-group-open\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Subassets view' | translate }}</p>\n <p><small translate>Display the \"Subassets\" tab on groups.</small></p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Subassets view' | translate }}\"\n >\n <input\n name=\"subassets\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.subassets\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"c8y-smart-rules\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Smart rules for devices and groups' | translate }}</p>\n <p>\n <small translate>Display the smart rules tab on groups and devices.</small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Smart rules for devices and groups' | translate }}\"\n >\n <input\n name=\"smartRules\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.smartRules\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n <c8y-li data-cy=\"feature-config--feature-list\">\n <c8y-li-icon icon=\"management1\"></c8y-li-icon>\n <div class=\"d-flex a-i-center\">\n <div>\n <p>{{ 'Dashboard manager' | translate }}</p>\n <p>\n <small translate>\n Display a link to the Dashboard manager under the Configuration navigator menu.\n </small>\n </p>\n </div>\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Dashboard manager' | translate }}\"\n >\n <input\n name=\"dashboardManager\"\n type=\"checkbox\"\n [(ngModel)]=\"config.features.dashboardManager\"\n (change)=\"updateFeatures()\"\n />\n <span></span>\n </label>\n </div>\n </c8y-li>\n</c8y-list-group>\n" }]
}], propDecorators: { config: [{
type: Input
}], onUpdate: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1jb25maWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vY29ja3BpdC1jb25maWcvZmVhdHVyZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFPdkUsTUFBTSxPQUFPLHNCQUFzQjtJQUpuQztRQVNFLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBS3JDO0lBSEMsY0FBYztRQUNaLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzsrR0FUVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwySENQbkMsOHdRQXVRQTs7NEZEaFFhLHNCQUFzQjtrQkFKbEMsU0FBUzsrQkFDRSxvQkFBb0I7OEJBSzlCLE1BQU07c0JBREwsS0FBSztnQkFJTixRQUFRO3NCQURQLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ja3BpdENvbmZpZyB9IGZyb20gJy4vY29ja3BpdC1jb25maWcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZmVhdHVyZS1jb25maWcnLFxuICB0ZW1wbGF0ZVVybDogJy4vZmVhdHVyZS1jb25maWcuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZlYXR1cmVDb25maWdDb21wb25lbnQge1xuICBASW5wdXQoKVxuICBjb25maWc6IENvY2twaXRDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIG9uVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHVwZGF0ZUZlYXR1cmVzKCkge1xuICAgIHRoaXMub25VcGRhdGUuZW1pdCgpO1xuICB9XG59XG4iLCI8Yzh5LWxpc3QtZ3JvdXA+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIiAqbmdJZj1cIidTZWFyY2hNb2R1bGUnIHwgYzh5UGx1Z2luTG9hZGVkIHwgYXN5bmNcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cInNlYXJjaFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnR2xvYmFsIHNlYXJjaCcgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0aGUgZ2xvYmFsIHNlYXJjaCBpbiB0aGUgbWFpbiBoZWFkZXIuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0dsb2JhbCBzZWFyY2gnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cInNlYXJjaFwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5zZWFyY2hcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktZ3JvdXBcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0dyb3VwcycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0b3AgbGV2ZWwgZ3JvdXBzIHVuZGVyIHRoZSBHcm91cHMgbmF2aWdhdG9yIG1lbnUuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0dyb3VwcycgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZ3JvdXBzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmdyb3Vwc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIiAqbmdJZj1cIidDb2NrcGl0QWxhcm1zTW9kdWxlJyB8IGM4eVBsdWdpbkxvYWRlZCB8IGFzeW5jXCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJiZWxsXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdBbGFybXMnIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPkRpc3BsYXkgYSBsaW5rIHRvIHRoZSBnbG9iYWwgYWxhcm1zIGxpc3QgaW4gdGhlIG5hdmlnYXRvciBtZW51Ljwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdHbG9iYWwgQWxhcm1zIHZpZXcnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImFsYXJtc1wiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5hbGFybXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktZGF0YS1leHBsb3JlclwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRGF0YSBleHBsb3JlcicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IHRoZSBkYXRhIGV4cGxvcmVyIGluIHRoZSBuYXZpZ2F0b3IgbWVudSBhbmQgb24gdGhlIGdyb3VwIHRhYnMuXG4gICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ0RhdGEgZXhwbG9yZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImRhdGFFeHBsb3JlclwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5kYXRhRXhwbG9yZXJcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCIgKm5nSWY9XCInUmVwb3J0RGFzaGJvYXJkTW9kdWxlJyB8IGM4eVBsdWdpbkxvYWRlZCB8IGFzeW5jXCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktcmVwb3J0c1wiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnUmVwb3J0cycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSBhIGxpbmsgdG8gdGhlIFJlcG9ydHMgbGlzdCBpbiB0aGUgbmF2aWdhdG9yIG1lbnUuPC9zbWFsbD5cbiAgICAgICAgPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ1JlcG9ydHMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cInJlcG9ydHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMucmVwb3J0c1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImdyYXBoLXJlcG9ydFwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRXhwb3J0cycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IGEgbGluayB0byB0aGUgRXhwb3J0cyBsaXN0IHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdFeHBvcnRzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJleHBvcnRzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmV4cG9ydHNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCIgKm5nSWY9XCInRGF0YXBvaW50TGlicmFyeU1vZHVsZScgfCBjOHlQbHVnaW5Mb2FkZWQgfCBhc3luY1wiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LWRhdGEtcG9pbnRzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdEYXRhIHBvaW50IGxpYnJhcnknIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhdGEgcG9pbnQgbGlicmFyeSB1bmRlciB0aGUgQ29uZmlndXJhdGlvbiBuYXZpZ2F0b3IgbWVudS5cbiAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICA8L3A+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cImM4eS1zd2l0Y2ggYzh5LXN3aXRjaC0taW5saW5lIG0tbC1hdXRvXCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnRGF0YSBwb2ludCBsaWJyYXJ5JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJkYXRhUG9pbnRMaWJyYXJ5XCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLmRhdGFQb2ludExpYnJhcnlcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJjOHktc21hcnQtcnVsZXNcIj48L2M4eS1saS1pY29uPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPHA+e3sgJ0dsb2JhbCBzbWFydCBydWxlcycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPlxuICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICBEaXNwbGF5IGEgbGluayB0byB0aGUgR2xvYmFsIHNtYXJ0IHJ1bGVzIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdHbG9iYWwgc21hcnQgcnVsZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgID5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgbmFtZT1cImdsb2JhbFNtYXJ0UnVsZXNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuZ2xvYmFsU21hcnRSdWxlc1wiXG4gICAgICAgICAgKGNoYW5nZSk9XCJ1cGRhdGVGZWF0dXJlcygpXCJcbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4+PC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9jOHktbGk+XG4gIDxjOHktbGkgZGF0YS1jeT1cImZlYXR1cmUtY29uZmlnLS1mZWF0dXJlLWxpc3RcIj5cbiAgICA8Yzh5LWxpLWljb24gaWNvbj1cImM4eS1ncm91cC1vcGVuXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTdWJhc3NldHMgdmlldycgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDxwPjxzbWFsbCB0cmFuc2xhdGU+RGlzcGxheSB0aGUgXCJTdWJhc3NldHNcIiB0YWIgb24gZ3JvdXBzLjwvc21hbGw+PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJjOHktc3dpdGNoIGM4eS1zd2l0Y2gtLWlubGluZSBtLWwtYXV0b1wiXG4gICAgICAgIHRpdGxlPVwie3sgJ1N1YmFzc2V0cyB2aWV3JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzdWJhc3NldHNcIlxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWcuZmVhdHVyZXMuc3ViYXNzZXRzXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbiAgPGM4eS1saSBkYXRhLWN5PVwiZmVhdHVyZS1jb25maWctLWZlYXR1cmUtbGlzdFwiPlxuICAgIDxjOHktbGktaWNvbiBpY29uPVwiYzh5LXNtYXJ0LXJ1bGVzXCI+PC9jOHktbGktaWNvbj5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwPnt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPHA+XG4gICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5EaXNwbGF5IHRoZSBzbWFydCBydWxlcyB0YWIgb24gZ3JvdXBzIGFuZCBkZXZpY2VzLjwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdTbWFydCBydWxlcyBmb3IgZGV2aWNlcyBhbmQgZ3JvdXBzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIG5hbWU9XCJzbWFydFJ1bGVzXCJcbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiY29uZmlnLmZlYXR1cmVzLnNtYXJ0UnVsZXNcIlxuICAgICAgICAgIChjaGFuZ2UpPVwidXBkYXRlRmVhdHVyZXMoKVwiXG4gICAgICAgIC8+XG4gICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgIDwvbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvYzh5LWxpPlxuICA8Yzh5LWxpIGRhdGEtY3k9XCJmZWF0dXJlLWNvbmZpZy0tZmVhdHVyZS1saXN0XCI+XG4gICAgPGM4eS1saS1pY29uIGljb249XCJtYW5hZ2VtZW50MVwiPjwvYzh5LWxpLWljb24+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8cD57eyAnRGFzaGJvYXJkIG1hbmFnZXInIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8cD5cbiAgICAgICAgICA8c21hbGwgdHJhbnNsYXRlPlxuICAgICAgICAgICAgRGlzcGxheSBhIGxpbmsgdG8gdGhlIERhc2hib2FyZCBtYW5hZ2VyIHVuZGVyIHRoZSBDb25maWd1cmF0aW9uIG5hdmlnYXRvciBtZW51LlxuICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgIDwvcD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGxhYmVsXG4gICAgICAgIGNsYXNzPVwiYzh5LXN3aXRjaCBjOHktc3dpdGNoLS1pbmxpbmUgbS1sLWF1dG9cIlxuICAgICAgICB0aXRsZT1cInt7ICdEYXNoYm9hcmQgbWFuYWdlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBuYW1lPVwiZGFzaGJvYXJkTWFuYWdlclwiXG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZy5mZWF0dXJlcy5kYXNoYm9hcmRNYW5hZ2VyXCJcbiAgICAgICAgICAoY2hhbmdlKT1cInVwZGF0ZUZlYXR1cmVzKClcIlxuICAgICAgICAvPlxuICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICA8L2M4eS1saT5cbjwvYzh5LWxpc3QtZ3JvdXA+XG4iXX0=