coer-elements 0.0.64 → 0.0.65

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. package/components/lib/coer-accordion/coer-accordion.component.d.ts +1 -1
  2. package/components/lib/coer-datebox/coer-datebox.component.d.ts +49 -0
  3. package/components/lib/coer-filebox/coer-filebox.component.d.ts +1 -1
  4. package/components/lib/coer-grid/coer-grid.extension.d.ts +2 -2
  5. package/components/lib/coer-modal/coer-modal.component.d.ts +1 -1
  6. package/components/lib/components.module.d.ts +37 -33
  7. package/components/public-api.d.ts +1 -0
  8. package/fesm2022/coer-elements-components.mjs +256 -93
  9. package/fesm2022/coer-elements-components.mjs.map +1 -1
  10. package/fesm2022/coer-elements-directives.mjs +14 -12
  11. package/fesm2022/coer-elements-directives.mjs.map +1 -1
  12. package/fesm2022/coer-elements-pipes.mjs +16 -16
  13. package/fesm2022/coer-elements-pipes.mjs.map +1 -1
  14. package/fesm2022/coer-elements-tools.mjs +20 -14
  15. package/fesm2022/coer-elements-tools.mjs.map +1 -1
  16. package/fesm2022/coer-elements.mjs +4 -4
  17. package/fesm2022/coer-elements.mjs.map +1 -1
  18. package/package.json +1 -15
  19. package/styles/angular-material.scss +18 -13
  20. package/styles/bootstrap.scss +1 -6
  21. package/styles/coer-elements.css +993 -2866
  22. package/styles/colors.scss +50 -60
  23. package/styles/index.scss +9 -9
  24. package/styles/layout.scss +10 -0
  25. package/styles/scroll-bar.scss +5 -5
  26. package/tools/lib/date-time.class.d.ts +3 -1
  27. package/tools/lib/page.class.d.ts +1 -1
  28. package/tools/lib/section.class.d.ts +1 -1
  29. package/tools/lib/tools.d.ts +9 -9
  30. package/esm2022/coer-elements.mjs +0 -5
  31. package/esm2022/components/coer-elements-components.mjs +0 -5
  32. package/esm2022/components/lib/coer-accordion/coer-accordion.component.mjs +0 -53
  33. package/esm2022/components/lib/coer-button/coer-button.component.mjs +0 -138
  34. package/esm2022/components/lib/coer-checkbox/coer-checkbox.component.mjs +0 -83
  35. package/esm2022/components/lib/coer-filebox/coer-filebox.component.mjs +0 -102
  36. package/esm2022/components/lib/coer-form/coer-form.component.mjs +0 -107
  37. package/esm2022/components/lib/coer-grid/coer-grid.component.mjs +0 -512
  38. package/esm2022/components/lib/coer-grid/coer-grid.extension.mjs +0 -409
  39. package/esm2022/components/lib/coer-list/coer-list.component.mjs +0 -130
  40. package/esm2022/components/lib/coer-modal/coer-modal.component.mjs +0 -107
  41. package/esm2022/components/lib/coer-numberbox/coer-numberbox.component.mjs +0 -258
  42. package/esm2022/components/lib/coer-page-title/coer-page-title.component.mjs +0 -44
  43. package/esm2022/components/lib/coer-selectbox/coer-selectbox.component.mjs +0 -342
  44. package/esm2022/components/lib/coer-sidenav/coer-menu-option/coer-menu-option.component.mjs +0 -103
  45. package/esm2022/components/lib/coer-sidenav/coer-sidenav.component.mjs +0 -194
  46. package/esm2022/components/lib/coer-sidenav/coer-toolbar/coer-toolbar.component.mjs +0 -33
  47. package/esm2022/components/lib/coer-sidenav/coer-tree-accordion/coer-tree-accordion.component.mjs +0 -116
  48. package/esm2022/components/lib/coer-switch/coer-switch.component.mjs +0 -93
  49. package/esm2022/components/lib/coer-tab/coer-tab.component.mjs +0 -120
  50. package/esm2022/components/lib/coer-textarea/coer-textarea.component.mjs +0 -156
  51. package/esm2022/components/lib/coer-textbox/coer-textbox.component.mjs +0 -221
  52. package/esm2022/components/lib/components.module.mjs +0 -188
  53. package/esm2022/components/public-api.mjs +0 -20
  54. package/esm2022/directives/coer-elements-directives.mjs +0 -5
  55. package/esm2022/directives/lib/coer-ref.directive.mjs +0 -23
  56. package/esm2022/directives/lib/directives.module.mjs +0 -25
  57. package/esm2022/directives/lib/life-cycle.directive.mjs +0 -33
  58. package/esm2022/directives/public-api.mjs +0 -4
  59. package/esm2022/index.mjs +0 -54
  60. package/esm2022/interfaces/coer-elements-interfaces.mjs +0 -5
  61. package/esm2022/interfaces/lib/app-source.interface.mjs +0 -2
  62. package/esm2022/interfaces/lib/box-button.interface.mjs +0 -2
  63. package/esm2022/interfaces/lib/bulk-load.interface.mjs +0 -2
  64. package/esm2022/interfaces/lib/coer-filebox/file-image.interface.mjs +0 -2
  65. package/esm2022/interfaces/lib/coer-filebox/file.interface.mjs +0 -2
  66. package/esm2022/interfaces/lib/coer-grid/grid-button-by-row.interface.mjs +0 -2
  67. package/esm2022/interfaces/lib/coer-grid/grid-checkbox.interface.mjs +0 -2
  68. package/esm2022/interfaces/lib/coer-grid/grid-coer-numberbox.interface.mjs +0 -2
  69. package/esm2022/interfaces/lib/coer-grid/grid-coer-selectbox.interface.mjs +0 -2
  70. package/esm2022/interfaces/lib/coer-grid/grid-coer-switch.interface.mjs +0 -2
  71. package/esm2022/interfaces/lib/coer-grid/grid-coer-textbox.interface.mjs +0 -2
  72. package/esm2022/interfaces/lib/coer-grid/grid-column.interface.mjs +0 -2
  73. package/esm2022/interfaces/lib/coer-grid/grid-data-source.interface.mjs +0 -2
  74. package/esm2022/interfaces/lib/coer-grid/grid-header-button.interface.mjs +0 -2
  75. package/esm2022/interfaces/lib/coer-grid/grid-header-export-button.interface.mjs +0 -2
  76. package/esm2022/interfaces/lib/coer-grid/grid-header.interface.mjs +0 -2
  77. package/esm2022/interfaces/lib/coer-grid/grid-import.interface.mjs +0 -2
  78. package/esm2022/interfaces/lib/coer-grid/grid-input-checkbox.interface.mjs +0 -2
  79. package/esm2022/interfaces/lib/coer-grid/grid-input-switch-change.interface.mjs +0 -2
  80. package/esm2022/interfaces/lib/coer-grid/grid-input-textbox.interface.mjs +0 -2
  81. package/esm2022/interfaces/lib/coer-grid/grid-item.interface.mjs +0 -2
  82. package/esm2022/interfaces/lib/coer-grid/grid-keyup-enter.interface.mjs +0 -2
  83. package/esm2022/interfaces/lib/coer-grid/grid-length.interface.mjs +0 -2
  84. package/esm2022/interfaces/lib/coer-grid/grid-search.interface.mjs +0 -2
  85. package/esm2022/interfaces/lib/coer-grid/grid-sort.interface.mjs +0 -2
  86. package/esm2022/interfaces/lib/coer-menu/menu-option-selected.interface.mjs +0 -2
  87. package/esm2022/interfaces/lib/coer-menu/menu-selected.interface.mjs +0 -2
  88. package/esm2022/interfaces/lib/coer-menu/menu.interface.mjs +0 -2
  89. package/esm2022/interfaces/lib/coer-ref.interface.mjs +0 -2
  90. package/esm2022/interfaces/lib/image.interface.mjs +0 -2
  91. package/esm2022/interfaces/lib/page-title/breadcrumb.interface.mjs +0 -2
  92. package/esm2022/interfaces/lib/page-title/go-back.interface.mjs +0 -2
  93. package/esm2022/interfaces/lib/screen-size.interface.mjs +0 -2
  94. package/esm2022/interfaces/lib/service/http-request.interface.mjs +0 -2
  95. package/esm2022/interfaces/lib/service/http-response.interface.mjs +0 -2
  96. package/esm2022/interfaces/lib/service/patch.interface.mjs +0 -2
  97. package/esm2022/interfaces/public-api.mjs +0 -42
  98. package/esm2022/pipes/coer-elements-pipes.mjs +0 -5
  99. package/esm2022/pipes/lib/html.pipe.mjs +0 -18
  100. package/esm2022/pipes/lib/no-image.pipe.mjs +0 -23
  101. package/esm2022/pipes/lib/numeric-format.pipe.mjs +0 -15
  102. package/esm2022/pipes/lib/pipes.module.mjs +0 -31
  103. package/esm2022/pipes/public-api.mjs +0 -5
  104. package/esm2022/signals/coer-elements-signals.mjs +0 -5
  105. package/esm2022/signals/lib/breakpoint.signal.mjs +0 -4
  106. package/esm2022/signals/lib/is-loading.signal.mjs +0 -3
  107. package/esm2022/signals/lib/is-menu-open.signal.mjs +0 -3
  108. package/esm2022/signals/lib/is-modal-open.signal.mjs +0 -3
  109. package/esm2022/signals/lib/navigation.signal.mjs +0 -3
  110. package/esm2022/signals/public-api.mjs +0 -6
  111. package/esm2022/tools/coer-elements-tools.mjs +0 -5
  112. package/esm2022/tools/lib/breadcrumbs.class.mjs +0 -63
  113. package/esm2022/tools/lib/coer-alert/coer-alert.component.mjs +0 -229
  114. package/esm2022/tools/lib/coer-grid.templates.mjs +0 -34
  115. package/esm2022/tools/lib/colors.class.mjs +0 -68
  116. package/esm2022/tools/lib/control-value.class.mjs +0 -46
  117. package/esm2022/tools/lib/date-time.class.mjs +0 -29
  118. package/esm2022/tools/lib/files.class.mjs +0 -91
  119. package/esm2022/tools/lib/filters.class.mjs +0 -57
  120. package/esm2022/tools/lib/menu.class.mjs +0 -23
  121. package/esm2022/tools/lib/page.class.mjs +0 -187
  122. package/esm2022/tools/lib/screen.class.mjs +0 -51
  123. package/esm2022/tools/lib/section.class.mjs +0 -60
  124. package/esm2022/tools/lib/service.class.mjs +0 -408
  125. package/esm2022/tools/lib/source.class.mjs +0 -80
  126. package/esm2022/tools/lib/tools.mjs +0 -232
  127. package/esm2022/tools/public-api.mjs +0 -16
