@nova-ui/bits
Version:
SolarWinds Nova Framework
112 lines • 15.4 kB
JavaScript
// © 2022 SolarWinds Worldwide, LLC. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
import { ChangeDetectorRef, Component, ElementRef, forwardRef, HostBinding, HostListener, Input, Optional, ViewChild, ViewEncapsulation, } from "@angular/core";
import { MenuGroupComponent } from "../menu-group/menu-group.component";
import { MenuItemBaseComponent } from "../menu-item/menu-item-base";
import * as i0 from "@angular/core";
import * as i1 from "../menu-group/menu-group.component";
import * as i2 from "../../../switch/switch.component";
/**
* @ignore
*/
/**
* Menu item component with check/uncheck option,
* use (change) event to get state of this item
*/
export class MenuSwitchComponent extends MenuItemBaseComponent {
stopPropagationOfClick(event) {
event.stopPropagation();
if (!this.disabled) {
event.preventDefault();
this.checked = !this.checked;
this.actionDone.emit(this.checked);
}
}
get checkedClass() {
return this.checked;
}
constructor(group, cd) {
super(group, cd);
this.group = group;
this.checked = false;
// Is needed to predefine item state, sets nui-switch [disabled] property
this.disabled = false;
}
doAction() {
this.checked = !this.checked;
this.actionDone.emit(this.checked);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuSwitchComponent, deps: [{ token: i1.MenuGroupComponent, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MenuSwitchComponent, selector: "nui-menu-switch", inputs: { checked: "checked", disabled: "disabled" }, host: { attributes: { "role": "menuitemcheckbox" }, listeners: { "click": "stopPropagationOfClick($event)" }, properties: { "class.checked": "this.checkedClass" } }, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuSwitchComponent),
},
], viewQueries: [{ propertyName: "menuItem", first: true, predicate: ["menuSwitch"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
<div
class="nui-menu-item__switch"
tabindex="0"
#menuSwitch
tabIndex="-1"
title
>
<nui-switch [value]="checked" [disabled]="disabled">
<ng-content></ng-content>
</nui-switch>
</div>
`, isInline: true, styles: [".nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover{cursor:not-allowed}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus{outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--transparent,transparent)}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch{padding:0}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch:hover,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch:hover,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch:hover{cursor:pointer}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover{cursor:pointer}\n"], dependencies: [{ kind: "component", type: i2.SwitchComponent, selector: "nui-switch", inputs: ["value", "disabled", "ariaLabel"], outputs: ["valueChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MenuSwitchComponent, decorators: [{
type: Component,
args: [{ selector: "nui-menu-switch", template: `
<div
class="nui-menu-item__switch"
tabindex="0"
#menuSwitch
tabIndex="-1"
title
>
<nui-switch [value]="checked" [disabled]="disabled">
<ng-content></ng-content>
</nui-switch>
</div>
`, providers: [
{
provide: MenuItemBaseComponent,
useExisting: forwardRef(() => MenuSwitchComponent),
},
], encapsulation: ViewEncapsulation.None, host: { role: "menuitemcheckbox" }, styles: [".nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:hover{cursor:not-allowed}.nui-menu .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus,.nui-menu-popup-host .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus,.nui-menu-popup .nui-menu-item.nui-menu-item--disabled>.nui-menu-item__switch:focus{outline:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;background-color:var(--transparent,transparent)}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch{padding:0}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch:hover,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch:hover,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch:hover{cursor:pointer}.nui-menu .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover,.nui-menu-popup-host .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover,.nui-menu-popup .nui-menu-item>.nui-menu-item__switch .nui-switch__label:hover{cursor:pointer}\n"] }]
}], ctorParameters: () => [{ type: i1.MenuGroupComponent, decorators: [{
type: Optional
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { checked: [{
type: Input
}], disabled: [{
type: Input
}], menuItem: [{
type: ViewChild,
args: ["menuSwitch"]
}], stopPropagationOfClick: [{
type: HostListener,
args: ["click", ["$event"]]
}], checkedClass: [{
type: HostBinding,
args: ["class.checked"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1zd2l0Y2guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9tZW51L21lbnUtaXRlbS9tZW51LXN3aXRjaC9tZW51LXN3aXRjaC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBQXlEO0FBQ3pELEVBQUU7QUFDRiwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSwrRUFBK0U7QUFDL0UsOEVBQThFO0FBQzlFLDREQUE0RDtBQUM1RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLHVEQUF1RDtBQUN2RCxFQUFFO0FBQ0YsNkVBQTZFO0FBQzdFLDRFQUE0RTtBQUM1RSwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLGlGQUFpRjtBQUNqRiw2RUFBNkU7QUFDN0UsaUJBQWlCO0FBRWpCLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUNSLFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDeEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFcEU7O0dBRUc7QUFFSDs7O0dBR0c7QUEwQkgsTUFBTSxPQUFPLG1CQUFvQixTQUFRLHFCQUFxQjtJQVVuRCxzQkFBc0IsQ0FBQyxLQUFpQjtRQUMzQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFRCxJQUNXLFlBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxZQUN5QixLQUF5QixFQUM5QyxFQUFxQjtRQUVyQixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBSEksVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFJOUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFFckIseUVBQXlFO1FBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFTSxRQUFRO1FBQ1gsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBdENRLG1CQUFtQjttR0FBbkIsbUJBQW1CLHNRQVZqQjtZQUNQO2dCQUNJLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7YUFDckQ7U0FDSix5SkFsQlM7Ozs7Ozs7Ozs7OztLQVlUOzs0RkFXUSxtQkFBbUI7a0JBekIvQixTQUFTOytCQUNJLGlCQUFpQixZQUNqQjs7Ozs7Ozs7Ozs7O0tBWVQsYUFDVTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzt5QkFDckQ7cUJBQ0osaUJBRWMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRTs7MEJBMkI3QixRQUFRO3lFQXJCRyxPQUFPO3NCQUF0QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ21CLFFBQVE7c0JBQWhDLFNBQVM7dUJBQUMsWUFBWTtnQkFHaEIsc0JBQXNCO3NCQUQ1QixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFXdEIsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gwqkgMjAyMiBTb2xhcldpbmRzIFdvcmxkd2lkZSwgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vICBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuLy8gIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyAgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yXG4vLyAgc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyAgYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vICBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vICBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuXG5pbXBvcnQgeyBNZW51R3JvdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vbWVudS1ncm91cC9tZW51LWdyb3VwLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTWVudUl0ZW1CYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4uL21lbnUtaXRlbS9tZW51LWl0ZW0tYmFzZVwiO1xuXG4vKipcbiAqIEBpZ25vcmVcbiAqL1xuXG4vKipcbiAqIE1lbnUgaXRlbSBjb21wb25lbnQgd2l0aCBjaGVjay91bmNoZWNrIG9wdGlvbixcbiAqIHVzZSAoY2hhbmdlKSBldmVudCB0byBnZXQgc3RhdGUgb2YgdGhpcyBpdGVtXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiBcIm51aS1tZW51LXN3aXRjaFwiLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibnVpLW1lbnUtaXRlbV9fc3dpdGNoXCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAjbWVudVN3aXRjaFxuICAgICAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgICAgICB0aXRsZVxuICAgICAgICA+XG4gICAgICAgICAgICA8bnVpLXN3aXRjaCBbdmFsdWVdPVwiY2hlY2tlZFwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgICAgICAgIDwvbnVpLXN3aXRjaD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTWVudUl0ZW1CYXNlQ29tcG9uZW50LFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWVudVN3aXRjaENvbXBvbmVudCksXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBzdHlsZVVybHM6IFtcIi4vbWVudS1zd2l0Y2guY29tcG9uZW50Lmxlc3NcIl0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7IHJvbGU6IFwibWVudWl0ZW1jaGVja2JveFwiIH0sXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTd2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBNZW51SXRlbUJhc2VDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIElzIG5lZWRlZCB0byBwcmVkZWZpbmUgaXRlbSBzdGF0ZSwgc2V0cyBudWktY2hlY2tib3ggW2NoZWNrZWRdIHByb3BlcnR5XG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIGNoZWNrZWQ6IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW47XG4gICAgQFZpZXdDaGlsZChcIm1lbnVTd2l0Y2hcIikgbWVudUl0ZW06IEVsZW1lbnRSZWY7XG5cbiAgICBASG9zdExpc3RlbmVyKFwiY2xpY2tcIiwgW1wiJGV2ZW50XCJdKVxuICAgIHB1YmxpYyBzdG9wUHJvcGFnYXRpb25PZkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25Eb25lLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0QmluZGluZyhcImNsYXNzLmNoZWNrZWRcIilcbiAgICBwdWJsaWMgZ2V0IGNoZWNrZWRDbGFzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgZ3JvdXA6IE1lbnVHcm91cENvbXBvbmVudCxcbiAgICAgICAgY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGdyb3VwLCBjZCk7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIElzIG5lZWRlZCB0byBwcmVkZWZpbmUgaXRlbSBzdGF0ZSwgc2V0cyBudWktc3dpdGNoIFtkaXNhYmxlZF0gcHJvcGVydHlcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBkb0FjdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgICAgdGhpcy5hY3Rpb25Eb25lLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICB9XG59XG4iXX0=