info-library 2.16.0-beta → 3.0.0-beta

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 (79) hide show
  1. package/controls/autocomplete/autocomplete.component.d.ts +2 -1
  2. package/controls/date/date.component.d.ts +2 -1
  3. package/controls/date-month/date-month.component.d.ts +2 -1
  4. package/controls/grid/grid.component.d.ts +5 -5
  5. package/controls/input/input.component.d.ts +13 -3
  6. package/controls/multi-select/multi-select.component.d.ts +3 -1
  7. package/controls/select/select.component.d.ts +2 -1
  8. package/directives/unmask.directive.d.ts +2 -1
  9. package/esm2022/controls/alert/alert.component.mjs +8 -10
  10. package/esm2022/controls/autocomplete/autocomplete.component.mjs +33 -26
  11. package/esm2022/controls/big-checkbox/big-checkbox.component.mjs +27 -25
  12. package/esm2022/controls/card/card.component.mjs +12 -6
  13. package/esm2022/controls/card-menu/card-menu.component.mjs +14 -16
  14. package/esm2022/controls/checkbox/checkbox.component.mjs +13 -13
  15. package/esm2022/controls/chips/chips.component.mjs +12 -11
  16. package/esm2022/controls/date/date.component.mjs +64 -32
  17. package/esm2022/controls/date-month/date-month.component.mjs +64 -31
  18. package/esm2022/controls/editor/editor.component.mjs +35 -31
  19. package/esm2022/controls/grid/grid.component.mjs +529 -511
  20. package/esm2022/controls/input/input.component.mjs +146 -71
  21. package/esm2022/controls/input-list/input-list.component.mjs +16 -15
  22. package/esm2022/controls/list-checkbox/list-checkbox.component.mjs +16 -12
  23. package/esm2022/controls/message/message.component.mjs +9 -11
  24. package/esm2022/controls/multi-select/multi-select.component.mjs +35 -22
  25. package/esm2022/controls/paginator/paginator.component.mjs +15 -16
  26. package/esm2022/controls/select/select.component.mjs +32 -23
  27. package/esm2022/controls/timeline/timeline.component.mjs +15 -16
  28. package/esm2022/directives/mask.directive.mjs +17 -8
  29. package/esm2022/directives/unmask.directive.mjs +14 -7
  30. package/esm2022/info-library.module.mjs +10 -5
  31. package/esm2022/layouts/dialog/dialog.component.mjs +10 -6
  32. package/esm2022/layouts/filter/filter.component.mjs +179 -0
  33. package/esm2022/layouts/loading/loading.component.mjs +7 -9
  34. package/esm2022/layouts/main/main.component.mjs +101 -54
  35. package/esm2022/layouts/modal/modal.component.mjs +37 -22
  36. package/esm2022/layouts/pagebar/pagebar.component.mjs +125 -97
  37. package/esm2022/layouts/sidebar/sidebar.component.mjs +152 -100
  38. package/esm2022/layouts/topbar/topbar.component.mjs +417 -253
  39. package/esm2022/layouts/topmenu/topmenu.component.mjs +20 -12
  40. package/esm2022/model/app-config.model.mjs +12 -12
  41. package/esm2022/model/data-access.model.mjs +10 -8
  42. package/esm2022/model/dialog-result.model.mjs +3 -2
  43. package/esm2022/model/dialog.model.mjs +13 -14
  44. package/esm2022/model/form-prop.model.mjs +8 -6
  45. package/esm2022/model/grid-button.model.mjs +12 -7
  46. package/esm2022/model/last-search.model.mjs +5 -7
  47. package/esm2022/model/login.model.mjs +4 -2
  48. package/esm2022/model/method-grid-button.model.mjs +4 -2
  49. package/esm2022/model/notification.model.mjs +9 -5
  50. package/esm2022/model/pagebar-buttons.model.mjs +6 -6
  51. package/esm2022/model/permission.model.mjs +4 -1
  52. package/esm2022/model/platform.model.mjs +13 -14
  53. package/esm2022/model/session.model.mjs +25 -6
  54. package/esm2022/pipe/mask.pipe.mjs +10 -6
  55. package/esm2022/pipe/translate.pipe.mjs +4 -3
  56. package/esm2022/public_api.mjs +2 -1
  57. package/esm2022/service/authentication.service.mjs +89 -36
  58. package/esm2022/service/configuration.service.mjs +41 -10
  59. package/esm2022/service/data.service.mjs +38 -21
  60. package/esm2022/service/theme.service.mjs +16 -6
  61. package/esm2022/service/translate.service.mjs +9 -5
  62. package/esm2022/utils/utilities.mjs +52 -5
  63. package/fesm2022/info-library.mjs +2551 -1649
  64. package/fesm2022/info-library.mjs.map +1 -1
  65. package/info-library-3.0.0-beta.tgz +0 -0
  66. package/info-library.module.d.ts +32 -31
  67. package/layouts/filter/filter.component.d.ts +24 -0
  68. package/layouts/main/main.component.d.ts +4 -0
  69. package/layouts/modal/modal.component.d.ts +1 -0
  70. package/layouts/sidebar/sidebar.component.d.ts +1 -1
  71. package/layouts/topbar/topbar.component.d.ts +4 -1
  72. package/model/app-config.model.d.ts +2 -0
  73. package/model/session.model.d.ts +5 -0
  74. package/package.json +1 -1
  75. package/public_api.d.ts +1 -0
  76. package/service/authentication.service.d.ts +4 -2
  77. package/service/configuration.service.d.ts +4 -1
  78. package/service/data.service.d.ts +2 -0
  79. package/utils/utilities.d.ts +11 -0
@@ -1,5 +1,6 @@
1
- import { Component, forwardRef, Input, Output, EventEmitter } from "@angular/core";
2
- import { NG_VALUE_ACCESSOR } from "@angular/forms";
1
+ import { Component, forwardRef, Input, Output, EventEmitter, Injector } from "@angular/core";
2
+ import { NG_VALUE_ACCESSOR, NgControl, FormControl } from "@angular/forms";
3
+ import { StaticUtils } from "../../utils/utilities";
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common";
5
6
  import * as i2 from "@angular/forms";
@@ -29,9 +30,9 @@ function InfoInputComponent_mat_form_field_0_mat_icon_4_Template(rf, ctx) { if (
29
30
  i0.ɵɵtextInterpolate(ctx_r5.iconSuffix);
30
31
  } }
31
32
  function InfoInputComponent_mat_form_field_0_mat_icon_5_Template(rf, ctx) { if (rf & 1) {
32
- const _r8 = i0.ɵɵgetCurrentView();
33
+ const _r9 = i0.ɵɵgetCurrentView();
33
34
  i0.ɵɵelementStart(0, "mat-icon", 8);
34
- i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_0_mat_icon_5_Template_mat_icon_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.type = ctx_r7.type == "password" ? "text" : "password"); });
35
+ i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_0_mat_icon_5_Template_mat_icon_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r8 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r8.type = ctx_r8.type == "password" ? "text" : "password"); });
35
36
  i0.ɵɵtext(1);
36
37
  i0.ɵɵelementEnd();
37
38
  } if (rf & 2) {
@@ -39,72 +40,96 @@ function InfoInputComponent_mat_form_field_0_mat_icon_5_Template(rf, ctx) { if (
39
40
  i0.ɵɵadvance(1);
40
41
  i0.ɵɵtextInterpolate1("visibility", ctx_r6.type == "password" ? "" : "_off", "");
41
42
  } }
43
+ function InfoInputComponent_mat_form_field_0_mat_error_6_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementStart(0, "mat-error");
45
+ i0.ɵɵtext(1);
46
+ i0.ɵɵpipe(2, "translate");
47
+ i0.ɵɵelementEnd();
48
+ } if (rf & 2) {
49
+ const ctx_r7 = i0.ɵɵnextContext(2);
50
+ i0.ɵɵadvance(1);
51
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r7.errorMessage));
52
+ } }
42
53
  function InfoInputComponent_mat_form_field_0_Template(rf, ctx) { if (rf & 1) {
43
- const _r10 = i0.ɵɵgetCurrentView();
54
+ const _r11 = i0.ɵɵgetCurrentView();
44
55
  i0.ɵɵelementStart(0, "mat-form-field");
45
56
  i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_0_mat_icon_1_Template, 2, 1, "mat-icon", 2);
46
57
  i0.ɵɵelementStart(2, "input", 3);
47
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_0_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r9 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r9.value = $event); })("input", function InfoInputComponent_mat_form_field_0_Template_input_input_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r11 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r11.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_0_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onBlur()); });
58
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_0_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r10.value = $event); })("input", function InfoInputComponent_mat_form_field_0_Template_input_input_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r12 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r12.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_0_Template_input_blur_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r13 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r13.onBlur()); })("focusin", function InfoInputComponent_mat_form_field_0_Template_input_focusin_2_listener() { i0.ɵɵrestoreView(_r11); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.valueOnEnter = ctx_r14.value); });
48
59
  i0.ɵɵpipe(3, "translate");