@@ -1,232 +0,0 @@
1
- import { signal } from "@angular/core";
2
- const reference_signal = signal({});
3
- export const Tools = {
4
- /** Generate a Guid */
5
- GetGuid: (seed = 'coer-system') => {
6
- let time = new Date().getTime();
7
- seed = seed.toString().trim();
8
- return seed + `-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {
9
- const random = (time + Math.random() * 16) % 16 | 0;
10
- time = Math.floor(time / 16);
11
- return (c == 'x' ? random : (random & 0x3 | 0x8)).toString(16);
12
- });
13
- },
14
- /** Returns true if the value is null or undefined, false otherwise */
15
- IsNull: (value) => {
16
- if (value === undefined)
17
- return true;
18
- if (value === null)
19
- return true;
20
- return false;
21
- },
22
- /** Returns true if the value is not null or undefined, false otherwise */
23
- IsNotNull: (value) => {
24
- if (value === undefined)
25
- return false;
26
- if (value === null)
27
- return false;
28
- return true;
29
- },
30
- /** Returns true if the value is null or undefined or contains only whitespace, false otherwise */
31
- IsOnlyWhiteSpace: (value) => {
32
- if (value === undefined)
33
- return true;
34
- if (value === null)
35
- return true;
36
- if (typeof value === 'string' && value.trim() === '')
37
- return true;
38
- return false;
39
- },
40
- /** Returns true if has string value and is not only whitespace, false otherwise */
41
- IsNotOnlyWhiteSpace: (value) => {
42
- if (value === undefined)
43
- return false;
44
- if (value === null)
45
- return false;
46
- if (typeof value === 'string' && value.trim() === '')
47
- return false;
48
- return true;
49
- },
50
- /** Break reference of a object or array */
51
- BreakReference: (object) => {
52
- if (object === null)
53
- return object;
54
- if (typeof object === 'undefined')
55
- return object;
56
- if (typeof object === 'string')
57
- return object;
58
- if (typeof object === 'number')
59
- return object;
60
- if (typeof object === 'boolean')
61
- return object;
62
- const OBJECT = JSON.parse(JSON.stringify(object));
63
- return (Array.isArray(OBJECT)) ? [...OBJECT] : { ...OBJECT };
64
- },
65
- /** Clean extra whitespaces */
66
- CleanUpBlanks: (text) => {
67
- if (Tools.IsNull(text))
68
- return '';
69
- let worlds = String(text).split(' ');
70
- worlds = worlds.filter(x => x.length > 0);
71
- return worlds.join(' ');
72
- },
73
- /** Get properties of an object */
74
- GetObjectProperties: (obj) => {
75
- const properties = [];
76
- if (obj === null)
77
- return properties;
78
- if (typeof obj === 'undefined')
79
- return properties;
80
- if (typeof obj === 'string')
81
- return properties;
82
- if (typeof obj === 'number')
83
- return properties;
84
- if (typeof obj === 'boolean')
85
- return properties;
86
- for (const property in obj)
87
- properties.push(String(property));
88
- return properties;
89
- },
90
- /**
91
- * Set an index and merge more arrays of the same type
92
- * */
93
- SetIndex: (array, ...args) => {
94
- let index = 0;
95
- for (const arg of args) {
96
- array = Tools.BreakReference(array).concat(Tools.BreakReference(arg));
97
- }
98
- return Tools.BreakReference(array).map(item => Object.assign({ index: index++ }, item));
99
- },
100
- /** Set First Char To Lower */
101
- FirstCharToLower: (text) => {
102
- if (Tools.IsOnlyWhiteSpace(text))
103
- return '';
104
- const textArray = [];
105
- for (let i = 0; i < text.length; i++) {
106
- if (i === 0)
107
- textArray.push(text[i].toLowerCase());
108
- else
109
- textArray.push(text[i]);
110
- }
111
- return textArray.join('');
112
- },
113
- /** Set First Char To Upper */
114
- FirstCharToUpper: (text) => {
115
- if (Tools.IsOnlyWhiteSpace(text))
116
- return '';
117
- const textArray = [];
118
- for (let i = 0; i < text.length; i++) {
119
- if (i === 0)
120
- textArray.push(text[i].toUpperCase());
121
- else
122
- textArray.push(text[i]);
123
- }
124
- return textArray.join('');
125
- },
126
- /** Sort an array in ascending order by property */
127
- SortBy: (array, property, propertyType = 'string') => {
128
- switch (propertyType) {
129
- case 'string': {
130
- return array.sort((x, y) => {
131
- if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
132
- return -1;
133
- else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
134
- return 1;
135
- else
136
- return 0;
137
- });
138
- }
139
- case 'number': {
140
- return array.sort((x, y) => Number(x[property] - Number(y[property])));
141
- }
142
- }
143
- },
144
- /** Sort an array in descending order by property */
145
- SortByDesc: (array, property, propertyType = 'string') => {
146
- switch (propertyType) {
147
- case 'string': {
148
- return array.sort((x, y) => {
149
- if (String(x[property]).toUpperCase().trim() < String(y[property]).toUpperCase().trim())
150
- return 1;
151
- else if (String(x[property]).toUpperCase().trim() > String(y[property]).toUpperCase().trim())
152
- return -1;
153
- else
154
- return 0;
155
- });
156
- }
157
- case 'number': {
158
- return array.sort((x, y) => Number(Number(y[property])) - x[property]);
159
- }
160
- }
161
- },
162
- /** Return a string with forman numeric */
163
- GetNumericFormat: (value, decimals = 0) => {
164
- if (Tools.IsOnlyWhiteSpace(value) || isNaN(Number(value))) {
165
- return '0';
166
- }
167
- let valueInteger = '';
168
- let valueDecimal = '';
169
- value = value.toString().replaceAll(' ', '');
170
- if (value.includes('.') || (decimals > 0)) {
171
- valueInteger = value.includes('.') ? value.split('.')[0] : value;
172
- if (decimals > 0) {
173
- const PADDING = decimals - valueDecimal.length;
174
- valueDecimal = value.includes('.') ? value.split('.')[1] : '';
175
- for (let i = 0; i < PADDING; i++)
176
- valueDecimal += '0';
177
- valueDecimal = valueDecimal.substring(0, decimals);
178
- valueDecimal = `.${valueDecimal}`;
179
- }
180
- }
181
- else {
182
- valueInteger = value;
183
- }
184
- let counter = 0;
185
- const VALUE_INTEGER_ARRAY = [];
186
- for (const char of valueInteger.split('').reverse()) {
187
- if (counter == 3) {
188
- VALUE_INTEGER_ARRAY.push(',');
189
- counter = 0;
190
- }
191
- VALUE_INTEGER_ARRAY.push(char);
192
- ++counter;
193
- }
194
- valueInteger = VALUE_INTEGER_ARRAY.reverse().join('');
195
- return `${valueInteger}${valueDecimal}`;
196
- },
197
- /** Wait the time indicated */
198
- Sleep: (milliseconds = 0, reference = null) => {
199
- if (Tools.IsNull(reference)) {
200
- return new Promise(Resolve => setTimeout(Resolve, milliseconds));
201
- }
202
- else
203
- return new Promise(Resolve => {
204
- reference = reference.replaceAll(' ', '_').toLowerCase();
205
- if (reference_signal().hasOwnProperty(reference)) {
206
- clearInterval(reference_signal()[reference]);
207
- }
208
- reference_signal.set(Object.assign(reference_signal(), {
209
- [reference]: setTimeout(() => {
210
- Resolve();
211
- clearInterval(reference_signal()[reference]);
212
- const _reference = { ...reference_signal() };
213
- delete _reference[reference];
214
- reference_signal.set({ ..._reference });
215
- }, milliseconds)
216
- }));
217
- });
218
- },
219
- /** */
220
- Except: (array, filter, ...properties) => {
221
- const result = [];
222
- for (const item of array) {
223
- if (typeof item === 'object' && Tools.IsNotNull(properties) && properties.length > 0) {
224
- if (!filter.some(x => x[properties[0]] === item[properties[0]])) {
225
- result.push(item);
226
- }
227
- }
228
- }
229
- return [...result];
230
- }
231
- };
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2VyLWVsZW1lbnRzL3Rvb2xzL2xpYi90b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRXpDLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRztJQUNqQixzQkFBc0I7SUFDdEIsT0FBTyxFQUFFLENBQUMsT0FBZSxhQUFhLEVBQUUsRUFBRTtRQUN0QyxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0IsT0FBTyxJQUFJLEdBQUcsdUNBQXVDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ25ELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQTtZQUM1QixPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDbEUsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR0Qsc0VBQXNFO0lBQ3RFLE1BQU0sRUFBRSxDQUFJLEtBQTJCLEVBQVcsRUFBRTtRQUNoRCxJQUFJLEtBQUssS0FBSyxTQUFTO1lB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QUFDLENBQUM7d0JBQzlCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQztvQkFDNUMsQ0FBQyxFQUFFLFlBQVksQ0FBQztpQkFDbkIsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxNQUFNO0lBQ04sTUFBTSxFQUFFLENBQUksS0FBVSxFQUFFLE1BQWEsRUFBRSxHQUFHLFVBQW9CLEVBQU8sRUFBRTtRQUNuRSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFFdkIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFjLEVBQUUsQ0FBQztZQUNoQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzlELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RCLENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuY29uc3QgcmVmZXJlbmNlX3NpZ25hbCA9IHNpZ25hbDxhbnk+KHt9KTtcclxuXHJcbmV4cG9ydCBjb25zdCBUb29scyA9IHtcclxuICAgIC8qKiBHZW5lcmF0ZSBhIEd1aWQgKi9cclxuICAgIEdldEd1aWQ6IChzZWVkOiBzdHJpbmcgPSAnY29lci1zeXN0ZW0nKSA9PiB7XHJcbiAgICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICBzZWVkID0gc2VlZC50b1N0cmluZygpLnRyaW0oKVxyXG4gICAgICAgIHJldHVybiBzZWVkICsgYC14eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHhgLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tID0gKHRpbWUgKyBNYXRoLnJhbmRvbSgpICogMTYpICUgMTYgfCAwXHJcbiAgICAgICAgICAgIHRpbWUgPSBNYXRoLmZsb29yKHRpbWUgLyAxNilcclxuICAgICAgICAgICAgcmV0dXJuIChjID09ICd4JyA/IHJhbmRvbSA6IChyYW5kb20gJiAweDMgfCAweDgpKS50b1N0cmluZygxNilcclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQsIGZhbHNlIG90aGVyd2lzZSAqL1xyXG4gICAgSXNOdWxsOiA8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgbm90IG51bGwgb3IgdW5kZWZpbmVkLCBmYWxzZSBvdGhlcndpc2UgKi9cclxuICAgIElzTm90TnVsbDogPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBudWxsIG9yIHVuZGVmaW5lZCBvciBjb250YWlucyBvbmx5IHdoaXRlc3BhY2UsIGZhbHNlIG90aGVyd2lzZSAqL1xyXG4gICAgSXNPbmx5V2hpdGVTcGFjZTogPFQ+KHZhbHVlOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLnRyaW0oKSA9PT0gJycpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBSZXR1cm5zIHRydWUgaWYgaGFzIHN0cmluZyB2YWx1ZSBhbmQgaXMgbm90IG9ubHkgd2hpdGVzcGFjZSwgZmFsc2Ugb3RoZXJ3aXNlICovXHJcbiAgICBJc05vdE9ubHlXaGl0ZVNwYWNlOiA8VD4odmFsdWU6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS50cmltKCkgPT09ICcnKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogQnJlYWsgcmVmZXJlbmNlIG9mIGEgb2JqZWN0IG9yIGFycmF5ICovXHJcbiAgICBCcmVha1JlZmVyZW5jZTogPFQ+KG9iamVjdDogVCk6IFQgPT4ge1xyXG4gICAgICAgIGlmIChvYmplY3QgPT09IG51bGwpIHJldHVybiBvYmplY3Q7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gb2JqZWN0O1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqZWN0ID09PSAnc3RyaW5nJykgcmV0dXJuIG9iamVjdDtcclxuICAgICAgICBpZiAodHlwZW9mIG9iamVjdCA9PT0gJ251bWJlcicpIHJldHVybiBvYmplY3Q7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdib29sZWFuJykgcmV0dXJuIG9iamVjdDtcclxuICAgICAgICBjb25zdCBPQkpFQ1QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iamVjdCkpXHJcbiAgICAgICAgcmV0dXJuIChBcnJheS5pc0FycmF5KE9CSkVDVCkpID8gWy4uLk9CSkVDVF0gOiB7IC4uLk9CSkVDVCB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogQ2xlYW4gZXh0cmEgd2hpdGVzcGFjZXMgKi9cclxuICAgIENsZWFuVXBCbGFua3M6ICh0ZXh0OiBzdHJpbmcgfCBudW1iZXIpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmKFRvb2xzLklzTnVsbCh0ZXh0KSkgcmV0dXJuICcnO1xyXG4gICAgICAgIGxldCB3b3JsZHM6IHN0cmluZ1tdID0gU3RyaW5nKHRleHQpLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgd29ybGRzID0gd29ybGRzLmZpbHRlcih4ID0+IHgubGVuZ3RoID4gMCk7XHJcbiAgICAgICAgcmV0dXJuIHdvcmxkcy5qb2luKCcgJyk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvKiogR2V0IHByb3BlcnRpZXMgb2YgYW4gb2JqZWN0ICovXHJcbiAgICBHZXRPYmplY3RQcm9wZXJ0aWVzOiA8VD4ob2JqOiBUIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZ1tdID0+IHtcclxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgICAgIGlmIChvYmogPT09IG51bGwpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykgcmV0dXJuIHByb3BlcnRpZXM7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSByZXR1cm4gcHJvcGVydGllcztcclxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ251bWJlcicpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicpIHJldHVybiBwcm9wZXJ0aWVzO1xyXG4gICAgICAgIGZvcihjb25zdCBwcm9wZXJ0eSBpbiBvYmopIHByb3BlcnRpZXMucHVzaChTdHJpbmcocHJvcGVydHkpKTtcclxuICAgICAgICByZXR1cm4gcHJvcGVydGllcztcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0IGFuIGluZGV4IGFuZCBtZXJnZSBtb3JlIGFycmF5cyBvZiB0aGUgc2FtZSB0eXBlXHJcbiAgICAgKiAqL1xyXG4gICAgU2V0SW5kZXg6IDxUPihhcnJheTogVFtdLCAuLi5hcmdzOiBUW11bXSk6IFRbXSA9PiB7XHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuICAgICAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XHJcbiAgICAgICAgICAgIGFycmF5ID0gVG9vbHMuQnJlYWtSZWZlcmVuY2UoYXJyYXkpLmNvbmNhdChUb29scy5CcmVha1JlZmVyZW5jZShhcmcpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBUb29scy5CcmVha1JlZmVyZW5jZShhcnJheSkubWFwKGl0ZW0gPT4gT2JqZWN0LmFzc2lnbih7IGluZGV4OiBpbmRleCsrIH0sIGl0ZW0pKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTZXQgRmlyc3QgQ2hhciBUbyBMb3dlciAqL1xyXG4gICAgRmlyc3RDaGFyVG9Mb3dlcjogKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRleHQpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHRBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGV4dCEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYoaSA9PT0gMCkgdGV4dEFycmF5LnB1c2godGV4dCFbaV0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dEFycmF5LnB1c2godGV4dCFbaV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRleHRBcnJheS5qb2luKCcnKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTZXQgRmlyc3QgQ2hhciBUbyBVcHBlciAqL1xyXG4gICAgRmlyc3RDaGFyVG9VcHBlcjogKHRleHQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xyXG4gICAgICAgIGlmIChUb29scy5Jc09ubHlXaGl0ZVNwYWNlKHRleHQpKSByZXR1cm4gJyc7XHJcblxyXG4gICAgICAgIGNvbnN0IHRleHRBcnJheTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGV4dCEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYoaSA9PT0gMCkgdGV4dEFycmF5LnB1c2godGV4dCFbaV0udG9VcHBlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIGVsc2UgdGV4dEFycmF5LnB1c2godGV4dCFbaV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRleHRBcnJheS5qb2luKCcnKTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBTb3J0IGFuIGFycmF5IGluIGFzY2VuZGluZyBvcmRlciBieSBwcm9wZXJ0eSAqL1xyXG4gICAgU29ydEJ5OiA8VD4oYXJyYXk6IFRbXSwgcHJvcGVydHk6IHN0cmluZywgcHJvcGVydHlUeXBlOiAnc3RyaW5nJyB8ICdudW1iZXInID0gJ3N0cmluZycpOiBUW10gPT4ge1xyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHlUeXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheS5zb3J0KCh4OiBhbnksIHk6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChTdHJpbmcoeFtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpIDwgU3RyaW5nKHlbcHJvcGVydHldKS50b1VwcGVyQ2FzZSgpLnRyaW0oKSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFN0cmluZyh4W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkgPiBTdHJpbmcoeVtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheS5zb3J0KCh4OiBhbnksIHk6IGFueSkgPT4gTnVtYmVyKHhbcHJvcGVydHldIC0gTnVtYmVyKHlbcHJvcGVydHldKSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcblxyXG4gICAgLyoqIFNvcnQgYW4gYXJyYXkgaW4gZGVzY2VuZGluZyBvcmRlciBieSBwcm9wZXJ0eSAqL1xyXG4gICAgU29ydEJ5RGVzYzogPFQ+KGFycmF5OiBUW10sIHByb3BlcnR5OiBzdHJpbmcsIHByb3BlcnR5VHlwZTogJ3N0cmluZycgfCAnbnVtYmVyJyA9ICdzdHJpbmcnKTogVFtdID0+IHtcclxuICAgICAgICBzd2l0Y2ggKHByb3BlcnR5VHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdzdHJpbmcnOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuc29ydCgoeDogYW55LCB5OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoU3RyaW5nKHhbcHJvcGVydHldKS50b1VwcGVyQ2FzZSgpLnRyaW0oKSA8IFN0cmluZyh5W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkpIHJldHVybiAxO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKFN0cmluZyh4W3Byb3BlcnR5XSkudG9VcHBlckNhc2UoKS50cmltKCkgPiBTdHJpbmcoeVtwcm9wZXJ0eV0pLnRvVXBwZXJDYXNlKCkudHJpbSgpKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMDtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjYXNlICdudW1iZXInOiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuc29ydCgoeDogYW55LCB5OiBhbnkpID0+IE51bWJlcihOdW1iZXIoeVtwcm9wZXJ0eV0pKSAtIHhbcHJvcGVydHldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBSZXR1cm4gYSBzdHJpbmcgd2l0aCBmb3JtYW4gbnVtZXJpYyAqL1xyXG4gICAgR2V0TnVtZXJpY0Zvcm1hdDogKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBkZWNpbWFsczogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XHJcbiAgICAgICAgaWYgKFRvb2xzLklzT25seVdoaXRlU3BhY2UodmFsdWUpIHx8IGlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdmFsdWVJbnRlZ2VyID0gJyc7XHJcbiAgICAgICAgbGV0IHZhbHVlRGVjaW1hbCA9ICcnO1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUhLnRvU3RyaW5nKCkucmVwbGFjZUFsbCgnICcsICcnKTtcclxuXHJcbiAgICAgICAgaWYgKHZhbHVlLmluY2x1ZGVzKCcuJykgfHwgKGRlY2ltYWxzID4gMCkpIHtcclxuICAgICAgICAgICAgdmFsdWVJbnRlZ2VyID0gdmFsdWUuaW5jbHVkZXMoJy4nKSA/IHZhbHVlLnNwbGl0KCcuJylbMF0gOiB2YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChkZWNpbWFscyA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFBBRERJTkcgPSBkZWNpbWFscyAtIHZhbHVlRGVjaW1hbC5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZURlY2ltYWwgPSB2YWx1ZS5pbmNsdWRlcygnLicpID8gdmFsdWUuc3BsaXQoJy4nKVsxXSA6ICcnO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IFBBRERJTkc7IGkrKykgdmFsdWVEZWNpbWFsICs9ICcwJztcclxuICAgICAgICAgICAgICAgIHZhbHVlRGVjaW1hbCA9IHZhbHVlRGVjaW1hbC5zdWJzdHJpbmcoMCwgZGVjaW1hbHMpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWVEZWNpbWFsID0gYC4ke3ZhbHVlRGVjaW1hbH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVJbnRlZ2VyID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgY291bnRlciA9IDA7XHJcbiAgICAgICAgY29uc3QgVkFMVUVfSU5URUdFUl9BUlJBWTogc3RyaW5nW10gPSBbXTtcclxuICAgICAgICBmb3IoY29uc3QgY2hhciBvZiB2YWx1ZUludGVnZXIuc3BsaXQoJycpLnJldmVyc2UoKSkge1xyXG4gICAgICAgICAgICBpZiAoY291bnRlciA9PSAzKSB7XHJcbiAgICAgICAgICAgICAgICBWQUxVRV9JTlRFR0VSX0FSUkFZLnB1c2goJywnKTtcclxuICAgICAgICAgICAgICAgIGNvdW50ZXIgPSAwO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBWQUxVRV9JTlRFR0VSX0FSUkFZLnB1c2goY2hhcik7XHJcbiAgICAgICAgICAgICsrY291bnRlcjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhbHVlSW50ZWdlciA9IFZBTFVFX0lOVEVHRVJfQVJSQVkucmV2ZXJzZSgpLmpvaW4oJycpO1xyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZUludGVnZXJ9JHt2YWx1ZURlY2ltYWx9YDtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiBXYWl0IHRoZSB0aW1lIGluZGljYXRlZCAqL1xyXG4gICAgU2xlZXA6IChtaWxsaXNlY29uZHM6IG51bWJlciA9IDAsIHJlZmVyZW5jZTogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+IHtcclxuICAgICAgICBpZiAoVG9vbHMuSXNOdWxsKHJlZmVyZW5jZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKFJlc29sdmUgPT4gc2V0VGltZW91dChSZXNvbHZlLCBtaWxsaXNlY29uZHMpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGVsc2UgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KFJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICByZWZlcmVuY2UgPSByZWZlcmVuY2UhLnJlcGxhY2VBbGwoJyAnLCAnXycpLnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAocmVmZXJlbmNlX3NpZ25hbCgpLmhhc093blByb3BlcnR5KHJlZmVyZW5jZSkpIHtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmZXJlbmNlX3NpZ25hbCgpW3JlZmVyZW5jZSFdKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVmZXJlbmNlX3NpZ25hbC5zZXQoT2JqZWN0LmFzc2lnbihyZWZlcmVuY2Vfc2lnbmFsKCksIHtcclxuICAgICAgICAgICAgICAgIFtyZWZlcmVuY2UhXTogc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVmZXJlbmNlX3NpZ25hbCgpW3JlZmVyZW5jZSFdKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBfcmVmZXJlbmNlID0geyAuLi5yZWZlcmVuY2Vfc2lnbmFsKCkgfTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgX3JlZmVyZW5jZVtyZWZlcmVuY2UhXTtcclxuICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2Vfc2lnbmFsLnNldCh7IC4uLl9yZWZlcmVuY2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9LCBtaWxsaXNlY29uZHMpXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9KTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8qKiAqL1xyXG4gICAgRXhjZXB0OiA8VD4oYXJyYXk6IFRbXSwgZmlsdGVyOiBhbnlbXSwgLi4ucHJvcGVydGllczogc3RyaW5nW10pOiBUW10gPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogVFtdID0gW107XHJcbiAgICAgICAgIFxyXG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBhcnJheSBhcyBhbnlbXSkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIFRvb2xzLklzTm90TnVsbChwcm9wZXJ0aWVzKSAmJiBwcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGlmICghZmlsdGVyLnNvbWUoeCA9PiB4W3Byb3BlcnRpZXNbMF1dID09PSBpdGVtW3Byb3BlcnRpZXNbMF1dKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIFsuLi5yZXN1bHRdO1xyXG4gICAgfVxyXG59OyJdfQ==
@@ -1,16 +0,0 @@
1
- export * from './lib/coer-alert/coer-alert.component';
2
- export * from './lib/breadcrumbs.class';
3
- export * from './lib/coer-grid.templates';
4
- export * from './lib/colors.class';
5
- export * from './lib/control-value.class';
6
- export * from './lib/date-time.class';
7
- export * from './lib/files.class';
8
- export * from './lib/filters.class';
9
- export * from './lib/menu.class';
10
- export * from './lib/page.class';
11
- export * from './lib/screen.class';
12
- export * from './lib/section.class';
13
- export * from './lib/service.class';
14
- export * from './lib/source.class';
15
- export * from './lib/tools';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvZXItZWxlbWVudHMvdG9vbHMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWFsZXJ0L2NvZXItYWxlcnQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYnJlYWRjcnVtYnMuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb2VyLWdyaWQudGVtcGxhdGVzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29sb3JzLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29udHJvbC12YWx1ZS5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RhdGUtdGltZS5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbGVzLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsdGVycy5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lbnUuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdlLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2NyZWVuLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VjdGlvbi5jbGFzcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zb3VyY2UuY2xhc3MnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b29scyc7Il19