UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

385 lines 47.5 kB
import { __decorate, __metadata } from "tslib"; /** * @packageDocumentation * @module k8s-resource-list */ import { ChangeDetectionStrategy, Component, ContentChild, Directive, Input, TemplateRef, Injector, } from '@angular/core'; import { Observable, combineLatest, concat, debounceTime, distinctUntilChanged, filter, map, startWith, switchMap, take, takeUntil, takeWhile, } from 'rxjs'; import { publishRef, ScrollBorderObserverDirective, } from '../../core/public-api'; import { ObservableInput } from '../../core/utils/decorators'; import { TranslateService } from '../../translate/public-api'; import { LoadAction } from '../types'; import * as i0 from "@angular/core"; import * as i1 from "../../translate/public-api"; import * as i2 from "@angular/common"; import * as i3 from "@alauda/ui"; import * as i4 from "../../translate/translate.pipe"; const _c0 = () => [410, 403]; const _c1 = (a0, a1) => ({ loading: a0, loadMore: a1 }); function K8SResourceListFooterComponent_div_0_ng_container_1_1_ng_template_0_Template(rf, ctx) { } function K8SResourceListFooterComponent_div_0_ng_container_1_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_div_0_ng_container_1_1_ng_template_0_Template, 0, 0, "ng-template"); } } function K8SResourceListFooterComponent_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_div_0_ng_container_1_1_Template, 1, 0, null, 4); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.noDataTemplate); } } function K8SResourceListFooterComponent_div_0_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "div", 5); i0.ɵɵelement(2, "img", 6); i0.ɵɵpipe(3, "auiThemePicker"); i0.ɵɵelementStart(4, "div"); i0.ɵɵtext(5); i0.ɵɵpipe(6, "async"); i0.ɵɵelementEnd()(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(2); i0.ɵɵproperty("src", i0.ɵɵpipeBind1(3, 2, ctx_r0.image), i0.ɵɵsanitizeUrl); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 4, ctx_r0.noDataHint$)); } } function K8SResourceListFooterComponent_div_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 3); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_div_0_ng_container_1_Template, 2, 1, "ng-container", 1)(2, K8SResourceListFooterComponent_div_0_ng_container_2_Template, 7, 6, "ng-container", 1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", ctx_r0.noDataTemplate); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", !ctx_r0.noDataTemplate); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_ng_template_0_Template(rf, ctx) { } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_ng_template_0_Template, 0, 0, "ng-template"); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_0_Template, 1, 0, null, 4); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngTemplateOutlet", ctx_r0.loadingErrorTemplate); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template(rf, ctx) { if (rf & 1) { const _r2 = i0.ɵɵgetCurrentView(); i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "button", 9); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r2); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.retry()); }); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2("", i0.ɵɵpipeBind1(3, 3, "error_loading_data"), ",", i0.ɵɵpipeBind1(4, 5, "please"), ""); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 7, "retry").toLowerCase(), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template(rf, ctx) { if (rf & 1) { const _r3 = i0.ɵɵgetCurrentView(); i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(5, "button", 9); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.reload()); }); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(8, "span"); i0.ɵɵtext(9); i0.ɵɵpipe(10, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(11, "button", 9); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r3); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.loadMore()); }); i0.ɵɵtext(12); i0.ɵɵpipe(13, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(3, 5, "list_data_has_expired"), ", ", i0.ɵɵpipeBind1(4, 7, "please"), " "); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 9, "refresh"), " "); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(10, 11, "or")); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 13, "continue_load"), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵelementStart(1, "span"); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementContainerEnd(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "no_permission_description"), " "); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_0_Template, 8, 9, "ng-container", 1); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_2_Template, 14, 15, "ng-container", 1); i0.ɵɵpipe(3, "async"); i0.ɵɵtemplate(4, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_ng_container_4_Template, 4, 3, "ng-container", 1); i0.ɵɵpipe(5, "async"); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(3); i0.ɵɵproperty("ngIf", !i0.ɵɵpureFunction0(9, _c0).includes(i0.ɵɵpipeBind1(1, 3, ctx_r0.loadingErrorCode$))); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(3, 5, ctx_r0.loadingErrorCode$) === 410); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 7, ctx_r0.loadingErrorCode$) === 403); } } function K8SResourceListFooterComponent_ng_container_2_div_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 8); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_1_Template, 1, 1)(2, K8SResourceListFooterComponent_ng_container_2_div_1_Conditional_2_Template, 6, 10); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵconditional(ctx_r0.loadingErrorTemplate ? 1 : 2); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 8); i0.ɵɵelement(1, "aui-icon", 11); i0.ɵɵelementStart(2, "span"); i0.ɵɵtext(3); i0.ɵɵpipe(4, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(3); i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(4, 1, "loading_please_wait")); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template(rf, ctx) { if (rf & 1) { const _r4 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "div", 8)(1, "button", 9); i0.ɵɵlistener("click", function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.list.loadMore()); }); i0.ɵɵtext(2); i0.ɵɵpipe(3, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(3, 1, "load_more"), " "); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 12); i0.ɵɵelement(1, "div", 13); i0.ɵɵelementEnd(); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_1_Template, 5, 3, "div", 7)(2, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_2_Template, 4, 3, "div", 7)(3, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_div_3_Template, 2, 0, "div", 10); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const meta_r5 = ctx.ngIf; i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", meta_r5.loading); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", meta_r5.loadMore); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", !meta_r5.loadMore && !meta_r5.loading); } } function K8SResourceListFooterComponent_ng_container_2_ng_container_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_ng_container_3_ng_container_1_Template, 4, 3, "ng-container", 1); i0.ɵɵpipe(2, "async"); i0.ɵɵpipe(3, "async"); i0.ɵɵpipe(4, "async"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(2); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpureFunction2(7, _c1, i0.ɵɵpipeBind1(2, 1, ctx_r0.list.loading$), i0.ɵɵpipeBind1(4, 5, !ctx_r0.autoLoad && !i0.ɵɵpipeBind1(3, 3, ctx_r0.list.loading$) && ctx_r0.list.hasMore$))); } } function K8SResourceListFooterComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, K8SResourceListFooterComponent_ng_container_2_div_1_Template, 3, 1, "div", 7); i0.ɵɵpipe(2, "async"); i0.ɵɵtemplate(3, K8SResourceListFooterComponent_ng_container_2_ng_container_3_Template, 5, 10, "ng-container", 1); i0.ɵɵpipe(4, "async"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 2, ctx_r0.list.loadingError$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(4, 4, ctx_r0.list.loadingError$)); } } function K8SResourceListFooterComponent_aui_back_top_4_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "aui-back-top", 14); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵproperty("target", ctx_r0.window); } } export class K8sListFooterNoDataDirective { constructor(templateRef) { this.templateRef = templateRef; } static { this.ɵfac = function K8sListFooterNoDataDirective_Factory(t) { return new (t || K8sListFooterNoDataDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: K8sListFooterNoDataDirective, selectors: [["", "aclK8sListFooterNoData", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sListFooterNoDataDirective, [{ type: Directive, args: [{ selector: '[aclK8sListFooterNoData]', }] }], () => [{ type: i0.TemplateRef }], null); })(); export class K8sListFooterLoadingErrorDirective { constructor(templateRef) { this.templateRef = templateRef; } static { this.ɵfac = function K8sListFooterLoadingErrorDirective_Factory(t) { return new (t || K8sListFooterLoadingErrorDirective)(i0.ɵɵdirectiveInject(i0.TemplateRef)); }; } static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: K8sListFooterLoadingErrorDirective, selectors: [["", "aclK8sListFooterLoadingError", ""]] }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sListFooterLoadingErrorDirective, [{ type: Directive, args: [{ selector: '[aclK8sListFooterLoadingError]', }] }], () => [{ type: i0.TemplateRef }], null); })(); export class K8SResourceListFooterComponent extends ScrollBorderObserverDirective { constructor(injector, translate) { super(injector); this.translate = translate; this.autoLoad = true; this.backTop = true; this.bottomDistance = 60; this.window = window; this.image = [ 'images/light/no-data-for-list-or-card.svg', 'images/dark/no-data-for-list-or-card.svg', ]; this.option = this.autoLoad ? '' : false; } ngOnInit() { super.ngOnInit(); this.loadingErrorCode$ = this.list.loadingError$.pipe(map(loadingError => loadingError && 'code' in loadingError && loadingError.code), distinctUntilChanged(), publishRef()); this.isEmptyList$ = combineLatest([ this.list.items$.pipe(map(items => items.length)), this.list.hasMore$, this.list.loading$, this.list.loadingError$, ]).pipe(map(([length, hasMore, loading, loadingError]) => !(length || hasMore || loading || loadingError)), distinctUntilChanged(), publishRef()); this.noDataHint$ = combineLatest([ this.list.rawResponse$, this.resourceName$, this.resourceNameTranslated$, this.translate.locale$, ]).pipe(filter(([res]) => !!res), map(([{ kind }, resourceName, resourceNameTranslated]) => { if (resourceNameTranslated) { return this.translate.get('no_named_data_hint', { name: resourceNameTranslated, }); } if (resourceName || (kind?.endsWith('List') && kind.length > 4)) { return this.translate.get('no_named_data_hint', { name: this.translate.get(resourceName || kind.slice(0, kind.lastIndexOf('List')).toLowerCase()), }); } return this.translate.get('no_data'); })); const viewEl = this.scrollEl === window ? document.documentElement : this.scrollEl; // 当数据不够一屏时自动加载更多 const autoLoadOneScreen$ = this.list.loadState$.pipe(map(state => state.rawResponse), filter(res => !!res), debounceTime(50), takeWhile(res => { return ((!!res.metadata?.continue && viewEl.scrollHeight - viewEl.clientHeight < this.bottomDistance) || (this.firstScrollLoad && (this.list.snapshot.items?.length || 0) < this.firstScrollLoad)); })); this.list.loadState$ .pipe(filter(state => state.action === LoadAction.Reload), startWith(null), switchMap(() => concat(autoLoadOneScreen$, this.scrollBottomBorder)), // list.rawResponse$ 会处理好 loading 等状态时的 loadMore 请求,但有错误时主要主动停止 filter(() => !this.list.snapshot.loadingError), takeUntil(this.destroy$$)) .subscribe(() => { this.list.loadMore(); }); } retry() { this.list.items$.pipe(take(1)).subscribe(items => { if (items.length > 0) { this.list.loadMore(); } else { this.list.reload(); } }); } static { this.ɵfac = function K8SResourceListFooterComponent_Factory(t) { return new (t || K8SResourceListFooterComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1.TranslateService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: K8SResourceListFooterComponent, selectors: [["acl-k8s-resource-list-footer"]], contentQueries: function K8SResourceListFooterComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) { i0.ɵɵcontentQuery(dirIndex, K8sListFooterNoDataDirective, 5, TemplateRef); i0.ɵɵcontentQuery(dirIndex, K8sListFooterLoadingErrorDirective, 5, TemplateRef); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.noDataTemplate = _t.first); i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.loadingErrorTemplate = _t.first); } }, inputs: { list: "list", autoLoad: "autoLoad", backTop: "backTop", bottomDistance: "bottomDistance", resourceNameTranslated: "resourceNameTranslated", firstScrollLoad: "firstScrollLoad", resourceName: "resourceName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 7, consts: [["class", "empty-placeholder", 4, "ngIf"], [4, "ngIf"], [3, "target", 4, "ngIf"], [1, "empty-placeholder"], [4, "ngTemplateOutlet"], [1, "no-data-placeholder"], ["width", "70", 3, "src"], ["class", "table-placeholder", 4, "ngIf"], [1, "table-placeholder"], ["aui-button", "text", "size", "small", 3, "click"], ["class", "table-last-row--empty", 4, "ngIf"], ["icon", "spinner"], [1, "table-last-row--empty"], [1, "table-last-row--empty-inner"], [3, "target"]], template: function K8SResourceListFooterComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵtemplate(0, K8SResourceListFooterComponent_div_0_Template, 3, 2, "div", 0); i0.ɵɵpipe(1, "async"); i0.ɵɵtemplate(2, K8SResourceListFooterComponent_ng_container_2_Template, 5, 6, "ng-container", 1); i0.ɵɵpipe(3, "async"); i0.ɵɵtemplate(4, K8SResourceListFooterComponent_aui_back_top_4_Template, 1, 1, "aui-back-top", 2); } if (rf & 2) { i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 3, ctx.isEmptyList$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", !i0.ɵɵpipeBind1(3, 5, ctx.isEmptyList$)); i0.ɵɵadvance(2); i0.ɵɵproperty("ngIf", ctx.backTop); } }, dependencies: [i2.NgIf, i2.NgTemplateOutlet, i3.ButtonComponent, i3.IconComponent, i3.BackTopComponent, i2.AsyncPipe, i4.TranslatePipe, i3.ThemePickerPipe], styles: ["[_nghost-%COMP%] {position:sticky;left:0;display:flex;justify-content:center;align-items:center;z-index:1;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-help-text))}[_nghost-%COMP%] .empty-placeholder, [_nghost-%COMP%] .table-placeholder{flex:1;flex-direction:column}[_nghost-%COMP%] .table-last-row--empty{height:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-n-9));position:relative;margin-top:-3px;flex:1}[_nghost-%COMP%] .table-last-row--empty-inner{background-color:rgb(var(--aui-color-n-10));height:var(--aui-border-radius-l);border:1px solid rgb(var(--aui-color-n-8));border-top:0;border-bottom-left-radius:var(--aui-border-radius-l);border-bottom-right-radius:var(--aui-border-radius-l)}[_nghost-%COMP%] .table-placeholder{box-sizing:border-box;display:flex;justify-content:center;align-items:center;padding:15px 10px;min-height:60px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-placeholder-text));background-color:rgb(var(--aui-color-n-10));border:solid 1px rgb(var(--aui-color-n-8));border-radius:var(--aui-border-radius-l);position:sticky;left:0}[_nghost-%COMP%] .table-placeholder>aui-icon:first-child{margin-right:var(--aui-spacing-m)}[_nghost-%COMP%] .aui-table .aui-table__row+.table-placeholder{border-top-left-radius:0;border-top-right-radius:0}.no-data-placeholder[_ngcontent-%COMP%]{margin-top:35px;margin-bottom:35px;display:flex;flex-direction:column;align-items:center}"], changeDetection: 0 }); } } __decorate([ ObservableInput(), __metadata("design:type", Observable) ], K8SResourceListFooterComponent.prototype, "resourceNameTranslated$", void 0); __decorate([ ObservableInput(), __metadata("design:type", Observable) ], K8SResourceListFooterComponent.prototype, "resourceName$", void 0); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8SResourceListFooterComponent, [{ type: Component, args: [{ selector: 'acl-k8s-resource-list-footer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n *ngIf=\"isEmptyList$ | async\"\n class=\"empty-placeholder\"\n>\n <ng-container *ngIf=\"noDataTemplate\">\n <ng-template *ngTemplateOutlet=\"noDataTemplate\"></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!noDataTemplate\">\n <div class=\"no-data-placeholder\">\n <img\n width=\"70\"\n [src]=\"image | auiThemePicker\"\n />\n <div>{{ noDataHint$ | async }}</div>\n </div>\n </ng-container>\n</div>\n\n<ng-container *ngIf=\"!(isEmptyList$ | async)\">\n <div\n class=\"table-placeholder\"\n *ngIf=\"list.loadingError$ | async\"\n >\n @if (loadingErrorTemplate) {\n <ng-template *ngTemplateOutlet=\"loadingErrorTemplate\"></ng-template>\n } @else {\n <ng-container *ngIf=\"![410, 403].includes(loadingErrorCode$ | async)\">\n <span\n >{{ 'error_loading_data' | translate }},{{\n 'please' | translate\n }}</span\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"retry()\"\n >\n {{ ('retry' | translate).toLowerCase() }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 410\">\n <span>\n {{ 'list_data_has_expired' | translate }}, {{ 'please' | translate }}\n </span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.reload()\"\n >\n {{ 'refresh' | translate }}\n </button>\n <span>{{ 'or' | translate }}</span>\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'continue_load' | translate }}\n </button>\n </ng-container>\n\n <ng-container *ngIf=\"(loadingErrorCode$ | async) === 403\">\n <span>\n {{ 'no_permission_description' | translate }}\n </span>\n </ng-container>\n }\n </div>\n\n <ng-container *ngIf=\"!(list.loadingError$ | async)\">\n <ng-container\n *ngIf=\"{\n loading: list.loading$ | async,\n loadMore:\n !autoLoad && !(list.loading$ | async) && list.hasMore$ | async,\n } as meta\"\n >\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loading\"\n >\n <aui-icon icon=\"spinner\"></aui-icon>\n <span>{{ 'loading_please_wait' | translate }}</span>\n </div>\n <div\n class=\"table-placeholder\"\n *ngIf=\"meta.loadMore\"\n >\n <button\n aui-button=\"text\"\n size=\"small\"\n (click)=\"list.loadMore()\"\n >\n {{ 'load_more' | translate }}\n </button>\n </div>\n <div\n class=\"table-last-row--empty\"\n *ngIf=\"!meta.loadMore && !meta.loading\"\n >\n <div class=\"table-last-row--empty-inner\"></div>\n </div>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<aui-back-top\n *ngIf=\"backTop\"\n [target]=\"window\"\n></aui-back-top>\n", styles: [":host::ng-deep{position:sticky;left:0;display:flex;justify-content:center;align-items:center;z-index:1;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-help-text))}:host::ng-deep .empty-placeholder,:host::ng-deep .table-placeholder{flex:1;flex-direction:column}:host::ng-deep .table-last-row--empty{height:var(--aui-border-radius-l);background-color:rgb(var(--aui-color-n-9));position:relative;margin-top:-3px;flex:1}:host::ng-deep .table-last-row--empty-inner{background-color:rgb(var(--aui-color-n-10));height:var(--aui-border-radius-l);border:1px solid rgb(var(--aui-color-n-8));border-top:0;border-bottom-left-radius:var(--aui-border-radius-l);border-bottom-right-radius:var(--aui-border-radius-l)}:host::ng-deep .table-placeholder{box-sizing:border-box;display:flex;justify-content:center;align-items:center;padding:15px 10px;min-height:60px;font-size:var(--aui-font-size-m);line-height:var(--aui-line-height-m);font-weight:var(--aui-font-weight-normal);color:rgb(var(--aui-color-placeholder-text));background-color:rgb(var(--aui-color-n-10));border:solid 1px rgb(var(--aui-color-n-8));border-radius:var(--aui-border-radius-l);position:sticky;left:0}:host::ng-deep .table-placeholder>aui-icon:first-child{margin-right:var(--aui-spacing-m)}:host::ng-deep .aui-table .aui-table__row+.table-placeholder{border-top-left-radius:0;border-top-right-radius:0}.no-data-placeholder{margin-top:35px;margin-bottom:35px;display:flex;flex-direction:column;align-items:center}\n"] }] }], () => [{ type: i0.Injector }, { type: i1.TranslateService }], { list: [{ type: Input }], autoLoad: [{ type: Input }], backTop: [{ type: Input }], bottomDistance: [{ type: Input }], resourceNameTranslated: [{ type: Input }], firstScrollLoad: [{ type: Input }], resourceNameTranslated$: [], resourceName: [{ type: Input }], resourceName$: [], noDataTemplate: [{ type: ContentChild, args: [K8sListFooterNoDataDirective, { read: TemplateRef, }] }], loadingErrorTemplate: [{ type: ContentChild, args: [K8sListFooterLoadingErrorDirective, { read: TemplateRef, }] }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(K8SResourceListFooterComponent, { className: "K8SResourceListFooterComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2s4cy1yZXNvdXJjZS1saXN0L2Zvb3Rlci9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvazhzLXJlc291cmNlLWxpc3QvZm9vdGVyL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1QsS0FBSyxFQUdMLFdBQVcsRUFDWCxRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFVBQVUsRUFDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLFlBQVksRUFDWixvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLEdBQUcsRUFDSCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixTQUFTLEVBQ1QsU0FBUyxHQUNWLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUdMLFVBQVUsRUFDViw2QkFBNkIsR0FDOUIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBb0IsTUFBTSxVQUFVLENBQUM7Ozs7Ozs7Ozs7SUNsQ3BELG1IQUFnRDs7O0lBRGxELDZCQUFxQztJQUNuQywrRkFBZ0Q7Ozs7SUFBbEMsY0FBZ0M7SUFBaEMsd0RBQWdDOzs7SUFFaEQsNkJBQXNDO0lBQ3BDLDhCQUFpQztJQUMvQix5QkFHRTs7SUFDRiwyQkFBSztJQUFBLFlBQXlCOztJQUNoQyxBQURnQyxpQkFBTSxFQUNoQzs7OztJQUhGLGVBQThCO0lBQTlCLDBFQUE4QjtJQUUzQixlQUF5QjtJQUF6Qiw4REFBeUI7OztJQWJwQyw4QkFHQztJQUlDLEFBSEEsdUdBQXFDLDBGQUdDO0lBU3hDLGlCQUFNOzs7SUFaVyxjQUFvQjtJQUFwQiw0Q0FBb0I7SUFHcEIsY0FBcUI7SUFBckIsNkNBQXFCOzs7O0lBaUJoQyxpSUFBc0Q7OztJQUF0RCw2R0FBc0Q7OztJQUF4Qyw4REFBc0M7Ozs7SUFFcEQsNkJBQXNFO0lBQ3BFLDRCQUNHO0lBQUEsWUFFQzs7O0lBQUEsaUJBQ0g7SUFDRCxpQ0FJQztJQURDLHVPQUFTLGNBQU8sS0FBQztJQUVqQixZQUNGOztJQUFBLGlCQUFTOzs7SUFWTixlQUVDO0lBRkQsOEdBRUM7SUFPRixlQUNGO0lBREUsNEVBQ0Y7Ozs7SUFHRiw2QkFBMEQ7SUFDeEQsNEJBQU07SUFDSixZQUNGOzs7SUFBQSxpQkFBTztJQUNQLGlDQUlDO0lBREMsdU9BQVMsb0JBQWEsS0FBQztJQUV2QixZQUNGOztJQUFBLGlCQUFTO0lBQ1QsNEJBQU07SUFBQSxZQUFzQjs7SUFBQSxpQkFBTztJQUNuQyxrQ0FJQztJQURDLHdPQUFTLHNCQUFlLEtBQUM7SUFFekIsYUFDRjs7SUFBQSxpQkFBUzs7O0lBaEJQLGVBQ0Y7SUFERSxvSEFDRjtJQU1FLGVBQ0Y7SUFERSxnRUFDRjtJQUNNLGVBQXNCO0lBQXRCLGtEQUFzQjtJQU0xQixlQUNGO0lBREUsd0VBQ0Y7OztJQUdGLDZCQUEwRDtJQUN4RCw0QkFBTTtJQUNKLFlBQ0Y7O0lBQUEsaUJBQU87OztJQURMLGVBQ0Y7SUFERSxrRkFDRjs7O0lBdkNGLG9JQUFzRTs7SUFldEUsc0lBQTBEOztJQXFCMUQsb0lBQTBEOzs7O0lBcEMzQywyR0FBcUQ7SUFlckQsZUFBeUM7SUFBekMsNkVBQXlDO0lBcUJ6QyxlQUF5QztJQUF6Qyw2RUFBeUM7OztJQTNDNUQsOEJBR0M7SUFHRyxBQUZGLGtHQUE0QixzRkFFbkI7SUEyQ1gsaUJBQU07OztJQTdDSixjQTRDQztJQTVDRCxxREE0Q0M7OztJQVdDLDhCQUdDO0lBQ0MsK0JBQW9DO0lBQ3BDLDRCQUFNO0lBQUEsWUFBdUM7O0lBQy9DLEFBRCtDLGlCQUFPLEVBQ2hEOztJQURFLGVBQXVDO0lBQXZDLGlFQUF1Qzs7OztJQU03QyxBQUpGLDhCQUdDLGdCQUtFO0lBREMsd09BQVMsc0JBQWUsS0FBQztJQUV6QixZQUNGOztJQUNGLEFBREUsaUJBQVMsRUFDTDs7SUFGRixlQUNGO0lBREUsa0VBQ0Y7OztJQUVGLCtCQUdDO0lBQ0MsMEJBQStDO0lBQ2pELGlCQUFNOzs7SUEvQlIsNkJBTUM7SUFvQkMsQUFaQSxBQVBBLDRIQUdDLCtHQU9BLGdIQVlBOzs7O0lBcEJFLGNBQWtCO0lBQWxCLHNDQUFrQjtJQU9sQixjQUFtQjtJQUFuQix1Q0FBbUI7SUFZbkIsY0FBcUM7SUFBckMsNERBQXFDOzs7SUE3QjVDLDZCQUFvRDtJQUNsRCwrSEFNQzs7Ozs7OztJQUxFLGNBSUM7SUFKRCw0TUFJQzs7O0lBMURSLDZCQUE4QztJQUM1Qyw4RkFHQzs7SUFnREQsaUhBQW9EOzs7OztJQWpEakQsY0FBZ0M7SUFBaEMsc0VBQWdDO0lBaURwQixlQUFtQztJQUFuQyx1RUFBbUM7OztJQXFDcEQsbUNBR2dCOzs7SUFEZCxzQ0FBaUI7O0FEakVuQixNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW1CLFdBQTZCO1FBQTdCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUFHLENBQUM7NkZBRHpDLDRCQUE0QjtvRUFBNUIsNEJBQTRCOztpRkFBNUIsNEJBQTRCO2NBSHhDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsMEJBQTBCO2FBQ3JDOztBQVFELE1BQU0sT0FBTyxrQ0FBa0M7SUFDN0MsWUFBbUIsV0FBNkI7UUFBN0IsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO0lBQUcsQ0FBQzttR0FEekMsa0NBQWtDO29FQUFsQyxrQ0FBa0M7O2lGQUFsQyxrQ0FBa0M7Y0FIOUMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxnQ0FBZ0M7YUFDM0M7O0FBV0QsTUFBTSxPQUFPLDhCQUNYLFNBQVEsNkJBQTZCO0lBd0NyQyxZQUNFLFFBQWtCLEVBQ0QsU0FBMkI7UUFFNUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRkMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFyQ3JDLGFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBMEI3QixXQUFNLEdBQUcsTUFBTSxDQUFDO1FBRWhCLFVBQUssR0FBRztZQUNOLDJDQUEyQztZQUMzQywwQ0FBMEM7U0FDM0MsQ0FBQztRQU9BLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUVRLFFBQVE7UUFDZixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDbkQsR0FBRyxDQUNELFlBQVksQ0FBQyxFQUFFLENBQ2IsWUFBWSxJQUFJLE1BQU0sSUFBSSxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksQ0FDOUQsRUFDRCxvQkFBb0IsRUFBRSxFQUN0QixVQUFVLEVBQUUsQ0FDYixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUM7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRO1lBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYTtTQUN4QixDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FDRCxDQUFDLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUMzQyxDQUFDLENBQUMsTUFBTSxJQUFJLE9BQU8sSUFBSSxPQUFPLElBQUksWUFBWSxDQUFDLENBQ2xELEVBQ0Qsb0JBQW9CLEVBQUUsRUFDdEIsVUFBVSxFQUFFLENBQ2IsQ0FBQztRQUVGLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUN0QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsdUJBQXVCO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztTQUN2QixDQUFDLENBQUMsSUFBSSxDQUNMLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDeEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO2dCQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFvQixFQUFFO29CQUM5QyxJQUFJLEVBQUUsc0JBQXNCO2lCQUM3QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRTtvQkFDOUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUN0QixZQUFZO3dCQUNWLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDeEQ7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVGLE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTTtZQUN0QixDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWU7WUFDMUIsQ0FBQyxDQUFFLElBQUksQ0FBQyxRQUF3QixDQUFDO1FBRXJDLGlCQUFpQjtRQUNqQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUMvQixNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQ3BCLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFDaEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxDQUNMLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUTtnQkFDdkIsTUFBTSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7Z0JBQ2xFLENBQUMsSUFBSSxDQUFDLGVBQWU7b0JBQ25CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQ2xFLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVO2FBQ2pCLElBQUksQ0FDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFDbkQsU0FBUyxDQUFDLElBQVksQ0FBQyxFQUN2QixTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BFLCtEQUErRDtRQUMvRCxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsRUFDOUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FDMUI7YUFDQSxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMvQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrRkE5SVUsOEJBQThCO29FQUE5Qiw4QkFBOEI7d0NBb0IzQiw0QkFBNEIsS0FDbEMsV0FBVzt3Q0FJTCxrQ0FBa0MsS0FDeEMsV0FBVzs7Ozs7O1lDdkZyQiwrRUFHQzs7WUFlRCxpR0FBOEM7O1lBeUY5QyxpR0FHQzs7WUE3R0UsNkRBQTBCO1lBaUJkLGVBQTZCO1lBQTdCLDhEQUE2QjtZQTBGekMsZUFBYTtZQUFiLGtDQUFhOzs7QURsQ2Q7SUFEQyxlQUFlLEVBQUU7OEJBQ08sVUFBVTsrRUFBUztBQUs1QztJQURDLGVBQWUsRUFBRTs4QkFDSCxVQUFVO3FFQUFTO2lGQWxCdkIsOEJBQThCO2NBTjFDLFNBQVM7MkJBQ0UsOEJBQThCLG1CQUd2Qix1QkFBdUIsQ0FBQyxNQUFNO3dFQU10QyxJQUFJO2tCQUFaLEtBQUs7WUFFRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csT0FBTztrQkFBZixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFHTix1QkFBdUIsTUFFZCxZQUFZO2tCQUFwQixLQUFLO1lBR04sYUFBYSxNQUtiLGNBQWM7a0JBSGIsWUFBWTttQkFBQyw0QkFBNEIsRUFBRTtvQkFDMUMsSUFBSSxFQUFFLFdBQVc7aUJBQ2xCO1lBTUQsb0JBQW9CO2tCQUhuQixZQUFZO21CQUFDLGtDQUFrQyxFQUFFO29CQUNoRCxJQUFJLEVBQUUsV0FBVztpQkFDbEI7O2tGQTNCVSw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBrOHMtcmVzb3VyY2UtbGlzdFxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBJbmplY3Rvcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBPYnNlcnZhYmxlLFxuICBjb21iaW5lTGF0ZXN0LFxuICBjb25jYXQsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBzdGFydFdpdGgsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxuICB0YWtlV2hpbGUsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QsXG4gIHB1Ymxpc2hSZWYsXG4gIFNjcm9sbEJvcmRlck9ic2VydmVyRGlyZWN0aXZlLFxufSBmcm9tICcuLi8uLi9jb3JlL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZUlucHV0IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBMb2FkQWN0aW9uLCBTdHJlYW1MaXN0TG9hZGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSzhzTGlzdEZvb3Rlck5vRGF0YV0nLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNMaXN0Rm9vdGVyTm9EYXRhRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbYWNsSzhzTGlzdEZvb3RlckxvYWRpbmdFcnJvcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNMaXN0Rm9vdGVyTG9hZGluZ0Vycm9yRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtazhzLXJlc291cmNlLWxpc3QtZm9vdGVyJyxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ3N0eWxlcy5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBLOFNSZXNvdXJjZUxpc3RGb290ZXJDb21wb25lbnRcbiAgZXh0ZW5kcyBTY3JvbGxCb3JkZXJPYnNlcnZlckRpcmVjdGl2ZVxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIGxpc3Q6IFN0cmVhbUxpc3RMb2FkZXI8S3ViZXJuZXRlc1Jlc291cmNlTGlzdCwgS3ViZXJuZXRlc1Jlc291cmNlPjtcblxuICBASW5wdXQoKSBhdXRvTG9hZCA9IHRydWU7XG4gIEBJbnB1dCgpIGJhY2tUb3AgPSB0cnVlO1xuICBASW5wdXQoKSBib3R0b21EaXN0YW5jZSA9IDYwO1xuICBASW5wdXQoKSByZXNvdXJjZU5hbWVUcmFuc2xhdGVkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGZpcnN0U2Nyb2xsTG9hZDogbnVtYmVyO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZXNvdXJjZU5hbWVUcmFuc2xhdGVkJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIEBJbnB1dCgpIHJlc291cmNlTmFtZTogc3RyaW5nO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZXNvdXJjZU5hbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgQENvbnRlbnRDaGlsZChLOHNMaXN0Rm9vdGVyTm9EYXRhRGlyZWN0aXZlLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gIH0pXG4gIG5vRGF0YVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50Q2hpbGQoSzhzTGlzdEZvb3RlckxvYWRpbmdFcnJvckRpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICB9KVxuICBsb2FkaW5nRXJyb3JUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBpc0VtcHR5TGlzdCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIG5vRGF0YUhpbnQkOiBPYnNlcnZhYmxlPHN0cmluZz47XG4gIGxvYWRpbmdFcnJvckNvZGUkOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgd2luZG93ID0gd2luZG93O1xuXG4gIGltYWdlID0gW1xuICAgICdpbWFnZXMvbGlnaHQvbm8tZGF0YS1mb3ItbGlzdC1vci1jYXJkLnN2ZycsXG4gICAgJ2ltYWdlcy9kYXJrL25vLWRhdGEtZm9yLWxpc3Qtb3ItY2FyZC5zdmcnLFxuICBdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgKSB7XG4gICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgIHRoaXMub3B0aW9uID0gdGhpcy5hdXRvTG9hZCA/ICcnIDogZmFsc2U7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy5sb2FkaW5nRXJyb3JDb2RlJCA9IHRoaXMubGlzdC5sb2FkaW5nRXJyb3IkLnBpcGUoXG4gICAgICBtYXAoXG4gICAgICAgIGxvYWRpbmdFcnJvciA9PlxuICAgICAgICAgIGxvYWRpbmdFcnJvciAmJiAnY29kZScgaW4gbG9hZGluZ0Vycm9yICYmIGxvYWRpbmdFcnJvci5jb2RlLFxuICAgICAgKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBwdWJsaXNoUmVmKCksXG4gICAgKTtcblxuICAgIHRoaXMuaXNFbXB0eUxpc3QkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmxpc3QuaXRlbXMkLnBpcGUobWFwKGl0ZW1zID0+IGl0ZW1zLmxlbmd0aCkpLFxuICAgICAgdGhpcy5saXN0Lmhhc01vcmUkLFxuICAgICAgdGhpcy5saXN0LmxvYWRpbmckLFxuICAgICAgdGhpcy5saXN0LmxvYWRpbmdFcnJvciQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKFtsZW5ndGgsIGhhc01vcmUsIGxvYWRpbmcsIGxvYWRpbmdFcnJvcl0pID0+XG4gICAgICAgICAgIShsZW5ndGggfHwgaGFzTW9yZSB8fCBsb2FkaW5nIHx8IGxvYWRpbmdFcnJvciksXG4gICAgICApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICApO1xuXG4gICAgdGhpcy5ub0RhdGFIaW50JCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5saXN0LnJhd1Jlc3BvbnNlJCxcbiAgICAgIHRoaXMucmVzb3VyY2VOYW1lJCxcbiAgICAgIHRoaXMucmVzb3VyY2VOYW1lVHJhbnNsYXRlZCQsXG4gICAgICB0aGlzLnRyYW5zbGF0ZS5sb2NhbGUkLFxuICAgIF0pLnBpcGUoXG4gICAgICBmaWx0ZXIoKFtyZXNdKSA9PiAhIXJlcyksXG4gICAgICBtYXAoKFt7IGtpbmQgfSwgcmVzb3VyY2VOYW1lLCByZXNvdXJjZU5hbWVUcmFuc2xhdGVkXSkgPT4ge1xuICAgICAgICBpZiAocmVzb3VyY2VOYW1lVHJhbnNsYXRlZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ25vX25hbWVkX2RhdGFfaGludCcsIHtcbiAgICAgICAgICAgIG5hbWU6IHJlc291cmNlTmFtZVRyYW5zbGF0ZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzb3VyY2VOYW1lIHx8IChraW5kPy5lbmRzV2l0aCgnTGlzdCcpICYmIGtpbmQubGVuZ3RoID4gNCkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdub19uYW1lZF9kYXRhX2hpbnQnLCB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLnRyYW5zbGF0ZS5nZXQoXG4gICAgICAgICAgICAgIHJlc291cmNlTmFtZSB8fFxuICAgICAgICAgICAgICAgIGtpbmQuc2xpY2UoMCwga2luZC5sYXN0SW5kZXhPZignTGlzdCcpKS50b0xvd2VyQ2FzZSgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0KCdub19kYXRhJyk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3Qgdmlld0VsID1cbiAgICAgIHRoaXMuc2Nyb2xsRWwgPT09IHdpbmRvd1xuICAgICAgICA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudFxuICAgICAgICA6ICh0aGlzLnNjcm9sbEVsIGFzIEhUTUxFbGVtZW50KTtcblxuICAgIC8vIOW9k+aVsOaNruS4jeWkn+S4gOWxj+aXtuiHquWKqOWKoOi9veabtOWkmlxuICAgIGNvbnN0IGF1dG9Mb2FkT25lU2NyZWVuJCA9IHRoaXMubGlzdC5sb2FkU3RhdGUkLnBpcGUoXG4gICAgICBtYXAoc3RhdGUgPT4gc3RhdGUucmF3UmVzcG9uc2UpLFxuICAgICAgZmlsdGVyKHJlcyA9PiAhIXJlcyksXG4gICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgdGFrZVdoaWxlKHJlcyA9PiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKCEhcmVzLm1ldGFkYXRhPy5jb250aW51ZSAmJlxuICAgICAgICAgICAgdmlld0VsLnNjcm9sbEhlaWdodCAtIHZpZXdFbC5jbGllbnRIZWlnaHQgPCB0aGlzLmJvdHRvbURpc3RhbmNlKSB8fFxuICAgICAgICAgICh0aGlzLmZpcnN0U2Nyb2xsTG9hZCAmJlxuICAgICAgICAgICAgKHRoaXMubGlzdC5zbmFwc2hvdC5pdGVtcz8ubGVuZ3RoIHx8IDApIDwgdGhpcy5maXJzdFNjcm9sbExvYWQpXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMubGlzdC5sb2FkU3RhdGUkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKHN0YXRlID0+IHN0YXRlLmFjdGlvbiA9PT0gTG9hZEFjdGlvbi5SZWxvYWQpLFxuICAgICAgICBzdGFydFdpdGgobnVsbCBhcyB2b2lkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IGNvbmNhdChhdXRvTG9hZE9uZVNjcmVlbiQsIHRoaXMuc2Nyb2xsQm90dG9tQm9yZGVyKSksXG4gICAgICAgIC8vIGxpc3QucmF3UmVzcG9uc2UkIOS8muWkhOeQhuWlvSBsb2FkaW5nIOetieeKtuaAgeaXtueahCBsb2FkTW9yZSDor7fmsYLvvIzkvYbmnInplJnor6/ml7bkuLvopoHkuLvliqjlgZzmraJcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmxpc3Quc25hcHNob3QubG9hZGluZ0Vycm9yKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3QubG9hZE1vcmUoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0cnkoKSB7XG4gICAgdGhpcy5saXN0Lml0ZW1zJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpdGVtcyA9PiB7XG4gICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmxpc3QubG9hZE1vcmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGlzdC5yZWxvYWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdlxuICAqbmdJZj1cImlzRW1wdHlMaXN0JCB8IGFzeW5jXCJcbiAgY2xhc3M9XCJlbXB0eS1wbGFjZWhvbGRlclwiXG4+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJub0RhdGFUZW1wbGF0ZVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cIm5vRGF0YVRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9EYXRhVGVtcGxhdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibm8tZGF0YS1wbGFjZWhvbGRlclwiPlxuICAgICAgPGltZ1xuICAgICAgICB3aWR0aD1cIjcwXCJcbiAgICAgICAgW3NyY109XCJpbWFnZSB8IGF1aVRoZW1lUGlja2VyXCJcbiAgICAgIC8+XG4gICAgICA8ZGl2Pnt7IG5vRGF0YUhpbnQkIHwgYXN5bmMgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiEoaXNFbXB0eUxpc3QkIHwgYXN5bmMpXCI+XG4gIDxkaXZcbiAgICBjbGFzcz1cInRhYmxlLXBsYWNlaG9sZGVyXCJcbiAgICAqbmdJZj1cImxpc3QubG9hZGluZ0Vycm9yJCB8IGFzeW5jXCJcbiAgPlxuICAgIEBpZiAobG9hZGluZ0Vycm9yVGVtcGxhdGUpIHtcbiAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdFcnJvclRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICB9IEBlbHNlIHtcbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhWzQxMCwgNDAzXS5pbmNsdWRlcyhsb2FkaW5nRXJyb3JDb2RlJCB8IGFzeW5jKVwiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgID57eyAnZXJyb3JfbG9hZGluZ19kYXRhJyB8IHRyYW5zbGF0ZSB9fSx7e1xuICAgICAgICAgICAgJ3BsZWFzZScgfCB0cmFuc2xhdGVcbiAgICAgICAgICB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwicmV0cnkoKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyAoJ3JldHJ5JyB8IHRyYW5zbGF0ZSkudG9Mb3dlckNhc2UoKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKGxvYWRpbmdFcnJvckNvZGUkIHwgYXN5bmMpID09PSA0MTBcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAge3sgJ2xpc3RfZGF0YV9oYXNfZXhwaXJlZCcgfCB0cmFuc2xhdGUgfX0sIHt7ICdwbGVhc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIChjbGljayk9XCJsaXN0LnJlbG9hZCgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdyZWZyZXNoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPHNwYW4+e3sgJ29yJyB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGF1aS1idXR0b249XCJ0ZXh0XCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIChjbGljayk9XCJsaXN0LmxvYWRNb3JlKClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgJ2NvbnRpbnVlX2xvYWQnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIobG9hZGluZ0Vycm9yQ29kZSQgfCBhc3luYykgPT09IDQwM1wiPlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAgICB7eyAnbm9fcGVybWlzc2lvbl9kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgfVxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShsaXN0LmxvYWRpbmdFcnJvciQgfCBhc3luYylcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgbG9hZGluZzogbGlzdC5sb2FkaW5nJCB8IGFzeW5jLFxuICAgICAgICBsb2FkTW9yZTpcbiAgICAgICAgICAhYXV0b0xvYWQgJiYgIShsaXN0LmxvYWRpbmckIHwgYXN5bmMpICYmIGxpc3QuaGFzTW9yZSQgfCBhc3luYyxcbiAgICAgIH0gYXMgbWV0YVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInRhYmxlLXBsYWNlaG9sZGVyXCJcbiAgICAgICAgKm5nSWY9XCJtZXRhLmxvYWRpbmdcIlxuICAgICAgPlxuICAgICAgICA8YXVpLWljb24gaWNvbj1cInNwaW5uZXJcIj48L2F1aS1pY29uPlxuICAgICAgICA8c3Bhbj57eyAnbG9hZGluZ19wbGVhc2Vfd2FpdCcgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1wbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ0lmPVwibWV0YS5sb2FkTW9yZVwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBhdWktYnV0dG9uPVwidGV4dFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAoY2xpY2spPVwibGlzdC5sb2FkTW9yZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7ICdsb2FkX21vcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGFibGUtbGFzdC1yb3ctLWVtcHR5XCJcbiAgICAgICAgKm5nSWY9XCIhbWV0YS5sb2FkTW9yZSAmJiAhbWV0YS5sb2FkaW5nXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWxhc3Qtcm93LS1lbXB0eS1pbm5lclwiPjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxhdWktYmFjay10b3BcbiAgKm5nSWY9XCJiYWNrVG9wXCJcbiAgW3RhcmdldF09XCJ3aW5kb3dcIlxuPjwvYXVpLWJhY2stdG9wPlxuIl19