49
60
  i0.ɵɵelementEnd();
50
61
  i0.ɵɵtemplate(4, InfoInputComponent_mat_form_field_0_mat_icon_4_Template, 2, 1, "mat-icon", 4);
51
62
  i0.ɵɵtemplate(5, InfoInputComponent_mat_form_field_0_mat_icon_5_Template, 2, 1, "mat-icon", 5);
63
+ i0.ɵɵtemplate(6, InfoInputComponent_mat_form_field_0_mat_error_6_Template, 3, 3, "mat-error", 0);
52
64
  i0.ɵɵelementEnd();
53
65
  } if (rf & 2) {
54
66
  const ctx_r0 = i0.ɵɵnextContext();
55
67
  i0.ɵɵadvance(1);
56
68
  i0.ɵɵproperty("ngIf", ctx_r0.iconPrefix);
57
69
  i0.ɵɵadvance(1);
58
- i0.ɵɵproperty("type", ctx_r0.type)("step", ctx_r0.step)("min", ctx_r0.min)("max", ctx_r0.max)("tabindex", ctx_r0.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 14, ctx_r0.placeholder))("ngModel", ctx_r0.value)("maxlength", ctx_r0.maxlength)("readonly", ctx_r0.readonly)("disabled", ctx_r0.disabled)("required", ctx_r0.required);
70
+ i0.ɵɵproperty("type", ctx_r0.type)("step", ctx_r0.step)("min", ctx_r0.min)("max", ctx_r0.max)("tabindex", ctx_r0.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 15, ctx_r0.placeholder))("ngModel", ctx_r0.value)("maxlength", ctx_r0.maxlength)("readonly", ctx_r0.readonly)("disabled", ctx_r0.disabled)("required", ctx_r0.required);
59
71
  i0.ɵɵadvance(2);
60
72
  i0.ɵɵproperty("ngIf", ctx_r0.iconSuffix);
61
73
  i0.ɵɵadvance(1);
62
74
  i0.ɵɵproperty("ngIf", ctx_r0.passwordMode);
75
+ i0.ɵɵadvance(1);
76
+ i0.ɵɵproperty("ngIf", ctx_r0.errorMessage);
63
77
  } }
64
78
  function InfoInputComponent_mat_form_field_1_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
65
79
  i0.ɵɵelementStart(0, "mat-icon", 6);
66
80
  i0.ɵɵtext(1);
67
81
  i0.ɵɵelementEnd();
68
82
  } if (rf & 2) {
69
- const ctx_r13 = i0.ɵɵnextContext(2);
83
+ const ctx_r15 = i0.ɵɵnextContext(2);
70
84
  i0.ɵɵadvance(1);
71
- i0.ɵɵtextInterpolate(ctx_r13.iconPrefix);
85
+ i0.ɵɵtextInterpolate(ctx_r15.iconPrefix);
72
86
  } }
73
87
  function InfoInputComponent_mat_form_field_1_input_2_Template(rf, ctx) { if (rf & 1) {
74
- const _r18 = i0.ɵɵgetCurrentView();
88
+ const _r21 = i0.ɵɵgetCurrentView();
75
89
  i0.ɵɵelementStart(0, "input", 11);
76
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r17.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r19 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r19.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_2_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r20 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r20.onBlur()); });
90
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r20 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r20.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_2_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r22 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r22.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_2_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onBlur()); })("focusin", function InfoInputComponent_mat_form_field_1_input_2_Template_input_focusin_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.valueOnEnter = ctx_r24.value); });
77
91
  i0.ɵɵpipe(1, "translate");
78
92
  i0.ɵɵelementEnd();
79
93
  } if (rf & 2) {
80
- const ctx_r14 = i0.ɵɵnextContext(2);
81
- i0.ɵɵproperty("tabindex", ctx_r14.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 7, ctx_r14.placeholder))("ngModel", ctx_r14.value)("readonly", ctx_r14.readonly)("disabled", ctx_r14.disabled)("required", ctx_r14.required)("options", ctx_r14.maskOptions);
94
+ const ctx_r16 = i0.ɵɵnextContext(2);
95
+ i0.ɵɵproperty("tabindex", ctx_r16.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 7, ctx_r16.placeholder))("ngModel", ctx_r16.value)("readonly", ctx_r16.readonly)("disabled", ctx_r16.disabled)("required", ctx_r16.required)("options", ctx_r16.maskOptions);
82
96
  } }
83
97
  function InfoInputComponent_mat_form_field_1_input_3_Template(rf, ctx) { if (rf & 1) {
84
- const _r22 = i0.ɵɵgetCurrentView();
98
+ const _r26 = i0.ɵɵgetCurrentView();
85
99
  i0.ɵɵelementStart(0, "input", 12);
86
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r21.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r23 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r23.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_3_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r24 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r24.onBlur()); });
100
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r25 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r25.value = $event); })("ngModelChange", function InfoInputComponent_mat_form_field_1_input_3_Template_input_ngModelChange_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r27 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r27.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_1_input_3_Template_input_blur_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r28 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r28.onBlur()); })("focusin", function InfoInputComponent_mat_form_field_1_input_3_Template_input_focusin_0_listener() { i0.ɵɵrestoreView(_r26); const ctx_r29 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r29.valueOnEnter = ctx_r29.value); });
87
101
  i0.ɵɵpipe(1, "translate");
88
102
  i0.ɵɵelementEnd();
89
103
  } if (rf & 2) {
90
- const ctx_r15 = i0.ɵɵnextContext(2);
91
- i0.ɵɵproperty("tabindex", ctx_r15.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 7, ctx_r15.placeholder))("ngModel", ctx_r15.value)("readonly", ctx_r15.readonly)("disabled", ctx_r15.disabled)("required", ctx_r15.required)("setmask", ctx_r15.customMask);
104
+ const ctx_r17 = i0.ɵɵnextContext(2);
105
+ i0.ɵɵproperty("formControl", ctx_r17.formControl)("tabindex", ctx_r17.tabindex)("placeholder", i0.ɵɵpipeBind1(1, 9, ctx_r17.placeholder))("ngModel", ctx_r17.value)("readonly", ctx_r17.readonly)("disabled", ctx_r17.disabled)("required", ctx_r17.required)("setmask", ctx_r17.customMask)("unmask", ctx_r17.customMask);
92
106
  } }
93
107
  function InfoInputComponent_mat_form_field_1_mat_icon_4_Template(rf, ctx) { if (rf & 1) {
94
108
  i0.ɵɵelementStart(0, "mat-icon", 7);
95
109
  i0.ɵɵtext(1);
96
110
  i0.ɵɵelementEnd();
97
111
  } if (rf & 2) {
98
- const ctx_r16 = i0.ɵɵnextContext(2);
112
+ const ctx_r18 = i0.ɵɵnextContext(2);
113
+ i0.ɵɵadvance(1);
114
+ i0.ɵɵtextInterpolate(ctx_r18.iconSuffix);
115
+ } }
116
+ function InfoInputComponent_mat_form_field_1_mat_error_5_Template(rf, ctx) { if (rf & 1) {
117
+ i0.ɵɵelementStart(0, "mat-error");
118
+ i0.ɵɵtext(1);
119
+ i0.ɵɵpipe(2, "translate");
120
+ i0.ɵɵelementEnd();
121
+ } if (rf & 2) {
122
+ const ctx_r19 = i0.ɵɵnextContext(2);
99
123
  i0.ɵɵadvance(1);
100
- i0.ɵɵtextInterpolate(ctx_r16.iconSuffix);
124
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r19.errorMessage));
101
125
  } }
