@universis/ngx-tables 0.7.14 → 0.7.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,15 +3,24 @@ import { AdvancedTableModalBaseComponent } from '../advanced-table-modal/advance
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { AdvancedFilterValueProvider } from '../advanced-table/advanced-filter-value-provider.service';
5
5
  import { AngularDataContext } from '@themost/angular';
6
- import { Component, EventEmitter, ViewEncapsulation } from '@angular/core';
6
+ import { Component, ElementRef, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';
7
7
  import { BsModalRef } from 'ngx-bootstrap/modal';
8
8
  import { DatePipe } from '@angular/common';
9
9
  export class AdvancedSelectComponent extends AdvancedTableModalBaseComponent {
10
- constructor(router, activatedRoute, context, advancedFilterValueProvider, datePipe, _modalRef) {
10
+ constructor(router, activatedRoute, context, advancedFilterValueProvider, datePipe, _modalRef, el) {
11
11
  super(router, activatedRoute, context, advancedFilterValueProvider, datePipe);
12
12
  this._modalRef = _modalRef;
13
+ this.el = el;
13
14
  this.dismiss = new EventEmitter();
14
15
  }
16
+ ngAfterViewInit() {
17
+ super.ngAfterViewInit();
18
+ setTimeout(() => {
19
+ if (this.searchElement && this.searchElement.nativeElement) {
20
+ this.searchElement.nativeElement.focus();
21
+ }
22
+ }, 0);
23
+ }
15
24
  ok() {
16
25
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
26
  this._modalRef.hide();
@@ -29,7 +38,7 @@ AdvancedSelectComponent.decorators = [
29
38
  { type: Component, args: [{
30
39
  // tslint:disable-next-line: component-selector
31
40
  selector: 'app-advanced-select',
32
- template: "<div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" class=\"close\" data-dismiss=\"modal\"\n aria-label=\"Cancel\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\"\n class=\"form-control bg-gray-100 border-0\" placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\"\n aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div class=\"dropdown ml-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\">\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <a class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\"\n (click)=\"advancedSearch(filter.filter ? filter : '')\">\n {{ filter.name | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\" (load)=\"onDataLoad($event)\"\n [autoLoad]=\"true\"\n [selectable]=\"true\" [multipleSelect]=\"true\" [scrollX]=\"false\" [scrollY]=\"320\" [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\" [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div class=\"dropdown mr-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownPageSize\"\n data-toggle=\"dropdown\">\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\" class=\"dropdown-item dropdown-item-theme\" type=\"button\"\n *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\"\n (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\" type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\"\n data-dismiss=\"modal\">\n {{ cancelButtonText | translate}}\n </button>\n</div>\n",
41
+ template: "<div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" class=\"close\" data-dismiss=\"modal\"\n aria-label=\"Cancel\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" #searchElement (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\" \n class=\"form-control bg-gray-100 border-0\" placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\"\n aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\" (click)=\"onSearch()\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div class=\"dropdown ml-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\">\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <a class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\"\n (click)=\"advancedSearch(filter.filter ? filter : '')\">\n {{ filter.name | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\" (load)=\"onDataLoad($event)\"\n [autoLoad]=\"true\"\n [selectable]=\"true\" [multipleSelect]=\"true\" [scrollX]=\"false\" [scrollY]=\"320\" [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\" [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div class=\"dropdown mr-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownPageSize\"\n data-toggle=\"dropdown\">\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\" class=\"dropdown-item dropdown-item-theme\" type=\"button\"\n *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\"\n (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\" type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\"\n data-dismiss=\"modal\">\n {{ cancelButtonText | translate}}\n </button>\n</div>\n",
33
42
  encapsulation: ViewEncapsulation.None,
34
43
  styles: [`
35
44
  .modal-table .dataTables_wrapper {
@@ -46,7 +55,11 @@ AdvancedSelectComponent.ctorParameters = () => [
46
55
  { type: AngularDataContext },
47
56
  { type: AdvancedFilterValueProvider },
48
57
  { type: DatePipe },
49
- { type: BsModalRef }
58
+ { type: BsModalRef },
59
+ { type: ElementRef }
50
60
  ];
61
+ AdvancedSelectComponent.propDecorators = {
62
+ searchElement: [{ type: ViewChild, args: ['searchElement',] }]
63
+ };
51
64
 
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXNlbGVjdC9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFnQjNDLE1BQU0sOEJBQStCLFNBQVEsK0JBQStCO0lBSTFFLFlBQVksTUFBYyxFQUNkLGNBQThCLEVBQzlCLE9BQTJCLEVBQzNCLDJCQUF3RCxFQUN4RCxRQUFrQixFQUNWLFNBQXFCO1FBQ3ZDLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUQ1RCxjQUFTLEdBQVQsU0FBUyxDQUFZO1FBUGxDLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVN2RCxDQUFDO0lBRVksRUFBRTs7WUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUM7S0FBQTtJQUVZLE1BQU07O1lBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUIsQ0FBQztLQUFBOzs7WUFuQ0YsU0FBUyxTQUFDO2dCQUNULCtDQUErQztnQkFDL0MsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IseW1MQUErQztnQkFTL0MsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7eUJBUG5DOzs7OztLQUtDO2FBR0o7Ozs7WUFwQndCLE1BQU07WUFBdEIsY0FBYztZQUVkLGtCQUFrQjtZQURsQiwyQkFBMkI7WUFJM0IsUUFBUTtZQURSLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUtbW9kYWwvYWR2YW5jZWQtdGFibGUtbW9kYWwtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC1maWx0ZXItdmFsdWUtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBbmd1bGFyRGF0YUNvbnRleHQgfSBmcm9tICdAdGhlbW9zdC9hbmd1bGFyJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAubW9kYWwtdGFibGUgLmRhdGFUYWJsZXNfd3JhcHBlciB7XG4gICAgICBoZWlnaHQ6IDUwdmg7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICBgLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFNlbGVjdENvbXBvbmVudCBleHRlbmRzIEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQge1xuXG4gIHB1YmxpYyBkaXNtaXNzOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBjb25zdHJ1Y3Rvcihyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgICAgICAgICAgICBjb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgICAgICAgICAgIGFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlcjogQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyLFxuICAgICAgICAgICAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgICAgICAgICAgIHByaXZhdGUgX21vZGFsUmVmOiBCc01vZGFsUmVmKSB7XG4gICAgc3VwZXIocm91dGVyLCBhY3RpdmF0ZWRSb3V0ZSwgY29udGV4dCwgYWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyLCBkYXRlUGlwZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgb2soKSB7XG4gICAgdGhpcy5fbW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KCdvaycpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNhbmNlbCgpIHtcbiAgICB0aGlzLl9tb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5kaXNtaXNzLmVtaXQoJ2NhbmNlbCcpO1xuICB9XG5cbn1cbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXNlbGVjdC9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFnQjNDLE1BQU0sOEJBQStCLFNBQVEsK0JBQStCO0lBSzFFLFlBQVksTUFBYyxFQUN4QixjQUE4QixFQUM5QixPQUEyQixFQUMzQiwyQkFBd0QsRUFDeEQsUUFBa0IsRUFDVixTQUFxQixFQUNyQixFQUFjO1FBQ3RCLEtBQUssQ0FBQyxNQUFNLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUZ0RSxjQUFTLEdBQVQsU0FBUyxDQUFZO1FBQ3JCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFUakIsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBV3ZELENBQUM7SUFFRCxlQUFlO1FBQ2IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVZLEVBQUU7O1lBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDO0tBQUE7SUFFWSxNQUFNOztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLENBQUM7S0FBQTs7O1lBOUNGLFNBQVMsU0FBQztnQkFDVCwrQ0FBK0M7Z0JBQy9DLFFBQVEsRUFBRSxxQkFBcUI7Z0JBQy9CLGdwTEFBK0M7Z0JBUy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO3lCQVBuQzs7Ozs7S0FLQzthQUdKOzs7O1lBcEJ3QixNQUFNO1lBQXRCLGNBQWM7WUFFZCxrQkFBa0I7WUFEbEIsMkJBQTJCO1lBSTNCLFFBQVE7WUFEUixVQUFVO1lBRGdCLFVBQVU7Ozs0QkFxQjFDLFNBQVMsU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlLW1vZGFsL2FkdmFuY2VkLXRhYmxlLW1vZGFsLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtZmlsdGVyLXZhbHVlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkdmFuY2VkLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAubW9kYWwtdGFibGUgLmRhdGFUYWJsZXNfd3JhcHBlciB7XG4gICAgICBoZWlnaHQ6IDUwdmg7XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cbiAgICBgLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBZHZhbmNlZFNlbGVjdENvbXBvbmVudCBleHRlbmRzIEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBwdWJsaWMgZGlzbWlzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEVsZW1lbnQnKSBzZWFyY2hFbGVtZW50OiBhbnk7XG5cbiAgY29uc3RydWN0b3Iocm91dGVyOiBSb3V0ZXIsXG4gICAgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIGNvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICBhZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXI6IEFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlcixcbiAgICBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSBfbW9kYWxSZWY6IEJzTW9kYWxSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKHJvdXRlciwgYWN0aXZhdGVkUm91dGUsIGNvbnRleHQsIGFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlciwgZGF0ZVBpcGUpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2VhcmNoRWxlbWVudCAmJiB0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLnNlYXJjaEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sIDApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9rKCkge1xuICAgIHRoaXMuX21vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgnb2snKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5fbW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxuXG59XG4iXX0=
@@ -15,12 +15,12 @@ export const AdvancedTableModalBaseTemplate = `
15
15
  <div class="row mt-3">
16
16
  <div class="col-12 col-lg-3">
17
17
  <div class="input-group mb-3">
18
- <input spellcheck="false" type="text"
18
+ <input spellcheck="false" type="text" #searchElement
19
19
  (keyup)="onKeyUp($event)" [(ngModel)]="searchText"
20
20
  class="form-control bg-gray-100 border-0"
21
21
  placeholder="{{'Tables.SearchPlaceholder' | translate}}" aria-label="Search" aria-describedby="basic-addon2">
22
22
  <div class="input-group-append">
23
- <button class="btn btn-default bg-gray-100 border-0" type="button">
23
+ <button class="btn btn-default bg-gray-100 border-0" type="button" (click)="onSearch()">
24
24
  <i class="fa fa-search text-secondary"></i>
25
25
  </button>
26
26
  </div>
@@ -130,7 +130,11 @@ export class AdvancedTableModalBaseComponent extends RouterModalOkCancel {
130
130
  this._template = new TemplatePipe();
131
131
  }
132
132
  ngAfterViewInit() {
133
- //
133
+ setTimeout(() => {
134
+ if (this.searchElement && this.searchElement.nativeElement) {
135
+ this.searchElement.nativeElement.focus();
136
+ }
137
+ }, 0);
134
138
  }
135
139
  _getInputs(componentType) {
136
140
  const props = componentType.__prop__metadata__;
@@ -255,12 +259,17 @@ export class AdvancedTableModalBaseComponent extends RouterModalOkCancel {
255
259
  this.advancedTable.dataTable.page.len(value).draw();
256
260
  }
257
261
  onKeyUp(event) {
258
- if (event.code === 'Enter') {
262
+ if (event.key === 'Enter' || event.key === 'Return') {
259
263
  // loading
260
264
  this.loading = true;
261
265
  this.advancedTable.search(event.target.value);
262
266
  }
263
267
  }
268
+ onSearch() {
269
+ // loading
270
+ this.loading = true;
271
+ this.advancedTable.search(this.searchText);
272
+ }
264
273
  /**
265
274
  *
266
275
  * Reads the modal table and returns a list of filters to use in the table
@@ -376,6 +385,7 @@ AdvancedTableModalBaseComponent.propDecorators = {
376
385
  emptyTable: [{ type: ViewChild, args: ['emptyTable',] }],
377
386
  dropdownFilter: [{ type: ViewChild, args: ['dropdownFilter',] }],
378
387
  dropdownLength: [{ type: ViewChild, args: ['dropdownLength',] }],
388
+ searchElement: [{ type: ViewChild, args: ['searchElement',] }],
379
389
  tableConfig: [{ type: Input, args: ['tableConfig',] }],
380
390
  tableConfigSrc: [{ type: Input, args: ['tableConfigSrc',] }],
381
391
  pageLength: [{ type: Input, args: ['pageLength',] }],
@@ -384,4 +394,4 @@ AdvancedTableModalBaseComponent.propDecorators = {
384
394
  defaultFilter: [{ type: Input, args: ['defaultFilter',] }]
385
395
  };
386
396
 
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtbW9kYWwtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS1tb2RhbC9hZHZhbmNlZC10YWJsZS1tb2RhbC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFHdkQsT0FBTyxFQUFDLHNCQUFzQixFQUEwQixNQUFNLDRDQUE0QyxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZakQsNkRBQTZEO0FBQzdELG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9HN0MsQ0FBQztBQXNCRixNQUFNLHNDQUF1QyxTQUFRLG1CQUFtQjtJQStCdEUsWUFDRSxPQUFlLEVBQ2YsZUFBK0IsRUFDckIsUUFBNEIsRUFDNUIsMkJBQXdELEVBQ3hELFFBQWtCO1FBRTVCLEtBQUssQ0FBQyxPQUFPLEVBQUUs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QUssU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyTW9kYWxPa0NhbmNlbH0gZnJvbSAnQHVuaXZlcnNpcy9jb21tb24vcm91dGluZyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlLCBSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1RhYmxlQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtdGFibGUuaW50ZXJmYWNlcyc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0FkdmFuY2VkVGFibGVDb21wb25lbnQsIEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0fSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQgeyBBZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLWZpbHRlci12YWx1ZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRlbXBsYXRlUGlwZSB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBQYWdlSW5mbyB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcGFnZXM6IG51bWJlcjtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG4gIGxlbmd0aDogbnVtYmVyO1xuICByZWNvcmRzVG90YWw6IG51bWJlcjtcbiAgcmVjb3Jkc0Rpc3BsYXk6IG51bWJlcjtcbiAgc2VydmVyU2lkZT86IGJvb2xlYW47XG59XG5cbi8vIGltcG9ydGFudDogZXhwb3J0IHRoaXMgY29uc3QgZHVlIHRvIEFPVCBjb21waWxhdGlvbiBlcnJvcnNcbi8vIHNlZSBtb3JlIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9hb3QtbWV0YWRhdGEtZXJyb3JzI29ubHktaW5pdGlhbGl6ZWQtdmFyaWFibGVzXG5leHBvcnQgY29uc3QgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZVRlbXBsYXRlID0gYFxuPGRpdj5cbiAgICA8IS0tIHNlYXJjaCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLWxnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICA8aW5wdXQgc3BlbGxjaGVjaz1cImZhbHNlXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYmctZ3JheS0xMDAgYm9yZGVyLTBcIlxuICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1RhYmxlcy5TZWFyY2hQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGV9fVwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiYmFzaWMtYWRkb24yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBiZy1ncmF5LTEwMCBib3JkZXItMFwiIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zZWFyY2ggdGV4dC1zZWNvbmRhcnlcIj48L2k+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgI2VtcHR5VGFibGUgY2xhc3M9XCJkLW5vbmVcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY2lyY2xlIGJnLWdyYXktMzAwIGJvcmRlci1ncmF5LTEwMFwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJmb250LTN4bCB0ZXh0LWRhcmtcIiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuRW1wdHlUYWJsZVRpdGxlJ1wiPjwvaDQ+XG4gICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtbGcgdGV4dC1kYXJrXCIgW3RyYW5zbGF0ZV09XCInVGFibGVzLkVtcHR5VGFibGVNZXNzYWdlJ1wiPjwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbGctNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXJcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1ncmF5LTEwMFwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zbGlkZXJzLWggcHItMiB0ZXh0LXNlY29uZGFyeVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT57eydUYWJsZXMuRmlsdGVycycgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxkaXYgI2Ryb3Bkb3duRmlsdGVyIGNsYXNzPVwiZHJvcGRvd24gbWwtM1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZ3JheS0xMDAgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIGlkPVwiZHJvcGRvd25EZWZhdWx0RmlsdGVyc1wiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBkcm9wZG93blRvZ2dsZT5cbiAgICAgICAgICAgICAge3sgdGhpcy5kZWZhdWx0RmlsdGVyLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93bkRlZmF1bHRGaWx0ZXJzXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZGVmYXVsdEZpbHRlcnNcIiAoY2xpY2spPVwib25GaWx0ZXJTZWxlY3QoZmlsdGVyKVwiPlxuICAgICAgICAgICAgICAgIHt7IGZpbHRlci5uYW1lIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sIHRleHQtbGctcmlnaHQgbXQtMyBtdC1sZy0wIGQtbm9uZVwiPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ0cnVlXCIgY2xhc3M9XCJidG4gcm91bmRlZC1waWxsIGJ0bi1vdXRsaW5lLXRoZW1lXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwci0yIGZvbnQtbGdcIj4rPC9zcGFuPjxzcGFuIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5BZGRJdGVtJ1wiPjwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgW25nQ2xhc3NdPVwieyAnY29tcG9uZW50LWxvYWRpbmcnOiBsb2FkaW5nfVwiPlxuICAgICAgICA8YXBwLWFkdmFuY2VkLXRhYmxlICNhZHZhbmNlZFRhYmxlIChpbml0KT1cIm9uVGFibGVJbml0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2FkKT1cIm9uRGF0YUxvYWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW211bHRpcGxlU2VsZWN0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JvbGxYXT1cImZhbHNlXCIgW3Njcm9sbFldPVwiMzIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFnZUxlbmd0aF09XCJwYWdlTGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2Nyb2xsYWJsZV09XCJmYWxzZVwiIFtzaG93Rm9vdGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FjdGlvbnNdPVwiZmFsc2VcIiBbbGVuZ3RoTWVudV09XCJsZW5ndGhNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cInRhYmxlQ29uZmlnXCIgW2NvbmZpZ1NyY109XCJ0YWJsZUNvbmZpZ1NyY1wiPjwvYXBwLWFkdmFuY2VkLXRhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zIHRhYmxlLWN1c3RvbS1wYWdlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBkLWZsZXhcIiAqbmdJZj1cInJlY29yZHNUb3RhbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBtbC1hdXRvIG1yLTMgdGV4dC1zZWNvbmRhcnlcIiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuUmVjb3Jkc1BlclBhZ2UnXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgI2Ryb3Bkb3duTGVuZ3RoIGNsYXNzPVwiZHJvcGRvd24gbXItM1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWdyYXktMTAwIGRyb3Bkb3duLXRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJkcm9wZG93blBhZ2VTaXplXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICBkcm9wZG93blRvZ2dsZT5cbiAgICAgICAgICAgIHt7cGFnZUxlbmd0aH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJkcm9wZG93blBhZ2VTaXplXCI+XG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzZXRMZW5ndGgoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0gZHJvcGRvd24taXRlbS10aGVtZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsZW5ndGhNZW51XCI+e3tpdGVtfX08L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIG1yLTJcIiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuUGFnZUluZm8nXCIgW3RyYW5zbGF0ZVBhcmFtc109XCJwYWdlSW5mb1wiPjwvZGl2PlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJwYWdlSW5mbyAmJiBwYWdlSW5mby5wYWdlID09PSAwXCIgY2xhc3M9XCJidG4gdGV4dC1ub3dyYXBcIiAoY2xpY2spPVwiZmlyc3RQYWdlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdCB0ZXh0LWNvbG9yLXRoZW1lXCI+PC9pPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IHRleHQtY29sb3ItdGhlbWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJwYWdlSW5mbyAmJiBwYWdlSW5mby5wYWdlPT09MFwiIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInByZXZpb3VzUGFnZSgpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnQgdGV4dC1jb2xvci10aGVtZVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInBhZ2VJbmZvICYmIHBhZ2VJbmZvLnBhZ2U9PT1wYWdlSW5mby5wYWdlcy0xXCIgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwibmV4dFBhZ2UoKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1yaWdodCB0ZXh0LWNvbG9yLXRoZW1lXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicGFnZUluZm8gJiYgcGFnZUluZm8ucGFnZT09PXBhZ2VJbmZvLnBhZ2VzLTFcIiBjbGFzcz1cImJ0biB0ZXh0LW5vd3JhcFwiIChjbGljayk9XCJsYXN0UGFnZSgpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0IHRleHQtY29sb3ItdGhlbWVcIj48L2k+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0IHRleHQtY29sb3ItdGhlbWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuYDtcblxuLyoqXG4gKlxuICogQSBzcGVjaWZpYyB2YWx1ZSBmb3IgYSBjcml0ZXJpb25cbiAqXG4gKi9cbmludGVyZmFjZSBTZWFyY2hJdGVtIHtcbiAgZmlsdGVyOiBhbnk7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXRhYmxlLW1vZGFsJyxcbiAgdGVtcGxhdGU6IEFkdmFuY2VkVGFibGVNb2RhbEJhc2VUZW1wbGF0ZSxcbiAgc3R5bGVzOiBbXG4gICAgYFxuXG4gICAgYFxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQgZXh0ZW5kcyBSb3V0ZXJNb2RhbE9rQ2FuY2VsIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy9cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQUxMX0ZJTFRFUiA9IHtcbiAgICBuYW1lOiAnVGFibGVzLkFsbCcsXG4gICAgZmlsdGVyOiBudWxsXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnYWR2YW5jZWRUYWJsZScpIGFkdmFuY2VkVGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2VtcHR5VGFibGUnKSBlbXB0eVRhYmxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkZpbHRlcicpIGRyb3Bkb3duRmlsdGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkxlbmd0aCcpIGRyb3Bkb3duTGVuZ3RoOiBFbGVtZW50UmVmO1xuICBASW5wdXQoJ3RhYmxlQ29uZmlnJykgdGFibGVDb25maWc6IFRhYmxlQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCd0YWJsZUNvbmZpZ1NyYycpIHRhYmxlQ29uZmlnU3JjOiBzdHJpbmc7XG4gIEBJbnB1dCgncGFnZUxlbmd0aCcpIHBhZ2VMZW5ndGggPSAyNTtcbiAgQElucHV0KCdzZWFyY2hUZXh0Jykgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBASW5wdXQoJ2xlbmd0aE1lbnUnKSBsZW5ndGhNZW51OiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyByZWNvcmRzVG90YWwgPSAwO1xuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgcmVjb3Jkc0ZpbHRlcmVkID0gMDtcbiAgcHVibGljIGRlZmF1bHRGaWx0ZXJzOiBBcnJheTxhbnk+ID0gW0FkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQuREVGQVVMVF9BTExfRklMVEVSXTtcbiAgQElucHV0KCdkZWZhdWx0RmlsdGVyJykgZGVmYXVsdEZpbHRlciA9IEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQuREVGQVVMVF9BTExfRklMVEVSO1xuICBwdWJsaWMgcGFnZUluZm8gPSA8UGFnZUluZm8+IHtcbiAgICBzZXJ2ZXJTaWRlOiB0cnVlXG4gIH07XG4gIHByaXZhdGUgX3RlbXBsYXRlOiBUZW1wbGF0ZVBpcGU7XG4gIGNvbmZpZ0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfcm91dGVyOiBSb3V0ZXIsXG4gICAgX2FjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcm90ZWN0ZWQgX2NvbnRleHQ6IEFuZ3VsYXJEYXRhQ29udGV4dCxcbiAgICBwcm90ZWN0ZWQgYWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyOiBBZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIsXG4gICAgcHJvdGVjdGVkIGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICBzdXBlcihfcm91dGVyLCBfYWN0aXZhdGVkUm91dGUpO1xuICAgIHRoaXMubW9kYWxDbGFzcyA9ICdtb2RhbC14bCBtb2RhbC10YWJsZSc7XG4gICAgdGhpcy5fdGVtcGxhdGUgPSBuZXcgVGVtcGxhdGVQaXBlKCk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRJbnB1dHMoY29tcG9uZW50VHlwZSk6IEFycmF5PGFueT4ge1xuICAgIGNvbnN0IHByb3BzID0gY29tcG9uZW50VHlwZS5fX3Byb3BfX21ldGFkYXRhX187XG4gICAgY29uc3QgaW5wdXRzID0gW107XG4gICAgaWYgKHByb3BzID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnB1dHM7XG4gICAgfVxuICAgIE9iamVjdC5rZXlzKHByb3BzKS5mb3JFYWNoIChwcm9wID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IHByb3BzW3Byb3BdWzBdO1xuICAgICAgaWYgKG1lbWJlci5uZ01ldGFkYXRhTmFtZSA9PT0gJ0lucHV0Jykge1xuICAgICAgICBpbnB1dHMucHVzaChwcm9wKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5wdXRzLnNvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNJbnB1dHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9ICdUYWJsZXMuQXBwbHknO1xuICAgIHRoaXMuY2FuY2VsQnV0dG9uVGV4dCA9ICdUYWJsZXMuQ2FuY2VsJztcblxuICAgIC8vIGdldCByb3V0ZSBkYXRhXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEuc3Vic2NyaWJlKCBkYXRhID0+IHtcbiAgICAgIC8vIHNldCBtb2RhbCB0aXRsZSBpZiBhbnlcbiAgICAgIGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICAgIHRoaXMubW9kYWxUaXRsZSA9IGRhdGEudGl0bGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNvbmZpZykge1xuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gZGF0YS5jb25maWc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50YWJsZUNvbmZpZykge1xuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzLnB1c2guYXBwbHkodGhpcy5kZWZhdWx0RmlsdGVycywgdGhpcy50YWJsZUNvbmZpZy5zZWFyY2hlcyk7XG4gICAgICB9XG4gICAgICAvLyBpbXBvcnRhbnQ6IHVzZSBoYXNJbnB1dHMgZHVlIHRvIEFPVCBjb21waWxhdGlvbi4gTWV0YWRhdGEgcHJvcGVydGllcyBjYW5ub3QgYmUgdXNlZCAoZS5nLiBASW5wdXQoKSlcbiAgICAgIC8vIGJlY2F1c2UgdGhlcmUgYXJlIGVtcHR5IGR1cmluZyBydW50aW1lXG4gICAgICAvLyBzbyB3ZSBuZWVkIHRvIGRlZmluZSBtYW51YWxseSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGJpbmQgdGhyb3VnaCB0aGlzIHByb2Nlc3NcbiAgICAgIC8vIGJpbmQgYWxsIGlucHV0c1xuICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5oYXNJbnB1dHMoKTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKCBpbnB1dCA9PiB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgaW5wdXQpKSB7XG4gICAgICAgICAgdGhpc1tpbnB1dF0gPSBkYXRhW2lucHV0XTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY29uZmlnQ2hhbmdlc1N1YnNjcmlwdGlvbiA9IHRoaXMuYWR2YW5jZWRUYWJsZS5jb25maWdDaGFuZ2VzLnN1YnNjcmliZSgoY29uZmlnKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnRhYmxlQ29uZmlnKSB7XG4gICAgICAgICAgLy8gcmVzZXQgZGVmYXVsdCBmaWx0ZXJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXIgPSBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50LkRFRkFVTFRfQUxMX0ZJTFRFUjtcbiAgICAgICAgICAvLyBpbml0IGZpbHRlclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlcnMgPSBbQWR2YW5jZWRUYWJsZU1vZGFsQmFzZUNvbXBvbmVudC5ERUZBVUxUX0FMTF9GSUxURVJdO1xuICAgICAgICAgIC8vIGFkZCBleHRyYSBmaWx0ZXJzXG4gICAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVycy5wdXNoLmFwcGx5KHRoaXMuZGVmYXVsdEZpbHRlcnMsIHRoaXMudGFibGVDb25maWcuc2VhcmNoZXMpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIH0pO1xuICB9XG5cbiAgY2FuY2VsKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG9rKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBvbkRhdGFMb2FkKGRhdGE6IEFkdmFuY2VkVGFibGVEYXRhUmVzdWx0KSB7XG4gICAgdGhpcy5yZWNvcmRzVG90YWwgPSBkYXRhLnJlY29yZHNUb3RhbDtcbiAgICB0aGlzLnJlY29yZHNGaWx0ZXJlZCA9IGRhdGEucmVjb3Jkc0ZpbHRlcmVkO1xuICAgIC8vIGdldCBmaXJzdCBwYWdlIGluZm8gKGJlY2F1c2UgcGFnZSBpcyBub3QgZ29pbmcgdG8gYmUgZmlyZWQgZm9yIGZpcnN0IHBhZ2UpXG4gICAgaWYgKGRhdGEucmVjb3Jkc1RvdGFsID4gMCAmJiB0aGlzLnBhZ2VJbmZvLnJlY29yZHNUb3RhbCA9PT0gMCkge1xuICAgICAgdGhpcy5wYWdlSW5mby5yZWNvcmRzVG90YWwgPSBkYXRhLnJlY29yZHNUb3RhbDtcbiAgICB9XG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gIH1cblxuICBwcmV2aW91c1BhZ2UoKSB7XG4gICAgLy8gZ28gdG8gbmV4dCBwYWdlXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZUpTVHlwZXNcbiAgICB0aGlzLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlLnBhZ2UoJ3ByZXZpb3VzJykuZHJhdygncGFnZScpO1xuICB9XG5cbiAgbmV4dFBhZ2UoKSB7XG4gICAgLy8gZ28gdG8gbmV4dCBwYWdlXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZUpTVHlwZXNcbiAgICB0aGlzLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlLnBhZ2UoJ25leHQnKS5kcmF3KCdwYWdlJyk7XG4gIH1cblxuICBvblRhYmxlSW5pdCgpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBjb25zdCBkYXRhVGFibGUgPSBzZWxmLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlO1xuICAgIC8vIGdldCBpbml0aWFsIHBhZ2UgaW5mb1xuICAgIGNvbnN0IGluaXRpYWxQYWdlSW5mbyA9IDxQYWdlSW5mbz5kYXRhVGFibGUucGFnZS5pbmZvKCk7XG4gICAgaW5pdGlhbFBhZ2VJbmZvLnN0YXJ0ICs9IDE7XG4gICAgc2VsZi5wYWdlSW5mbyA9IGluaXRpYWxQYWdlSW5mbztcbiAgICAvLyBjaGFuZ2UgZW1wdHlUYWJsZU1lc3NhZ2VcbiAgICBkYXRhVGFibGUuY29udGV4dFswXS5vTGFuZ3VhZ2Uuc0VtcHR5VGFibGUgPSB0aGlzLmVtcHR5VGFibGUubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgLy8gYmluZCBwYWdlIGNoYW5nZSBldmVudFxuICAgIGRhdGFUYWJsZS5vbiggJ3BhZ2UuZHQnLCBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnN0IHBhZ2VJbmZvID0gPFBhZ2VJbmZvPmRhdGFUYWJsZS5wYWdlLmluZm8oKTtcbiAgICAgIHBhZ2VJbmZvLnN0YXJ0ICs9IDE7XG4gICAgICBzZWxmLnBhZ2VJbmZvID0gcGFnZUluZm87XG4gICAgfSk7XG4gICAgLy8gYmluZCBkcmF3IGNoYW5nZSBldmVudFxuICAgIGRhdGFUYWJsZS5vbiggJ2RyYXcuZHQnLCBmdW5jdGlvbigpIHtcbiAgICAgIC8vIGZvciBmdXR1cmUgdXNlXG4gICAgICBzZWxmLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHBhZ2VJbmZvID0gPFBhZ2VJbmZvPmRhdGFUYWJsZS5wYWdlLmluZm8oKTtcbiAgICAgIHBhZ2VJbmZvLnN0YXJ0ICs9IDE7XG4gICAgICBzZWxmLnBhZ2VJbmZvID0gcGFnZUluZm87XG4gICAgfSk7XG4gIH1cblxuICBmaXJzdFBhZ2UoKSB7XG4gICAgLy8gZ28gdG8gZmlyc3QgcGFnZVxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVKU1R5cGVzXG4gICAgdGhpcy5hZHZhbmNlZFRhYmxlLmRhdGFUYWJsZS5wYWdlKCdmaXJzdCcpLmRyYXcoJ3BhZ2UnKTtcbiAgfVxuXG4gIGxhc3RQYWdlKCkge1xuICAgIC8vIGdvIHRvIGxhc3QgcGFnZVxuICAgIC8vIG5vaW5zcGVjdGlvbiBUeXBlU2NyaXB0VmFsaWRhdGVKU1R5cGVzXG4gICAgdGhpcy5hZHZhbmNlZFRhYmxlLmRhdGFUYWJsZS5wYWdlKCdsYXN0JykuZHJhdygncGFnZScpO1xuICB9XG5cbiAgICBzZXRMZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgICAgdGhpcy5wYWdlTGVuZ3RoID0gdmFsdWU7XG4gICAgICB0aGlzLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlLnBhZ2UubGVuKHZhbHVlKS5kcmF3KCk7XG4gICAgfVxuXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xuICAgICAgLy8gbG9hZGluZ1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5zZWFyY2goKDxIVE1MSW5wdXRFbGVtZW50PmV2ZW50LnRhcmdldCkudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBSZWFkcyB0aGUgbW9kYWwgdGFibGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIGZpbHRlcnMgdG8gdXNlIGluIHRoZSB0YWJsZVxuICAgKiBxdWVyeS5cbiAgICpcbiAgICogQHBhcmFtIHRhYmxlQ29uZmlnIHtvYmplY3R9IFRoZSB0YWJsZSBjb25maWd1cmF0aW9uIGZyb20ganNvbiBmaWxlXG4gICAqIEBwYXJhbSBkZWZhdWx0RmlsdGVyVmFsdWVzIHtvYmplY3R9IEEgbGlzdCBvZiBkZWZhdWx0IGZpbHRlcnNcbiAgICogQHBhcmFtIHtvYmplY3R9IHNlYXJjaEl0ZW0gVGhlIHNlYXJjaEl0ZW0gdG8gdXNlXG4gICAqXG4gICAqL1xuICBnZXRGaWx0ZXJzKFxuICAgIHRhYmxlQ29uZmlnOiBhbnksXG4gICAgZGVmYXVsdEZpbHRlclZhbHVlcyA9IHt9LFxuICAgIHNlYXJjaEl0ZW06IGFueVxuICApOiBBcnJheTxzdHJpbmc+IHtcbiAgICAvLyBEbyBub3RoaW5nIGluIGFic2VuY2Ugb2YgY29uZmlndXJhdGlvbi5cbiAgICBpZiAoIXRhYmxlQ29uZmlnIHx8ICFBcnJheS5pc0FycmF5KHRhYmxlQ29uZmlnLmNyaXRlcmlhKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmIChzZWFyY2hJdGVtLmZpbHRlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgbWF0Y2hlZENyaXRlcmlvbiA9IHRhYmxlQ29uZmlnLmNyaXRlcmlhLmZpbmQoY3JpdGVyaW9uID0+XG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc2VhcmNoSXRlbS5maWx0ZXIsIGNyaXRlcmlvbi5uYW1lKVxuICAgICk7XG5cbiAgICBpZiAobWF0Y2hlZENyaXRlcmlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBzZWFyY2hJdGVtLmZpbHRlclttYXRjaGVkQ3JpdGVyaW9uLm5hbWVdO1xuXG4gICAgY29uc3QgY3JpdGVyaW9uU2FmZU5hbWUgPSBtYXRjaGVkQ3JpdGVyaW9uLm5hbWUgIT09IG51bGxcbiAgICAgID8gbWF0Y2hlZENyaXRlcmlvbi5uYW1lLnRvU3RyaW5nKClcbiAgICAgIDogJyc7XG5cbiAgICBsZXQgYXBwbGljYWJsZUZpbHRlcjogc3RyaW5nO1xuXG4gICAgLy8gUmF3IGRhdGVzIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB0byBhIHNwZWNpZmljIGZvcm1hdFxuICAgIGlmIChjcml0ZXJpb25TYWZlTmFtZS5pbmNsdWRlcygnR01UJykpIHtcbiAgICAgIGNvbnN0IG5ld0RhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShjcml0ZXJpb25TYWZlTmFtZSwgJ01NL2RkL3l5eXknKTtcbiAgICAgIGFwcGxpY2FibGVGaWx0ZXIgPSB0aGlzLl90ZW1wbGF0ZS50cmFuc2Zvcm0obWF0Y2hlZENyaXRlcmlvbi5maWx0ZXIsIHtcbiAgICAgICAgdmFsdWU6IG5ld0RhdGVcbiAgICAgIH0pO1xuXG4gICAgfSBlbHNlIGlmIChjcml0ZXJpb25TYWZlTmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGFwcGxpY2FibGVGaWx0ZXIgPSAodGhpcy5fdGVtcGxhdGUudHJhbnNmb3JtKG1hdGNoZWRDcml0ZXJpb24uZmlsdGVyLCBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICB9LCBkZWZhdWx0RmlsdGVyVmFsdWVzKSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBsaWNhYmxlRmlsdGVyID0gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIFthcHBsaWNhYmxlRmlsdGVyXTtcbiAgfVxuXG4gIG9uRmlsdGVyU2VsZWN0KHZhbHVlOiB7IGZpbHRlcjogYW55OyBuYW1lOiBzdHJpbmcgfSB8IGFueSkge1xuICAgIHRoaXMuYWR2YW5jZWRTZWFyY2godmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFJ1bnMgYSBmaWx0ZXIgYWdhaW5zdCB0aGUgbW9kYWwgdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGZpbHRlciBUaGUgZmlsdGVyIHRvIHVzZSBpbiB0aGUgc2VhcmNoXG4gICAqXG4gICAqL1xuICBhc3luYyBhZHZhbmNlZFNlYXJjaChmaWx0ZXIpOiBQcm9taXNlPGFueT4ge1xuICAgIC8vIERvIG5vdGhpbmcgaW4gYWJzZW5jZSBvZiBjb25maWd1cmF0aW9uLlxuICAgIGlmICghdGhpcy50YWJsZUNvbmZpZyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLnRhYmxlQ29uZmlnLmNyaXRlcmlhKSkge1xuICAgICAgY29uc29sZS53YXJuKCdObyB0YWJsZSBjb25maWd1cmF0aW9uIGF2YWlsYWJsZScsIHRoaXMudGFibGVDb25maWcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFuIGFkdmFuY2VkIHRhYmxlIGhhcyBzb21lIGZpbHRlcnMgYnkgZGVmYXVsdFxuICAgIGxldCBkZWZhdWx0RmlsdGVyVmFsdWVzO1xuICAgIHRyeSB7XG4gICAgICBkZWZhdWx0RmlsdGVyVmFsdWVzID0gYXdhaXQgdGhpcy5hZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIuZ2V0VmFsdWVzKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBkZWZhdWx0RmlsdGVyVmFsdWVzID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgZXhwcmVzc2lvbnMgPSAgW107XG4gICAgbGV0IHByZWRlZmluZWRDcml0ZXJpYTtcbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBwcmVkZWZpbmVkQ3JpdGVyaWEgPSB0aGlzLmdldEZpbHRlcnMoXG4gICAgICAgIHRoaXMudGFibGVDb25maWcsXG4gICAgICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZXMsXG4gICAgICAgIGZpbHRlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW1wdHkgYSBmYWxzeSBmaWx0ZXIgcmVzZXRzIHRoZSByZXN1bHRzXG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXIgPSBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50LkRFRkFVTFRfQUxMX0ZJTFRFUjtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2ggZmlsdGVyIGlzIGFwcGxpZWQgc2VwYXJhdGVseSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgaGVyZS5cbiAgICBleHByZXNzaW9ucy5wdXNoKHByZWRlZmluZWRDcml0ZXJpYSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuX2NvbnRleHQubW9kZWwodGhpcy5hZHZhbmNlZFRhYmxlLmNvbmZpZy5tb2RlbCkuYXNRdWVyeWFibGUoKTtcbiAgICBxdWVyeS5zZXRQYXJhbSgnZmlsdGVyJywgZXhwcmVzc2lvbnMuam9pbignIGFuZCAnKSkucHJlcGFyZSgpO1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5mZXRjaCgpO1xuICB9XG59XG5cbiJdfQ==
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtdGFibGUtbW9kYWwtYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL25neC10YWJsZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9hZHZhbmNlZC10YWJsZS1tb2RhbC9hZHZhbmNlZC10YWJsZS1tb2RhbC1iYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixTQUFTLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHekQsT0FBTyxFQUFFLHNCQUFzQixFQUEyQixNQUFNLDRDQUE0QyxDQUFDO0FBQzdHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZakQsNkRBQTZEO0FBQzdELG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW9HN0MsQ0FBQztBQXNCRixNQUFNLHNDQUF1QyxTQUFRLG1CQUFtQjtJQXNDdEUsWUFDRSxPQUFlLEVBQ2YsZUFBK0IsRUFDckIsUUFBNEIsRUFDNUIsMkJBQXdELEVBQ3hELFFBQWtCO1FBRTVCLEtBQUssQ0FBQyxPQUFPLEVBQUUs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O2dCQUNwQyxRQUFRLEVBQUUsOEJBQThCO3lCQUV0Qzs7S0FFQzthQUVKOzs7O1lBOUl3QixNQUFNO1lBQXRCLGNBQWM7WUFJZCxrQkFBa0I7WUFDbEIsMkJBQTJCO1lBQzNCLFFBQVE7Ozs0QkF1SmQsU0FBUyxTQUFDLGVBQWU7eUJBQ3pCLFNBQVMsU0FBQyxZQUFZOzZCQUN0QixTQUFTLFNBQUMsZ0JBQWdCOzZCQUMxQixTQUFTLFNBQUMsZ0JBQWdCOzRCQUMxQixTQUFTLFNBQUMsZUFBZTswQkFDekIsS0FBSyxTQUFDLGFBQWE7NkJBQ25CLEtBQUssU0FBQyxnQkFBZ0I7eUJBQ3RCLEtBQUssU0FBQyxZQUFZO3lCQUNsQixLQUFLLFNBQUMsWUFBWTt5QkFDbEIsS0FBSyxTQUFDLFlBQVk7NEJBTWxCLEtBQUssU0FBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjayB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kYWxPa0NhbmNlbCB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uL3JvdXRpbmcnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5pbnRlcmZhY2VzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQWR2YW5jZWRUYWJsZUNvbXBvbmVudCwgQWR2YW5jZWRUYWJsZURhdGFSZXN1bHQgfSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS9hZHZhbmNlZC10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQgeyBBZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIgfSBmcm9tICcuLy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLWZpbHRlci12YWx1ZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRlbXBsYXRlUGlwZSB9IGZyb20gJ0B1bml2ZXJzaXMvY29tbW9uJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBQYWdlSW5mbyB7XG4gIHBhZ2U6IG51bWJlcjtcbiAgcGFnZXM6IG51bWJlcjtcbiAgc3RhcnQ6IG51bWJlcjtcbiAgZW5kOiBudW1iZXI7XG4gIGxlbmd0aDogbnVtYmVyO1xuICByZWNvcmRzVG90YWw6IG51bWJlcjtcbiAgcmVjb3Jkc0Rpc3BsYXk6IG51bWJlcjtcbiAgc2VydmVyU2lkZT86IGJvb2xlYW47XG59XG5cbi8vIGltcG9ydGFudDogZXhwb3J0IHRoaXMgY29uc3QgZHVlIHRvIEFPVCBjb21waWxhdGlvbiBlcnJvcnNcbi8vIHNlZSBtb3JlIGh0dHBzOi8vYW5ndWxhci5pby9ndWlkZS9hb3QtbWV0YWRhdGEtZXJyb3JzI29ubHktaW5pdGlhbGl6ZWQtdmFyaWFibGVzXG5leHBvcnQgY29uc3QgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZVRlbXBsYXRlID0gYFxuPGRpdj5cbiAgICA8IS0tIHNlYXJjaCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLWxnLTNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIG1iLTNcIj5cbiAgICAgICAgICA8aW5wdXQgc3BlbGxjaGVjaz1cImZhbHNlXCIgdHlwZT1cInRleHRcIiAjc2VhcmNoRWxlbWVudFxuICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25LZXlVcCgkZXZlbnQpXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXh0XCJcbiAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgYmctZ3JheS0xMDAgYm9yZGVyLTBcIlxuICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7J1RhYmxlcy5TZWFyY2hQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGV9fVwiIGFyaWEtbGFiZWw9XCJTZWFyY2hcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiYmFzaWMtYWRkb24yXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWFwcGVuZFwiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBiZy1ncmF5LTEwMCBib3JkZXItMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCB0ZXh0LXNlY29uZGFyeVwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiAjZW1wdHlUYWJsZSBjbGFzcz1cImQtbm9uZVwiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi1jaXJjbGUgYmctZ3JheS0zMDAgYm9yZGVyLWdyYXktMTAwXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cImZvbnQtM3hsIHRleHQtZGFya1wiIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5FbXB0eVRhYmxlVGl0bGUnXCI+PC9oND5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1sZyB0ZXh0LWRhcmtcIiBbdHJhbnNsYXRlXT1cIidUYWJsZXMuRW1wdHlUYWJsZU1lc3NhZ2UnXCI+PC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1sZy01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJidG4tdG9vbGJhclwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWdyYXktMTAwXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNsaWRlcnMtaCBwci0yIHRleHQtc2Vjb25kYXJ5XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPnt7J1RhYmxlcy5GaWx0ZXJzJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiAjZHJvcGRvd25GaWx0ZXIgY2xhc3M9XCJkcm9wZG93biBtbC0zXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1ncmF5LTEwMCBkcm9wZG93bi10b2dnbGVcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJkcm9wZG93bkRlZmF1bHRGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGRyb3Bkb3duVG9nZ2xlPlxuICAgICAgICAgICAgICB7eyB0aGlzLmRlZmF1bHRGaWx0ZXIubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duRGVmYXVsdEZpbHRlcnNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiBkZWZhdWx0RmlsdGVyc1wiIChjbGljayk9XCJvbkZpbHRlclNlbGVjdChmaWx0ZXIpXCI+XG4gICAgICAgICAgICAgICAge3sgZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdGV4dC1sZy1yaWdodCBtdC0zIG10LWxnLTAgZC1ub25lXCI+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInRydWVcIiBjbGFzcz1cImJ0biByb3VuZGVkLXBpbGwgYnRuLW91dGxpbmUtdGhlbWVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByLTIgZm9udC1sZ1wiPis8L3NwYW4+PHNwYW4gW3RyYW5zbGF0ZV09XCInVGFibGVzLkFkZEl0ZW0nXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBbbmdDbGFzc109XCJ7ICdjb21wb25lbnQtbG9hZGluZyc6IGxvYWRpbmd9XCI+XG4gICAgICAgIDxhcHAtYWR2YW5jZWQtdGFibGUgI2FkdmFuY2VkVGFibGUgKGluaXQpPVwib25UYWJsZUluaXQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvYWQpPVwib25EYXRhTG9hZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0YWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVTZWxlY3RdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Njcm9sbFhdPVwiZmFsc2VcIiBbc2Nyb2xsWV09XCIzMjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwYWdlTGVuZ3RoXT1cInBhZ2VMZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzY3JvbGxhYmxlXT1cImZhbHNlXCIgW3Nob3dGb290ZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93QWN0aW9uc109XCJmYWxzZVwiIFtsZW5ndGhNZW51XT1cImxlbmd0aE1lbnVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb25maWddPVwidGFibGVDb25maWdcIiBbY29uZmlnU3JjXT1cInRhYmxlQ29uZmlnU3JjXCI+PC9hcHAtYWR2YW5jZWQtdGFibGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG10LTMgdGFibGUtY3VzdG9tLXBhZ2VyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGQtZmxleFwiICpuZ0lmPVwicmVjb3Jkc1RvdGFsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yIG1sLWF1dG8gbXItMyB0ZXh0LXNlY29uZGFyeVwiIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5SZWNvcmRzUGVyUGFnZSdcIj48L2Rpdj5cbiAgICAgICAgPGRpdiAjZHJvcGRvd25MZW5ndGggY2xhc3M9XCJkcm9wZG93biBtci0zXCI+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZ3JheS0xMDAgZHJvcGRvd24tdG9nZ2xlXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBpZD1cImRyb3Bkb3duUGFnZVNpemVcIiBkYXRhLXRvZ2dsZT1cImRyb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgIGRyb3Bkb3duVG9nZ2xlPlxuICAgICAgICAgICAge3twYWdlTGVuZ3RofX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImRyb3Bkb3duUGFnZVNpemVcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInNldExlbmd0aChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBkcm9wZG93bi1pdGVtLXRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxlbmd0aE1lbnVcIj57e2l0ZW19fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgbXItMlwiIFt0cmFuc2xhdGVdPVwiJ1RhYmxlcy5QYWdlSW5mbydcIiBbdHJhbnNsYXRlUGFyYW1zXT1cInBhZ2VJbmZvXCI+PC9kaXY+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInBhZ2VJbmZvICYmIHBhZ2VJbmZvLnBhZ2UgPT09IDBcIiBjbGFzcz1cImJ0biB0ZXh0LW5vd3JhcFwiIChjbGljayk9XCJmaXJzdFBhZ2UoKVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IHRleHQtY29sb3ItdGhlbWVcIj48L2k+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnQgdGV4dC1jb2xvci10aGVtZVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cInBhZ2VJbmZvICYmIHBhZ2VJbmZvLnBhZ2U9PT0wXCIgY2xhc3M9XCJidG5cIiAoY2xpY2spPVwicHJldmlvdXNQYWdlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tbGVmdCB0ZXh0LWNvbG9yLXRoZW1lXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwicGFnZUluZm8gJiYgcGFnZUluZm8ucGFnZT09PXBhZ2VJbmZvLnBhZ2VzLTFcIiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJuZXh0UGFnZSgpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGV2cm9uLXJpZ2h0IHRleHQtY29sb3ItdGhlbWVcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJwYWdlSW5mbyAmJiBwYWdlSW5mby5wYWdlPT09cGFnZUluZm8ucGFnZXMtMVwiIGNsYXNzPVwiYnRuIHRleHQtbm93cmFwXCIgKGNsaWNrKT1cImxhc3RQYWdlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHQgdGV4dC1jb2xvci10aGVtZVwiPjwvaT5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZXZyb24tcmlnaHQgdGV4dC1jb2xvci10aGVtZVwiPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5gO1xuXG4vKipcbiAqXG4gKiBBIHNwZWNpZmljIHZhbHVlIGZvciBhIGNyaXRlcmlvblxuICpcbiAqL1xuaW50ZXJmYWNlIFNlYXJjaEl0ZW0ge1xuICBmaWx0ZXI6IGFueTtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBjb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhcHAtYWR2YW5jZWQtdGFibGUtbW9kYWwnLFxuICB0ZW1wbGF0ZTogQWR2YW5jZWRUYWJsZU1vZGFsQmFzZVRlbXBsYXRlLFxuICBzdHlsZXM6IFtcbiAgICBgXG5cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZUNvbXBvbmVudCBleHRlbmRzIFJvdXRlck1vZGFsT2tDYW5jZWwgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaEVsZW1lbnQgJiYgdGhpcy5zZWFyY2hFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQUxMX0ZJTFRFUiA9IHtcbiAgICBuYW1lOiAnVGFibGVzLkFsbCcsXG4gICAgZmlsdGVyOiBudWxsXG4gIH07XG5cbiAgQFZpZXdDaGlsZCgnYWR2YW5jZWRUYWJsZScpIGFkdmFuY2VkVGFibGU6IEFkdmFuY2VkVGFibGVDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2VtcHR5VGFibGUnKSBlbXB0eVRhYmxlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkZpbHRlcicpIGRyb3Bkb3duRmlsdGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdkcm9wZG93bkxlbmd0aCcpIGRyb3Bkb3duTGVuZ3RoOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzZWFyY2hFbGVtZW50Jykgc2VhcmNoRWxlbWVudDogYW55O1xuICBASW5wdXQoJ3RhYmxlQ29uZmlnJykgdGFibGVDb25maWc6IFRhYmxlQ29uZmlndXJhdGlvbjtcbiAgQElucHV0KCd0YWJsZUNvbmZpZ1NyYycpIHRhYmxlQ29uZmlnU3JjOiBzdHJpbmc7XG4gIEBJbnB1dCgncGFnZUxlbmd0aCcpIHBhZ2VMZW5ndGggPSAyNTtcbiAgQElucHV0KCdzZWFyY2hUZXh0Jykgc2VhcmNoVGV4dDogc3RyaW5nO1xuICBASW5wdXQoJ2xlbmd0aE1lbnUnKSBsZW5ndGhNZW51OiBBcnJheTxudW1iZXI+ID0gWzUsIDEwLCAyNSwgNTAsIDEwMF07XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHB1YmxpYyByZWNvcmRzVG90YWwgPSAwO1xuICBwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xuICBwdWJsaWMgcmVjb3Jkc0ZpbHRlcmVkID0gMDtcbiAgcHVibGljIGRlZmF1bHRGaWx0ZXJzOiBBcnJheTxhbnk+ID0gW0FkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQuREVGQVVMVF9BTExfRklMVEVSXTtcbiAgQElucHV0KCdkZWZhdWx0RmlsdGVyJykgZGVmYXVsdEZpbHRlciA9IEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQuREVGQVVMVF9BTExfRklMVEVSO1xuIFxuXG4gIHB1YmxpYyBwYWdlSW5mbyA9IDxQYWdlSW5mbz57XG4gICAgc2VydmVyU2lkZTogdHJ1ZVxuICB9O1xuICBwcml2YXRlIF90ZW1wbGF0ZTogVGVtcGxhdGVQaXBlO1xuICBjb25maWdDaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgX3JvdXRlcjogUm91dGVyLFxuICAgIF9hY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJvdGVjdGVkIF9jb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgcHJvdGVjdGVkIGFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlcjogQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyLFxuICAgIHByb3RlY3RlZCBkYXRlUGlwZTogRGF0ZVBpcGVcbiAgKSB7XG4gICAgc3VwZXIoX3JvdXRlciwgX2FjdGl2YXRlZFJvdXRlKTtcbiAgICB0aGlzLm1vZGFsQ2xhc3MgPSAnbW9kYWwteGwgbW9kYWwtdGFibGUnO1xuICAgIHRoaXMuX3RlbXBsYXRlID0gbmV3IFRlbXBsYXRlUGlwZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SW5wdXRzKGNvbXBvbmVudFR5cGUpOiBBcnJheTxhbnk+IHtcbiAgICBjb25zdCBwcm9wcyA9IGNvbXBvbmVudFR5cGUuX19wcm9wX19tZXRhZGF0YV9fO1xuICAgIGNvbnN0IGlucHV0cyA9IFtdO1xuICAgIGlmIChwcm9wcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gaW5wdXRzO1xuICAgIH1cbiAgICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGNvbnN0IG1lbWJlciA9IHByb3BzW3Byb3BdWzBdO1xuICAgICAgaWYgKG1lbWJlci5uZ01ldGFkYXRhTmFtZSA9PT0gJ0lucHV0Jykge1xuICAgICAgICBpbnB1dHMucHVzaChwcm9wKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaW5wdXRzLnNvcnQoKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNJbnB1dHMoKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG5cbiAgICB0aGlzLm9rQnV0dG9uVGV4dCA9ICdUYWJsZXMuQXBwbHknO1xuICAgIHRoaXMuY2FuY2VsQnV0dG9uVGV4dCA9ICdUYWJsZXMuQ2FuY2VsJztcbiAgICAvLyBnZXQgcm91dGUgZGF0YVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5kYXRhLnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIC8vIHNldCBtb2RhbCB0aXRsZSBpZiBhbnlcbiAgICAgIGlmIChkYXRhLnRpdGxlKSB7XG4gICAgICAgIHRoaXMubW9kYWxUaXRsZSA9IGRhdGEudGl0bGU7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhLmNvbmZpZykge1xuICAgICAgICB0aGlzLnRhYmxlQ29uZmlnID0gZGF0YS5jb25maWc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50YWJsZUNvbmZpZykge1xuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzLnB1c2guYXBwbHkodGhpcy5kZWZhdWx0RmlsdGVycywgdGhpcy50YWJsZUNvbmZpZy5zZWFyY2hlcyk7XG4gICAgICB9XG4gICAgICAvLyBpbXBvcnRhbnQ6IHVzZSBoYXNJbnB1dHMgZHVlIHRvIEFPVCBjb21waWxhdGlvbi4gTWV0YWRhdGEgcHJvcGVydGllcyBjYW5ub3QgYmUgdXNlZCAoZS5nLiBASW5wdXQoKSlcbiAgICAgIC8vIGJlY2F1c2UgdGhlcmUgYXJlIGVtcHR5IGR1cmluZyBydW50aW1lXG4gICAgICAvLyBzbyB3ZSBuZWVkIHRvIGRlZmluZSBtYW51YWxseSBpbnB1dCBwcm9wZXJ0aWVzIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGJpbmQgdGhyb3VnaCB0aGlzIHByb2Nlc3NcbiAgICAgIC8vIGJpbmQgYWxsIGlucHV0c1xuICAgICAgY29uc3QgaW5wdXRzID0gdGhpcy5oYXNJbnB1dHMoKTtcbiAgICAgIGlucHV0cy5mb3JFYWNoKGlucHV0ID0+IHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBpbnB1dCkpIHtcbiAgICAgICAgICB0aGlzW2lucHV0XSA9IGRhdGFbaW5wdXRdO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5jb25maWdDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5hZHZhbmNlZFRhYmxlLmNvbmZpZ0NoYW5nZXMuc3Vic2NyaWJlKChjb25maWcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMudGFibGVDb25maWcpIHtcbiAgICAgICAgICAvLyByZXNldCBkZWZhdWx0IGZpbHRlclxuICAgICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlciA9IEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQuREVGQVVMVF9BTExfRklMVEVSO1xuICAgICAgICAgIC8vIGluaXQgZmlsdGVyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0RmlsdGVycyA9IFtBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50LkRFRkFVTFRfQUxMX0ZJTFRFUl07XG4gICAgICAgICAgLy8gYWRkIGV4dHJhIGZpbHRlcnNcbiAgICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzLnB1c2guYXBwbHkodGhpcy5kZWZhdWx0RmlsdGVycywgdGhpcy50YWJsZUNvbmZpZy5zZWFyY2hlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWwoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgb2soKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRGF0YUxvYWQoZGF0YTogQWR2YW5jZWRUYWJsZURhdGFSZXN1bHQpIHtcbiAgICB0aGlzLnJlY29yZHNUb3RhbCA9IGRhdGEucmVjb3Jkc1RvdGFsO1xuICAgIHRoaXMucmVjb3Jkc0ZpbHRlcmVkID0gZGF0YS5yZWNvcmRzRmlsdGVyZWQ7XG4gICAgLy8gZ2V0IGZpcnN0IHBhZ2UgaW5mbyAoYmVjYXVzZSBwYWdlIGlzIG5vdCBnb2luZyB0byBiZSBmaXJlZCBmb3IgZmlyc3QgcGFnZSlcbiAgICBpZiAoZGF0YS5yZWNvcmRzVG90YWwgPiAwICYmIHRoaXMucGFnZUluZm8ucmVjb3Jkc1RvdGFsID09PSAwKSB7XG4gICAgICB0aGlzLnBhZ2VJbmZvLnJlY29yZHNUb3RhbCA9IGRhdGEucmVjb3Jkc1RvdGFsO1xuICAgIH1cbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgfVxuXG4gIHByZXZpb3VzUGFnZSgpIHtcbiAgICAvLyBnbyB0byBuZXh0IHBhZ2VcbiAgICAvLyBub2luc3BlY3Rpb24gVHlwZVNjcmlwdFZhbGlkYXRlSlNUeXBlc1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5kYXRhVGFibGUucGFnZSgncHJldmlvdXMnKS5kcmF3KCdwYWdlJyk7XG4gIH1cblxuICBuZXh0UGFnZSgpIHtcbiAgICAvLyBnbyB0byBuZXh0IHBhZ2VcbiAgICAvLyBub2luc3BlY3Rpb24gVHlwZVNjcmlwdFZhbGlkYXRlSlNUeXBlc1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5kYXRhVGFibGUucGFnZSgnbmV4dCcpLmRyYXcoJ3BhZ2UnKTtcbiAgfVxuXG4gIG9uVGFibGVJbml0KCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIGNvbnN0IGRhdGFUYWJsZSA9IHNlbGYuYWR2YW5jZWRUYWJsZS5kYXRhVGFibGU7XG4gICAgLy8gZ2V0IGluaXRpYWwgcGFnZSBpbmZvXG4gICAgY29uc3QgaW5pdGlhbFBhZ2VJbmZvID0gPFBhZ2VJbmZvPmRhdGFUYWJsZS5wYWdlLmluZm8oKTtcbiAgICBpbml0aWFsUGFnZUluZm8uc3RhcnQgKz0gMTtcbiAgICBzZWxmLnBhZ2VJbmZvID0gaW5pdGlhbFBhZ2VJbmZvO1xuICAgIC8vIGNoYW5nZSBlbXB0eVRhYmxlTWVzc2FnZVxuICAgIGRhdGFUYWJsZS5jb250ZXh0WzBdLm9MYW5ndWFnZS5zRW1wdHlUYWJsZSA9IHRoaXMuZW1wdHlUYWJsZS5uYXRpdmVFbGVtZW50LmlubmVySFRNTDtcbiAgICAvLyBiaW5kIHBhZ2UgY2hhbmdlIGV2ZW50XG4gICAgZGF0YVRhYmxlLm9uKCdwYWdlLmR0JywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgcGFnZUluZm8gPSA8UGFnZUluZm8+ZGF0YVRhYmxlLnBhZ2UuaW5mbygpO1xuICAgICAgcGFnZUluZm8uc3RhcnQgKz0gMTtcbiAgICAgIHNlbGYucGFnZUluZm8gPSBwYWdlSW5mbztcbiAgICB9KTtcbiAgICAvLyBiaW5kIGRyYXcgY2hhbmdlIGV2ZW50XG4gICAgZGF0YVRhYmxlLm9uKCdkcmF3LmR0JywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZm9yIGZ1dHVyZSB1c2VcbiAgICAgIHNlbGYubG9hZGluZyA9IGZhbHNlO1xuICAgICAgY29uc3QgcGFnZUluZm8gPSA8UGFnZUluZm8+ZGF0YVRhYmxlLnBhZ2UuaW5mbygpO1xuICAgICAgcGFnZUluZm8uc3RhcnQgKz0gMTtcbiAgICAgIHNlbGYucGFnZUluZm8gPSBwYWdlSW5mbztcbiAgICB9KTtcbiAgfVxuXG4gIGZpcnN0UGFnZSgpIHtcbiAgICAvLyBnbyB0byBmaXJzdCBwYWdlXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZUpTVHlwZXNcbiAgICB0aGlzLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlLnBhZ2UoJ2ZpcnN0JykuZHJhdygncGFnZScpO1xuICB9XG5cbiAgbGFzdFBhZ2UoKSB7XG4gICAgLy8gZ28gdG8gbGFzdCBwYWdlXG4gICAgLy8gbm9pbnNwZWN0aW9uIFR5cGVTY3JpcHRWYWxpZGF0ZUpTVHlwZXNcbiAgICB0aGlzLmFkdmFuY2VkVGFibGUuZGF0YVRhYmxlLnBhZ2UoJ2xhc3QnKS5kcmF3KCdwYWdlJyk7XG4gIH1cblxuICBzZXRMZW5ndGgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMucGFnZUxlbmd0aCA9IHZhbHVlO1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5kYXRhVGFibGUucGFnZS5sZW4odmFsdWUpLmRyYXcoKTtcbiAgfVxuXG4gIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInIHx8IGV2ZW50LmtleSA9PT0gJ1JldHVybicpIHtcbiAgICAgIC8vIGxvYWRpbmdcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmFkdmFuY2VkVGFibGUuc2VhcmNoKCg8SFRNTElucHV0RWxlbWVudD5ldmVudC50YXJnZXQpLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaCgpIHtcbiAgICAvLyBsb2FkaW5nXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmFkdmFuY2VkVGFibGUuc2VhcmNoKHRoaXMuc2VhcmNoVGV4dCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogUmVhZHMgdGhlIG1vZGFsIHRhYmxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBmaWx0ZXJzIHRvIHVzZSBpbiB0aGUgdGFibGVcbiAgICogcXVlcnkuXG4gICAqXG4gICAqIEBwYXJhbSB0YWJsZUNvbmZpZyB7b2JqZWN0fSBUaGUgdGFibGUgY29uZmlndXJhdGlvbiBmcm9tIGpzb24gZmlsZVxuICAgKiBAcGFyYW0gZGVmYXVsdEZpbHRlclZhbHVlcyB7b2JqZWN0fSBBIGxpc3Qgb2YgZGVmYXVsdCBmaWx0ZXJzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzZWFyY2hJdGVtIFRoZSBzZWFyY2hJdGVtIHRvIHVzZVxuICAgKlxuICAgKi9cbiAgZ2V0RmlsdGVycyhcbiAgICB0YWJsZUNvbmZpZzogYW55LFxuICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZXMgPSB7fSxcbiAgICBzZWFyY2hJdGVtOiBhbnlcbiAgKTogQXJyYXk8c3RyaW5nPiB7XG4gICAgLy8gRG8gbm90aGluZyBpbiBhYnNlbmNlIG9mIGNvbmZpZ3VyYXRpb24uXG4gICAgaWYgKCF0YWJsZUNvbmZpZyB8fCAhQXJyYXkuaXNBcnJheSh0YWJsZUNvbmZpZy5jcml0ZXJpYSkpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoc2VhcmNoSXRlbS5maWx0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoZWRDcml0ZXJpb24gPSB0YWJsZUNvbmZpZy5jcml0ZXJpYS5maW5kKGNyaXRlcmlvbiA9PlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNlYXJjaEl0ZW0uZmlsdGVyLCBjcml0ZXJpb24ubmFtZSlcbiAgICApO1xuXG4gICAgaWYgKG1hdGNoZWRDcml0ZXJpb24gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gc2VhcmNoSXRlbS5maWx0ZXJbbWF0Y2hlZENyaXRlcmlvbi5uYW1lXTtcblxuICAgIGNvbnN0IGNyaXRlcmlvblNhZmVOYW1lID0gbWF0Y2hlZENyaXRlcmlvbi5uYW1lICE9PSBudWxsXG4gICAgICA/IG1hdGNoZWRDcml0ZXJpb24ubmFtZS50b1N0cmluZygpXG4gICAgICA6ICcnO1xuXG4gICAgbGV0IGFwcGxpY2FibGVGaWx0ZXI6IHN0cmluZztcblxuICAgIC8vIFJhdyBkYXRlcyBzaG91bGQgYmUgdHJhbnNmb3JtZWQgdG8gYSBzcGVjaWZpYyBmb3JtYXRcbiAgICBpZiAoY3JpdGVyaW9uU2FmZU5hbWUuaW5jbHVkZXMoJ0dNVCcpKSB7XG4gICAgICBjb25zdCBuZXdEYXRlID0gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3JpdGVyaW9uU2FmZU5hbWUsICdNTS9kZC95eXl5Jyk7XG4gICAgICBhcHBsaWNhYmxlRmlsdGVyID0gdGhpcy5fdGVtcGxhdGUudHJhbnNmb3JtKG1hdGNoZWRDcml0ZXJpb24uZmlsdGVyLCB7XG4gICAgICAgIHZhbHVlOiBuZXdEYXRlXG4gICAgICB9KTtcblxuICAgIH0gZWxzZSBpZiAoY3JpdGVyaW9uU2FmZU5hbWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBhcHBsaWNhYmxlRmlsdGVyID0gKHRoaXMuX3RlbXBsYXRlLnRyYW5zZm9ybShtYXRjaGVkQ3JpdGVyaW9uLmZpbHRlciwgT2JqZWN0LmFzc2lnbih7XG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgfSwgZGVmYXVsdEZpbHRlclZhbHVlcykpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwbGljYWJsZUZpbHRlciA9ICcnO1xuICAgIH1cblxuICAgIHJldHVybiBbYXBwbGljYWJsZUZpbHRlcl07XG4gIH1cblxuICBvbkZpbHRlclNlbGVjdCh2YWx1ZTogeyBmaWx0ZXI6IGFueTsgbmFtZTogc3RyaW5nIH0gfCBhbnkpIHtcbiAgICB0aGlzLmFkdmFuY2VkU2VhcmNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBSdW5zIGEgZmlsdGVyIGFnYWluc3QgdGhlIG1vZGFsIHRhYmxlXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmaWx0ZXIgVGhlIGZpbHRlciB0byB1c2UgaW4gdGhlIHNlYXJjaFxuICAgKlxuICAgKi9cbiAgYXN5bmMgYWR2YW5jZWRTZWFyY2goZmlsdGVyKTogUHJvbWlzZTxhbnk+IHtcbiAgICAvLyBEbyBub3RoaW5nIGluIGFic2VuY2Ugb2YgY29uZmlndXJhdGlvbi5cbiAgICBpZiAoIXRoaXMudGFibGVDb25maWcgJiYgIUFycmF5LmlzQXJyYXkodGhpcy50YWJsZUNvbmZpZy5jcml0ZXJpYSkpIHtcbiAgICAgIGNvbnNvbGUud2FybignTm8gdGFibGUgY29uZmlndXJhdGlvbiBhdmFpbGFibGUnLCB0aGlzLnRhYmxlQ29uZmlnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBbiBhZHZhbmNlZCB0YWJsZSBoYXMgc29tZSBmaWx0ZXJzIGJ5IGRlZmF1bHRcbiAgICBsZXQgZGVmYXVsdEZpbHRlclZhbHVlcztcbiAgICB0cnkge1xuICAgICAgZGVmYXVsdEZpbHRlclZhbHVlcyA9IGF3YWl0IHRoaXMuYWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyLmdldFZhbHVlcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZGVmYXVsdEZpbHRlclZhbHVlcyA9IHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGV4cHJlc3Npb25zID0gW107XG4gICAgbGV0IHByZWRlZmluZWRDcml0ZXJpYTtcbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBwcmVkZWZpbmVkQ3JpdGVyaWEgPSB0aGlzLmdldEZpbHRlcnMoXG4gICAgICAgIHRoaXMudGFibGVDb25maWcsXG4gICAgICAgIGRlZmF1bHRGaWx0ZXJWYWx1ZXMsXG4gICAgICAgIGZpbHRlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRW1wdHkgYSBmYWxzeSBmaWx0ZXIgcmVzZXRzIHRoZSByZXN1bHRzXG4gICAgICB0aGlzLmRlZmF1bHRGaWx0ZXIgPSBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50LkRFRkFVTFRfQUxMX0ZJTFRFUjtcbiAgICB9XG5cbiAgICAvLyBzZWFyY2ggZmlsdGVyIGlzIGFwcGxpZWQgc2VwYXJhdGVseSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhZGQgaGVyZS5cbiAgICBleHByZXNzaW9ucy5wdXNoKHByZWRlZmluZWRDcml0ZXJpYSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHRoaXMuX2NvbnRleHQubW9kZWwodGhpcy5hZHZhbmNlZFRhYmxlLmNvbmZpZy5tb2RlbCkuYXNRdWVyeWFibGUoKTtcbiAgICBxdWVyeS5zZXRQYXJhbSgnZmlsdGVyJywgZXhwcmVzc2lvbnMuam9pbignIGFuZCAnKSkucHJlcGFyZSgpO1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5xdWVyeSA9IHF1ZXJ5O1xuICAgIHRoaXMuYWR2YW5jZWRUYWJsZS5mZXRjaCgpO1xuICB9XG59XG5cbiJdfQ==
@@ -3,17 +3,27 @@ import { AdvancedTableModalBaseComponent } from '../advanced-table-modal/advance
3
3
  import { ActivatedRoute, Router } from '@angular/router';
4
4
  import { AdvancedFilterValueProvider } from '../advanced-table/advanced-filter-value-provider.service';
5
5
  import { AngularDataContext } from '@themost/angular';
6
- import { Component, EventEmitter, ViewEncapsulation } from '@angular/core';
6
+ import { Component, ElementRef, EventEmitter, ViewChild, ViewEncapsulation } from '@angular/core';
7
7
  import { BsModalRef } from 'ngx-bootstrap/modal';
8
8
  import { DatePipe } from '@angular/common';
9
9
  var AdvancedSelectComponent = /** @class */ (function (_super) {
10
10
  tslib_1.__extends(AdvancedSelectComponent, _super);
11
- function AdvancedSelectComponent(router, activatedRoute, context, advancedFilterValueProvider, datePipe, _modalRef) {
11
+ function AdvancedSelectComponent(router, activatedRoute, context, advancedFilterValueProvider, datePipe, _modalRef, el) {
12
12
  var _this = _super.call(this, router, activatedRoute, context, advancedFilterValueProvider, datePipe) || this;
13
13
  _this._modalRef = _modalRef;
14
+ _this.el = el;
14
15
  _this.dismiss = new EventEmitter();
15
16
  return _this;
16
17
  }
18
+ AdvancedSelectComponent.prototype.ngAfterViewInit = function () {
19
+ var _this = this;
20
+ _super.prototype.ngAfterViewInit.call(this);
21
+ setTimeout(function () {
22
+ if (_this.searchElement && _this.searchElement.nativeElement) {
23
+ _this.searchElement.nativeElement.focus();
24
+ }
25
+ }, 0);
26
+ };
17
27
  AdvancedSelectComponent.prototype.ok = function () {
18
28
  return tslib_1.__awaiter(this, void 0, void 0, function () {
19
29
  return tslib_1.__generator(this, function (_a) {
@@ -36,7 +46,7 @@ var AdvancedSelectComponent = /** @class */ (function (_super) {
36
46
  { type: Component, args: [{
37
47
  // tslint:disable-next-line: component-selector
38
48
  selector: 'app-advanced-select',
39
- template: "<div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" class=\"close\" data-dismiss=\"modal\"\n aria-label=\"Cancel\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\"\n class=\"form-control bg-gray-100 border-0\" placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\"\n aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div class=\"dropdown ml-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\">\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <a class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\"\n (click)=\"advancedSearch(filter.filter ? filter : '')\">\n {{ filter.name | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\" (load)=\"onDataLoad($event)\"\n [autoLoad]=\"true\"\n [selectable]=\"true\" [multipleSelect]=\"true\" [scrollX]=\"false\" [scrollY]=\"320\" [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\" [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div class=\"dropdown mr-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownPageSize\"\n data-toggle=\"dropdown\">\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\" class=\"dropdown-item dropdown-item-theme\" type=\"button\"\n *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\"\n (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\" type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\"\n data-dismiss=\"modal\">\n {{ cancelButtonText | translate}}\n </button>\n</div>\n",
49
+ template: "<div class=\"modal-header\" *ngIf=\"modalTitle\">\n <h5 class=\"modal-title\">{{modalTitle | translate}}</h5>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" class=\"close\" data-dismiss=\"modal\"\n aria-label=\"Cancel\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n</div>\n<div class=\"modal-body\">\n <div>\n <!-- search -->\n <div class=\"row mt-3\">\n <div class=\"col-12 col-lg-3\">\n <div class=\"input-group mb-3\">\n <input spellcheck=\"false\" type=\"text\" #searchElement (keyup)=\"onKeyUp($event)\" [(ngModel)]=\"searchText\" \n class=\"form-control bg-gray-100 border-0\" placeholder=\"{{'Tables.SearchPlaceholder' | translate}}\"\n aria-label=\"Search\" aria-describedby=\"basic-addon2\">\n <div class=\"input-group-append\">\n <button class=\"btn btn-default bg-gray-100 border-0\" type=\"button\" (click)=\"onSearch()\">\n <i class=\"fa fa-search text-secondary\"></i>\n </button>\n </div>\n </div>\n </div>\n <div #emptyTable class=\"d-none\">\n <div>\n <div class=\"mt-4\">\n <div class=\"icon-circle bg-gray-300 border-gray-100\"></div>\n </div>\n <div class=\"mt-4\">\n <h4 class=\"font-3xl text-dark\" [translate]=\"'Tables.EmptyTableTitle'\"></h4>\n <p class=\"font-lg text-dark\" [translate]=\"'Tables.EmptyTableMessage'\"></p>\n </div>\n\n </div>\n </div>\n <div class=\"col-12 col-lg-5\">\n <div class=\"btn-toolbar\">\n <button class=\"btn btn-gray-100\">\n <i class=\"fa fa-sliders-h pr-2 text-secondary\" aria-hidden=\"true\"></i>{{'Tables.Filters' | translate}}\n </button>\n <div class=\"dropdown ml-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownDefaultFilters\"\n data-toggle=\"dropdown\">\n {{ this.defaultFilter.name | translate }}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownDefaultFilters\">\n <a class=\"dropdown-item\" *ngFor=\"let filter of defaultFilters\"\n (click)=\"advancedSearch(filter.filter ? filter : '')\">\n {{ filter.name | translate }}\n </a>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col text-lg-right mt-3 mt-lg-0 d-none\">\n <button [disabled]=\"true\" class=\"btn rounded-pill btn-outline-theme\">\n <span class=\"pr-2 font-lg\">+</span><span [translate]=\"'Tables.AddItem'\"></span>\n </button>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-12\" [ngClass]=\"{ 'component-loading': loading}\">\n <app-advanced-table #advancedTable (init)=\"onTableInit()\" (load)=\"onDataLoad($event)\"\n [autoLoad]=\"true\"\n [selectable]=\"true\" [multipleSelect]=\"true\" [scrollX]=\"false\" [scrollY]=\"320\" [pageLength]=\"pageLength\"\n [scrollable]=\"false\" [showFooter]=\"false\" [showActions]=\"false\" [lengthMenu]=\"lengthMenu\"\n [config]=\"tableConfig\" [configSrc]=\"tableConfigSrc\"></app-advanced-table>\n </div>\n </div>\n <div class=\"row mt-3 table-custom-pager\">\n <div class=\"col-12 d-flex\" *ngIf=\"recordsTotal\">\n <div class=\"mt-2 ml-auto mr-3 text-secondary\" [translate]=\"'Tables.RecordsPerPage'\"></div>\n <div class=\"dropdown mr-3\">\n <button dropdownToggle class=\"btn btn-gray-100 dropdown-toggle\" type=\"button\" id=\"dropdownPageSize\"\n data-toggle=\"dropdown\">\n {{pageLength}}\n </button>\n <div class=\"dropdown-menu\" aria-labelledby=\"dropdownPageSize\">\n <button (click)=\"setLength(item)\" class=\"dropdown-item dropdown-item-theme\" type=\"button\"\n *ngFor=\"let item of lengthMenu\">{{item}}</button>\n </div>\n </div>\n <div class=\"mt-2 mr-2\" [translate]=\"'Tables.PageInfo'\" [translateParams]=\"pageInfo\"></div>\n <button [disabled]=\"pageInfo && pageInfo.page === 0\" class=\"btn text-nowrap\" (click)=\"firstPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===0\" class=\"btn\" (click)=\"previousPage()\">\n <i class=\"fa fa-chevron-left text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn\" (click)=\"nextPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n <button [disabled]=\"pageInfo && pageInfo.page===pageInfo.pages-1\" class=\"btn text-nowrap\"\n (click)=\"lastPage()\">\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n <i class=\"fa fa-chevron-right text-color-theme\"></i>\n </button>\n </div>\n </div>\n </div>\n</div>\n<div class=\"modal-footer justify-content-end\">\n <button [disabled]=\"okButtonDisabled\" (click)=\"ok()\" type=\"button\" [ngClass]=\"okButtonClass\">\n {{okButtonText | translate}}\n </button>\n <button [disabled]=\"cancelButtonDisabled\" (click)=\"cancel()\" type=\"button\" [ngClass]=\"cancelButtonClass\"\n data-dismiss=\"modal\">\n {{ cancelButtonText | translate}}\n </button>\n</div>\n",
40
50
  encapsulation: ViewEncapsulation.None,
41
51
  styles: ["\n .modal-table .dataTables_wrapper {\n height: 50vh;\n overflow-y: auto;\n }\n "]
42
52
  }] }
@@ -48,10 +58,14 @@ var AdvancedSelectComponent = /** @class */ (function (_super) {
48
58
  { type: AngularDataContext },
49
59
  { type: AdvancedFilterValueProvider },
50
60
  { type: DatePipe },
51
- { type: BsModalRef }
61
+ { type: BsModalRef },
62
+ { type: ElementRef }
52
63
  ]; };
64
+ AdvancedSelectComponent.propDecorators = {
65
+ searchElement: [{ type: ViewChild, args: ['searchElement',] }]
66
+ };
53
67
  return AdvancedSelectComponent;
54
68
  }(AdvancedTableModalBaseComponent));
55
69
  export { AdvancedSelectComponent };
56
70
 
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXNlbGVjdC9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0M7SUFjNkMsbURBQStCO0lBSTFFLGlDQUFZLE1BQWMsRUFDZCxjQUE4QixFQUM5QixPQUEyQixFQUMzQiwyQkFBd0QsRUFDeEQsUUFBa0IsRUFDVixTQUFxQjtRQUx6QyxZQU1FLGtCQUFNLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsQ0FBQyxTQUM5RTtRQUZtQixlQUFTLEdBQVQsU0FBUyxDQUFZO1FBUGxDLGFBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQzs7SUFTdkQsQ0FBQztJQUVZLG9DQUFFLEdBQWY7OztnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OztLQUN6QjtJQUVZLHdDQUFNLEdBQW5COzs7Z0JBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7S0FDN0I7O2dCQW5DRixTQUFTLFNBQUM7b0JBQ1QsK0NBQStDO29CQUMvQyxRQUFRLEVBQUUscUJBQXFCO29CQUMvQix5bUxBQStDO29CQVMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs2QkFQbkMscUdBS0M7aUJBR0o7Ozs7Z0JBcEJ3QixNQUFNO2dCQUF0QixjQUFjO2dCQUVkLGtCQUFrQjtnQkFEbEIsMkJBQTJCO2dCQUkzQixRQUFRO2dCQURSLFVBQVU7O0lBd0NuQiw4QkFBQztDQUFBLEFBckNELENBYzZDLCtCQUErQixHQXVCM0U7U0F2QlksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWR2YW5jZWRUYWJsZU1vZGFsQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlLW1vZGFsL2FkdmFuY2VkLXRhYmxlLW1vZGFsLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyIH0gZnJvbSAnLi4vYWR2YW5jZWQtdGFibGUvYWR2YW5jZWQtZmlsdGVyLXZhbHVlLXByb3ZpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5ndWxhckRhdGFDb250ZXh0IH0gZnJvbSAnQHRoZW1vc3QvYW5ndWxhcic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgLm1vZGFsLXRhYmxlIC5kYXRhVGFibGVzX3dyYXBwZXIge1xuICAgICAgaGVpZ2h0OiA1MHZoO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gICAgYCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50IHtcblxuICBwdWJsaWMgZGlzbWlzczogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3Iocm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgICAgICAgY29udGV4dDogQW5ndWxhckRhdGFDb250ZXh0LFxuICAgICAgICAgICAgICBhZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXI6IEFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlcixcbiAgICAgICAgICAgICAgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9tb2RhbFJlZjogQnNNb2RhbFJlZikge1xuICAgIHN1cGVyKHJvdXRlciwgYWN0aXZhdGVkUm91dGUsIGNvbnRleHQsIGFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlciwgZGF0ZVBpcGUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG9rKCkge1xuICAgIHRoaXMuX21vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgnb2snKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5jZWwoKSB7XG4gICAgdGhpcy5fbW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuZGlzbWlzcy5lbWl0KCdjYW5jZWwnKTtcbiAgfVxuXG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQtc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B1bml2ZXJzaXMvbmd4LXRhYmxlcy8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FkdmFuY2VkLXNlbGVjdC9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM5RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0M7SUFjNkMsbURBQStCO0lBSzFFLGlDQUFZLE1BQWMsRUFDeEIsY0FBOEIsRUFDOUIsT0FBMkIsRUFDM0IsMkJBQXdELEVBQ3hELFFBQWtCLEVBQ1YsU0FBcUIsRUFDckIsRUFBYztRQU54QixZQU9FLGtCQUFNLE1BQU0sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLFFBQVEsQ0FBQyxTQUM5RTtRQUhTLGVBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsUUFBRSxHQUFGLEVBQUUsQ0FBWTtRQVRqQixhQUFPLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7O0lBV3ZELENBQUM7SUFFRCxpREFBZSxHQUFmO1FBQUEsaUJBT0M7UUFOQyxpQkFBTSxlQUFlLFdBQUUsQ0FBQztRQUN4QixVQUFVLENBQUM7WUFDVCxJQUFJLEtBQUksQ0FBQyxhQUFhLElBQUksS0FBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEVBQUU7Z0JBQzFELEtBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQzFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVZLG9DQUFFLEdBQWY7OztnQkFDRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OztLQUN6QjtJQUVZLHdDQUFNLEdBQW5COzs7Z0JBQ0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Ozs7S0FDN0I7O2dCQTlDRixTQUFTLFNBQUM7b0JBQ1QsK0NBQStDO29CQUMvQyxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixncExBQStDO29CQVMvQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTs2QkFQbkMscUdBS0M7aUJBR0o7Ozs7Z0JBcEJ3QixNQUFNO2dCQUF0QixjQUFjO2dCQUVkLGtCQUFrQjtnQkFEbEIsMkJBQTJCO2dCQUkzQixRQUFRO2dCQURSLFVBQVU7Z0JBRGdCLFVBQVU7OztnQ0FxQjFDLFNBQVMsU0FBQyxlQUFlOztJQStCNUIsOEJBQUM7Q0FBQSxBQWhERCxDQWM2QywrQkFBK0IsR0FrQzNFO1NBbENZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkdmFuY2VkVGFibGVNb2RhbEJhc2VDb21wb25lbnQgfSBmcm9tICcuLi9hZHZhbmNlZC10YWJsZS1tb2RhbC9hZHZhbmNlZC10YWJsZS1tb2RhbC1iYXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEFkdmFuY2VkRmlsdGVyVmFsdWVQcm92aWRlciB9IGZyb20gJy4uL2FkdmFuY2VkLXRhYmxlL2FkdmFuY2VkLWZpbHRlci12YWx1ZS1wcm92aWRlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJEYXRhQ29udGV4dCB9IGZyb20gJ0B0aGVtb3N0L2FuZ3VsYXInO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYXBwLWFkdmFuY2VkLXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9hZHZhbmNlZC1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgLm1vZGFsLXRhYmxlIC5kYXRhVGFibGVzX3dyYXBwZXIge1xuICAgICAgaGVpZ2h0OiA1MHZoO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG4gICAgYCxcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgQWR2YW5jZWRTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBBZHZhbmNlZFRhYmxlTW9kYWxCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgcHVibGljIGRpc21pc3M6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAVmlld0NoaWxkKCdzZWFyY2hFbGVtZW50Jykgc2VhcmNoRWxlbWVudDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHJvdXRlcjogUm91dGVyLFxuICAgIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBjb250ZXh0OiBBbmd1bGFyRGF0YUNvbnRleHQsXG4gICAgYWR2YW5jZWRGaWx0ZXJWYWx1ZVByb3ZpZGVyOiBBZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIsXG4gICAgZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgIHByaXZhdGUgX21vZGFsUmVmOiBCc01vZGFsUmVmLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihyb3V0ZXIsIGFjdGl2YXRlZFJvdXRlLCBjb250ZXh0LCBhZHZhbmNlZEZpbHRlclZhbHVlUHJvdmlkZXIsIGRhdGVQaXBlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnNlYXJjaEVsZW1lbnQgJiYgdGhpcy5zZWFyY2hFbGVtZW50Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBvaygpIHtcbiAgICB0aGlzLl9tb2RhbFJlZi5oaWRlKCk7XG4gICAgdGhpcy5kaXNtaXNzLmVtaXQoJ29rJyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuY2VsKCkge1xuICAgIHRoaXMuX21vZGFsUmVmLmhpZGUoKTtcbiAgICB0aGlzLmRpc21pc3MuZW1pdCgnY2FuY2VsJyk7XG4gIH1cblxufVxuIl19