@experteam-mx/ngx-table 18.0.2 → 18.0.3

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.
@@ -1,5 +1,5 @@
1
1
  import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { BehaviorSubject, debounceTime, distinctUntilChanged } from 'rxjs';
2
+ import { debounceTime, distinctUntilChanged, Subject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "./ngx-table.service";
5
5
  import * as i2 from "@angular/common";
@@ -19,7 +19,7 @@ export class NgxTableComponent {
19
19
  checkSelectAll;
20
20
  dataId;
21
21
  configsDefault;
22
- searchTerm = new BehaviorSubject('');
22
+ searchTerm = new Subject();
23
23
  constructor(_NgxTableService) {
24
24
  this._NgxTableService = _NgxTableService;
25
25
  this.dataId = _NgxTableService.dataId;
@@ -129,6 +129,22 @@ export class NgxTableComponent {
129
129
  }
130
130
  };
131
131
  }
132
+ ngOnInit() {
133
+ this.render();
134
+ this._NgxTableService.onChangeTooltips.subscribe((status) => {
135
+ if (status) {
136
+ this.render();
137
+ }
138
+ });
139
+ this.searchTerm
140
+ .pipe(debounceTime(300), distinctUntilChanged())
141
+ .subscribe(() => {
142
+ this.onPageChange();
143
+ });
144
+ }
145
+ ngOnChanges(changes) {
146
+ this.render();
147
+ }
132
148
  objectKeys(registers) {
133
149
  let registros = [];
134
150
  for (let key of Object.keys(registers)) {
@@ -320,25 +336,6 @@ export class NgxTableComponent {
320
336
  }
321
337
  });
322
338
  }
323
- ngOnInit() {
324
- this.render();
325
- this._NgxTableService.onChangeTooltips.subscribe((status) => {
326
- if (status) {
327
- this.render();
328
- }
329
- });
330
- this.searchTerm
331
- .pipe(debounceTime(300), distinctUntilChanged())
332
- .subscribe(() => {
333
- this.configs = this.configsRender;
334
- this.changePage.emit({
335
- ...this.configsRender
336
- });
337
- });
338
- }
339
- ngOnChanges(changes) {
340
- this.render();
341
- }
342
339
  setConfigsDefault(key) {
343
340
  if (this.configsRender[key] == null) {
344
341
  this.configsRender[key] = this.configsDefault[key];
@@ -378,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
378
375
  type: ViewChild,
379
376
  args: ['selectAll']
380
377
  }] } });
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtdGFibGUvc3JjL2xpYi9uZ3gtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC10YWJsZS9zcmMvbGliL25neC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRW5ILE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFBOzs7Ozs7O0FBTzFFLE1BQU0sT0FBTyxpQkFBaUI7SUFxQm5CO0lBcEJBLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDN0IsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUVqQixTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQy9CLGVBQWUsR0FBVSxFQUFFLENBQUM7SUFFbkIsT0FBTyxDQUFNO0lBQ3RCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFFZCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUUxQixjQUFjLENBQU07SUFFNUMsTUFBTSxDQUFLO0lBQ1gsY0FBYyxDQUFLO0lBRVgsVUFBVSxHQUFHLElBQUksZUFBZSxDQUFTLEVBQUUsQ0FBQyxDQUFBO0lBRXBELFlBQ1MsZ0JBQWlDO1FBQWpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFFeEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUE7UUFFckMsSUFBSSxDQUFDLGNBQWMsR0FBRztZQUNwQixVQUFVLEVBQUUsSUFBSTtZQUNoQixP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Q0FBQyxRQUFRLENBQUM7WUFDdkUsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxJQUFJLEdBQUcsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0F0WlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsZ1VDVDlCLDg2ZEEySkE7OzRGRGxKYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVztvRkFLWixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVpQixjQUFjO3NCQUFyQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IE5neFRhYmxlU2VydmljZSB9IGZyb20gJy4vbmd4LXRhYmxlLnNlcnZpY2UnXHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25neC10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25neC10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmd4LXRhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5neFRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGhlYWRSb3c6IGFueVtdID0gW107XHJcbiAgaGVhZFJvd1JlbmRlcjogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgcmVnaXN0ZXJzOiBhbnlbXSA9IFtdO1xyXG4gIHJlZ2lzdGVyc1JlbmRlcjogYW55W10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgY29uZmlnczogYW55O1xyXG4gIGNvbmZpZ3NSZW5kZXI6IGFueSA9IHt9O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlUGFnZSA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG4gIEBPdXRwdXQoKSBjbGlja0V2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbCcpIGNoZWNrU2VsZWN0QWxsOiBhbnk7XHJcblxyXG4gIGRhdGFJZDogYW55XHJcbiAgY29uZmlnc0RlZmF1bHQ6IGFueVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFRlcm0gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9OZ3hUYWJsZVNlcnZpY2U6IE5neFRhYmxlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5kYXRhSWQgPSBfTmd4VGFibGVTZXJ2aWNlLmRhdGFJZFxyXG5cclxuICAgIHRoaXMuY29uZmlnc0RlZmF1bHQgPSB7XHJcbiAgICAgIHRpdGxlVGFibGU6IG51bGwsXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uQWN0aXZlOiBmYWxzZSxcclxuICAgICAgcGFnZTogMSxcclxuICAgICAgcGFnZVNpemU6IDE1LFxyXG4gICAgICBjb2xsZWN0aW9uU2l6ZTogMCxcclxuICAgICAgdGFibGVTaXplOiAnbm9ybWFsJyxcclxuICAgICAgbGFiZWxzOiB7XHJcbiAgICAgICAgbm9SZWdpc3RlcnM6ICdSZWdpc3RlcnMgbm8gZm91bmQnLFxyXG4gICAgICAgIHRvb2x0aXBzOntcclxuICAgICAgICAgIC4uLnRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwc1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgc2VhcmNoOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICB0ZXh0U2VhcmNoOiAnJyxcclxuICAgICAgICBwbGFjZWhvbGRlclNlYXJjaDogJ1NlYXJjaCdcclxuICAgICAgfSxcclxuICAgICAgb3JkZXI6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICAgIGFzYzogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgYWN0aW9uczoge1xyXG4gICAgICAgIGFkZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2VsZWN0OiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlZGl0OiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWxldGU6IHtcclxuICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW5hYmxlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNhYmxlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2dpbkFzOiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoZWNrOiB7XHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuYWJsZVNlbGVjdGVkOiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRpc2FibGVTZWxlY3RlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgY29sSGVhZDoge1xyXG4gICAgICAgIGxhYmVsOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICAgIG9yZGVyOiB7XHJcbiAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBhc2M6IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVBbGw6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogJ0VuYWJsZSBhbGwnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVBbGw6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogJ0Rpc2FibGUgYWxsJ1xyXG4gICAgICB9LFxyXG4gICAgICBzYXZlQ2hhbmdlczoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgbGFiZWxIdG1sOiAnU2F2ZSBjaGFuZ2VzJyxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgb2JqZWN0S2V5cyhyZWdpc3RlcnM6IGFueSkge1xyXG4gICAgbGV0IHJlZ2lzdHJvcyA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhyZWdpc3RlcnMpKSB7XHJcbiAgICAgIGlmIChrZXkgIT0gJ2NvbmZpZ1JlZ2lzdGVyJykge1xyXG4gICAgICAgIHJlZ2lzdHJvcy5wdXNoKGtleSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVnaXN0cm9zO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKCkge1xyXG4gICAgdGhpcy5jb25maWdzID0gdGhpcy5jb25maWdzUmVuZGVyO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcclxuICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uS2V5U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hUZXJtLm5leHQodGhpcy5jb25maWdzUmVuZGVyLnNlYXJjaC50ZXh0U2VhcmNoKVxyXG4gIH1cclxuXHJcbiAgb25SZXN0YXJTZWFjaCgpIHtcclxuICAgIHRoaXMuY29uZmlnc1JlbmRlci5zZWFyY2gudGV4dFNlYXJjaCA9ICcnO1xyXG4gICAgdGhpcy5jb25maWdzID0gdGhpcy5jb25maWdzUmVuZGVyO1xyXG5cclxuICAgIHRoaXMuY2hhbmdlUGFnZS5lbWl0KHtcclxuICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2soe1xyXG4gICAgICB0eXBlOiAnY2xlYXInXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQWN0aW9uQ2xpY2sob2JqZWN0OiBhbnkpIHtcclxuICAgIG9iamVjdC5ldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIG9iamVjdC5ldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5jbGlja0V2ZW50LmVtaXQoe1xyXG4gICAgICB0eXBlOiBvYmplY3QudHlwZSxcclxuICAgICAgZGF0YTogb2JqZWN0LmRhdGEsXHJcbiAgICAgIGluZGV4OiBvYmplY3QuaW5kZXhcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgdGhpcy5oZWFkUm93UmVuZGVyID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaGVhZCBvZiB0aGlzLmhlYWRSb3cpIHtcclxuICAgICAgdGhpcy5oZWFkUm93UmVuZGVyLnB1c2goe1xyXG4gICAgICAgIC4uLnRoaXMuY29uZmlnc0RlZmF1bHQuY29sSGVhZCxcclxuICAgICAgICAuLi5oZWFkLFxyXG4gICAgICAgIG9yZGVyOiB7XHJcbiAgICAgICAgICAuLi50aGlzLmNvbmZpZ3NEZWZhdWx0LmNvbEhlYWQub3JkZXIsXHJcbiAgICAgICAgICAuLi5oZWFkLm9yZGVyXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbmZpZ3NSZW5kZXIgPSB7XHJcbiAgICAgIHRpdGxlVGFibGU6IHRoaXMuY29uZmlnc0RlZmF1bHQudGl0bGVUYWJsZSxcclxuICAgICAgbG9hZGluZzogdGhpcy5jb25maWdzRGVmYXVsdC5sb2FkaW5nLFxyXG4gICAgICBwYWdpbmF0aW9uQWN0aXZlOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LnBhZ2luYXRpb25BY3RpdmUsXHJcbiAgICAgIHBhZ2U6IHRoaXMuY29uZmlnc0RlZmF1bHQucGFnZSxcclxuICAgICAgcGFnZVNpemU6IHRoaXMuY29uZmlnc0RlZmF1bHQucGFnZVNpemUsXHJcbiAgICAgIGNvbGxlY3Rpb25TaXplOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmNvbGxlY3Rpb25TaXplLFxyXG4gICAgICB0YWJsZVNpemU6IHRoaXMuY29uZmlnc0RlZmF1bHQudGFibGVTaXplLFxyXG4gICAgICBsYWJlbHM6IHRoaXMuY29uZmlnc0RlZmF1bHQubGFiZWxzLFxyXG4gICAgICBzZWFyY2g6IHRoaXMuY29uZmlnc0RlZmF1bHQuc2VhcmNoLFxyXG4gICAgICBvcmRlcjogdGhpcy5jb25maWdzRGVmYXVsdC5vcmRlcixcclxuICAgICAgYWN0aW9uczogdGhpcy5jb25maWdzRGVmYXVsdC5hY3Rpb25zLFxyXG4gICAgICAuLi50aGlzLmNvbmZpZ3NcclxuICAgIH07XHJcblxyXG4gICAgaWYoICF0aGlzLmNvbmZpZ3MubGFiZWxzICl7XHJcbiAgICAgIHRoaXMuY29uZmlncy5sYWJlbHMgPSB7fVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCAhdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcyApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzID0ge31cclxuICAgIH1cclxuXHJcbiAgICBpZiggIXRoaXMuY29uZmlncy5sYWJlbHMudG9vbHRpcHMuY2xlYXJTZWFyY2ggKXtcclxuICAgICAgdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9ICcnXHJcbiAgICB9XHJcbiAgICBpZiggdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9PSAnJyB8fCB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCAhPSB0aGlzLl9OZ3hUYWJsZVNlcnZpY2UudG9vbHRpcHMuY2xlYXJTZWFyY2ggKXtcclxuICAgICAgdGhpcy5jb25maWdzUmVuZGVyLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaFxyXG4gICAgICB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCA9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaFxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2V0Q29uZmlnc0RlZmF1bHQoJ2VuYWJsZUFsbCcpO1xyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnZGlzYWJsZUFsbCcpO1xyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnc2F2ZUNoYW5nZXMnKTtcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyc1JlbmRlciA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IHJlZ2lzdGVyIG9mIHRoaXMucmVnaXN0ZXJzKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJzUmVuZGVyLnB1c2goe1xyXG4gICAgICAgIC4uLnJlZ2lzdGVyLFxyXG4gICAgICAgIGNvbmZpZ1JlZ2lzdGVyOiB7XHJcbiAgICAgICAgICBhY3Rpb25zOiB7XHJcbiAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlci5hY3Rpb25zLFxyXG4gICAgICAgICAgICBsb2dpbkFzOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bc1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjaGVjazoge1xyXG4gICAgICAgICAgICAgIC4uLnRoaXMuY29uZmlnc1JlbmRlci5hY3Rpb25zLmNoZWNrXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC4uLnJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0b3BQcm9wYWdhdGlvbihlOiBhbnkpIHtcclxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RBbGwoKSB7XHJcbiAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jaGVja1NlbGVjdEFsbC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgIGxldCBjb250Q2hlY2sgPSB0aGlzLmdldFNlbGVjdGVkUGljZXMoKTtcclxuXHJcbiAgICBsZXQgcmVnaXN0ZXJDaGVja3NFbmFibGVkID0gdGhpcy5yZWdpc3RlcnNSZW5kZXIuZmlsdGVyKChlbGVtZW50KT0+e1xyXG4gICAgICByZXR1cm4gIWVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5kaXNhYmxlZCAmJiBlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suYWN0aXZlXHJcbiAgICB9KVxyXG5cclxuICAgIGlmIChyZWdpc3RlckNoZWNrc0VuYWJsZWQubGVuZ3RoID09IDApIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZWdpc3RlckNoZWNrc0VuYWJsZWQubGVuZ3RoID09IGNvbnRDaGVjaykge1xyXG4gICAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAoY29udENoZWNrICE9IDApIHtcclxuICAgICAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuaW5kZXRlcm1pbmF0ZSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2soe1xyXG4gICAgICB0eXBlOiAnY2hlY2tlZCcsXHJcbiAgICAgIGRhdGE6IHRoaXMuY2hlY2tlZFJlZ2lzdGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlbGVjdGVkUGljZXMoKSB7XHJcbiAgICBsZXQgY29udENoZWNrID0gMDtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgIGNvbnRDaGVjayArPSAocmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID8gMSA6IDApO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb250Q2hlY2s7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVNlbGVjdEFsbCgpIHtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcbiAgICBpZiAodGhpcy5jaGVja1NlbGVjdEFsbC5uYXRpdmVFbGVtZW50LmNoZWNrZWQpIHtcclxuICAgICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgICAgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgICAgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQWN0aW9uQ2xpY2soe1xyXG4gICAgICB0eXBlOiAnY2hlY2tlZCcsXHJcbiAgICAgIGRhdGE6IHRoaXMuY2hlY2tlZFJlZ2lzdGVycygpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoZWNrZWRSZWdpc3RlcnMoKSB7XHJcbiAgICBsZXQgY2hlY2tlZFJlZ2lzdGVyID0gW107XHJcbiAgICBsZXQgcmVnaXN0ZXJDaGVja3NFbmFibGVkID0gdGhpcy5yZWdpc3RlcnNSZW5kZXIuZmlsdGVyKChlbGVtZW50KT0+e1xyXG4gICAgICByZXR1cm4gIWVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5kaXNhYmxlZCAmJiBlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suYWN0aXZlXHJcbiAgICB9KVxyXG5cclxuICAgIGZvciAobGV0IHJlZ2lzdGVyIG9mIHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCkge1xyXG4gICAgICBpZiAocmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkKSB7XHJcbiAgICAgICAgY2hlY2tlZFJlZ2lzdGVyLnB1c2goe1xyXG4gICAgICAgICAgLi4ucmVnaXN0ZXJcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjaGVja2VkUmVnaXN0ZXI7XHJcbiAgfVxyXG5cclxuICBhY3RpdmVPcmRlcihjb25maWc6IGFueSkge1xyXG4gICAgZm9yIChsZXQgaGVhZCBvZiB0aGlzLmhlYWRSb3dSZW5kZXIpIHtcclxuICAgICAgaWYgKGhlYWQuZmllbGQgPT0gY29uZmlnLmZpZWxkKSB7XHJcbiAgICAgICAgaGVhZC5vcmRlci5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIGhlYWQub3JkZXIuYXNjID0gY29uZmlnLmFzYztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBoZWFkLm9yZGVyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbk9yZGVyQ2hhbmdlKGNvbmZpZzogYW55KSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9yZGVyKHtcclxuICAgICAgZmllbGQ6IGNvbmZpZy5maWVsZCxcclxuICAgICAgYXNjOiBjb25maWcuYXNjXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XHJcbiAgICAgIHR5cGU6ICdvcmRlcicsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZDogY29uZmlnLmZpZWxkLFxyXG4gICAgICAgIGFzYzogY29uZmlnLmFzY1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuXHJcbiAgICB0aGlzLl9OZ3hUYWJsZVNlcnZpY2Uub25DaGFuZ2VUb29sdGlwcy5zdWJzY3JpYmUoXHJcbiAgICAgIChzdGF0dXMpPT57XHJcbiAgICAgICAgaWYoc3RhdHVzKXtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApXHJcblxyXG4gICAgdGhpcy5zZWFyY2hUZXJtXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3MgPSB0aGlzLmNvbmZpZ3NSZW5kZXJcclxuXHJcbiAgICAgICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQoe1xyXG4gICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgfVxyXG5cclxuICBzZXRDb25maWdzRGVmYXVsdChrZXk6IHN0cmluZykge1xyXG4gICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldID09IG51bGwpIHtcclxuICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0gPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0uYWN0aXZlID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5hY3RpdmUgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0uYWN0aXZlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0uZGlzYWJsZWQgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmRpc2FibGVkID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmRpc2FibGVkO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5jb25maWdzUmVuZGVyW2tleV0ubGFiZWxIdG1sID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5sYWJlbEh0bWwgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0ubGFiZWxIdG1sO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoa2V5ID09ICdzYXZlQ2hhbmdlcycgJiYgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubG9hZGluZyA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubG9hZGluZyA9IHRoaXMuY29uZmlnc0RlZmF1bHRba2V5XS5sb2FkaW5nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cclxuICAgIDxoMyBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnRpdGxlVGFibGUgIT0gbnVsbFwiPnt7IGNvbmZpZ3NSZW5kZXIudGl0bGVUYWJsZSB9fTwvaDM+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGp1c3RpZnktY29udGVudC1lbmQgbWItMlwiICpuZ0lmPVwiKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCAoY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCBjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuYWRkPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zZWFyY2guYWN0aXZlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiICpuZ0lmPVwiKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCAoY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8uYWN0aXZlKSB8fCBjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuYWRkPy5hY3RpdmVcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtc2VsZWN0ZWQte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmxvYWRpbmcgfHwgY2hlY2tlZFJlZ2lzdGVycygpLmxlbmd0aCA9PSAwXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZW5hYmxlU2VsZWN0ZWQnLCBkYXRhOiBjaGVja2VkUmVnaXN0ZXJzKCl9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkLmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZGlzYWJsZS1zZWxlY3RlZC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5sb2FkaW5nIHx8IGNoZWNrZWRSZWdpc3RlcnMoKS5sZW5ndGggPT0gMFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiAgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2Rpc2FibGVTZWxlY3RlZCcsIGRhdGE6IGNoZWNrZWRSZWdpc3RlcnMoKX0pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtYWxsLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwuZGlzYWJsZWRcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCwgdHlwZTogJ2VuYWJsZUFsbCd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLmVuYWJsZUFsbC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRpc2FibGUtYWxsLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5kaXNhYmxlQWxsLmRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdkaXNhYmxlQWxsJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cInNhdmUtY2hhbmdlcy17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMuYWN0aXZlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTFcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5kaXNhYmxlZCB8fCBjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxvYWRpbmdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCwgdHlwZTogJ3NhdmVDaGFuZ2VzJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiYWRkLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdhZGQnfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTNcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuc2VhcmNoLmFjdGl2ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgKGlucHV0KT1cIm9uS2V5U2VhcmNoKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbmZpZ3NSZW5kZXIuc2VhcmNoLnRleHRTZWFyY2hcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnc1JlbmRlci5zZWFyY2gucGxhY2Vob2xkZXJTZWFyY2ggIT0gdW5kZWZpbmVkID8gY29uZmlnc1JlbmRlci5zZWFyY2gucGxhY2Vob2xkZXJTZWFyY2ggOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1pZD1cImlucHV0LXNlYXJjaC17eyBkYXRhSWQgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIvPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJyZXN0YXJ0LXNlYXJjaC17eyBkYXRhSWQgfX1cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25SZXN0YXJTZWFjaCgpXCIgW25nYlRvb2x0aXBdPVwiY29uZmlnc1JlbmRlci5sYWJlbHM/LnRvb2x0aXBzPy5jbGVhclNlYXJjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYmkgYmktYXJyb3ctY291bnRlcmNsb2Nrd2lzZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5neC1za2VsZXRvbi1sb2FkZXIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmxvYWRpbmdcIiBjb3VudD1cIjVcIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICA8cCAqbmdJZj1cIiFjb25maWdzUmVuZGVyLmxvYWRpbmcgJiYgY29uZmlnc1JlbmRlci5jb2xsZWN0aW9uU2l6ZSA9PSAwXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7IGNvbmZpZ3NSZW5kZXIubGFiZWxzLm5vUmVnaXN0ZXJzIH19PC9wPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFjb25maWdzUmVuZGVyLmxvYWRpbmcgJiYgY29uZmlnc1JlbmRlci5jb2xsZWN0aW9uU2l6ZSA+IDBcIiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLWJvcmRlcmVkXCIgW2NsYXNzLnRhYmxlLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIj5cclxuICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cInRleHQtY2VudGVyXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuY2hlY2s/LmFjdGl2ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgYXR0ci5kYXRhLWlkPVwiYm94LXNlbGVjdC1hbGwte3sgZGF0YUlkIH19XCIgI3NlbGVjdEFsbCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlU2VsZWN0QWxsKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGhlYWRSb3dSZW5kZXJcIiBbY2xhc3MucG9pbnRlcl09XCJjb2wub3JkZXIudmlzaWJsZVwiIChjbGljayk9XCIoIGNvbC5vcmRlci52aXNpYmxlID8gb25PcmRlckNoYW5nZSh7IGZpZWxkOiBjb2wuZmllbGQsIGFzYzogKCBjb2wub3JkZXIuYWN0aXZlID8gIWNvbC5vcmRlci5hc2MgOiB0cnVlICkgfSkgOiByZXR1cm4gKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbC5sYWJlbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb2wub3JkZXIudmlzaWJsZSAmJiBjb2wub3JkZXIuYWN0aXZlICYmICFjb2wub3JkZXIuYXNjXCIgY2xhc3M9XCJiaSBiaS1jaGV2cm9uLWRvd24gbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJjb2wub3JkZXIudmlzaWJsZSAmJiBjb2wub3JkZXIuYWN0aXZlICYmIGNvbC5vcmRlci5hc2NcIiBjbGFzcz1cImJpIGJpLWNoZXZyb24tdXAgbXMtMVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNvbC1jb21wYWN0XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZWRpdD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kZWxldGU/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5sb2dpbkFzPy5hY3RpdmVcIj48L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJzUmVuZGVyOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIGF0dHIuZGF0YS1pZD1cInNlbGVjdC1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiIFtjbGFzcy5wb2ludGVyXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5zZWxlY3Q/LmFjdGl2ZVwiIChjbGljayk9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uc2VsZWN0Py5hY3RpdmUgPyBvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdzZWxlY3QnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pOnJldHVyblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmNoZWNrPy5hY3RpdmVcIiAoY2xpY2spPVwic3RvcFByb3BhZ2F0aW9uKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suZGlzYWJsZWRcIiBhdHRyLmRhdGEtaWQ9XCJib3gtc2VsZWN0LXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgWyhuZ01vZGVsKV09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWRcIiAoY2hhbmdlKT1cInNldFNlbGVjdEFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgaGVhZFJvd1JlbmRlcjsgbGV0IGogPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIFtjbGFzcy50ZXh0LWVuZF09XCJjb2wudHlwZSA9PSAnbnVtYmVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sLmZpZWxkICE9ICdpc19hY3RpdmUnOyBlbHNlIHJlbmRlcklzQWN0aXZlXCIgW2lubmVySFRNTF09XCJyZWdpc3RlcnNbaV1bKGNvbC5maWVsZCA9PSBudWxsIHx8IGNvbC5maWVsZCA9PSAnJyA/IG9iamVjdEtleXMocmVnaXN0ZXIpW2pdIDogY29sLmZpZWxkKV1cIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyZW5kZXJJc0FjdGl2ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF0dHIuZGF0YS1pZD1cImJveC1pcy1hY3RpdmUte3sgZGF0YUlkIH19LXt7IGkgfX1cIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIiBbbmdNb2RlbF09XCJyZWdpc3RlcnNbaV1bY29sLmZpZWxkXVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQWN0aW9uQ2xpY2soe3R5cGU6ICdjaGFuZ2VJc0FjdGl2ZScsIGRhdGE6ICRldmVudCwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cInRleHQtbm93cmFwXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZWRpdD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kZWxldGU/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5sb2dpbkFzPy5hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZWRpdC1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVkaXQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZWRpdD8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdlZGl0JyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVkaXQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJkZWxldGUtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5sb2FkaW5nIHx8IHJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdkZWxldGUnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImVuYWJsZS1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZW5hYmxlZD8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZW5hYmxlZD8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdlbmFibGVkJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZW5hYmxlZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRpc2FibGUtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kaXNhYmxlZD8uYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kaXNhYmxlZD8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdkaXNhYmxlZCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kaXNhYmxlZD8ubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kaXNhYmxlZD8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImxvZ2luLWFzLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8uYWN0aXZlXCIgW2Rpc2FibGVkXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5sb2dpbkFzPy5sb2FkaW5nIHx8IHJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5sb2dpbkFzPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0xXCIgW2NsYXNzLmJ0bi1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2xvZ2luQXMnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8ubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5sb2dpbkFzPy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgPC90YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInBvc2l0aW9uLXN0aWNreSBib3R0b20tMCBiZy13aGl0ZVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5wYWdpbmF0aW9uQWN0aXZlICYmIGNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemUgPiAwXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIGJvcmRlci10b3AgcHQtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTZcIj5cclxuICAgICAgICAgICAgICAgIDxuZ2ItcGFnaW5hdGlvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtwYWdlU2l6ZV09XCJjb25maWdzUmVuZGVyLnBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvblNpemVdPVwiY29uZmlnc1JlbmRlci5jb2xsZWN0aW9uU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgWyhwYWdlKV09XCJjb25maWdzUmVuZGVyLnBhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgIFttYXhTaXplXT1cIjVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyb3RhdGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2JvdW5kYXJ5TGlua3NdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2VsbGlwc2VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uTnVtYmVyIGxldC1wYWdlPjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2Ute3sgZGF0YUlkIH19LXt7IHBhZ2UgfX1cIj57eyBwYWdlIH19PC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25GaXJzdD48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLWZpcnN0LXt7IGRhdGFJZCB9fVwiPsKrwqs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbkxhc3Q+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1sYXN0LXt7IGRhdGFJZCB9fVwiPsK7wrs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvblByZXZpb3VzPjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2UtcHJldml1cy17eyBkYXRhSWQgfX1cIj7Cqzwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uTmV4dD48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLW5leHQte3sgZGF0YUlkIH19XCI+wrs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvbmdiLXBhZ2luYXRpb24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTNcIj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LXRhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtdGFibGUvc3JjL2xpYi9uZ3gtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXhwZXJ0ZWFtLW14L25neC10YWJsZS9zcmMvbGliL25neC10YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBaUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRW5ILE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBOzs7Ozs7O0FBT2xFLE1BQU0sT0FBTyxpQkFBaUI7SUFxQm5CO0lBcEJBLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDN0IsYUFBYSxHQUFVLEVBQUUsQ0FBQztJQUVqQixTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQy9CLGVBQWUsR0FBVSxFQUFFLENBQUM7SUFFbkIsT0FBTyxDQUFNO0lBQ3RCLGFBQWEsR0FBUSxFQUFFLENBQUM7SUFFZCxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN4QyxVQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUUxQixjQUFjLENBQU07SUFFNUMsTUFBTSxDQUFLO0lBQ1gsY0FBYyxDQUFLO0lBRVgsVUFBVSxHQUFHLElBQUksT0FBTyxFQUFVLENBQUE7SUFFMUMsWUFDUyxnQkFBaUM7UUFBakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUV4QyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQTtRQUVyQyxJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLE9BQU8sRUFBRSxL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QUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3pFLENBQUM7WUFFRCxJQUFJLEdBQUcsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3BFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzt3R0FsWlUsaUJBQWlCOzRGQUFqQixpQkFBaUIsZ1VDVDlCLDg2ZEEySkE7OzRGRGxKYSxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0UsV0FBVztvRkFLWixPQUFPO3NCQUFmLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUVpQixjQUFjO3NCQUFyQyxTQUFTO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcbmltcG9ydCB7IE5neFRhYmxlU2VydmljZSB9IGZyb20gJy4vbmd4LXRhYmxlLnNlcnZpY2UnXHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIFN1YmplY3QgfSBmcm9tICdyeGpzJ1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZ3gtdGFibGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZ3gtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25neC10YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3hUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBoZWFkUm93OiBhbnlbXSA9IFtdO1xyXG4gIGhlYWRSb3dSZW5kZXI6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIHJlZ2lzdGVyczogYW55W10gPSBbXTtcclxuICByZWdpc3RlcnNSZW5kZXI6IGFueVtdID0gW107XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ3M6IGFueTtcclxuICBjb25maWdzUmVuZGVyOiBhbnkgPSB7fTtcclxuXHJcbiAgQE91dHB1dCgpIGNoYW5nZVBhZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcclxuICBAT3V0cHV0KCkgY2xpY2tFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdzZWxlY3RBbGwnKSBjaGVja1NlbGVjdEFsbDogYW55O1xyXG5cclxuICBkYXRhSWQ6IGFueVxyXG4gIGNvbmZpZ3NEZWZhdWx0OiBhbnlcclxuXHJcbiAgcHJpdmF0ZSBzZWFyY2hUZXJtID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIF9OZ3hUYWJsZVNlcnZpY2U6IE5neFRhYmxlU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5kYXRhSWQgPSBfTmd4VGFibGVTZXJ2aWNlLmRhdGFJZFxyXG5cclxuICAgIHRoaXMuY29uZmlnc0RlZmF1bHQgPSB7XHJcbiAgICAgIHRpdGxlVGFibGU6IG51bGwsXHJcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICBwYWdpbmF0aW9uQWN0aXZlOiBmYWxzZSxcclxuICAgICAgcGFnZTogMSxcclxuICAgICAgcGFnZVNpemU6IDE1LFxyXG4gICAgICBjb2xsZWN0aW9uU2l6ZTogMCxcclxuICAgICAgdGFibGVTaXplOiAnbm9ybWFsJyxcclxuICAgICAgbGFiZWxzOiB7XHJcbiAgICAgICAgbm9SZWdpc3RlcnM6ICdSZWdpc3RlcnMgbm8gZm91bmQnLFxyXG4gICAgICAgIHRvb2x0aXBzOntcclxuICAgICAgICAgIC4uLnRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwc1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAgc2VhcmNoOiB7XHJcbiAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICB0ZXh0U2VhcmNoOiAnJyxcclxuICAgICAgICBwbGFjZWhvbGRlclNlYXJjaDogJ1NlYXJjaCdcclxuICAgICAgfSxcclxuICAgICAgb3JkZXI6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICAgIGFzYzogZmFsc2VcclxuICAgICAgfSxcclxuICAgICAgYWN0aW9uczoge1xyXG4gICAgICAgIGFkZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgc2VsZWN0OiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBlZGl0OiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZWxldGU6IHtcclxuICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBsYWJlbEh0bWw6IG51bGwsXHJcbiAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW5hYmxlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkaXNhYmxlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBsb2dpbkFzOiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNoZWNrOiB7XHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgY2hlY2tlZDogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuYWJsZVNlbGVjdGVkOiB7XHJcbiAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgICAgbGFiZWxIdG1sOiBudWxsLFxyXG4gICAgICAgICAgbG9hZGluZzogZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGRpc2FibGVTZWxlY3RlZDoge1xyXG4gICAgICAgICAgYWN0aXZlOiBmYWxzZSxcclxuICAgICAgICAgIGxhYmVsSHRtbDogbnVsbCxcclxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgY29sSGVhZDoge1xyXG4gICAgICAgIGxhYmVsOiBudWxsLFxyXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxyXG4gICAgICAgIGZpZWxkOiBudWxsLFxyXG4gICAgICAgIG9yZGVyOiB7XHJcbiAgICAgICAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgICBhc2M6IGZhbHNlXHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBlbmFibGVBbGw6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogJ0VuYWJsZSBhbGwnXHJcbiAgICAgIH0sXHJcbiAgICAgIGRpc2FibGVBbGw6IHtcclxuICAgICAgICBhY3RpdmU6IGZhbHNlLFxyXG4gICAgICAgIGRpc2FibGVkOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsSHRtbDogJ0Rpc2FibGUgYWxsJ1xyXG4gICAgICB9LFxyXG4gICAgICBzYXZlQ2hhbmdlczoge1xyXG4gICAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgbGFiZWxIdG1sOiAnU2F2ZSBjaGFuZ2VzJyxcclxuICAgICAgICBsb2FkaW5nOiBmYWxzZVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQgKCk6IHZvaWQge1xyXG4gICAgdGhpcy5yZW5kZXIoKVxyXG5cclxuICAgIHRoaXMuX05neFRhYmxlU2VydmljZS5vbkNoYW5nZVRvb2x0aXBzLnN1YnNjcmliZShcclxuICAgICAgKHN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuXHJcbiAgICB0aGlzLnNlYXJjaFRlcm1cclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDMwMCksXHJcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub25QYWdlQ2hhbmdlKClcclxuICAgICAgfSlcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzIChjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlbmRlcigpXHJcbiAgfVxyXG5cclxuICBvYmplY3RLZXlzKHJlZ2lzdGVyczogYW55KSB7XHJcbiAgICBsZXQgcmVnaXN0cm9zID0gW107XHJcblxyXG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKHJlZ2lzdGVycykpIHtcclxuICAgICAgaWYgKGtleSAhPSAnY29uZmlnUmVnaXN0ZXInKSB7XHJcbiAgICAgICAgcmVnaXN0cm9zLnB1c2goa2V5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWdpc3Ryb3M7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLmNvbmZpZ3MgPSB0aGlzLmNvbmZpZ3NSZW5kZXI7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQoe1xyXG4gICAgICAuLi50aGlzLmNvbmZpZ3NSZW5kZXJcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25LZXlTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFRlcm0ubmV4dCh0aGlzLmNvbmZpZ3NSZW5kZXIuc2VhcmNoLnRleHRTZWFyY2gpXHJcbiAgfVxyXG5cclxuICBvblJlc3RhclNlYWNoKCkge1xyXG4gICAgdGhpcy5jb25maWdzUmVuZGVyLnNlYXJjaC50ZXh0U2VhcmNoID0gJyc7XHJcbiAgICB0aGlzLmNvbmZpZ3MgPSB0aGlzLmNvbmZpZ3NSZW5kZXI7XHJcblxyXG4gICAgdGhpcy5jaGFuZ2VQYWdlLmVtaXQoe1xyXG4gICAgICAuLi50aGlzLmNvbmZpZ3NSZW5kZXJcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMub25BY3Rpb25DbGljayh7XHJcbiAgICAgIHR5cGU6ICdjbGVhcidcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25BY3Rpb25DbGljayhvYmplY3Q6IGFueSkge1xyXG4gICAgb2JqZWN0LmV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgb2JqZWN0LmV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICB0aGlzLmNsaWNrRXZlbnQuZW1pdCh7XHJcbiAgICAgIHR5cGU6IG9iamVjdC50eXBlLFxyXG4gICAgICBkYXRhOiBvYmplY3QuZGF0YSxcclxuICAgICAgaW5kZXg6IG9iamVjdC5pbmRleFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICB0aGlzLmhlYWRSb3dSZW5kZXIgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBoZWFkIG9mIHRoaXMuaGVhZFJvdykge1xyXG4gICAgICB0aGlzLmhlYWRSb3dSZW5kZXIucHVzaCh7XHJcbiAgICAgICAgLi4udGhpcy5jb25maWdzRGVmYXVsdC5jb2xIZWFkLFxyXG4gICAgICAgIC4uLmhlYWQsXHJcbiAgICAgICAgb3JkZXI6IHtcclxuICAgICAgICAgIC4uLnRoaXMuY29uZmlnc0RlZmF1bHQuY29sSGVhZC5vcmRlcixcclxuICAgICAgICAgIC4uLmhlYWQub3JkZXJcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlnc1JlbmRlciA9IHtcclxuICAgICAgdGl0bGVUYWJsZTogdGhpcy5jb25maWdzRGVmYXVsdC50aXRsZVRhYmxlLFxyXG4gICAgICBsb2FkaW5nOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmxvYWRpbmcsXHJcbiAgICAgIHBhZ2luYXRpb25BY3RpdmU6IHRoaXMuY29uZmlnc0RlZmF1bHQucGFnaW5hdGlvbkFjdGl2ZSxcclxuICAgICAgcGFnZTogdGhpcy5jb25maWdzRGVmYXVsdC5wYWdlLFxyXG4gICAgICBwYWdlU2l6ZTogdGhpcy5jb25maWdzRGVmYXVsdC5wYWdlU2l6ZSxcclxuICAgICAgY29sbGVjdGlvblNpemU6IHRoaXMuY29uZmlnc0RlZmF1bHQuY29sbGVjdGlvblNpemUsXHJcbiAgICAgIHRhYmxlU2l6ZTogdGhpcy5jb25maWdzRGVmYXVsdC50YWJsZVNpemUsXHJcbiAgICAgIGxhYmVsczogdGhpcy5jb25maWdzRGVmYXVsdC5sYWJlbHMsXHJcbiAgICAgIHNlYXJjaDogdGhpcy5jb25maWdzRGVmYXVsdC5zZWFyY2gsXHJcbiAgICAgIG9yZGVyOiB0aGlzLmNvbmZpZ3NEZWZhdWx0Lm9yZGVyLFxyXG4gICAgICBhY3Rpb25zOiB0aGlzLmNvbmZpZ3NEZWZhdWx0LmFjdGlvbnMsXHJcbiAgICAgIC4uLnRoaXMuY29uZmlnc1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiggIXRoaXMuY29uZmlncy5sYWJlbHMgKXtcclxuICAgICAgdGhpcy5jb25maWdzLmxhYmVscyA9IHt9XHJcbiAgICB9XHJcblxyXG4gICAgaWYoICF0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzICl7XHJcbiAgICAgIHRoaXMuY29uZmlncy5sYWJlbHMudG9vbHRpcHMgPSB7fVxyXG4gICAgfVxyXG5cclxuICAgIGlmKCAhdGhpcy5jb25maWdzLmxhYmVscy50b29sdGlwcy5jbGVhclNlYXJjaCApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gJydcclxuICAgIH1cclxuICAgIGlmKCB0aGlzLmNvbmZpZ3MubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID09ICcnIHx8IHRoaXMuY29uZmlnc0RlZmF1bHQubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoICE9IHRoaXMuX05neFRhYmxlU2VydmljZS50b29sdGlwcy5jbGVhclNlYXJjaCApe1xyXG4gICAgICB0aGlzLmNvbmZpZ3NSZW5kZXIubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gdGhpcy5fTmd4VGFibGVTZXJ2aWNlLnRvb2x0aXBzLmNsZWFyU2VhcmNoXHJcbiAgICAgIHRoaXMuY29uZmlnc0RlZmF1bHQubGFiZWxzLnRvb2x0aXBzLmNsZWFyU2VhcmNoID0gdGhpcy5fTmd4VGFibGVTZXJ2aWNlLnRvb2x0aXBzLmNsZWFyU2VhcmNoXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRDb25maWdzRGVmYXVsdCgnZW5hYmxlQWxsJyk7XHJcbiAgICB0aGlzLnNldENvbmZpZ3NEZWZhdWx0KCdkaXNhYmxlQWxsJyk7XHJcbiAgICB0aGlzLnNldENvbmZpZ3NEZWZhdWx0KCdzYXZlQ2hhbmdlcycpO1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJzUmVuZGVyID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgdGhpcy5yZWdpc3RlcnMpIHtcclxuICAgICAgdGhpcy5yZWdpc3RlcnNSZW5kZXIucHVzaCh7XHJcbiAgICAgICAgLi4ucmVnaXN0ZXIsXHJcbiAgICAgICAgY29uZmlnUmVnaXN0ZXI6IHtcclxuICAgICAgICAgIGFjdGlvbnM6IHtcclxuICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMsXHJcbiAgICAgICAgICAgIGxvZ2luQXM6IHtcclxuICAgICAgICAgICAgICAuLi50aGlzLmNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5sb2dpbkFzXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNoZWNrOiB7XHJcbiAgICAgICAgICAgICAgLi4udGhpcy5jb25maWdzUmVuZGVyLmFjdGlvbnMuY2hlY2tcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLi4ucmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGU6IGFueSkge1xyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHNldFNlbGVjdEFsbCgpIHtcclxuICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgbGV0IGNvbnRDaGVjayA9IHRoaXMuZ2V0U2VsZWN0ZWRQaWNlcygpO1xyXG5cclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgaWYgKHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZC5sZW5ndGggPT0gMCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZC5sZW5ndGggPT0gY29udENoZWNrKSB7XHJcbiAgICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5jaGVja2VkID0gdHJ1ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChjb250Q2hlY2sgIT0gMCkge1xyXG4gICAgICAgIHRoaXMuY2hlY2tTZWxlY3RBbGwubmF0aXZlRWxlbWVudC5pbmRldGVybWluYXRlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25BY3Rpb25DbGljayh7XHJcbiAgICAgIHR5cGU6ICdjaGVja2VkJyxcclxuICAgICAgZGF0YTogdGhpcy5jaGVja2VkUmVnaXN0ZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VsZWN0ZWRQaWNlcygpIHtcclxuICAgIGxldCBjb250Q2hlY2sgPSAwO1xyXG4gICAgbGV0IHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCA9IHRoaXMucmVnaXN0ZXJzUmVuZGVyLmZpbHRlcigoZWxlbWVudCk9PntcclxuICAgICAgcmV0dXJuICFlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suZGlzYWJsZWQgJiYgZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVxyXG4gICAgfSlcclxuXHJcbiAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgY29udENoZWNrICs9IChyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPyAxIDogMCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNvbnRDaGVjaztcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlU2VsZWN0QWxsKCkge1xyXG4gICAgbGV0IHJlZ2lzdGVyQ2hlY2tzRW5hYmxlZCA9IHRoaXMucmVnaXN0ZXJzUmVuZGVyLmZpbHRlcigoZWxlbWVudCk9PntcclxuICAgICAgcmV0dXJuICFlbGVtZW50LmNvbmZpZ1JlZ2lzdGVyLmFjdGlvbnMuY2hlY2suZGlzYWJsZWQgJiYgZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVxyXG4gICAgfSlcclxuICAgIGlmICh0aGlzLmNoZWNrU2VsZWN0QWxsLm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xyXG4gICAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgICByZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmb3IgKGxldCByZWdpc3RlciBvZiByZWdpc3RlckNoZWNrc0VuYWJsZWQpIHtcclxuICAgICAgICByZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25BY3Rpb25DbGljayh7XHJcbiAgICAgIHR5cGU6ICdjaGVja2VkJyxcclxuICAgICAgZGF0YTogdGhpcy5jaGVja2VkUmVnaXN0ZXJzKClcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hlY2tlZFJlZ2lzdGVycygpIHtcclxuICAgIGxldCBjaGVja2VkUmVnaXN0ZXIgPSBbXTtcclxuICAgIGxldCByZWdpc3RlckNoZWNrc0VuYWJsZWQgPSB0aGlzLnJlZ2lzdGVyc1JlbmRlci5maWx0ZXIoKGVsZW1lbnQpPT57XHJcbiAgICAgIHJldHVybiAhZWxlbWVudC5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkICYmIGVsZW1lbnQuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5hY3RpdmVcclxuICAgIH0pXHJcblxyXG4gICAgZm9yIChsZXQgcmVnaXN0ZXIgb2YgcmVnaXN0ZXJDaGVja3NFbmFibGVkKSB7XHJcbiAgICAgIGlmIChyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmNoZWNrZWQpIHtcclxuICAgICAgICBjaGVja2VkUmVnaXN0ZXIucHVzaCh7XHJcbiAgICAgICAgICAuLi5yZWdpc3RlclxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGNoZWNrZWRSZWdpc3RlcjtcclxuICB9XHJcblxyXG4gIGFjdGl2ZU9yZGVyKGNvbmZpZzogYW55KSB7XHJcbiAgICBmb3IgKGxldCBoZWFkIG9mIHRoaXMuaGVhZFJvd1JlbmRlcikge1xyXG4gICAgICBpZiAoaGVhZC5maWVsZCA9PSBjb25maWcuZmllbGQpIHtcclxuICAgICAgICBoZWFkLm9yZGVyLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgaGVhZC5vcmRlci5hc2MgPSBjb25maWcuYXNjO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGhlYWQub3JkZXIuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uT3JkZXJDaGFuZ2UoY29uZmlnOiBhbnkpIHtcclxuICAgIHRoaXMuYWN0aXZlT3JkZXIoe1xyXG4gICAgICBmaWVsZDogY29uZmlnLmZpZWxkLFxyXG4gICAgICBhc2M6IGNvbmZpZy5hc2NcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY2xpY2tFdmVudC5lbWl0KHtcclxuICAgICAgdHlwZTogJ29yZGVyJyxcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkOiBjb25maWcuZmllbGQsXHJcbiAgICAgICAgYXNjOiBjb25maWcuYXNjXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2V0Q29uZmlnc0RlZmF1bHQoa2V5OiBzdHJpbmcpIHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmFjdGl2ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0uYWN0aXZlID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmFjdGl2ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmRpc2FibGVkID09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmNvbmZpZ3NSZW5kZXJba2V5XS5kaXNhYmxlZCA9IHRoaXMuY29uZmlnc0RlZmF1bHRba2V5XS5kaXNhYmxlZDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxhYmVsSHRtbCA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb25maWdzUmVuZGVyW2tleV0ubGFiZWxIdG1sID0gdGhpcy5jb25maWdzRGVmYXVsdFtrZXldLmxhYmVsSHRtbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGtleSA9PSAnc2F2ZUNoYW5nZXMnICYmIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxvYWRpbmcgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuY29uZmlnc1JlbmRlcltrZXldLmxvYWRpbmcgPSB0aGlzLmNvbmZpZ3NEZWZhdWx0W2tleV0ubG9hZGluZztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgICA8aDMgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci50aXRsZVRhYmxlICE9IG51bGxcIj57eyBjb25maWdzUmVuZGVyLnRpdGxlVGFibGUgfX08L2gzPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtZW5kIG1iLTJcIiAqbmdJZj1cIihjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuc2VhcmNoLmFjdGl2ZVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIiAqbmdJZj1cIihjb25maWdzUmVuZGVyLmFjdGlvbnMuZW5hYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgKGNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmFjdGl2ZSkgfHwgY29uZmlnc1JlbmRlci5lbmFibGVBbGwuYWN0aXZlIHx8IGNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmFkZD8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZW5hYmxlLXNlbGVjdGVkLXt7IGRhdGFJZCB9fVwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5sb2FkaW5nIHx8IGNoZWNrZWRSZWdpc3RlcnMoKS5sZW5ndGggPT0gMFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteC0xXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsdHlwZTogJ2VuYWJsZVNlbGVjdGVkJywgZGF0YTogY2hlY2tlZFJlZ2lzdGVycygpfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZVNlbGVjdGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5lbmFibGVTZWxlY3RlZC5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImRpc2FibGUtc2VsZWN0ZWQte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmRpc2FibGVTZWxlY3RlZD8ubG9hZGluZyB8fCBjaGVja2VkUmVnaXN0ZXJzKCkubGVuZ3RoID09IDBcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdkaXNhYmxlU2VsZWN0ZWQnLCBkYXRhOiBjaGVja2VkUmVnaXN0ZXJzKCl9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZVNlbGVjdGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5kaXNhYmxlU2VsZWN0ZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZW5hYmxlLWFsbC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuZW5hYmxlQWxsLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2VzcyBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuZW5hYmxlQWxsLmRpc2FibGVkXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdlbmFibGVBbGwnfSlcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5lbmFibGVBbGwubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJkaXNhYmxlLWFsbC17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5hY3RpdmVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlciBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuZGlzYWJsZUFsbC5kaXNhYmxlZFwiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LCB0eXBlOiAnZGlzYWJsZUFsbCd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb25maWdzUmVuZGVyLmRpc2FibGVBbGwubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJzYXZlLWNoYW5nZXMte3sgZGF0YUlkIH19XCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmFjdGl2ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBteC0xXCIgW2Rpc2FibGVkXT1cImNvbmZpZ3NSZW5kZXIuc2F2ZUNoYW5nZXMuZGlzYWJsZWQgfHwgY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5sb2FkaW5nXCIgKGNsaWNrKT1cIm9uQWN0aW9uQ2xpY2soe2V2ZW50OiAkZXZlbnQsIHR5cGU6ICdzYXZlQ2hhbmdlcyd9KVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb25maWdzUmVuZGVyLnNhdmVDaGFuZ2VzLmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY29uZmlnc1JlbmRlci5zYXZlQ2hhbmdlcy5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImFkZC1yZWdpc3Rlci17eyBkYXRhSWQgfX1cIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5hZGQ/LmFjdGl2ZVwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LCB0eXBlOiAnYWRkJ30pXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5hZGQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0zXCIgKm5nSWY9XCJjb25maWdzUmVuZGVyLnNlYXJjaC5hY3RpdmVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IChpbnB1dCk9XCJvbktleVNlYXJjaCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb25maWdzUmVuZGVyLnNlYXJjaC50ZXh0U2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImNvbmZpZ3NSZW5kZXIuc2VhcmNoLnBsYWNlaG9sZGVyU2VhcmNoICE9IHVuZGVmaW5lZCA/IGNvbmZpZ3NSZW5kZXIuc2VhcmNoLnBsYWNlaG9sZGVyU2VhcmNoIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtaWQ9XCJpbnB1dC1zZWFyY2gte3sgZGF0YUlkIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgICBtYXhsZW5ndGg9XCIyNTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiLz5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwicmVzdGFydC1zZWFyY2gte3sgZGF0YUlkIH19XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUmVzdGFyU2VhY2goKVwiIFtuZ2JUb29sdGlwXT1cImNvbmZpZ3NSZW5kZXIubGFiZWxzPy50b29sdGlwcz8uY2xlYXJTZWFyY2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImJpIGJpLWFycm93LWNvdW50ZXJjbG9ja3dpc2VcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxuZ3gtc2tlbGV0b24tbG9hZGVyICpuZ0lmPVwiY29uZmlnc1JlbmRlci5sb2FkaW5nXCIgY291bnQ9XCI1XCI+PC9uZ3gtc2tlbGV0b24tbG9hZGVyPlxyXG4gICAgPHAgKm5nSWY9XCIhY29uZmlnc1JlbmRlci5sb2FkaW5nICYmIGNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemUgPT0gMFwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIj57eyBjb25maWdzUmVuZGVyLmxhYmVscy5ub1JlZ2lzdGVycyB9fTwvcD5cclxuICAgIDxkaXYgKm5nSWY9XCIhY29uZmlnc1JlbmRlci5sb2FkaW5nICYmIGNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemUgPiAwXCIgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCB0YWJsZS1ib3JkZXJlZFwiIFtjbGFzcy50YWJsZS1zbV09XCJjb25maWdzUmVuZGVyLnRhYmxlU2l6ZSA9PSAnc21hbGwnXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmNoZWNrPy5hY3RpdmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGF0dHIuZGF0YS1pZD1cImJveC1zZWxlY3QtYWxsLXt7IGRhdGFJZCB9fVwiICNzZWxlY3RBbGwgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJvbkNoYW5nZVNlbGVjdEFsbCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBoZWFkUm93UmVuZGVyXCIgW2NsYXNzLnBvaW50ZXJdPVwiY29sLm9yZGVyLnZpc2libGVcIiAoY2xpY2spPVwiKCBjb2wub3JkZXIudmlzaWJsZSA/IG9uT3JkZXJDaGFuZ2UoeyBmaWVsZDogY29sLmZpZWxkLCBhc2M6ICggY29sLm9yZGVyLmFjdGl2ZSA/ICFjb2wub3JkZXIuYXNjIDogdHJ1ZSApIH0pIDogcmV0dXJuIClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjb2wubGFiZWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLm9yZGVyLnZpc2libGUgJiYgY29sLm9yZGVyLmFjdGl2ZSAmJiAhY29sLm9yZGVyLmFzY1wiIGNsYXNzPVwiYmkgYmktY2hldnJvbi1kb3duIG1zLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiY29sLm9yZGVyLnZpc2libGUgJiYgY29sLm9yZGVyLmFjdGl2ZSAmJiBjb2wub3JkZXIuYXNjXCIgY2xhc3M9XCJiaSBiaS1jaGV2cm9uLXVwIG1zLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjb2wtY29tcGFjdFwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVkaXQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGVsZXRlPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bcz8uYWN0aXZlXCI+PC90aD5cclxuICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJlZ2lzdGVyIG9mIHJlZ2lzdGVyc1JlbmRlcjsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBhdHRyLmRhdGEtaWQ9XCJzZWxlY3QtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiBbY2xhc3MucG9pbnRlcl09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uc2VsZWN0Py5hY3RpdmVcIiAoY2xpY2spPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LnNlbGVjdD8uYWN0aXZlID8gb25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnc2VsZWN0JyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KTpyZXR1cm5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIuYWN0aW9ucy5jaGVjaz8uYWN0aXZlXCIgKGNsaWNrKT1cInN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlci5hY3Rpb25zLmNoZWNrLmRpc2FibGVkXCIgYXR0ci5kYXRhLWlkPVwiYm94LXNlbGVjdC1yZWdpc3Rlci17eyBkYXRhSWQgfX0te3sgaSB9fVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiIFsobmdNb2RlbCldPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXIuYWN0aW9ucy5jaGVjay5jaGVja2VkXCIgKGNoYW5nZSk9XCJzZXRTZWxlY3RBbGwoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGhlYWRSb3dSZW5kZXI7IGxldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBbY2xhc3MudGV4dC1lbmRdPVwiY29sLnR5cGUgPT0gJ251bWJlcidcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbC5maWVsZCAhPSAnaXNfYWN0aXZlJzsgZWxzZSByZW5kZXJJc0FjdGl2ZVwiIFtpbm5lckhUTUxdPVwicmVnaXN0ZXJzW2ldWyhjb2wuZmllbGQgPT0gbnVsbCB8fCBjb2wuZmllbGQgPT0gJycgPyBvYmplY3RLZXlzKHJlZ2lzdGVyKVtqXSA6IGNvbC5maWVsZCldXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVuZGVySXNBY3RpdmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBhdHRyLmRhdGEtaWQ9XCJib3gtaXMtYWN0aXZlLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCIgW25nTW9kZWxdPVwicmVnaXN0ZXJzW2ldW2NvbC5maWVsZF1cIiAobmdNb2RlbENoYW5nZSk9XCJvbkFjdGlvbkNsaWNrKHt0eXBlOiAnY2hhbmdlSXNBY3RpdmUnLCBkYXRhOiAkZXZlbnQsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiICpuZ0lmPVwiY29uZmlnc1JlbmRlci5hY3Rpb25zLmVkaXQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGVsZXRlPy5hY3RpdmUgfHwgY29uZmlnc1JlbmRlci5hY3Rpb25zLmVuYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMuZGlzYWJsZWQ/LmFjdGl2ZSB8fCBjb25maWdzUmVuZGVyLmFjdGlvbnMubG9naW5Bcz8uYWN0aXZlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGF0dHIuZGF0YS1pZD1cImVkaXQtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lZGl0Py5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVkaXQ/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZWRpdCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lZGl0Py5sYWJlbEh0bWxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gYXR0ci5kYXRhLWlkPVwiZGVsZXRlLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGVsZXRlPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZGVsZXRlJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRlbGV0ZT8ubG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc21cIiByb2xlPVwic3RhdHVzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZpc3VhbGx5LWhpZGRlblwiPkxvYWRpbmcuLi48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5kZWxldGU/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJlbmFibGUtcmVnaXN0ZXIte3sgZGF0YUlkIH19LXt7IGkgfX1cIiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5hY3RpdmVcIiBbZGlzYWJsZWRdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmRpc2FibGVkXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZW5hYmxlZCcsZGF0YTogcmVnaXN0ZXIsIGluZGV4OiBpfSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInJlZ2lzdGVyLmNvbmZpZ1JlZ2lzdGVyPy5hY3Rpb25zPy5lbmFibGVkPy5sb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmlzdWFsbHktaGlkZGVuXCI+TG9hZGluZy4uLjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmVuYWJsZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJkaXNhYmxlLXJlZ2lzdGVyLXt7IGRhdGFJZCB9fS17eyBpIH19XCIgKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxvYWRpbmcgfHwgcmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmRpc2FibGVkPy5kaXNhYmxlZFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIG14LTFcIiBbY2xhc3MuYnRuLXNtXT1cImNvbmZpZ3NSZW5kZXIudGFibGVTaXplID09ICdzbWFsbCdcIiAoY2xpY2spPVwib25BY3Rpb25DbGljayh7ZXZlbnQ6ICRldmVudCx0eXBlOiAnZGlzYWJsZWQnLGRhdGE6IHJlZ2lzdGVyLCBpbmRleDogaX0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8uZGlzYWJsZWQ/LmxhYmVsSHRtbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBhdHRyLmRhdGEtaWQ9XCJsb2dpbi1hcy17eyBkYXRhSWQgfX0te3sgaSB9fVwiICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmFjdGl2ZVwiIFtkaXNhYmxlZF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8ubG9hZGluZyB8fCByZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8uZGlzYWJsZWRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXgtMVwiIFtjbGFzcy5idG4tc21dPVwiY29uZmlnc1JlbmRlci50YWJsZVNpemUgPT0gJ3NtYWxsJ1wiIChjbGljayk9XCJvbkFjdGlvbkNsaWNrKHtldmVudDogJGV2ZW50LHR5cGU6ICdsb2dpbkFzJyxkYXRhOiByZWdpc3RlciwgaW5kZXg6IGl9KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicmVnaXN0ZXIuY29uZmlnUmVnaXN0ZXI/LmFjdGlvbnM/LmxvZ2luQXM/LmxvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2aXN1YWxseS1oaWRkZW5cIj5Mb2FkaW5nLi4uPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJyZWdpc3Rlci5jb25maWdSZWdpc3Rlcj8uYWN0aW9ucz8ubG9naW5Bcz8ubGFiZWxIdG1sXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1zdGlja3kgYm90dG9tLTAgYmctd2hpdGVcIiAqbmdJZj1cImNvbmZpZ3NSZW5kZXIucGFnaW5hdGlvbkFjdGl2ZSAmJiBjb25maWdzUmVuZGVyLmNvbGxlY3Rpb25TaXplID4gMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cganVzdGlmeS1jb250ZW50LWVuZCBib3JkZXItdG9wIHB0LTJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgICA8bmdiLXBhZ2luYXRpb25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICBbcGFnZVNpemVdPVwiY29uZmlnc1JlbmRlci5wYWdlU2l6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25TaXplXT1cImNvbmZpZ3NSZW5kZXIuY29sbGVjdGlvblNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFsocGFnZSldPVwiY29uZmlnc1JlbmRlci5wYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbWF4U2l6ZV09XCI1XCJcclxuICAgICAgICAgICAgICAgICAgICBbcm90YXRlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtib3VuZGFyeUxpbmtzXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtlbGxpcHNlc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbk51bWJlciBsZXQtcGFnZT48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLXt7IGRhdGFJZCB9fS17eyBwYWdlIH19XCI+e3sgcGFnZSB9fTwvc3Bhbj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBuZ2JQYWdpbmF0aW9uRmlyc3Q+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1maXJzdC17eyBkYXRhSWQgfX1cIj7Cq8KrPC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25MYXN0PjxzcGFuIGF0dHIuZGF0YS1pZD1cInBhZ2UtbGFzdC17eyBkYXRhSWQgfX1cIj7Cu8K7PC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIG5nYlBhZ2luYXRpb25QcmV2aW91cz48c3BhbiBhdHRyLmRhdGEtaWQ9XCJwYWdlLXByZXZpdXMte3sgZGF0YUlkIH19XCI+wqs8L3NwYW4+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbmdiUGFnaW5hdGlvbk5leHQ+PHNwYW4gYXR0ci5kYXRhLWlkPVwicGFnZS1uZXh0LXt7IGRhdGFJZCB9fVwiPsK7PC9zcGFuPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nYi1wYWdpbmF0aW9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0zXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, EventEmitter, Component, Input, Output, ViewChild, NgModule } from '@angular/core';
3
- import { BehaviorSubject, debounceTime, distinctUntilChanged } from 'rxjs';
3
+ import { BehaviorSubject, Subject, debounceTime, distinctUntilChanged } from 'rxjs';
4
4
  import * as i2 from '@angular/common';
5
5
  import * as i3 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
@@ -50,7 +50,7 @@ class NgxTableComponent {
50
50
  checkSelectAll;
51
51
  dataId;
52
52
  configsDefault;
53
- searchTerm = new BehaviorSubject('');
53
+ searchTerm = new Subject();
54
54
  constructor(_NgxTableService) {
55
55
  this._NgxTableService = _NgxTableService;
56
56
  this.dataId = _NgxTableService.dataId;
@@ -160,6 +160,22 @@ class NgxTableComponent {
160
160
  }
161
161
  };
162
162
  }
163
+ ngOnInit() {
164
+ this.render();
165
+ this._NgxTableService.onChangeTooltips.subscribe((status) => {
166
+ if (status) {
167
+ this.render();
168
+ }
169
+ });
170
+ this.searchTerm
171
+ .pipe(debounceTime(300), distinctUntilChanged())
172
+ .subscribe(() => {
173
+ this.onPageChange();
174
+ });
175
+ }
176
+ ngOnChanges(changes) {
177
+ this.render();
178
+ }
163
179
  objectKeys(registers) {
164
180
  let registros = [];
165
181
  for (let key of Object.keys(registers)) {
@@ -351,25 +367,6 @@ class NgxTableComponent {
351
367
  }
352
368
  });
353
369
  }
354
- ngOnInit() {
355
- this.render();
356
- this._NgxTableService.onChangeTooltips.subscribe((status) => {
357
- if (status) {
358
- this.render();
359
- }
360
- });
361
- this.searchTerm
362
- .pipe(debounceTime(300), distinctUntilChanged())
363
- .subscribe(() => {
364
- this.configs = this.configsRender;
365
- this.changePage.emit({
366
- ...this.configsRender
367
- });
368
- });
369
- }
370
- ngOnChanges(changes) {
371
- this.render();
372
- }
373
370
  setConfigsDefault(key) {
374
371
  if (this.configsRender[key] == null) {
375
372
  this.configsRender[key] = this.configsDefault[key];
@@ -1 +1 @@
1
- {"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.service.ts","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.component.ts","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.component.html","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.module.ts","../../../../projects/experteam-mx/ngx-table/src/public-api.ts","../../../../projects/experteam-mx/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'\r\nimport { NgxTableService } from './ngx-table.service'\r\nimport { BehaviorSubject, debounceTime, distinctUntilChanged } from 'rxjs'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n dataId: any\r\n configsDefault: any\r\n\r\n private searchTerm = new BehaviorSubject<string>('')\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n\r\n this.configsDefault = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.searchTerm.next(this.configsRender.search.textSearch)\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n\r\n this.onActionClick({\r\n type: 'clear'\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels ){\r\n this.configs.labels = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.render();\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status)=>{\r\n if(status){\r\n this.render();\r\n }\r\n }\r\n )\r\n\r\n this.searchTerm\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => {\r\n this.configs = this.configsRender\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n })\r\n })\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n this.render();\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input (input)=\"onKeySearch()\"\r\n [(ngModel)]=\"configsRender.search.textSearch\"\r\n [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\"\r\n attr.data-id=\"input-search-{{ dataId }}\"\r\n class=\"form-control\"\r\n maxlength=\"255\"\r\n type=\"text\"/>\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxTableService"],"mappings":"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"}
1
+ {"version":3,"file":"experteam-mx-ngx-table.mjs","sources":["../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.service.ts","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.component.ts","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.component.html","../../../../projects/experteam-mx/ngx-table/src/lib/ngx-table.module.ts","../../../../projects/experteam-mx/ngx-table/src/public-api.ts","../../../../projects/experteam-mx/ngx-table/src/experteam-mx-ngx-table.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class NgxTableService {\r\n\r\n dataCount = 0\r\n\r\n onChangeTooltips = new BehaviorSubject<boolean>(false);\r\n tooltips: any = {\r\n clearSearch: 'Clear Search'\r\n }\r\n\r\n constructor() { }\r\n\r\n get dataId(){\r\n return this.dataCount ++\r\n }\r\n\r\n changeTooltips( tooltips: any ){\r\n this.tooltips = {\r\n ...this.tooltips,\r\n ...tooltips\r\n }\r\n\r\n this.onChangeTooltips.next( true )\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core'\r\nimport { NgxTableService } from './ngx-table.service'\r\nimport { debounceTime, distinctUntilChanged, Subject } from 'rxjs'\r\n\r\n@Component({\r\n selector: 'ngx-table',\r\n templateUrl: './ngx-table.component.html',\r\n styleUrls: ['./ngx-table.component.scss']\r\n})\r\nexport class NgxTableComponent implements OnInit, OnChanges {\r\n @Input() headRow: any[] = [];\r\n headRowRender: any[] = [];\r\n\r\n @Input() registers: any[] = [];\r\n registersRender: any[] = [];\r\n\r\n @Input() configs: any;\r\n configsRender: any = {};\r\n\r\n @Output() changePage = new EventEmitter<Object>();\r\n @Output() clickEvent = new EventEmitter<Object>();\r\n\r\n @ViewChild('selectAll') checkSelectAll: any;\r\n\r\n dataId: any\r\n configsDefault: any\r\n\r\n private searchTerm = new Subject<string>()\r\n\r\n constructor(\r\n public _NgxTableService: NgxTableService\r\n ) {\r\n this.dataId = _NgxTableService.dataId\r\n\r\n this.configsDefault = {\r\n titleTable: null,\r\n loading: false,\r\n paginationActive: false,\r\n page: 1,\r\n pageSize: 15,\r\n collectionSize: 0,\r\n tableSize: 'normal',\r\n labels: {\r\n noRegisters: 'Registers no found',\r\n tooltips:{\r\n ...this._NgxTableService.tooltips\r\n }\r\n },\r\n search: {\r\n active: false,\r\n textSearch: '',\r\n placeholderSearch: 'Search'\r\n },\r\n order: {\r\n active: false,\r\n field: null,\r\n asc: false\r\n },\r\n actions: {\r\n add: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n select: {\r\n active: false,\r\n labelHtml: null\r\n },\r\n edit: {\r\n active: false,\r\n labelHtml: null,\r\n disabled: false\r\n },\r\n delete: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n enabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n disabled: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n loginAs: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false,\r\n disabled: false\r\n },\r\n check: {\r\n disabled: false,\r\n active: false,\r\n checked: false\r\n },\r\n enableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n disableSelected: {\r\n active: false,\r\n labelHtml: null,\r\n loading: false\r\n },\r\n },\r\n colHead: {\r\n label: null,\r\n type: 'string',\r\n field: null,\r\n order: {\r\n visible: false,\r\n active: false,\r\n asc: false\r\n }\r\n },\r\n enableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Enable all'\r\n },\r\n disableAll: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Disable all'\r\n },\r\n saveChanges: {\r\n active: false,\r\n disabled: true,\r\n labelHtml: 'Save changes',\r\n loading: false\r\n }\r\n };\r\n }\r\n\r\n ngOnInit (): void {\r\n this.render()\r\n\r\n this._NgxTableService.onChangeTooltips.subscribe(\r\n (status) => {\r\n if (status) {\r\n this.render()\r\n }\r\n }\r\n )\r\n\r\n this.searchTerm\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged()\r\n )\r\n .subscribe(() => {\r\n this.onPageChange()\r\n })\r\n }\r\n\r\n ngOnChanges (changes: SimpleChanges): void {\r\n this.render()\r\n }\r\n\r\n objectKeys(registers: any) {\r\n let registros = [];\r\n\r\n for (let key of Object.keys(registers)) {\r\n if (key != 'configRegister') {\r\n registros.push(key);\r\n }\r\n }\r\n\r\n return registros;\r\n }\r\n\r\n onPageChange() {\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n }\r\n\r\n onKeySearch() {\r\n this.searchTerm.next(this.configsRender.search.textSearch)\r\n }\r\n\r\n onRestarSeach() {\r\n this.configsRender.search.textSearch = '';\r\n this.configs = this.configsRender;\r\n\r\n this.changePage.emit({\r\n ...this.configsRender\r\n });\r\n\r\n this.onActionClick({\r\n type: 'clear'\r\n });\r\n }\r\n\r\n onActionClick(object: any) {\r\n object.event?.preventDefault();\r\n object.event?.stopPropagation();\r\n\r\n this.clickEvent.emit({\r\n type: object.type,\r\n data: object.data,\r\n index: object.index\r\n });\r\n }\r\n\r\n render() {\r\n this.headRowRender = [];\r\n\r\n for (let head of this.headRow) {\r\n this.headRowRender.push({\r\n ...this.configsDefault.colHead,\r\n ...head,\r\n order: {\r\n ...this.configsDefault.colHead.order,\r\n ...head.order\r\n }\r\n });\r\n }\r\n\r\n this.configsRender = {\r\n titleTable: this.configsDefault.titleTable,\r\n loading: this.configsDefault.loading,\r\n paginationActive: this.configsDefault.paginationActive,\r\n page: this.configsDefault.page,\r\n pageSize: this.configsDefault.pageSize,\r\n collectionSize: this.configsDefault.collectionSize,\r\n tableSize: this.configsDefault.tableSize,\r\n labels: this.configsDefault.labels,\r\n search: this.configsDefault.search,\r\n order: this.configsDefault.order,\r\n actions: this.configsDefault.actions,\r\n ...this.configs\r\n };\r\n\r\n if( !this.configs.labels ){\r\n this.configs.labels = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips ){\r\n this.configs.labels.tooltips = {}\r\n }\r\n\r\n if( !this.configs.labels.tooltips.clearSearch ){\r\n this.configs.labels.tooltips.clearSearch = ''\r\n }\r\n if( this.configs.labels.tooltips.clearSearch == '' || this.configsDefault.labels.tooltips.clearSearch != this._NgxTableService.tooltips.clearSearch ){\r\n this.configsRender.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n this.configsDefault.labels.tooltips.clearSearch = this._NgxTableService.tooltips.clearSearch\r\n }\r\n\r\n this.setConfigsDefault('enableAll');\r\n this.setConfigsDefault('disableAll');\r\n this.setConfigsDefault('saveChanges');\r\n\r\n this.registersRender = [];\r\n\r\n for (let register of this.registers) {\r\n this.registersRender.push({\r\n ...register,\r\n configRegister: {\r\n actions: {\r\n ...this.configsRender.actions,\r\n loginAs: {\r\n ...this.configsRender.actions.loginAs\r\n },\r\n check: {\r\n ...this.configsRender.actions.check\r\n },\r\n ...register.configRegister?.actions\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n stopPropagation(e: any) {\r\n e.stopPropagation();\r\n }\r\n\r\n setSelectAll() {\r\n this.checkSelectAll.nativeElement.indeterminate = false;\r\n this.checkSelectAll.nativeElement.checked = false;\r\n let contCheck = this.getSelectedPices();\r\n\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n if (registerChecksEnabled.length == 0) {\r\n return;\r\n }\r\n\r\n if (registerChecksEnabled.length == contCheck) {\r\n this.checkSelectAll.nativeElement.checked = true;\r\n } else {\r\n if (contCheck != 0) {\r\n this.checkSelectAll.nativeElement.indeterminate = true;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n getSelectedPices() {\r\n let contCheck = 0;\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n contCheck += (register.configRegister.actions.check.checked ? 1 : 0);\r\n }\r\n\r\n return contCheck;\r\n }\r\n\r\n onChangeSelectAll() {\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n if (this.checkSelectAll.nativeElement.checked) {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = true;\r\n }\r\n } else {\r\n for (let register of registerChecksEnabled) {\r\n register.configRegister.actions.check.checked = false;\r\n }\r\n }\r\n\r\n this.onActionClick({\r\n type: 'checked',\r\n data: this.checkedRegisters()\r\n });\r\n }\r\n\r\n checkedRegisters() {\r\n let checkedRegister = [];\r\n let registerChecksEnabled = this.registersRender.filter((element)=>{\r\n return !element.configRegister.actions.check.disabled && element.configRegister.actions.check.active\r\n })\r\n\r\n for (let register of registerChecksEnabled) {\r\n if (register.configRegister.actions.check.checked) {\r\n checkedRegister.push({\r\n ...register\r\n });\r\n }\r\n }\r\n\r\n return checkedRegister;\r\n }\r\n\r\n activeOrder(config: any) {\r\n for (let head of this.headRowRender) {\r\n if (head.field == config.field) {\r\n head.order.active = true;\r\n head.order.asc = config.asc;\r\n } else {\r\n head.order.active = false;\r\n }\r\n }\r\n }\r\n\r\n onOrderChange(config: any) {\r\n this.activeOrder({\r\n field: config.field,\r\n asc: config.asc\r\n });\r\n\r\n this.clickEvent.emit({\r\n type: 'order',\r\n data: {\r\n field: config.field,\r\n asc: config.asc\r\n }\r\n });\r\n }\r\n\r\n setConfigsDefault(key: string) {\r\n if (this.configsRender[key] == null) {\r\n this.configsRender[key] = this.configsDefault[key];\r\n } else {\r\n if (this.configsRender[key].active == null) {\r\n this.configsRender[key].active = this.configsDefault[key].active;\r\n }\r\n\r\n if (this.configsRender[key].disabled == null) {\r\n this.configsRender[key].disabled = this.configsDefault[key].disabled;\r\n }\r\n\r\n if (this.configsRender[key].labelHtml == null) {\r\n this.configsRender[key].labelHtml = this.configsDefault[key].labelHtml;\r\n }\r\n\r\n if (key == 'saveChanges' && this.configsRender[key].loading == null) {\r\n this.configsRender[key].loading = this.configsDefault[key].loading;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"container-fluid\">\r\n <h3 class=\"text-center\" *ngIf=\"configsRender.titleTable != null\">{{ configsRender.titleTable }}</h3>\r\n <div class=\"row justify-content-end mb-2\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active || configsRender.search.active\">\r\n <div class=\"col d-flex justify-content-end\" *ngIf=\"(configsRender.actions.enableSelected?.active) || (configsRender.actions.disableSelected?.active) || configsRender.enableAll.active || configsRender.disableAll.active || configsRender.saveChanges.active || configsRender.actions.add?.active\">\r\n <button attr.data-id=\"enable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.enableSelected?.active\" [disabled]=\"configsRender.actions.enableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-success mx-1\" (click)=\"onActionClick({event: $event,type: 'enableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.enableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.enableSelected.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-selected-{{ dataId }}\" *ngIf=\"configsRender.actions.disableSelected?.active\" [disabled]=\"configsRender.actions.disableSelected?.loading || checkedRegisters().length == 0\" type=\"button\" class=\"btn btn-danger mx-1\" (click)=\"onActionClick({event: $event,type: 'disableSelected', data: checkedRegisters()})\">\r\n <span *ngIf=\"configsRender.actions.disableSelected?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.actions.disableSelected?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-all-{{ dataId }}\" *ngIf=\"configsRender.enableAll.active\" type=\"button\" class=\"btn btn-success mx-1\" [disabled]=\"configsRender.enableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'enableAll'})\">\r\n <span [innerHTML]=\"configsRender.enableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-all-{{ dataId }}\" *ngIf=\"configsRender.disableAll.active\" type=\"button\" class=\"btn btn-danger mx-1\" [disabled]=\"configsRender.disableAll.disabled\" (click)=\"onActionClick({event: $event, type: 'disableAll'})\">\r\n <span [innerHTML]=\"configsRender.disableAll.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"save-changes-{{ dataId }}\" *ngIf=\"configsRender.saveChanges.active\" type=\"button\" class=\"btn btn-primary mx-1\" [disabled]=\"configsRender.saveChanges.disabled || configsRender.saveChanges.loading\" (click)=\"onActionClick({event: $event, type: 'saveChanges'})\">\r\n <span *ngIf=\"configsRender.saveChanges.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"configsRender.saveChanges.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"add-register-{{ dataId }}\" *ngIf=\"configsRender.actions.add?.active\" class=\"btn btn-success\" type=\"button\" (click)=\"onActionClick({event: $event, type: 'add'})\">\r\n <span [innerHTML]=\"configsRender.actions.add?.labelHtml\"></span>\r\n </button>\r\n </div>\r\n <div class=\"col-lg-3\" *ngIf=\"configsRender.search.active\">\r\n <div class=\"input-group\">\r\n <input (input)=\"onKeySearch()\"\r\n [(ngModel)]=\"configsRender.search.textSearch\"\r\n [placeholder]=\"configsRender.search.placeholderSearch != undefined ? configsRender.search.placeholderSearch : ''\"\r\n attr.data-id=\"input-search-{{ dataId }}\"\r\n class=\"form-control\"\r\n maxlength=\"255\"\r\n type=\"text\"/>\r\n <button attr.data-id=\"restart-search-{{ dataId }}\" class=\"btn btn-primary\" type=\"button\" (click)=\"onRestarSeach()\" [ngbTooltip]=\"configsRender.labels?.tooltips?.clearSearch\">\r\n <i class=\"bi bi-arrow-counterclockwise\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ngx-skeleton-loader *ngIf=\"configsRender.loading\" count=\"5\"></ngx-skeleton-loader>\r\n <p *ngIf=\"!configsRender.loading && configsRender.collectionSize == 0\" class=\"text-center\">{{ configsRender.labels.noRegisters }}</p>\r\n <div *ngIf=\"!configsRender.loading && configsRender.collectionSize > 0\" class=\"table-responsive\">\r\n <table class=\"table table-striped table-bordered\" [class.table-sm]=\"configsRender.tableSize == 'small'\">\r\n <thead>\r\n <tr>\r\n <th class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\">\r\n <input attr.data-id=\"box-select-all-{{ dataId }}\" #selectAll class=\"form-check-input\" type=\"checkbox\" (change)=\"onChangeSelectAll()\">\r\n </th>\r\n <th *ngFor=\"let col of headRowRender\" [class.pointer]=\"col.order.visible\" (click)=\"( col.order.visible ? onOrderChange({ field: col.field, asc: ( col.order.active ? !col.order.asc : true ) }) : return )\">\r\n <span [innerHTML]=\"col.label\"></span>\r\n <i *ngIf=\"col.order.visible && col.order.active && !col.order.asc\" class=\"bi bi-chevron-down ms-1\"></i>\r\n <i *ngIf=\"col.order.visible && col.order.active && col.order.asc\" class=\"bi bi-chevron-up ms-1\"></i>\r\n </th>\r\n <th class=\"col-compact\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\"></th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <ng-container *ngFor=\"let register of registersRender; let i = index\">\r\n <tr attr.data-id=\"select-register-{{ dataId }}-{{ i }}\" [class.pointer]=\"register.configRegister?.actions?.select?.active\" (click)=\"register.configRegister?.actions?.select?.active ? onActionClick({event: $event,type: 'select',data: register, index: i}):return\">\r\n <td class=\"text-center\" *ngIf=\"configsRender.actions.check?.active\" (click)=\"stopPropagation($event)\">\r\n <input *ngIf=\"register.configRegister.actions.check.active\" [disabled]=\"register.configRegister.actions.check.disabled\" attr.data-id=\"box-select-register-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [(ngModel)]=\"register.configRegister.actions.check.checked\" (change)=\"setSelectAll()\">\r\n </td>\r\n\r\n <ng-container *ngFor=\"let col of headRowRender; let j = index\">\r\n <td [class.text-end]=\"col.type == 'number'\">\r\n <span *ngIf=\"col.field != 'is_active'; else renderIsActive\" [innerHTML]=\"registers[i][(col.field == null || col.field == '' ? objectKeys(register)[j] : col.field)]\"></span>\r\n <ng-template #renderIsActive>\r\n <input attr.data-id=\"box-is-active-{{ dataId }}-{{ i }}\" class=\"form-check-input\" type=\"checkbox\" [ngModel]=\"registers[i][col.field]\" (ngModelChange)=\"onActionClick({type: 'changeIsActive', data: $event, index: i})\">\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n\r\n <td class=\"text-nowrap\" *ngIf=\"configsRender.actions.edit?.active || configsRender.actions.delete?.active || configsRender.actions.enabled?.active || configsRender.actions.disabled?.active || configsRender.actions.loginAs?.active\">\r\n <button attr.data-id=\"edit-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.edit?.active\" [disabled]=\"register.configRegister?.actions?.edit?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'edit',data: register, index: i})\">\r\n <span [innerHTML]=\"register.configRegister?.actions?.edit?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"delete-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.delete?.active\" [disabled]=\"register.configRegister?.actions?.delete?.loading || register.configRegister?.actions?.delete?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'delete',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.delete?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.delete?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"enable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.enabled?.active\" [disabled]=\"register.configRegister?.actions?.enabled?.loading || register.configRegister?.actions?.enabled?.disabled\" type=\"button\" class=\"btn btn-success mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'enabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.enabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.enabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"disable-register-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.disabled?.active\" [disabled]=\"register.configRegister?.actions?.disabled?.loading || register.configRegister?.actions?.disabled?.disabled\" type=\"button\" class=\"btn btn-danger mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'disabled',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.disabled?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.disabled?.labelHtml\"></span>\r\n </button>\r\n <button attr.data-id=\"login-as-{{ dataId }}-{{ i }}\" *ngIf=\"register.configRegister?.actions?.loginAs?.active\" [disabled]=\"register.configRegister?.actions?.loginAs?.loading || register.configRegister?.actions?.loginAs?.disabled\" type=\"button\" class=\"btn btn-primary mx-1\" [class.btn-sm]=\"configsRender.tableSize == 'small'\" (click)=\"onActionClick({event: $event,type: 'loginAs',data: register, index: i})\">\r\n <span *ngIf=\"register.configRegister?.actions?.loginAs?.loading\">\r\n <div class=\"spinner-border spinner-border-sm\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n </div>&nbsp;\r\n </span>\r\n <span [innerHTML]=\"register.configRegister?.actions?.loginAs?.labelHtml\"></span>\r\n </button>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"position-sticky bottom-0 bg-white\" *ngIf=\"configsRender.paginationActive && configsRender.collectionSize > 0\">\r\n <div class=\"row justify-content-end border-top pt-2\">\r\n <div class=\"col-sm-6\">\r\n <ngb-pagination\r\n class=\"d-flex justify-content-center\"\r\n [pageSize]=\"configsRender.pageSize\"\r\n [collectionSize]=\"configsRender.collectionSize\"\r\n [(page)]=\"configsRender.page\"\r\n [maxSize]=\"5\"\r\n [rotate]=\"true\"\r\n [boundaryLinks]=\"true\"\r\n [ellipses]=\"true\"\r\n (pageChange)=\"onPageChange()\"\r\n size=\"sm\"\r\n >\r\n <ng-template ngbPaginationNumber let-page><span attr.data-id=\"page-{{ dataId }}-{{ page }}\">{{ page }}</span></ng-template>\r\n <ng-template ngbPaginationFirst><span attr.data-id=\"page-first-{{ dataId }}\">««</span></ng-template>\r\n <ng-template ngbPaginationLast><span attr.data-id=\"page-last-{{ dataId }}\">»»</span></ng-template>\r\n <ng-template ngbPaginationPrevious><span attr.data-id=\"page-previus-{{ dataId }}\">«</span></ng-template>\r\n <ng-template ngbPaginationNext><span attr.data-id=\"page-next-{{ dataId }}\">»</span></ng-template>\r\n </ngb-pagination>\r\n </div>\r\n <div class=\"col-sm-3\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { NgxTableComponent } from './ngx-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\r\n\r\n@NgModule({\r\n declarations: [\r\n NgxTableComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n NgbModule,\r\n NgxSkeletonLoaderModule,\r\n ],\r\n exports: [\r\n NgxTableComponent\r\n ]\r\n})\r\nexport class NgxTableModule { }\r\n","/*\r\n * Public API Surface of ngx-table\r\n */\r\n\r\nexport * from './lib/ngx-table.service';\r\nexport * from './lib/ngx-table.component';\r\nexport * from './lib/ngx-table.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.NgxTableService"],"mappings":"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"}
@@ -16,6 +16,8 @@ export declare class NgxTableComponent implements OnInit, OnChanges {
16
16
  configsDefault: any;
17
17
  private searchTerm;
18
18
  constructor(_NgxTableService: NgxTableService);
19
+ ngOnInit(): void;
20
+ ngOnChanges(changes: SimpleChanges): void;
19
21
  objectKeys(registers: any): string[];
20
22
  onPageChange(): void;
21
23
  onKeySearch(): void;
@@ -29,8 +31,6 @@ export declare class NgxTableComponent implements OnInit, OnChanges {
29
31
  checkedRegisters(): any[];
30
32
  activeOrder(config: any): void;
31
33
  onOrderChange(config: any): void;
32
- ngOnInit(): void;
33
- ngOnChanges(changes: SimpleChanges): void;
34
34
  setConfigsDefault(key: string): void;
35
35
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxTableComponent, never>;
36
36
  static ɵcmp: i0.ɵɵComponentDeclaration<NgxTableComponent, "ngx-table", never, { "headRow": { "alias": "headRow"; "required": false; }; "registers": { "alias": "registers"; "required": false; }; "configs": { "alias": "configs"; "required": false; }; }, { "changePage": "changePage"; "clickEvent": "clickEvent"; }, never, never, false, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@experteam-mx/ngx-table",
3
- "version": "18.0.2",
3
+ "version": "18.0.3",
4
4
  "description": "Angular table for Experteam apps",
5
5
  "author": "Experteam Cía. Ltda.",
6
6
  "keywords": [