102
126
  function InfoInputComponent_mat_form_field_1_Template(rf, ctx) { if (rf & 1) {
103
127
  i0.ɵɵelementStart(0, "mat-form-field");
104
128
  i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_1_mat_icon_1_Template, 2, 1, "mat-icon", 2);
105
129
  i0.ɵɵtemplate(2, InfoInputComponent_mat_form_field_1_input_2_Template, 2, 9, "input", 9);
106
- i0.ɵɵtemplate(3, InfoInputComponent_mat_form_field_1_input_3_Template, 2, 9, "input", 10);
130
+ i0.ɵɵtemplate(3, InfoInputComponent_mat_form_field_1_input_3_Template, 2, 11, "input", 10);
107
131
  i0.ɵɵtemplate(4, InfoInputComponent_mat_form_field_1_mat_icon_4_Template, 2, 1, "mat-icon", 4);
132
+ i0.ɵɵtemplate(5, InfoInputComponent_mat_form_field_1_mat_error_5_Template, 3, 3, "mat-error", 0);
108
133
  i0.ɵɵelementEnd();
109
134
  } if (rf & 2) {
110
135
  const ctx_r1 = i0.ɵɵnextContext();
@@ -116,50 +141,66 @@ function InfoInputComponent_mat_form_field_1_Template(rf, ctx) { if (rf & 1) {
116
141
  i0.ɵɵproperty("ngIf", ctx_r1.customMask != null);
117
142
  i0.ɵɵadvance(1);
118
143
  i0.ɵɵproperty("ngIf", ctx_r1.iconSuffix);
144
+ i0.ɵɵadvance(1);
145
+ i0.ɵɵproperty("ngIf", ctx_r1.errorMessage);
119
146
  } }
120
147
  function InfoInputComponent_mat_form_field_2_mat_icon_1_Template(rf, ctx) { if (rf & 1) {
121
148
  i0.ɵɵelementStart(0, "mat-icon", 6);
122
149
  i0.ɵɵtext(1);
123
150
  i0.ɵɵelementEnd();
124
151
  } if (rf & 2) {
125
- const ctx_r25 = i0.ɵɵnextContext(2);
152
+ const ctx_r30 = i0.ɵɵnextContext(2);
153
+ i0.ɵɵadvance(1);
154
+ i0.ɵɵtextInterpolate(ctx_r30.iconPrefix);
155
+ } }
156
+ function InfoInputComponent_mat_form_field_2_mat_error_4_Template(rf, ctx) { if (rf & 1) {
157
+ i0.ɵɵelementStart(0, "mat-error");
158
+ i0.ɵɵtext(1);
159
+ i0.ɵɵpipe(2, "translate");
160
+ i0.ɵɵelementEnd();
161
+ } if (rf & 2) {
162
+ const ctx_r31 = i0.ɵɵnextContext(2);
126
163
  i0.ɵɵadvance(1);
127
- i0.ɵɵtextInterpolate(ctx_r25.iconPrefix);
164
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r31.errorMessage));
128
165
  } }
129
166
  function InfoInputComponent_mat_form_field_2_Template(rf, ctx) { if (rf & 1) {
130
- const _r27 = i0.ɵɵgetCurrentView();
167
+ const _r33 = i0.ɵɵgetCurrentView();
131
168
  i0.ɵɵelementStart(0, "mat-form-field");
132
169
  i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_2_mat_icon_1_Template, 2, 1, "mat-icon", 2);
133
170
  i0.ɵɵelementStart(2, "textarea", 13);
134
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_2_Template_textarea_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r26.value = $event); })("input", function InfoInputComponent_mat_form_field_2_Template_textarea_input_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r28.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_2_Template_textarea_blur_2_listener() { i0.ɵɵrestoreView(_r27); const ctx_r29 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r29.onBlur()); });
171
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_2_Template_textarea_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.value = $event); })("input", function InfoInputComponent_mat_form_field_2_Template_textarea_input_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_2_Template_textarea_blur_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r35 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r35.onBlur()); })("focusin", function InfoInputComponent_mat_form_field_2_Template_textarea_focusin_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r36 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r36.valueOnEnter = ctx_r36.value); });
135
172
  i0.ɵɵpipe(3, "translate");
136
- i0.ɵɵelementEnd()();
173
+ i0.ɵɵelementEnd();
174
+ i0.ɵɵtemplate(4, InfoInputComponent_mat_form_field_2_mat_error_4_Template, 3, 3, "mat-error", 0);
175
+ i0.ɵɵelementEnd();
137
176
  } if (rf & 2) {
138
177
  const ctx_r2 = i0.ɵɵnextContext();
139
178
  i0.ɵɵadvance(1);
140
179
  i0.ɵɵproperty("ngIf", ctx_r2.iconPrefix);
141
180
  i0.ɵɵadvance(1);
142
- i0.ɵɵproperty("tabindex", ctx_r2.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 9, ctx_r2.placeholder))("ngModel", ctx_r2.value)("rows", ctx_r2.rows)("maxlength", ctx_r2.maxlength)("readonly", ctx_r2.readonly)("disabled", ctx_r2.disabled)("required", ctx_r2.required);
181
+ i0.ɵɵproperty("tabindex", ctx_r2.tabindex)("placeholder", i0.ɵɵpipeBind1(3, 10, ctx_r2.placeholder))("ngModel", ctx_r2.value)("rows", ctx_r2.rows)("maxlength", ctx_r2.maxlength)("readonly", ctx_r2.readonly)("disabled", ctx_r2.disabled)("required", ctx_r2.required);
182
+ i0.ɵɵadvance(2);
183
+ i0.ɵɵproperty("ngIf", ctx_r2.errorMessage);
143
184
  } }
144
185
  function InfoInputComponent_mat_form_field_3_mat_icon_7_Template(rf, ctx) { if (rf & 1) {
145
186
  i0.ɵɵelementStart(0, "mat-icon", 7);
146
187
  i0.ɵɵtext(1);
147
188
  i0.ɵɵelementEnd();
148
189
  } if (rf & 2) {
149
- const ctx_r31 = i0.ɵɵnextContext(2);
190
+ const ctx_r38 = i0.ɵɵnextContext(2);
150
191
  i0.ɵɵadvance(1);
151
- i0.ɵɵtextInterpolate(ctx_r31.iconSuffix);
192
+ i0.ɵɵtextInterpolate(ctx_r38.iconSuffix);
152
193
  } }
153
194
  function InfoInputComponent_mat_form_field_3_Template(rf, ctx) { if (rf & 1) {
154
- const _r33 = i0.ɵɵgetCurrentView();
195
+ const _r40 = i0.ɵɵgetCurrentView();
155
196
  i0.ɵɵelementStart(0, "mat-form-field", 14)(1, "div", 15)(2, "input", 16, 17);
156
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.value = $event); })("change", function InfoInputComponent_mat_form_field_3_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r33); const ctx_r34 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r34.writeValue(ctx_r34.value)); });
197
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r39 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r39.value = $event); })("change", function InfoInputComponent_mat_form_field_3_Template_input_change_2_listener() { i0.ɵɵrestoreView(_r40); const ctx_r41 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r41.writeValue(ctx_r41.value)); });
157
198
  i0.ɵɵelementEnd();
158
199
  i0.ɵɵelementStart(4, "div", 18);
159
- i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r33); const _r30 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r30.click()); });
200
+ i0.ɵɵlistener("click", function InfoInputComponent_mat_form_field_3_Template_div_click_4_listener() { i0.ɵɵrestoreView(_r40); const _r37 = i0.ɵɵreference(3); return i0.ɵɵresetView(_r37.click()); });
160
201
  i0.ɵɵelementEnd();
161
202
  i0.ɵɵelementStart(5, "input", 19);
162
- i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r33); const ctx_r36 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r36.value = $event); })("input", function InfoInputComponent_mat_form_field_3_Template_input_input_5_listener() { i0.ɵɵrestoreView(_r33); const ctx_r37 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r37.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_3_Template_input_blur_5_listener() { i0.ɵɵrestoreView(_r33); const ctx_r38 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r38.onBlur()); });
203
+ i0.ɵɵlistener("ngModelChange", function InfoInputComponent_mat_form_field_3_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r40); const ctx_r43 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r43.value = $event); })("input", function InfoInputComponent_mat_form_field_3_Template_input_input_5_listener() { i0.ɵɵrestoreView(_r40); const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.onChangeValue()); })("blur", function InfoInputComponent_mat_form_field_3_Template_input_blur_5_listener() { i0.ɵɵrestoreView(_r40); const ctx_r45 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r45.onBlur()); })("focusin", function InfoInputComponent_mat_form_field_3_Template_input_focusin_5_listener() { i0.ɵɵrestoreView(_r40); const ctx_r46 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r46.valueOnEnter = ctx_r46.value); });
163
204
  i0.ɵɵpipe(6, "translate");
164
205
  i0.ɵɵelementEnd();
165
206
  i0.ɵɵtemplate(7, InfoInputComponent_mat_form_field_3_mat_icon_7_Template, 2, 1, "mat-icon", 4);
@@ -176,36 +217,53 @@ function InfoInputComponent_mat_form_field_3_Template(rf, ctx) { if (rf & 1) {
176
217
  i0.ɵɵproperty("ngIf", ctx_r3.iconSuffix);
177
218
  } }
178
219
  export class InfoInputComponent {
179
- constructor() {
180
- this.disabled = false;
181
- this.readonly = false;
182
- this.required = false;
183
- this.type = 'text';
184
- this.rows = 1;
185
- this.tabindex = 0;
186
- this.iconPrefix = '';
187
- this.iconSuffix = '';
188
- this.min = -99999999999999.999999999;
189
- this.max = 99999999999999.999999999;
190
- this.step = null;
191
- this.onblur = new EventEmitter();
192
- this.maskOptions = {
193
- align: 'right',
194
- allowNegative: true,
195
- decimal: ',',
196
- precision: 2,
197
- prefix: '',
198
- suffix: '',
199
- thousands: '.'
200
- };
201
- this.value = '';
202
- this.customMask = null;
203
- this.passwordMode = false;
204
- this.methodIsmask = null;
220
+ injector;
221
+ control;
222
+ placeholder;
223
+ disabled = false;
224
+ readonly = false;
225
+ required = false;
226
+ maxlength;
227
+ type = 'text';
228
+ rows = 1;
229
+ tabindex = 0;
230
+ iconPrefix = '';
231
+ iconSuffix = '';
232
+ min = -99999999999999.999999999;
233
+ max = 99999999999999.999999999;
234
+ step = null;
235
+ validate = false;
236
+ bluronlychange = false;
237
+ onblur = new EventEmitter();
238
+ maskOptions = {
239
+ align: 'right',
240
+ allowNegative: true,
241
+ decimal: ',',
242
+ precision: 2,
243
+ prefix: '',
244
+ suffix: '',
245
+ thousands: '.'
246
+ };
247
+ value = '';
248
+ valueOnEnter = null;
249
+ customMask = null;
250
+ onChange;
251
+ onTouched;
252
+ passwordMode = false;
253
+ errorMessage = null;
254
+ formControl = new FormControl();
255
+ constructor(injector) {
256
+ this.injector = injector;
257
+ }
258
+ ngAfterViewInit() {
259
+ this.control = this.injector.get(NgControl, null);
260
+ if (this.control)
261
+ this.formControl = this.control.control;
205
262
  }
206
263
  ngOnInit() {
207
264
  this.passwordMode = this.type.toLocaleLowerCase() == 'password';
208
265
  }
266
+ methodIsmask = null;
209
267
  get ismask() {
210
268
  return this.methodIsmask;
211
269
  }
@@ -221,7 +279,20 @@ export class InfoInputComponent {
221
279
  this.customMask = this.methodIsmask;
222
280
  }
223
281
  }
282
+ validarCampo() {
283
+ if (!this.validate)
284
+ return;
285
+ this.errorMessage = null;
286
+ if (this.value && this.customMask == 'cnpj' && !StaticUtils.validarCnpj(this.value))
287
+ this.errorMessage = 'CNPJInvalido';
288
+ else if (this.value && this.customMask == 'cpf' && !StaticUtils.validarCpf(this.value))
289
+ this.errorMessage = 'CPFInvalido';
290
+ if (!!this.errorMessage && this.formControl) {
291
+ this.formControl.setErrors({ invalid: true });
292
+ }
293
+ }
224
294
  onBlur() {
295
+ this.validarCampo();
225
296
  if (this.type == 'number' || (this.ismask != null && this.ismask.startsWith("n"))) {
226
297
  if (this.min != null)
227
298
  this.value = this.min > Number(this.value) ? null : this.value;
@@ -229,7 +300,7 @@ export class InfoInputComponent {
229
300
  this.value = this.max < Number(this.value) ? null : this.value;
230
301
  this.onChangeValue();
231
302
  }
232
- if (this.onblur != null)
303
+ if (this.onblur != null && (!this.bluronlychange || this.valueOnEnter != this.value))
233
304
  this.onblur.emit(this.value);
234
305
  }
235
306
  onChangeValue() {
@@ -249,17 +320,17 @@ export class InfoInputComponent {
249
320
  setDisabledState(isDisabled) {
250
321
  this.disabled = isDisabled;
251
322
  }
252
- /** @nocollapse */ static { this.ɵfac = function InfoInputComponent_Factory(t) { return new (t || InfoInputComponent)(); }; }
253
- /** @nocollapse */ static { this.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoInputComponent, selectors: [["info-input"]], inputs: { placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", maxlength: "maxlength", type: "type", rows: "rows", tabindex: "tabindex", iconPrefix: "iconPrefix", iconSuffix: "iconSuffix", min: "min", max: "max", step: "step", ismask: "ismask" }, outputs: { onblur: "onblur" }, features: [i0.ɵɵProvidersFeature([
323
+ /** @nocollapse */ static ɵfac = function InfoInputComponent_Factory(t) { return new (t || InfoInputComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
324
+ /** @nocollapse */ static ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: InfoInputComponent, selectors: [["info-input"]], inputs: { placeholder: "placeholder", disabled: "disabled", readonly: "readonly", required: "required", maxlength: "maxlength", type: "type", rows: "rows", tabindex: "tabindex", iconPrefix: "iconPrefix", iconSuffix: "iconSuffix", min: "min", max: "max", step: "step", validate: "validate", bluronlychange: "bluronlychange", ismask: "ismask" }, outputs: { onblur: "onblur" }, features: [i0.ɵɵProvidersFeature([
254
325
  {
255
326
  provide: NG_VALUE_ACCESSOR,
256
327
  useExisting: forwardRef((() => InfoInputComponent)),
257
328
  multi: true
258
- }
259
- ])], decls: 4, vars: 4, consts: [[4, "ngIf"], ["class", "input-color", 4, "ngIf"], ["matPrefix", "", "style", "color: #aaa", 4, "ngIf"], ["matInput", "", 3, "type", "step", "min", "max", "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"], ["matSuffix", "", "style", "color: #aaa", 4, "ngIf"], ["class", "show-password", "matSuffix", "", 3, "click", 4, "ngIf"], ["matPrefix", "", 2, "color", "#aaa"], ["matSuffix", "", 2, "color", "#aaa"], ["matSuffix", "", 1, "show-password", 3, "click"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur", 4, "ngIf"], ["matInput", "", "unmask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "ngModelChange", "blur", 4, "ngIf"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur"], ["matInput", "", "unmask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "ngModelChange", "blur"], ["matInput", "", 3, "tabindex", "placeholder", "ngModel", "rows", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"], [1, "input-color"], [1, "input-color-container"], ["type", "color", 2, "width", "0px", "visibility", "hidden", 3, "ngModel", "readonly", "disabled", "ngModelChange", "change"], ["colorInput", ""], [1, "color-picker", 3, "click"], ["matInput", "", "type", "text", 3, "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur"]], template: function InfoInputComponent_Template(rf, ctx) { if (rf & 1) {
260
- i0.ɵɵtemplate(0, InfoInputComponent_mat_form_field_0_Template, 6, 16, "mat-form-field", 0);
261
- i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_1_Template, 5, 4, "mat-form-field", 0);
262
- i0.ɵɵtemplate(2, InfoInputComponent_mat_form_field_2_Template, 4, 11, "mat-form-field", 0);
329
+ },
330
+ ])], decls: 4, vars: 4, consts: [[4, "ngIf"], ["class", "input-color", 4, "ngIf"], ["matPrefix", "", "style", "color: #aaa", 4, "ngIf"], ["matInput", "", 3, "type", "step", "min", "max", "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur", "focusin"], ["matSuffix", "", "style", "color: #aaa", 4, "ngIf"], ["class", "show-password", "matSuffix", "", 3, "click", 4, "ngIf"], ["matPrefix", "", 2, "color", "#aaa"], ["matSuffix", "", 2, "color", "#aaa"], ["matSuffix", "", 1, "show-password", 3, "click"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur", "focusin", 4, "ngIf"], ["matInput", "", 3, "formControl", "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "unmask", "ngModelChange", "blur", "focusin", 4, "ngIf"], ["matInput", "", "currencyMask", "", 3, "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "options", "ngModelChange", "blur", "focusin"], ["matInput", "", 3, "formControl", "tabindex", "placeholder", "ngModel", "readonly", "disabled", "required", "setmask", "unmask", "ngModelChange", "blur", "focusin"], ["matInput", "", 3, "tabindex", "placeholder", "ngModel", "rows", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur", "focusin"], [1, "input-color"], [1, "input-color-container"], ["type", "color", 2, "width", "0px", "visibility", "hidden", 3, "ngModel", "readonly", "disabled", "ngModelChange", "change"], ["colorInput", ""], [1, "color-picker", 3, "click"], ["matInput", "", "type", "text", 3, "tabindex", "placeholder", "ngModel", "maxlength", "readonly", "disabled", "required", "ngModelChange", "input", "blur", "focusin"]], template: function InfoInputComponent_Template(rf, ctx) { if (rf & 1) {
331
+ i0.ɵɵtemplate(0, InfoInputComponent_mat_form_field_0_Template, 7, 17, "mat-form-field", 0);
332
+ i0.ɵɵtemplate(1, InfoInputComponent_mat_form_field_1_Template, 6, 5, "mat-form-field", 0);
333
+ i0.ɵɵtemplate(2, InfoInputComponent_mat_form_field_2_Template, 5, 12, "mat-form-field", 0);
263
334
  i0.ɵɵtemplate(3, InfoInputComponent_mat_form_field_3_Template, 8, 15, "mat-form-field", 1);
264
335
  } if (rf & 2) {
265
336
  i0.ɵɵproperty("ngIf", ctx.type != "color" && ctx.type != "textarea" && ctx.ismask == null);
@@ -269,7 +340,7 @@ export class InfoInputComponent {
269
340
  i0.ɵɵproperty("ngIf", ctx.type == "textarea");
270
341
  i0.ɵɵadvance(1);
271
342
  i0.ɵɵproperty("ngIf", ctx.type == "color");
272
- } }, dependencies: [i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.RequiredValidator, i2.MaxLengthValidator, i2.NgModel, i3.MatIcon, i4.MatFormField, i4.MatPrefix, i4.MatSuffix, i5.MatInput, i6.CurrencyMaskDirective, i7.InfoMaskDirective, i8.InfoUnmaskDirective, i9.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%]:not(.mat-form-field-should-float) .mat-form-field-label{margin-left:40px}[_nghost-%COMP%] .input-color.mat-form-field-should-float[_ngcontent-%COMP%] .mat-form-field-label{margin-left:0}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%]{display:flex}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] input[type=color][_ngcontent-%COMP%]{width:0px;height:0px;visibility:hidden}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] .color-picker[_ngcontent-%COMP%]{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}"] }); }
343
+ } }, dependencies: [i1.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.RequiredValidator, i2.MaxLengthValidator, i2.NgModel, i2.FormControlDirective, i3.MatIcon, i4.MatError, i4.MatFormField, i4.MatPrefix, i4.MatSuffix, i5.MatInput, i6.CurrencyMaskDirective, i7.InfoMaskDirective, i8.InfoUnmaskDirective, i9.InfoTranslatePipe], styles: ["[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%]:not(.mat-form-field-should-float) .mat-form-field-label{margin-left:40px}[_nghost-%COMP%] .input-color.mat-form-field-should-float[_ngcontent-%COMP%] .mat-form-field-label{margin-left:0}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%]{display:flex}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] input[type=color][_ngcontent-%COMP%]{width:0px;height:0px;visibility:hidden}[_nghost-%COMP%] .input-color[_ngcontent-%COMP%] .input-color-container[_ngcontent-%COMP%] .color-picker[_ngcontent-%COMP%]{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}"] });
273
344
  }
