UNPKG

ng-zorro-antd

Version:

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

159 lines 17.5 kB
/** * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE */ import { NgIf, NgTemplateOutlet } from '@angular/common'; import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { NzHighlightModule } from 'ng-zorro-antd/core/highlight'; import { NzIconModule } from 'ng-zorro-antd/icon'; import { NzTreeDropIndicatorComponent } from './tree-drop-indicator.component'; import * as i0 from "@angular/core"; import * as i1 from "ng-zorro-antd/icon"; import * as i2 from "ng-zorro-antd/core/highlight"; export class NzTreeNodeTitleComponent { get canDraggable() { return this.draggable && !this.isDisabled ? true : null; } get matchedValue() { return this.isMatched ? this.searchValue : ''; } get isSwitcherOpen() { return this.isExpanded && !this.isLeaf; } get isSwitcherClose() { return !this.isExpanded && !this.isLeaf; } constructor(cdr) { this.cdr = cdr; this.treeTemplate = null; this.selectMode = false; // Drag indicator this.showIndicator = true; } ngOnChanges(changes) { const { showIndicator, dragPosition } = changes; if (showIndicator || dragPosition) { this.cdr.markForCheck(); } } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: NzTreeNodeTitleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.7", type: NzTreeNodeTitleComponent, isStandalone: true, selector: "nz-tree-node-title", inputs: { searchValue: "searchValue", treeTemplate: "treeTemplate", draggable: "draggable", showIcon: "showIcon", selectMode: "selectMode", context: "context", icon: "icon", title: "title", isLoading: "isLoading", isSelected: "isSelected", isDisabled: "isDisabled", isMatched: "isMatched", isExpanded: "isExpanded", isLeaf: "isLeaf", showIndicator: "showIndicator", dragPosition: "dragPosition" }, host: { properties: { "attr.title": "title", "attr.draggable": "canDraggable", "attr.aria-grabbed": "canDraggable", "class.draggable": "canDraggable", "class.ant-select-tree-node-content-wrapper": "selectMode", "class.ant-select-tree-node-content-wrapper-open": "selectMode && isSwitcherOpen", "class.ant-select-tree-node-content-wrapper-close": "selectMode && isSwitcherClose", "class.ant-select-tree-node-selected": "selectMode && isSelected", "class.ant-tree-node-content-wrapper": "!selectMode", "class.ant-tree-node-content-wrapper-open": "!selectMode && isSwitcherOpen", "class.ant-tree-node-content-wrapper-close": "!selectMode && isSwitcherClose", "class.ant-tree-node-selected": "!selectMode && isSelected" } }, usesOnChanges: true, ngImport: i0, template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <span nz-icon *ngIf="icon" [nzType]="icon"></span> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue : 'i' : 'font-highlight'"></span> </ng-container> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i1.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzHighlightModule }, { kind: "pipe", type: i2.NzHighlightPipe, name: "nzHighlight" }, { kind: "component", type: NzTreeDropIndicatorComponent, selector: "nz-tree-drop-indicator", inputs: ["dropPosition", "level", "direction"], exportAs: ["NzTreeDropIndicator"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: NzTreeNodeTitleComponent, decorators: [{ type: Component, args: [{ selector: 'nz-tree-node-title', template: ` <ng-template [ngTemplateOutlet]="treeTemplate" [ngTemplateOutletContext]="{ $implicit: context, origin: context.origin }" ></ng-template> <ng-container *ngIf="!treeTemplate"> <span *ngIf="icon && showIcon" [class.ant-tree-icon__open]="isSwitcherOpen" [class.ant-tree-icon__close]="isSwitcherClose" [class.ant-tree-icon_loading]="isLoading" [class.ant-select-tree-iconEle]="selectMode" [class.ant-tree-iconEle]="!selectMode" > <span [class.ant-select-tree-iconEle]="selectMode" [class.ant-select-tree-icon__customize]="selectMode" [class.ant-tree-iconEle]="!selectMode" [class.ant-tree-icon__customize]="!selectMode" > <span nz-icon *ngIf="icon" [nzType]="icon"></span> </span> </span> <span class="ant-tree-title" [innerHTML]="title | nzHighlight: matchedValue : 'i' : 'font-highlight'"></span> </ng-container> <nz-tree-drop-indicator *ngIf="showIndicator" [dropPosition]="dragPosition" [level]="context.level" ></nz-tree-drop-indicator> `, changeDetection: ChangeDetectionStrategy.OnPush, preserveWhitespaces: false, host: { '[attr.title]': 'title', '[attr.draggable]': 'canDraggable', '[attr.aria-grabbed]': 'canDraggable', '[class.draggable]': 'canDraggable', '[class.ant-select-tree-node-content-wrapper]': `selectMode`, '[class.ant-select-tree-node-content-wrapper-open]': `selectMode && isSwitcherOpen`, '[class.ant-select-tree-node-content-wrapper-close]': `selectMode && isSwitcherClose`, '[class.ant-select-tree-node-selected]': `selectMode && isSelected`, '[class.ant-tree-node-content-wrapper]': `!selectMode`, '[class.ant-tree-node-content-wrapper-open]': `!selectMode && isSwitcherOpen`, '[class.ant-tree-node-content-wrapper-close]': `!selectMode && isSwitcherClose`, '[class.ant-tree-node-selected]': `!selectMode && isSelected` }, imports: [NgTemplateOutlet, NgIf, NzIconModule, NzHighlightModule, NzTreeDropIndicatorComponent], standalone: true }] }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { searchValue: [{ type: Input }], treeTemplate: [{ type: Input }], draggable: [{ type: Input }], showIcon: [{ type: Input }], selectMode: [{ type: Input }], context: [{ type: Input }], icon: [{ type: Input }], title: [{ type: Input }], isLoading: [{ type: Input }], isSelected: [{ type: Input }], isDisabled: [{ type: Input }], isMatched: [{ type: Input }], isExpanded: [{ type: Input }], isLeaf: [{ type: Input }], showIndicator: [{ type: Input }], dragPosition: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLXRpdGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvbXBvbmVudHMvdHJlZS90cmVlLW5vZGUtdGl0bGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxLQUFLLEVBSU4sTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7O0FBc0QvRSxNQUFNLE9BQU8sd0JBQXdCO0lBbUJuQyxJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFvQixHQUFzQjtRQUF0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWpDakMsaUJBQVksR0FBNkUsSUFBSSxDQUFDO1FBRzlGLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFVNUIsaUJBQWlCO1FBQ1Isa0JBQWEsR0FBRyxJQUFJLENBQUM7SUFtQmUsQ0FBQztJQUU5QyxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDaEQsSUFBSSxhQUFhLElBQUksWUFBWSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDOzhHQTFDVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qixrc0NBbER6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJULDREQWlCUyxnQkFBZ0Isb0pBQUUsSUFBSSw0RkFBRSxZQUFZLGlOQUFFLGlCQUFpQixnR0FBRSw0QkFBNEI7OzJGQUdwRix3QkFBd0I7a0JBcERwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixJQUFJLEVBQUU7d0JBQ0osY0FBYyxFQUFFLE9BQU87d0JBQ3ZCLGtCQUFrQixFQUFFLGNBQWM7d0JBQ2xDLHFCQUFxQixFQUFFLGNBQWM7d0JBQ3JDLG1CQUFtQixFQUFFLGNBQWM7d0JBQ25DLDhDQUE4QyxFQUFFLFlBQVk7d0JBQzVELG1EQUFtRCxFQUFFLDhCQUE4Qjt3QkFDbkYsb0RBQW9ELEVBQUUsK0JBQStCO3dCQUNyRix1Q0FBdUMsRUFBRSwwQkFBMEI7d0JBQ25FLHVDQUF1QyxFQUFFLGFBQWE7d0JBQ3RELDRDQUE0QyxFQUFFLCtCQUErQjt3QkFDN0UsNkNBQTZDLEVBQUUsZ0NBQWdDO3dCQUMvRSxnQ0FBZ0MsRUFBRSwyQkFBMkI7cUJBQzlEO29CQUNELE9BQU8sRUFBRSxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsNEJBQTRCLENBQUM7b0JBQ2hHLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtzRkFFVSxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuXG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTnpIaWdobGlnaHRNb2R1bGUgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvaGlnaGxpZ2h0JztcbmltcG9ydCB7IE56VHJlZU5vZGUsIE56VHJlZU5vZGVPcHRpb25zIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3RyZWUnO1xuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcblxuaW1wb3J0IHsgTnpUcmVlRHJvcEluZGljYXRvckNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1kcm9wLWluZGljYXRvci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduei10cmVlLW5vZGUtdGl0bGUnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJlZVRlbXBsYXRlXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udGV4dCwgb3JpZ2luOiBjb250ZXh0Lm9yaWdpbiB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXRyZWVUZW1wbGF0ZVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJpY29uICYmIHNob3dJY29uXCJcbiAgICAgICAgW2NsYXNzLmFudC10cmVlLWljb25fX29wZW5dPVwiaXNTd2l0Y2hlck9wZW5cIlxuICAgICAgICBbY2xhc3MuYW50LXRyZWUtaWNvbl9fY2xvc2VdPVwiaXNTd2l0Y2hlckNsb3NlXCJcbiAgICAgICAgW2NsYXNzLmFudC10cmVlLWljb25fbG9hZGluZ109XCJpc0xvYWRpbmdcIlxuICAgICAgICBbY2xhc3MuYW50LXNlbGVjdC10cmVlLWljb25FbGVdPVwic2VsZWN0TW9kZVwiXG4gICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uRWxlXT1cIiFzZWxlY3RNb2RlXCJcbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBbY2xhc3MuYW50LXNlbGVjdC10cmVlLWljb25FbGVdPVwic2VsZWN0TW9kZVwiXG4gICAgICAgICAgW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1pY29uX19jdXN0b21pemVdPVwic2VsZWN0TW9kZVwiXG4gICAgICAgICAgW2NsYXNzLmFudC10cmVlLWljb25FbGVdPVwiIXNlbGVjdE1vZGVcIlxuICAgICAgICAgIFtjbGFzcy5hbnQtdHJlZS1pY29uX19jdXN0b21pemVdPVwiIXNlbGVjdE1vZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gbnotaWNvbiAqbmdJZj1cImljb25cIiBbbnpUeXBlXT1cImljb25cIj48L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYW50LXRyZWUtdGl0bGVcIiBbaW5uZXJIVE1MXT1cInRpdGxlIHwgbnpIaWdobGlnaHQ6IG1hdGNoZWRWYWx1ZSA6ICdpJyA6ICdmb250LWhpZ2hsaWdodCdcIj48L3NwYW4+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG56LXRyZWUtZHJvcC1pbmRpY2F0b3JcbiAgICAgICpuZ0lmPVwic2hvd0luZGljYXRvclwiXG4gICAgICBbZHJvcFBvc2l0aW9uXT1cImRyYWdQb3NpdGlvblwiXG4gICAgICBbbGV2ZWxdPVwiY29udGV4dC5sZXZlbFwiXG4gICAgPjwvbnotdHJlZS1kcm9wLWluZGljYXRvcj5cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLnRpdGxlXSc6ICd0aXRsZScsXG4gICAgJ1thdHRyLmRyYWdnYWJsZV0nOiAnY2FuRHJhZ2dhYmxlJyxcbiAgICAnW2F0dHIuYXJpYS1ncmFiYmVkXSc6ICdjYW5EcmFnZ2FibGUnLFxuICAgICdbY2xhc3MuZHJhZ2dhYmxlXSc6ICdjYW5EcmFnZ2FibGUnLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLW5vZGUtY29udGVudC13cmFwcGVyXSc6IGBzZWxlY3RNb2RlYCxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlci1vcGVuXSc6IGBzZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJPcGVuYCxcbiAgICAnW2NsYXNzLmFudC1zZWxlY3QtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlci1jbG9zZV0nOiBgc2VsZWN0TW9kZSAmJiBpc1N3aXRjaGVyQ2xvc2VgLFxuICAgICdbY2xhc3MuYW50LXNlbGVjdC10cmVlLW5vZGUtc2VsZWN0ZWRdJzogYHNlbGVjdE1vZGUgJiYgaXNTZWxlY3RlZGAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS1ub2RlLWNvbnRlbnQtd3JhcHBlcl0nOiBgIXNlbGVjdE1vZGVgLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItb3Blbl0nOiBgIXNlbGVjdE1vZGUgJiYgaXNTd2l0Y2hlck9wZW5gLFxuICAgICdbY2xhc3MuYW50LXRyZWUtbm9kZS1jb250ZW50LXdyYXBwZXItY2xvc2VdJzogYCFzZWxlY3RNb2RlICYmIGlzU3dpdGNoZXJDbG9zZWAsXG4gICAgJ1tjbGFzcy5hbnQtdHJlZS1ub2RlLXNlbGVjdGVkXSc6IGAhc2VsZWN0TW9kZSAmJiBpc1NlbGVjdGVkYFxuICB9LFxuICBpbXBvcnRzOiBbTmdUZW1wbGF0ZU91dGxldCwgTmdJZiwgTnpJY29uTW9kdWxlLCBOekhpZ2hsaWdodE1vZHVsZSwgTnpUcmVlRHJvcEluZGljYXRvckNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTnpUcmVlTm9kZVRpdGxlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2VhcmNoVmFsdWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRyZWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IE56VHJlZU5vZGU7IG9yaWdpbjogTnpUcmVlTm9kZU9wdGlvbnMgfT4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgZHJhZ2dhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd0ljb24hOiBib29sZWFuO1xuICBASW5wdXQoKSBzZWxlY3RNb2RlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGNvbnRleHQhOiBOelRyZWVOb2RlO1xuICBASW5wdXQoKSBpY29uITogc3RyaW5nO1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNMb2FkaW5nITogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNTZWxlY3RlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGlzRGlzYWJsZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc01hdGNoZWQhOiBib29sZWFuO1xuICBASW5wdXQoKSBpc0V4cGFuZGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNMZWFmITogYm9vbGVhbjtcbiAgLy8gRHJhZyBpbmRpY2F0b3JcbiAgQElucHV0KCkgc2hvd0luZGljYXRvciA9IHRydWU7XG4gIEBJbnB1dCgpIGRyYWdQb3NpdGlvbj86IG51bWJlcjtcblxuICBnZXQgY2FuRHJhZ2dhYmxlKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2FibGUgJiYgIXRoaXMuaXNEaXNhYmxlZCA/IHRydWUgOiBudWxsO1xuICB9XG5cbiAgZ2V0IG1hdGNoZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlzTWF0Y2hlZCA/IHRoaXMuc2VhcmNoVmFsdWUgOiAnJztcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0V4cGFuZGVkICYmICF0aGlzLmlzTGVhZjtcbiAgfVxuXG4gIGdldCBpc1N3aXRjaGVyQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzRXhwYW5kZWQgJiYgIXRoaXMuaXNMZWFmO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHNob3dJbmRpY2F0b3IsIGRyYWdQb3NpdGlvbiB9ID0gY2hhbmdlcztcbiAgICBpZiAoc2hvd0luZGljYXRvciB8fCBkcmFnUG9zaXRpb24pIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxufVxuIl19