sidesys-generic-ui 2.2.2 → 2.3.1-local.1

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 (119) hide show
  1. package/esm2022/lib/animation/animation.component.mjs +14 -5
  2. package/esm2022/lib/animation/emuns/animation.enum.mjs +33 -6
  3. package/esm2022/lib/avatar/components/profile-group/s-profile-group.component.mjs +2 -2
  4. package/esm2022/lib/avatar/s-avatar.component.mjs +2 -2
  5. package/esm2022/lib/badge/s-badge.component.mjs +2 -2
  6. package/esm2022/lib/button/components/button/s-button.component.mjs +2 -2
  7. package/esm2022/lib/card/s-card.component.mjs +3 -4
  8. package/esm2022/lib/card/s-card.module.mjs +4 -12
  9. package/esm2022/lib/checkbox/checkbox-new/s-checkbox.component.mjs +2 -2
  10. package/esm2022/lib/checkbox/s-checkbox.component.mjs +2 -2
  11. package/esm2022/lib/collapse/s-collapse.component.mjs +2 -2
  12. package/esm2022/lib/dynamic-form/s-dynamic-form.component.mjs +1 -1
  13. package/esm2022/lib/dynamic-form/s-dynamic-form.module.mjs +4 -19
  14. package/esm2022/lib/footer/s-footer.component.mjs +2 -2
  15. package/esm2022/lib/grid-multi-inputs/components/grid-multi-inputs-toolbar-top/grid-multi-inputs-toolbar-top.component.mjs +2 -2
  16. package/esm2022/lib/grid-multi-inputs/grid-multi-inputs.component.mjs +2 -2
  17. package/esm2022/lib/input/components/calendar/s-calendar.component.mjs +2 -2
  18. package/esm2022/lib/input/components/color/s-color.component.mjs +2 -2
  19. package/esm2022/lib/input/components/error-control/s-error-control.component.mjs +2 -2
  20. package/esm2022/lib/input/components/input/s-input.component.mjs +2 -2
  21. package/esm2022/lib/input/components/input-number/s-input-number.component.mjs +2 -2
  22. package/esm2022/lib/input/components/input-textarea/s-input-textarea.component.mjs +2 -2
  23. package/esm2022/lib/input/components/range/s-range.component.mjs +7 -7
  24. package/esm2022/lib/input/components/time/s-time.component.mjs +2 -2
  25. package/esm2022/lib/input/directives/control-boolean-accessor.directive.mjs +1 -1
  26. package/esm2022/lib/input/index.mjs +1 -2
  27. package/esm2022/lib/input/input.module.mjs +7 -12
  28. package/esm2022/lib/link/s-link.component.mjs +2 -2
  29. package/esm2022/lib/list-simple/s-list-simple.component.mjs +2 -2
  30. package/esm2022/lib/modal/modal-confirm/modal-confirm.component.mjs +2 -2
  31. package/esm2022/lib/navbar/components/icon-menu/components/s-notificaction.component.mjs +2 -2
  32. package/esm2022/lib/navbar/components/icon-menu/s-icon-menu.component.mjs +2 -2
  33. package/esm2022/lib/navbar/components/menu-main/s-menu-main.component.mjs +2 -2
  34. package/esm2022/lib/navbar/components/menu-main/s-menu-main.module.mjs +4 -10
  35. package/esm2022/lib/navbar/s-navbar.component.mjs +2 -2
  36. package/esm2022/lib/navbar/s-navbar.module.mjs +4 -10
  37. package/esm2022/lib/radio/s-radio.component.mjs +2 -2
  38. package/esm2022/lib/select/select/s-select.component.mjs +3 -3
  39. package/esm2022/lib/select/select-multiple/s-select-multiple.component.mjs +3 -3
  40. package/esm2022/lib/select/select-multiple-old/s-select-multiple-old.component.mjs +2 -2
  41. package/esm2022/lib/select/select-simple/s-select-simple.component.mjs +3 -3
  42. package/esm2022/lib/sidebar/s-sidebar.component.mjs +2 -2
  43. package/esm2022/lib/sidebar/s-sidebar.module.mjs +6 -25
  44. package/esm2022/lib/spinner/s-spinner.component.mjs +8 -17
  45. package/esm2022/lib/spinner/s-spinner.module.mjs +7 -12
  46. package/esm2022/lib/table-complete/table-complete.component.mjs +2 -2
  47. package/esm2022/lib/table-t/s-tablet.component.mjs +2 -2
  48. package/esm2022/lib/tabs/s-tabs.component.mjs +7 -2
  49. package/esm2022/lib/tag/s-tag.component.mjs +2 -2
  50. package/esm2022/lib/theme/s-theme.component.mjs +2 -2
  51. package/esm2022/lib/timeline/s-timeline.component.mjs +2 -2
  52. package/esm2022/lib/toast/s-toast.component.mjs +2 -2
  53. package/esm2022/lib/toggle-switch/s-toggle-switch.component.mjs +2 -2
  54. package/esm2022/lib/toggle-switch/toggle-switch-form/toggle-switch-form.component.mjs +115 -16
  55. package/esm2022/lib/toolbar-top/toolbar-top.component.mjs +9 -4
  56. package/esm2022/lib/toolbar-top/toolbar-top.module.mjs +1 -5
  57. package/esm2022/lib/tooltip/s-tooltip.component.mjs +4 -4
  58. package/esm2022/lib/tree-list/s-tree-list.component.mjs +2 -2
  59. package/esm2022/public-api.mjs +1 -5
  60. package/fesm2022/sidesys-generic-ui.mjs +1728 -2522
  61. package/fesm2022/sidesys-generic-ui.mjs.map +1 -1
  62. package/lib/animation/animation.component.d.ts +5 -2
  63. package/lib/animation/emuns/animation.enum.d.ts +14 -2
  64. package/lib/card/s-card.component.d.ts +0 -2
  65. package/lib/card/s-card.module.d.ts +4 -5
  66. package/lib/dynamic-form/s-dynamic-form.module.d.ts +7 -9
  67. package/lib/input/index.d.ts +0 -1
  68. package/lib/input/input.module.d.ts +14 -15
  69. package/lib/navbar/components/menu-main/s-menu-main.module.d.ts +4 -5
  70. package/lib/navbar/s-navbar.module.d.ts +8 -9
  71. package/lib/sidebar/s-sidebar.module.d.ts +4 -5
  72. package/lib/spinner/s-spinner.component.d.ts +5 -9
  73. package/lib/spinner/s-spinner.module.d.ts +2 -1
  74. package/lib/tabs/s-tabs.component.d.ts +3 -2
  75. package/lib/toggle-switch/toggle-switch-form/toggle-switch-form.component.d.ts +17 -4
  76. package/lib/toolbar-top/toolbar-top.component.d.ts +3 -1
  77. package/lib/toolbar-top/toolbar-top.module.d.ts +7 -8
  78. package/package.json +1 -1
  79. package/public-api.d.ts +0 -4
  80. package/esm2022/lib/drop-down/index.mjs +0 -4
  81. package/esm2022/lib/drop-down/s-drop-down-button.mjs +0 -7
  82. package/esm2022/lib/drop-down/s-drop-down.component.mjs +0 -29
  83. package/esm2022/lib/drop-down/s-drop-down.module.mjs +0 -18
  84. package/esm2022/lib/form/index.mjs +0 -4
  85. package/esm2022/lib/form/s-form-control.mjs +0 -59
  86. package/esm2022/lib/form/s-form.component.mjs +0 -130
  87. package/esm2022/lib/form/s-form.module.mjs +0 -51
  88. package/esm2022/lib/icon/index.mjs +0 -3
  89. package/esm2022/lib/icon/s-icon.component.mjs +0 -41
  90. package/esm2022/lib/icon/s-icon.module.mjs +0 -22
  91. package/esm2022/lib/icon/s-icons.mjs +0 -55
  92. package/esm2022/lib/input/components/input-text/s-input-text.component.mjs +0 -346
  93. package/esm2022/lib/login/index.mjs +0 -6
  94. package/esm2022/lib/login/s-login-errors-model.mjs +0 -3
  95. package/esm2022/lib/login/s-login-event.mjs +0 -3
  96. package/esm2022/lib/login/s-login-images.mjs +0 -4
  97. package/esm2022/lib/login/s-login-model.mjs +0 -3
  98. package/esm2022/lib/login/s-login.component.mjs +0 -121
  99. package/esm2022/lib/login/s-login.module.mjs +0 -32
  100. package/lib/drop-down/index.d.ts +0 -3
  101. package/lib/drop-down/s-drop-down-button.d.ts +0 -4
  102. package/lib/drop-down/s-drop-down.component.d.ts +0 -12
  103. package/lib/drop-down/s-drop-down.module.d.ts +0 -8
  104. package/lib/form/index.d.ts +0 -3
  105. package/lib/form/s-form-control.d.ts +0 -26
  106. package/lib/form/s-form.component.d.ts +0 -33
  107. package/lib/form/s-form.module.d.ts +0 -14
  108. package/lib/icon/index.d.ts +0 -2
  109. package/lib/icon/s-icon.component.d.ts +0 -18
  110. package/lib/icon/s-icon.module.d.ts +0 -8
  111. package/lib/icon/s-icons.d.ts +0 -8
  112. package/lib/input/components/input-text/s-input-text.component.d.ts +0 -66
  113. package/lib/login/index.d.ts +0 -5
  114. package/lib/login/s-login-errors-model.d.ts +0 -7
  115. package/lib/login/s-login-event.d.ts +0 -4
  116. package/lib/login/s-login-images.d.ts +0 -3
  117. package/lib/login/s-login-model.d.ts +0 -8
  118. package/lib/login/s-login.component.d.ts +0 -42
  119. package/lib/login/s-login.module.d.ts +0 -10