274
345
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InfoInputComponent, [{
275
346
  type: Component,
@@ -278,9 +349,9 @@ export class InfoInputComponent {
278
349
  provide: NG_VALUE_ACCESSOR,
279
350
  useExisting: forwardRef((() => InfoInputComponent)),
280
351
  multi: true
281
- }
282
- ], template: "<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask == null\" >\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <input matInput [type]=\"type\" [step]=\"step\" [min]=\"min\" [max]=\"max\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n <mat-icon class=\"show-password\" *ngIf=\"passwordMode\" (click)=\"type = (type == 'password') ? 'text' : 'password'\" matSuffix >visibility{{ type == 'password' ? '' : '_off' }}</mat-icon>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask != null\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n\r\n <input matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" *ngIf=\"customMask == null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [options]=\"maskOptions\" currencyMask>\r\n\r\n <input matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" *ngIf=\"customMask != null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [setmask]=\"customMask\" unmask >\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type == 'textarea'\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <textarea matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\" [rows]=\"rows\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\"></textarea>\r\n</mat-form-field>\r\n\r\n<mat-form-field class=\"input-color\" *ngIf=\"type == 'color'\">\r\n \r\n <div class=\"input-color-container\">\r\n <input #colorInput style=\"width: 0px;visibility: hidden;\" type=\"color\" [(ngModel)]=\"value\" (change)=\"writeValue(value)\" [readonly]=\"readonly\" [disabled]=\"disabled\">\r\n <div class=\"color-picker\" [style.background-color]=\"value\" (click)=\"colorInput.click()\"></div>\r\n \r\n <input matInput type=\"text\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n \r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n </div>\r\n</mat-form-field>", styles: [":host .input-color ::ng-deep .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}:host .input-color:not(.mat-form-field-should-float) ::ng-deep .mat-form-field-label{margin-left:40px}:host .input-color.mat-form-field-should-float ::ng-deep .mat-form-field-label{margin-left:0}:host .input-color .input-color-container{display:flex}:host .input-color .input-color-container input[type=color]{width:0px;height:0px;visibility:hidden}:host .input-color .input-color-container .color-picker{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}\n"] }]
283
- }], null, { placeholder: [{
352
+ },
353
+ ], template: "<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask == null\" >\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <input matInput [type]=\"type\" [step]=\"step\" [min]=\"min\" [max]=\"max\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\" (focusin)=\"valueOnEnter = value\" \r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n <mat-icon class=\"show-password\" *ngIf=\"passwordMode\" (click)=\"type = (type == 'password') ? 'text' : 'password'\" matSuffix >visibility{{ type == 'password' ? '' : '_off' }}</mat-icon>\r\n <mat-error *ngIf=\"errorMessage\">{{errorMessage | translate}}</mat-error>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type != 'color' && type != 'textarea' && ismask != null\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n\r\n <input matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" (focusin)=\"valueOnEnter = value\" *ngIf=\"customMask == null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [options]=\"maskOptions\" currencyMask>\r\n\r\n <input matInput [formControl]=\"formControl\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (ngModelChange)=\"onChangeValue()\" (blur)=\"onBlur()\" (focusin)=\"valueOnEnter = value\" *ngIf=\"customMask != null\"\r\n [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\" [setmask]=\"customMask\" [unmask]=\"customMask\">\r\n\r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n <mat-error *ngIf=\"errorMessage\">{{errorMessage | translate}}</mat-error>\r\n</mat-form-field>\r\n\r\n<mat-form-field *ngIf=\"type == 'textarea'\">\r\n <mat-icon *ngIf=\"iconPrefix\" matPrefix style=\"color: #aaa\">{{iconPrefix}}</mat-icon>\r\n \r\n <textarea matInput [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\" (focusin)=\"valueOnEnter = value\" [rows]=\"rows\"\r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\"></textarea>\r\n\r\n <mat-error *ngIf=\"errorMessage\">{{errorMessage | translate}}</mat-error>\r\n</mat-form-field>\r\n\r\n<mat-form-field class=\"input-color\" *ngIf=\"type == 'color'\">\r\n \r\n <div class=\"input-color-container\">\r\n <input #colorInput style=\"width: 0px;visibility: hidden;\" type=\"color\" [(ngModel)]=\"value\" (change)=\"writeValue(value)\" [readonly]=\"readonly\" [disabled]=\"disabled\">\r\n <div class=\"color-picker\" [style.background-color]=\"value\" (click)=\"colorInput.click()\"></div>\r\n \r\n <input matInput type=\"text\" [tabindex]=\"tabindex\" [placeholder]=\"placeholder | translate\" [(ngModel)]=\"value\" (input)=\"onChangeValue()\" (blur)=\"onBlur()\" (focusin)=\"valueOnEnter = value\" \r\n [maxlength]=\"maxlength\" [readonly]=\"readonly\" [disabled]=\"disabled\" [required]=\"required\">\r\n \r\n <mat-icon *ngIf=\"iconSuffix\" matSuffix style=\"color: #aaa\">{{iconSuffix}}</mat-icon>\r\n </div>\r\n</mat-form-field>", styles: [":host .input-color ::ng-deep .mat-form-field-label{transition:transform .4s cubic-bezier(.25,.8,.25,1),color .4s cubic-bezier(.25,.8,.25,1),width .4s cubic-bezier(.25,.8,.25,1),margin .4s cubic-bezier(.25,.8,.25,1)}:host .input-color:not(.mat-form-field-should-float) ::ng-deep .mat-form-field-label{margin-left:40px}:host .input-color.mat-form-field-should-float ::ng-deep .mat-form-field-label{margin-left:0}:host .input-color .input-color-container{display:flex}:host .input-color .input-color-container input[type=color]{width:0px;height:0px;visibility:hidden}:host .input-color .input-color-container .color-picker{width:30px;border:solid 1px black;border-radius:5px;margin-right:5px}\n"] }]
354
+ }], function () { return [{ type: i0.Injector }]; }, { placeholder: [{
284
355
  type: Input
285
356
  }], disabled: [{
286
357
  type: Input
@@ -306,9 +377,13 @@ export class InfoInputComponent {
306
377
  type: Input
307
378
  }], step: [{
308
379
  type: Input
380
+ }], validate: [{
381
+ type: Input
382
+ }], bluronlychange: [{
383
+ type: Input
309
384
  }], onblur: [{
310
385
  type: Output
311
386
  }], ismask: [{
312
387
  type: Input
313
388
  }] }); })();
