@hpe/angular-toolkit
Version:
Hewlett-Packard Enterprise : Angular toolkit for rapid project development
247 lines (246 loc) • 23.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
//=============================================================================
//===
//=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.
//===
//=== Use of this source code is governed by an MIT-style license that can be
//=== found in the LICENSE file
//=============================================================================
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { LabelService } from "@hpe/angular-toolkit/service";
/**
* @template T
*/
var ListPanel = /** @class */ (function () {
//-------------------------------------------------------------------------
//---
//--- Constructor
//---
//-------------------------------------------------------------------------
function ListPanel(labelService) {
this.labelService = labelService;
//-------------------------------------------------------------------------
this.onRowSelected = new EventEmitter();
this.onRowUnselected = new EventEmitter();
}
/**
* @return {?}
*/
ListPanel.prototype.refresh = /**
* @return {?}
*/
function () {
var _this = this;
this.loading = false;
this.failed = false;
this.overflow = false;
this.filteredSize = null;
//--- Remove subscription to service (if any)
if (this.service != null) {
this.loading = true;
this.service().subscribe(function (result) {
_this.loading = false;
_this.data = (result.results);
_this.filteredSize = (result.results.length);
_this.overflow = (result.overflow);
}, function (error) {
console.log("Service raised an error : " + JSON.stringify(error));
_this.data = [];
_this.loading = false;
_this.failed = true;
});
}
};
Object.defineProperty(ListPanel.prototype, "color", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return (this.overflow)
? 'orange'
: 'slate';
},
enumerable: true,
configurable: true
});
Object.defineProperty(ListPanel.prototype, "exportSelTooltip", {
//-------------------------------------------------------------------------
//--- Localization stuff
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("exportSel.tooltip");
},
enumerable: true,
configurable: true
});
Object.defineProperty(ListPanel.prototype, "exportAllTooltip", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("exportAll.tooltip");
},
enumerable: true,
configurable: true
});
Object.defineProperty(ListPanel.prototype, "refreshTooltip", {
//-------------------------------------------------------------------------
get: /**
* @return {?}
*/
function () {
return this.loc("refresh.tooltip");
},
enumerable: true,
configurable: true
});
//-------------------------------------------------------------------------
//---
//--- Lifecycle events
//---
//-------------------------------------------------------------------------
/**
* @return {?}
*/
ListPanel.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.refresh();
};
//-------------------------------------------------------------------------
//---
//--- ListTable events
//---
//-------------------------------------------------------------------------
/**
* @param {?} event
* @return {?}
*/
ListPanel.prototype.onFilterChange = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.filteredSize = event.filteredSize;
};
//-------------------------------------------------------------------------
/**
* @param {?} event
* @return {?}
*/
ListPanel.prototype.onRowSelect = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.onRowSelected.emit(event.row);
};
//-------------------------------------------------------------------------
/**
* @param {?} event
* @return {?}
*/
ListPanel.prototype.onRowUnselect = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.onRowUnselected.emit(event.row);
};
/**
* @param {?} code
* @return {?}
*/
ListPanel.prototype.loc = /**
* @param {?} code
* @return {?}
*/
function (code) {
return this.labelService.getLabel("list-panel", code);
};
ListPanel.decorators = [
{ type: Component, args: [{
selector: 'hpe-list-panel',
template: "<!--\n=============================================================================\n===\n=== (C) Copyright 2018 Hewlett Packard Enterprise Development LP.\n===\n=== Use of this source code is governed by an MIT-style license that can be\n=== found in the LICENSE file\n=============================================================================\n-->\n\n<hpe-card-panel icon=\"{{icon}}\" title=\"{{title}}\">\n\t<hpe-rounded-text [text]=\"filteredSize\" [color]=\"color\" cpPostTitle></hpe-rounded-text>\n\n\t<ng-content select=\"lpButtons\"></ng-content>\n\n\t<hpe-title-button cpControl\n\t icon = \"fa-file-o\"\n\t [tooltip] = \"exportSelTooltip\"\n\t [disabled] = \"loading || failed\"\n\t (click) = \"lt.exportSelected()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<hpe-title-button cpControl\n\t\t\t\t\ticon = \"fa-files-o\"\n\t\t\t\t\t[tooltip] = \"exportAllTooltip\"\n\t\t\t\t\t[disabled] = \"loading || failed\"\n\t\t\t\t\t(click) = \"lt.exportAll()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<hpe-title-button cpControl\n\t\t\t\t\ticon = \"fa-refresh\"\n\t\t\t\t\t[tooltip] = \"refreshTooltip\"\n\t\t\t\t\t[disabled] = \"loading\"\n\t\t\t\t\t(click) = \"refresh()\"\n\t\t\t\t\t></hpe-title-button>\n\n\t<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->\n\n\t<div cpBody class=\"innerPanel\">\n\t\t<hpe-list-table #lt\n\t\t\t\t\t[rowId] = \"rowId\"\n\t\t\t\t\t[columns] = \"columns\"\n\t\t\t\t\t[visibleColumns] = \"visibleColumns\"\n\t\t\t\t\t[data] = \"data\"\n\t\t\t\t\t[contextMenu] = \"contextMenu\"\n\t\t\t\t\t[multiSelection] = \"multiSelection\"\n\t\t\t\t\t[menuSelector] = \"menuSelector\"\n\t\t\t\t\t[loading] = \"loading\"\n\t\t\t\t\t[labelGroup] = \"labelGroup\"\n\t\t\t\t\t(onFilterChange) = \"onFilterChange($event)\"\n\t\t\t\t\t(onRowSelected) = \"onRowSelect($event)\"\n\t\t (onRowUnselected)= \"onRowUnselect($event)\"\n\t\t\t\t\t></hpe-list-table>\n\n\t\t<ng-content select=\"lpControls\"></ng-content>\n\t</div>\n\n</hpe-card-panel>\n",
styles: [".innerPanel{padding:8px}"]
},] },
];
/** @nocollapse */
ListPanel.ctorParameters = function () { return [
{ type: LabelService, },
]; };
ListPanel.propDecorators = {
"icon": [{ type: Input },],
"title": [{ type: Input },],
"rowId": [{ type: Input },],
"columns": [{ type: Input },],
"visibleColumns": [{ type: Input },],
"multiSelection": [{ type: Input },],
"contextMenu": [{ type: Input },],
"menuSelector": [{ type: Input },],
"service": [{ type: Input },],
"labelGroup": [{ type: Input },],
"onRowSelected": [{ type: Output },],
"onRowUnselected": [{ type: Output },],
};
return ListPanel;
}());
export { ListPanel };
function ListPanel_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
ListPanel.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
ListPanel.ctorParameters;
/** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
ListPanel.propDecorators;
/** @type {?} */
ListPanel.prototype.icon;
/** @type {?} */
ListPanel.prototype.title;
/** @type {?} */
ListPanel.prototype.rowId;
/** @type {?} */
ListPanel.prototype.columns;
/** @type {?} */
ListPanel.prototype.visibleColumns;
/** @type {?} */
ListPanel.prototype.multiSelection;
/** @type {?} */
ListPanel.prototype.contextMenu;
/** @type {?} */
ListPanel.prototype.menuSelector;
/** @type {?} */
ListPanel.prototype.service;
/** @type {?} */
ListPanel.prototype.labelGroup;
/** @type {?} */
ListPanel.prototype.onRowSelected;
/** @type {?} */
ListPanel.prototype.onRowUnselected;
/** @type {?} */
ListPanel.prototype.loading;
/** @type {?} */
ListPanel.prototype.failed;
/** @type {?} */
ListPanel.prototype.overflow;
/** @type {?} */
ListPanel.prototype.filteredSize;
/** @type {?} */
ListPanel.prototype.data;
/** @type {?} */
ListPanel.prototype.labelService;
}
//=============================================================================
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYW5lbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BocGUvYW5ndWxhci10b29sa2l0L2d1aS9wYW5lbC8iLCJzb3VyY2VzIjpbImxpc3QtcGFuZWwvbGlzdC1wYW5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFTN0UsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFZLDhCQUE4QixDQUFDOzs7OztJQXNHL0QsMkVBQTJFO0lBQzNFLEtBQUs7SUFDTCxpQkFBaUI7SUFDakIsS0FBSztJQUNMLDJFQUEyRTtJQUUzRSxtQkFBb0IsWUFBMkI7UUFBM0IsaUJBQVksR0FBWixZQUFZLENBQWU7OzZCQWpCZ0IsSUFBSSxZQUFZLEVBQW9COytCQUNwQyxJQUFJLFlBQVksRUFBc0I7S0FpQnBHOzs7O0lBUU0sMkJBQU87Ozs7O1FBRWIsSUFBSSxDQUFDLE9BQU8sR0FBUSxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBUyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsR0FBTyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7O1FBSXpCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVwQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUN2QixVQUFBLE1BQU07Z0JBQ0wsS0FBSSxDQUFDLE9BQU8sR0FBUSxLQUFLLENBQUM7Z0JBQzFCLEtBQUksQ0FBQyxJQUFJLEdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JDLEtBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1QyxLQUFJLENBQUMsUUFBUSxHQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3RDLEVBQ0QsVUFBQSxLQUFLO2dCQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEdBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNqRSxLQUFJLENBQUMsSUFBSSxHQUFNLEVBQUUsQ0FBQztnQkFDbEIsS0FBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLEtBQUksQ0FBQyxNQUFNLEdBQUksSUFBSSxDQUFDO2FBQ3BCLENBQUMsQ0FBQztTQUNKOztJQUtGLHNCQUFJLDRCQUFLO1FBRlQsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1YsQ0FBQyxDQUFDLE9BQU8sQ0FBQztTQUNiOzs7T0FBQTtJQU1ELHNCQUFJLHVDQUFnQjtRQUpwQiwyRUFBMkU7UUFDM0Usd0JBQXdCO1FBQ3hCLDJFQUEyRTs7OztRQUUzRTtZQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDckM7OztPQUFBO0lBSUQsc0JBQUksdUNBQWdCO1FBRnBCLDJFQUEyRTs7OztRQUUzRTtZQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7U0FDckM7OztPQUFBO0lBSUQsc0JBQUkscUNBQWM7UUFGbEIsMkVBQTJFOzs7O1FBRTNFO1lBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNuQzs7O09BQUE7SUFFRCwyRUFBMkU7SUFDM0UsS0FBSztJQUNMLHNCQUFzQjtJQUN0QixLQUFLO0lBQ0wsMkVBQTJFOzs7O0lBRTNFLDRCQUFROzs7SUFBUjtRQUNDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztLQUNmO0lBRUQsMkVBQTJFO0lBQzNFLEtBQUs7SUFDTCxzQkFBc0I7SUFDdEIsS0FBSztJQUNMLDJFQUEyRTs7Ozs7SUFFM0Usa0NBQWM7Ozs7SUFBZCxVQUFlLEtBQXlCO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQztLQUN2QztJQUVELDJFQUEyRTs7Ozs7SUFFM0UsK0JBQVc7Ozs7SUFBWCxVQUFZLEtBQXdCO1FBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNuQztJQUVELDJFQUEyRTs7Ozs7SUFFM0UsaUNBQWE7Ozs7SUFBYixVQUFjLEtBQTBCO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNyQzs7Ozs7SUFRTyx1QkFBRzs7OztjQUFDLElBQWE7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQzs7O2dCQWhOdkQsU0FBUyxTQUFDO29CQUNWLFFBQVEsRUFBVSxnQkFBZ0I7b0JBQ2xDLFFBQVEsRUFBRSxvbUVBMERWO29CQUNBLE1BQU0sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUNwQzs7OztnQkFsRU8sWUFBWTs7O3lCQThFbEIsS0FBSzswQkFDTCxLQUFLOzBCQUNMLEtBQUs7NEJBQ0wsS0FBSzttQ0FDTCxLQUFLO21DQUNMLEtBQUs7Z0NBQ0wsS0FBSztpQ0FDTCxLQUFLOzRCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FJTCxNQUFNO29DQUNOLE1BQU07O29CQTdHUjs7U0F1RmEsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbIi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vPT09XG4vLz09PSAoQykgQ29weXJpZ2h0IDIwMTggSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFAuXG4vLz09PVxuLy89PT0gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbi8vPT09IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGVcbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtMaXN0VGFibGVDb2x1bW59ICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51fSAgICAgICAgICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMaXN0QmFja2VuZFNlcnZpY2V9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtGaWx0ZXJDaGFuZ2VFdmVudH0gIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtNZW51U2VsZWN0b3J9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dTZWxlY3RlZEV2ZW50fSAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtSb3dVbnNlbGVjdGVkRXZlbnR9IGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9tb2RlbFwiO1xuaW1wb3J0IHtMYWJlbFNlcnZpY2V9ICAgICAgIGZyb20gXCJAaHBlL2FuZ3VsYXItdG9vbGtpdC9zZXJ2aWNlXCI7XG5cbi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yICAgIDogICAgICdocGUtbGlzdC1wYW5lbCcsXG5cdHRlbXBsYXRlOiBgPCEtLVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbj09PVxuPT09IChDKSBDb3B5cmlnaHQgMjAxOCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUC5cbj09PVxuPT09IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG49PT0gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi0tPlxuXG48aHBlLWNhcmQtcGFuZWwgaWNvbj1cInt7aWNvbn19XCIgdGl0bGU9XCJ7e3RpdGxlfX1cIj5cblx0PGhwZS1yb3VuZGVkLXRleHQgW3RleHRdPVwiZmlsdGVyZWRTaXplXCIgW2NvbG9yXT1cImNvbG9yXCIgY3BQb3N0VGl0bGU+PC9ocGUtcm91bmRlZC10ZXh0PlxuXG5cdDxuZy1jb250ZW50IHNlbGVjdD1cImxwQnV0dG9uc1wiPjwvbmctY29udGVudD5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHQgICAgICAgICAgICAgICAgaWNvbiAgICAgICA9IFwiZmEtZmlsZS1vXCJcblx0ICAgICAgICAgICAgICAgIFt0b29sdGlwXSAgPSBcImV4cG9ydFNlbFRvb2x0aXBcIlxuXHQgICAgICAgICAgICAgICAgW2Rpc2FibGVkXSA9IFwibG9hZGluZyB8fCBmYWlsZWRcIlxuXHQgICAgICAgICAgICAgICAgKGNsaWNrKSAgICA9IFwibHQuZXhwb3J0U2VsZWN0ZWQoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLWZpbGVzLW9cIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcImV4cG9ydEFsbFRvb2x0aXBcIlxuXHRcdFx0XHRcdFtkaXNhYmxlZF0gPSBcImxvYWRpbmcgfHwgZmFpbGVkXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJsdC5leHBvcnRBbGwoKVwiXG5cdFx0XHRcdFx0PjwvaHBlLXRpdGxlLWJ1dHRvbj5cblxuXHQ8aHBlLXRpdGxlLWJ1dHRvbiAgIGNwQ29udHJvbFxuXHRcdFx0XHRcdGljb24gICAgICAgPSBcImZhLXJlZnJlc2hcIlxuXHRcdFx0XHRcdFt0b29sdGlwXSAgPSBcInJlZnJlc2hUb29sdGlwXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdID0gXCJsb2FkaW5nXCJcblx0XHRcdFx0XHQoY2xpY2spICAgID0gXCJyZWZyZXNoKClcIlxuXHRcdFx0XHRcdD48L2hwZS10aXRsZS1idXR0b24+XG5cblx0PCEtLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLS0+XG5cblx0PGRpdiBjcEJvZHkgY2xhc3M9XCJpbm5lclBhbmVsXCI+XG5cdFx0PGhwZS1saXN0LXRhYmxlICNsdFxuXHRcdFx0XHRcdFtyb3dJZF0gICAgICAgICAgPSBcInJvd0lkXCJcblx0XHRcdFx0XHRbY29sdW1uc10gICAgICAgID0gXCJjb2x1bW5zXCJcblx0XHRcdFx0XHRbdmlzaWJsZUNvbHVtbnNdID0gXCJ2aXNpYmxlQ29sdW1uc1wiXG5cdFx0XHRcdFx0W2RhdGFdICAgICAgICAgICA9IFwiZGF0YVwiXG5cdFx0XHRcdFx0W2NvbnRleHRNZW51XSAgICA9IFwiY29udGV4dE1lbnVcIlxuXHRcdFx0XHRcdFttdWx0aVNlbGVjdGlvbl0gPSBcIm11bHRpU2VsZWN0aW9uXCJcblx0XHRcdFx0XHRbbWVudVNlbGVjdG9yXSAgID0gXCJtZW51U2VsZWN0b3JcIlxuXHRcdFx0XHRcdFtsb2FkaW5nXSAgICAgICAgPSBcImxvYWRpbmdcIlxuXHRcdFx0XHRcdFtsYWJlbEdyb3VwXSAgICAgPSBcImxhYmVsR3JvdXBcIlxuXHRcdFx0XHRcdChvbkZpbHRlckNoYW5nZSkgPSBcIm9uRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuXHRcdFx0XHRcdChvblJvd1NlbGVjdGVkKSAgPSBcIm9uUm93U2VsZWN0KCRldmVudClcIlxuXHRcdCAgICAgICAgICAgIChvblJvd1Vuc2VsZWN0ZWQpPSBcIm9uUm93VW5zZWxlY3QoJGV2ZW50KVwiXG5cdFx0XHRcdFx0PjwvaHBlLWxpc3QtdGFibGU+XG5cblx0XHQ8bmctY29udGVudCBzZWxlY3Q9XCJscENvbnRyb2xzXCI+PC9uZy1jb250ZW50PlxuXHQ8L2Rpdj5cblxuPC9ocGUtY2FyZC1wYW5lbD5cbmAsXG5cdHN0eWxlczogW2AuaW5uZXJQYW5lbHtwYWRkaW5nOjhweH1gXVxufSlcblxuLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY2xhc3MgTGlzdFBhbmVsPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gVmFyaWFibGVzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdEBJbnB1dCgpIGljb24gICAgICAgICAgIDogc3RyaW5nO1xuXHRASW5wdXQoKSB0aXRsZSAgICAgICAgICA6IHN0cmluZztcblx0QElucHV0KCkgcm93SWQgICAgICAgICAgOiBhbnk7XG5cdEBJbnB1dCgpIGNvbHVtbnMgICAgICAgIDogTGlzdFRhYmxlQ29sdW1uW107XG5cdEBJbnB1dCgpIHZpc2libGVDb2x1bW5zIDogc3RyaW5nW107XG5cdEBJbnB1dCgpIG11bHRpU2VsZWN0aW9uIDogYm9vbGVhbjtcblx0QElucHV0KCkgY29udGV4dE1lbnUgICAgOiBNZW51W107XG5cdEBJbnB1dCgpIG1lbnVTZWxlY3RvciAgIDogTWVudVNlbGVjdG9yO1xuXHRASW5wdXQoKSBzZXJ2aWNlICAgICAgICA6IExpc3RCYWNrZW5kU2VydmljZTxUPjtcblx0QElucHV0KCkgbGFiZWxHcm91cCAgICAgOiBzdHJpbmc7XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0QE91dHB1dCgpIG9uUm93U2VsZWN0ZWQgICA6IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PiAgID0gbmV3IEV2ZW50RW1pdHRlcjxSb3dTZWxlY3RlZEV2ZW50PigpO1xuXHRAT3V0cHV0KCkgb25Sb3dVbnNlbGVjdGVkIDogRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFJvd1Vuc2VsZWN0ZWRFdmVudD4oKTtcblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRsb2FkaW5nICAgICAgOiBib29sZWFuO1xuXHRmYWlsZWQgICAgICAgOiBib29sZWFuO1xuXHRvdmVyZmxvdyAgICAgOiBib29sZWFuO1xuXHRmaWx0ZXJlZFNpemUgOiBudW1iZXI7XG5cdGRhdGEgICAgICAgICA6IGFueVtdO1xuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBDb25zdHJ1Y3RvclxuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGxhYmVsU2VydmljZSA6IExhYmVsU2VydmljZSkge1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIEFQSSBtZXRob2RzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdHB1YmxpYyByZWZyZXNoKCkgOiB2b2lkIHtcblxuXHRcdHRoaXMubG9hZGluZyAgICAgID0gZmFsc2U7XG5cdFx0dGhpcy5mYWlsZWQgICAgICAgPSBmYWxzZTtcblx0XHR0aGlzLm92ZXJmbG93ICAgICA9IGZhbHNlO1xuXHRcdHRoaXMuZmlsdGVyZWRTaXplID0gbnVsbDtcblxuXHRcdC8vLS0tIFJlbW92ZSBzdWJzY3JpcHRpb24gdG8gc2VydmljZSAoaWYgYW55KVxuXG5cdFx0aWYgKHRoaXMuc2VydmljZSAhPSBudWxsKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG5cdFx0XHR0aGlzLnNlcnZpY2UoKS5zdWJzY3JpYmUoXG5cdFx0XHRcdHJlc3VsdCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5sb2FkaW5nICAgICAgPSBmYWxzZTtcblx0XHRcdFx0XHR0aGlzLmRhdGEgICAgICAgICA9IChyZXN1bHQucmVzdWx0cyk7XG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJlZFNpemUgPSAocmVzdWx0LnJlc3VsdHMubGVuZ3RoKTtcblx0XHRcdFx0XHR0aGlzLm92ZXJmbG93ICAgICA9IChyZXN1bHQub3ZlcmZsb3cpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRlcnJvciA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coXCJTZXJ2aWNlIHJhaXNlZCBhbiBlcnJvciA6IFwiKyBKU09OLnN0cmluZ2lmeShlcnJvcikpO1xuXHRcdFx0XHRcdHRoaXMuZGF0YSAgICA9IFtdO1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHRcdHRoaXMuZmFpbGVkICA9IHRydWU7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCBjb2xvcigpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gKHRoaXMub3ZlcmZsb3cpXG5cdFx0XHRcdFx0PyAnb3JhbmdlJ1xuXHRcdFx0XHRcdDogJ3NsYXRlJztcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLSBMb2NhbGl6YXRpb24gc3R1ZmZcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IGV4cG9ydFNlbFRvb2x0aXAoKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubG9jKFwiZXhwb3J0U2VsLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRnZXQgZXhwb3J0QWxsVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJleHBvcnRBbGwudG9vbHRpcFwiKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdGdldCByZWZyZXNoVG9vbHRpcCgpIDogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5sb2MoXCJyZWZyZXNoLnRvb2x0aXBcIik7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8tLS1cblx0Ly8tLS0gTGlmZWN5Y2xlIGV2ZW50c1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnJlZnJlc2goKTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLy0tLVxuXHQvLy0tLSBMaXN0VGFibGUgZXZlbnRzXG5cdC8vLS0tXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uRmlsdGVyQ2hhbmdlKGV2ZW50IDogRmlsdGVyQ2hhbmdlRXZlbnQpIHtcblx0XHR0aGlzLmZpbHRlcmVkU2l6ZSA9IGV2ZW50LmZpbHRlcmVkU2l6ZTtcblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG9uUm93U2VsZWN0KGV2ZW50IDogUm93U2VsZWN0ZWRFdmVudCkge1xuXHRcdHRoaXMub25Sb3dTZWxlY3RlZC5lbWl0KGV2ZW50LnJvdyk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRvblJvd1Vuc2VsZWN0KGV2ZW50IDogUm93VW5zZWxlY3RlZEV2ZW50KSB7XG5cdFx0dGhpcy5vblJvd1Vuc2VsZWN0ZWQuZW1pdChldmVudC5yb3cpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vLS0tXG5cdC8vLS0tIFByaXZhdGUgbWV0aG9kc1xuXHQvLy0tLVxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRwcml2YXRlIGxvYyhjb2RlIDogc3RyaW5nKSA6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubGFiZWxTZXJ2aWNlLmdldExhYmVsKFwibGlzdC1wYW5lbFwiLCBjb2RlKTtcblx0fVxufVxuXG4vLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iXX0=