UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

208 lines (204 loc) 21.2 kB
import { __decorate } from "tslib"; import { NgStyle, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, ContentChild, ContentChildren, Input, ViewEncapsulation, booleanAttribute } from '@angular/core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { WithConfig } from 'ng-zorro-antd/core/config'; import { NzOutletModule } from 'ng-zorro-antd/core/outlet'; import { NzSkeletonModule } from 'ng-zorro-antd/skeleton'; import { NzCardGridDirective } from './card-grid.directive'; import { NzCardTabComponent } from './card-tab.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/core/config"; import * as i2 from "@angular/cdk/bidi"; import * as i3 from "ng-zorro-antd/core/outlet"; import * as i4 from "ng-zorro-antd/skeleton"; const NZ_CONFIG_MODULE_NAME = 'card'; export class NzCardComponent { constructor(nzConfigService, cdr, directionality) { this.nzConfigService = nzConfigService; this.cdr = cdr; this.directionality = directionality; this._nzModuleName = NZ_CONFIG_MODULE_NAME; this.nzBordered = true; this.nzBorderless = false; this.nzLoading = false; this.nzHoverable = false; this.nzBodyStyle = null; this.nzActions = []; this.nzType = null; this.nzSize = 'default'; this.dir = 'ltr'; this.destroy$ = new Subject(); this.nzConfigService .getConfigChangeEventForComponent(NZ_CONFIG_MODULE_NAME) .pipe(takeUntil(this.destroy$)) .subscribe(() => { this.cdr.markForCheck(); }); } ngOnInit() { this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction) => { this.dir = direction; this.cdr.detectChanges(); }); this.dir = this.directionality.value; } ngOnDestroy() { this.destroy$.next(true); this.destroy$.complete(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzCardComponent, deps: [{ token: i1.NzConfigService }, { token: i0.ChangeDetectorRef }, { token: i2.Directionality }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: NzCardComponent, isStandalone: true, selector: "nz-card", inputs: { nzBordered: ["nzBordered", "nzBordered", booleanAttribute], nzBorderless: ["nzBorderless", "nzBorderless", booleanAttribute], nzLoading: ["nzLoading", "nzLoading", booleanAttribute], nzHoverable: ["nzHoverable", "nzHoverable", booleanAttribute], nzBodyStyle: "nzBodyStyle", nzCover: "nzCover", nzActions: "nzActions", nzType: "nzType", nzSize: "nzSize", nzTitle: "nzTitle", nzExtra: "nzExtra" }, host: { properties: { "class.ant-card-loading": "nzLoading", "class.ant-card-bordered": "nzBorderless === false && nzBordered", "class.ant-card-hoverable": "nzHoverable", "class.ant-card-small": "nzSize === \"small\"", "class.ant-card-contain-grid": "listOfNzCardGridDirective && listOfNzCardGridDirective.length", "class.ant-card-type-inner": "nzType === \"inner\"", "class.ant-card-contain-tabs": "!!listOfNzCardTabComponent", "class.ant-card-rtl": "dir === 'rtl'" }, classAttribute: "ant-card" }, queries: [{ propertyName: "listOfNzCardTabComponent", first: true, predicate: NzCardTabComponent, descendants: true }, { propertyName: "listOfNzCardGridDirective", predicate: NzCardGridDirective }], exportAs: ["nzCard"], ngImport: i0, template: ` @if (nzTitle || nzExtra || listOfNzCardTabComponent) { <div class="ant-card-head"> <div class="ant-card-head-wrapper"> @if (nzTitle) { <div class="ant-card-head-title"> <ng-container *nzStringTemplateOutlet="nzTitle">{{ nzTitle }}</ng-container> </div> } @if (nzExtra) { <div class="ant-card-extra"> <ng-container *nzStringTemplateOutlet="nzExtra">{{ nzExtra }}</ng-container> </div> } </div> @if (listOfNzCardTabComponent) { <ng-template [ngTemplateOutlet]="listOfNzCardTabComponent.template" /> } </div> } @if (nzCover) { <div class="ant-card-cover"> <ng-template [ngTemplateOutlet]="nzCover" /> </div> } <div class="ant-card-body" [ngStyle]="nzBodyStyle"> @if (nzLoading) { <nz-skeleton [nzActive]="true" [nzTitle]="false" [nzParagraph]="{ rows: 4 }"></nz-skeleton> } @else { <ng-content /> } </div> @if (nzActions.length) { <ul class="ant-card-actions"> @for (action of nzActions; track $index) { <li [style.width.%]="100 / nzActions.length"> <span><ng-template [ngTemplateOutlet]="action" /></span> </li> } </ul> } `, isInline: true, dependencies: [{ kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: i3.NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: NzSkeletonModule }, { kind: "component", type: i4.NzSkeletonComponent, selector: "nz-skeleton", inputs: ["nzActive", "nzLoading", "nzRound", "nzTitle", "nzAvatar", "nzParagraph"], exportAs: ["nzSkeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); } } __decorate([ WithConfig() ], NzCardComponent.prototype, "nzBordered", void 0); __decorate([ WithConfig() ], NzCardComponent.prototype, "nzBorderless", void 0); __decorate([ WithConfig() ], NzCardComponent.prototype, "nzHoverable", void 0); __decorate([ WithConfig() ], NzCardComponent.prototype, "nzSize", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NzCardComponent, decorators: [{ type: Component, args: [{ selector: 'nz-card', exportAs: 'nzCard', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: ` @if (nzTitle || nzExtra || listOfNzCardTabComponent) { <div class="ant-card-head"> <div class="ant-card-head-wrapper"> @if (nzTitle) { <div class="ant-card-head-title"> <ng-container *nzStringTemplateOutlet="nzTitle">{{ nzTitle }}</ng-container> </div> } @if (nzExtra) { <div class="ant-card-extra"> <ng-container *nzStringTemplateOutlet="nzExtra">{{ nzExtra }}</ng-container> </div> } </div> @if (listOfNzCardTabComponent) { <ng-template [ngTemplateOutlet]="listOfNzCardTabComponent.template" /> } </div> } @if (nzCover) { <div class="ant-card-cover"> <ng-template [ngTemplateOutlet]="nzCover" /> </div> } <div class="ant-card-body" [ngStyle]="nzBodyStyle"> @if (nzLoading) { <nz-skeleton [nzActive]="true" [nzTitle]="false" [nzParagraph]="{ rows: 4 }"></nz-skeleton> } @else { <ng-content /> } </div> @if (nzActions.length) { <ul class="ant-card-actions"> @for (action of nzActions; track $index) { <li [style.width.%]="100 / nzActions.length"> <span><ng-template [ngTemplateOutlet]="action" /></span> </li> } </ul> } `, host: { class: 'ant-card', '[class.ant-card-loading]': 'nzLoading', '[class.ant-card-bordered]': 'nzBorderless === false && nzBordered', '[class.ant-card-hoverable]': 'nzHoverable', '[class.ant-card-small]': 'nzSize === "small"', '[class.ant-card-contain-grid]': 'listOfNzCardGridDirective && listOfNzCardGridDirective.length', '[class.ant-card-type-inner]': 'nzType === "inner"', '[class.ant-card-contain-tabs]': '!!listOfNzCardTabComponent', '[class.ant-card-rtl]': `dir === 'rtl'` }, imports: [NzOutletModule, NgTemplateOutlet, NgStyle, NzSkeletonModule], standalone: true }] }], ctorParameters: () => [{ type: i1.NzConfigService }, { type: i0.ChangeDetectorRef }, { type: i2.Directionality }], propDecorators: { nzBordered: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzBorderless: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzLoading: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzHoverable: [{ type: Input, args: [{ transform: booleanAttribute }] }], nzBodyStyle: [{ type: Input }], nzCover: [{ type: Input }], nzActions: [{ type: Input }], nzType: [{ type: Input }], nzSize: [{ type: Input }], nzTitle: [{ type: Input }], nzExtra: [{ type: Input }], listOfNzCardTabComponent: [{ type: ContentChild, args: [NzCardTabComponent, { static: false }] }], listOfNzCardGridDirective: [{ type: ContentChildren, args: [NzCardGridDirective] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL2NhcmQvY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQU1BLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLEtBQUssRUFLTCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBZ0MsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTFELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7QUFFMUQsTUFBTSxxQkFBcUIsR0FBZ0IsTUFBTSxDQUFDO0FBa0VsRCxNQUFNLE9BQU8sZUFBZTtJQW9CMUIsWUFDUyxlQUFnQyxFQUMvQixHQUFzQixFQUN0QixjQUE4QjtRQUYvQixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDL0IsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBdEIvQixrQkFBYSxHQUFnQixxQkFBcUIsQ0FBQztRQUVOLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFDNUMsY0FBUyxHQUFHLEtBQUssQ0FB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LEVBQUU7Z0JBQ0UsU0FBUztzQkFBaEQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDZ0IsV0FBVztzQkFBaEUsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDN0IsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ2lCLE1BQU07c0JBQTVCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDK0Msd0JBQXdCO3NCQUE1RSxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDYix5QkFBeUI7c0JBQTlELGVBQWU7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2dpdGh1Yi5jb20vTkctWk9SUk8vbmctem9ycm8tYW50ZC9ibG9iL21hc3Rlci9MSUNFTlNFXG4gKi9cblxuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFF1ZXJ5TGlzdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBOekNvbmZpZ0tleSwgTnpDb25maWdTZXJ2aWNlLCBXaXRoQ29uZmlnIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2NvbmZpZyc7XG5pbXBvcnQgeyBOek91dGxldE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS9vdXRsZXQnO1xuaW1wb3J0IHsgTmdTdHlsZUludGVyZmFjZSwgTnpTaXplRFNUeXBlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56U2tlbGV0b25Nb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL3NrZWxldG9uJztcblxuaW1wb3J0IHsgTnpDYXJkR3JpZERpcmVjdGl2ZSB9IGZyb20gJy4vY2FyZC1ncmlkLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBOekNhcmRUYWJDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtdGFiLmNvbXBvbmVudCc7XG5cbmNvbnN0IE5aX0NPTkZJR19NT0RVTEVfTkFNRTogTnpDb25maWdLZXkgPSAnY2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ256LWNhcmQnLFxuICBleHBvcnRBczogJ256Q2FyZCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgdGVtcGxhdGU6IGBcbiAgICBAaWYgKG56VGl0bGUgfHwgbnpFeHRyYSB8fCBsaXN0T2ZOekNhcmRUYWJDb21wb25lbnQpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJhbnQtY2FyZC1oZWFkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtY2FyZC1oZWFkLXdyYXBwZXJcIj5cbiAgICAgICAgICBAaWYgKG56VGl0bGUpIHtcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbnQtY2FyZC1oZWFkLXRpdGxlXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuelRpdGxlXCI+e3sgbnpUaXRsZSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAobnpFeHRyYSkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFudC1jYXJkLWV4dHJhXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm56U3RyaW5nVGVtcGxhdGVPdXRsZXQ9XCJuekV4dHJhXCI+e3sgbnpFeHRyYSB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChsaXN0T2ZOekNhcmRUYWJDb21wb25lbnQpIHtcbiAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibGlzdE9mTnpDYXJkVGFiQ29tcG9uZW50LnRlbXBsYXRlXCIgLz5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChuekNvdmVyKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYW50LWNhcmQtY292ZXJcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm56Q292ZXJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cImFudC1jYXJkLWJvZHlcIiBbbmdTdHlsZV09XCJuekJvZHlTdHlsZVwiPlxuICAgICAgQGlmIChuekxvYWRpbmcpIHtcbiAgICAgICAgPG56LXNrZWxldG9uIFtuekFjdGl2ZV09XCJ0cnVlXCIgW256VGl0bGVdPVwiZmFsc2VcIiBbbnpQYXJhZ3JhcGhdPVwieyByb3dzOiA0IH1cIj48L256LXNrZWxldG9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxuZy1jb250ZW50IC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gICAgQGlmIChuekFjdGlvbnMubGVuZ3RoKSB7XG4gICAgICA8dWwgY2xhc3M9XCJhbnQtY2FyZC1hY3Rpb25zXCI+XG4gICAgICAgIEBmb3IgKGFjdGlvbiBvZiBuekFjdGlvbnM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgIDxsaSBbc3R5bGUud2lkdGguJV09XCIxMDAgLyBuekFjdGlvbnMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8c3Bhbj48bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWN0aW9uXCIgLz48L3NwYW4+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgfVxuICAgICAgPC91bD5cbiAgICB9XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ2FudC1jYXJkJyxcbiAgICAnW2NsYXNzLmFudC1jYXJkLWxvYWRpbmddJzogJ256TG9hZGluZycsXG4gICAgJ1tjbGFzcy5hbnQtY2FyZC1ib3JkZXJlZF0nOiAnbnpCb3JkZXJsZXNzID09PSBmYWxzZSAmJiBuekJvcmRlcmVkJyxcbiAgICAnW2NsYXNzLmFudC1jYXJkLWhvdmVyYWJsZV0nOiAnbnpIb3ZlcmFibGUnLFxuICAgICdbY2xhc3MuYW50LWNhcmQtc21hbGxdJzogJ256U2l6ZSA9PT0gXCJzbWFsbFwiJyxcbiAgICAnW2NsYXNzLmFudC1jYXJkLWNvbnRhaW4tZ3JpZF0nOiAnbGlzdE9mTnpDYXJkR3JpZERpcmVjdGl2ZSAmJiBsaXN0T2ZOekNhcmRHcmlkRGlyZWN0aXZlLmxlbmd0aCcsXG4gICAgJ1tjbGFzcy5hbnQtY2FyZC10eXBlLWlubmVyXSc6ICduelR5cGUgPT09IFwiaW5uZXJcIicsXG4gICAgJ1tjbGFzcy5hbnQtY2FyZC1jb250YWluLXRhYnNdJzogJyEhbGlzdE9mTnpDYXJkVGFiQ29tcG9uZW50JyxcbiAgICAnW2NsYXNzLmFudC1jYXJkLXJ0bF0nOiBgZGlyID09PSAncnRsJ2BcbiAgfSxcbiAgaW1wb3J0czogW056T3V0bGV0TW9kdWxlLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ1N0eWxlLCBOelNrZWxldG9uTW9kdWxlXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBOekNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCB7XG4gIHJlYWRvbmx5IF9uek1vZHVsZU5hbWU6IE56Q29uZmlnS2V5ID0gTlpfQ09ORklHX01PRFVMRV9OQU1FO1xuXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBAV2l0aENvbmZpZygpIG56Qm9yZGVyZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgQFdpdGhDb25maWcoKSBuekJvcmRlcmxlc3M6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIG56TG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgQFdpdGhDb25maWcoKSBuekhvdmVyYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBuekJvZHlTdHlsZTogTmdTdHlsZUludGVyZmFjZSB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBuekNvdmVyPzogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56QWN0aW9uczogQXJyYXk8VGVtcGxhdGVSZWY8dm9pZD4+ID0gW107XG4gIEBJbnB1dCgpIG56VHlwZTogc3RyaW5nIHwgJ2lubmVyJyB8IG51bGwgPSBudWxsO1xuICBASW5wdXQoKSBAV2l0aENvbmZpZygpIG56U2l6ZTogTnpTaXplRFNUeXBlID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBuelRpdGxlPzogc3RyaW5nIHwgVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIG56RXh0cmE/OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQENvbnRlbnRDaGlsZChOekNhcmRUYWJDb21wb25lbnQsIHsgc3RhdGljOiBmYWxzZSB9KSBsaXN0T2ZOekNhcmRUYWJDb21wb25lbnQ/OiBOekNhcmRUYWJDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oTnpDYXJkR3JpZERpcmVjdGl2ZSkgbGlzdE9mTnpDYXJkR3JpZERpcmVjdGl2ZSE6IFF1ZXJ5TGlzdDxOekNhcmRHcmlkRGlyZWN0aXZlPjtcbiAgZGlyOiBEaXJlY3Rpb24gPSAnbHRyJztcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbnpDb25maWdTZXJ2aWNlOiBOekNvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZGlyZWN0aW9uYWxpdHk6IERpcmVjdGlvbmFsaXR5XG4gICkge1xuICAgIHRoaXMubnpDb25maWdTZXJ2aWNlXG4gICAgICAuZ2V0Q29uZmlnQ2hhbmdlRXZlbnRGb3JDb21wb25lbnQoTlpfQ09ORklHX01PRFVMRV9OQU1FKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpcmVjdGlvbmFsaXR5LmNoYW5nZT8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZGlyZWN0aW9uOiBEaXJlY3Rpb24pID0+IHtcbiAgICAgIHRoaXMuZGlyID0gZGlyZWN0aW9uO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kaXIgPSB0aGlzLmRpcmVjdGlvbmFsaXR5LnZhbHVlO1xuICB9XG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==