314
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNGLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDQXJFLG1DQUEyRDtJQUFBLFlBQWM7SUFBQSxpQkFBVzs7O0lBQXpCLGVBQWM7SUFBZCx1Q0FBYzs7O0lBS3pFLG1DQUEyRDtJQUFBLFlBQWM7SUFBQSxpQkFBVzs7O0lBQXpCLGVBQWM7SUFBZCx1Q0FBYzs7OztJQUN6RSxtQ0FBNEg7SUFBdkUsb09BQXlCLFVBQVUsR0FBSSxNQUFNLEdBQUcsVUFBVSxLQUFDO0lBQVksWUFBZ0Q7SUFBQSxpQkFBVzs7O0lBQTNELGVBQWdEO0lBQWhELGdGQUFnRDs7OztJQVBoTCxzQ0FBaUY7SUFDN0UsOEZBQW9GO0lBRXBGLGdDQUM4RjtJQURvQyx5T0FBbUIsOEpBQVUsZUFBQSx1QkFBZSxDQUFBLElBQXpCLDRKQUFtQyxlQUFBLGdCQUFRLENBQUEsSUFBM0M7O0lBQXJKLGlCQUM4RjtJQUU5Riw4RkFBb0Y7SUFDcEYsOEZBQXVMO0lBQzNMLGlCQUFpQjs7O0lBUEYsZUFBZ0I7SUFBaEIsd0NBQWdCO0lBRVgsZUFBYTtJQUFiLGtDQUFhLHFCQUFBLG1CQUFBLG1CQUFBLDZCQUFBLDBEQUFBLHlCQUFBLCtCQUFBLDZCQUFBLDZCQUFBLDZCQUFBO0lBR2xCLGVBQWdCO0lBQWhC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RUksTUFBTTtrQkFBZixNQUFNO1lBd0JILE1BQU07a0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpbmZvLWlucHV0JyxcclxuICAgIHN0eWxlVXJsczogWyAnaW5wdXQuY29tcG9uZW50LnNjc3MnIF0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJ2lucHV0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHByb3ZpZGVyczpbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gSW5mb0lucHV0Q29tcG9uZW50KSxcclxuICAgICAgICAgICAgbXVsdGk6IHRydWVcclxuICAgICAgICB9XHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSByZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgbWF4bGVuZ3RoOiBhbnk7XHJcbiAgICBASW5wdXQoKSB0eXBlOiBzdHJpbmcgPSAndGV4dCc7XHJcbiAgICBASW5wdXQoKSByb3dzOiBudW1iZXIgPSAxO1xyXG4gICAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlciA9IDA7XHJcbiAgICBASW5wdXQoKSBpY29uUHJlZml4OiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIGljb25TdWZmaXg6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KCkgbWluOiBudW1iZXIgPSAtOTk5OTk5OTk5OTk5OTkuOTk5OTk5OTk5O1xyXG4gICAgQElucHV0KCkgbWF4OiBudW1iZXIgPSA5OTk5OTk5OTk5OTk5OS45OTk5OTk5OTk7XHJcbiAgICBASW5wdXQoKSBzdGVwOiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAgIEBPdXRwdXQoKSBvbmJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBcclxuICAgIG1hc2tPcHRpb25zOiBhbnkgPSB7XHJcbiAgICAgICAgYWxpZ246ICdyaWdodCcsXHJcbiAgICAgICAgYWxsb3dOZWdhdGl2ZTogdHJ1ZSxcclxuICAgICAgICBkZWNpbWFsOiAnLCcsXHJcbiAgICAgICAgcHJlY2lzaW9uOiAyLFxyXG4gICAgICAgIHByZWZpeDogJycsXHJcbiAgICAgICAgc3VmZml4OiAnJyxcclxuICAgICAgICB0aG91c2FuZHM6ICcuJ1xyXG4gICAgfTtcclxuICAgIFxyXG4gICAgdmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY3VzdG9tTWFzazogc3RyaW5nID0gbnVsbDtcclxuICAgIG9uQ2hhbmdlOiBhbnk7XHJcbiAgICBvblRvdWNoZWQ6IGFueTtcclxuICAgIHBhc3N3b3JkTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIG5nT25Jbml0KCkgeyBcclxuICAgICAgICB0aGlzLnBhc3N3b3JkTW9kZSA9IHRoaXMudHlwZS50b0xvY2FsZUxvd2VyQ2FzZSgpID09ICdwYXNzd29yZCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBtZXRob2RJc21hc2s6IHN0cmluZyA9IG51bGw7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZ2V0IGlzbWFzaygpe1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1ldGhvZElzbWFzaztcclxuICAgIH1cclxuXHJcbiAgICBzZXQgaXNtYXNrKHZhbHVlKXtcclxuICAgICAgICB0aGlzLm1ldGhvZElzbWFzayA9IHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5tZXRob2RJc21hc2sgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLm1ldGhvZElzbWFzayA9IHRoaXMubWV0aG9kSXNtYXNrLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5tZXRob2RJc21hc2sgPT0gJ2ludCcpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hc2tPcHRpb25zLnByZWNpc2lvbiA9IDA7XHJcblxyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLm1ldGhvZElzbWFza1swXSA9PSAnbicgJiYgKHRoaXMubWV0aG9kSXNtYXNrLmxlbmd0aCA9PSAyIHx8IHRoaXMubWV0aG9kSXNtYXNrLmxlbmd0aCA9PSAzKSlcclxuICAgICAgICAgICAgICAgIHRoaXMubWFza09wdGlvbnMucHJlY2lzaW9uID0gcGFyc2VJbnQodGhpcy5tZXRob2RJc21hc2sucmVwbGFjZSgnbicsICcnKSk7XHJcblxyXG4gICAgICAgICAgICBlbHNlIHRoaXMuY3VzdG9tTWFzayA9IHRoaXMubWV0aG9kSXNtYXNrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkJsdXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAnbnVtYmVyJyB8fCAodGhpcy5pc21hc2sgIT0gbnVsbCAmJiB0aGlzLmlzbWFzay5zdGFydHNXaXRoKFwiblwiKSkpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5taW4gPiBOdW1iZXIodGhpcy52YWx1ZSkgPyBudWxsIDogdGhpcy52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1heCAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWF4IDwgTnVtYmVyKHRoaXMudmFsdWUpID8gbnVsbCA6IHRoaXMudmFsdWU7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm9uYmx1ciAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9uYmx1ci5lbWl0KHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2hhbmdlVmFsdWUoKXtcclxuICAgICAgICBpZiAodGhpcy5vbkNoYW5nZSAhPSBudWxsKVxyXG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHdyaXRlVmFsdWUobW9kZWxWYWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG1vZGVsVmFsdWU7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICAgIH1cclxufSIsIjxtYXQtZm9ybS1maWVsZCAqbmdJZj1cInR5cGUgIT0gJ2NvbG9yJyAmJiB0eXBlICE9ICd0ZXh0YXJlYScgJiYgaXNtYXNrID09IG51bGxcIiA+XHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uUHJlZml4XCIgbWF0UHJlZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25QcmVmaXh9fTwvbWF0LWljb24+XHJcbiAgICBcclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbdHlwZV09XCJ0eXBlXCIgW3N0ZXBdPVwic3RlcFwiIFttaW5dPVwibWluXCIgW21heF09XCJtYXhcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoKVwiIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxyXG5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25TdWZmaXhcIiBtYXRTdWZmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblN1ZmZpeH19PC9tYXQtaWNvbj5cclxuICAgIDxtYXQtaWNvbiBjbGFzcz1cInNob3ctcGFzc3dvcmRcIiAqbmdJZj1cInBhc3N3b3JkTW9kZVwiIChjbGljayk9XCJ0eXBlID0gKHR5cGUgPT0gJ3Bhc3N3b3JkJykgPyAndGV4dCcgOiAncGFzc3dvcmQnXCIgbWF0U3VmZml4ID52aXNpYmlsaXR5e3sgdHlwZSA9PSAncGFzc3dvcmQnID8gJycgOiAnX29mZicgfX08L21hdC1pY29uPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidHlwZSAhPSAnY29sb3InICYmIHR5cGUgIT0gJ3RleHRhcmVhJyAmJiBpc21hc2sgIT0gbnVsbFwiPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiIG1hdFByZWZpeCBzdHlsZT1cImNvbG9yOiAjYWFhXCI+e3tpY29uUHJlZml4fX08L21hdC1pY29uPlxyXG5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiAqbmdJZj1cImN1c3RvbU1hc2sgPT0gbnVsbFwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW29wdGlvbnNdPVwibWFza09wdGlvbnNcIiBjdXJyZW5jeU1hc2s+XHJcblxyXG4gICAgPGlucHV0IG1hdElucHV0IFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJvbkNoYW5nZVZhbHVlKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiICpuZ0lmPVwiY3VzdG9tTWFzayAhPSBudWxsXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbc2V0bWFza109XCJjdXN0b21NYXNrXCIgdW5tYXNrID5cclxuXHJcbiAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uU3VmZml4XCIgbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25TdWZmaXh9fTwvbWF0LWljb24+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJ0eXBlID09ICd0ZXh0YXJlYSdcIj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblByZWZpeH19PC9tYXQtaWNvbj5cclxuICAgIFxyXG4gICAgPHRleHRhcmVhIG1hdElucHV0IFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiBbcm93c109XCJyb3dzXCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPjwvdGV4dGFyZWE+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJpbnB1dC1jb2xvclwiICpuZ0lmPVwidHlwZSA9PSAnY29sb3InXCI+XHJcbiAgICBcclxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb2xvci1jb250YWluZXJcIj5cclxuICAgICAgICA8aW5wdXQgI2NvbG9ySW5wdXQgc3R5bGU9XCJ3aWR0aDogMHB4O3Zpc2liaWxpdHk6IGhpZGRlbjtcIiB0eXBlPVwiY29sb3JcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKGNoYW5nZSk9XCJ3cml0ZVZhbHVlKHZhbHVlKVwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2xvci1waWNrZXJcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJ2YWx1ZVwiIChjbGljayk9XCJjb2xvcklucHV0LmNsaWNrKClcIj48L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cInRleHRcIiBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoKVwiIChibHVyKT1cIm9uQmx1cigpXCJcclxuICAgICAgICBbbWF4bGVuZ3RoXT1cIm1heGxlbmd0aFwiIFtyZWFkb25seV09XCJyZWFkb25seVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25TdWZmaXhcIiBtYXRTdWZmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblN1ZmZpeH19PC9tYXQtaWNvbj5cclxuICAgIDwvZGl2PlxyXG48L21hdC1mb3JtLWZpZWxkPiJdfQ==
389
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW5mby1saWJyYXJ5L3NyYy9jb250cm9scy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pbmZvLWxpYnJhcnkvc3JjL2NvbnRyb2xzL2lucHV0L2lucHV0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFrQixRQUFRLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBQzNJLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsU0FBUyxFQUFpQixXQUFXLEVBQXlFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkwsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7SUNEM0QsbUNBQTJEO0lBQUEsWUFBYztJQUFBLGlCQUFXOzs7SUFBekIsZUFBYztJQUFkLHVDQUFjOzs7SUFLekUsbUNBQTJEO0lBQUEsWUFBYztJQUFBLGlCQUFXOzs7SUFBekIsZUFBYztJQUFkLHVDQUFjOzs7O0lBQ3pFLG1DQUE0SDtJQUF2RSxvT0FBeUIsVUFBVSxHQUFJLE1BQU0sR0FBRyxVQUFVLEtBQUM7SUFBWSxZQUFnRDtJQUFBLGlCQUFXOzs7SUFBM0QsZUFBZ0Q7SUFBaEQsZ0ZBQWdEOzs7SUFDNUssaUNBQWdDO0lBQUEsWUFBNEI7O0lBQUEsaUJBQVk7OztJQUF4QyxlQUE0QjtJQUE1QiwrREFBNEI7Ozs7SUFSaEUsc0NBQWlGO0lBQzdFLDhGQUFvRjtJQUVwRixnQ0FDOEY7SUFEb0MsMk9BQW1CLDhKQUFVLGVBQUEsdUJBQWUsQ0FBQSxJQUF6Qiw0SkFBbUMsZUFBQSxnQkFBUSxDQUFBLElBQTNDLDBOQUFBOztJQUFySixpQkFDOEY7SUFFOUYsOEZBQW9GO0lB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LEVBQUUsSUFBSTtpQkFDZDthQUNKO1lDZEwsMEZBU2lCO1lBRWpCLHlGQVdpQjtZQUVqQiwwRkFPaUI7WUFFakIsMEZBV2lCOztZQTVDQSwwRkFBNkQ7WUFXN0QsZUFBNkQ7WUFBN0QsMEZBQTZEO1lBYTdELGVBQXdCO1lBQXhCLDZDQUF3QjtZQVNKLGVBQXFCO1lBQXJCLDBDQUFxQjs7O3VGRGpCN0Msa0JBQWtCO2NBWjlCLFNBQVM7MkJBQ0ksWUFBWSxhQUdaO29CQUNOO3dCQUNJLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLG1CQUFtQixFQUFDO3dCQUNqRCxLQUFLLEVBQUUsSUFBSTtxQkFDZDtpQkFDSjsyREFNUSxXQUFXO2tCQUFuQixLQUFLO1lBQ0csUUFBUTtrQkFBaEIsS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxRQUFRO2tCQUFoQixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxVQUFVO2tCQUFsQixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLEdBQUc7a0JBQVgsS0FBSztZQUNHLEdBQUc7a0JBQVgsS0FBSztZQUNHLElBQUk7a0JBQVosS0FBSztZQUNHLFFBQVE7a0JBQWhCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBRUksTUFBTTtrQkFBZixNQUFNO1lBb0NILE1BQU07a0JBRFQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9wdGlvbmFsLCBTZWxmLCBJbmplY3RvciwgRGlyZWN0aXZlLCBWaWV3Q2hpbGQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgTkdfVkFMSURBVE9SUywgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTdGF0aWNVdGlscywgVXRpbGl0aWVzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxpdGllc1wiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2luZm8taW5wdXQnLFxyXG4gICAgc3R5bGVVcmxzOiBbICdpbnB1dC5jb21wb25lbnQuc2NzcycgXSxcclxuICAgIHRlbXBsYXRlVXJsOiAnaW5wdXQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgcHJvdmlkZXJzOltcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbmZvSW5wdXRDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmZvSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgICBwcml2YXRlIGNvbnRyb2w6IE5nQ29udHJvbFxyXG5cclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSBtYXhsZW5ndGg6IGFueTtcclxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyA9ICd0ZXh0JztcclxuICAgIEBJbnB1dCgpIHJvd3M6IG51bWJlciA9IDE7XHJcbiAgICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuICAgIEBJbnB1dCgpIGljb25QcmVmaXg6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KCkgaWNvblN1ZmZpeDogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBtaW46IG51bWJlciA9IC05OTk5OTk5OTk5OTk5OS45OTk5OTk5OTk7XHJcbiAgICBASW5wdXQoKSBtYXg6IG51bWJlciA9IDk5OTk5OTk5OTk5OTk5Ljk5OTk5OTk5OTtcclxuICAgIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB2YWxpZGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgYmx1cm9ubHljaGFuZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25ibHVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgXHJcbiAgICBtYXNrT3B0aW9uczogYW55ID0ge1xyXG4gICAgICAgIGFsaWduOiAncmlnaHQnLFxyXG4gICAgICAgIGFsbG93TmVnYXRpdmU6IHRydWUsXHJcbiAgICAgICAgZGVjaW1hbDogJywnLFxyXG4gICAgICAgIHByZWNpc2lvbjogMixcclxuICAgICAgICBwcmVmaXg6ICcnLFxyXG4gICAgICAgIHN1ZmZpeDogJycsXHJcbiAgICAgICAgdGhvdXNhbmRzOiAnLidcclxuICAgIH07XHJcbiAgICBcclxuICAgIHZhbHVlOiBzdHJpbmcgPSAnJztcclxuICAgIHZhbHVlT25FbnRlcjogYW55ID0gbnVsbDtcclxuICAgIGN1c3RvbU1hc2s6IHN0cmluZyA9IG51bGw7XHJcbiAgICBvbkNoYW5nZTogYW55O1xyXG4gICAgb25Ub3VjaGVkOiBhbnk7XHJcbiAgICBwYXNzd29yZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGVycm9yTWVzc2FnZTogc3RyaW5nID0gbnVsbDtcclxuICAgIGZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woKTtcclxuXHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHsgfVxyXG5cclxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wgPSB0aGlzLmluamVjdG9yLmdldChOZ0NvbnRyb2wsIG51bGwpO1xyXG4gICAgICAgIGlmICh0aGlzLmNvbnRyb2wpXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wgPSB0aGlzLmNvbnRyb2wuY29udHJvbDsgXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7IFxyXG4gICAgICAgIHRoaXMucGFzc3dvcmRNb2RlID0gdGhpcy50eXBlLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT0gJ3Bhc3N3b3JkJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1ldGhvZElzbWFzazogc3RyaW5nID0gbnVsbDtcclxuICAgIEBJbnB1dCgpXHJcbiAgICBnZXQgaXNtYXNrKCl7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubWV0aG9kSXNtYXNrO1xyXG4gICAgfVxyXG5cclxuICAgIHNldCBpc21hc2sodmFsdWUpe1xyXG4gICAgICAgIHRoaXMubWV0aG9kSXNtYXNrID0gdmFsdWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLm1ldGhvZElzbWFzayAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMubWV0aG9kSXNtYXNrID0gdGhpcy5tZXRob2RJc21hc2sudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1ldGhvZElzbWFzayA9PSAnaW50JylcclxuICAgICAgICAgICAgICAgIHRoaXMubWFza09wdGlvbnMucHJlY2lzaW9uID0gMDtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubWV0aG9kSXNtYXNrWzBdID09ICduJyAmJiAodGhpcy5tZXRob2RJc21hc2subGVuZ3RoID09IDIgfHwgdGhpcy5tZXRob2RJc21hc2subGVuZ3RoID09IDMpKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXNrT3B0aW9ucy5wcmVjaXNpb24gPSBwYXJzZUludCh0aGlzLm1ldGhvZElzbWFzay5yZXBsYWNlKCduJywgJycpKTtcclxuXHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5jdXN0b21NYXNrID0gdGhpcy5tZXRob2RJc21hc2s7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZhbGlkYXJDYW1wbygpIHtcclxuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGUpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLmN1c3RvbU1hc2sgPT0gJ2NucGonICYmICFTdGF0aWNVdGlscy52YWxpZGFyQ25waih0aGlzLnZhbHVlKSlcclxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQ05QSkludmFsaWRvJztcclxuICAgICAgICBlbHNlIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuY3VzdG9tTWFzayA9PSAnY3BmJyAmJiAhU3RhdGljVXRpbHMudmFsaWRhckNwZih0aGlzLnZhbHVlKSlcclxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnQ1BGSW52YWxpZG8nO1xyXG5cclxuICAgICAgICBpZiAoISF0aGlzLmVycm9yTWVzc2FnZSAmJiB0aGlzLmZvcm1Db250cm9sKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0RXJyb3JzKHtpbnZhbGlkOiB0cnVlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cigpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXJDYW1wbygpO1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT0gJ251bWJlcicgfHwgKHRoaXMuaXNtYXNrICE9IG51bGwgJiYgdGhpcy5pc21hc2suc3RhcnRzV2l0aChcIm5cIikpKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMubWluID4gTnVtYmVyKHRoaXMudmFsdWUpID8gbnVsbCA6IHRoaXMudmFsdWU7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5tYXggIT0gbnVsbClcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLm1heCA8IE51bWJlcih0aGlzLnZhbHVlKSA/IG51bGwgOiB0aGlzLnZhbHVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZVZhbHVlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5vbmJsdXIgIT0gbnVsbCAmJiAoIXRoaXMuYmx1cm9ubHljaGFuZ2UgfHwgdGhpcy52YWx1ZU9uRW50ZXIgIT0gdGhpcy52YWx1ZSkpXHJcbiAgICAgICAgICAgIHRoaXMub25ibHVyLmVtaXQodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DaGFuZ2VWYWx1ZSgpe1xyXG4gICAgICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpXHJcbiAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgd3JpdGVWYWx1ZShtb2RlbFZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbW9kZWxWYWx1ZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlVmFsdWUoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgfVxyXG59IiwiPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidHlwZSAhPSAnY29sb3InICYmIHR5cGUgIT0gJ3RleHRhcmVhJyAmJiBpc21hc2sgPT0gbnVsbFwiID5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblByZWZpeH19PC9tYXQtaWNvbj5cclxuICAgIFxyXG4gICAgPGlucHV0IG1hdElucHV0IFt0eXBlXT1cInR5cGVcIiBbc3RlcF09XCJzdGVwXCIgW21pbl09XCJtaW5cIiBbbWF4XT1cIm1heFwiIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoZm9jdXNpbik9XCJ2YWx1ZU9uRW50ZXIgPSB2YWx1ZVwiIFxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCI+XHJcblxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblN1ZmZpeFwiIG1hdFN1ZmZpeCBzdHlsZT1cImNvbG9yOiAjYWFhXCI+e3tpY29uU3VmZml4fX08L21hdC1pY29uPlxyXG4gICAgPG1hdC1pY29uIGNsYXNzPVwic2hvdy1wYXNzd29yZFwiICpuZ0lmPVwicGFzc3dvcmRNb2RlXCIgKGNsaWNrKT1cInR5cGUgPSAodHlwZSA9PSAncGFzc3dvcmQnKSA/ICd0ZXh0JyA6ICdwYXNzd29yZCdcIiBtYXRTdWZmaXggPnZpc2liaWxpdHl7eyB0eXBlID09ICdwYXNzd29yZCcgPyAnJyA6ICdfb2ZmJyB9fTwvbWF0LWljb24+XHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3tlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwidHlwZSAhPSAnY29sb3InICYmIHR5cGUgIT0gJ3RleHRhcmVhJyAmJiBpc21hc2sgIT0gbnVsbFwiPlxyXG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaWNvblByZWZpeFwiIG1hdFByZWZpeCBzdHlsZT1cImNvbG9yOiAjYWFhXCI+e3tpY29uUHJlZml4fX08L21hdC1pY29uPlxyXG5cclxuICAgIDxpbnB1dCBtYXRJbnB1dCBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIiBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXIgfCB0cmFuc2xhdGVcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoZm9jdXNpbik9XCJ2YWx1ZU9uRW50ZXIgPSB2YWx1ZVwiICpuZ0lmPVwiY3VzdG9tTWFzayA9PSBudWxsXCJcclxuICAgICAgICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIiBbb3B0aW9uc109XCJtYXNrT3B0aW9uc1wiIGN1cnJlbmN5TWFzaz5cclxuXHJcbiAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlVmFsdWUoKVwiIChibHVyKT1cIm9uQmx1cigpXCIgKGZvY3VzaW4pPVwidmFsdWVPbkVudGVyID0gdmFsdWVcIiAqbmdJZj1cImN1c3RvbU1hc2sgIT0gbnVsbFwiXHJcbiAgICAgICAgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCIgW3NldG1hc2tdPVwiY3VzdG9tTWFza1wiIFt1bm1hc2tdPVwiY3VzdG9tTWFza1wiPlxyXG5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25TdWZmaXhcIiBtYXRTdWZmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblN1ZmZpeH19PC9tYXQtaWNvbj5cclxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJlcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZSB8IHRyYW5zbGF0ZX19PC9tYXQtZXJyb3I+XHJcbjwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG48bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJ0eXBlID09ICd0ZXh0YXJlYSdcIj5cclxuICAgIDxtYXQtaWNvbiAqbmdJZj1cImljb25QcmVmaXhcIiBtYXRQcmVmaXggc3R5bGU9XCJjb2xvcjogI2FhYVwiPnt7aWNvblByZWZpeH19PC9tYXQtaWNvbj5cclxuICAgIFxyXG4gICAgPHRleHRhcmVhIG1hdElucHV0IFt0YWJpbmRleF09XCJ0YWJpbmRleFwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlciB8IHRyYW5zbGF0ZVwiIFsobmdNb2RlbCldPVwidmFsdWVcIiAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgpXCIgKGJsdXIpPVwib25CbHVyKClcIiAoZm9jdXNpbik9XCJ2YWx1ZU9uRW50ZXIgPSB2YWx1ZVwiIFtyb3dzXT1cInJvd3NcIlxyXG4gICAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCI+PC90ZXh0YXJlYT5cclxuXHJcbiAgICA8bWF0LWVycm9yICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+e3tlcnJvck1lc3NhZ2UgfCB0cmFuc2xhdGV9fTwvbWF0LWVycm9yPlxyXG48L21hdC1mb3JtLWZpZWxkPlxyXG5cclxuPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiaW5wdXQtY29sb3JcIiAqbmdJZj1cInR5cGUgPT0gJ2NvbG9yJ1wiPlxyXG4gICAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29sb3ItY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGlucHV0ICNjb2xvcklucHV0IHN0eWxlPVwid2lkdGg6IDBweDt2aXNpYmlsaXR5OiBoaWRkZW47XCIgdHlwZT1cImNvbG9yXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChjaGFuZ2UpPVwid3JpdGVWYWx1ZSh2YWx1ZSlcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sb3ItcGlja2VyXCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwidmFsdWVcIiAoY2xpY2spPVwiY29sb3JJbnB1dC5jbGljaygpXCI+PC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IHR5cGU9XCJ0ZXh0XCIgW3RhYmluZGV4XT1cInRhYmluZGV4XCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlXCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKClcIiAoYmx1cik9XCJvbkJsdXIoKVwiIChmb2N1c2luKT1cInZhbHVlT25FbnRlciA9IHZhbHVlXCIgXHJcbiAgICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIiBbcmVhZG9ubHldPVwicmVhZG9ubHlcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIj5cclxuICAgICAgICBcclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJpY29uU3VmZml4XCIgbWF0U3VmZml4IHN0eWxlPVwiY29sb3I6ICNhYWFcIj57e2ljb25TdWZmaXh9fTwvbWF0LWljb24+XHJcbiAgICA8L2Rpdj5cclxuPC9tYXQtZm9ybS1maWVsZD4iXX0=