UNPKG

ng-zorro-antd

Version:

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

366 lines 31 kB
/** * @fileoverview added by tsickle * Generated from: src/cell/th-addon.component.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { __decorate, __metadata } from "tslib"; /** * @license * Copyright Alibaba.com All Rights Reserved. * * 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 */ /* tslint:disable:component-selector */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewEncapsulation } from '@angular/core'; import { warnDeprecation } from 'ng-zorro-antd/core/logger'; import { InputBoolean } from 'ng-zorro-antd/core/util'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; var NzThAddOnComponent = /** @class */ (function () { function NzThAddOnComponent(cdr) { this.cdr = cdr; this.manualClickOrder$ = new Subject(); this.calcOperatorChange$ = new Subject(); this.nzFilterValue = null; this.sortOrder = null; this.sortDirections = ['ascend', 'descend', null]; this.sortOrderChange$ = new Subject(); this.destroy$ = new Subject(); this.isNzShowSortChanged = false; this.isNzShowFilterChanged = false; this.nzFilterMultiple = true; this.nzSortOrder = null; this.nzSortPriority = false; this.nzSortDirections = ['ascend', 'descend', null]; this.nzFilters = []; this.nzSortFn = null; this.nzFilterFn = null; this.nzShowSort = false; this.nzShowFilter = false; this.nzCustomFilter = false; this.nzCheckedChange = new EventEmitter(); this.nzSortOrderChange = new EventEmitter(); this.nzFilterChange = new EventEmitter(); /** * @deprecated use nzSortOrder instead * */ this.nzSort = null; /** * @deprecated use nzSortOrderChange instead * */ this.nzSortChange = new EventEmitter(); } /** * @param {?} sortDirections * @param {?} current * @return {?} */ NzThAddOnComponent.prototype.getNextSortDirection = /** * @param {?} sortDirections * @param {?} current * @return {?} */ function (sortDirections, current) { /** @type {?} */ var index = sortDirections.indexOf(current); if (index === sortDirections.length - 1) { return sortDirections[0]; } else { return sortDirections[index + 1]; } }; /** * @return {?} */ NzThAddOnComponent.prototype.emitNextSortValue = /** * @return {?} */ function () { if (this.nzShowSort) { /** @type {?} */ var nextOrder = this.getNextSortDirection(this.sortDirections, (/** @type {?} */ (this.sortOrder))); this.setSortOrder(nextOrder); this.manualClickOrder$.next(this); } }; /** * @param {?} order * @return {?} */ NzThAddOnComponent.prototype.setSortOrder = /** * @param {?} order * @return {?} */ function (order) { this.sortOrderChange$.next(order); }; /** * @return {?} */ NzThAddOnComponent.prototype.clearSortOrder = /** * @return {?} */ function () { if (this.sortOrder !== null) { this.setSortOrder(null); } }; /** * @param {?} value * @return {?} */ NzThAddOnComponent.prototype.onFilterValueChange = /** * @param {?} value * @return {?} */ function (value) { this.nzFilterChange.emit(value); this.nzFilterValue = value; this.updateCalcOperator(); }; /** * @return {?} */ NzThAddOnComponent.prototype.updateCalcOperator = /** * @return {?} */ function () { this.calcOperatorChange$.next(); }; /** * @return {?} */ NzThAddOnComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; this.sortOrderChange$.pipe(takeUntil(this.destroy$)).subscribe((/** * @param {?} order * @return {?} */ function (order) { if (_this.sortOrder !== order) { _this.sortOrder = order; _this.nzSortChange.emit(order); _this.nzSortOrderChange.emit(order); } _this.updateCalcOperator(); _this.cdr.markForCheck(); })); }; /** * @param {?} changes * @return {?} */ NzThAddOnComponent.prototype.ngOnChanges = /** * @param {?} changes * @return {?} */ function (changes) { var nzSortKey = changes.nzSortKey, nzSort = changes.nzSort, nzSortDirections = changes.nzSortDirections, nzFilters = changes.nzFilters, nzSortOrder = changes.nzSortOrder, nzSortFn = changes.nzSortFn, nzFilterFn = changes.nzFilterFn, nzSortPriority = changes.nzSortPriority, nzFilterMultiple = changes.nzFilterMultiple, nzShowSort = changes.nzShowSort, nzShowFilter = changes.nzShowFilter; if (nzSortDirections) { if (this.nzSortDirections && this.nzSortDirections.length) { this.sortDirections = this.nzSortDirections; } } if (nzSort) { this.sortOrder = this.nzSort; this.setSortOrder(this.nzSort); warnDeprecation("'nzSort' and 'nzSortChange' is deprecated and will be removed in 10.0.0. Please use 'nzSortOrder' and 'nzSortOrderChange' instead."); } if (nzSortKey) { this.nzColumnKey = this.nzSortKey; warnDeprecation("'nzSortKey' is deprecated and will be removed in 10.0.0. Please use 'nzColumnKey' instead."); } if (nzSortOrder) { this.sortOrder = this.nzSortOrder; this.setSortOrder(this.nzSortOrder); } if (nzShowSort) { this.isNzShowSortChanged = true; } if (nzShowFilter) { this.isNzShowFilterChanged = true; } /** @type {?} */ var isFirstChange = (/** * @param {?} value * @return {?} */ function (value) { return value && value.firstChange && value.currentValue !== undefined; }); if ((isFirstChange(nzSortKey) || isFirstChange(nzSort) || isFirstChange(nzSortOrder) || isFirstChange(nzSortFn)) && !this.isNzShowSortChanged) { this.nzShowSort = true; } if (isFirstChange(nzFilters) && !this.isNzShowFilterChanged) { this.nzShowFilter = true; } if ((nzFilters || nzFilterMultiple) && this.nzShowFilter) { /** @type {?} */ var listOfValue = this.nzFilters.filter((/** * @param {?} item * @return {?} */ function (item) { return item.byDefault; })).map((/** * @param {?} item * @return {?} */ function (item) { return item.value; })); this.nzFilterValue = this.nzFilterMultiple ? listOfValue : listOfValue[0] || null; } if (nzSortFn || nzFilterFn || nzSortPriority || nzFilters) { this.updateCalcOperator(); } }; /** * @return {?} */ NzThAddOnComponent.prototype.ngOnDestroy = /** * @return {?} */ function () { this.destroy$.next(); this.destroy$.complete(); }; NzThAddOnComponent.decorators = [ { type: Component, args: [{ selector: 'th[nzSortKey], th[nzColumnKey], th[nzSort], th[nzSortFn], th[nzSortOrder], th[nzFilters], th[nzShowSort], th[nzShowFilter], th[nzCustomFilter]', preserveWhitespaces: false, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n <nz-table-filter\n *ngIf=\"nzShowFilter || nzCustomFilter; else notFilterTemplate\"\n [contentTemplate]=\"notFilterTemplate\"\n [extraTemplate]=\"extraTemplate\"\n [customFilter]=\"nzCustomFilter\"\n [filterMultiple]=\"nzFilterMultiple\"\n [listOfFilter]=\"nzFilters\"\n (filterChange)=\"onFilterValueChange($event)\"\n ></nz-table-filter>\n <ng-template #notFilterTemplate>\n <ng-template [ngTemplateOutlet]=\"nzShowSort ? sortTemplate : contentTemplate\"></ng-template>\n </ng-template>\n <ng-template #extraTemplate>\n <ng-content select=\"[nz-th-extra]\"></ng-content>\n <ng-content select=\"nz-filter-trigger\"></ng-content>\n </ng-template>\n <ng-template #sortTemplate>\n <nz-table-sorters [sortOrder]=\"sortOrder\" [sortDirections]=\"sortDirections\" [contentTemplate]=\"contentTemplate\"></nz-table-sorters>\n </ng-template>\n <ng-template #contentTemplate>\n <ng-content></ng-content>\n </ng-template>\n ", host: { '[class.ant-table-column-has-sorters]': 'nzShowSort', '[class.ant-table-column-sort]': "sortOrder === 'descend' || sortOrder === 'ascend'", '(click)': 'emitNextSortValue()' } }] } ]; /** @nocollapse */ NzThAddOnComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef } ]; }; NzThAddOnComponent.propDecorators = { nzColumnKey: [{ type: Input }], nzFilterMultiple: [{ type: Input }], nzSortOrder: [{ type: Input }], nzSortPriority: [{ type: Input }], nzSortDirections: [{ type: Input }], nzFilters: [{ type: Input }], nzSortFn: [{ type: Input }], nzFilterFn: [{ type: Input }], nzShowSort: [{ type: Input }], nzShowFilter: [{ type: Input }], nzCustomFilter: [{ type: Input }], nzCheckedChange: [{ type: Output }], nzSortOrderChange: [{ type: Output }], nzFilterChange: [{ type: Output }], nzSortKey: [{ type: Input }], nzSort: [{ type: Input }], nzSortChange: [{ type: Output }] }; __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzThAddOnComponent.prototype, "nzShowSort", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzThAddOnComponent.prototype, "nzShowFilter", void 0); __decorate([ InputBoolean(), __metadata("design:type", Object) ], NzThAddOnComponent.prototype, "nzCustomFilter", void 0); return NzThAddOnComponent; }()); export { NzThAddOnComponent }; if (false) { /** @type {?} */ NzThAddOnComponent.ngAcceptInputType_nzShowSort; /** @type {?} */ NzThAddOnComponent.ngAcceptInputType_nzShowFilter; /** @type {?} */ NzThAddOnComponent.ngAcceptInputType_nzCustomFilter; /** @type {?} */ NzThAddOnComponent.prototype.manualClickOrder$; /** @type {?} */ NzThAddOnComponent.prototype.calcOperatorChange$; /** @type {?} */ NzThAddOnComponent.prototype.nzFilterValue; /** @type {?} */ NzThAddOnComponent.prototype.sortOrder; /** @type {?} */ NzThAddOnComponent.prototype.sortDirections; /** * @type {?} * @private */ NzThAddOnComponent.prototype.sortOrderChange$; /** * @type {?} * @private */ NzThAddOnComponent.prototype.destroy$; /** * @type {?} * @private */ NzThAddOnComponent.prototype.isNzShowSortChanged; /** * @type {?} * @private */ NzThAddOnComponent.prototype.isNzShowFilterChanged; /** @type {?} */ NzThAddOnComponent.prototype.nzColumnKey; /** @type {?} */ NzThAddOnComponent.prototype.nzFilterMultiple; /** @type {?} */ NzThAddOnComponent.prototype.nzSortOrder; /** @type {?} */ NzThAddOnComponent.prototype.nzSortPriority; /** @type {?} */ NzThAddOnComponent.prototype.nzSortDirections; /** @type {?} */ NzThAddOnComponent.prototype.nzFilters; /** @type {?} */ NzThAddOnComponent.prototype.nzSortFn; /** @type {?} */ NzThAddOnComponent.prototype.nzFilterFn; /** @type {?} */ NzThAddOnComponent.prototype.nzShowSort; /** @type {?} */ NzThAddOnComponent.prototype.nzShowFilter; /** @type {?} */ NzThAddOnComponent.prototype.nzCustomFilter; /** @type {?} */ NzThAddOnComponent.prototype.nzCheckedChange; /** @type {?} */ NzThAddOnComponent.prototype.nzSortOrderChange; /** @type {?} */ NzThAddOnComponent.prototype.nzFilterChange; /** * @deprecated use nzColumnKey instead * * @type {?} */ NzThAddOnComponent.prototype.nzSortKey; /** * @deprecated use nzSortOrder instead * * @type {?} */ NzThAddOnComponent.prototype.nzSort; /** * @deprecated use nzSortOrderChange instead * * @type {?} */ NzThAddOnComponent.prototype.nzSortChange; /** * @type {?} * @private */ NzThAddOnComponent.prototype.cdr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGgtYWRkb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctem9ycm8tYW50ZC90YWJsZS8iLCJzb3VyY2VzIjpbInNyYy9jZWxsL3RoLWFkZG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQVFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFHTixpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQztJQTRHRSw0QkFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFuRTFDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFzQixDQUFDO1FBQ3RELHdCQUFtQixHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBQ3pDLGNBQVMsR0FBcUIsSUFBSSxDQUFDO1FBQ25DLG1CQUFjLEdBQXVCLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBb0IsQ0FBQztRQUNuRCxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN6Qix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBRTdCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixnQkFBVyxHQUFxQixJQUFJLENBQUM7UUFDckMsbUJBQWMsR0FBcUIsS0FBSyxD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SUFDN0Qsd0NBQTRDOztJQUM1QywwQ0FBOEM7O0lBQzlDLDRDQUFnRDs7SUFDaEQsNkNBQWlFOztJQUNqRSwrQ0FBeUU7O0lBQ3pFLDRDQUEyRTs7Ozs7SUFFM0UsdUNBQTRCOzs7OztJQUU1QixvQ0FBeUM7Ozs7O0lBRXpDLDBDQUFvRTs7Ozs7SUF1Q3hELGlDQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBBbGliYWJhLmNvbSBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9ORy1aT1JSTy9uZy16b3Jyby1hbnRkL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqL1xuLyogdHNsaW50OmRpc2FibGU6Y29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgd2FybkRlcHJlY2F0aW9uIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL2xvZ2dlcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3V0aWwnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTnpUYWJsZUZpbHRlckZuLCBOelRhYmxlRmlsdGVyTGlzdCwgTnpUYWJsZUZpbHRlclZhbHVlLCBOelRhYmxlU29ydEZuLCBOelRhYmxlU29ydE9yZGVyIH0gZnJvbSAnLi4vdGFibGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6XG4gICAgJ3RoW256U29ydEtleV0sIHRoW256Q29sdW1uS2V5XSwgdGhbbnpTb3J0XSwgdGhbbnpTb3J0Rm5dLCB0aFtuelNvcnRPcmRlcl0sIHRoW256RmlsdGVyc10sIHRoW256U2hvd1NvcnRdLCB0aFtuelNob3dGaWx0ZXJdLCB0aFtuekN1c3RvbUZpbHRlcl0nLFxuICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG56LXRhYmxlLWZpbHRlclxuICAgICAgKm5nSWY9XCJuelNob3dGaWx0ZXIgfHwgbnpDdXN0b21GaWx0ZXI7IGVsc2Ugbm90RmlsdGVyVGVtcGxhdGVcIlxuICAgICAgW2NvbnRlbnRUZW1wbGF0ZV09XCJub3RGaWx0ZXJUZW1wbGF0ZVwiXG4gICAgICBbZXh0cmFUZW1wbGF0ZV09XCJleHRyYVRlbXBsYXRlXCJcbiAgICAgIFtjdXN0b21GaWx0ZXJdPVwibnpDdXN0b21GaWx0ZXJcIlxuICAgICAgW2ZpbHRlck11bHRpcGxlXT1cIm56RmlsdGVyTXVsdGlwbGVcIlxuICAgICAgW2xpc3RPZkZpbHRlcl09XCJuekZpbHRlcnNcIlxuICAgICAgKGZpbHRlckNoYW5nZSk9XCJvbkZpbHRlclZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgID48L256LXRhYmxlLWZpbHRlcj5cbiAgICA8bmctdGVtcGxhdGUgI25vdEZpbHRlclRlbXBsYXRlPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm56U2hvd1NvcnQgPyBzb3J0VGVtcGxhdGUgOiBjb250ZW50VGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNleHRyYVRlbXBsYXRlPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW256LXRoLWV4dHJhXVwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm56LWZpbHRlci10cmlnZ2VyXCI+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzb3J0VGVtcGxhdGU+XG4gICAgICA8bnotdGFibGUtc29ydGVycyBbc29ydE9yZGVyXT1cInNvcnRPcmRlclwiIFtzb3J0RGlyZWN0aW9uc109XCJzb3J0RGlyZWN0aW9uc1wiIFtjb250ZW50VGVtcGxhdGVdPVwiY29udGVudFRlbXBsYXRlXCI+PC9uei10YWJsZS1zb3J0ZXJzPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNjb250ZW50VGVtcGxhdGU+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbiAgaG9zdDoge1xuICAgICdbY2xhc3MuYW50LXRhYmxlLWNvbHVtbi1oYXMtc29ydGVyc10nOiAnbnpTaG93U29ydCcsXG4gICAgJ1tjbGFzcy5hbnQtdGFibGUtY29sdW1uLXNvcnRdJzogYHNvcnRPcmRlciA9PT0gJ2Rlc2NlbmQnIHx8IHNvcnRPcmRlciA9PT0gJ2FzY2VuZCdgLFxuICAgICcoY2xpY2spJzogJ2VtaXROZXh0U29ydFZhbHVlKCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpUaEFkZE9uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dTb3J0OiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9uelNob3dGaWx0ZXI6IEJvb2xlYW5JbnB1dDtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX256Q3VzdG9tRmlsdGVyOiBCb29sZWFuSW5wdXQ7XG5cbiAgbWFudWFsQ2xpY2tPcmRlciQgPSBuZXcgU3ViamVjdDxOelRoQWRkT25Db21wb25lbnQ+KCk7XG4gIGNhbGNPcGVyYXRvckNoYW5nZSQgPSBuZXcgU3ViamVjdCgpO1xuICBuekZpbHRlclZhbHVlOiBOelRhYmxlRmlsdGVyVmFsdWUgPSBudWxsO1xuICBzb3J0T3JkZXI6IE56VGFibGVTb3J0T3JkZXIgPSBudWxsO1xuICBzb3J0RGlyZWN0aW9uczogTnpUYWJsZVNvcnRPcmRlcltdID0gWydhc2NlbmQnLCAnZGVzY2VuZCcsIG51bGxdO1xuICBwcml2YXRlIHNvcnRPcmRlckNoYW5nZSQgPSBuZXcgU3ViamVjdDxOelRhYmxlU29ydE9yZGVyPigpO1xuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBpc056U2hvd1NvcnRDaGFuZ2VkID0gZmFsc2U7XG4gIHByaXZhdGUgaXNOelNob3dGaWx0ZXJDaGFuZ2VkID0gZmFsc2U7XG4gIEBJbnB1dCgpIG56Q29sdW1uS2V5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBuekZpbHRlck11bHRpcGxlID0gdHJ1ZTtcbiAgQElucHV0KCkgbnpTb3J0T3JkZXI6IE56VGFibGVTb3J0T3JkZXIgPSBudWxsO1xuICBASW5wdXQoKSBuelNvcnRQcmlvcml0eTogbnVtYmVyIHwgYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBuelNvcnREaXJlY3Rpb25zOiBOelRhYmxlU29ydE9yZGVyW10gPSBbJ2FzY2VuZCcsICdkZXNjZW5kJywgbnVsbF07XG4gIEBJbnB1dCgpIG56RmlsdGVyczogTnpUYWJsZUZpbHRlckxpc3QgPSBbXTtcbiAgQElucHV0KCkgbnpTb3J0Rm46IE56VGFibGVTb3J0Rm4gfCBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIEBJbnB1dCgpIG56RmlsdGVyRm46IE56VGFibGVGaWx0ZXJGbiB8IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd1NvcnQgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIG56U2hvd0ZpbHRlciA9IGZhbHNlO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgbnpDdXN0b21GaWx0ZXIgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56Q2hlY2tlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG56U29ydE9yZGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpGaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56VGFibGVGaWx0ZXJWYWx1ZT4oKTtcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBuekNvbHVtbktleSBpbnN0ZWFkICoqL1xuICBASW5wdXQoKSBuelNvcnRLZXk/OiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCB1c2UgbnpTb3J0T3JkZXIgaW5zdGVhZCAqKi9cbiAgQElucHV0KCkgbnpTb3J0OiBOelRhYmxlU29ydE9yZGVyID0gbnVsbDtcbiAgLyoqIEBkZXByZWNhdGVkIHVzZSBuelNvcnRPcmRlckNoYW5nZSBpbnN0ZWFkICoqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgbnpTb3J0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIGdldE5leHRTb3J0RGlyZWN0aW9uKHNvcnREaXJlY3Rpb25zOiBOelRhYmxlU29ydE9yZGVyW10sIGN1cnJlbnQ6IE56VGFibGVTb3J0T3JkZXIpOiBOelRhYmxlU29ydE9yZGVyIHtcbiAgICBjb25zdCBpbmRleCA9IHNvcnREaXJlY3Rpb25zLmluZGV4T2YoY3VycmVudCk7XG4gICAgaWYgKGluZGV4ID09PSBzb3J0RGlyZWN0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICByZXR1cm4gc29ydERpcmVjdGlvbnNbMF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzb3J0RGlyZWN0aW9uc1tpbmRleCArIDFdO1xuICAgIH1cbiAgfVxuXG4gIGVtaXROZXh0U29ydFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm56U2hvd1NvcnQpIHtcbiAgICAgIGNvbnN0IG5leHRPcmRlciA9IHRoaXMuZ2V0TmV4dFNvcnREaXJlY3Rpb24odGhpcy5zb3J0RGlyZWN0aW9ucywgdGhpcy5zb3J0T3JkZXIhKTtcbiAgICAgIHRoaXMuc2V0U29ydE9yZGVyKG5leHRPcmRlcik7XG4gICAgICB0aGlzLm1hbnVhbENsaWNrT3JkZXIkLm5leHQodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgc2V0U29ydE9yZGVyKG9yZGVyOiBOelRhYmxlU29ydE9yZGVyKTogdm9pZCB7XG4gICAgdGhpcy5zb3J0T3JkZXJDaGFuZ2UkLm5leHQob3JkZXIpO1xuICB9XG5cbiAgY2xlYXJTb3J0T3JkZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc29ydE9yZGVyICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnNldFNvcnRPcmRlcihudWxsKTtcbiAgICB9XG4gIH1cblxuICBvbkZpbHRlclZhbHVlQ2hhbmdlKHZhbHVlOiBOelRhYmxlRmlsdGVyVmFsdWUpOiB2b2lkIHtcbiAgICB0aGlzLm56RmlsdGVyQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIHRoaXMubnpGaWx0ZXJWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlQ2FsY09wZXJhdG9yKCk7XG4gIH1cblxuICB1cGRhdGVDYWxjT3BlcmF0b3IoKTogdm9pZCB7XG4gICAgdGhpcy5jYWxjT3BlcmF0b3JDaGFuZ2UkLm5leHQoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNvcnRPcmRlckNoYW5nZSQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZShvcmRlciA9PiB7XG4gICAgICBpZiAodGhpcy5zb3J0T3JkZXIgIT09IG9yZGVyKSB7XG4gICAgICAgIHRoaXMuc29ydE9yZGVyID0gb3JkZXI7XG4gICAgICAgIHRoaXMubnpTb3J0Q2hhbmdlLmVtaXQob3JkZXIpO1xuICAgICAgICB0aGlzLm56U29ydE9yZGVyQ2hhbmdlLmVtaXQob3JkZXIpO1xuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVDYWxjT3BlcmF0b3IoKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHtcbiAgICAgIG56U29ydEtleSxcbiAgICAgIG56U29ydCxcbiAgICAgIG56U29ydERpcmVjdGlvbnMsXG4gICAgICBuekZpbHRlcnMsXG4gICAgICBuelNvcnRPcmRlcixcbiAgICAgIG56U29ydEZuLFxuICAgICAgbnpGaWx0ZXJGbixcbiAgICAgIG56U29ydFByaW9yaXR5LFxuICAgICAgbnpGaWx0ZXJNdWx0aXBsZSxcbiAgICAgIG56U2hvd1NvcnQsXG4gICAgICBuelNob3dGaWx0ZXJcbiAgICB9ID0gY2hhbmdlcztcbiAgICBpZiAobnpTb3J0RGlyZWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubnpTb3J0RGlyZWN0aW9ucyAmJiB0aGlzLm56U29ydERpcmVjdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc29ydERpcmVjdGlvbnMgPSB0aGlzLm56U29ydERpcmVjdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuelNvcnQpIHtcbiAgICAgIHRoaXMuc29ydE9yZGVyID0gdGhpcy5uelNvcnQ7XG4gICAgICB0aGlzLnNldFNvcnRPcmRlcih0aGlzLm56U29ydCk7XG4gICAgICB3YXJuRGVwcmVjYXRpb24oXG4gICAgICAgIGAnbnpTb3J0JyBhbmQgJ256U29ydENoYW5nZScgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIDEwLjAuMC4gUGxlYXNlIHVzZSAnbnpTb3J0T3JkZXInIGFuZCAnbnpTb3J0T3JkZXJDaGFuZ2UnIGluc3RlYWQuYFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG56U29ydEtleSkge1xuICAgICAgdGhpcy5uekNvbHVtbktleSA9IHRoaXMubnpTb3J0S2V5O1xuICAgICAgd2FybkRlcHJlY2F0aW9uKGAnbnpTb3J0S2V5JyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMTAuMC4wLiBQbGVhc2UgdXNlICduekNvbHVtbktleScgaW5zdGVhZC5gKTtcbiAgICB9XG4gICAgaWYgKG56U29ydE9yZGVyKSB7XG4gICAgICB0aGlzLnNvcnRPcmRlciA9IHRoaXMubnpTb3J0T3JkZXI7XG4gICAgICB0aGlzLnNldFNvcnRPcmRlcih0aGlzLm56U29ydE9yZGVyKTtcbiAgICB9XG4gICAgaWYgKG56U2hvd1NvcnQpIHtcbiAgICAgIHRoaXMuaXNOelNob3dTb3J0Q2hhbmdlZCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChuelNob3dGaWx0ZXIpIHtcbiAgICAgIHRoaXMuaXNOelNob3dGaWx0ZXJDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgaXNGaXJzdENoYW5nZSA9ICh2YWx1ZTogU2ltcGxlQ2hhbmdlKSA9PiB2YWx1ZSAmJiB2YWx1ZS5maXJzdENoYW5nZSAmJiB2YWx1ZS5jdXJyZW50VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgICBpZiAoXG4gICAgICAoaXNGaXJzdENoYW5nZShuelNvcnRLZXkpIHx8IGlzRmlyc3RDaGFuZ2UobnpTb3J0KSB8fCBpc0ZpcnN0Q2hhbmdlKG56U29ydE9yZGVyKSB8fCBpc0ZpcnN0Q2hhbmdlKG56U29ydEZuKSkgJiZcbiAgICAgICF0aGlzLmlzTnpTaG93U29ydENoYW5nZWRcbiAgICApIHtcbiAgICAgIHRoaXMubnpTaG93U29ydCA9IHRydWU7XG4gICAgfVxuICAgIGlmIChpc0ZpcnN0Q2hhbmdlKG56RmlsdGVycykgJiYgIXRoaXMuaXNOelNob3dGaWx0ZXJDaGFuZ2VkKSB7XG4gICAgICB0aGlzLm56U2hvd0ZpbHRlciA9IHRydWU7XG4gICAgfVxuICAgIGlmICgobnpGaWx0ZXJzIHx8IG56RmlsdGVyTXVsdGlwbGUpICYmIHRoaXMubnpTaG93RmlsdGVyKSB7XG4gICAgICBjb25zdCBsaXN0T2ZWYWx1ZSA9IHRoaXMubnpGaWx0ZXJzLmZpbHRlcihpdGVtID0+IGl0ZW0uYnlEZWZhdWx0KS5tYXAoaXRlbSA9PiBpdGVtLnZhbHVlKTtcbiAgICAgIHRoaXMubnpGaWx0ZXJWYWx1ZSA9IHRoaXMubnpGaWx0ZXJNdWx0aXBsZSA/IGxpc3RPZlZhbHVlIDogbGlzdE9mVmFsdWVbMF0gfHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKG56U29ydEZuIHx8IG56RmlsdGVyRm4gfHwgbnpTb3J0UHJpb3JpdHkgfHwgbnpGaWx0ZXJzKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNhbGNPcGVyYXRvcigpO1xuICAgIH1cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==