UNPKG

angular-admin-lte-teliqo

Version:
260 lines (259 loc) 21.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, EventEmitter, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core'; import { BoxContentDirective, BoxFooterDirective, BoxHeaderDirective, BoxToolsDirective } from './box.directive'; import { removeListeners } from '../helpers'; export class BoxComponent { /** * \@method constructor * @param {?} changeDetectorRef [description] * @param {?} ngZone [description] * @param {?} renderer2 [description] */ constructor(changeDetectorRef, ngZone, renderer2) { this.changeDetectorRef = changeDetectorRef; this.ngZone = ngZone; this.renderer2 = renderer2; this.remove = false; this.listeners = []; this.boxColor = 'default'; this.buttonsStyleClass = 'btn btn-box-tool'; this.contentStyleClass = 'box-content-wrapper'; this.bodyStyleClass = 'box-body'; this.footerStyleClass = 'box-footer'; this.headerBorder = true; this.headerStyleClass = 'box-header'; this.isCollapsable = true; this.isCollapsed = false; this.isRemovable = true; this.isSolid = false; this.loadingStyleClass = 'fa fa-refresh fa-spin'; this.styleClass = 'box'; this.onCollapseDone = new EventEmitter(); this.onCollapseStart = new EventEmitter(); } /** * \@method ngAfterViewInit * @return {?} */ ngAfterViewInit() { this.ngZone.runOutsideAngular(() => { if (this.toggleButtonElement) { this.listeners.push(this.renderer2.listen(this.toggleButtonElement.nativeElement, 'click', () => { this.isCollapsed = !this.isCollapsed; this.changeDetectorRef.detectChanges(); })); } if (this.removeButtonElement) { this.listeners.push(this.renderer2.listen(this.removeButtonElement.nativeElement, 'click', () => { this.remove = true; this.changeDetectorRef.detectChanges(); })); } }); } /** * \@method ngOnDestroy * @return {?} */ ngOnDestroy() { removeListeners(this.listeners); } /** * [removedDone description] * \@method removedDone * @param {?} event [description] * @return {?} */ removedDone(event) { if (event.toState === '1') { this.removed = true; } } /** * [collapseStart description] * \@method collapseStart * @param {?} event [description] * @return {?} */ collapseStart(event) { if (event.fromState !== 'void') { this.isCollaping = true; this.onCollapseStart.emit(event); } } /** * [collapseDone description] * \@method collapseDone * @param {?} event [description] * @return {?} */ collapseDone(event) { if (event.fromState !== 'void') { this.isCollaping = false; this.onCollapseDone.emit(event); } } } BoxComponent.decorators = [ { type: Component, args: [{ selector: 'mk-box', template: `<div *ngIf="!removed" [mkColor]="boxColor" mkColorProperty="border-color" mkColorPrefix="box" [ngClass]="styleClass" [class.collapsed-box]="isCollapsed && !isCollaping" [class.box-solid]="isSolid" [collapseAnimation]="remove" (collapseAnimation.done)="removedDone($event)"> <div *ngIf="header || boxHeaderDirective" [ngClass]="headerStyleClass" [mkColor]="boxColor" [mkColorCondition]="isSolid" mkColorProperty="background-color" [class.with-border]="headerBorder"> <h3 class="box-title" [mkFontColor]="headerColor"> {{header}} <ng-content select="mk-box-header"></ng-content> </h3> <div class="box-tools pull-right"> <ng-content select="mk-box-tools"></ng-content> <button *ngIf="isCollapsable" type="button" [ngClass]="buttonsStyleClass" #toggleButtonElement> <i class="fa" [ngClass]="{'fa-plus': isCollapsed, 'fa-minus': !isCollapsed}"></i> </button> <button *ngIf="isRemovable" type="button" [ngClass]="buttonsStyleClass" #removeButtonElement> <i class="fa fa-times"></i> </button> </div> </div> <div [ngClass]="contentStyleClass" [mkFontColor]="contentColor" [collapseAnimation]="isCollapsed" (collapseAnimation.start)="collapseStart($event)" (collapseAnimation.done)="collapseDone($event)"> <div [ngClass]="bodyStyleClass"> <ng-container *ngIf="boxHeaderDirective || boxContentDirective || boxFooterDirective || boxToolsDirective; else noDirective"> <ng-content select="mk-box-content"></ng-content> </ng-container> <ng-template #noDirective> <ng-content></ng-content> </ng-template> </div> <div *ngIf="footer || boxFooterDirective" [ngClass]="footerStyleClass" [mkFontColor]="footerColor"> {{footer}} <ng-content select="mk-box-footer"></ng-content> </div> </div> <div *ngIf="isLoading" class="overlay"> <i [ngClass]="loadingStyleClass" [mkFontColor]="loadingColor"></i> </div> </div> `, styles: [`.box.collapsed-box .box-body,.box.collapsed-box .box-footer{display:inherit}.box-solid{border:1px solid}.box-body{background-color:#fff}.box.box-solid.bg-color>.box-header{color:#fff}`], changeDetection: ChangeDetectionStrategy.OnPush },] }, ]; /** @nocollapse */ BoxComponent.ctorParameters = () => [ { type: ChangeDetectorRef, }, { type: NgZone, }, { type: Renderer2, }, ]; BoxComponent.propDecorators = { "boxColor": [{ type: Input },], "buttonsStyleClass": [{ type: Input },], "contentStyleClass": [{ type: Input },], "bodyStyleClass": [{ type: Input },], "contentColor": [{ type: Input },], "footer": [{ type: Input },], "footerColor": [{ type: Input },], "footerStyleClass": [{ type: Input },], "header": [{ type: Input },], "headerBorder": [{ type: Input },], "headerColor": [{ type: Input },], "headerStyleClass": [{ type: Input },], "isCollapsable": [{ type: Input },], "isCollapsed": [{ type: Input },], "isLoading": [{ type: Input },], "isRemovable": [{ type: Input },], "isSolid": [{ type: Input },], "loadingColor": [{ type: Input },], "loadingStyleClass": [{ type: Input },], "styleClass": [{ type: Input },], "onCollapseDone": [{ type: Output },], "onCollapseStart": [{ type: Output },], "boxHeaderDirective": [{ type: ContentChild, args: [BoxHeaderDirective,] },], "boxFooterDirective": [{ type: ContentChild, args: [BoxFooterDirective,] },], "boxContentDirective": [{ type: ContentChild, args: [BoxContentDirective,] },], "boxToolsDirective": [{ type: ContentChild, args: [BoxToolsDirective,] },], "toggleButtonElement": [{ type: ViewChild, args: ['toggleButtonElement',] },], "removeButtonElement": [{ type: ViewChild, args: ['removeButtonElement',] },], }; function BoxComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ BoxComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ BoxComponent.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ BoxComponent.propDecorators; /** @type {?} */ BoxComponent.prototype.isCollaping; /** @type {?} */ BoxComponent.prototype.remove; /** @type {?} */ BoxComponent.prototype.removed; /** @type {?} */ BoxComponent.prototype.listeners; /** @type {?} */ BoxComponent.prototype.boxColor; /** @type {?} */ BoxComponent.prototype.buttonsStyleClass; /** @type {?} */ BoxComponent.prototype.contentStyleClass; /** @type {?} */ BoxComponent.prototype.bodyStyleClass; /** @type {?} */ BoxComponent.prototype.contentColor; /** @type {?} */ BoxComponent.prototype.footer; /** @type {?} */ BoxComponent.prototype.footerColor; /** @type {?} */ BoxComponent.prototype.footerStyleClass; /** @type {?} */ BoxComponent.prototype.header; /** @type {?} */ BoxComponent.prototype.headerBorder; /** @type {?} */ BoxComponent.prototype.headerColor; /** @type {?} */ BoxComponent.prototype.headerStyleClass; /** @type {?} */ BoxComponent.prototype.isCollapsable; /** @type {?} */ BoxComponent.prototype.isCollapsed; /** @type {?} */ BoxComponent.prototype.isLoading; /** @type {?} */ BoxComponent.prototype.isRemovable; /** @type {?} */ BoxComponent.prototype.isSolid; /** @type {?} */ BoxComponent.prototype.loadingColor; /** @type {?} */ BoxComponent.prototype.loadingStyleClass; /** @type {?} */ BoxComponent.prototype.styleClass; /** @type {?} */ BoxComponent.prototype.onCollapseDone; /** @type {?} */ BoxComponent.prototype.onCollapseStart; /** @type {?} */ BoxComponent.prototype.boxHeaderDirective; /** @type {?} */ BoxComponent.prototype.boxFooterDirective; /** @type {?} */ BoxComponent.prototype.boxContentDirective; /** @type {?} */ BoxComponent.prototype.boxToolsDirective; /** @type {?} */ BoxComponent.prototype.toggleButtonElement; /** @type {?} */ BoxComponent.prototype.removeButtonElement; /** @type {?} */ BoxComponent.prototype.changeDetectorRef; /** @type {?} */ BoxComponent.prototype.ngZone; /** @type {?} */ BoxComponent.prototype.renderer2; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItYWRtaW4tbHRlLXRlbGlxby8iLCJzb3VyY2VzIjpbImxpYi9ib3gvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBNkMzQyxNQUFNOzs7Ozs7O0lBNENKLFlBQ1UsbUJBQ0EsUUFDQTtRQUZBLHNCQUFpQixHQUFqQixpQkFBaUI7UUFDakIsV0FBTSxHQUFOLE1BQU07UUFDTixjQUFTLEdBQVQsU0FBUztzQkE3Q0gsS0FBSzt5QkFFRCxFQUFFO3dCQUVLLFNBQVM7aUNBQ0Esa0JBQWtCO2lDQUNsQixxQkFBcUI7OEJBQ3hCLFVBQVU7Z0NBSVIsWUFBWTs0QkFFaEIsSUFBSTtnQ0FFQSxZQUFZOzZCQUNmLElBQUk7MkJBQ04sS0FBSzsyQkFFTCxJQUFJO3VCQUNSLEtBQUs7aUNBRUssdUJBQXVCOzBCQUM5QixLQUFLOzhCQUVBLElBQUksWUFBWSxFQUFFOytCQUNqQixJQUFJLFlBQVksRUFBRTtLQW9CakQ7Ozs7O0lBS0osZUFBZTtRQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2pDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDOUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDeEMsQ0FBQyxDQUFDLENBQUM7YUFDTDtZQUNELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtvQkFDOUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDeEMsQ0FBQyxDQUFDLENBQUM7YUFDTDtTQUNGLENBQUMsQ0FBQztLQUNKOzs7OztJQUtELFdBQVc7UUFDVCxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0tBQ2pDOzs7Ozs7O0lBT00sV0FBVyxDQUFDLEtBQUs7UUFDdEIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3JCOzs7Ozs7OztJQVFJLGFBQWEsQ0FBQyxLQUFxQjtRQUN4QyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbEM7Ozs7Ozs7O0lBUUksWUFBWSxDQUFDLEtBQXFCO1FBQ3ZDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztZQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQzs7OztZQXJKSixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQWtDWDtnQkFDQyxNQUFNLEVBQUUsQ0FBQyx5TEFBeUwsQ0FBQztnQkFDbk0sZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7Ozs7WUE1REMsaUJBQWlCO1lBS2pCLE1BQU07WUFHTixTQUFTOzs7eUJBMkRSLEtBQUs7a0NBQ0wsS0FBSztrQ0FDTCxLQUFLOytCQUNMLEtBQUs7NkJBQ0wsS0FBSzt1QkFDTCxLQUFLOzRCQUNMLEtBQUs7aUNBQ0wsS0FBSzt1QkFDTCxLQUFLOzZCQUNMLEtBQUs7NEJBQ0wsS0FBSztpQ0FDTCxLQUFLOzhCQUNMLEtBQUs7NEJBQ0wsS0FBSzswQkFDTCxLQUFLOzRCQUNMLEtBQUs7d0JBQ0wsS0FBSzs2QkFDTCxLQUFLO2tDQUNMLEtBQUs7MkJBQ0wsS0FBSzsrQkFFTCxNQUFNO2dDQUNOLE1BQU07bUNBRU4sWUFBWSxTQUFDLGtCQUFrQjttQ0FDL0IsWUFBWSxTQUFDLGtCQUFrQjtvQ0FDL0IsWUFBWSxTQUFDLG1CQUFtQjtrQ0FDaEMsWUFBWSxTQUFDLGlCQUFpQjtvQ0FFOUIsU0FBUyxTQUFDLHFCQUFxQjtvQ0FDL0IsU0FBUyxTQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0FuaW1hdGlvbkV2ZW50fSBmcm9tICcuLi9hbmltYXRpb25zL2FuaW1hdGlvbnMuaW50ZXJmYWNlJztcblxuaW1wb3J0IHtCb3hDb250ZW50RGlyZWN0aXZlLCBCb3hGb290ZXJEaXJlY3RpdmUsIEJveEhlYWRlckRpcmVjdGl2ZSwgQm94VG9vbHNEaXJlY3RpdmV9IGZyb20gJy4vYm94LmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7cmVtb3ZlTGlzdGVuZXJzfSBmcm9tICcuLi9oZWxwZXJzJztcblxuLypcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21rLWJveCcsXG4gIHRlbXBsYXRlOiBgPGRpdiAqbmdJZj1cIiFyZW1vdmVkXCIgW21rQ29sb3JdPVwiYm94Q29sb3JcIiBta0NvbG9yUHJvcGVydHk9XCJib3JkZXItY29sb3JcIiBta0NvbG9yUHJlZml4PVwiYm94XCIgW25nQ2xhc3NdPVwic3R5bGVDbGFzc1wiIFtjbGFzcy5jb2xsYXBzZWQtYm94XT1cImlzQ29sbGFwc2VkICYmICFpc0NvbGxhcGluZ1wiIFtjbGFzcy5ib3gtc29saWRdPVwiaXNTb2xpZFwiIFtjb2xsYXBzZUFuaW1hdGlvbl09XCJyZW1vdmVcIiAoY29sbGFwc2VBbmltYXRpb24uZG9uZSk9XCJyZW1vdmVkRG9uZSgkZXZlbnQpXCI+XG4gIDxkaXYgKm5nSWY9XCJoZWFkZXIgfHwgYm94SGVhZGVyRGlyZWN0aXZlXCIgW25nQ2xhc3NdPVwiaGVhZGVyU3R5bGVDbGFzc1wiIFtta0NvbG9yXT1cImJveENvbG9yXCIgW21rQ29sb3JDb25kaXRpb25dPVwiaXNTb2xpZFwiIG1rQ29sb3JQcm9wZXJ0eT1cImJhY2tncm91bmQtY29sb3JcIiBbY2xhc3Mud2l0aC1ib3JkZXJdPVwiaGVhZGVyQm9yZGVyXCI+XG4gICAgPGgzIGNsYXNzPVwiYm94LXRpdGxlXCIgW21rRm9udENvbG9yXT1cImhlYWRlckNvbG9yXCI+XG4gICAgICB7e2hlYWRlcn19XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtay1ib3gtaGVhZGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvaDM+XG4gICAgPGRpdiBjbGFzcz1cImJveC10b29scyBwdWxsLXJpZ2h0XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtay1ib3gtdG9vbHNcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiaXNDb2xsYXBzYWJsZVwiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJidXR0b25zU3R5bGVDbGFzc1wiICN0b2dnbGVCdXR0b25FbGVtZW50PlxuICAgICAgICA8aSBjbGFzcz1cImZhXCIgW25nQ2xhc3NdPVwieydmYS1wbHVzJzogaXNDb2xsYXBzZWQsICdmYS1taW51cyc6ICFpc0NvbGxhcHNlZH1cIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpc1JlbW92YWJsZVwiIHR5cGU9XCJidXR0b25cIiBbbmdDbGFzc109XCJidXR0b25zU3R5bGVDbGFzc1wiICNyZW1vdmVCdXR0b25FbGVtZW50PlxuICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCI+PC9pPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IFtuZ0NsYXNzXT1cImNvbnRlbnRTdHlsZUNsYXNzXCIgW21rRm9udENvbG9yXT1cImNvbnRlbnRDb2xvclwiIFtjb2xsYXBzZUFuaW1hdGlvbl09XCJpc0NvbGxhcHNlZFwiIChjb2xsYXBzZUFuaW1hdGlvbi5zdGFydCk9XCJjb2xsYXBzZVN0YXJ0KCRldmVudClcIiAoY29sbGFwc2VBbmltYXRpb24uZG9uZSk9XCJjb2xsYXBzZURvbmUoJGV2ZW50KVwiPlxuICAgIDxkaXYgW25nQ2xhc3NdPVwiYm9keVN0eWxlQ2xhc3NcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJib3hIZWFkZXJEaXJlY3RpdmUgfHwgYm94Q29udGVudERpcmVjdGl2ZSB8fCBib3hGb290ZXJEaXJlY3RpdmUgfHwgYm94VG9vbHNEaXJlY3RpdmU7IGVsc2Ugbm9EaXJlY3RpdmVcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWstYm94LWNvbnRlbnRcIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9EaXJlY3RpdmU+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImZvb3RlciB8fCBib3hGb290ZXJEaXJlY3RpdmVcIiBbbmdDbGFzc109XCJmb290ZXJTdHlsZUNsYXNzXCIgW21rRm9udENvbG9yXT1cImZvb3RlckNvbG9yXCI+XG4gICAgICB7e2Zvb3Rlcn19XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtay1ib3gtZm9vdGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwib3ZlcmxheVwiPlxuICAgIDxpIFtuZ0NsYXNzXT1cImxvYWRpbmdTdHlsZUNsYXNzXCIgW21rRm9udENvbG9yXT1cImxvYWRpbmdDb2xvclwiPjwvaT5cbiAgPC9kaXY+XG48L2Rpdj5cbmAsXG4gIHN0eWxlczogW2AuYm94LmNvbGxhcHNlZC1ib3ggLmJveC1ib2R5LC5ib3guY29sbGFwc2VkLWJveCAuYm94LWZvb3RlcntkaXNwbGF5OmluaGVyaXR9LmJveC1zb2xpZHtib3JkZXI6MXB4IHNvbGlkfS5ib3gtYm9keXtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZ9LmJveC5ib3gtc29saWQuYmctY29sb3I+LmJveC1oZWFkZXJ7Y29sb3I6I2ZmZn1gXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQm94Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIGlzQ29sbGFwaW5nOiBib29sZWFuO1xuICBwdWJsaWMgcmVtb3ZlID0gZmFsc2U7XG4gIHB1YmxpYyByZW1vdmVkOiBib29sZWFuO1xuICBwcml2YXRlIGxpc3RlbmVycyA9IFtdO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBib3hDb2xvciA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgcHVibGljIGJ1dHRvbnNTdHlsZUNsYXNzID0gJ2J0biBidG4tYm94LXRvb2wnO1xuICBASW5wdXQoKSBwdWJsaWMgY29udGVudFN0eWxlQ2xhc3MgPSAnYm94LWNvbnRlbnQtd3JhcHBlcic7XG4gIEBJbnB1dCgpIHB1YmxpYyBib2R5U3R5bGVDbGFzcyA9ICdib3gtYm9keSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50Q29sb3I6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGZvb3Rlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyQ29sb3I6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGZvb3RlclN0eWxlQ2xhc3MgPSAnYm94LWZvb3Rlcic7XG4gIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXI6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIGhlYWRlckJvcmRlciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXJDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyU3R5bGVDbGFzcyA9ICdib3gtaGVhZGVyJztcbiAgQElucHV0KCkgcHVibGljIGlzQ29sbGFwc2FibGUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNDb2xsYXBzZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIGlzUmVtb3ZhYmxlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGlzU29saWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGxvYWRpbmdDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ1N0eWxlQ2xhc3MgPSAnZmEgZmEtcmVmcmVzaCBmYS1zcGluJztcbiAgQElucHV0KCkgcHVibGljIHN0eWxlQ2xhc3MgPSAnYm94JztcblxuICBAT3V0cHV0KCkgcHVibGljIG9uQ29sbGFwc2VEb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIG9uQ29sbGFwc2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAQ29udGVudENoaWxkKEJveEhlYWRlckRpcmVjdGl2ZSkgcHVibGljIGJveEhlYWRlckRpcmVjdGl2ZTogQm94SGVhZGVyRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKEJveEZvb3RlckRpcmVjdGl2ZSkgcHVibGljIGJveEZvb3RlckRpcmVjdGl2ZTogQm94Rm9vdGVyRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKEJveENvbnRlbnREaXJlY3RpdmUpIHB1YmxpYyBib3hDb250ZW50RGlyZWN0aXZlOiBCb3hDb250ZW50RGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkKEJveFRvb2xzRGlyZWN0aXZlKSBwdWJsaWMgYm94VG9vbHNEaXJlY3RpdmU6IEJveFRvb2xzRGlyZWN0aXZlO1xuXG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZUJ1dHRvbkVsZW1lbnQnKSBwcml2YXRlIHRvZ2dsZUJ1dHRvbkVsZW1lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3JlbW92ZUJ1dHRvbkVsZW1lbnQnKSBwcml2YXRlIHJlbW92ZUJ1dHRvbkVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGNoYW5nZURldGVjdG9yUmVmIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtIG5nWm9uZSAgICAgICAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtIHJlbmRlcmVyMiAgICAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdBZnRlclZpZXdJbml0XG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMudG9nZ2xlQnV0dG9uRWxlbWVudCkge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLnRvZ2dsZUJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVtb3ZlQnV0dG9uRWxlbWVudCkge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0aGlzLnJlbW92ZUJ1dHRvbkVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVtb3ZlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdPbkRlc3Ryb3lcbiAgICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHJlbW92ZUxpc3RlbmVycyh0aGlzLmxpc3RlbmVycyk7XG4gIH1cblxuICAvKipcbiAgICogW3JlbW92ZWREb25lIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHJlbW92ZWREb25lXG4gICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlZERvbmUoZXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJzEnKSB7XG4gICAgICB0aGlzLnJlbW92ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBbY29sbGFwc2VTdGFydCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBjb2xsYXBzZVN0YXJ0XG4gICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgY29sbGFwc2VTdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQuZnJvbVN0YXRlICE9PSAndm9pZCcpIHtcbiAgICAgIHRoaXMuaXNDb2xsYXBpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5vbkNvbGxhcHNlU3RhcnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFtjb2xsYXBzZURvbmUgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgY29sbGFwc2VEb25lXG4gICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgY29sbGFwc2VEb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xuICAgICAgdGhpcy5pc0NvbGxhcGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5vbkNvbGxhcHNlRG9uZS5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==