@@ -1,346 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild, ViewEncapsulation, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- import * as i2 from "@angular/forms";
6
- import * as i3 from "../../../icon-material/s-icon-material.component";
7
- import * as i4 from "../../../button/components/button/s-button.component";
8
- export class SInputTextComponent {
9
- get theme() { return this._theme; }
10
- set theme(val) {
11
- this._theme = ['default', 'green', 'yellow', 'red'].indexOf(val) != -1 ? val : 'default';
12
- }
13
- ;
14
- get type() { return this._type; }
15
- set type(val) {
16
- this._type = ['text', 'password', 'email', 'phone', 'url', 'search', 'number', 'color', 'date', 'time', 'range'].indexOf(val) != -1 ? val : 'text';
17
- }
18
- ;
19
- constructor() {
20
- this.onChange = (_) => { };
21
- this.onTouch = () => { };
22
- this.text = '';
23
- this.id = Math.floor(Math.random() * 1000);
24
- this.name = '';
25
- this.placeHolder = '';
26
- this.disabled = false;
27
- this.min = 0;
28
- this.step = 1;
29
- this.readOnly = false;
30
- this.classAdd = '';
31
- this.help = false;
32
- this.size = 'md';
33
- this.rangeUnity = '';
34
- this.inputText = '';
35
- this.inputNumber = 0;
36
- this._type = 'text';
37
- this._theme = 'default';
38
- this.disabledstyle = '';
39
- this.visibility = false;
40
- this.inconSymbol = false;
41
- this.tooltipValue = '';
42
- this.textChangeEvent = new EventEmitter();
43
- this.clickHelpIconEvent = new EventEmitter();
44
- this.blur = new EventEmitter();
45
- this.focus = new EventEmitter();
46
- }
47
- ngOnInit() {
48
- this.initializeComponent();
49
- }
50
- // Inicializa los valores del componente
51
- initializeComponent() {
52
- if (this.text && this.type === 'number') {
53
- this.inputNumber = Number(this.text);
54
- }
55
- if (this._type === 'color' && this.text === '') {
56
- this.text = '#000000';
57
- }
58
- this.inputText = this.text;
59
- if (this.disabled) {
60
- this.disabledstyle = 'disabled-active';
61
- }
62
- if (this.type === 'color' && this.readOnly) {
63
- this.disabled = true;
64
- }
65
- this.loadTheme();
66
- }
67
- ngAfterViewInit() {
68
- //Ajustes Type Range
69
- if (this.type === 'range') {
70
- this.rangeOnLoad();
71
- }
72
- }
73
- ngOnChanges(changes) {
74
- if (changes['theme']) {
75
- this.loadTheme();
76
- }
77
- if (changes['text']) {
78
- this.updateText();
79
- }
80
- if (changes['disabled'] || changes['readOnly']) {
81
- this.updateDisabledAndReadOnlyState();
82
- }
83
- }
84
- // Actualiza el texto y los números
85
- updateText() {
86
- if (this.text && this.type === 'number') {
87
- this.inputNumber = Number(this.text);
88
- }
89
- if (this._type === 'color' && this.text === '') {
90
- this.text = '#000000';
91
- }
92
- this.inputText = this.text;
93
- }
94
- // Actualiza el estado disabled y readOnly
95
- updateDisabledAndReadOnlyState() {
96
- this.disabledstyle = this.disabled ? 'disabled-active' : '';
97
- // Si el input es de tipo color y está en modo de solo lectura, se deshabilita.
98
- if (this.type === 'color' && this.readOnly) {
99
- this.disabled = true;
100
- }
101
- }
102
- loadTheme() {
103
- switch (this.theme) {
104
- case "default":
105
- this.iconName = "";
106
- break;
107
- case "red":
108
- this.iconName = "error_outline";
109
- break;
110
- case "green":
111
- this.iconName = "check_circle_outline";
112
- break;
113
- case "yellow":
114
- this.inconSymbol = true;
115
- this.iconName = "warning";
116
- break;
117
- default:
118
- this.iconName = "";
119
- break;
120
- }
121
- }
122
- onTextChange() {
123
- if (this.type === 'number') {
124
- this.updateNumber(this.inputText);
125
- }
126
- this.onTouch();
127
- this.onChange(this.inputText);
128
- if (this.inputTimeout) {
129
- clearTimeout(this.inputTimeout);
130
- }
131
- this.inputTimeout = setTimeout(() => {
132
- this.textChangeEvent.next(this.inputText);
133
- }, 500, null);
134
- }
135
- onTextChangeVal(val) {
136
- if (this.inputTimeout) {
137
- clearTimeout(this.inputTimeout);
138
- }
139
- this.inputTimeout = setTimeout(() => {
140
- if (val) {
141
- this.onTouch();
142
- this.onChange(val);
143
- this.textChangeEvent.next(val);
144
- this.inputText = val;
145
- }
146
- else {
147
- this.onTouch();
148
- this.onChange(val);
149
- this.textChangeEvent.next(this.inputText);
150
- }
151
- }, 500, null);
152
- }
153
- clickIcon() {
154
- this.clickHelpIconEvent.next();
155
- }
156
- colorClick() {
157
- document.getElementById(this.name)?.click();
158
- }
159
- //FUNCIONES PARA TYPE NUMBER
160
- numberDecrease() {
161
- if (!this.disabled && !this.readOnly) {
162
- if (this.min < this.inputNumber) {
163
- this.inputNumber -= this.step;
164
- }
165
- this.inputText = this.inputNumber.toString();
166
- this.onTouch();
167
- this.onChange(this.inputText);
168
- this.textChangeEvent.next(this.inputText);
169
- }
170
- }
171
- numberIncrement() {
172
- if (!this.disabled && !this.readOnly) {
173
- if (this.max) {
174
- if (this.max > this.inputNumber) {
175
- this.inputNumber += this.step;
176
- }
177
- else {
178
- this.inputNumber = this.max;
179
- }
180
- }
181
- if (!this.max) {
182
- this.inputNumber += this.step;
183
- }
184
- this.inputText = this.inputNumber.toString();
185
- this.onTouch();
186
- this.onChange(this.inputText);
187
- this.textChangeEvent.next(this.inputText);
188
- }
189
- }
190
- updateNumber(value) {
191
- let value2 = value;
192
- if (this.max)
193
- if (value > this.max) {
194
- value2 = this.max;
195
- }
196
- if (value < this.min) {
197
- value2 = this.min;
198
- }
199
- this.inputText = value2.toString();
200
- this.inputNumber = Number(value2);
201
- if (this.typeNumber)
202
- this.typeNumber.nativeElement.value = this.inputNumber;
203
- this.onTouch();
204
- this.onChange(this.inputNumber);
205
- this.textChangeEvent.next(this.inputText);
206
- }
207
- //FIN FUNCIONES PARA TYPE NUMBER
208
- //FUNCIONES PARA TYPE RANGE
209
- rangeOnLoad() {
210
- setTimeout(() => {
211
- //RANGO TOTAL
212
- const rangeMax = this.max ? this.max : 100;
213
- //CALCULO LA AMPLITUD PARA PODER POSICIONAR AL 50% POR DEFECTO
214
- let amplitudTotal = rangeMax - this.min;
215
- let porcion = (amplitudTotal * 50) / 100;
216
- // INICIALIZA AL 50% CUANDO NO HAY VALOR PREDEFINIDO
217
- let value = this.text == '' ? this.min + porcion : this.text;
218
- value = this.inputText == '' ? this.min + porcion : this.inputText;
219
- //DEFINO EL TOOTLTIP
220
- this.tooltipValue = this.text + this.rangeUnity;
221
- this.updateTooltip(value.toString());
222
- //SI ES CHROME APLICO EL FIX
223
- const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
224
- if (isChrome) {
225
- //CALCCULO EL % A ASIGNAR
226
- let porcentaje = ((Number(value) - this.min) / (rangeMax - this.min)) * 100;
227
- document.getElementById(this.id)?.style.setProperty('margin-top', '14px');
228
- document.getElementById(this.id)?.style.setProperty('margin-bottom', '14px');
229
- document.getElementById(this.id)?.style.setProperty('border-radius', '4px');
230
- document.getElementById(this.id)?.style.setProperty('height', '8px');
231
- document.getElementById(this.id)?.style.setProperty('background', 'linear-gradient(to right, var(--primary-600) 0%, var(--primary-600) ' + porcentaje + '%, var(--neutrals-1000) ' + porcentaje + '%, var(--neutrals-1000) 100%)');
232
- }
233
- ;
234
- }, 0);
235
- }
236
- //FUNCION PARA CHROME CUANDO SE DESLIZA EL SLIDE FUNCIONE CORRECTAMENTE
237
- changeRange(value) {
238
- if (this.type === 'range') {
239
- const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
240
- const rangeMax = this.max ? this.max : 100;
241
- if (isChrome) {
242
- let porcentaje = ((value - this.min) / (rangeMax - this.min)) * 100;
243
- document.getElementById(this.id)?.style.setProperty('background', 'linear-gradient(to right, var(--primary-600) 0%, var(--primary-600) ' + porcentaje + '%, var(--neutrals-1000) ' + porcentaje + '%, var(--neutrals-1000) 100%)');
244
- }
245
- ;
246
- }
247
- }
248
- //FUNCION QUE ACTUALIZA EL TOOLTIP CUANDO SE DESLIZA EL SLIDE
249
- updateTooltip(value) {
250
- if (this.tooltipContainer && this.tooltip) {
251
- const rangeWidth = this.tooltipContainer.nativeElement.offsetWidth;
252
- const rangeMax = this.max ? this.max : 100;
253
- let porcentaje = ((Number(value) - this.min) / (rangeMax - this.min)) * 100;
254
- let ajuste = porcentaje * rangeWidth / 100;
255
- this.tooltip.nativeElement.style.left = `${ajuste}px`;
256
- this.tooltipValue = value + this.rangeUnity;
257
- }
258
- }
259
- //FIN FUNCIONES PARA TYPE RANGE
260
- //FUNCIONES PARA QUE FUNCIONE FORM BUILDER
261
- writeValue(value) {
262
- this.inputText = value ?? "";
263
- this.inputNumber = value ?? 0;
264
- if (this.type == 'range') {
265
- this.rangeOnLoad();
266
- }
267
- }
268
- registerOnChange(fn) {
269
- this.onChange = fn;
270
- }
271
- registerOnTouched(fn) {
272
- this.onTouch = fn;
273
- }
274
- onBlur(event) {
275
- this.blur.next(event);
276
- }
277
- onFocus(event) {
278
- this.focus.next(event);
279
- }
280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SInputTextComponent, selector: "s-input-text", inputs: { text: "text", id: "id", name: "name", placeHolder: "placeHolder", disabled: "disabled", max: "max", min: "min", step: "step", readOnly: "readOnly", theme: "theme", type: "type", classAdd: "classAdd", help: "help", size: "size", rangeUnity: "rangeUnity" }, outputs: { textChangeEvent: "textChangeEvent", clickHelpIconEvent: "clickHelpIconEvent", blur: "blur", focus: "focus" }, providers: [
282
- {
283
- provide: NG_VALUE_ACCESSOR,
284
- useExisting: forwardRef(() => SInputTextComponent),
285
- multi: true
286
- }
287
- ], viewQueries: [{ propertyName: "typeNumber", first: true, predicate: ["typeNumber"], descendants: true }, { propertyName: "tooltipContainer", first: true, predicate: ["tooltipContainer"], descendants: true }, { propertyName: "tooltip", first: true, predicate: ["tooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container [ngSwitch]=\"type\">\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\n\n <!-- case text -->\n <ng-container *ngSwitchCase=\"'text'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <!-- <div class=\"content-left\">\n <s-icon-mat class=\"icon\">email</s-icon-mat>\n </div> -->\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [id]=\"id\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\"\n >\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case password -->\n <ng-container *ngSwitchCase=\"'password'\">\n <div\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n type=\"{{visibility ? 'text' : 'password'}}\" \n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\n \">\n </div>\n <div class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\n 'visibility_off'}}</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case email -->\n <ng-container *ngSwitchCase=\"'email'\">\n <div\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case phone -->\n <ng-container *ngSwitchCase=\"'phone'\">\n <div\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case url -->\n <ng-container *ngSwitchCase=\"'url'\">\n <div\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n http://\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case search -->\n <ng-container *ngSwitchCase=\"'search'\">\n <div\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">search</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <!-- <div class=\"content-right\">\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\n </div> -->\n </div>\n </ng-container>\n\n <!-- case color -->\n <ng-container *ngSwitchCase=\"'color'\">\n <div\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\" class=\"content-left--input\">\n </div>\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [type]=\"text\" \n autocomplete=\"off\" \n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n [disabled]=\"disabled\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case date -->\n <ng-container *ngSwitchCase=\"'date'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n (ngModelChange)=\"onTextChangeVal($event)\"\n [ngModel]=\"inputText\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case time -->\n <ng-container *ngSwitchCase=\"'time'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n (ngModelChange)=\"onTextChangeVal($event)\"\n [ngModel]=\"inputText\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case number -->\n <ng-container *ngSwitchCase=\"'number'\">\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\n </div>\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n #typeNumber \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n >\n </div>\n\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\n </div>\n </div>\n </ng-container>\n\n <!-- case range -->\n <ng-container *ngSwitchCase=\"'range'\">\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\n <input\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n #rangeField\n [readOnly]=\"readOnly\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [id]=\"id\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\"\n [(ngModel)]=\"inputText\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (mousemove)=\"changeRange(rangeField.value)\"\n (ngModelChange)=\"onTextChange()\"\n (input)=\"updateTooltip(rangeField.value)\"\n >\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\n </div>\n </div>\n </ng-container>\n\n <!-- case default -->\n <ng-container *ngSwitchDefault>\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <!-- <div class=\"content-left\">\n <s-icon-mat class=\"icon\">email</s-icon-mat>\n </div> -->\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : 'generic'\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-left--input{width:40px;padding:0}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.SIconMaterialComponent, selector: "s-icon-mat", inputs: ["name", "size", "fill", "weight", "grade", "opticalSize", "style", "type"] }, { kind: "component", type: i4.SButtonComponent, selector: "s-button", inputs: ["disabled", "pill", "size", "invert", "type", "loading", "position", "theme", "active"] }], encapsulation: i0.ViewEncapsulation.None }); }
288
- }
289
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SInputTextComponent, decorators: [{
290
- type: Component,
291
- args: [{ selector: 's-input-text', encapsulation: ViewEncapsulation.None, providers: [
292
- {
293
- provide: NG_VALUE_ACCESSOR,
294
- useExisting: forwardRef(() => SInputTextComponent),
295
- multi: true
296
- }
297
- ], template: "<ng-container [ngSwitch]=\"type\">\n <!-- El switch case con cada caso por input ['text', 'password', 'email' , 'phone' , 'url' , 'search']-->\n\n <!-- case text -->\n <ng-container *ngSwitchCase=\"'text'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <!-- <div class=\"content-left\">\n <s-icon-mat class=\"icon\">email</s-icon-mat>\n </div> -->\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [id]=\"id\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\"\n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\"\n >\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case password -->\n <ng-container *ngSwitchCase=\"'password'\">\n <div\n class=\"content-input-main-626 content-input-main-password {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">vpn_key</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n type=\"{{visibility ? 'text' : 'password'}}\" \n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\n \">\n </div>\n <div class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon cursor\"\n (click)=\"visibility = !visibility\">{{visibility ? 'visibility' :\n 'visibility_off'}}</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case email -->\n <ng-container *ngSwitchCase=\"'email'\">\n <div\n class=\"content-input-main-626 content-input-main-email {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">mail_outline</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case phone -->\n <ng-container *ngSwitchCase=\"'phone'\">\n <div\n class=\"content-input-main-626 content-input-main-phone {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">phone</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case url -->\n <ng-container *ngSwitchCase=\"'url'\">\n <div\n class=\"content-input-main-626 content-input-main-url {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n http://\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n\n <!-- case search -->\n <ng-container *ngSwitchCase=\"'search'\">\n <div\n class=\"content-input-main-626 content-input-main-search {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <s-icon-mat class=\"icon\">search</s-icon-mat>\n </div>\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <!-- <div class=\"content-right\">\n <s-icon-mat class=\"icon cursor\">help_outline</s-icon-mat>\n </div> -->\n </div>\n </ng-container>\n\n <!-- case color -->\n <ng-container *ngSwitchCase=\"'color'\">\n <div\n class=\"content-input-main-626 content-input-main-color {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-left\">\n <input [readOnly]=\"readOnly\" #color [id]=\"name\" [name]=\"name\" type=\"color\" [disabled]=\"disabled\" [(ngModel)]=\"inputText\"\n (ngModelChange)=\"onTextChange()\" class=\"content-left--input\">\n </div>\n <div class=\"content-center\" (click)=\"!this.readOnly ? this.color.click() : null\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [type]=\"text\" \n autocomplete=\"off\" \n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n [disabled]=\"disabled\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case date -->\n <ng-container *ngSwitchCase=\"'date'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n (ngModelChange)=\"onTextChangeVal($event)\"\n [ngModel]=\"inputText\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case time -->\n <ng-container *ngSwitchCase=\"'time'\">\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [id]=\"id ? id : ''\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n (ngModelChange)=\"onTextChangeVal($event)\"\n [ngModel]=\"inputText\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n <!-- case number -->\n <ng-container *ngSwitchCase=\"'number'\">\n <div class=\"d-flex align-center\">\n <div class=\"content-left mr-1\">\n <s-button [disabled]=\"disabled\" (click)=\"numberDecrease()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>remove</s-icon-mat></s-button>\n </div>\n <div class=\"content-input-main-626 content-input-main-text content-input-main-number {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}} w-100\">\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : ''\" \n #typeNumber \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\"\n [max]=\"max\"\n [min]=\"min\"\n [step]=\"step\"\n >\n </div>\n\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n <div class=\"content-left ml-1\">\n <s-button [disabled]=\"disabled\" (click)=\"numberIncrement()\" [size]=\"size\" [pill]=\"true\" [invert]=\"true\" class=\"button-input-626\"><s-icon-mat>add</s-icon-mat></s-button>\n </div>\n </div>\n </ng-container>\n\n <!-- case range -->\n <ng-container *ngSwitchCase=\"'range'\">\n <div class=\"content-input-main-range {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <div class=\"tooltip tooltip-{{disabled}}\" #tooltipContainer>\n <input\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n #rangeField\n [readOnly]=\"readOnly\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [id]=\"id\" \n [name]=\"name\" \n autocomplete=\"off\"\n [placeholder]=\"placeHolder\"\n [(ngModel)]=\"inputText\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n (mousemove)=\"changeRange(rangeField.value)\"\n (ngModelChange)=\"onTextChange()\"\n (input)=\"updateTooltip(rangeField.value)\"\n >\n <span class=\"tooltiptext\" #tooltip>{{ tooltipValue }}</span>\n </div>\n </div>\n </ng-container>\n\n <!-- case default -->\n <ng-container *ngSwitchDefault>\n <div\n class=\"content-input-main-626 content-input-main-text {{size}} theme-{{theme}} {{classAdd}} {{disabledstyle}}\">\n <!-- <div class=\"content-left\">\n <s-icon-mat class=\"icon\">email</s-icon-mat>\n </div> -->\n <div class=\"content-center\">\n <input \n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n [readOnly]=\"readOnly\" \n [id]=\"id ? id : 'generic'\" \n [disabled]=\"disabled\" \n [type]=\"type\" \n [name]=\"name\" autocomplete=\"off\"\n [placeholder]=\"placeHolder\" \n [(ngModel)]=\"inputText\" \n (ngModelChange)=\"onTextChange()\">\n </div>\n <div *ngIf=\"theme != 'default'\" class=\"content-right\">\n <s-icon-mat [type]=\"inconSymbol?'symbol':'icon'\" class=\"icon report\">{{iconName}}</s-icon-mat>\n </div>\n\n <div *ngIf=\"theme == 'default' && help\" class=\"content-right\">\n <s-icon-mat (click)=\"clickIcon()\" class=\"icon cursor\">help_outline</s-icon-mat>\n </div>\n </div>\n </ng-container>\n\n</ng-container>", styles: [".content-input-main-626:has(input:focus){border:1px solid var(--primary-600);box-shadow:0 0 0 4px #0091fe26,0 1px 2px #1018280d}.content-input-main-626.theme-green:has(input:focus){border:1px solid var(--green-500);box-shadow:0 0 0 4px #36b37e26,0 1px 2px #1018280d}.content-input-main-626.theme-yellow:has(input:focus){border:1px solid var(--yellow-500);box-shadow:0 0 0 4px #ffab0026,0 1px 2px #1018280d}.content-input-main-626.theme-red:has(input:focus){border:1px solid var(--red-500);box-shadow:0 0 0 4px #ff563026,0 1px 2px #1018280d}.content-input-main-626.sm input{height:22px;font-size:.75rem}.content-input-main-626.sm .icon{width:20px;cursor:default}.content-input-main-626.sm .icon span{font-size:1.2em;display:flex}.content-input-main-626{display:flex;border:1px solid var(--primary-500);border-radius:4px;padding:0 8px;margin:3px 0;background-color:var(--neutrals-1200)}.content-input-main-626 input{width:100%;border:0px;color:var(--secondary-600);writing-mode:unset;height:36px;font-size:inherit;background-color:var(--neutrals-1200)}.content-input-main-626 input:focus,.content-input-main-626 input:focus-visible{outline:none}.content-input-main-626 .icon{width:20px;cursor:default}.content-input-main-626 .icon span{display:flex}.content-input-main-626 .content-center{width:100%;background-color:var(--neutrals-1200)}.content-input-main-626 .content-left{display:flex;align-items:center;justify-content:space-evenly;margin-right:8px;color:var(--primary-600)}.content-input-main-626 .content-left--input{width:40px;padding:0}.content-input-main-626 .content-right{display:flex;align-items:center;justify-content:space-evenly;margin-left:8px;color:var(--secondary-600)}.content-input-main-626.disabled-active{background-color:var(--neutrals-1100);border-color:var(--neutrals-900);color:var(--neutrals-800)}.content-input-main-626.disabled-active input{background-color:var(--neutrals-1100);color:var(--neutrals-800)}.content-input-main-626.disabled-active .content-left{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active .content-right s-icon-mat span{color:var(--neutrals-800)!important}.content-input-main-626.disabled-active.content-input-main-url .content-left,.content-input-main-626.disabled-active.content-input-main-color .content-left{color:var(--neutrals-800)!important;border-right:1px solid var(--neutrals-900)}.content-input-main-626.theme-red{border:1px solid var(--red-500)}.content-input-main-626.theme-red .icon.report span{color:var(--red-600)}.content-input-main-626.theme-green{border:1px solid var(--green-500)}.content-input-main-626.theme-green .icon.report span{color:var(--green-600)}.content-input-main-626.theme-yellow{border:1px solid var(--yellow-500)}.content-input-main-626.theme-yellow .icon.report span{color:var(--yellow-600)}.content-input-main-626.content-input-main-password .content-right .icon span{color:var(--secondary-500)}.content-input-main-url .content-left,.content-input-main-color .content-left{border-right:1px solid var(--secondary-500);padding-right:8px;color:var(--secondary-500);font-size:.9rem;padding-left:8px}.content-input-main-url,.content-input-main-color{padding-left:0}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px var(--neutrals-1200) inset!important}.content-input-main-626.content-input-main-number input::-webkit-outer-spin-button,.content-input-main-626.content-input-main-number input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.content-input-main-626.content-input-main-number input[type=number]{-moz-appearance:textfield}.button-input-626{font-size:15px;font-weight:700}.content-input-main-range input{width:100%;height:36px;margin:0;-webkit-appearance:none}.content-input-main-range input[type=range]::-webkit-slider-runnable-track{border-radius:4px;height:8px}.content-input-main-range input[type=range]::-moz-range-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-track{appearance:none;background-color:var(--neutrals-1000)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-moz-range-progress{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-ms-fill-upper{appearance:none;background-color:var(--primary-600)!important;height:8px;border-radius:4px}.content-input-main-range input[type=range]::-webkit-slider-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200);margin-top:-8px}.content-input-main-range input[type=range]::-moz-range-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-ms-thumb{box-sizing:border-box;-webkit-appearance:none;border:unset;outline:unset;box-shadow:unset;width:24px;height:24px;border-radius:50%;border:3px solid var(--primary-600);background:var(--neutrals-1200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-moz-range-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-ms-thumb:hover{border:3px solid var(--primary-600);background:var(--primary-200)}.content-input-main-range input[type=range]::-webkit-slider-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-moz-range-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]::-ms-thumb:active{border:3px solid var(--primary-600);background:var(--primary-600);box-shadow:0 1px 2px #1018280d,0 0 0 4px #0091fe26}.content-input-main-range input[type=range]:disabled{filter:grayscale(1);opacity:.3;cursor:not-allowed}.tooltip{position:relative;display:inline-block;cursor:pointer;width:100%}.tooltip .tooltiptext{visibility:hidden;width:40px;background-color:var(--neutrals-1200);color:var(--secondary-600);font-weight:700;font-size:12px;text-align:center;border-radius:4px;padding:5px;position:absolute;z-index:1;bottom:100%;left:550%;transform:translate(-50%);box-shadow:0 0 16px #17386129}.tooltip-false:hover .tooltiptext{visibility:visible}.tooltip .tooltiptext:before{content:\"\";position:absolute!important;transform:rotate(45deg);height:10px;width:10px;bottom:-5px;background-color:var(--neutrals-1200);box-shadow:0 0 16px #17386129;left:40%}\n"] }]
298
- }], ctorParameters: () => [], propDecorators: { typeNumber: [{
299
- type: ViewChild,
300
- args: ['typeNumber']
301
- }], tooltipContainer: [{
302
- type: ViewChild,
303
- args: ['tooltipContainer', { static: false }]
304
- }], tooltip: [{
305
- type: ViewChild,
306
- args: ['tooltip', { static: false }]
307
- }], text: [{
308
- type: Input
309
- }], id: [{
310
- type: Input
311
- }], name: [{
312
- type: Input
313
- }], placeHolder: [{
314
- type: Input
315
- }], disabled: [{
316
- type: Input
317
- }], max: [{
318
- type: Input
319
- }], min: [{
320
- type: Input
321
- }], step: [{
322
- type: Input
323
- }], readOnly: [{
324
- type: Input
325
- }], theme: [{
326
- type: Input
327
- }], type: [{
328
- type: Input
329
- }], classAdd: [{
330
- type: Input
331
- }], help: [{
332
- type: Input
333
- }], size: [{
334
- type: Input
335
- }], rangeUnity: [{
336
- type: Input
337
- }], textChangeEvent: [{
338
- type: Output
339
- }], clickHelpIconEvent: [{
340
- type: Output
341
- }], blur: [{
342
- type: Output
343
- }], focus: [{
344
- type: Output
345
- }] } });
346
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1pbnB1dC10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL2lucHV0L2NvbXBvbmVudHMvaW5wdXQtdGV4dC9zLWlucHV0LXRleHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2lkZXN5cy1nZW5lcmljLXVpL3NyYy9saWIvaW5wdXQvY29tcG9uZW50cy9pbnB1dC10ZXh0L3MtaW5wdXQtdGV4dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlekUsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsSUFDSSxLQUFLLEtBQWEsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLEtBQUssQ0FBQyxHQUFXO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzNGLENBQUM7SUFBQSxDQUFDO0lBQ0YsSUFDSSxJQUFJLEtBQWEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QyxJQUFJLElBQUksQ0FBQyxHQUFXO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLE9B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QkFEUixLQUFLO2dCQU1GLElBQUk7c0JBRFAsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFhSSxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3MtaW5wdXQtdGV4dCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zLWlucHV0LXRleHQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zLWlucHV0LXRleHQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTSW5wdXRUZXh0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNJbnB1dFRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQ29udHJvbFZhbHVlQWNjZXNzb3IgLCBBZnRlclZpZXdJbml0ICB7XG4gIFxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcbiAgb25Ub3VjaCA9ICgpID0+IHsgfTtcblxuICAvL1JFRiBQQVJBIFRZUEUgTlVNQkVSXG4gIEBWaWV3Q2hpbGQoJ3R5cGVOdW1iZXInKSB0eXBlTnVtYmVyOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkIDtcbiAgLy9SRUYgUEFSQSBUWVBFIFJBTkdFXG4gIEBWaWV3Q2hpbGQoJ3Rvb2x0aXBDb250YWluZXInLCB7IHN0YXRpYzogZmFsc2UgfSkgdG9vbHRpcENvbnRhaW5lcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG5cbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGlkOiBhbnkgPSAgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCk7XG4gIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwbGFjZUhvbGRlcj86IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXg/OiBudW1iZXIgO1xuICBASW5wdXQoKSBtaW46IG51bWJlciA9IDA7XG4gIEBJbnB1dCgpIHN0ZXA6IG51bWJlciA9IDE7XG4gIEBJbnB1dCgpIHJlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpXG4gIGdldCB0aGVtZSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fdGhlbWU7IH1cbiAgc2V0IHRoZW1lKHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGhlbWUgPSBbJ2RlZmF1bHQnLCAnZ3JlZW4nLCAneWVsbG93JywgJ3JlZCddLmluZGV4T2YodmFsKSAhPSAtMSA/IHZhbCA6ICdkZWZhdWx0JztcbiAgfTtcbiAgQElucHV0KClcbiAgZ2V0IHR5cGUoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH1cbiAgc2V0IHR5cGUodmFsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gWyd0ZXh0JywgJ3Bhc3N3b3JkJywgJ2VtYWlsJywgJ3Bob25lJywgJ3VybCcsICdzZWFyY2gnLCAnbnVtYmVyJywgJ2NvbG9yJywgJ2RhdGUnLCAndGltZScgLCAncmFuZ2UnXS5pbmRleE9mKHZhbCkgIT0gLTEgPyB2YWwgOiAndGV4dCc7XG4gIH07XG4gIEBJbnB1dCgpIGNsYXNzQWRkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaGVscDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyA9ICdtZCc7XG4gIEBJbnB1dCgpIHJhbmdlVW5pdHk6IHN0cmluZyA9ICcnO1xuXG4gIGlucHV0VGltZW91dD86IGFueTtcbiAgaW5wdXRUZXh0OiBzdHJpbmcgPSAnJztcbiAgaW5wdXROdW1iZXI6IG51bWJlciA9IDA7XG4gIF90eXBlOiBzdHJpbmcgPSAndGV4dCc7XG4gIF90aGVtZTogc3RyaW5nID0gJ2RlZmF1bHQnO1xuICBkaXNhYmxlZHN0eWxlOiBzdHJpbmcgPSAnJztcbiAgdmlzaWJpbGl0eSA9IGZhbHNlO1xuICBpY29uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpbmNvblN5bWJvbDogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sdGlwVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIEBPdXRwdXQoKSB0ZXh0Q2hhbmdlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNsaWNrSGVscEljb25FdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGJsdXIgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudCgpO1xuICB9XG5cbiAgLy8gSW5pY2lhbGl6YSBsb3MgdmFsb3JlcyBkZWwgY29tcG9uZW50ZVxuICBwcml2YXRlIGluaXRpYWxpemVDb21wb25lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudGV4dCAmJiB0aGlzLnR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLmlucHV0TnVtYmVyID0gTnVtYmVyKHRoaXMudGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3R5cGUgPT09ICdjb2xvcicgJiYgdGhpcy50ZXh0ID09PSAnJykge1xuICAgICAgdGhpcy50ZXh0ID0gJyMwMDAwMDAnO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy50ZXh0O1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWRzdHlsZSA9ICdkaXNhYmxlZC1hY3RpdmUnO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdjb2xvcicgJiYgdGhpcy5yZWFkT25seSkge1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgdGhpcy5sb2FkVGhlbWUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvL0FqdXN0ZXMgVHlwZSBSYW5nZVxuICAgIGlmKHRoaXMudHlwZSA9PT0gJ3JhbmdlJyl7XG4gICAgICB0aGlzLnJhbmdlT25Mb2FkKClcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3RoZW1lJ10pIHtcbiAgICAgIHRoaXMubG9hZFRoZW1lKCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3RleHQnXSkge1xuICAgICAgdGhpcy51cGRhdGVUZXh0KCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10gfHwgY2hhbmdlc1sncmVhZE9ubHknXSkge1xuICAgICAgdGhpcy51cGRhdGVEaXNhYmxlZEFuZFJlYWRPbmx5U3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICAvLyBBY3R1YWxpemEgZWwgdGV4dG8geSBsb3MgbsO6bWVyb3NcbiAgcHJpdmF0ZSB1cGRhdGVUZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRleHQgJiYgdGhpcy50eXBlID09PSAnbnVtYmVyJykge1xuICAgICAgdGhpcy5pbnB1dE51bWJlciA9IE51bWJlcih0aGlzLnRleHQpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl90eXBlID09PSAnY29sb3InICYmIHRoaXMudGV4dCA9PT0gJycpIHtcbiAgICAgIHRoaXMudGV4dCA9ICcjMDAwMDAwJztcbiAgICB9XG5cbiAgICB0aGlzLmlucHV0VGV4dCA9IHRoaXMudGV4dDtcbiAgfVxuXG4gIC8vIEFjdHVhbGl6YSBlbCBlc3RhZG8gZGlzYWJsZWQgeSByZWFkT25seVxuICBwcml2YXRlIHVwZGF0ZURpc2FibGVkQW5kUmVhZE9ubHlTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkc3R5bGUgPSB0aGlzLmRpc2FibGVkID8gJ2Rpc2FibGVkLWFjdGl2ZScgOiAnJztcblxuICAgIC8vIFNpIGVsIGlucHV0IGVzIGRlIHRpcG8gY29sb3IgeSBlc3TDoSBlbiBtb2RvIGRlIHNvbG8gbGVjdHVyYSwgc2UgZGVzaGFiaWxpdGEuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2NvbG9yJyAmJiB0aGlzLnJlYWRPbmx5KSB7XG4gICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgbG9hZFRoZW1lKCkge1xuICAgIHN3aXRjaCAodGhpcy50aGVtZSkge1xuICAgICAgY2FzZSBcImRlZmF1bHRcIjpcbiAgICAgICAgdGhpcy5pY29uTmFtZSA9IFwiXCJcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwicmVkXCI6XG4gICAgICAgIHRoaXMuaWNvbk5hbWUgPSBcImVycm9yX291dGxpbmVcIlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJncmVlblwiOlxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJjaGVja19jaXJjbGVfb3V0bGluZVwiXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcInllbGxvd1wiOlxuICAgICAgICB0aGlzLmluY29uU3ltYm9sID0gdHJ1ZVxuICAgICAgICB0aGlzLmljb25OYW1lID0gXCJ3YXJuaW5nXCJcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuaWNvbk5hbWUgPSBcIlwiXG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIG9uVGV4dENoYW5nZSgpIHtcbiAgICBpZih0aGlzLnR5cGUgPT09ICdudW1iZXInKXtcbiAgICAgIHRoaXMudXBkYXRlTnVtYmVyKHRoaXMuaW5wdXRUZXh0KVxuICAgIH1cblxuICAgIHRoaXMub25Ub3VjaCgpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dFRleHQpO1xuXG4gICAgaWYgKHRoaXMuaW5wdXRUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbnB1dFRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRleHRDaGFuZ2VFdmVudC5uZXh0KHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9LCA1MDAsIG51bGwpO1xuICB9XG5cbiAgb25UZXh0Q2hhbmdlVmFsKHZhbDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRUaW1lb3V0KSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5pbnB1dFRpbWVvdXQpO1xuICAgIH1cblxuICAgIHRoaXMuaW5wdXRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHZhbCk7XG4gICAgICAgIHRoaXMudGV4dENoYW5nZUV2ZW50Lm5leHQodmFsKTtcbiAgICAgICAgdGhpcy5pbnB1dFRleHQgPSB2YWw7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsKTtcbiAgICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XG4gICAgICB9XG4gICAgfSwgNTAwLCBudWxsKTtcbiAgfVxuXG4gIGNsaWNrSWNvbigpIHtcbiAgICB0aGlzLmNsaWNrSGVscEljb25FdmVudC5uZXh0KCk7XG4gIH1cblxuICBjb2xvckNsaWNrKCkge1xuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMubmFtZSk/LmNsaWNrKCk7XG4gIH1cblxuICAvL0ZVTkNJT05FUyBQQVJBIFRZUEUgTlVNQkVSIFxuICBudW1iZXJEZWNyZWFzZSgpe1xuICAgIGlmKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRPbmx5KXtcbiAgICAgIGlmKHRoaXMubWluIDwgdGhpcy5pbnB1dE51bWJlcil7XG4gICAgICAgIHRoaXMuaW5wdXROdW1iZXItPXRoaXMuc3RlcFxuICAgICAgfVxuICAgICAgdGhpcy5pbnB1dFRleHQgPSB0aGlzLmlucHV0TnVtYmVyLnRvU3RyaW5nKClcbiAgICAgIHRoaXMub25Ub3VjaCgpO1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0VGV4dCk7XG4gICAgICB0aGlzLnRleHRDaGFuZ2VFdmVudC5uZXh0KHRoaXMuaW5wdXRUZXh0KTtcbiAgICB9XG4gIH1cblxuICBudW1iZXJJbmNyZW1lbnQoKXtcbiAgICBpZighdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5yZWFkT25seSl7XG4gICAgICBpZih0aGlzLm1heCl7XG4gICAgICAgIGlmKHRoaXMubWF4ID4gdGhpcy5pbnB1dE51bWJlcil7XG4gICAgICAgICAgdGhpcy5pbnB1dE51bWJlcis9dGhpcy5zdGVwXG4gICAgICAgIH1lbHNle1xuICAgICAgICAgIHRoaXMuaW5wdXROdW1iZXIgPSB0aGlzLm1heFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZighdGhpcy5tYXgpe1xuICAgICAgICB0aGlzLmlucHV0TnVtYmVyKz10aGlzLnN0ZXBcbiAgICAgIH1cbiAgICAgIHRoaXMuaW5wdXRUZXh0ID0gdGhpcy5pbnB1dE51bWJlci50b1N0cmluZygpXG4gICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5pbnB1dFRleHQpO1xuICAgICAgdGhpcy50ZXh0Q2hhbmdlRXZlbnQubmV4dCh0aGlzLmlucHV0VGV4dCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlTnVtYmVyKHZhbHVlOmFueSl7XG4gICAgbGV0IHZhbHVlMiA9IHZhbHVlXG4gICAgaWYodGhpcy5tYXgpXG4gICAgaWYodmFsdWUgPiB0aGlzLm1heCl7XG4gICAgICB2YWx1ZTIgPSB0aGlzLm1heFxuICAgIH1cbiAgICBpZih2YWx1ZSA8IHRoaXMubWluKXtcbiAgICAgIHZhbHVlMiA9IHRoaXMubWluXG4gICAgfVxuXG4gICAgdGhpcy5pbnB1dFRleHQgPSB2YWx1ZTIudG9TdHJpbmcoKVxuICAgIHRoaXMuaW5wdXROdW1iZXIgPSBOdW1iZXIodmFsdWUyKTtcbiAgICBpZih0aGlzLnR5cGVOdW1iZXIpXG4gICAgdGhpcy50eXBlTnVtYmVyLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmlucHV0TnVtYmVyXG4gICAgdGhpcy5vblRvdWNoKCk7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmlucHV0TnVtYmVyKTtcbiAgICB0aGlzLnRleHRDaGFuZ2VFdmVudC5uZXh0KHRoaXMuaW5wdXRUZXh0KTtcbiAgICBcbiAgfSBcbiAgLy9GSU4gRlVOQ0lPTkVTIFBBUkEgVFlQRSBOVU1CRVIgXG4gIFxuICAvL0ZVTkNJT05FUyBQQVJBIFRZUEUgUkFOR0UgXG4gIHJhbmdlT25Mb2FkKCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAvL1JBTkdPIFRPVEFMXG4gICAgICBjb25zdCByYW5nZU1heCA9IHRoaXMubWF4ID8gdGhpcy5tYXggOiAxMDA7XG4gICAgICAvL0NBTENVTE8gTEEgQU1QTElUVUQgUEFSQSBQT0RFUiBQT1NJQ0lPTkFSIEFMIDUwJSBQT1IgREVGRUNUT1xuICAgICAgbGV0IGFtcGxpdHVkVG90YWwgPSByYW5nZU1heCAtIHRoaXMubWluXG4gICAgICBsZXQgcG9yY2lvbiA9IChhbXBsaXR1ZFRvdGFsICogNTApIC8gMTAwIFxuICAgICAgLy8gSU5JQ0lBTElaQSBBTCA1MCUgQ1VBTkRPIE5PIEhBWSBWQUxPUiBQUkVERUZJTklET1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy50ZXh0ID09ICcnID8gdGhpcy5taW4gKyBwb3JjaW9uIDogdGhpcy50ZXh0XG4gICAgICB2YWx1ZSA9IHRoaXMuaW5wdXRUZXh0ID09ICcnID8gdGhpcy5taW4gKyBwb3JjaW9uIDogdGhpcy5pbnB1dFRleHRcbiAgICAgIC8vREVGSU5PIEVMIFRPT1RMVElQXG4gICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IHRoaXMudGV4dCArIHRoaXMucmFuZ2VVbml0eTtcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgIC8vU0kgRVMgQ0hST01FIEFQTElDTyBFTCBGSVhcbiAgICAgIGNvbnN0IGlzQ2hyb21lID0gL0Nocm9tZS8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSAmJiAvR29vZ2xlIEluYy8udGVzdChuYXZpZ2F0b3IudmVuZG9yKTtcbiAgICAgIGlmKGlzQ2hyb21lKSB7XG4gICAgICAgIC8vQ0FMQ0NVTE8gRUwgJSBBIEFTSUdOQVJcbiAgICAgICAgbGV0IHBvcmNlbnRhamUgPSAoKE51bWJlcih2YWx1ZSkgLSB0aGlzLm1pbikgLyAocmFuZ2VNYXggLSB0aGlzLm1pbikpICogMTAwXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnbWFyZ2luLXRvcCcgLCAnMTRweCcpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKT8uc3R5bGUuc2V0UHJvcGVydHkoJ21hcmdpbi1ib3R0b20nICwgJzE0cHgnKTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdib3JkZXItcmFkaXVzJyAsICc0cHgnKTtcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5pZCk/LnN0eWxlLnNldFByb3BlcnR5KCdoZWlnaHQnICwgJzhweCcpO1xuICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKT8uc3R5bGUuc2V0UHJvcGVydHkoJ2JhY2tncm91bmQnICwgJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwgdmFyKC0tcHJpbWFyeS02MDApIDAlLCB2YXIoLS1wcmltYXJ5LTYwMCkgJytwb3JjZW50YWplKyclLCB2YXIoLS1uZXV0cmFscy0xMDAwKSAnK3BvcmNlbnRhamUrJyUsIHZhcigtLW5ldXRyYWxzLTEwMDApIDEwMCUpJyk7XG4gICAgICB9O1xuICAgICAgXG4gICAgfSwgMCk7XG4gIH1cblxuICAvL0ZVTkNJT04gUEFSQSBDSFJPTUUgQ1VBTkRPIFNFIERFU0xJWkEgRUwgU0xJREUgRlVOQ0lPTkUgQ09SUkVDVEFNRU5URVxuICBjaGFuZ2VSYW5nZSh2YWx1ZTphbnkpe1xuICAgIGlmKHRoaXMudHlwZSA9PT0gJ3JhbmdlJyl7XG4gICAgICBjb25zdCBpc0Nocm9tZSA9IC9DaHJvbWUvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiYgL0dvb2dsZSBJbmMvLnRlc3QobmF2aWdhdG9yLnZlbmRvcik7XG4gICAgICBjb25zdCByYW5nZU1heCA9IHRoaXMubWF4ID8gdGhpcy5tYXggOiAxMDA7XG4gICAgICBpZihpc0Nocm9tZSkge1xuICAgICAgICBsZXQgcG9yY2VudGFqZSA9ICgodmFsdWUgLSB0aGlzLm1pbikgLyAocmFuZ2VNYXggLSB0aGlzLm1pbikpICogMTAwXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuaWQpPy5zdHlsZS5zZXRQcm9wZXJ0eSgnYmFja2dyb3VuZCcgLCAnbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCB2YXIoLS1wcmltYXJ5LTYwMCkgMCUsIHZhcigtLXByaW1hcnktNjAwKSAnK3BvcmNlbnRhamUrJyUsIHZhcigtLW5ldXRyYWxzLTEwMDApICcrcG9yY2VudGFqZSsnJSwgdmFyKC0tbmV1dHJhbHMtMTAwMCkgMTAwJSknKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy9GVU5DSU9OIFFVRSBBQ1RVQUxJWkEgRUwgVE9PTFRJUCBDVUFORE8gU0UgREVTTElaQSBFTCBTTElERVxuICB1cGRhdGVUb29sdGlwKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZih0aGlzLnRvb2x0aXBDb250YWluZXIgJiYgdGhpcy50b29sdGlwKXtcbiAgICAgIGNvbnN0IHJhbmdlV2lkdGggPSB0aGlzLnRvb2x0aXBDb250YWluZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIGNvbnN0IHJhbmdlTWF4ID0gdGhpcy5tYXggPyB0aGlzLm1heCA6IDEwMDtcbiAgICAgIGxldCBwb3JjZW50YWplID0gKChOdW1iZXIodmFsdWUpIC0gdGhpcy5taW4pIC8gKHJhbmdlTWF4IC0gdGhpcy5taW4pKSAqIDEwMFxuICAgICAgbGV0IGFqdXN0ZSA9IHBvcmNlbnRhamUgKiByYW5nZVdpZHRoIC8gMTAwO1xuICAgICAgdGhpcy50b29sdGlwLm5hdGl2ZUVsZW1lbnQuc3R5bGUubGVmdCA9IGAke2FqdXN0ZX1weGA7XG4gICAgICB0aGlzLnRvb2x0aXBWYWx1ZSA9IHZhbHVlICsgdGhpcy5yYW5nZVVuaXR5O1xuICAgIH1cbiAgfVxuICAvL0ZJTiBGVU5DSU9ORVMgUEFSQSBUWVBFIFJBTkdFXG5cbiAgLy9GVU5DSU9ORVMgUEFSQSBRVUUgRlVOQ0lPTkUgRk9STSBCVUlMREVSXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRUZXh0ID0gdmFsdWUgPz8gXCJcIjtcbiAgICB0aGlzLmlucHV0TnVtYmVyID0gdmFsdWUgPz8gMDtcbiAgICBpZih0aGlzLnR5cGUgPT0gJ3JhbmdlJyl7XG4gICAgICB0aGlzLnJhbmdlT25Mb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaCA9IGZuO1xuICB9XG5cbiAgb25CbHVyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmJsdXIubmV4dChldmVudCk7XG4gIH1cblxuICBvbkZvY3VzKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzLm5leHQoZXZlbnQpO1xuICB9XG59IiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICAgIDwhLS0gRWwgc3dpdGNoIGNhc2UgY29uIGNhZGEgY2FzbyBwb3IgaW5wdXQgIFsndGV4dCcsICdwYXNzd29yZCcsICdlbWFpbCcgLCAncGhvbmUnICwgJ3VybCcgLCAnc2VhcmNoJ10tLT5cblxuICAgIDwhLS0gY2FzZSB0ZXh0IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIid0ZXh0J1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+ZW1haWw8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcbiAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIiBcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBjYXNlIHBhc3N3b3JkIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidwYXNzd29yZCdcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi1wYXNzd29yZCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+dnBuX2tleTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInt7dmlzaWJpbGl0eSA/ICd0ZXh0JyA6ICdwYXNzd29yZCd9fVwiIFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVxuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gY3Vyc29yXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInZpc2liaWxpdHkgPSAhdmlzaWJpbGl0eVwiPnt7dmlzaWJpbGl0eSA/ICd2aXNpYmlsaXR5JyA6XG4gICAgICAgICAgICAgICAgICAgICd2aXNpYmlsaXR5X29mZid9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gY2FzZSBlbWFpbCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZW1haWwnXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tZW1haWwge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IGNsYXNzPVwiaWNvblwiPm1haWxfb3V0bGluZTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICA8IS0tIGNhc2UgcGhvbmUgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ3Bob25lJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXBob25lIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj5waG9uZTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAgXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiIFxuICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgPCEtLSBjYXNlIHVybCAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndXJsJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXVybCB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgaHR0cDovL1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxuICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCAoY2xpY2spPVwiY2xpY2tJY29uKClcIiBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICA8IS0tIGNhc2Ugc2VhcmNoIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidzZWFyY2gnXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tc2VhcmNoIHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb25cIj5zZWFyY2g8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBjbGFzcz1cImljb24gY3Vyc29yXCI+aGVscF9vdXRsaW5lPC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gY2FzZSBjb2xvciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInY29sb3InXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY29udGVudC1pbnB1dC1tYWluLTYyNiBjb250ZW50LWlucHV0LW1haW4tY29sb3Ige3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiAjY29sb3IgW2lkXT1cIm5hbWVcIiBbbmFtZV09XCJuYW1lXCIgdHlwZT1cImNvbG9yXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiIGNsYXNzPVwiY29udGVudC1sZWZ0LS1pbnB1dFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIiAoY2xpY2spPVwiIXRoaXMucmVhZE9ubHkgPyB0aGlzLmNvbG9yLmNsaWNrKCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IFxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0ZXh0XCIgXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIiBcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIGNhc2UgZGF0ZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInZGF0ZSdcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgIFxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICcnXCIgXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIFxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2VIb2xkZXJcIiBcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlVmFsKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJpbnB1dFRleHRcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lICE9ICdkZWZhdWx0J1wiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIGNhc2UgdGltZSAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGltZSdcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IHt7c2l6ZX19IHRoZW1lLXt7dGhlbWV9fSB7e2NsYXNzQWRkfX0ge3tkaXNhYmxlZHN0eWxlfX1cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCBcbiAgICAgICAgICAgICAgICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkID8gaWQgOiAnJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZUhvbGRlclwiIFxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2VWYWwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImlucHV0VGV4dFwiPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgW3R5cGVdPVwiaW5jb25TeW1ib2w/J3N5bWJvbCc6J2ljb24nXCIgY2xhc3M9XCJpY29uIHJlcG9ydFwiPnt7aWNvbk5hbWV9fTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRoZW1lID09ICdkZWZhdWx0JyAmJiBoZWxwXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gY2FzZSBudW1iZXIgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ251bWJlcidcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWxlZnQgbXItMVwiPlxuICAgICAgICAgICAgICAgIDxzLWJ1dHRvbiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiAoY2xpY2spPVwibnVtYmVyRGVjcmVhc2UoKVwiIFtzaXplXT1cInNpemVcIiBbcGlsbF09XCJ0cnVlXCIgW2ludmVydF09XCJ0cnVlXCIgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCI+PHMtaWNvbi1tYXQ+cmVtb3ZlPC9zLWljb24tbWF0Pjwvcy1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWlucHV0LW1haW4tNjI2IGNvbnRlbnQtaW5wdXQtbWFpbi10ZXh0IGNvbnRlbnQtaW5wdXQtbWFpbi1udW1iZXIge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fSB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cIm9uQmx1cigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiICBcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCJpZCA/IGlkIDogJydcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICN0eXBlTnVtYmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJ0eXBlXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImlucHV0VGV4dFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25UZXh0Q2hhbmdlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgIT0gJ2RlZmF1bHQnXCIgY2xhc3M9XCJjb250ZW50LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IFt0eXBlXT1cImluY29uU3ltYm9sPydzeW1ib2wnOidpY29uJ1wiIGNsYXNzPVwiaWNvbiByZXBvcnRcIj57e2ljb25OYW1lfX08L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGhlbWUgPT0gJ2RlZmF1bHQnICYmIGhlbHBcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgKGNsaWNrKT1cImNsaWNrSWNvbigpXCIgY2xhc3M9XCJpY29uIGN1cnNvclwiPmhlbHBfb3V0bGluZTwvcy1pY29uLW1hdD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtbGVmdCBtbC0xXCI+XG4gICAgICAgICAgICAgICAgPHMtYnV0dG9uIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJudW1iZXJJbmNyZW1lbnQoKVwiIFtzaXplXT1cInNpemVcIiBbcGlsbF09XCJ0cnVlXCIgW2ludmVydF09XCJ0cnVlXCIgY2xhc3M9XCJidXR0b24taW5wdXQtNjI2XCI+PHMtaWNvbi1tYXQ+YWRkPC9zLWljb24tbWF0Pjwvcy1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8IS0tIGNhc2UgcmFuZ2UgLS0+XG4gICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidyYW5nZSdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi1yYW5nZSB7e3NpemV9fSB0aGVtZS17e3RoZW1lfX0ge3tjbGFzc0FkZH19IHt7ZGlzYWJsZWRzdHlsZX19XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHRpcCB0b29sdGlwLXt7ZGlzYWJsZWR9fVwiICN0b29sdGlwQ29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAoZm9jdXMpPVwib25Gb2N1cygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAjcmFuZ2VGaWVsZFxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicmVhZE9ubHlcIiBcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInR5cGVcIiBcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cImlkXCIgXG4gICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIiBcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCJcbiAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFRleHRcIlxuICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pblwiXG4gICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4XCJcbiAgICAgICAgICAgICAgICAgICAgW3N0ZXBdPVwic3RlcFwiXG4gICAgICAgICAgICAgICAgICAgIChtb3VzZW1vdmUpPVwiY2hhbmdlUmFuZ2UocmFuZ2VGaWVsZC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblRleHRDaGFuZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJ1cGRhdGVUb29sdGlwKHJhbmdlRmllbGQudmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRvb2x0aXB0ZXh0XCIgI3Rvb2x0aXA+e3sgdG9vbHRpcFZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPCEtLSBjYXNlIGRlZmF1bHQgLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImNvbnRlbnQtaW5wdXQtbWFpbi02MjYgY29udGVudC1pbnB1dC1tYWluLXRleHQge3tzaXplfX0gdGhlbWUte3t0aGVtZX19IHt7Y2xhc3NBZGR9fSB7e2Rpc2FibGVkc3R5bGV9fVwiPlxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29udGVudC1sZWZ0XCI+XG4gICAgICAgICAgICAgICAgPHMtaWNvbi1tYXQgY2xhc3M9XCJpY29uXCI+ZW1haWw8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJyZWFkT25seVwiIFxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWQgPyBpZCA6ICdnZW5lcmljJ1wiIFxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiIFxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJuYW1lXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlSG9sZGVyXCIgXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRUZXh0XCIgXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uVGV4dENoYW5nZSgpXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSAhPSAnZGVmYXVsdCdcIiBjbGFzcz1cImNvbnRlbnQtcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8cy1pY29uLW1hdCBbdHlwZV09XCJpbmNvblN5bWJvbD8nc3ltYm9sJzonaWNvbidcIiBjbGFzcz1cImljb24gcmVwb3J0XCI+e3tpY29uTmFtZX19PC9zLWljb24tbWF0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0aGVtZSA9PSAnZGVmYXVsdCcgJiYgaGVscFwiIGNsYXNzPVwiY29udGVudC1yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxzLWljb24tbWF0IChjbGljayk9XCJjbGlja0ljb24oKVwiIGNsYXNzPVwiaWNvbiBjdXJzb3JcIj5oZWxwX291dGxpbmU8L3MtaWNvbi1tYXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbjwvbmctY29udGFpbmVyPiJdfQ==
@@ -1,6 +0,0 @@
1
- export * from './s-login-event';
2
- export * from './s-login.component';
3
- export * from './s-login.module';
4
- export * from './s-login-model';
5
- export * from './s-login-errors-model';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9sb2dpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsd0JBQXdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3MtbG9naW4tZXZlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zLWxvZ2luLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3MtbG9naW4ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcy1sb2dpbi1tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3MtbG9naW4tZXJyb3JzLW1vZGVsJyJdfQ==
@@ -1,3 +0,0 @@
1
- export class SLoginErrorsModel {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1sb2dpbi1lcnJvcnMtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaWRlc3lzLWdlbmVyaWMtdWkvc3JjL2xpYi9sb2dpbi9zLWxvZ2luLWVycm9ycy1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLE9BQU8saUJBQWlCO0NBTTdCIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgY2xhc3MgU0xvZ2luRXJyb3JzTW9kZWwge1xuICAgIHJlcXVpcmVkPzogc3RyaW5nO1xuICAgIG1heGxlbmd0aD86IHN0cmluZztcbiAgICBwYXR0ZXJuPzogc3RyaW5nO1xuICAgIGVycm9yRGVmYXVsdD86IHN0cmluZztcbiAgICBnbG9iYWxFcnJvcj86IHN0cmluZztcbn1cblxuIl19
@@ -1,3 +0,0 @@
1
- export class SLoginEvent {
2
- }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicy1sb2dpbi1ldmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpZGVzeXMtZ2VuZXJpYy11aS9zcmMvbGliL2xvZ2luL3MtbG9naW4tZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7Q0FHdkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU0xvZ2luRXZlbnQge1xuICAgIHVzZXIhOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQhOiBzdHJpbmc7XG59XG4iXX0=