UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

151 lines 23.5 kB
import { ChangeDetectionStrategy, Component, ContentChild, TemplateRef, ViewEncapsulation, inject, ViewChild, ElementRef, Input, } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { IframeConfigService } from '../../iframe-config/config.service'; import { PageContextService } from './context.service'; import { PageContentDirective, PageHeaderDirective, PageSiderDirective, PageToolbarDirective, } from './helper-directives'; import * as i0 from "@angular/core"; import * as i1 from "../../iframe-config/config.service"; import * as i2 from "@angular/common"; import * as i3 from "./notices/notice.component"; import * as i4 from "@angular/cdk/overlay"; const _c0 = ["header"]; function PageComponent_div_2_acl_page_notice_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "acl-page-notice"); } } function PageComponent_div_2_ng_container_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function PageComponent_div_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 7, 0); i0.ɵɵtemplate(2, PageComponent_div_2_acl_page_notice_2_Template, 1, 0, "acl-page-notice", 8); i0.ɵɵelementStart(3, "div", 9); i0.ɵɵtemplate(4, PageComponent_div_2_ng_container_4_Template, 1, 0, "ng-container", 6); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx_r0.showAlerts); i0.ɵɵadvance(2); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.pageHeader); } } function PageComponent_div_3_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function PageComponent_div_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 10)(1, "div", 11); i0.ɵɵtemplate(2, PageComponent_div_3_ng_container_2_Template, 1, 0, "ng-container", 6); i0.ɵɵelementEnd()(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(2); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.pageSider); } } function PageComponent_div_5_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } function PageComponent_div_5_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 12); i0.ɵɵtemplate(1, PageComponent_div_5_ng_container_1_Template, 1, 0, "ng-container", 6); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.pageToolbar); } } function PageComponent_ng_container_7_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainer(0); } } export class PageComponent { constructor(iframeConfigService) { this.iframeConfigService = iframeConfigService; this.showAlerts = true; this.classes = new Set(); this.classes$$ = new BehaviorSubject(this.classes); this.showToolbar$ = inject(PageContextService).showToolbar$; this.isHideMenu = this.iframeConfigService.isHideMenu; this.isHideHeader = this.iframeConfigService.isHideHeader; document.querySelector('.index-loading-spinner')?.remove(); } ngAfterViewInit() { if (this.header) { const resizeObserver = new ResizeObserver(() => { const height = Math.ceil(this.header.nativeElement.getBoundingClientRect().height); document.documentElement.style.setProperty('--acl-page-header-height', `${height}px`); }); resizeObserver.observe(this.header.nativeElement); } } addClass(cls) { cls.split(' ').forEach(cl => { this.classes.add(cl.trim()); }); this.classes$$.next(this.classes); } removeClass(cls) { cls.split(' ').forEach(cl => { this.classes.delete(cl.trim()); }); this.classes$$.next(this.classes); } static { this.ɵfac = function PageComponent_Factory(t) { return new (t || PageComponent)(i0.ɵɵdirectiveInject(i1.IframeConfigService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PageComponent, selectors: [["acl-page"]], contentQueries: function PageComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, PageHeaderDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, PageContentDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, PageSiderDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, PageToolbarDirective, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageHeader = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageContent = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageSider = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pageToolbar = _t.first); } }, viewQuery: function PageComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(_c0, 5); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.header = _t.first); } }, inputs: { showAlerts: "showAlerts" }, features: [i0.ɵɵProvidersFeature([PageContextService])], decls: 8, vars: 17, consts: [["header", ""], [1, "acl-page", 3, "ngClass"], ["class", "acl-page__header", 4, "ngIf"], ["class", "acl-page__sider-wrapper tw-fixed tw-top-0 tw-left-0 tw-h-[100vh]", 4, "ngIf"], [1, "acl-page__content"], ["class", "acl-page__toolbar", 4, "ngIf"], [4, "ngTemplateOutlet"], [1, "acl-page__header"], [4, "ngIf"], [1, "acl-page__header-content"], [1, "acl-page__sider-wrapper", "tw-fixed", "tw-top-0", "tw-left-0", "tw-h-[100vh]"], ["cdk-scrollable", "", 1, "acl-page__sider-wrapper-scroll", "tw-h-full", "tw-overflow-y-auto", "tw-overflow-x-hidden"], [1, "acl-page__toolbar"]], template: function PageComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 1); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, PageComponent_div_2_Template, 5, 2, "div", 2)(3, PageComponent_div_3_Template, 3, 1, "div", 3); i0.ɵɵelementStart(4, "div", 4); i0.ɵɵtemplate(5, PageComponent_div_5_Template, 2, 1, "div", 5); i0.ɵɵpipe(6, "async"); i0.ɵɵtemplate(7, PageComponent_ng_container_7_Template, 1, 0, "ng-container", 6); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵclassProp("hasHeader", ctx.pageHeader && !ctx.isHideHeader)("hasSider", ctx.pageSider)("hasToolbar", ctx.pageToolbar)("hideHeader", ctx.isHideHeader); i0.ɵɵproperty("ngClass", i0.ɵɵpipeBind1(1, 13, ctx.classes$$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx.pageHeader && !ctx.isHideHeader); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx.pageSider && !ctx.isHideMenu); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 15, ctx.showToolbar$) && ctx.pageToolbar); i0.ɵɵadvance(2); i0.ɵɵproperty("ngTemplateOutlet", ctx.pageContent); } }, dependencies: [i2.NgClass, i2.NgIf, i2.NgTemplateOutlet, i3.NoticeComponent, i4.CdkScrollable, i2.AsyncPipe], styles: [".acl-page{min-height:100vh;background-color:rgb(var(--aui-color-main-bg))}.acl-page__header{position:fixed;top:0;left:0;right:0;z-index:600;background-color:var(--acl-page-header-background-color)}.acl-page__header-content{display:flex;justify-content:space-between;align-items:center;height:60px;padding:0 20px 0 16px}:root .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.1)}html[aui-theme-mode=light] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.1)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.75)}.acl-page__sider-wrapper{padding:44px 4px 0 10px;z-index:500;background-color:var(--acl-nav-background-color)}.acl-page__sider-wrapper-scroll{padding:44px 10px 0;width:240px;scrollbar-width:none}.sidenav-collapse .acl-page__sider-wrapper-scroll{width:60px}.sidenav-ani .acl-page__sider-wrapper-scroll{transition:width padding;transition-duration:.3s;transition-timing-function:cubic-bezier(.38,0,.24,1)}.acl-page__sider-wrapper-scroll::-webkit-scrollbar{display:none}.acl-page__sider-wrapper acl-nav-skeleton>ul{width:220px;overflow:hidden}.sidenav-collapse .acl-page__sider-wrapper acl-nav-skeleton>ul{width:40px;transform:translate(-8px)}.acl-page__toolbar{display:flex;justify-content:space-between;align-items:center;height:44px;padding:0 0 0 20px}.acl-page__content{min-height:100vh;position:relative;padding:20px;min-width:1200px}.acl-page.hasSider .acl-page__content{min-width:960px;padding-left:0;margin-left:260px}.sidenav-collapse.acl-page.hasSider .acl-page__content{margin-left:80px}.sidenav-ani.acl-page.hasSider .acl-page__content{transition:margin-left;transition-duration:.3s;transition-timing-function:cubic-bezier(.38,0,.24,1)}.acl-page.hasHeader .acl-page__content{padding-top:calc(var(--acl-page-header-height) + 20px)}.acl-page.hasHeader.hasToolbar .acl-page__content,.acl-page.hasHeader .acl-page__sider-wrapper{padding-top:var(--acl-page-header-height)}.acl-page.hideHeader .acl-page__sider-wrapper{padding-top:0}.acl-page.hideHeader .acl-page__sider-wrapper-scroll{padding-top:20px}.acl-page.hideHeader .acl-page__content{padding-top:0}\n"], encapsulation: 2, changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PageComponent, [{ type: Component, args: [{ selector: 'acl-page', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, providers: [PageContextService], template: "<div\n class=\"acl-page\"\n [class.hasHeader]=\"pageHeader && !isHideHeader\"\n [class.hasSider]=\"pageSider\"\n [class.hasToolbar]=\"pageToolbar\"\n [class.hideHeader]=\"isHideHeader\"\n [ngClass]=\"classes$$ | async\"\n>\n <div\n *ngIf=\"pageHeader && !isHideHeader\"\n class=\"acl-page__header\"\n #header\n >\n <acl-page-notice *ngIf=\"showAlerts\"></acl-page-notice>\n <div class=\"acl-page__header-content\">\n <ng-container *ngTemplateOutlet=\"pageHeader\"></ng-container>\n </div>\n </div>\n\n <div\n *ngIf=\"pageSider && !isHideMenu\"\n class=\"acl-page__sider-wrapper tw-fixed tw-top-0 tw-left-0 tw-h-[100vh]\"\n >\n <div\n class=\"acl-page__sider-wrapper-scroll tw-h-full tw-overflow-y-auto tw-overflow-x-hidden\"\n cdk-scrollable\n >\n <ng-container *ngTemplateOutlet=\"pageSider\"></ng-container>\n </div>\n </div>\n\n <div class=\"acl-page__content\">\n <div\n *ngIf=\"(showToolbar$ | async) && pageToolbar\"\n class=\"acl-page__toolbar\"\n >\n <ng-container *ngTemplateOutlet=\"pageToolbar\"></ng-container>\n </div>\n <ng-container *ngTemplateOutlet=\"pageContent\"></ng-container>\n </div>\n</div>\n", styles: [".acl-page{min-height:100vh;background-color:rgb(var(--aui-color-main-bg))}.acl-page__header{position:fixed;top:0;left:0;right:0;z-index:600;background-color:var(--acl-page-header-background-color)}.acl-page__header-content{display:flex;justify-content:space-between;align-items:center;height:60px;padding:0 20px 0 16px}:root .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.1)}html[aui-theme-mode=light] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.1)}@media (prefers-color-scheme: dark){html[aui-theme-mode=system] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.75)}}html[aui-theme-mode=dark] .acl-page__header{box-shadow:0 0 4px rgba(var(--aui-color-origin-shadow),.75)}.acl-page__sider-wrapper{padding:44px 4px 0 10px;z-index:500;background-color:var(--acl-nav-background-color)}.acl-page__sider-wrapper-scroll{padding:44px 10px 0;width:240px;scrollbar-width:none}.sidenav-collapse .acl-page__sider-wrapper-scroll{width:60px}.sidenav-ani .acl-page__sider-wrapper-scroll{transition:width padding;transition-duration:.3s;transition-timing-function:cubic-bezier(.38,0,.24,1)}.acl-page__sider-wrapper-scroll::-webkit-scrollbar{display:none}.acl-page__sider-wrapper acl-nav-skeleton>ul{width:220px;overflow:hidden}.sidenav-collapse .acl-page__sider-wrapper acl-nav-skeleton>ul{width:40px;transform:translate(-8px)}.acl-page__toolbar{display:flex;justify-content:space-between;align-items:center;height:44px;padding:0 0 0 20px}.acl-page__content{min-height:100vh;position:relative;padding:20px;min-width:1200px}.acl-page.hasSider .acl-page__content{min-width:960px;padding-left:0;margin-left:260px}.sidenav-collapse.acl-page.hasSider .acl-page__content{margin-left:80px}.sidenav-ani.acl-page.hasSider .acl-page__content{transition:margin-left;transition-duration:.3s;transition-timing-function:cubic-bezier(.38,0,.24,1)}.acl-page.hasHeader .acl-page__content{padding-top:calc(var(--acl-page-header-height) + 20px)}.acl-page.hasHeader.hasToolbar .acl-page__content,.acl-page.hasHeader .acl-page__sider-wrapper{padding-top:var(--acl-page-header-height)}.acl-page.hideHeader .acl-page__sider-wrapper{padding-top:0}.acl-page.hideHeader .acl-page__sider-wrapper-scroll{padding-top:20px}.acl-page.hideHeader .acl-page__content{padding-top:0}\n"] }] }], () => [{ type: i1.IframeConfigService }], { showAlerts: [{ type: Input }], pageHeader: [{ type: ContentChild, args: [PageHeaderDirective, { read: TemplateRef }] }], pageContent: [{ type: ContentChild, args: [PageContentDirective, { read: TemplateRef }] }], pageSider: [{ type: ContentChild, args: [PageSiderDirective, { read: TemplateRef }] }], pageToolbar: [{ type: ContentChild, args: [PageToolbarDirective, { read: TemplateRef }] }], header: [{ type: ViewChild, args: ['header'] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PageComponent, { className: "PageComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvcGFnZS1zY2FmZm9sZC9wYWdlL3BhZ2UuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS9wYWdlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixTQUFTLEVBQ1QsVUFBVSxFQUVWLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRXpFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLGtCQUFrQixFQUNsQixvQkFBb0IsR0FDckIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7SUNUekIsa0NBQXNEOzs7SUFFcEQsd0JBQTREOzs7SUFQaEUsaUNBSUM7SUFDQyw0RkFBb0M7SUFDcEMsOEJBQXNDO0lBQ3BDLHNGQUE2QztJQUVqRCxBQURFLGlCQUFNLEVBQ0Y7OztJQUpjLGVBQWdCO0lBQWhCLHdDQUFnQjtJQUVqQixlQUE0QjtJQUE1QixvREFBNEI7OztJQVkzQyx3QkFBMkQ7OztJQUo3RCxBQUpGLCtCQUdDLGNBSUU7SUFDQyxzRkFBNEM7SUFFaEQsQUFERSxpQkFBTSxFQUNGOzs7SUFGYSxlQUEyQjtJQUEzQixtREFBMkI7OztJQVMxQyx3QkFBNkQ7OztJQUovRCwrQkFHQztJQUNDLHNGQUE4QztJQUNoRCxpQkFBTTs7O0lBRFcs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LENBQUMsSUFBSSx1QkFDaEIsS0FBSyxhQUNmLENBQUMsa0JBQWtCLENBQUM7b0RBSS9CLFVBQVU7a0JBRFQsS0FBSztZQUlOLFVBQVU7a0JBRFQsWUFBWTttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFJeEQsV0FBVztrQkFEVixZQUFZO21CQUFDLG9CQUFvQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUl6RCxTQUFTO2tCQURSLFlBQVk7bUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBSXZELFdBQVc7a0JBRFYsWUFBWTttQkFBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFJekQsTUFBTTtrQkFETCxTQUFTO21CQUFDLFFBQVE7O2tGQWhCUixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbiAgVmlld0NoaWxkLFxuICBFbGVtZW50UmVmLFxuICBBZnRlclZpZXdJbml0LFxuICBJbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSWZyYW1lQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL2lmcmFtZS1jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBQYWdlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQge1xuICBQYWdlQ29udGVudERpcmVjdGl2ZSxcbiAgUGFnZUhlYWRlckRpcmVjdGl2ZSxcbiAgUGFnZVNpZGVyRGlyZWN0aXZlLFxuICBQYWdlVG9vbGJhckRpcmVjdGl2ZSxcbn0gZnJvbSAnLi9oZWxwZXItZGlyZWN0aXZlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgcHJvdmlkZXJzOiBbUGFnZUNvbnRleHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKVxuICBzaG93QWxlcnRzID0gdHJ1ZTtcblxuICBAQ29udGVudENoaWxkKFBhZ2VIZWFkZXJEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgcGFnZUhlYWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKFBhZ2VDb250ZW50RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2VDb250ZW50OiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoUGFnZVNpZGVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2VTaWRlcjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKFBhZ2VUb29sYmFyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gIHBhZ2VUb29sYmFyOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2hlYWRlcicpXG4gIGhlYWRlcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xhc3NlczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG5cbiAgY2xhc3NlcyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLmNsYXNzZXMpO1xuICBzaG93VG9vbGJhciQgPSBpbmplY3QoUGFnZUNvbnRleHRTZXJ2aWNlKS5zaG93VG9vbGJhciQ7XG4gIGlzSGlkZU1lbnUgPSB0aGlzLmlmcmFtZUNvbmZpZ1NlcnZpY2UuaXNIaWRlTWVudTtcbiAgaXNIaWRlSGVhZGVyID0gdGhpcy5pZnJhbWVDb25maWdTZXJ2aWNlLmlzSGlkZUhlYWRlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGlmcmFtZUNvbmZpZ1NlcnZpY2U6IElmcmFtZUNvbmZpZ1NlcnZpY2UpIHtcbiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW5kZXgtbG9hZGluZy1zcGlubmVyJyk/LnJlbW92ZSgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmICh0aGlzLmhlYWRlcikge1xuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBNYXRoLmNlaWwoXG4gICAgICAgICAgdGhpcy5oZWFkZXIubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQsXG4gICAgICAgICk7XG4gICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAnLS1hY2wtcGFnZS1oZWFkZXItaGVpZ2h0JyxcbiAgICAgICAgICBgJHtoZWlnaHR9cHhgLFxuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIGFkZENsYXNzKGNsczogc3RyaW5nKSB7XG4gICAgY2xzLnNwbGl0KCcgJykuZm9yRWFjaChjbCA9PiB7XG4gICAgICB0aGlzLmNsYXNzZXMuYWRkKGNsLnRyaW0oKSk7XG4gICAgfSk7XG4gICAgdGhpcy5jbGFzc2VzJCQubmV4dCh0aGlzLmNsYXNzZXMpO1xuICB9XG5cbiAgcmVtb3ZlQ2xhc3MoY2xzOiBzdHJpbmcpIHtcbiAgICBjbHMuc3BsaXQoJyAnKS5mb3JFYWNoKGNsID0+IHtcbiAgICAgIHRoaXMuY2xhc3Nlcy5kZWxldGUoY2wudHJpbSgpKTtcbiAgICB9KTtcbiAgICB0aGlzLmNsYXNzZXMkJC5uZXh0KHRoaXMuY2xhc3Nlcyk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJhY2wtcGFnZVwiXG4gIFtjbGFzcy5oYXNIZWFkZXJdPVwicGFnZUhlYWRlciAmJiAhaXNIaWRlSGVhZGVyXCJcbiAgW2NsYXNzLmhhc1NpZGVyXT1cInBhZ2VTaWRlclwiXG4gIFtjbGFzcy5oYXNUb29sYmFyXT1cInBhZ2VUb29sYmFyXCJcbiAgW2NsYXNzLmhpZGVIZWFkZXJdPVwiaXNIaWRlSGVhZGVyXCJcbiAgW25nQ2xhc3NdPVwiY2xhc3NlcyQkIHwgYXN5bmNcIlxuPlxuICA8ZGl2XG4gICAgKm5nSWY9XCJwYWdlSGVhZGVyICYmICFpc0hpZGVIZWFkZXJcIlxuICAgIGNsYXNzPVwiYWNsLXBhZ2VfX2hlYWRlclwiXG4gICAgI2hlYWRlclxuICA+XG4gICAgPGFjbC1wYWdlLW5vdGljZSAqbmdJZj1cInNob3dBbGVydHNcIj48L2FjbC1wYWdlLW5vdGljZT5cbiAgICA8ZGl2IGNsYXNzPVwiYWNsLXBhZ2VfX2hlYWRlci1jb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFnZUhlYWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2XG4gICAgKm5nSWY9XCJwYWdlU2lkZXIgJiYgIWlzSGlkZU1lbnVcIlxuICAgIGNsYXNzPVwiYWNsLXBhZ2VfX3NpZGVyLXdyYXBwZXIgdHctZml4ZWQgdHctdG9wLTAgdHctbGVmdC0wIHR3LWgtWzEwMHZoXVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFjbC1wYWdlX19zaWRlci13cmFwcGVyLXNjcm9sbCB0dy1oLWZ1bGwgdHctb3ZlcmZsb3cteS1hdXRvIHR3LW92ZXJmbG93LXgtaGlkZGVuXCJcbiAgICAgIGNkay1zY3JvbGxhYmxlXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VTaWRlclwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWNsLXBhZ2VfX2NvbnRlbnRcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cIihzaG93VG9vbGJhciQgfCBhc3luYykgJiYgcGFnZVRvb2xiYXJcIlxuICAgICAgY2xhc3M9XCJhY2wtcGFnZV9fdG9vbGJhclwiXG4gICAgPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VUb29sYmFyXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBhZ2VDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=