UNPKG

angular-admin-lte-teliqo

Version:
261 lines (260 loc) 23.1 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'; var BoxComponent = /** @class */ (function () { /** * @method constructor * @param changeDetectorRef [description] * @param ngZone [description] * @param renderer2 [description] */ function BoxComponent(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 */ /** * \@method ngAfterViewInit * @return {?} */ BoxComponent.prototype.ngAfterViewInit = /** * \@method ngAfterViewInit * @return {?} */ function () { var _this = this; this.ngZone.runOutsideAngular(function () { if (_this.toggleButtonElement) { _this.listeners.push(_this.renderer2.listen(_this.toggleButtonElement.nativeElement, 'click', function () { _this.isCollapsed = !_this.isCollapsed; _this.changeDetectorRef.detectChanges(); })); } if (_this.removeButtonElement) { _this.listeners.push(_this.renderer2.listen(_this.removeButtonElement.nativeElement, 'click', function () { _this.remove = true; _this.changeDetectorRef.detectChanges(); })); } }); }; /** * @method ngOnDestroy */ /** * \@method ngOnDestroy * @return {?} */ BoxComponent.prototype.ngOnDestroy = /** * \@method ngOnDestroy * @return {?} */ function () { removeListeners(this.listeners); }; /** * [removedDone description] * \@method removedDone * @param {?} event [description] * @return {?} */ BoxComponent.prototype.removedDone = /** * [removedDone description] * \@method removedDone * @param {?} event [description] * @return {?} */ function (event) { if (event.toState === '1') { this.removed = true; } }; /** * [collapseStart description] * \@method collapseStart * @param {?} event [description] * @return {?} */ BoxComponent.prototype.collapseStart = /** * [collapseStart description] * \@method collapseStart * @param {?} event [description] * @return {?} */ function (event) { if (event.fromState !== 'void') { this.isCollaping = true; this.onCollapseStart.emit(event); } }; /** * [collapseDone description] * \@method collapseDone * @param {?} event [description] * @return {?} */ BoxComponent.prototype.collapseDone = /** * [collapseDone description] * \@method collapseDone * @param {?} event [description] * @return {?} */ function (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)\">\n <div *ngIf=\"header || boxHeaderDirective\" [ngClass]=\"headerStyleClass\" [mkColor]=\"boxColor\" [mkColorCondition]=\"isSolid\" mkColorProperty=\"background-color\" [class.with-border]=\"headerBorder\">\n <h3 class=\"box-title\" [mkFontColor]=\"headerColor\">\n {{header}}\n <ng-content select=\"mk-box-header\"></ng-content>\n </h3>\n <div class=\"box-tools pull-right\">\n <ng-content select=\"mk-box-tools\"></ng-content>\n <button *ngIf=\"isCollapsable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #toggleButtonElement>\n <i class=\"fa\" [ngClass]=\"{'fa-plus': isCollapsed, 'fa-minus': !isCollapsed}\"></i>\n </button>\n <button *ngIf=\"isRemovable\" type=\"button\" [ngClass]=\"buttonsStyleClass\" #removeButtonElement>\n <i class=\"fa fa-times\"></i>\n </button>\n </div>\n </div>\n <div [ngClass]=\"contentStyleClass\" [mkFontColor]=\"contentColor\" [collapseAnimation]=\"isCollapsed\" (collapseAnimation.start)=\"collapseStart($event)\" (collapseAnimation.done)=\"collapseDone($event)\">\n <div [ngClass]=\"bodyStyleClass\">\n <ng-container *ngIf=\"boxHeaderDirective || boxContentDirective || boxFooterDirective || boxToolsDirective; else noDirective\">\n <ng-content select=\"mk-box-content\"></ng-content>\n </ng-container>\n <ng-template #noDirective>\n <ng-content></ng-content>\n </ng-template>\n </div>\n <div *ngIf=\"footer || boxFooterDirective\" [ngClass]=\"footerStyleClass\" [mkFontColor]=\"footerColor\">\n {{footer}}\n <ng-content select=\"mk-box-footer\"></ng-content>\n </div>\n </div>\n <div *ngIf=\"isLoading\" class=\"overlay\">\n <i [ngClass]=\"loadingStyleClass\" [mkFontColor]=\"loadingColor\"></i>\n </div>\n</div>\n", 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 = function () { return [ { 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',] },], }; return BoxComponent; }()); export { BoxComponent }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItYWRtaW4tbHRlLXRlbGlxby8iLCJzb3VyY2VzIjpbImxpYi9ib3gvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQUMsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUUvRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sWUFBWSxDQUFDOztJQW1GekM7Ozs7O09BS0c7SUFDSCxzQkFDVSxtQkFDQSxRQUNBO1FBRkEsc0JBQWlCLEdBQWpCLGlCQUFpQjtRQUNqQixXQUFNLEdBQU4sTUFBTTtRQUNOLGNBQVMsR0FBVCxTQUFTO3NCQTdDSCxLQUFLO3lCQUVELEVBQUU7d0JBRUssU0FBUztpQ0FDQSxrQkFBa0I7aUNBQ2xCLHFCQUFxQjs4QkFDeEIsVUFBVTtnQ0FJUixZQUFZOzRCQUVoQixJQUFJO2dDQUVBLFlBQVk7NkJBQ2YsSUFBSTsyQkFDTixLQUFLOzJCQUVMLElBQUk7dUJBQ1IsS0FBSztpQ0FFSyx1QkFBdUI7MEJBQzlCLEtBQUs7OEJBRUEsSUFBSSxZQUFZLEVBQUU7K0JBQ2pCLElBQUksWUFBWSxFQUFFO0tBb0JqRDtJQUVKOztPQUVHOzs7OztJQUNILHNDQUFlOzs7O0lBQWY7UUFBQSxpQkFlQztRQWRDLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7WUFDNUIsRUFBRSxDQUFDLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDN0IsS0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxPQUFPLEVBQUU7b0JBQ3pGLEtBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDO29CQUNyQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3hDLENBQUMsQ0FBQyxDQUFDO2FBQ0w7WUFDRCxFQUFFLENBQUMsQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRTtvQkFDekYsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ25CLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztpQkFDeEMsQ0FBQyxDQUFDLENBQUM7YUFDTDtTQUNGLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7Ozs7O0lBQ0gsa0NBQVc7Ozs7SUFBWDtRQUNFLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7S0FDakM7Ozs7Ozs7SUFPTSxrQ0FBVzs7Ozs7O2NBQUMsS0FBSztRQUN0QixFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7U0FDckI7Ozs7Ozs7O0lBUUksb0NBQWE7Ozs7OztjQUFDLEtBQXFCO1FBQ3hDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNsQzs7Ozs7Ozs7SUFRSSxtQ0FBWTs7Ozs7O2NBQUMsS0FBcUI7UUFDdkMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ2pDOzs7Z0JBckpKLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsUUFBUTtvQkFDbEIsUUFBUSxFQUFFLDRoRUFrQ1g7b0JBQ0MsTUFBTSxFQUFFLENBQUMseUxBQXlMLENBQUM7b0JBQ25NLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQkE1REMsaUJBQWlCO2dCQUtqQixNQUFNO2dCQUdOLFNBQVM7Ozs2QkEyRFIsS0FBSztzQ0FDTCxLQUFLO3NDQUNMLEtBQUs7bUNBQ0wsS0FBSztpQ0FDTCxLQUFLOzJCQUNMLEtBQUs7Z0NBQ0wsS0FBSztxQ0FDTCxLQUFLOzJCQUNMLEtBQUs7aUNBQ0wsS0FBSztnQ0FDTCxLQUFLO3FDQUNMLEtBQUs7a0NBQ0wsS0FBSztnQ0FDTCxLQUFLOzhCQUNMLEtBQUs7Z0NBQ0wsS0FBSzs0QkFDTCxLQUFLO2lDQUNMLEtBQUs7c0NBQ0wsS0FBSzsrQkFDTCxLQUFLO21DQUVMLE1BQU07b0NBQ04sTUFBTTt1Q0FFTixZQUFZLFNBQUMsa0JBQWtCO3VDQUMvQixZQUFZLFNBQUMsa0JBQWtCO3dDQUMvQixZQUFZLFNBQUMsbUJBQW1CO3NDQUNoQyxZQUFZLFNBQUMsaUJBQWlCO3dDQUU5QixTQUFTLFNBQUMscUJBQXFCO3dDQUMvQixTQUFTLFNBQUMscUJBQXFCOzt1QkFwR2xDOztTQWdFYSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QW5pbWF0aW9uRXZlbnR9IGZyb20gJy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQge0JveENvbnRlbnREaXJlY3RpdmUsIEJveEZvb3RlckRpcmVjdGl2ZSwgQm94SGVhZGVyRGlyZWN0aXZlLCBCb3hUb29sc0RpcmVjdGl2ZX0gZnJvbSAnLi9ib3guZGlyZWN0aXZlJztcblxuaW1wb3J0IHtyZW1vdmVMaXN0ZW5lcnN9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG4vKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWstYm94JyxcbiAgdGVtcGxhdGU6IGA8ZGl2ICpuZ0lmPVwiIXJlbW92ZWRcIiBbbWtDb2xvcl09XCJib3hDb2xvclwiIG1rQ29sb3JQcm9wZXJ0eT1cImJvcmRlci1jb2xvclwiIG1rQ29sb3JQcmVmaXg9XCJib3hcIiBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCIgW2NsYXNzLmNvbGxhcHNlZC1ib3hdPVwiaXNDb2xsYXBzZWQgJiYgIWlzQ29sbGFwaW5nXCIgW2NsYXNzLmJveC1zb2xpZF09XCJpc1NvbGlkXCIgW2NvbGxhcHNlQW5pbWF0aW9uXT1cInJlbW92ZVwiIChjb2xsYXBzZUFuaW1hdGlvbi5kb25lKT1cInJlbW92ZWREb25lKCRldmVudClcIj5cbiAgPGRpdiAqbmdJZj1cImhlYWRlciB8fCBib3hIZWFkZXJEaXJlY3RpdmVcIiBbbmdDbGFzc109XCJoZWFkZXJTdHlsZUNsYXNzXCIgW21rQ29sb3JdPVwiYm94Q29sb3JcIiBbbWtDb2xvckNvbmRpdGlvbl09XCJpc1NvbGlkXCIgbWtDb2xvclByb3BlcnR5PVwiYmFja2dyb3VuZC1jb2xvclwiIFtjbGFzcy53aXRoLWJvcmRlcl09XCJoZWFkZXJCb3JkZXJcIj5cbiAgICA8aDMgY2xhc3M9XCJib3gtdGl0bGVcIiBbbWtGb250Q29sb3JdPVwiaGVhZGVyQ29sb3JcIj5cbiAgICAgIHt7aGVhZGVyfX1cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1rLWJveC1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9oMz5cbiAgICA8ZGl2IGNsYXNzPVwiYm94LXRvb2xzIHB1bGwtcmlnaHRcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1rLWJveC10b29sc1wiPjwvbmctY29udGVudD5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJpc0NvbGxhcHNhYmxlXCIgdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cImJ1dHRvbnNTdHlsZUNsYXNzXCIgI3RvZ2dsZUJ1dHRvbkVsZW1lbnQ+XG4gICAgICAgIDxpIGNsYXNzPVwiZmFcIiBbbmdDbGFzc109XCJ7J2ZhLXBsdXMnOiBpc0NvbGxhcHNlZCwgJ2ZhLW1pbnVzJzogIWlzQ29sbGFwc2VkfVwiPjwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzUmVtb3ZhYmxlXCIgdHlwZT1cImJ1dHRvblwiIFtuZ0NsYXNzXT1cImJ1dHRvbnNTdHlsZUNsYXNzXCIgI3JlbW92ZUJ1dHRvbkVsZW1lbnQ+XG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIj48L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgW25nQ2xhc3NdPVwiY29udGVudFN0eWxlQ2xhc3NcIiBbbWtGb250Q29sb3JdPVwiY29udGVudENvbG9yXCIgW2NvbGxhcHNlQW5pbWF0aW9uXT1cImlzQ29sbGFwc2VkXCIgKGNvbGxhcHNlQW5pbWF0aW9uLnN0YXJ0KT1cImNvbGxhcHNlU3RhcnQoJGV2ZW50KVwiIChjb2xsYXBzZUFuaW1hdGlvbi5kb25lKT1cImNvbGxhcHNlRG9uZSgkZXZlbnQpXCI+XG4gICAgPGRpdiBbbmdDbGFzc109XCJib2R5U3R5bGVDbGFzc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJveEhlYWRlckRpcmVjdGl2ZSB8fCBib3hDb250ZW50RGlyZWN0aXZlIHx8IGJveEZvb3RlckRpcmVjdGl2ZSB8fCBib3hUb29sc0RpcmVjdGl2ZTsgZWxzZSBub0RpcmVjdGl2ZVwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtay1ib3gtY29udGVudFwiPjwvbmctY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNub0RpcmVjdGl2ZT5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiZm9vdGVyIHx8IGJveEZvb3RlckRpcmVjdGl2ZVwiIFtuZ0NsYXNzXT1cImZvb3RlclN0eWxlQ2xhc3NcIiBbbWtGb250Q29sb3JdPVwiZm9vdGVyQ29sb3JcIj5cbiAgICAgIHt7Zm9vdGVyfX1cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1rLWJveC1mb290ZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nXCIgY2xhc3M9XCJvdmVybGF5XCI+XG4gICAgPGkgW25nQ2xhc3NdPVwibG9hZGluZ1N0eWxlQ2xhc3NcIiBbbWtGb250Q29sb3JdPVwibG9hZGluZ0NvbG9yXCI+PC9pPlxuICA8L2Rpdj5cbjwvZGl2PlxuYCxcbiAgc3R5bGVzOiBbYC5ib3guY29sbGFwc2VkLWJveCAuYm94LWJvZHksLmJveC5jb2xsYXBzZWQtYm94IC5ib3gtZm9vdGVye2Rpc3BsYXk6aW5oZXJpdH0uYm94LXNvbGlke2JvcmRlcjoxcHggc29saWR9LmJveC1ib2R5e2JhY2tncm91bmQtY29sb3I6I2ZmZn0uYm94LmJveC1zb2xpZC5iZy1jb2xvcj4uYm94LWhlYWRlcntjb2xvcjojZmZmfWBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgaXNDb2xsYXBpbmc6IGJvb2xlYW47XG4gIHB1YmxpYyByZW1vdmUgPSBmYWxzZTtcbiAgcHVibGljIHJlbW92ZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgbGlzdGVuZXJzID0gW107XG5cbiAgQElucHV0KCkgcHVibGljIGJveENvbG9yID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBwdWJsaWMgYnV0dG9uc1N0eWxlQ2xhc3MgPSAnYnRuIGJ0bi1ib3gtdG9vbCc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250ZW50U3R5bGVDbGFzcyA9ICdib3gtY29udGVudC13cmFwcGVyJztcbiAgQElucHV0KCkgcHVibGljIGJvZHlTdHlsZUNsYXNzID0gJ2JveC1ib2R5JztcbiAgQElucHV0KCkgcHVibGljIGNvbnRlbnRDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb290ZXJDb2xvcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgZm9vdGVyU3R5bGVDbGFzcyA9ICdib3gtZm9vdGVyJztcbiAgQElucHV0KCkgcHVibGljIGhlYWRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgaGVhZGVyQm9yZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGhlYWRlckNvbG9yOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBoZWFkZXJTdHlsZUNsYXNzID0gJ2JveC1oZWFkZXInO1xuICBASW5wdXQoKSBwdWJsaWMgaXNDb2xsYXBzYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyBpc0NvbGxhcHNlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNMb2FkaW5nOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgaXNSZW1vdmFibGUgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNTb2xpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZGluZ0NvbG9yOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2FkaW5nU3R5bGVDbGFzcyA9ICdmYSBmYS1yZWZyZXNoIGZhLXNwaW4nO1xuICBASW5wdXQoKSBwdWJsaWMgc3R5bGVDbGFzcyA9ICdib3gnO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgb25Db2xsYXBzZURvbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgb25Db2xsYXBzZVN0YXJ0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBDb250ZW50Q2hpbGQoQm94SGVhZGVyRGlyZWN0aXZlKSBwdWJsaWMgYm94SGVhZGVyRGlyZWN0aXZlOiBCb3hIZWFkZXJEaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoQm94Rm9vdGVyRGlyZWN0aXZlKSBwdWJsaWMgYm94Rm9vdGVyRGlyZWN0aXZlOiBCb3hGb290ZXJEaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoQm94Q29udGVudERpcmVjdGl2ZSkgcHVibGljIGJveENvbnRlbnREaXJlY3RpdmU6IEJveENvbnRlbnREaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoQm94VG9vbHNEaXJlY3RpdmUpIHB1YmxpYyBib3hUb29sc0RpcmVjdGl2ZTogQm94VG9vbHNEaXJlY3RpdmU7XG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uRWxlbWVudCcpIHByaXZhdGUgdG9nZ2xlQnV0dG9uRWxlbWVudDtcbiAgQFZpZXdDaGlsZCgncmVtb3ZlQnV0dG9uRWxlbWVudCcpIHByaXZhdGUgcmVtb3ZlQnV0dG9uRWxlbWVudDtcblxuICAvKipcbiAgICogQG1ldGhvZCBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcGFyYW0gbmdab25lICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXVxuICAgKiBAcGFyYW0gcmVuZGVyZXIyICAgICAgICAgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIHJlbmRlcmVyMjogUmVuZGVyZXIyXG4gICkge31cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ0FmdGVyVmlld0luaXRcbiAgICovXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy50b2dnbGVCdXR0b25FbGVtZW50KSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMudG9nZ2xlQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0NvbGxhcHNlZCA9ICF0aGlzLmlzQ29sbGFwc2VkO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZW1vdmVCdXR0b25FbGVtZW50KSB7XG4gICAgICAgIHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5yZW5kZXJlcjIubGlzdGVuKHRoaXMucmVtb3ZlQnV0dG9uRWxlbWVudC5uYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZW1vdmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQG1ldGhvZCBuZ09uRGVzdHJveVxuICAgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgcmVtb3ZlTGlzdGVuZXJzKHRoaXMubGlzdGVuZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbcmVtb3ZlZERvbmUgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2QgcmVtb3ZlZERvbmVcbiAgICogQHBhcmFtIGV2ZW50IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyByZW1vdmVkRG9uZShldmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC50b1N0YXRlID09PSAnMScpIHtcbiAgICAgIHRoaXMucmVtb3ZlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFtjb2xsYXBzZVN0YXJ0IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIGNvbGxhcHNlU3RhcnRcbiAgICogQHBhcmFtIGV2ZW50IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBjb2xsYXBzZVN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5mcm9tU3RhdGUgIT09ICd2b2lkJykge1xuICAgICAgdGhpcy5pc0NvbGxhcGluZyA9IHRydWU7XG4gICAgICB0aGlzLm9uQ29sbGFwc2VTdGFydC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogW2NvbGxhcHNlRG9uZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBjb2xsYXBzZURvbmVcbiAgICogQHBhcmFtIGV2ZW50IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBjb2xsYXBzZURvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmZyb21TdGF0ZSAhPT0gJ3ZvaWQnKSB7XG4gICAgICB0aGlzLmlzQ29sbGFwaW5nID0gZmFsc2U7XG4gICAgICB0aGlzLm9uQ29sbGFwc2VEb25lLmVtaXQoZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIl19