@sd-angular/core 1.1.85 → 1.1.89

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.
Files changed (92) hide show
  1. package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
  2. package/autocomplete/src/lib/autocomplete.component.d.ts +0 -1
  3. package/bundles/sd-angular-core-autocomplete.umd.js +10 -10
  4. package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
  5. package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
  6. package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
  7. package/bundles/sd-angular-core-chip.umd.js +13 -19
  8. package/bundles/sd-angular-core-chip.umd.js.map +1 -1
  9. package/bundles/sd-angular-core-chip.umd.min.js +2 -2
  10. package/bundles/sd-angular-core-chip.umd.min.js.map +1 -1
  11. package/bundles/sd-angular-core-date-range.umd.js +8 -1
  12. package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
  13. package/bundles/sd-angular-core-date-range.umd.min.js +1 -1
  14. package/bundles/sd-angular-core-date-range.umd.min.js.map +1 -1
  15. package/bundles/sd-angular-core-date-time.umd.js +6 -6
  16. package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
  17. package/bundles/sd-angular-core-date-time.umd.min.js +1 -1
  18. package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
  19. package/bundles/sd-angular-core-grid.umd.js +6 -6
  20. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  21. package/bundles/sd-angular-core-grid.umd.min.js +1 -1
  22. package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
  23. package/bundles/sd-angular-core-input-currency.umd.js +1 -1
  24. package/bundles/sd-angular-core-input-currency.umd.js.map +1 -1
  25. package/bundles/sd-angular-core-input-currency.umd.min.js +1 -1
  26. package/bundles/sd-angular-core-input-currency.umd.min.js.map +1 -1
  27. package/bundles/sd-angular-core-input.umd.js +1 -1
  28. package/bundles/sd-angular-core-input.umd.js.map +1 -1
  29. package/bundles/sd-angular-core-input.umd.min.js +1 -1
  30. package/bundles/sd-angular-core-input.umd.min.js.map +1 -1
  31. package/bundles/sd-angular-core-select-editor.umd.js +1 -1
  32. package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
  33. package/bundles/sd-angular-core-select-editor.umd.min.js +1 -1
  34. package/bundles/sd-angular-core-select-editor.umd.min.js.map +1 -1
  35. package/bundles/sd-angular-core-select.umd.js +1 -1
  36. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  37. package/bundles/sd-angular-core-select.umd.min.js +1 -1
  38. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  39. package/bundles/sd-angular-core-textarea.umd.js +9 -6
  40. package/bundles/sd-angular-core-textarea.umd.js.map +1 -1
  41. package/bundles/sd-angular-core-textarea.umd.min.js +2 -2
  42. package/bundles/sd-angular-core-textarea.umd.min.js.map +1 -1
  43. package/chip/sd-angular-core-chip.metadata.json +1 -1
  44. package/chip/src/lib/chip.component.d.ts +7 -4
  45. package/date-range/sd-angular-core-date-range.metadata.json +1 -1
  46. package/date-range/src/lib/date-range.component.d.ts +1 -0
  47. package/date-time/sd-angular-core-date-time.metadata.json +1 -1
  48. package/date-time/src/lib/date-time.component.d.ts +2 -2
  49. package/esm2015/autocomplete/src/lib/autocomplete.component.js +2 -2
  50. package/esm2015/chip/src/lib/chip.component.js +16 -22
  51. package/esm2015/date-range/src/lib/date-range.component.js +5 -2
  52. package/esm2015/date-time/src/lib/date-time.component.js +7 -7
  53. package/esm2015/grid/src/lib/components/grid-config/grid-config.component.js +2 -2
  54. package/esm2015/grid/src/lib/components/grid-desktop-column-edit/grid-desktop-column-edit.component.js +2 -2
  55. package/esm2015/grid/src/lib/components/grid-desktop-inline-filter/grid-desktop-inline-filter.component.js +2 -2
  56. package/esm2015/grid/src/lib/components/grid-popup-editor/grid-popup-editor.component.js +2 -2
  57. package/esm2015/grid/src/lib/components/grid-popup-filter/grid-popup-filter.component.js +2 -2
  58. package/esm2015/grid/src/lib/components/grid-popup-quick-filter-detail/grid-popup-quick-filter-detail.component.js +2 -2
  59. package/esm2015/input/src/lib/input.component.js +2 -2
  60. package/esm2015/input-currency/src/lib/input-currency.component.js +2 -2
  61. package/esm2015/select/src/lib/select.component.js +2 -2
  62. package/esm2015/select-editor/src/lib/select-editor.component.js +2 -2
  63. package/esm2015/textarea/src/lib/textarea.component.js +12 -9
  64. package/fesm2015/sd-angular-core-autocomplete.js +1 -1
  65. package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
  66. package/fesm2015/sd-angular-core-chip.js +15 -21
  67. package/fesm2015/sd-angular-core-chip.js.map +1 -1
  68. package/fesm2015/sd-angular-core-date-range.js +4 -1
  69. package/fesm2015/sd-angular-core-date-range.js.map +1 -1
  70. package/fesm2015/sd-angular-core-date-time.js +6 -6
  71. package/fesm2015/sd-angular-core-date-time.js.map +1 -1
  72. package/fesm2015/sd-angular-core-grid.js +6 -6
  73. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  74. package/fesm2015/sd-angular-core-input-currency.js +1 -1
  75. package/fesm2015/sd-angular-core-input-currency.js.map +1 -1
  76. package/fesm2015/sd-angular-core-input.js +1 -1
  77. package/fesm2015/sd-angular-core-input.js.map +1 -1
  78. package/fesm2015/sd-angular-core-select-editor.js +1 -1
  79. package/fesm2015/sd-angular-core-select-editor.js.map +1 -1
  80. package/fesm2015/sd-angular-core-select.js +1 -1
  81. package/fesm2015/sd-angular-core-select.js.map +1 -1
  82. package/fesm2015/sd-angular-core-textarea.js +11 -8
  83. package/fesm2015/sd-angular-core-textarea.js.map +1 -1
  84. package/grid/sd-angular-core-grid.metadata.json +1 -1
  85. package/input/sd-angular-core-input.metadata.json +1 -1
  86. package/input-currency/sd-angular-core-input-currency.metadata.json +1 -1
  87. package/package.json +1 -1
  88. package/{sd-angular-core-1.1.85.tgz → sd-angular-core-1.1.89.tgz} +0 -0
  89. package/select/sd-angular-core-select.metadata.json +1 -1
  90. package/select-editor/sd-angular-core-select-editor.metadata.json +1 -1
  91. package/textarea/sd-angular-core-textarea.metadata.json +1 -1
  92. package/textarea/src/lib/textarea.component.d.ts +5 -2
@@ -35,7 +35,7 @@ export class SdGridPopupEditor {
35
35
  SdGridPopupEditor.decorators = [
36
36
  { type: Component, args: [{
37
37
  selector: 'sd-grid-popup-editor',
38
- template: "<sd-modal [title]=\"(isModified ? 'Edit' : 'Create')\" width=\"sm\" #modal>\r\n <sd-modal-body *ngIf=\"item && columns?.length\">\r\n <form #formEditor=\"ngForm\">\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div *ngIf=\"column | editorPopupVisible:item\" class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [(model)]=\"item[column.field]\"></sd-input>\r\n <sd-input-number *ngIf=\"column.type === 'number'\" [(model)]=\"item[column.field]\">\r\n </sd-input-number>\r\n <sd-select *ngIf=\"column.type === 'values'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n <sd-switch *ngIf=\"column.type === 'boolean'\" [(model)]=\"item[column.field]\">\r\n </sd-switch>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </form>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\"\r\n width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>"
38
+ template: "<sd-modal [title]=\"(isModified ? 'Edit' : 'Create')\" width=\"sm\" #modal>\r\n <sd-modal-body *ngIf=\"item && columns?.length\">\r\n <form #formEditor=\"ngForm\">\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div *ngIf=\"column | editorPopupVisible:item\" class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [(model)]=\"item[column.field]\"></sd-input>\r\n <sd-input-currency *ngIf=\"column.type === 'number'\" [(model)]=\"item[column.field]\">\r\n </sd-input-currency>\r\n <sd-select *ngIf=\"column.type === 'values'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n <sd-switch *ngIf=\"column.type === 'boolean'\" [(model)]=\"item[column.field]\">\r\n </sd-switch>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [(model)]=\"item[column.field]\" [items]=\"column.values\">\r\n </sd-select>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </form>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"close\" [title]=\"'Cancel' | sdTranslate\"\r\n width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onSave()\" icon=\"save\" [title]=\"'Save' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>"
39
39
  },] }
40
40
  ];
41
41
  SdGridPopupEditor.ctorParameters = () => [];
@@ -43,4 +43,4 @@ SdGridPopupEditor.propDecorators = {
43
43
  modal: [{ type: ViewChild, args: ['modal',] }],
44
44
  save: [{ type: Output }]
45
45
  };
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZWRpdG9yL2dyaWQtcG9wdXAtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5GLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFMVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUM5QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQVM3QixTQUFJLEdBQUcsQ0FBQyxJQUFjLEVBQUUsT0FBdUIsRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO29CQUM5QixNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDckMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ2hDO29CQUNILENBQUMsRUFBRTtpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTtJQTlCZSxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzs7WUFmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsZzJEQUFpRDthQUNsRDs7OztvQkFHRSxTQUFTLFNBQUMsT0FBTzttQkFDakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RHcmlkT3B0aW9uLCBTZEdyaWRDb2x1bW4sIEdyaWRJdGVtIH0gZnJvbSAnLi4vLi4vZ3JpZC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRQb3B1cEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRJdGVtPigpO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkT3B0aW9uO1xyXG4gIGl0ZW06IEdyaWRJdGVtO1xyXG4gIGlzTW9kaWZpZWQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKGl0ZW06IEdyaWRJdGVtLCBjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgaXNNb2RpZmllZD86IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmlzTW9kaWZpZWQgPSBpc01vZGlmaWVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnaW1hZ2UnICYmIGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gICAgdGhpcy5zYXZlLmVtaXQodGhpcy5pdGVtKTtcclxuICB9XHJcbn1cclxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZWRpdG9yL2dyaWQtcG9wdXAtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5GLE1BQU0sT0FBTyxpQkFBaUI7SUFRNUI7UUFMVSxTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUM5QyxZQUFPLEdBQW1CLEVBQUUsQ0FBQztRQVM3QixTQUFJLEdBQUcsQ0FBQyxJQUFjLEVBQUUsT0FBdUIsRUFBRSxVQUFvQixFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLGFBQVYsVUFBVSxjQUFWLFVBQVUsR0FBSSxLQUFLLENBQUM7WUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTs7Z0JBQ3ZCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUU7b0JBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUMzQjtnQkFDRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO29CQUM5QixNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDckMsSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTs0QkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7eUJBQ2hDO29CQUNILENBQUMsRUFBRTtpQkFDSjtZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFBO1FBRUQsYUFBUSxHQUFHLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFBO1FBRUQsV0FBTSxHQUFHLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUMsQ0FBQTtJQTlCZSxDQUFDO0lBRWpCLFFBQVE7SUFDUixDQUFDOzs7WUFmRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsbzJEQUFpRDthQUNsRDs7OztvQkFHRSxTQUFTLFNBQUMsT0FBTzttQkFDakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RHcmlkT3B0aW9uLCBTZEdyaWRDb2x1bW4sIEdyaWRJdGVtIH0gZnJvbSAnLi4vLi4vZ3JpZC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1lZGl0b3IuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZEdyaWRQb3B1cEVkaXRvciBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQE91dHB1dCgpIHNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPEdyaWRJdGVtPigpO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZ3JpZE9wdGlvbjogU2RHcmlkT3B0aW9uO1xyXG4gIGl0ZW06IEdyaWRJdGVtO1xyXG4gIGlzTW9kaWZpZWQ6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBvcGVuID0gKGl0ZW06IEdyaWRJdGVtLCBjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgaXNNb2RpZmllZD86IGJvb2xlYW4pID0+IHtcclxuICAgIHRoaXMuaXRlbSA9IGl0ZW07XHJcbiAgICB0aGlzLmlzTW9kaWZpZWQgPSBpc01vZGlmaWVkID8/IGZhbHNlO1xyXG4gICAgdGhpcy5jb2x1bW5zID0gW107XHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnaW1hZ2UnICYmIGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZvckVhY2goY2hpbGRDb2x1bW4gPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkQ29sdW1uLnR5cGUgIT09ICdpbWFnZScpIHtcclxuICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25TYXZlID0gKCkgPT4ge1xyXG4gICAgdGhpcy5tb2RhbC5jbG9zZSgpO1xyXG4gICAgdGhpcy5zYXZlLmVtaXQodGhpcy5pdGVtKTtcclxuICB9XHJcbn1cclxuIl19
@@ -290,7 +290,7 @@ _loadConfiguration = new WeakMap();
290
290
  SdGridPopupFilter.decorators = [
291
291
  { type: Component, args: [{
292
292
  selector: 'sd-grid-popup-filter',
293
- template: "<sd-modal width=\"sm\" [title]=\"'Filter' | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div\r\n *ngIf=\"key && filterOption?.multiple !== false && (!filterOption?.quickFilterVisibility || filterOption?.quickFilterVisibility === 'popup')\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label>{{'Quick filters' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedCode\" (selectionChange)=\"onSelectionChange($event)\" #matSelect>\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let quickFilter of quickFilters\" [value]=\"quickFilter.code\">\r\n <div style=\"display:flex; justify-content: space-between\">\r\n <span>{{quickFilter.code}}</span>\r\n <div>\r\n <mat-icon class=\"mr-1 c-fa-icon\" (click)=\"onEditQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-pencil\"></mat-icon>\r\n <mat-icon class=\"mr-0 c-fa-icon\" (click)=\"onDeleteQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-trash-o\"></mat-icon>\r\n </div>\r\n </div>\r\n </mat-option>\r\n <mat-option [value]=\"newQuickFilter\">\r\n <div (click)=\"onCreateQuickFilter($event)\">\r\n <mat-icon class=\"mr-1\" fontSet=\"material-icons-outlined\">add</mat-icon>\r\n <span>{{'Create quick filter' | sdTranslate}}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngIf=\"filterOption?.multiple === false\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{'Select field' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedField\">\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let item of externalFilters\" [value]=\"'external' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let item of columns\">\r\n <mat-option *ngIf=\"item.type !== 'children'\" [value]=\"'column' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngIf=\"item.type === 'children' && item.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <mat-option [value]=\"'column' + childColumn.field\">\r\n {{childColumn.title}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of externalFilters\">\r\n <div *ngIf=\"filterOption?.multiple !== false || selectedField === 'external' + item.field\"\r\n class=\"d-flex align-items-baseline\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineExternal[item.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\" [valueField]=\"item.valueField\"\r\n [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.field]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"column.type !== 'children' && (filterOption?.multiple !== false || selectedField === 'column' + column.field)\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[column.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [label]=\"column.title\" type=\"text\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" [label]=\"column.title\" type=\" number\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'bool'\" [label]=\"column.title\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:column.falseValue || 'False' }]\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [label]=\"column.title\" [items]=\"column.values\"\r\n [valueField]=\"column.valueField\" [displayField]=\"column.displayField\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && !column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"column.type ==='date' || column.type==='datetime' ||\r\n column.type==='time'\" [label]=\"column.title\" [(model)]=\" filter[column.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"column.type === 'children' && column.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of column.children\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"filterOption?.multiple !== false || selectedField === 'column' + childColumn.field\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[childColumn.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\" type=\" number\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\" [items]=\"childColumn.values\"\r\n [valueField]=\"childColumn.valueField\" [displayField]=\"childColumn.displayField\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-autocomplete [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'values'\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time [label]=\"childColumn.title\" *ngIf=\"childColumn.type ==='date' || childColumn.type==='datetime' ||\r\n childColumn.type==='time'\" [(model)]=\" filter[childColumn.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onClear()\" icon=\"clear\" [title]=\"'Clear filter' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onClear()\" icon=\"clear\"\r\n [title]=\"'Clear filter' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n<sd-grid-popup-quick-filter-detail #popupQuickFilterDetail (accept)=\"onAcceptQuickFilter($event)\">\r\n</sd-grid-popup-quick-filter-detail>",
293
+ template: "<sd-modal width=\"sm\" [title]=\"'Filter' | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div\r\n *ngIf=\"key && filterOption?.multiple !== false && (!filterOption?.quickFilterVisibility || filterOption?.quickFilterVisibility === 'popup')\">\r\n <mat-form-field class=\"sd-md\" appearance=\"outline\">\r\n <mat-label>{{'Quick filters' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedCode\" (selectionChange)=\"onSelectionChange($event)\" #matSelect>\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let quickFilter of quickFilters\" [value]=\"quickFilter.code\">\r\n <div style=\"display:flex; justify-content: space-between\">\r\n <span>{{quickFilter.code}}</span>\r\n <div>\r\n <mat-icon class=\"mr-1 c-fa-icon\" (click)=\"onEditQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-pencil\"></mat-icon>\r\n <mat-icon class=\"mr-0 c-fa-icon\" (click)=\"onDeleteQuickFilter($event, quickFilter)\" fontSet=\"fa\"\r\n fontIcon=\"fa-trash-o\"></mat-icon>\r\n </div>\r\n </div>\r\n </mat-option>\r\n <mat-option [value]=\"newQuickFilter\">\r\n <div (click)=\"onCreateQuickFilter($event)\">\r\n <mat-icon class=\"mr-1\" fontSet=\"material-icons-outlined\">add</mat-icon>\r\n <span>{{'Create quick filter' | sdTranslate}}</span>\r\n </div>\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <ng-container *ngIf=\"filterOption?.multiple === false\">\r\n <mat-form-field appearance=\"outline\">\r\n <mat-label>{{'Select field' | sdTranslate}}</mat-label>\r\n <mat-select [(ngModel)]=\"selectedField\">\r\n <mat-option value=\"\">{{'Please select' | sdTranslate}}</mat-option>\r\n <mat-option *ngFor=\"let item of externalFilters\" [value]=\"'external' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngFor=\"let item of columns\">\r\n <mat-option *ngIf=\"item.type !== 'children'\" [value]=\"'column' + item.field\">\r\n {{item.title}}\r\n </mat-option>\r\n <ng-container *ngIf=\"item.type === 'children' && item.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of item.children\">\r\n <mat-option [value]=\"'column' + childColumn.field\">\r\n {{childColumn.title}}\r\n </mat-option>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </mat-select>\r\n </mat-form-field>\r\n </ng-container>\r\n <ng-container *ngFor=\"let item of externalFilters\">\r\n <div *ngIf=\"filterOption?.multiple !== false || selectedField === 'external' + item.field\"\r\n class=\"d-flex align-items-baseline\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineExternal[item.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-input>\r\n <sd-input-currency [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-input-currency>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\" [valueField]=\"item.valueField\"\r\n [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.field]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.field]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.field, displayKey + item.field)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.field]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.field].from\" [(to)]=\"externalFilter[item.field].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.field].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.field].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.field].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.field].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.field].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of columns\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"column.type !== 'children' && (filterOption?.multiple !== false || selectedField === 'column' + column.field)\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[column.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input *ngIf=\"column.type === 'string'\" [label]=\"column.title\" type=\"text\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"column.type === 'number'\" [label]=\"column.title\" type=\" number\"\r\n [(model)]=\"filter[column.field]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"column.type === 'bool'\" [label]=\"column.title\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:column.falseValue || 'False' }]\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'radio'\" [label]=\"column.title\" [items]=\"column.values\"\r\n [valueField]=\"column.valueField\" [displayField]=\"column.displayField\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"column.type === 'values' && !column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"column.type === 'values' && column?.editor?.autocomplete\" [label]=\"column.title\"\r\n [items]=\"column.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[column.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time *ngIf=\"column.type ==='date' || column.type==='datetime' ||\r\n column.type==='time'\" [label]=\"column.title\" [(model)]=\" filter[column.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"column.type === 'children' && column.children?.length\">\r\n <ng-container *ngFor=\"let childColumn of column.children\">\r\n <div class=\"d-flex align-items-baseline\"\r\n *ngIf=\"filterOption?.multiple !== false || selectedField === 'column' + childColumn.field\">\r\n <ng-container *ngIf=\"filterOption?.multiple !== false\">\r\n <div *sdDesktop class=\"c-checkable\">\r\n <sd-switch [(model)]=\"inlineColumn[childColumn.field]\" (sdChange)=\"onInlineChange()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-filterable\">\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'string'\" type=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-input [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'number'\" type=\" number\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-input>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'bool'\" [items]=\"[{value:'1',display:column.trueValue || 'True' },\r\n {value:'0',display:childColumn.falseValue || 'False' }]\" [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-select [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'radio'\" [items]=\"childColumn.values\"\r\n [valueField]=\"childColumn.valueField\" [displayField]=\"childColumn.displayField\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-select>\r\n <sd-autocomplete [label]=\"childColumn.title\" *ngIf=\"childColumn.type === 'values'\"\r\n [items]=\"childColumn.values\" valueField=\"value\" displayField=\"text\"\r\n [(model)]=\"filter[childColumn.field]\">\r\n </sd-autocomplete>\r\n <sd-date-time [label]=\"childColumn.title\" *ngIf=\"childColumn.type ==='date' || childColumn.type==='datetime' ||\r\n childColumn.type==='time'\" [(model)]=\" filter[childColumn.field]\" type=\"date\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </sd-modal-body>\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onClear()\" icon=\"clear\" [title]=\"'Clear filter' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onClear()\" icon=\"clear\"\r\n [title]=\"'Clear filter' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n</sd-modal>\r\n<sd-grid-popup-quick-filter-detail #popupQuickFilterDetail (accept)=\"onAcceptQuickFilter($event)\">\r\n</sd-grid-popup-quick-filter-detail>",
294
294
  encapsulation: ViewEncapsulation.None,
295
295
  styles: [".c-fa-icon{color:grey;font-size:20px}.c-checkable{width:50px}.c-filterable{flex:1}"]
296
296
  },] }
@@ -314,4 +314,4 @@ SdGridPopupFilter.propDecorators = {
314
314
  inlineExternal: [{ type: Input }],
315
315
  inlineColumn: [{ type: Input }]
316
316
  };
317
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZmlsdGVyL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0ksT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVzVELE1BQU0sT0FBTyxpQkFBaUI7SUEyQjVCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBb0MsRUFDNUIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQS9CdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUloQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO1FBQ2xF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V0FBVztrQkFDckIsS0FBSzsyQkFDTCxLQUFLO3FCQUNMLE1BQU07b0JBQ04sTUFBTTsrQkFDTixNQUFNOzZCQVVOLEtBQUs7MkJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkQ29sdW1uLCBTZEdyaWRFeHRlcm5hbEZpbHRlciwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpY2tGaWx0ZXIsIEZpbHRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2dyaWQtcG9wdXAtZmlsdGVyLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFNldHRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbCB9IGZyb20gJy4uL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkUG9wdXBGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUga2V5UHJlZml4ID0gJ1BvcHVwRmlsdGVyJztcclxuICBkaXNwbGF5S2V5ID0gJ1NEQ1VTVE9NJztcclxuICBpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBAVmlld0NoaWxkKCdwb3B1cFF1aWNrRmlsdGVyRGV0YWlsJykgcG9wdXBRdWlja0ZpbHRlckRldGFpbDogU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbDtcclxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3QnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcclxuICBASW5wdXQoKSBrZXkgPSAnJztcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBPdXRwdXQoKSBhY2NlcHQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWRJbmxpbmVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ3VyYXRpb24+KCk7XHJcbiAgc2VsZWN0ZWRGaWVsZDogc3RyaW5nO1xyXG4gIG5ld1F1aWNrRmlsdGVyID0gJ2UxZWYxZDQzLWQ2ODktNDI0Zi05NTllLWU2Y2QxNTRjZmVlNyc7XHJcbiAgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZEV4dGVybmFsRmlsdGVyW10gPSBbXTtcclxuICBxdWlja0ZpbHRlcnM6IFF1aWNrRmlsdGVyW10gPSBbXTtcclxuICBzZWxlY3RlZENvZGU6IHN0cmluZztcclxuICBtYXhRdWlja0ZpbHRlcnMgPSA1O1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGlubGluZUNvbHVtbjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jbG9hZENvbmZpZ3VyYXRpb24oKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfHwgW10sXHJcbiAgICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogdGhpcy5zZWxlY3RlZENvZGUgfHwgJycsXHJcbiAgICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtblxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW4gPSAoXHJcbiAgICBmaXhlZENvbHVtczogU2RHcmlkQ29sdW1uW10sXHJcbiAgICBub3JtYWxDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI6IGFueSxcclxuICAgIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZEV4dGVybmFsRmlsdGVyW10pID0+IHtcclxuICAgIHRoaXMuaW5pdChmaXhlZENvbHVtcywgbm9ybWFsQ29sdW1ucywgZmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZXh0ZXJuYWxGaWx0ZXJzKTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCA9IChcclxuICAgIGZpeGVkQ29sdW1zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIG5vcm1hbENvbHVtbnM6IFNkR3JpZENvbHVtbltdLFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgICBleHRlcm5hbEZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzPzogU2RHcmlkRXh0ZXJuYWxGaWx0ZXJbXSkgPT4ge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLmZpeGVkQ29sdW1zLCAuLi5ub3JtYWxDb2x1bW5zXS5maWx0ZXIoZSA9PiAhZS5maWx0ZXI/LmRpc2FibGVkICYmIGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGUgPT4gIWUuZmlsdGVyPy5kaXNhYmxlZCAmJiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChleHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBleHRlcm5hbEZpbHRlcnMuZmlsdGVyKGUgPT4gIWUuZGlzYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKGV4dGVybmFsRmlsdGVycywgZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgZm9yIChjb25zdCBlRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdCgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlck9wdGlvbj8ubXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLnN0YXJ0c1dpdGgoJ2NvbHVtbicpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZC5yZXBsYWNlKCdjb2x1bW4nLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5maWx0ZXJbZmllbGRdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiB7fVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuc3RhcnRzV2l0aCgnZXh0ZXJuYWwnKSkge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnNlbGVjdGVkRmllbGQucmVwbGFjZSgnZXh0ZXJuYWwnLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxGaWx0ZXI6IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKHRoaXMuZXh0ZXJuYWxGaWx0ZXJzLCB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY2NlcHQuZW1pdCh7XHJcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlclxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvZGU7XHJcbiAgICB0aGlzLmNsZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gICNsb2FkQ29uZmlndXJhdGlvbiA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gW107XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZ2V0LCBoYXMgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIWF3YWl0IGhhcygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXQoKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnF1aWNrRmlsdGVycykpIHtcclxuICAgICAgdGhpcy5xdWlja0ZpbHRlcnMgPSBjb25maWd1cmF0aW9uLnF1aWNrRmlsdGVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2RlID0gY29uZmlndXJhdGlvbj8uc2VsZWN0ZWRRdWlja0ZpbHRlciB8fCAnJztcclxuICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSBjb25maWd1cmF0aW9uPy5pbmxpbmVFeHRlcm5hbCB8fCB7fTtcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbj8uaW5saW5lQ29sdW1uIHx8IHt9O1xyXG4gICAgZm9yIChjb25zdCBleHRlcm5hbEZpbHRlciBvZiB0aGlzLmV4dGVybmFsRmlsdGVycykge1xyXG4gICAgICBpZiAodGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWxbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29uZmlndXJhdGlvbihzZWxlY3RlZFF1aWNrRmlsdGVyQ29kZT86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRRdWlja0ZpbHRlckNvZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9IHNlbGVjdGVkUXVpY2tGaWx0ZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBzZXQgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBzZXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzIHx8IFtdLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSB8fCAnJyxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2UgPSAoY2hhbmdlOiBNYXRTZWxlY3RDaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlPy52YWx1ZSB8fCAnJztcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5uZXdRdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ3JlYXRlUXVpY2tGaWx0ZXIoKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSB2YWx1ZSk7XHJcbiAgICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICAgIHRoaXMub25EZXRhaWxRdWlja0ZpbHRlcihxdWlja0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3JlYXRlUXVpY2tGaWx0ZXIgPSAoZXY/OiBFdmVudCkgPT4ge1xyXG4gICAgZXY/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXY/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucywgdGhpcy5leHRlcm5hbEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxRdWlja0ZpbHRlciA9IGFzeW5jIChxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBpZiAocXVpY2tGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSBxdWlja0ZpbHRlci5jb2RlO1xyXG4gICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRRdWlja0ZpbHRlciA9IChldjogRXZlbnQsIHF1aWNrRmlsdGVyPzogUXVpY2tGaWx0ZXIpID0+IHtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgaWYgKHF1aWNrRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucyxcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlci5maWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuY29kZSk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgZmlsdGVyJykpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmIChxdWlja0ZpbHRlci5jb2RlID09PSB0aGlzLnNlbGVjdGVkQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZEluZGV4KGUgPT4gZS5jb2RlID09PSBxdWlja0ZpbHRlci5jb2RlKTtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRRdWlja0ZpbHRlciA9IGFzeW5jIChhcmdzOiB7IGNvZGU6IHN0cmluZywgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfSkgPT4ge1xyXG4gICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSBhcmdzLmNvZGUpO1xyXG4gICAgaWYgKCFxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnF1aWNrRmlsdGVycy5wdXNoKHtcclxuICAgICAgICBjb2RlOiBhcmdzLmNvZGUsXHJcbiAgICAgICAgZmlsdGVyOiBhcmdzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVpY2tGaWx0ZXIuZmlsdGVyID0gYXJncy5maWx0ZXI7XHJcbiAgICAgIHF1aWNrRmlsdGVyLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbklubGluZUNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RXh0ZXJuYWxGaWx0ZXIgPSAoZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBleHRlcm5hbEZpbHRlcjogYW55KSA9PiB7XHJcbiAgICBleHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyIHx8IHt9O1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzID0gZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXJyYW5nZScpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAndmFsdWVzJykgeyAvLyBhbmRuMVxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gKGV4dGVybmFsRmlsdGVyW2UuZmllbGRdIHx8IGUuZGVmYXVsdCkgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBleHRlcm5hbEZpbHRlcjtcclxuICB9XHJcbn1cclxuIl19
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9ncmlkLyIsInNvdXJjZXMiOlsic3JjL2xpYi9jb21wb25lbnRzL2dyaWQtcG9wdXAtZmlsdGVyL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJL0ksT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2pCLE1BQU0sMEJBQTBCLENBQUM7QUFFbEMsT0FBTyxFQUNMLGtCQUFrQixFQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBVzVELE1BQU0sT0FBTyxpQkFBaUI7SUEyQjVCLFlBQ1UsR0FBc0IsRUFDOUIsYUFBb0MsRUFDNUIsY0FBZ0MsRUFDaEMsYUFBOEIsRUFDOUIsZ0JBQW9DO1FBSnBDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRXRCLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQS9CdEMsY0FBUyxHQUFHLGFBQWEsQ0FBQztRQUNsQyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUloQixRQUFHLEdBQUcsRUFBRSxDQUFDO1FBRVIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUF3QyxDQUFDO1FBQ2xF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V0FBVztrQkFDckIsS0FBSzsyQkFDTCxLQUFLO3FCQUNMLE1BQU07b0JBQ04sTUFBTTsrQkFDTixNQUFNOzZCQVVOLEtBQUs7MkJBR0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTptYXgtbGluZS1sZW5ndGhcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2RHcmlkQ29sdW1uLCBTZEdyaWRFeHRlcm5hbEZpbHRlciwgR3JpZEJhc2VPcHRpb25GaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpY2tGaWx0ZXIsIEZpbHRlckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2dyaWQtcG9wdXAtZmlsdGVyLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFNldHRpbmdTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9zZXR0aW5nJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS90cmFuc2xhdGUnO1xyXG5pbXBvcnQgeyBEZXZpY2VEZXRlY3RvclNlcnZpY2UgfSBmcm9tICduZ3gtZGV2aWNlLWRldGVjdG9yJztcclxuaW1wb3J0IHsgU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbCB9IGZyb20gJy4uL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0LCBNYXRTZWxlY3RDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtZmlsdGVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC1wb3B1cC1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2dyaWQtcG9wdXAtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RHcmlkUG9wdXBGaWx0ZXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIHByaXZhdGUga2V5UHJlZml4ID0gJ1BvcHVwRmlsdGVyJztcclxuICBkaXNwbGF5S2V5ID0gJ1NEQ1VTVE9NJztcclxuICBpc01vYmlsZU9yVGFibGV0ID0gZmFsc2U7XHJcbiAgQFZpZXdDaGlsZCgnbW9kYWwnKSBtb2RhbDogU2RNb2RhbDtcclxuICBAVmlld0NoaWxkKCdwb3B1cFF1aWNrRmlsdGVyRGV0YWlsJykgcG9wdXBRdWlja0ZpbHRlckRldGFpbDogU2RHcmlkUG9wdXBRdWlja0ZpbHRlckRldGFpbDtcclxuICBAVmlld0NoaWxkKCdtYXRTZWxlY3QnKSBtYXRTZWxlY3Q6IE1hdFNlbGVjdDtcclxuICBASW5wdXQoKSBrZXkgPSAnJztcclxuICBASW5wdXQoKSBmaWx0ZXJPcHRpb246IEdyaWRCYXNlT3B0aW9uRmlsdGVyO1xyXG4gIEBPdXRwdXQoKSBhY2NlcHQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfT4oKTtcclxuICBAT3V0cHV0KCkgY2xlYXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgQE91dHB1dCgpIGxvYWRJbmxpbmVGaWx0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlckNvbmZpZ3VyYXRpb24+KCk7XHJcbiAgc2VsZWN0ZWRGaWVsZDogc3RyaW5nO1xyXG4gIG5ld1F1aWNrRmlsdGVyID0gJ2UxZWYxZDQzLWQ2ODktNDI0Zi05NTllLWU2Y2QxNTRjZmVlNyc7XHJcbiAgZmlsdGVyOiBhbnkgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogYW55ID0ge307XHJcbiAgY29sdW1uczogU2RHcmlkQ29sdW1uW10gPSBbXTtcclxuICBleHRlcm5hbEZpbHRlcnM6IFNkR3JpZEV4dGVybmFsRmlsdGVyW10gPSBbXTtcclxuICBxdWlja0ZpbHRlcnM6IFF1aWNrRmlsdGVyW10gPSBbXTtcclxuICBzZWxlY3RlZENvZGU6IHN0cmluZztcclxuICBtYXhRdWlja0ZpbHRlcnMgPSA1O1xyXG4gIEBJbnB1dCgpIGlubGluZUV4dGVybmFsOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIEBJbnB1dCgpIGlubGluZUNvbHVtbjoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhblxyXG4gIH0gPSB7fTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgc2V0dGluZ1NlcnZpY2U6IFNkU2V0dGluZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmeVNlcnZpY2U6IFNkTm90aWZ5U2VydmljZSxcclxuICAgIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZTogU2RUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmlzTW9iaWxlT3JUYWJsZXQgPSAhZGV2aWNlU2VydmljZS5pc0Rlc2t0b3AoKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy4jbG9hZENvbmZpZ3VyYXRpb24oKS50aGVuKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICAgIHF1aWNrRmlsdGVyczogdGhpcy5xdWlja0ZpbHRlcnMgfHwgW10sXHJcbiAgICAgICAgc2VsZWN0ZWRRdWlja0ZpbHRlcjogdGhpcy5zZWxlY3RlZENvZGUgfHwgJycsXHJcbiAgICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgICAgaW5saW5lQ29sdW1uOiB0aGlzLmlubGluZUNvbHVtblxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG5cclxuICB9XHJcblxyXG4gIG9wZW4gPSAoXHJcbiAgICBmaXhlZENvbHVtczogU2RHcmlkQ29sdW1uW10sXHJcbiAgICBub3JtYWxDb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIGZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXI6IGFueSxcclxuICAgIGV4dGVybmFsRmlsdGVycz86IFNkR3JpZEV4dGVybmFsRmlsdGVyW10pID0+IHtcclxuICAgIHRoaXMuaW5pdChmaXhlZENvbHVtcywgbm9ybWFsQ29sdW1ucywgZmlsdGVyLCBleHRlcm5hbEZpbHRlciwgZXh0ZXJuYWxGaWx0ZXJzKTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCA9IChcclxuICAgIGZpeGVkQ29sdW1zOiBTZEdyaWRDb2x1bW5bXSxcclxuICAgIG5vcm1hbENvbHVtbnM6IFNkR3JpZENvbHVtbltdLFxyXG4gICAgZmlsdGVyOiBhbnksXHJcbiAgICBleHRlcm5hbEZpbHRlcjogYW55LFxyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzPzogU2RHcmlkRXh0ZXJuYWxGaWx0ZXJbXSkgPT4ge1xyXG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLmZpeGVkQ29sdW1zLCAuLi5ub3JtYWxDb2x1bW5zXS5maWx0ZXIoZSA9PiAhZS5maWx0ZXI/LmRpc2FibGVkICYmIGUudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbicpIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4gPSBjb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGUgPT4gIWUuZmlsdGVyPy5kaXNhYmxlZCAmJiBlLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChleHRlcm5hbEZpbHRlcnMpIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBleHRlcm5hbEZpbHRlcnMuZmlsdGVyKGUgPT4gIWUuZGlzYWJsZWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcnMgPSBbXTtcclxuICAgIH1cclxuICAgIHRoaXMuZmlsdGVyID0gZmlsdGVyO1xyXG4gICAgdGhpcy5leHRlcm5hbEZpbHRlciA9IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKGV4dGVybmFsRmlsdGVycywgZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgZm9yIChjb25zdCBlRmlsdGVyIG9mIHRoaXMuZXh0ZXJuYWxGaWx0ZXJzKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUV4dGVybmFsW2VGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2UgPSAoKSA9PiB7XHJcbiAgICB0aGlzLm1vZGFsLmNsb3NlKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjY2VwdCgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlck9wdGlvbj8ubXVsdGlwbGUgPT09IGZhbHNlKSB7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkRmllbGQpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEZpZWxkLnN0YXJ0c1dpdGgoJ2NvbHVtbicpKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZCA9IHRoaXMuc2VsZWN0ZWRGaWVsZC5yZXBsYWNlKCdjb2x1bW4nLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5maWx0ZXJbZmllbGRdXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGV4dGVybmFsRmlsdGVyOiB7fVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRmllbGQuc3RhcnRzV2l0aCgnZXh0ZXJuYWwnKSkge1xyXG4gICAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLnNlbGVjdGVkRmllbGQucmVwbGFjZSgnZXh0ZXJuYWwnLCAnJyk7XHJcbiAgICAgICAgICB0aGlzLmFjY2VwdC5lbWl0KHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7fSxcclxuICAgICAgICAgICAgZXh0ZXJuYWxGaWx0ZXI6IHRoaXMuaW5pdEV4dGVybmFsRmlsdGVyKHRoaXMuZXh0ZXJuYWxGaWx0ZXJzLCB7XHJcbiAgICAgICAgICAgICAgW2ZpZWxkXTogdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZF1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hY2NlcHQuZW1pdCh7XHJcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5leHRlcm5hbEZpbHRlclxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xlYXIoKSB7XHJcbiAgICBkZWxldGUgdGhpcy5zZWxlY3RlZENvZGU7XHJcbiAgICB0aGlzLmNsZWFyLmVtaXQoKTtcclxuICB9XHJcblxyXG4gICNsb2FkQ29uZmlndXJhdGlvbiA9IGFzeW5jICgpID0+IHtcclxuICAgIHRoaXMucXVpY2tGaWx0ZXJzID0gW107XHJcbiAgICBpZiAoIXRoaXMua2V5KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZ2V0LCBoYXMgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBpZiAoIWF3YWl0IGhhcygpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXQoKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZ3VyYXRpb24/LnF1aWNrRmlsdGVycykpIHtcclxuICAgICAgdGhpcy5xdWlja0ZpbHRlcnMgPSBjb25maWd1cmF0aW9uLnF1aWNrRmlsdGVycztcclxuICAgIH1cclxuICAgIHRoaXMuc2VsZWN0ZWRDb2RlID0gY29uZmlndXJhdGlvbj8uc2VsZWN0ZWRRdWlja0ZpbHRlciB8fCAnJztcclxuICAgIHRoaXMuaW5saW5lRXh0ZXJuYWwgPSBjb25maWd1cmF0aW9uPy5pbmxpbmVFeHRlcm5hbCB8fCB7fTtcclxuICAgIHRoaXMuaW5saW5lQ29sdW1uID0gY29uZmlndXJhdGlvbj8uaW5saW5lQ29sdW1uIHx8IHt9O1xyXG4gICAgZm9yIChjb25zdCBleHRlcm5hbEZpbHRlciBvZiB0aGlzLmV4dGVybmFsRmlsdGVycykge1xyXG4gICAgICBpZiAodGhpcy5pbmxpbmVFeHRlcm5hbFtleHRlcm5hbEZpbHRlci5maWVsZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHRoaXMuaW5saW5lRXh0ZXJuYWxbZXh0ZXJuYWxGaWx0ZXIuZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgdGhpcy5jb2x1bW5zKSB7XHJcbiAgICAgIGlmICh0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmlubGluZUNvbHVtbltjb2x1bW4uZmllbGRdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlQ29uZmlndXJhdGlvbihzZWxlY3RlZFF1aWNrRmlsdGVyQ29kZT86IHN0cmluZykge1xyXG4gICAgaWYgKCF0aGlzLmtleSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoc2VsZWN0ZWRRdWlja0ZpbHRlckNvZGUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9IHNlbGVjdGVkUXVpY2tGaWx0ZXJDb2RlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBzZXQgfSA9IHRoaXMuc2V0dGluZ1NlcnZpY2UuY3JlYXRlPEZpbHRlckNvbmZpZ3VyYXRpb24+KHtcclxuICAgICAgcHJlZml4OiB0aGlzLmtleVByZWZpeCxcclxuICAgICAga2V5OiB0aGlzLmtleVxyXG4gICAgfSk7XHJcbiAgICBhd2FpdCBzZXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5sb2FkSW5saW5lRmlsdGVyLmVtaXQoe1xyXG4gICAgICBxdWlja0ZpbHRlcnM6IHRoaXMucXVpY2tGaWx0ZXJzIHx8IFtdLFxyXG4gICAgICBzZWxlY3RlZFF1aWNrRmlsdGVyOiB0aGlzLnNlbGVjdGVkQ29kZSB8fCAnJyxcclxuICAgICAgaW5saW5lRXh0ZXJuYWw6IHRoaXMuaW5saW5lRXh0ZXJuYWwsXHJcbiAgICAgIGlubGluZUNvbHVtbjogdGhpcy5pbmxpbmVDb2x1bW5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3Rpb25DaGFuZ2UgPSAoY2hhbmdlOiBNYXRTZWxlY3RDaGFuZ2UpID0+IHtcclxuICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlPy52YWx1ZSB8fCAnJztcclxuICAgIGlmICh2YWx1ZSA9PT0gdGhpcy5uZXdRdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQ29kZSA9ICcnO1xyXG4gICAgICB0aGlzLm9uQ3JlYXRlUXVpY2tGaWx0ZXIoKTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSB2YWx1ZSk7XHJcbiAgICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICAgIHRoaXMub25EZXRhaWxRdWlja0ZpbHRlcihxdWlja0ZpbHRlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ3JlYXRlUXVpY2tGaWx0ZXIgPSAoZXY/OiBFdmVudCkgPT4ge1xyXG4gICAgZXY/LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXY/LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucywgdGhpcy5leHRlcm5hbEZpbHRlcnMpO1xyXG4gIH1cclxuXHJcbiAgb25EZXRhaWxRdWlja0ZpbHRlciA9IGFzeW5jIChxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBpZiAocXVpY2tGaWx0ZXIpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSBxdWlja0ZpbHRlci5jb2RlO1xyXG4gICAgICBjb25zdCBmMSA9IEpTT04uc3RyaW5naWZ5KHF1aWNrRmlsdGVyLmZpbHRlcik7XHJcbiAgICAgIGNvbnN0IGYyID0gSlNPTi5zdHJpbmdpZnkocXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgICB0aGlzLmZpbHRlciA9IEpTT04ucGFyc2UoZjEpO1xyXG4gICAgICB0aGlzLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIEpTT04ucGFyc2UoZjIpKTtcclxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkVkaXRRdWlja0ZpbHRlciA9IChldjogRXZlbnQsIHF1aWNrRmlsdGVyPzogUXVpY2tGaWx0ZXIpID0+IHtcclxuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgZXYucHJldmVudERlZmF1bHQoKTtcclxuICAgIHRoaXMubWF0U2VsZWN0Py5jbG9zZSgpO1xyXG4gICAgaWYgKHF1aWNrRmlsdGVyKSB7XHJcbiAgICAgIHRoaXMucG9wdXBRdWlja0ZpbHRlckRldGFpbC5vcGVuKHRoaXMuY29sdW1ucyxcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVycyxcclxuICAgICAgICBxdWlja0ZpbHRlci5maWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuZXh0ZXJuYWxGaWx0ZXIsXHJcbiAgICAgICAgcXVpY2tGaWx0ZXIuY29kZSk7XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGVsZXRlUXVpY2tGaWx0ZXIgPSAoZXY6IEV2ZW50LCBxdWlja0ZpbHRlcj86IFF1aWNrRmlsdGVyKSA9PiB7XHJcbiAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB0aGlzLm1hdFNlbGVjdD8uY2xvc2UoKTtcclxuICAgIGlmIChxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgZmlsdGVyJykpLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgIGlmIChxdWlja0ZpbHRlci5jb2RlID09PSB0aGlzLnNlbGVjdGVkQ29kZSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvZGUgPSAnJztcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5xdWlja0ZpbHRlcnMuZmluZEluZGV4KGUgPT4gZS5jb2RlID09PSBxdWlja0ZpbHRlci5jb2RlKTtcclxuICAgICAgICB0aGlzLnF1aWNrRmlsdGVycy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZUNvbmZpZ3VyYXRpb24oKTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25BY2NlcHRRdWlja0ZpbHRlciA9IGFzeW5jIChhcmdzOiB7IGNvZGU6IHN0cmluZywgZmlsdGVyOiBhbnksIGV4dGVybmFsRmlsdGVyOiBhbnkgfSkgPT4ge1xyXG4gICAgY29uc3QgcXVpY2tGaWx0ZXIgPSB0aGlzLnF1aWNrRmlsdGVycy5maW5kKGUgPT4gZS5jb2RlID09PSBhcmdzLmNvZGUpO1xyXG4gICAgaWYgKCFxdWlja0ZpbHRlcikge1xyXG4gICAgICB0aGlzLnF1aWNrRmlsdGVycy5wdXNoKHtcclxuICAgICAgICBjb2RlOiBhcmdzLmNvZGUsXHJcbiAgICAgICAgZmlsdGVyOiBhcmdzLmZpbHRlcixcclxuICAgICAgICBleHRlcm5hbEZpbHRlcjogdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVpY2tGaWx0ZXIuZmlsdGVyID0gYXJncy5maWx0ZXI7XHJcbiAgICAgIHF1aWNrRmlsdGVyLmV4dGVybmFsRmlsdGVyID0gdGhpcy5pbml0RXh0ZXJuYWxGaWx0ZXIodGhpcy5leHRlcm5hbEZpbHRlcnMsIGFyZ3MuZXh0ZXJuYWxGaWx0ZXIpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy51cGRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbklubGluZUNoYW5nZSA9ICgpID0+IHtcclxuICAgIHRoaXMudXBkYXRlQ29uZmlndXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpbml0RXh0ZXJuYWxGaWx0ZXIgPSAoZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBleHRlcm5hbEZpbHRlcjogYW55KSA9PiB7XHJcbiAgICBleHRlcm5hbEZpbHRlciA9IGV4dGVybmFsRmlsdGVyIHx8IHt9O1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzID0gZXh0ZXJuYWxGaWx0ZXJzIHx8IFtdO1xyXG4gICAgZXh0ZXJuYWxGaWx0ZXJzLmZvckVhY2goZSA9PiB7XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0gPSBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA/PyBlLmRlZmF1bHQgPz8gdW5kZWZpbmVkO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlJykge1xyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0ge1xyXG4gICAgICAgICAgZnJvbTogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LmZyb20gPz8gZS5kZWZhdWx0RnJvbSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICB0bzogZXh0ZXJuYWxGaWx0ZXJbZS5maWVsZF0/LnRvID8/IGUuZGVmYXVsdFRvID8/IHVuZGVmaW5lZFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChlLnR5cGUgPT09ICdudW1iZXJyYW5nZScpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICBleHRlcm5hbEZpbHRlcltlLmZpZWxkXSA9IHtcclxuICAgICAgICAgIGZyb206IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy5mcm9tID8/IGUuZGVmYXVsdEZyb20gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgdG86IGV4dGVybmFsRmlsdGVyW2UuZmllbGRdPy50byA/PyBlLmRlZmF1bHRUbyA/PyB1bmRlZmluZWRcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoZS50eXBlID09PSAndmFsdWVzJykgeyAvLyBhbmRuMVxyXG4gICAgICAgIGV4dGVybmFsRmlsdGVyW2UuZmllbGRdID0gKGV4dGVybmFsRmlsdGVyW2UuZmllbGRdIHx8IGUuZGVmYXVsdCkgPz8gJyc7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBleHRlcm5hbEZpbHRlcjtcclxuICB9XHJcbn1cclxuIl19
@@ -162,7 +162,7 @@ export class SdGridPopupQuickFilterDetail {
162
162
  SdGridPopupQuickFilterDetail.decorators = [
163
163
  { type: Component, args: [{
164
164
  selector: 'sd-grid-popup-quick-filter-detail',
165
- template: "<sd-modal width=\"sm\" [title]=\"(page === 1 ? 'Select filtered fields':'Input filtered fields') | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"page === 1\">\r\n <div *ngFor=\"let field of selectableFields\" class=\"col-12\">\r\n <sd-switch [(model)]=\"selectedField[field.id]\" [label]=\"field.title\" (sdChange)=\"onSelectFields()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <div class=\"col-12\" *ngFor=\"let item of fields\">\r\n <ng-container *ngIf=\"item.group === 'external'\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-input>\r\n <sd-input-number [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-input-number>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.code]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.code, displayKey + item.code)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.code]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.code].from\" [(to)]=\"externalFilter[item.code].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.code].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.code].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.code].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.code].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.group === 'column'\">\r\n <sd-input *ngIf=\"item.type === 'string'\" [label]=\"item.title\" type=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"item.type === 'number'\" [label]=\"item.title\" type=\" number\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"item.type === 'bool'\" [label]=\"item.title\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'radio'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.type === 'values' && !item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-date-time *ngIf=\"item.type ==='date' || item.type==='datetime' ||\r\n item.type==='time'\" [label]=\"item.title\" [(model)]=\" filter[item.code]\" type=\"date\">\r\n </sd-date-time>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </sd-modal-body>\r\n <ng-container *ngIf=\"page === 1\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"clear\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"page = 2\" icon=\"arrow_forward\" [title]=\"'Next' | sdTranslate\" color=\"primary\"\r\n iconSuffix=\"true\" [disabled]=\"!fields.length\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"clear\"\r\n [title]=\"'Cancel' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"page = 2\" icon=\"arrow_forward\"\r\n [title]=\"'Next' | sdTranslate\" color=\"primary\" width=\"100%\" iconSuffix=\"true\" [disabled]=\"!fields.length\"\r\n size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"page = 1\" icon=\"arrow_back\" [title]=\"'Back' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"page = 1\" icon=\"arrow_back\"\r\n [title]=\"'Back' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n</sd-modal>",
165
+ template: "<sd-modal width=\"sm\" [title]=\"(page === 1 ? 'Select filtered fields':'Input filtered fields') | sdTranslate\" #modal>\r\n <sd-modal-body>\r\n <div class=\"row\">\r\n <ng-container *ngIf=\"page === 1\">\r\n <div *ngFor=\"let field of selectableFields\" class=\"col-12\">\r\n <sd-switch [(model)]=\"selectedField[field.id]\" [label]=\"field.title\" (sdChange)=\"onSelectFields()\">\r\n </sd-switch>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <div class=\"col-12\" *ngFor=\"let item of fields\">\r\n <ng-container *ngIf=\"item.group === 'external'\">\r\n <sd-input [label]=\"item.title\" *ngIf=\"item.type === 'string'\" type=\"text\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-input>\r\n <sd-input-currency [label]=\"item.title\" *ngIf=\"item.type === 'number'\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-input-currency>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'bool'\" [items]=\" [{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" valueField=\"value\" displayField=\"display\"\r\n [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <sd-select [label]=\"item.title\" *ngIf=\"item.type === 'radio'\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n <ng-container *ngIf=\"item.type === 'values'\">\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n multiple=\"true\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.selection === 'AUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.selection === 'MULTIPLEAUTOCOMPLETE'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\"\r\n filtered=\"true\" multiple=\"true\">\r\n </sd-select>\r\n <sd-select *ngIf=\"!item.selection\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"externalFilter[item.code]\">\r\n </sd-select>\r\n </ng-container>\r\n <sd-input *ngIf=\"item.type === 'custom'\" [label]=\"item.title\"\r\n [(model)]=\"externalFilter[displayKey + item.code]\"\r\n (sdFocusForceBlur)=\"item?.onClick(externalFilter, item.code, displayKey + item.code)\">\r\n </sd-input>\r\n <sd-date-time [label]=\"item.title\" *ngIf=\"item.type ==='date'\" [(model)]=\"externalFilter[item.code]\"\r\n type=\"date\">\r\n </sd-date-time>\r\n <sd-date-range [label]=\"item.title\" *ngIf=\"item.type ==='daterangefull'\"\r\n [(from)]=\"externalFilter[item.code].from\" [(to)]=\"externalFilter[item.code].to\" [min]=\"item.minDate\"\r\n [max]=\"item.maxDate\">\r\n </sd-date-range>\r\n <ng-container *ngIf=\"item.type ==='daterange'\">\r\n <div class=\"row\">\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.fromTitle\" [(model)]=\"externalFilter[item.code].from\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\" [minDate]=\"item.minDate\"\r\n [maxDate]=\"externalFilter[item.code].to || item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-date-time [label]=\"item.toTitle\" [(model)]=\"externalFilter[item.code].to\"\r\n [type]=\"item.enableTime ? 'datetime' : 'date'\"\r\n [minDate]=\"item.minDate || externalFilter[item.code].from\" [maxDate]=\"item.maxDate\">\r\n </sd-date-time>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"row\" *ngIf=\"item.type ==='numberrange'\">\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.fromTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].from\">\r\n </sd-input>\r\n </div>\r\n <div class=\"col-6\">\r\n <sd-input [label]=\"item.toTitle\" type=\" number\" [(model)]=\"externalFilter[item.code].to\">\r\n </sd-input>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"item.group === 'column'\">\r\n <sd-input *ngIf=\"item.type === 'string'\" [label]=\"item.title\" type=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-input *ngIf=\"item.type === 'number'\" [label]=\"item.title\" type=\" number\" [(model)]=\"filter[item.code]\">\r\n </sd-input>\r\n <sd-select *ngIf=\"item.type === 'bool'\" [label]=\"item.title\" [items]=\"[{value:'1',display:item.trueValue || 'True' },\r\n {value:'0',display:item.falseValue || 'False' }]\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-select *ngIf=\"item.type === 'radio'\" [label]=\"item.title\" [items]=\"item.values\"\r\n [valueField]=\"item.valueField\" [displayField]=\"item.displayField\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-autocomplete *ngIf=\"item.type === 'values' && item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-autocomplete>\r\n <sd-select *ngIf=\"item.type === 'values' && !item.editor?.autocomplete\" [label]=\"item.title\"\r\n [items]=\"item.values\" valueField=\"value\" displayField=\"text\" [(model)]=\"filter[item.code]\">\r\n </sd-select>\r\n <sd-date-time *ngIf=\"item.type ==='date' || item.type==='datetime' ||\r\n item.type==='time'\" [label]=\"item.title\" [(model)]=\" filter[item.code]\" type=\"date\">\r\n </sd-date-time>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </sd-modal-body>\r\n <ng-container *ngIf=\"page === 1\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"onCancel()\" icon=\"clear\" [title]=\"'Cancel' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"page = 2\" icon=\"arrow_forward\" [title]=\"'Next' | sdTranslate\" color=\"primary\"\r\n iconSuffix=\"true\" [disabled]=\"!fields.length\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"onCancel()\" icon=\"clear\"\r\n [title]=\"'Cancel' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"page = 2\" icon=\"arrow_forward\"\r\n [title]=\"'Next' | sdTranslate\" color=\"primary\" width=\"100%\" iconSuffix=\"true\" [disabled]=\"!fields.length\"\r\n size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n <ng-container *ngIf=\"page === 2\">\r\n <sd-modal-footer *sdDesktop>\r\n <sd-button class=\"mr-auto\" (action)=\"page = 1\" icon=\"arrow_back\" [title]=\"'Back' | sdTranslate\" size=\"sm\">\r\n </sd-button>\r\n <sd-button (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\" color=\"primary\" size=\"sm\">\r\n </sd-button>\r\n </sd-modal-footer>\r\n <sd-modal-footer *sdMobileTablet>\r\n <sd-button style=\"flex: 1; padding-right: 5px;\" (action)=\"page = 1\" icon=\"arrow_back\"\r\n [title]=\"'Back' | sdTranslate\" width=\"100%\" size=\"sm\"></sd-button>\r\n <sd-button style=\"flex: 1; padding-left: 5px;\" (action)=\"onAccept()\" icon=\"done\" [title]=\"'Accept' | sdTranslate\"\r\n color=\"primary\" width=\"100%\" size=\"sm\"></sd-button>\r\n </sd-modal-footer>\r\n </ng-container>\r\n</sd-modal>",
166
166
  styles: [""]
167
167
  },] }
168
168
  ];
@@ -176,4 +176,4 @@ SdGridPopupQuickFilterDetail.propDecorators = {
176
176
  quickFilters: [{ type: Input }],
177
177
  accept: [{ type: Output }]
178
178
  };
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwvZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekcsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLDRCQUE0QjtJQWlCdkMsWUFDRSxhQUFvQyxFQUM1QixhQUE4QixFQUM5QixnQkFBb0M7UUFEcEMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFuQjlDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR2YsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFDL0IsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0Isb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FFVCxFQUFF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LEVBQUUsUUFBUSxFQUNmLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQ25CLENBQUM7YUFDSjtRQUNILENBQUMsRUFBRTtRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7WUEzSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLCtrUkFBOEQ7O2FBRS9EOzs7WUFSUSxxQkFBcUI7WUFMNUIsZUFBZTtZQUdmLGtCQUFrQjs7O29CQWNqQixTQUFTLFNBQUMsT0FBTzsyQkFDakIsS0FBSztxQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgU2RHcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFF1aWNrRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1wb3B1cC1maWx0ZXIvZ3JpZC1wb3B1cC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZFBvcHVwUXVpY2tGaWx0ZXJEZXRhaWwgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGRpc3BsYXlLZXkgPSAnU0RDVVNUT00nO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyczogUXVpY2tGaWx0ZXJbXTtcclxuICBAT3V0cHV0KCkgYWNjZXB0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XHJcbiAgc2VsZWN0YWJsZUZpZWxkczogRmllbGRbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZmlsdGVyOiBGaWx0ZXIgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogRmlsdGVyID0ge307XHJcbiAgc2VsZWN0ZWRGaWVsZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgcGFnZTogMSB8IDIgPSAxO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb3Blbihjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBmaWx0ZXI/OiBGaWx0ZXIsIGV4dGVybmFsRmlsdGVyPzogRmlsdGVyLCBjb2RlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVycyA9IGV4dGVybmFsRmlsdGVycztcclxuICAgIHRoaXMuY29kZSA9IGNvZGU7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcltrZXldID09PSBudWxsIHx8IGZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBrZXkpO1xyXG4gICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyW2tleV0gPSBmaWx0ZXJba2V5XTtcclxuICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgIC4uLmNvbHVtbixcclxuICAgICAgICAgIGlkOiAnY29sdW1uJyArIGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIGdyb3VwOiAnY29sdW1uJyxcclxuICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICAgICAgY29kZTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChleHRlcm5hbEZpbHRlcikge1xyXG4gICAgICBPYmplY3Qua2V5cyhleHRlcm5hbEZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gbnVsbCB8fCBleHRlcm5hbEZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgodGhpcy5kaXNwbGF5S2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID0gZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGV4dGVybmFsRmlsdGVycy5maW5kKGUgPT4gZS5maWVsZCA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGVyYW5nZScgfHwgaXRlbS50eXBlID09PSAnbnVtYmVycmFuZ2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2tleV0gPSB7IC4uLmV4dGVybmFsRmlsdGVyW2tleV0gfTtcclxuICAgICAgICAgIGlmICghZXh0ZXJuYWxGaWx0ZXJba2V5XT8uZnJvbSAmJiAhZXh0ZXJuYWxGaWx0ZXJba2V5XT8udG8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5maWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGlkOiAnZXh0ZXJuYWwnICsgaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdleHRlcm5hbCcsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgY29kZTogaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICAgIGZyb21UaXRsZTogaXRlbS5mcm9tVGl0bGUsXHJcbiAgICAgICAgICAgIHRvVGl0bGU6IGl0ZW0udG9UaXRsZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHsgLi4uZXh0ZXJuYWxGaWx0ZXJba2V5XSB9O1xyXG4gICAgICAgICAgaWYgKCFleHRlcm5hbEZpbHRlcltrZXldPy5mcm9tICYmICFleHRlcm5hbEZpbHRlcltrZXldPy50bykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IGV4dGVybmFsRmlsdGVyW2tleV07XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV4dGVybmFsRmllbGRzOiBGaWVsZFtdID0gZXh0ZXJuYWxGaWx0ZXJzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAuLi5lLFxyXG4gICAgICBpZDogJ2V4dGVybmFsJyArIGUuZmllbGQsXHJcbiAgICAgIGdyb3VwOiAnZXh0ZXJuYWwnLFxyXG4gICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICB9KSkgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuICAgIGNvbHVtbnM/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb2x1bW4pIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGNvbHVtbkZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uZSxcclxuICAgICAgICAgICAgaWQ6ICdjb2x1bW4nICsgZS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdjb2x1bW4nLFxyXG4gICAgICAgICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2x1bW5GaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICBpZDogJ2NvbHVtbicgKyBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICBncm91cDogJ2NvbHVtbicsXHJcbiAgICAgICAgICBjb2RlOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVGaWVsZHMgPSBbLi4uZXh0ZXJuYWxGaWVsZHMsIC4uLmNvbHVtbkZpZWxkc107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB7fTtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0gPSB0cnVlKTtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMuZmllbGRzLmxlbmd0aCA+IDAgPyAyIDogMTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBleGVjdXRlID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7fTtcclxuICAgICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZmlsdGVyW2tleV0gPT09IG51bGwgfHwgdGhpcy5maWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkcy5zb21lKGUgPT4gZS5ncm91cCA9PT0gJ2NvbHVtbicgJiYgZS5jb2RlID09PSBrZXkpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcltrZXldID0gdGhpcy5maWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZXJuYWxGaWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSBudWxsIHx8IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYWNjZXB0LmVtaXQoe1xyXG4gICAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgICBmaWx0ZXIsXHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29kZSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybVdpdGhJbnB1dCgnRW50ZXIgeW91ciBxdWljayBmaWx0ZXIgbmFtZScpLnRoZW4oKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnF1aWNrRmlsdGVycz8uc29tZShlID0+IGUuY29kZSA9PT0gdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb2RlIGlzIGV4aXN0ZWQnKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgZXhlY3V0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGVjdXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0RmllbGQgPSAodmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLnNlbGVjdGFibGVGaWVsZHMuZmlsdGVyKGUgPT4gdmFsdWVzLnNvbWUodiA9PiBlLmNvZGUgPT09IHYpKTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmdyb3VwID09PSAnZXh0ZXJuYWwnICYmIGZpZWxkLnR5cGUuaW5jbHVkZXMoJ3JhbmdlJykpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdID0gdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZC5jb2RlXSB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RGaWVsZHMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkcy5maWx0ZXIoZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0pO1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZ3JvdXAgPT09ICdleHRlcm5hbCcgJiYgZmllbGQudHlwZS5pbmNsdWRlcygncmFuZ2UnKSkge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZmllbGQuY29kZV0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRmllbGQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZ3JvdXA6ICdjb2x1bW4nIHwgJ2V4dGVybmFsJztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZyb21UaXRsZT86IHN0cmluZztcclxuICB0b1RpdGxlPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEZpbHRlciB7XHJcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9ncmlkLXBvcHVwLXF1aWNrLWZpbHRlci1kZXRhaWwvZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF5QixTQUFTLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekcsT0FBTyxFQUNMLGVBQWUsRUFDaEIsTUFBTSx5QkFBeUIsQ0FBQztBQUNqQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFTNUQsTUFBTSxPQUFPLDRCQUE0QjtJQWlCdkMsWUFDRSxhQUFvQyxFQUM1QixhQUE4QixFQUM5QixnQkFBb0M7UUFEcEMsa0JBQWEsR0FBYixhQUFhLENBQWlCO1FBQzlCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBb0I7UUFuQjlDLGVBQVUsR0FBRyxVQUFVLENBQUM7UUFDeEIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBR2YsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDM0MsV0FBTSxHQUFZLEVBQUUsQ0FBQztRQUNyQixxQkFBZ0IsR0FBWSxFQUFFLENBQUM7UUFDL0IsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFDN0Isb0JBQWUsR0FBMkIsRUFBRSxDQUFDO1FBQzdDLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsbUJBQWMsR0FBVyxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FFVCxFQUFF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LEVBQUUsUUFBUSxFQUNmLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUNsQixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFDakIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQ25CLENBQUM7YUFDSjtRQUNILENBQUMsRUFBRTtRQUNILElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQixDQUFDOzs7WUEzSkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQ0FBbUM7Z0JBQzdDLG1sUkFBOEQ7O2FBRS9EOzs7WUFSUSxxQkFBcUI7WUFMNUIsZUFBZTtZQUdmLGtCQUFrQjs7O29CQWNqQixTQUFTLFNBQUMsT0FBTzsyQkFDakIsS0FBSztxQkFDTCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNkR3JpZENvbHVtbiwgU2RHcmlkRXh0ZXJuYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9ncmlkLm1vZGVsJztcclxuXHJcbmltcG9ydCB7XHJcbiAgU2ROb3RpZnlTZXJ2aWNlXHJcbn0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9ub3RpZnknO1xyXG5pbXBvcnQge1xyXG4gIFNkVHJhbnNsYXRlU2VydmljZVxyXG59IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdHJhbnNsYXRlJztcclxuaW1wb3J0IHsgRGV2aWNlRGV0ZWN0b3JTZXJ2aWNlIH0gZnJvbSAnbmd4LWRldmljZS1kZXRlY3Rvcic7XHJcbmltcG9ydCB7IFF1aWNrRmlsdGVyIH0gZnJvbSAnLi4vZ3JpZC1wb3B1cC1maWx0ZXIvZ3JpZC1wb3B1cC1maWx0ZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZE1vZGFsIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9tb2RhbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWdyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtcG9wdXAtcXVpY2stZmlsdGVyLWRldGFpbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZ3JpZC1wb3B1cC1xdWljay1maWx0ZXItZGV0YWlsLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFNkR3JpZFBvcHVwUXVpY2tGaWx0ZXJEZXRhaWwgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGRpc3BsYXlLZXkgPSAnU0RDVVNUT00nO1xyXG4gIGlzTW9iaWxlT3JUYWJsZXQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdtb2RhbCcpIG1vZGFsOiBTZE1vZGFsO1xyXG4gIEBJbnB1dCgpIHF1aWNrRmlsdGVyczogUXVpY2tGaWx0ZXJbXTtcclxuICBAT3V0cHV0KCkgYWNjZXB0ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgZmllbGRzOiBGaWVsZFtdID0gW107XHJcbiAgc2VsZWN0YWJsZUZpZWxkczogRmllbGRbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IFNkR3JpZENvbHVtbltdID0gW107XHJcbiAgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdID0gW107XHJcbiAgZmlsdGVyOiBGaWx0ZXIgPSB7fTtcclxuICBleHRlcm5hbEZpbHRlcjogRmlsdGVyID0ge307XHJcbiAgc2VsZWN0ZWRGaWVsZDoge1xyXG4gICAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcclxuICB9ID0ge307XHJcbiAgcGFnZTogMSB8IDIgPSAxO1xyXG4gIGNvZGU6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGRldmljZVNlcnZpY2U6IERldmljZURldGVjdG9yU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZ5U2VydmljZTogU2ROb3RpZnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBTZFRyYW5zbGF0ZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuaXNNb2JpbGVPclRhYmxldCA9ICFkZXZpY2VTZXJ2aWNlLmlzRGVza3RvcCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgb3Blbihjb2x1bW5zOiBTZEdyaWRDb2x1bW5bXSwgZXh0ZXJuYWxGaWx0ZXJzOiBTZEdyaWRFeHRlcm5hbEZpbHRlcltdLCBmaWx0ZXI/OiBGaWx0ZXIsIGV4dGVybmFsRmlsdGVyPzogRmlsdGVyLCBjb2RlPzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IFtdO1xyXG4gICAgdGhpcy5maWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XHJcbiAgICB0aGlzLmV4dGVybmFsRmlsdGVycyA9IGV4dGVybmFsRmlsdGVycztcclxuICAgIHRoaXMuY29kZSA9IGNvZGU7XHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChmaWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcltrZXldID09PSBudWxsIHx8IGZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoZSA9PiBlLmZpZWxkID09PSBrZXkpO1xyXG4gICAgICAgIGlmICghY29sdW1uKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmlsdGVyW2tleV0gPSBmaWx0ZXJba2V5XTtcclxuICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgIC4uLmNvbHVtbixcclxuICAgICAgICAgIGlkOiAnY29sdW1uJyArIGNvbHVtbi5maWVsZCxcclxuICAgICAgICAgIGdyb3VwOiAnY29sdW1uJyxcclxuICAgICAgICAgIHR5cGU6IGNvbHVtbi50eXBlLFxyXG4gICAgICAgICAgY29kZTogY29sdW1uLmZpZWxkLFxyXG4gICAgICAgICAgdGl0bGU6IGNvbHVtbi50aXRsZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmIChleHRlcm5hbEZpbHRlcikge1xyXG4gICAgICBPYmplY3Qua2V5cyhleHRlcm5hbEZpbHRlcikuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgICAgIGlmIChleHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gbnVsbCB8fCBleHRlcm5hbEZpbHRlcltrZXldID09PSAnJykge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgodGhpcy5kaXNwbGF5S2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID0gZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IGV4dGVybmFsRmlsdGVycy5maW5kKGUgPT4gZS5maWVsZCA9PT0ga2V5KTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2RhdGVyYW5nZScgfHwgaXRlbS50eXBlID09PSAnbnVtYmVycmFuZ2UnKSB7XHJcbiAgICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2tleV0gPSB7IC4uLmV4dGVybmFsRmlsdGVyW2tleV0gfTtcclxuICAgICAgICAgIGlmICghZXh0ZXJuYWxGaWx0ZXJba2V5XT8uZnJvbSAmJiAhZXh0ZXJuYWxGaWx0ZXJba2V5XT8udG8pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5maWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLml0ZW0sXHJcbiAgICAgICAgICAgIGlkOiAnZXh0ZXJuYWwnICsgaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdleHRlcm5hbCcsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgY29kZTogaXRlbS5maWVsZCxcclxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXHJcbiAgICAgICAgICAgIGZyb21UaXRsZTogaXRlbS5mcm9tVGl0bGUsXHJcbiAgICAgICAgICAgIHRvVGl0bGU6IGl0ZW0udG9UaXRsZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnZGF0ZXJhbmdlZnVsbCcpIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHsgLi4uZXh0ZXJuYWxGaWx0ZXJba2V5XSB9O1xyXG4gICAgICAgICAgaWYgKCFleHRlcm5hbEZpbHRlcltrZXldPy5mcm9tICYmICFleHRlcm5hbEZpbHRlcltrZXldPy50bykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IGV4dGVybmFsRmlsdGVyW2tleV07XHJcbiAgICAgICAgICB0aGlzLmZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgaWQ6ICdleHRlcm5hbCcgKyBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICBncm91cDogJ2V4dGVybmFsJyxcclxuICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICBjb2RlOiBpdGVtLmZpZWxkLFxyXG4gICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGV4dGVybmFsRmllbGRzOiBGaWVsZFtdID0gZXh0ZXJuYWxGaWx0ZXJzPy5tYXAoZSA9PiAoe1xyXG4gICAgICAuLi5lLFxyXG4gICAgICBpZDogJ2V4dGVybmFsJyArIGUuZmllbGQsXHJcbiAgICAgIGdyb3VwOiAnZXh0ZXJuYWwnLFxyXG4gICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICB9KSkgfHwgW107XHJcbiAgICBjb25zdCBjb2x1bW5GaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuICAgIGNvbHVtbnM/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChjb2x1bW4gPT4ge1xyXG4gICAgICBpZiAoJ2NoaWxkcmVuJyBpbiBjb2x1bW4pIHtcclxuICAgICAgICBjb2x1bW4uY2hpbGRyZW4/LmZpbHRlcihlID0+IGUudHlwZSAhPT0gJ2ltYWdlJykuZm9yRWFjaChlID0+IHtcclxuICAgICAgICAgIGNvbHVtbkZpZWxkcy5wdXNoKHtcclxuICAgICAgICAgICAgLi4uZSxcclxuICAgICAgICAgICAgaWQ6ICdjb2x1bW4nICsgZS5maWVsZCxcclxuICAgICAgICAgICAgZ3JvdXA6ICdjb2x1bW4nLFxyXG4gICAgICAgICAgICBjb2RlOiBlLmZpZWxkLFxyXG4gICAgICAgICAgICB0eXBlOiBlLnR5cGUsXHJcbiAgICAgICAgICAgIHRpdGxlOiBlLnRpdGxlXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2x1bW5GaWVsZHMucHVzaCh7XHJcbiAgICAgICAgICAuLi5jb2x1bW4sXHJcbiAgICAgICAgICBpZDogJ2NvbHVtbicgKyBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICBncm91cDogJ2NvbHVtbicsXHJcbiAgICAgICAgICBjb2RlOiBjb2x1bW4uZmllbGQsXHJcbiAgICAgICAgICB0eXBlOiBjb2x1bW4udHlwZSxcclxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGVcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnNlbGVjdGFibGVGaWVsZHMgPSBbLi4uZXh0ZXJuYWxGaWVsZHMsIC4uLmNvbHVtbkZpZWxkc107XHJcbiAgICB0aGlzLnNlbGVjdGVkRmllbGQgPSB7fTtcclxuICAgIHRoaXMuZmllbGRzLmZvckVhY2goZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0gPSB0cnVlKTtcclxuICAgIHRoaXMucGFnZSA9IHRoaXMuZmllbGRzLmxlbmd0aCA+IDAgPyAyIDogMTtcclxuICAgIHRoaXMubW9kYWwub3BlbigpO1xyXG4gIH1cclxuXHJcbiAgb25BY2NlcHQgPSAoKSA9PiB7XHJcbiAgICBjb25zdCBleGVjdXRlID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBmaWx0ZXIgPSB7fTtcclxuICAgICAgY29uc3QgZXh0ZXJuYWxGaWx0ZXIgPSB7fTtcclxuICAgICAgT2JqZWN0LmtleXModGhpcy5maWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5maWx0ZXJba2V5XSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuZmlsdGVyW2tleV0gPT09IG51bGwgfHwgdGhpcy5maWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLmZpZWxkcy5zb21lKGUgPT4gZS5ncm91cCA9PT0gJ2NvbHVtbicgJiYgZS5jb2RlID09PSBrZXkpKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbHRlcltrZXldID0gdGhpcy5maWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXh0ZXJuYWxGaWx0ZXIpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICBpZiAodGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5leHRlcm5hbEZpbHRlcltrZXldID09PSBudWxsIHx8IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XSA9PT0gJycpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJba2V5XSA9IHRoaXMuZXh0ZXJuYWxGaWx0ZXJba2V5XTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuYWNjZXB0LmVtaXQoe1xyXG4gICAgICAgIGNvZGU6IHRoaXMuY29kZSxcclxuICAgICAgICBmaWx0ZXIsXHJcbiAgICAgICAgZXh0ZXJuYWxGaWx0ZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICAgIH07XHJcbiAgICBpZiAoIXRoaXMuY29kZSkge1xyXG4gICAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybVdpdGhJbnB1dCgnRW50ZXIgeW91ciBxdWljayBmaWx0ZXIgbmFtZScpLnRoZW4oKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgIGlmICh0aGlzLnF1aWNrRmlsdGVycz8uc29tZShlID0+IGUuY29kZSA9PT0gdmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdDb2RlIGlzIGV4aXN0ZWQnKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuY29kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgZXhlY3V0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBleGVjdXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCA9ICgpID0+IHtcclxuICAgIHRoaXMubW9kYWwuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0RmllbGQgPSAodmFsdWVzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgdGhpcy5maWVsZHMgPSB0aGlzLnNlbGVjdGFibGVGaWVsZHMuZmlsdGVyKGUgPT4gdmFsdWVzLnNvbWUodiA9PiBlLmNvZGUgPT09IHYpKTtcclxuICAgIGZvciAoY29uc3QgZmllbGQgb2YgdGhpcy5maWVsZHMpIHtcclxuICAgICAgaWYgKGZpZWxkLmdyb3VwID09PSAnZXh0ZXJuYWwnICYmIGZpZWxkLnR5cGUuaW5jbHVkZXMoJ3JhbmdlJykpIHtcclxuICAgICAgICB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdID0gdGhpcy5leHRlcm5hbEZpbHRlcltmaWVsZC5jb2RlXSB8fCB7fTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RGaWVsZHMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZpZWxkcyA9IHRoaXMuc2VsZWN0YWJsZUZpZWxkcy5maWx0ZXIoZSA9PiB0aGlzLnNlbGVjdGVkRmllbGRbZS5pZF0pO1xyXG4gICAgZm9yIChjb25zdCBmaWVsZCBvZiB0aGlzLmZpZWxkcykge1xyXG4gICAgICBpZiAoZmllbGQuZ3JvdXAgPT09ICdleHRlcm5hbCcgJiYgZmllbGQudHlwZS5pbmNsdWRlcygncmFuZ2UnKSkge1xyXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxGaWx0ZXJbZmllbGQuY29kZV0gPSB0aGlzLmV4dGVybmFsRmlsdGVyW2ZpZWxkLmNvZGVdIHx8IHt9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRmllbGQge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgZ3JvdXA6ICdjb2x1bW4nIHwgJ2V4dGVybmFsJztcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGZyb21UaXRsZT86IHN0cmluZztcclxuICB0b1RpdGxlPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuaW50ZXJmYWNlIEZpbHRlciB7XHJcbiAgW2ZpZWxkOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuIl19
@@ -258,7 +258,7 @@ _name = new WeakMap(), _form = new WeakMap(), _blurOnEnter_1 = new WeakMap(), _m
258
258
  SdInput.decorators = [
259
259
  { type: Component, args: [{
260
260
  selector: 'sd-input',
261
- template: "<label *ngIf=\"!appearance && label\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\"\r\n [ngClass]=\"{'sd-form-tooltip':tooltip, 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{label}}</mat-label>\r\n <input [id]=\"id\" [formControl]=\"formControl\" [type]=\"type\" #control matInput [placeholder]=\"placeholder || (!appearance ? label : '')\"\r\n (keyup.enter)=\"onKeyupEnter()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [required]=\"isRequired\"\r\n [readonly]=\"isReadonly\" [autocomplete]=\"id\" autocorrect=\"off\" [step]=\"1\" [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\">\r\n <button #btnCopy *ngIf=\"copyable\" matSuffix mat-flat-button aria-label=\"Clear\" class=\"btn-copy\"\r\n (click)=\"copyText()\">\r\n Copy\r\n </button>\r\n <span class=\"mr-1\" *ngIf=\"maxlength\" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf=\"sdInputSuffix?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdInputSuffix.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf=\"!hideIcon && sdClickIcon?.observers?.length\" (click)=\"onClickIcon($event)\"\r\n class=\"pointer sd-suffix-icon\" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.pattern\">\r\n {{'Pattern error' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.customValidator\">\r\n {{formControl.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"tooltip\" class=\"sd-tooltip\">\r\n <mat-icon (click)=\"sdTooltip.toggle()\" [matTooltip]=\"formControl.value | sdInputTooltipPipe:tooltip\" matSuffix\r\n #sdTooltip=\"matTooltip\">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>",
261
+ template: "<label *ngIf=\"!appearance && label\" class=\"d-block mb-0 T14M\">{{label}} <span class=\"text-danger mb-2\" *ngIf=\"isRequired\">*</span></label>\r\n<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\"\r\n [ngClass]=\"{'sd-form-tooltip':tooltip, 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [appearance]=\"appearance || 'outline'\">\r\n <mat-label *ngIf=\"appearance && label\">{{label}}</mat-label>\r\n <input [id]=\"id\" [formControl]=\"formControl\" [type]=\"type\" #control matInput [placeholder]=\"placeholder || (appearance ? label : '')\"\r\n (keyup.enter)=\"onKeyupEnter()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [required]=\"isRequired\"\r\n [readonly]=\"isReadonly\" [autocomplete]=\"id\" autocorrect=\"off\" [step]=\"1\" [attr.data-qclabel]=\"label\" [attr.data-qcid]=\"qcId\">\r\n <button #btnCopy *ngIf=\"copyable\" matSuffix mat-flat-button aria-label=\"Clear\" class=\"btn-copy\"\r\n (click)=\"copyText()\">\r\n Copy\r\n </button>\r\n <span class=\"mr-1\" *ngIf=\"maxlength\" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf=\"sdInputSuffix?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdInputSuffix.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf=\"!hideIcon && sdClickIcon?.observers?.length\" (click)=\"onClickIcon($event)\"\r\n class=\"pointer sd-suffix-icon\" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.pattern\">\r\n {{'Pattern error' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"!disableErrorMessage && formControl.touched && formControl.errors?.customValidator\">\r\n {{formControl.errors?.customValidator}}\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"tooltip\" class=\"sd-tooltip\">\r\n <mat-icon (click)=\"sdTooltip.toggle()\" [matTooltip]=\"formControl.value | sdInputTooltipPipe:tooltip\" matSuffix\r\n #sdTooltip=\"matTooltip\">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>",
262
262
  changeDetection: ChangeDetectionStrategy.OnPush,
263
263
  styles: [":host ::ng-deep .mat-form-field.sd-form-tooltip{width:calc(100% - 30px)}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd-tooltip{display:inline-block;margin:auto;text-align:center;width:30px}:host{display:block;padding-top:5px}.sd-md:hover .btn-copy{visibility:visible}.btn-copy{background:#e9e9e9!important;font-size:12px;line-height:26px!important;margin-bottom:3px;visibility:hidden}"]
264
264
  },] }
@@ -301,4 +301,4 @@ SdInput.propDecorators = {
301
301
  btnCopy: [{ type: ViewChild, args: ['btnCopy', { read: ElementRef },] }],
302
302
  _copyable: [{ type: Input, args: ['copyable',] }]
303
303
  };
304
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9pbnB1dC8iLCJzb3VyY2VzIjpbInNyYy9saWIvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBR2pCLFVBQVUsRUFFVixZQUFZLEVBQ1osdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixNQUFNLEVBQWUsVUFBVSxFQUErQixNQUFNLGdCQUFnQixDQUFDO0FBQy9HLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBU3RELE1BQU0sT0FBTyxPQUFPO0lBb0hsQixZQUNVLEdBQXNCLEVBQ1csVUFBOEIsRUFDL0QsY0FBZ0M7UUFGaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDVyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUMvRCxtQkFBYyxHQUFk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QUFXO3lCQUtqQixLQUFLLFNBQUMsV0FBVztzQkFLakIsS0FBSzt3QkFLTCxLQUFLO3VCQU1MLEtBQUs7bUJBUUwsS0FBSzt3QkFFTCxLQUFLLFNBQUMsVUFBVTswQkFJaEIsTUFBTTtzQkFDTixLQUFLO3VCQUNMLE1BQU07c0JBQ04sTUFBTTsrQkFDTixNQUFNO3lCQUNOLE1BQU07c0JBRU4sU0FBUyxTQUFDLFNBQVM7NEJBQ25CLFlBQVksU0FBQyxzQkFBc0I7cUJBR25DLFlBQVksU0FBQyxrQkFBa0I7c0JBRS9CLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3dCQUV6QyxLQUFLLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkSW5wdXRTdWZmaXhEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtc3VmZml4LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkRm9ybUNvbnRyb2wgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IFNkVmlld0RlZkRpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdXRpbGl0eSc7XHJcbmltcG9ydCB7IEZPUk1fQ09ORklHIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBJRm9ybUNvbmZpZ3VyYXRpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZElucHV0IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGlkID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICNuYW1lID0gdXVpZC52NCgpO1xyXG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuI25hbWUgPSB2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdsZyc7XHJcbiAgI2Zvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBzZXQgZm9ybSh2YWw6IE5nRm9ybSB8IEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmdGb3JtKSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbC5mb3JtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcWNJZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCdsYWJlbCcpIHNldCBfbGFiZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubGFiZWwgPSB2YWw7XHJcbiAgICB0aGlzLnFjSWQgPSBoYXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdzZC1pbnB1dCcsXHJcbiAgICAgIGxhYmVsOiB2YWxcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCcgfCAnZW1haWwnIHwgJ2RhdGV0aW1lLWxvY2FsJyB8ICdtb250aCcgPSAndGV4dCc7XHJcbiAgZGlzYWJsZUVycm9yTWVzc2FnZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZGlzYWJsZUVycm9yTWVzc2FnZScpIHNldCBfZGlzYWJsZUVycm9yTWVzc2FnZSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5kaXNhYmxlRXJyb3JNZXNzYWdlID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI2JsdXJPbkVudGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCdibHVyT25FbnRlcicpIHNldCBfYmx1ck9uRW50ZXIodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHRoaXMuI2JsdXJPbkVudGVyID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI21vZGVsOiBhbnk7XHJcbiAgQElucHV0KCkgc2V0IG1vZGVsKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLiNtb2RlbCAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy4jbW9kZWwgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwge1xyXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gVmFsaWRhdG9yXHJcbiAgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlYWRvbmx5ID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcblxyXG4gIG1pbmxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IHBNaW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBtYXhsZW5ndGg6IG51bWJlcjtcclxuICBASW5wdXQoJ21heGxlbmd0aCcpIHNldCBwTWF4bGVuZ3RoKHZhbDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heGxlbmd0aCA9ICt2YWw7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcbiAgI3BhdHRlcm46IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgcGF0dGVybih2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy4jcGF0dGVybiA9IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICAjdmFsaWRhdG9yOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xyXG4gIEBJbnB1dCgpIHNldCB2YWxpZGF0b3IodmFsaWRhdG9yOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLiN2YWxpZGF0b3IgPSB2YWxpZGF0b3I7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIC8vIE9wdGlvbmFsXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGljb24gPSAnc2VhcmNoJztcclxuICBoaWRlSWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnaGlkZUljb24nKSBzZXQgX2hpZGVJY29uKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLmhpZGVJY29uID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBzZENsaWNrSWNvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyB8ICgoaW5wdXRWYWx1ZTogc3RyaW5nKSA9PiBzdHJpbmcpO1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNkRm9jdXNGb3JjZUJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkga2V5dXBFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udHJvbCcpIGNvbnRyb2w6IEVsZW1lbnRSZWY7XHJcbiAgQENvbnRlbnRDaGlsZChTZElucHV0U3VmZml4RGlyZWN0aXZlKSBzZElucHV0U3VmZml4OiBTZElucHV0U3VmZml4RGlyZWN0aXZlO1xyXG4gIGZvcm1Db250cm9sID0gbmV3IFNkRm9ybUNvbnRyb2woKTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RWaWV3RGVmRGlyZWN0aXZlKSBzZFZpZXc6IFNkVmlld0RlZkRpcmVjdGl2ZTtcclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdidG5Db3B5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGJ0bkNvcHk6IEVsZW1lbnRSZWY7XHJcbiAgY29weWFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoJ2NvcHlhYmxlJykgc2V0IF9jb3B5YWJsZSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5jb3B5YWJsZSA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChGT1JNX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtQ29uZmlnOiBJRm9ybUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBwZWFyYW5jZSA9IHRoaXMuYXBwZWFyYW5jZSB8fCB0aGlzLmZvcm1Db25maWc/LmFwcGVhcmFuY2U7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wuc2RDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUodGhpcy4jb25DaGFuZ2UpKTtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LnJlbW92ZUNvbnRyb2wodGhpcy4jbmFtZSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHJlVmFsaWRhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gICN1cGRhdGVWYWxpZGF0b3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhckFzeW5jVmFsaWRhdG9ycygpO1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWlubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5sZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1heGxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4bGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jcGF0dGVybikge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuI3BhdHRlcm4pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLiN2YWxpZGF0b3IpIHtcclxuICAgICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy4jY3VzdG9tVmFsaWRhdG9yKHRoaXMuI3ZhbGlkYXRvcikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgI29uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25LZXl1cEVudGVyID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdmFsOiBzdHJpbmcgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxuICAgIGlmICh2YWwubGVuZ3RoID4gdmFsLnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwudHJpbSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMua2V5dXBFbnRlci5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuI2JsdXJPbkVudGVyKSB7XHJcbiAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0ljb24gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuc2RDbGlja0ljb24uZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNkRm9jdXMuZW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuc2RGb2N1c0ZvcmNlQmx1ci5vYnNlcnZlcnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIHRoaXMuc2RGb2N1c0ZvcmNlQmx1ci5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsOiBzdHJpbmcgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxuICAgIGlmICh2YWwubGVuZ3RoID4gdmFsLnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwudHJpbSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5zZFZpZXc/LnRlbXBsYXRlUmVmKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZCAmJiAhdGhpcy5pc0ZvY3VzZWQpIHtcclxuICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb250cm9sPy5uYXRpdmVFbGVtZW50Py5ibHVyKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cyA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRyb2w/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgI2N1c3RvbVZhbGlkYXRvciA9IChmdW5jOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+KTogQXN5bmNWYWxpZGF0b3JGbiA9PiB7XHJcbiAgICByZXR1cm4gYXN5bmMgKGM6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8eyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGw+ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjLnZhbHVlIHx8IG51bGw7XHJcbiAgICAgIGlmIChmdW5jICYmIHR5cGVvZiAoZnVuYykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBmdW5jKHZhbHVlKTtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgY3VzdG9tVmFsaWRhdG9yOiBtZXNzYWdlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY3VzdG9tVmFsaWRhdG9yOiByZXN1bHRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvcHlUZXh0KCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5jb3B5VG9DbGlwYm9hcmQodGhpcy4jbW9kZWwpO1xyXG4gICAgdGhpcy5idG5Db3B5Lm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gJ0NvcGllZCc7XHJcbiAgICB0aGlzLmJ0bkNvcHkubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiAjNGNhZjUwOycpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYnRuQ29weS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9ICdDb3B5JztcclxuICAgICAgdGhpcy5idG5Db3B5Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgfSwgMjAwMCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9pbnB1dC8iLCJzb3VyY2VzIjpbInNyYy9saWIvaW5wdXQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osaUJBQWlCLEVBR2pCLFVBQVUsRUFFVixZQUFZLEVBQ1osdUJBQXVCLEVBRXZCLE1BQU0sRUFDTixRQUFRLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixNQUFNLEVBQWUsVUFBVSxFQUErQixNQUFNLGdCQUFnQixDQUFDO0FBQy9HLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUMvQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBU3RELE1BQU0sT0FBTyxPQUFPO0lBb0hsQixZQUNVLEdBQXNCLEVBQ1csVUFBOEIsRUFDL0QsY0FBZ0M7UUFGaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDVyxlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUMvRCxtQkFBYyxHQUFk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QUFXO3lCQUtqQixLQUFLLFNBQUMsV0FBVztzQkFLakIsS0FBSzt3QkFLTCxLQUFLO3VCQU1MLEtBQUs7bUJBUUwsS0FBSzt3QkFFTCxLQUFLLFNBQUMsVUFBVTswQkFJaEIsTUFBTTtzQkFDTixLQUFLO3VCQUNMLE1BQU07c0JBQ04sTUFBTTsrQkFDTixNQUFNO3lCQUNOLE1BQU07c0JBRU4sU0FBUyxTQUFDLFNBQVM7NEJBQ25CLFlBQVksU0FBQyxzQkFBc0I7cUJBR25DLFlBQVksU0FBQyxrQkFBa0I7c0JBRS9CLFNBQVMsU0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO3dCQUV6QyxLQUFLLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIE9uRGVzdHJveSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgT25Jbml0LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5qZWN0LFxyXG4gIE9wdGlvbmFsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTmdGb3JtLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycywgQXN5bmNWYWxpZGF0b3JGbiwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgaGFzaCBmcm9tICdvYmplY3QtaGFzaCc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkSW5wdXRTdWZmaXhEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvaW5wdXQtc3VmZml4LmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IFNkRm9ybUNvbnRyb2wgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IFNkVmlld0RlZkRpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RVdGlsaXR5U2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvdXRpbGl0eSc7XHJcbmltcG9ydCB7IEZPUk1fQ09ORklHIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBJRm9ybUNvbmZpZ3VyYXRpb24gfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1pbnB1dCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZElucHV0IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIGlkID0gYEkke3V1aWQudjQoKX1gO1xyXG4gICNuYW1lID0gdXVpZC52NCgpO1xyXG4gIEBJbnB1dCgpIHNldCBuYW1lKHZhbDogc3RyaW5nKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIHRoaXMuI25hbWUgPSB2YWw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2U7XHJcbiAgQElucHV0KCkgc2l6ZTogJ3NtJyB8ICdsZyc7XHJcbiAgI2Zvcm06IEZvcm1Hcm91cDtcclxuICBASW5wdXQoKSBzZXQgZm9ybSh2YWw6IE5nRm9ybSB8IEZvcm1Hcm91cCkge1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgTmdGb3JtKSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbC5mb3JtO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcWNJZDogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCdsYWJlbCcpIHNldCBfbGFiZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMubGFiZWwgPSB2YWw7XHJcbiAgICB0aGlzLnFjSWQgPSBoYXNoKHtcclxuICAgICAgc2VsZWN0b3I6ICdzZC1pbnB1dCcsXHJcbiAgICAgIGxhYmVsOiB2YWxcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZztcclxuICBASW5wdXQoKSB0eXBlOiAndGV4dCcgfCAnbnVtYmVyJyB8ICdwYXNzd29yZCcgfCAnZW1haWwnIHwgJ2RhdGV0aW1lLWxvY2FsJyB8ICdtb250aCcgPSAndGV4dCc7XHJcbiAgZGlzYWJsZUVycm9yTWVzc2FnZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnZGlzYWJsZUVycm9yTWVzc2FnZScpIHNldCBfZGlzYWJsZUVycm9yTWVzc2FnZSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5kaXNhYmxlRXJyb3JNZXNzYWdlID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI2JsdXJPbkVudGVyID0gZmFsc2U7XHJcbiAgQElucHV0KCdibHVyT25FbnRlcicpIHNldCBfYmx1ck9uRW50ZXIodmFsOiBib29sZWFuIHwgJycpIHtcclxuICAgIHRoaXMuI2JsdXJPbkVudGVyID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcbiAgI21vZGVsOiBhbnk7XHJcbiAgQElucHV0KCkgc2V0IG1vZGVsKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLiNtb2RlbCAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy4jbW9kZWwgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwge1xyXG4gICAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gVmFsaWRhdG9yXHJcbiAgaXNSZXF1aXJlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgaXNSZWFkb25seSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNldCByZWFkb25seSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5pc1JlYWRvbmx5ID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICB9XHJcblxyXG4gIG1pbmxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IHBNaW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICBtYXhsZW5ndGg6IG51bWJlcjtcclxuICBASW5wdXQoJ21heGxlbmd0aCcpIHNldCBwTWF4bGVuZ3RoKHZhbDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heGxlbmd0aCA9ICt2YWw7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcbiAgI3BhdHRlcm46IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgcGF0dGVybih2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy4jcGF0dGVybiA9IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuICAjdmFsaWRhdG9yOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xyXG4gIEBJbnB1dCgpIHNldCB2YWxpZGF0b3IodmFsaWRhdG9yOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+KSB7XHJcbiAgICB0aGlzLiN2YWxpZGF0b3IgPSB2YWxpZGF0b3I7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIC8vIE9wdGlvbmFsXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIEBJbnB1dCgpIGljb24gPSAnc2VhcmNoJztcclxuICBoaWRlSWNvbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgnaGlkZUljb24nKSBzZXQgX2hpZGVJY29uKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLmhpZGVJY29uID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHZhbCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBzZENsaWNrSWNvbiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXA6IHN0cmluZyB8ICgoaW5wdXRWYWx1ZTogc3RyaW5nKSA9PiBzdHJpbmcpO1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBzZEZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgQE91dHB1dCgpIHNkRm9jdXNGb3JjZUJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkga2V5dXBFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnY29udHJvbCcpIGNvbnRyb2w6IEVsZW1lbnRSZWY7XHJcbiAgQENvbnRlbnRDaGlsZChTZElucHV0U3VmZml4RGlyZWN0aXZlKSBzZElucHV0U3VmZml4OiBTZElucHV0U3VmZml4RGlyZWN0aXZlO1xyXG4gIGZvcm1Db250cm9sID0gbmV3IFNkRm9ybUNvbnRyb2woKTtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RWaWV3RGVmRGlyZWN0aXZlKSBzZFZpZXc6IFNkVmlld0RlZkRpcmVjdGl2ZTtcclxuICBpc0ZvY3VzZWQgPSBmYWxzZTtcclxuICBAVmlld0NoaWxkKCdidG5Db3B5JywgeyByZWFkOiBFbGVtZW50UmVmIH0pIGJ0bkNvcHk6IEVsZW1lbnRSZWY7XHJcbiAgY29weWFibGUgPSBmYWxzZTtcclxuICBASW5wdXQoJ2NvcHlhYmxlJykgc2V0IF9jb3B5YWJsZSh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5jb3B5YWJsZSA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQEluamVjdChGT1JNX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtQ29uZmlnOiBJRm9ybUNvbmZpZ3VyYXRpb24sXHJcbiAgICBwcml2YXRlIHV0aWxpdHlTZXJ2aWNlOiBTZFV0aWxpdHlTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYXBwZWFyYW5jZSA9IHRoaXMuYXBwZWFyYW5jZSB8fCB0aGlzLmZvcm1Db25maWc/LmFwcGVhcmFuY2U7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24uYWRkKHRoaXMuZm9ybUNvbnRyb2wuc2RDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmZvcm1Db250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgyMDApKS5zdWJzY3JpYmUodGhpcy4jb25DaGFuZ2UpKTtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LnJlbW92ZUNvbnRyb2wodGhpcy4jbmFtZSk7XHJcbiAgICB0aGlzLiNzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHJlVmFsaWRhdGUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICB9XHJcblxyXG4gICN1cGRhdGVWYWxpZGF0b3IgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhckFzeW5jVmFsaWRhdG9ycygpO1xyXG4gICAgY29uc3QgdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXSA9IFtdO1xyXG4gICAgY29uc3QgYXN5bmNWYWxpZGF0b3JzOiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLmlzUmVxdWlyZWQpIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubWlubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgodGhpcy5taW5sZW5ndGgpKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1heGxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMubWF4bGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy4jcGF0dGVybikge1xyXG4gICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHRoaXMuI3BhdHRlcm4pKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLiN2YWxpZGF0b3IpIHtcclxuICAgICAgYXN5bmNWYWxpZGF0b3JzLnB1c2godGhpcy4jY3VzdG9tVmFsaWRhdG9yKHRoaXMuI3ZhbGlkYXRvcikpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRBc3luY1ZhbGlkYXRvcnMoYXN5bmNWYWxpZGF0b3JzKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gIH1cclxuXHJcbiAgI29uQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcclxuICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLnNkQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25LZXl1cEVudGVyID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdmFsOiBzdHJpbmcgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxuICAgIGlmICh2YWwubGVuZ3RoID4gdmFsLnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwudHJpbSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMua2V5dXBFbnRlci5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuI2JsdXJPbkVudGVyKSB7XHJcbiAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DbGlja0ljb24gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMuc2RDbGlja0ljb24uZW1pdCh0aGlzLmZvcm1Db250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG9uRm9jdXMgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNkRm9jdXMuZW1pdCgpO1xyXG4gICAgaWYgKHRoaXMuc2RGb2N1c0ZvcmNlQmx1ci5vYnNlcnZlcnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIHRoaXMuc2RGb2N1c0ZvcmNlQmx1ci5lbWl0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgY29uc3QgdmFsOiBzdHJpbmcgPSAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSA/PyAnJykudG9TdHJpbmcoKTtcclxuICAgIGlmICh2YWwubGVuZ3RoID4gdmFsLnRyaW0oKS5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh2YWwudHJpbSgpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2xpY2sgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5zZFZpZXc/LnRlbXBsYXRlUmVmKSB7XHJcbiAgICAgIGlmICghdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlZCAmJiAhdGhpcy5pc0ZvY3VzZWQpIHtcclxuICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGJsdXIgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb250cm9sPy5uYXRpdmVFbGVtZW50Py5ibHVyKCk7XHJcbiAgfVxyXG5cclxuICBmb2N1cyA9ICgpID0+IHtcclxuICAgIHRoaXMuaXNGb2N1c2VkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmNvbnRyb2w/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XHJcbiAgICB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgI2N1c3RvbVZhbGlkYXRvciA9IChmdW5jOiAodmFsdWU6IGFueSkgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+KTogQXN5bmNWYWxpZGF0b3JGbiA9PiB7XHJcbiAgICByZXR1cm4gYXN5bmMgKGM6IEFic3RyYWN0Q29udHJvbCk6IFByb21pc2U8eyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGw+ID0+IHtcclxuICAgICAgY29uc3QgdmFsdWUgPSBjLnZhbHVlIHx8IG51bGw7XHJcbiAgICAgIGlmIChmdW5jICYmIHR5cGVvZiAoZnVuYykgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSBmdW5jKHZhbHVlKTtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGF3YWl0IHJlc3VsdDtcclxuICAgICAgICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgY3VzdG9tVmFsaWRhdG9yOiBtZXNzYWdlXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgY3VzdG9tVmFsaWRhdG9yOiByZXN1bHRcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvcHlUZXh0KCkge1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5jb3B5VG9DbGlwYm9hcmQodGhpcy4jbW9kZWwpO1xyXG4gICAgdGhpcy5idG5Db3B5Lm5hdGl2ZUVsZW1lbnQuaW5uZXJUZXh0ID0gJ0NvcGllZCc7XHJcbiAgICB0aGlzLmJ0bkNvcHkubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2NvbG9yOiAjNGNhZjUwOycpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYnRuQ29weS5uYXRpdmVFbGVtZW50LmlubmVyVGV4dCA9ICdDb3B5JztcclxuICAgICAgdGhpcy5idG5Db3B5Lm5hdGl2ZUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdzdHlsZScpO1xyXG4gICAgfSwgMjAwMCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==