@sd-angular/core 1.3.118 → 1.3.119

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,9 +3,12 @@ import { __classPrivateFieldGet } from "tslib";
3
3
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
4
4
  import { Subject, Subscription } from 'rxjs';
5
5
  import { startWith } from 'rxjs/operators';
6
+ import { SdFilterOperators } from '../../models/grid-column.model';
6
7
  export class SdColumnInlineFilter {
7
8
  constructor() {
9
+ this.columnOperator = {};
8
10
  this.columnFilter = {};
11
+ this.operators = [];
9
12
  this.filterChange = new EventEmitter();
10
13
  _valueChanges.set(this, new Subject());
11
14
  _subcription.set(this, new Subscription());
@@ -17,11 +20,23 @@ export class SdColumnInlineFilter {
17
20
  this.value = value;
18
21
  __classPrivateFieldGet(this, _valueChanges).next();
19
22
  }
23
+ set _columnOperator(columnOperator) {
24
+ this.columnOperator = columnOperator || {};
25
+ }
20
26
  set _columnFilter(columnFilter) {
21
27
  this.columnFilter = columnFilter || {};
22
28
  __classPrivateFieldGet(this, _valueChanges).next();
23
29
  }
24
- ;
30
+ set _column(column) {
31
+ var _a, _b, _c;
32
+ this.column = column;
33
+ if (!((_a = column === null || column === void 0 ? void 0 : column.filter) === null || _a === void 0 ? void 0 : _a.disabled) && ((_c = (_b = column === null || column === void 0 ? void 0 : column.filter) === null || _b === void 0 ? void 0 : _b.operator) === null || _c === void 0 ? void 0 : _c.enable)) {
34
+ this.operators = SdFilterOperators.filter(e => { var _a, _b; return (_b = (_a = column.filter.operator.list) === null || _a === void 0 ? void 0 : _a.includes) === null || _b === void 0 ? void 0 : _b.call(_a, e.value); });
35
+ }
36
+ else {
37
+ this.operators = [];
38
+ }
39
+ }
25
40
  ngOnInit() {
26
41
  __classPrivateFieldGet(this, _subcription).add(__classPrivateFieldGet(this, _valueChanges).pipe(startWith(this.columnFilter)).subscribe(() => {
27
42
  var _a, _b;
@@ -29,7 +44,7 @@ export class SdColumnInlineFilter {
29
44
  if (!((_b = (_a = this.column) === null || _a === void 0 ? void 0 : _a.option) === null || _b === void 0 ? void 0 : _b.useFilterDate)) {
30
45
  this.columnFilter[this.column.field] = this.columnFilter[this.column.field] || {
31
46
  from: null,
32
- to: null
47
+ to: null,
33
48
  };
34
49
  }
35
50
  }
@@ -43,7 +58,7 @@ _valueChanges = new WeakMap(), _subcription = new WeakMap();
43
58
  SdColumnInlineFilter.decorators = [
44
59
  { type: Component, args: [{
45
60
  selector: 'sd-column-inline-filter',
46
- template: "<div class=\"c-inline-column\">\r\n <ng-container *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\">\r\n <sd-input *ngIf=\"column.type === 'string'\" size=\"sm\" type=\"text\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'bool'\" size=\"sm\" [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\" valueField=\"value\" displayField=\"display\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\">\r\n </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\">\r\n </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select *ngIf=\"\r\n column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\" [multiple]=\"\r\n column?.option?.selection === 'MULTIPLE' ||\r\n column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\r\n \" [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"\r\n column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\r\n \" size=\"sm\" [items]=\"column.option.items\" [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\" [(model)]=\"columnFilter[column.field]\" (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range *ngIf=\"!column.option?.useFilterDate\" size=\"sm\" [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\" (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time *ngIf=\"column.option?.useFilterDate\" type=\"date\" size=\"sm\" [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\" [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>",
61
+ template: "<div class=\"d-flex c-inline-column\">\r\n <ng-container\r\n *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\r\n \">\r\n <sd-select\r\n *ngIf=\"operators.length\"\r\n style=\"width: 60px; margin-right: 4px\"\r\n size=\"sm\"\r\n [items]=\"operators\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n required\r\n [(model)]=\"columnOperator[column.field]\"></sd-select>\r\n <sd-input\r\n *ngIf=\"column.type === 'string'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n type=\"text\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number\r\n *ngIf=\"column.type === 'number'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select\r\n *ngIf=\"column.type === 'bool'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\"> </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\"> </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select\r\n *ngIf=\"column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\"\r\n [multiple]=\"column?.option?.selection === 'MULTIPLE' || column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete\r\n *ngIf=\"column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range\r\n *ngIf=\"!column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time\r\n *ngIf=\"column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n type=\"date\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>\r\n",
47
62
  changeDetection: ChangeDetectionStrategy.OnPush,
48
63
  styles: [":host ::ng-deep .c-inline-column .mat-form-field-wrapper{background-color:#fff;border-radius:8px;margin:8px 0 0!important;padding:0!important}"]
49
64
  },] }
@@ -51,8 +66,9 @@ SdColumnInlineFilter.decorators = [
51
66
  SdColumnInlineFilter.ctorParameters = () => [];
52
67
  SdColumnInlineFilter.propDecorators = {
53
68
  _value: [{ type: Input, args: ['value',] }],
69
+ _columnOperator: [{ type: Input, args: ['columnOperator',] }],
54
70
  _columnFilter: [{ type: Input, args: ['columnFilter',] }],
55
- column: [{ type: Input }],
71
+ _column: [{ type: Input, args: ['column',] }],
56
72
  filterChange: [{ type: Output }]
57
73
  };
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1pbmxpbmUtZmlsdGVyL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzNDLE1BQU0sT0FBTyxvQkFBb0I7SUFlL0I7UUFUQSxpQkFBWSxHQUF3QixFQUFFLENBQUM7UUFNN0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLHdCQUFnQixJQUFJLE9BQU8sRUFBRSxFQUFDO1FBQzlCLHVCQUFlLElBQUksWUFBWSxFQUFFLEVBQUM7UUFxQmxDLG1CQUFjLEdBQUcsR0FBRyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFBO0lBckJHLENBQUM7SUFkVyxNQUFNLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQiw0Q0FBbUIsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQTJCLGFBQWEsQ0FBQyxZQUFpQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDdkMsNENBQW1CLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFBQSxDQUFDO0lBUUYsUUFBUTtRQUNOLDJDQUFrQixHQUFHLENBQUMsNENBQW1CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTs7WUFDekYsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRTtnQkFDakcsSUFBSSxjQUFDLElBQUksQ0FBQyxNQUFNLDBDQUFFLE1BQU0sMENBQUUsYUFBYSxDQUFBLEVBQUU7b0JBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzdFLElBQUksRUFBRSxJQUFJO3dCQUNWLEVBQUUsRUFBRSxJQUFJO3FCQUNULENBQUM7aUJBQ0g7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsV0FBVztRQUNULDJDQUFrQixXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDOzs7O1lBdkNGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyx3ekdBQW9EO2dCQUVwRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7YUFDaEQ7Ozs7cUJBR0UsS0FBSyxTQUFDLE9BQU87NEJBS2IsS0FBSyxTQUFDLGNBQWM7cUJBSXBCLEtBQUs7MkJBQ0wsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1jb2x1bW4taW5saW5lLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZENvbHVtbklubGluZUZpbHRlciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgdmFsdWU6IGFueTtcclxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlKHZhbHVlOiBhbnkpIHtcclxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIHRoaXMuI3ZhbHVlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfVxyXG4gIGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gIEBJbnB1dCgnY29sdW1uRmlsdGVyJykgc2V0IF9jb2x1bW5GaWx0ZXIoY29sdW1uRmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICB0aGlzLmNvbHVtbkZpbHRlciA9IGNvbHVtbkZpbHRlciB8fCB7fTtcclxuICAgIHRoaXMuI3ZhbHVlQ2hhbmdlcy5uZXh0KCk7XHJcbiAgfTtcclxuICBASW5wdXQoKSBjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uO1xyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgI3ZhbHVlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgI3N1YmNyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24uYWRkKHRoaXMuI3ZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aCh0aGlzLmNvbHVtbkZpbHRlcikpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ3RpbWUnIHx8IHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29sdW1uPy5vcHRpb24/LnVzZUZpbHRlckRhdGUpIHtcclxuICAgICAgICAgIHRoaXMuY29sdW1uRmlsdGVyW3RoaXMuY29sdW1uLmZpZWxkXSA9IHRoaXMuY29sdW1uRmlsdGVyW3RoaXMuY29sdW1uLmZpZWxkXSB8fCB7XHJcbiAgICAgICAgICAgIGZyb206IG51bGwsXHJcbiAgICAgICAgICAgIHRvOiBudWxsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNzdWJjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgb25GaWx0ZXJDaGFuZ2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpbHRlckNoYW5nZS5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLW1hdGVyaWFsLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2NvbHVtbi1pbmxpbmUtZmlsdGVyL2NvbHVtbi1pbmxpbmUtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBb0IsaUJBQWlCLEVBQXdCLE1BQU0sZ0NBQWdDLENBQUM7QUFRM0csTUFBTSxPQUFPLG9CQUFvQjtJQTZCL0I7UUF2QkEsbUJBQWMsR0FBcUMsRUFBRSxDQUFDO1FBS3RELGlCQUFZLEdBQXdCLEVBQUUsQ0FBQztRQUt2QyxjQUFTLEdBQW1ELEVBQUUsQ0FBQztRQVVyRCxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsd0JBQWdCLElBQUksT0FBTyxFQUFFLEVBQUM7UUFDOUIsdUJBQWUsSUFBSSxZQUFZLEVBQUUsRUFBQztRQXNCbEMsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUM7SUF2QmEsQ0FBQztJQTNCQSxNQUFNLENBQUMsS0FBVTtRQUMvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQiw0Q0FBbUIsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELElBQTZCLGVBQWUsQ0FBQyxjQUFnRDtRQUMzRixJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsSUFBSSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUdELElBQTJCLGFBQWEsQ0FBQyxZQUFpQztRQUN4RSxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxFQUFFLENBQUM7UUFDdkMsNENBQW1CLElBQUksRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFHRCxJQUFxQixPQUFPLENBQUMsTUFBNEI7O1FBQ3ZELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksUUFBQyxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSwwQ0FBRSxRQUFRLENBQUEsaUJBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sMENBQUUsUUFBUSwwQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNqRSxJQUFJLENBQUMsU0FBUyxHQUFHLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxrQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLDBDQUFFLFFBQVEsbURBQUcsQ0FBQyxDQUFDLEtBQUssSUFBQyxDQUFDLENBQUM7U0FDbEc7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQztJQU1ELFFBQVE7UUFDTiwyQ0FBa0IsR0FBRyxDQUNuQiw0Q0FBbUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFOztZQUNuRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUNqRyxJQUFJLGNBQUMsSUFBSSxDQUFDLE1BQU0sMENBQUUsTUFBTSwwQ0FBRSxhQUFhLENBQUEsRUFBRTtvQkFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSTt3QkFDN0UsSUFBSSxFQUFFLElBQUk7d0JBQ1YsRUFBRSxFQUFFLElBQUk7cUJBQ1QsQ0FBQztpQkFDSDthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsMkNBQWtCLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7Ozs7WUF0REYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLHVvSUFBb0Q7Z0JBRXBELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7OztxQkFHRSxLQUFLLFNBQUMsT0FBTzs4QkFLYixLQUFLLFNBQUMsZ0JBQWdCOzRCQUt0QixLQUFLLFNBQUMsY0FBYztzQkFNcEIsS0FBSyxTQUFDLFFBQVE7MkJBUWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2RGaWx0ZXJPcGVyYXRvciwgU2RGaWx0ZXJPcGVyYXRvcnMsIFNkR3JpZE1hdGVyaWFsQ29sdW1uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29sdW1uLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtY29sdW1uLWlubGluZS1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2x1bW4taW5saW5lLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLWlubGluZS1maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkQ29sdW1uSW5saW5lRmlsdGVyIGltcGxlbWVudHMgT25Jbml0IHtcclxuICB2YWx1ZTogYW55O1xyXG4gIEBJbnB1dCgndmFsdWUnKSBfdmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgdGhpcy4jdmFsdWVDaGFuZ2VzLm5leHQoKTtcclxuICB9XHJcbiAgY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+ID0ge307XHJcbiAgQElucHV0KCdjb2x1bW5PcGVyYXRvcicpIHNldCBfY29sdW1uT3BlcmF0b3IoY29sdW1uT3BlcmF0b3I6IFJlY29yZDxzdHJpbmcsIFNkRmlsdGVyT3BlcmF0b3I+KSB7XHJcbiAgICB0aGlzLmNvbHVtbk9wZXJhdG9yID0gY29sdW1uT3BlcmF0b3IgfHwge307XHJcbiAgfVxyXG5cclxuICBjb2x1bW5GaWx0ZXI6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcclxuICBASW5wdXQoJ2NvbHVtbkZpbHRlcicpIHNldCBfY29sdW1uRmlsdGVyKGNvbHVtbkZpbHRlcjogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdGhpcy5jb2x1bW5GaWx0ZXIgPSBjb2x1bW5GaWx0ZXIgfHwge307XHJcbiAgICB0aGlzLiN2YWx1ZUNoYW5nZXMubmV4dCgpO1xyXG4gIH1cclxuICBvcGVyYXRvcnM6IHsgdmFsdWU6IFNkRmlsdGVyT3BlcmF0b3I7IGRpc3BsYXk6IHN0cmluZyB9W10gPSBbXTtcclxuICBjb2x1bW46IFNkR3JpZE1hdGVyaWFsQ29sdW1uO1xyXG4gIEBJbnB1dCgnY29sdW1uJykgc2V0IF9jb2x1bW4oY29sdW1uOiBTZEdyaWRNYXRlcmlhbENvbHVtbikge1xyXG4gICAgdGhpcy5jb2x1bW4gPSBjb2x1bW47XHJcbiAgICBpZiAoIWNvbHVtbj8uZmlsdGVyPy5kaXNhYmxlZCAmJiBjb2x1bW4/LmZpbHRlcj8ub3BlcmF0b3I/LmVuYWJsZSkge1xyXG4gICAgICB0aGlzLm9wZXJhdG9ycyA9IFNkRmlsdGVyT3BlcmF0b3JzLmZpbHRlcihlID0+IGNvbHVtbi5maWx0ZXIub3BlcmF0b3IubGlzdD8uaW5jbHVkZXM/LihlLnZhbHVlKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZXJhdG9ycyA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBAT3V0cHV0KCkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICN2YWx1ZUNoYW5nZXMgPSBuZXcgU3ViamVjdCgpO1xyXG4gICNzdWJjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24uYWRkKFxyXG4gICAgICB0aGlzLiN2YWx1ZUNoYW5nZXMucGlwZShzdGFydFdpdGgodGhpcy5jb2x1bW5GaWx0ZXIpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbi50eXBlID09PSAnZGF0ZScgfHwgdGhpcy5jb2x1bW4udHlwZSA9PT0gJ3RpbWUnIHx8IHRoaXMuY29sdW1uLnR5cGUgPT09ICdkYXRldGltZScpIHtcclxuICAgICAgICAgIGlmICghdGhpcy5jb2x1bW4/Lm9wdGlvbj8udXNlRmlsdGVyRGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gPSB0aGlzLmNvbHVtbkZpbHRlclt0aGlzLmNvbHVtbi5maWVsZF0gfHwge1xyXG4gICAgICAgICAgICAgIGZyb206IG51bGwsXHJcbiAgICAgICAgICAgICAgdG86IG51bGwsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy4jc3ViY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG9uRmlsdGVyQ2hhbmdlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5maWx0ZXJDaGFuZ2UuZW1pdCgpO1xyXG4gIH07XHJcbn1cclxuIl19