@vgip/meta-ui 2.0.0 → 2.1.0

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 (206) hide show
  1. package/fesm2022/vgip-meta-ui.mjs +5614 -78
  2. package/fesm2022/vgip-meta-ui.mjs.map +1 -1
  3. package/index.d.ts +709 -5
  4. package/package.json +5 -8
  5. package/vendor/volta3/README.md +1 -0
  6. package/vendor/volta3/fonts/Spezia-Regular.eot +0 -0
  7. package/vendor/volta3/fonts/Spezia-Regular.ttf +0 -0
  8. package/vendor/volta3/fonts/Spezia-Regular.woff +0 -0
  9. package/vendor/volta3/fonts/Spezia-Regular.woff2 +0 -0
  10. package/vendor/volta3/fonts/Spezia-SemiBold.eot +0 -0
  11. package/vendor/volta3/fonts/Spezia-SemiBold.ttf +0 -0
  12. package/vendor/volta3/fonts/Spezia-SemiBold.woff +0 -0
  13. package/vendor/volta3/fonts/Spezia-SemiBold.woff2 +0 -0
  14. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.eot +0 -0
  15. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.ttf +0 -0
  16. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.woff +0 -0
  17. package/vendor/volta3/fonts/Spezia-SemiMonoSemiBold.woff2 +0 -0
  18. package/vendor/volta3/fonts/Spezia-WideMedium.eot +0 -0
  19. package/vendor/volta3/fonts/Spezia-WideMedium.ttf +0 -0
  20. package/vendor/volta3/fonts/Spezia-WideMedium.woff +0 -0
  21. package/vendor/volta3/fonts/Spezia-WideMedium.woff2 +0 -0
  22. package/vendor/volta3/scss/components/_accordions.scss +165 -0
  23. package/vendor/volta3/scss/components/_badge.scss +325 -0
  24. package/vendor/volta3/scss/components/_blockquote.scss +35 -0
  25. package/vendor/volta3/scss/components/_boxes.scss +113 -0
  26. package/vendor/volta3/scss/components/_buttons.scss +794 -0
  27. package/vendor/volta3/scss/components/_callouts.scss +427 -0
  28. package/vendor/volta3/scss/components/_card.scss +421 -0
  29. package/vendor/volta3/scss/components/_color-classes.scss +186 -0
  30. package/vendor/volta3/scss/components/_dialpad.scss +224 -0
  31. package/vendor/volta3/scss/components/_dropdowns.scss +495 -0
  32. package/vendor/volta3/scss/components/_empties.scss +77 -0
  33. package/vendor/volta3/scss/components/_flash-messages.scss +39 -0
  34. package/vendor/volta3/scss/components/_form-elements.scss +879 -0
  35. package/vendor/volta3/scss/components/_lists.scss +427 -0
  36. package/vendor/volta3/scss/components/_modals.scss +227 -0
  37. package/vendor/volta3/scss/components/_popups.scss +173 -0
  38. package/vendor/volta3/scss/components/_progress.scss +28 -0
  39. package/vendor/volta3/scss/components/_spinner.scss +105 -0
  40. package/vendor/volta3/scss/components/_steps.scss +242 -0
  41. package/vendor/volta3/scss/components/_switch.scss +353 -0
  42. package/vendor/volta3/scss/components/_tables.scss +739 -0
  43. package/vendor/volta3/scss/components/_tabs.scss +296 -0
  44. package/vendor/volta3/scss/components/_text-separator.scss +61 -0
  45. package/vendor/volta3/scss/components/_tooltips.scss +152 -0
  46. package/vendor/volta3/scss/components/side-navigation/_side-nav--aqua.scss +179 -0
  47. package/vendor/volta3/scss/components/side-navigation/_side-nav--collapsible.scss +381 -0
  48. package/vendor/volta3/scss/components/side-navigation/_side-nav--dark.scss +196 -0
  49. package/vendor/volta3/scss/components/side-navigation/_side-nav--light.scss +174 -0
  50. package/vendor/volta3/scss/components/side-navigation/_side-nav--structure.scss +631 -0
  51. package/vendor/volta3/scss/components/side-navigation/_side-nav--tabs.scss +88 -0
  52. package/vendor/volta3/scss/flatpickr/_flatpickr-volta.scss +407 -0
  53. package/vendor/volta3/scss/flatpickr/_flatpickr.css +785 -0
  54. package/vendor/volta3/scss/layout/_article.scss +119 -0
  55. package/vendor/volta3/scss/layout/_utils.scss +174 -0
  56. package/vendor/volta3/scss/lib/_grid.scss +374 -0
  57. package/vendor/volta3/scss/lib/_mediaqueries.scss +52 -0
  58. package/vendor/volta3/scss/lib/_reset.scss +110 -0
  59. package/vendor/volta3/scss/lib/_type.scss +345 -0
  60. package/vendor/volta3/scss/lib/_utils.scss +26 -0
  61. package/vendor/volta3/scss/lib/_variables.scss +115 -0
  62. package/vendor/volta3/scss/prism/_prism-volta.scss +390 -0
  63. package/vendor/volta3/scss/prism/_prism.css +326 -0
  64. package/vendor/volta3/scss/templates/volta-error-page.scss +57 -0
  65. package/vendor/volta3/scss/templates/volta-templates.scss +114 -0
  66. package/vendor/volta3/scss/volta-flatpickr.scss +10 -0
  67. package/vendor/volta3/scss/volta-prism.scss +7 -0
  68. package/vendor/volta3/scss/volta.scss +39 -0
  69. package/vendor/volta3/symbol/volta-brand-icons.svg +1 -0
  70. package/vendor/volta3/symbol/volta-flag-icons.svg +1 -0
  71. package/vendor/volta3/symbol/volta-icons.svg +1 -0
  72. package/esm2022/lib/common/fieldNormalizer/boolean.mjs +0 -12
  73. package/esm2022/lib/common/fieldNormalizer/datetime.mjs +0 -9
  74. package/esm2022/lib/common/fieldNormalizer/index.mjs +0 -183
  75. package/esm2022/lib/common/fieldNormalizer/number.mjs +0 -14
  76. package/esm2022/lib/common/fieldNormalizer/options.mjs +0 -50
  77. package/esm2022/lib/common/fieldNormalizer/radio.mjs +0 -30
  78. package/esm2022/lib/common/fieldNormalizer/reference.mjs +0 -36
  79. package/esm2022/lib/common/fieldNormalizer/richtext.mjs +0 -15
  80. package/esm2022/lib/common/fieldNormalizer/string.mjs +0 -24
  81. package/esm2022/lib/common/fieldNormalizer/text.mjs +0 -18
  82. package/esm2022/lib/common/fieldNormalizer/uniqueNameFilter.mjs +0 -23
  83. package/esm2022/lib/common/metaAutofocus.directive.mjs +0 -35
  84. package/esm2022/lib/common/metaIcons.pipe.mjs +0 -29
  85. package/esm2022/lib/common/metaModel.pipe.mjs +0 -23
  86. package/esm2022/lib/common/metaNormalizer.mjs +0 -375
  87. package/esm2022/lib/common/metaStripHtml.pipe.mjs +0 -22
  88. package/esm2022/lib/common/utils/colorThemes.mjs +0 -77
  89. package/esm2022/lib/common/utils/indexedDbStore/index.mjs +0 -228
  90. package/esm2022/lib/common/utils/relativeTimeBuilder.mjs +0 -49
  91. package/esm2022/lib/common/utils/resourceCardLabel.mjs +0 -24
  92. package/esm2022/lib/common/utils/smartProp.mjs +0 -31
  93. package/esm2022/lib/common/utils/templateBuilder.mjs +0 -103
  94. package/esm2022/lib/fieldAbstract.mjs +0 -291
  95. package/esm2022/lib/fieldBoolean/index.mjs +0 -53
  96. package/esm2022/lib/fieldComposite/index.mjs +0 -82
  97. package/esm2022/lib/fieldDatetime/index.mjs +0 -365
  98. package/esm2022/lib/fieldHidden/index.mjs +0 -18
  99. package/esm2022/lib/fieldInput/index.mjs +0 -475
  100. package/esm2022/lib/fieldList/index.mjs +0 -74
  101. package/esm2022/lib/fieldRadio/index.mjs +0 -88
  102. package/esm2022/lib/fieldReference/index.mjs +0 -836
  103. package/esm2022/lib/fieldRichtext/index.mjs +0 -93
  104. package/esm2022/lib/fieldSelect/index.mjs +0 -569
  105. package/esm2022/lib/fieldText/index.mjs +0 -83
  106. package/esm2022/lib/fieldUnknown/index.mjs +0 -19
  107. package/esm2022/lib/index.mjs +0 -163
  108. package/esm2022/lib/layout/index.mjs +0 -214
  109. package/esm2022/lib/metaField/index.mjs +0 -151
  110. package/esm2022/lib/refDialog/index.mjs +0 -135
  111. package/esm2022/lib/resource/index.mjs +0 -525
  112. package/esm2022/lib/resourceCard/index.mjs +0 -40
  113. package/esm2022/lib/services/metaContext/index.mjs +0 -52
  114. package/esm2022/lib/services/metaMsg/index.mjs +0 -84
  115. package/esm2022/lib/services/metaReference/index.mjs +0 -94
  116. package/esm2022/lib/services/metaResource/index.mjs +0 -141
  117. package/esm2022/lib/services/metaResource/metaHttpClient.mjs +0 -64
  118. package/esm2022/lib/services/metaTracker/index.mjs +0 -31
  119. package/esm2022/lib/services/resourceDrafts/index.mjs +0 -69
  120. package/esm2022/public-api.mjs +0 -5
  121. package/esm2022/vgip-meta-ui.mjs +0 -5
  122. package/fesm2022/vgip-meta-ui-fieldAbstract-baeaf24d.mjs +0 -399
  123. package/fesm2022/vgip-meta-ui-fieldAbstract-baeaf24d.mjs.map +0 -1
  124. package/fesm2022/vgip-meta-ui-index-0184d5ec.mjs +0 -478
  125. package/fesm2022/vgip-meta-ui-index-0184d5ec.mjs.map +0 -1
  126. package/fesm2022/vgip-meta-ui-index-1ddfcce0.mjs +0 -86
  127. package/fesm2022/vgip-meta-ui-index-1ddfcce0.mjs.map +0 -1
  128. package/fesm2022/vgip-meta-ui-index-37358620.mjs +0 -158
  129. package/fesm2022/vgip-meta-ui-index-37358620.mjs.map +0 -1
  130. package/fesm2022/vgip-meta-ui-index-4e9c383f.mjs +0 -95
  131. package/fesm2022/vgip-meta-ui-index-4e9c383f.mjs.map +0 -1
  132. package/fesm2022/vgip-meta-ui-index-4fa919c0.mjs +0 -79
  133. package/fesm2022/vgip-meta-ui-index-4fa919c0.mjs.map +0 -1
  134. package/fesm2022/vgip-meta-ui-index-5f68724c.mjs +0 -576
  135. package/fesm2022/vgip-meta-ui-index-5f68724c.mjs.map +0 -1
  136. package/fesm2022/vgip-meta-ui-index-6d502a71.mjs +0 -869
  137. package/fesm2022/vgip-meta-ui-index-6d502a71.mjs.map +0 -1
  138. package/fesm2022/vgip-meta-ui-index-7741951a.mjs +0 -23
  139. package/fesm2022/vgip-meta-ui-index-7741951a.mjs.map +0 -1
  140. package/fesm2022/vgip-meta-ui-index-80ab405f.mjs +0 -93
  141. package/fesm2022/vgip-meta-ui-index-80ab405f.mjs.map +0 -1
  142. package/fesm2022/vgip-meta-ui-index-926ae006.mjs +0 -58
  143. package/fesm2022/vgip-meta-ui-index-926ae006.mjs.map +0 -1
  144. package/fesm2022/vgip-meta-ui-index-b979685f.mjs +0 -87
  145. package/fesm2022/vgip-meta-ui-index-b979685f.mjs.map +0 -1
  146. package/fesm2022/vgip-meta-ui-index-c943b7c0.mjs +0 -24
  147. package/fesm2022/vgip-meta-ui-index-c943b7c0.mjs.map +0 -1
  148. package/fesm2022/vgip-meta-ui-index-ce185ca2.mjs +0 -2062
  149. package/fesm2022/vgip-meta-ui-index-ce185ca2.mjs.map +0 -1
  150. package/fesm2022/vgip-meta-ui-index-f8b00f06.mjs +0 -370
  151. package/fesm2022/vgip-meta-ui-index-f8b00f06.mjs.map +0 -1
  152. package/fesm2022/vgip-meta-ui-index-fb7f54f5.mjs +0 -154
  153. package/fesm2022/vgip-meta-ui-index-fb7f54f5.mjs.map +0 -1
  154. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs +0 -26
  155. package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs.map +0 -1
  156. package/fesm2022/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs +0 -51
  157. package/fesm2022/vgip-meta-ui-relativeTimeBuilder-31791ce4.mjs.map +0 -1
  158. package/lib/common/fieldNormalizer/boolean.d.ts +0 -1
  159. package/lib/common/fieldNormalizer/datetime.d.ts +0 -1
  160. package/lib/common/fieldNormalizer/index.d.ts +0 -1
  161. package/lib/common/fieldNormalizer/number.d.ts +0 -1
  162. package/lib/common/fieldNormalizer/options.d.ts +0 -1
  163. package/lib/common/fieldNormalizer/radio.d.ts +0 -1
  164. package/lib/common/fieldNormalizer/reference.d.ts +0 -1
  165. package/lib/common/fieldNormalizer/richtext.d.ts +0 -1
  166. package/lib/common/fieldNormalizer/string.d.ts +0 -1
  167. package/lib/common/fieldNormalizer/text.d.ts +0 -1
  168. package/lib/common/fieldNormalizer/uniqueNameFilter.d.ts +0 -1
  169. package/lib/common/metaAutofocus.directive.d.ts +0 -10
  170. package/lib/common/metaIcons.pipe.d.ts +0 -10
  171. package/lib/common/metaModel.pipe.d.ts +0 -7
  172. package/lib/common/metaNormalizer.d.ts +0 -1
  173. package/lib/common/metaStripHtml.pipe.d.ts +0 -7
  174. package/lib/common/utils/colorThemes.d.ts +0 -8
  175. package/lib/common/utils/indexedDbStore/index.d.ts +0 -25
  176. package/lib/common/utils/relativeTimeBuilder.d.ts +0 -1
  177. package/lib/common/utils/resourceCardLabel.d.ts +0 -1
  178. package/lib/common/utils/smartProp.d.ts +0 -2
  179. package/lib/common/utils/templateBuilder.d.ts +0 -1
  180. package/lib/fieldAbstract.d.ts +0 -61
  181. package/lib/fieldBoolean/index.d.ts +0 -10
  182. package/lib/fieldComposite/index.d.ts +0 -14
  183. package/lib/fieldDatetime/index.d.ts +0 -26
  184. package/lib/fieldHidden/index.d.ts +0 -6
  185. package/lib/fieldInput/index.d.ts +0 -35
  186. package/lib/fieldList/index.d.ts +0 -15
  187. package/lib/fieldRadio/index.d.ts +0 -14
  188. package/lib/fieldReference/index.d.ts +0 -73
  189. package/lib/fieldRichtext/index.d.ts +0 -27
  190. package/lib/fieldSelect/index.d.ts +0 -49
  191. package/lib/fieldText/index.d.ts +0 -15
  192. package/lib/fieldUnknown/index.d.ts +0 -6
  193. package/lib/index.d.ts +0 -65
  194. package/lib/layout/index.d.ts +0 -47
  195. package/lib/metaField/index.d.ts +0 -29
  196. package/lib/refDialog/index.d.ts +0 -33
  197. package/lib/resource/index.d.ts +0 -68
  198. package/lib/resourceCard/index.d.ts +0 -17
  199. package/lib/services/metaContext/index.d.ts +0 -32
  200. package/lib/services/metaMsg/index.d.ts +0 -14
  201. package/lib/services/metaReference/index.d.ts +0 -11
  202. package/lib/services/metaResource/index.d.ts +0 -31
  203. package/lib/services/metaResource/metaHttpClient.d.ts +0 -15
  204. package/lib/services/metaTracker/index.d.ts +0 -19
  205. package/lib/services/resourceDrafts/index.d.ts +0 -26
  206. package/public-api.d.ts +0 -1
@@ -1,228 +0,0 @@
1
- /*
2
- * @Author: Alexander.Vangelov@vonage.com
3
- * @Date: 2020-02-10 18:47:45
4
- * @Last Modified by: Alexander.Vangelov@vonage.com
5
- * @Last Modified time: 2020-02-28 13:29:23
6
- */
7
- export class IndexedDbStore {
8
- constructor(dbName = 'vgip') {
9
- this.dbName = dbName;
10
- this.indxDb = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
11
- }
12
- _getDb(callback) {
13
- const self = this;
14
- if (this.db) {
15
- return callback(null, this.db);
16
- }
17
- const req = this.indxDb.open(this.dbName, 3);
18
- req.onupgradeneeded = (ev) => {
19
- self.db = ev.target.result;
20
- if (!self.db.objectStoreNames.contains('Draft')) {
21
- this.createDraftStore();
22
- }
23
- };
24
- if (callback) {
25
- req.onsuccess = (ev) => {
26
- self.db = ev.target.result;
27
- callback(null, self.db);
28
- };
29
- }
30
- req.onerror = (ev) => {
31
- if (callback) {
32
- callback(ev.error);
33
- }
34
- };
35
- }
36
- initCollection(collectionName, callback) {
37
- const self = this;
38
- this._getDb((err) => {
39
- if (typeof (callback) === 'function') {
40
- if (err) {
41
- return callback(err);
42
- }
43
- else if (!self.db.objectStoreNames.contains(collectionName)) {
44
- return callback(new Error(`IDBDatabase store ${collectionName} does not exist!`));
45
- }
46
- else {
47
- callback(null, self.db);
48
- }
49
- }
50
- });
51
- }
52
- reset(callback) {
53
- this._getDb((err) => {
54
- if (err) {
55
- return callback(err);
56
- }
57
- this.db.close();
58
- this.indxDb.deleteDatabase(this.dbName);
59
- delete this.db;
60
- this._getDb(callback); // eslint-disable-line no-underscore-dangle
61
- });
62
- }
63
- findById(collectionName, id, callback) {
64
- const tx = this.db.transaction([collectionName]);
65
- const store = tx.objectStore(collectionName);
66
- const request = store.get(parseInt(`${id}`, 10));
67
- if (callback) {
68
- request.onerror = () => {
69
- callback(request.error);
70
- };
71
- }
72
- request.onsuccess = () => {
73
- if (!request.result) {
74
- callback({ message: 'Not Found' });
75
- }
76
- else if (callback) {
77
- callback(null, request.result);
78
- }
79
- };
80
- }
81
- destroyById(collectionName, id, callback) {
82
- const tx = this.db.transaction([collectionName], 'readwrite');
83
- const store = tx.objectStore(collectionName);
84
- const request = store.delete(parseInt(`${id}`, 10));
85
- if (callback) {
86
- request.onerror = () => {
87
- callback(request.error);
88
- };
89
- }
90
- request.onsuccess = () => {
91
- if (callback) {
92
- callback(null, request.result);
93
- }
94
- };
95
- }
96
- findOne(collectionName, conditions, options, callback) {
97
- const tx = this.db.transaction([collectionName]);
98
- const store = tx.objectStore(collectionName);
99
- const conditionsKeys = Object.keys(conditions);
100
- let idx;
101
- let req;
102
- if (conditionsKeys.length > 1) {
103
- const vals = [];
104
- conditionsKeys.forEach((key) => vals.push(conditions[key]));
105
- idx = store.index(`${conditionsKeys.join('')}Index`);
106
- req = idx.get(vals);
107
- }
108
- else {
109
- idx = store.index(`${conditionsKeys[0]}Index`);
110
- req = idx.get(conditions[conditionsKeys[0]]);
111
- }
112
- if (callback) {
113
- req.onerror = () => {
114
- callback(req.error);
115
- };
116
- }
117
- req.onsuccess = (ev) => {
118
- if (!ev.target.result) {
119
- callback({ message: 'Not Found' });
120
- }
121
- else if (callback) {
122
- callback(null, ev.target.result);
123
- }
124
- };
125
- }
126
- find(collectionName, conditions, options, callback) {
127
- const tx = this.db.transaction([collectionName]);
128
- const store = tx.objectStore(collectionName);
129
- const conditionsKeys = Object.keys(conditions);
130
- let idx;
131
- let req;
132
- if (conditionsKeys.length > 1) {
133
- const vals = [];
134
- conditionsKeys.forEach((key) => vals.push(conditions[key]));
135
- idx = store.index(`${conditionsKeys.join('')}Index`);
136
- req = idx.openCursor(vals);
137
- }
138
- else {
139
- idx = store.index(`${conditionsKeys[0]}Index`);
140
- req = idx.openCursor(conditions[conditionsKeys[0]]);
141
- }
142
- req.onerror = () => {
143
- if (callback) {
144
- callback(req.error);
145
- }
146
- };
147
- const items = [];
148
- req.onsuccess = (ev) => {
149
- const cursor = ev.target.result;
150
- if (cursor) {
151
- items.push(cursor.value);
152
- cursor.continue();
153
- }
154
- else if (callback) {
155
- callback(null, items);
156
- }
157
- };
158
- }
159
- save(collectionName, model, callback) {
160
- const record = model; // model.toJson(true, false);
161
- const createNew = () => {
162
- const txN = this.db.transaction([collectionName], 'readwrite');
163
- const request = txN.objectStore(collectionName).add(record);
164
- if (callback) {
165
- request.onerror = () => callback(request.error);
166
- }
167
- request.onsuccess = () => {
168
- record.id = request.result;
169
- if (callback) {
170
- callback(null, record);
171
- }
172
- };
173
- };
174
- const updateOldById = (id) => {
175
- const txO = this.db.transaction([collectionName], 'readwrite');
176
- const storeW = txO.objectStore(collectionName);
177
- const getRequest = storeW.get(id);
178
- if (callback) {
179
- getRequest.onerror = () => callback(getRequest.error);
180
- }
181
- getRequest.onsuccess = () => {
182
- const existing = getRequest.result;
183
- if (!existing) {
184
- callback({ message: 'Not Found' });
185
- }
186
- else {
187
- for (const p of Object.keys(record)) {
188
- existing[p] = record[p];
189
- }
190
- const updateRequest = storeW.put(existing);
191
- updateRequest.onerror = () => callback(updateRequest.error);
192
- updateRequest.onsuccess = () => {
193
- if (typeof (callback) === 'function') {
194
- callback(null, existing);
195
- }
196
- };
197
- }
198
- };
199
- };
200
- if (record.id) {
201
- updateOldById(record.id);
202
- }
203
- else if (record.integration && record.resource) {
204
- this.findOne(collectionName, {
205
- context: record.context || '',
206
- integration: record.integration || '',
207
- resource: record.resource || ''
208
- }, null, (err, existing) => {
209
- if (!existing) {
210
- createNew();
211
- }
212
- else {
213
- updateOldById(existing.id);
214
- }
215
- });
216
- }
217
- else {
218
- createNew();
219
- }
220
- }
221
- createDraftStore() {
222
- const objectStore = this.db.createObjectStore('Draft', { keyPath: 'id', autoIncrement: true });
223
- objectStore.createIndex('contextIndex', 'context', { unique: false });
224
- objectStore.createIndex('contextintegrationIndex', ['context', 'integration'], { unique: false });
225
- objectStore.createIndex('contextintegrationresourceIndex', ['context', 'integration', 'resource'], { unique: true });
226
- }
227
- }
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvY29tbW9uL3V0aWxzL2luZGV4ZWREYlN0b3JlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBY0gsTUFBTSxPQUFPLGNBQWM7SUFLekIsWUFBWSxTQUFpQixNQUFNO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsSUFBSyxNQUFjLENBQUMsWUFBWSxJQUFLLE1BQWMsQ0FBQyxlQUFlLElBQUssTUFBYyxDQUFDLFdBQVcsQ0FBQztJQUNuSSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWdDO1FBQ3JDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDWCxPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hDO1FBQ0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3QyxHQUFHLENBQUMsZUFBZSxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2FBQ3pCO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxRQUFRLEVBQUU7WUFDWixHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBTyxFQUFFLEVBQUU7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QUUsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFO2dCQUM3QixXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFO2dCQUNyQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSxFQUFFO2FBQ2hDLEVBQUUsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUN6QixJQUFJLENBQUMsUUFBUSxFQUFFO29CQUNiLFNBQVMsRUFBRSxDQUFDO2lCQUNiO3FCQUFNO29CQUNMLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzVCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsU0FBUyxFQUFFLENBQUM7U0FDYjtJQUNILENBQUM7SUFFTyxnQkFBZ0I7UUFDdEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9GLFdBQVcsQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3RFLFdBQVcsQ0FBQyxXQUFXLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRyxXQUFXLENBQUMsV0FBVyxDQUFDLGlDQUFpQyxFQUFFLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBAQXV0aG9yOiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQERhdGU6IDIwMjAtMDItMTAgMTg6NDc6NDVcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wMi0yOCAxMzoyOToyM1xuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlUmVjb3JkIHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlIHtcbiAgaW5pdENvbGxlY3Rpb24oY29sbGVjdGlvbk5hbWU6IHN0cmluZywgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogYW55O1xuICBmaW5kQnlJZChjb2xsZWN0aW9uTmFtZSwgaWQ6IG51bWJlciB8IHN0cmluZywgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTogYW55O1xuICBzYXZlKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIHJlY29yZDogYW55LCBjYWxsYmFjaz86IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBhbnk7XG4gIGZpbmQoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgY29uZGl0aW9uczogYW55LCBvcHRpb25zOiBhbnksIGNhbGxiYWNrOiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTtcbiAgZmluZE9uZShjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBjb25kaXRpb25zOiBhbnksIG9wdGlvbnM6IGFueSwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKTtcbn1cblxuZXhwb3J0IGNsYXNzIEluZGV4ZWREYlN0b3JlIGltcGxlbWVudHMgSVN0b3JlIHtcbiAgaW5keERiOiBJREJGYWN0b3J5O1xuICBkYjogSURCRGF0YWJhc2U7XG4gIGRiTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRiTmFtZTogc3RyaW5nID0gJ3ZnaXAnKSB7XG4gICAgdGhpcy5kYk5hbWUgPSBkYk5hbWU7XG4gICAgdGhpcy5pbmR4RGIgPSB3aW5kb3cuaW5kZXhlZERCIHx8ICh3aW5kb3cgYXMgYW55KS5tb3pJbmRleGVkREIgfHwgKHdpbmRvdyBhcyBhbnkpLndlYmtpdEluZGV4ZWREQiB8fCAod2luZG93IGFzIGFueSkubXNJbmRleGVkREI7XG4gIH1cblxuICBfZ2V0RGIoY2FsbGJhY2s6IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpIHtcbiAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICBpZiAodGhpcy5kYikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHRoaXMuZGIpO1xuICAgIH1cbiAgICBjb25zdCByZXEgPSB0aGlzLmluZHhEYi5vcGVuKHRoaXMuZGJOYW1lLCAzKTtcbiAgICByZXEub251cGdyYWRlbmVlZGVkID0gKGV2OiBhbnkpID0+IHtcbiAgICAgIHNlbGYuZGIgPSBldi50YXJnZXQucmVzdWx0O1xuICAgICAgaWYgKCFzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoJ0RyYWZ0JykpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVEcmFmdFN0b3JlKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHJlcS5vbnN1Y2Nlc3MgPSAoZXY6IGFueSkgPT4ge1xuICAgICAgICBzZWxmLmRiID0gZXYudGFyZ2V0LnJlc3VsdDtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgc2VsZi5kYik7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXEub25lcnJvciA9IChldjogYW55KSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2soZXYuZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBpbml0Q29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBjYWxsYmFjazogKGVyciwgcmVzdWx0PykgPT4gdm9pZCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuX2dldERiKChlcnIpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgaWYgKHR5cGVvZihjYWxsYmFjaykgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9IGVsc2UgaWYgKCFzZWxmLmRiLm9iamVjdFN0b3JlTmFtZXMuY29udGFpbnMoY29sbGVjdGlvbk5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihgSURCRGF0YWJhc2Ugc3RvcmUgJHtjb2xsZWN0aW9uTmFtZX0gZG9lcyBub3QgZXhpc3QhYCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHNlbGYuZGIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXNldChjYWxsYmFjazogKGVyciwgcmVzdWx0PykgPT4gdm9pZCkge1xuICAgIHRoaXMuX2dldERiKChlcnIpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGIuY2xvc2UoKTtcbiAgICAgIHRoaXMuaW5keERiLmRlbGV0ZURhdGFiYXNlKHRoaXMuZGJOYW1lKTtcbiAgICAgIGRlbGV0ZSB0aGlzLmRiO1xuICAgICAgdGhpcy5fZ2V0RGIoY2FsbGJhY2spOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgfSk7XG4gIH1cblxuICBmaW5kQnlJZChjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIHwgc3RyaW5nLCBjYWxsYmFjazogKGVyciwgcmVzdWx0PykgPT4gdm9pZCk6IGFueSB7XG4gICAgY29uc3QgdHggPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFtjb2xsZWN0aW9uTmFtZV0pO1xuICAgIGNvbnN0IHN0b3JlID0gdHgub2JqZWN0U3RvcmUoY29sbGVjdGlvbk5hbWUpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSBzdG9yZS5nZXQocGFyc2VJbnQoYCR7aWR9YCwgMTApKTtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgY2FsbGJhY2socmVxdWVzdC5lcnJvcik7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9ICgpID0+IHtcbiAgICAgIGlmICghcmVxdWVzdC5yZXN1bHQpIHtcbiAgICAgICAgY2FsbGJhY2soeyBtZXNzYWdlOiAnTm90IEZvdW5kJyB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVxdWVzdC5yZXN1bHQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBkZXN0cm95QnlJZChjb2xsZWN0aW9uTmFtZTogc3RyaW5nLCBpZDogbnVtYmVyIHwgc3RyaW5nLCBjYWxsYmFjazogKGVyciwgcmVzdWx0PykgPT4gdm9pZCk6IGFueSB7XG4gICAgY29uc3QgdHggPSB0aGlzLmRiLnRyYW5zYWN0aW9uKFtjb2xsZWN0aW9uTmFtZV0sICdyZWFkd3JpdGUnKTtcbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKGNvbGxlY3Rpb25OYW1lKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gc3RvcmUuZGVsZXRlKHBhcnNlSW50KGAke2lkfWAsIDEwKSk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgIGNhbGxiYWNrKHJlcXVlc3QuZXJyb3IpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVxdWVzdC5yZXN1bHQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmaW5kT25lKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGNvbmRpdGlvbnM6IGFueSwgb3B0aW9uczogYW55LCBjYWxsYmFjaz86IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBhbnkge1xuICAgIGNvbnN0IHR4ID0gdGhpcy5kYi50cmFuc2FjdGlvbihbY29sbGVjdGlvbk5hbWVdKTtcbiAgICBjb25zdCBzdG9yZSA9IHR4Lm9iamVjdFN0b3JlKGNvbGxlY3Rpb25OYW1lKTtcbiAgICBjb25zdCBjb25kaXRpb25zS2V5cyA9IE9iamVjdC5rZXlzKGNvbmRpdGlvbnMpO1xuICAgIGxldCBpZHg6IElEQkluZGV4O1xuICAgIGxldCByZXE6IElEQlJlcXVlc3Q7XG4gICAgaWYgKGNvbmRpdGlvbnNLZXlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGNvbnN0IHZhbHMgPSBbXTtcbiAgICAgIGNvbmRpdGlvbnNLZXlzLmZvckVhY2goKGtleSkgPT4gdmFscy5wdXNoKGNvbmRpdGlvbnNba2V5XSkpO1xuICAgICAgaWR4ID0gc3RvcmUuaW5kZXgoYCR7Y29uZGl0aW9uc0tleXMuam9pbignJyl9SW5kZXhgKTtcbiAgICAgIHJlcSA9IGlkeC5nZXQodmFscyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlkeCA9IHN0b3JlLmluZGV4KGAke2NvbmRpdGlvbnNLZXlzWzBdfUluZGV4YCk7XG4gICAgICByZXEgPSBpZHguZ2V0KGNvbmRpdGlvbnNbY29uZGl0aW9uc0tleXNbMF1dKTtcbiAgICB9XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICByZXEub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgY2FsbGJhY2socmVxLmVycm9yKTtcbiAgICAgIH07XG4gICAgfVxuICAgIHJlcS5vbnN1Y2Nlc3MgPSAoZXY6IGFueSkgPT4ge1xuICAgICAgaWYgKCFldi50YXJnZXQucmVzdWx0KSB7XG4gICAgICAgIGNhbGxiYWNrKHsgbWVzc2FnZTogJ05vdCBGb3VuZCcgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGV2LnRhcmdldC5yZXN1bHQpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmaW5kKGNvbGxlY3Rpb25OYW1lOiBzdHJpbmcsIGNvbmRpdGlvbnM6IGFueSwgb3B0aW9uczogYW55LCBjYWxsYmFjaz86IChlcnIsIHJlc3VsdD8pID0+IHZvaWQpOiBBcnJheTxJU3RvcmVSZWNvcmQ+IHwgYW55IHtcbiAgICBjb25zdCB0eCA9IHRoaXMuZGIudHJhbnNhY3Rpb24oW2NvbGxlY3Rpb25OYW1lXSk7XG4gICAgY29uc3Qgc3RvcmUgPSB0eC5vYmplY3RTdG9yZShjb2xsZWN0aW9uTmFtZSk7XG4gICAgY29uc3QgY29uZGl0aW9uc0tleXMgPSBPYmplY3Qua2V5cyhjb25kaXRpb25zKTtcbiAgICBsZXQgaWR4OiBJREJJbmRleDtcbiAgICBsZXQgcmVxOiBJREJSZXF1ZXN0O1xuICAgIGlmIChjb25kaXRpb25zS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCB2YWxzID0gW107XG4gICAgICBjb25kaXRpb25zS2V5cy5mb3JFYWNoKChrZXkpID0+IHZhbHMucHVzaChjb25kaXRpb25zW2tleV0pKTtcbiAgICAgIGlkeCA9IHN0b3JlLmluZGV4KGAke2NvbmRpdGlvbnNLZXlzLmpvaW4oJycpfUluZGV4YCk7XG4gICAgICByZXEgPSBpZHgub3BlbkN1cnNvcih2YWxzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWR4ID0gc3RvcmUuaW5kZXgoYCR7Y29uZGl0aW9uc0tleXNbMF19SW5kZXhgKTtcbiAgICAgIHJlcSA9IGlkeC5vcGVuQ3Vyc29yKGNvbmRpdGlvbnNbY29uZGl0aW9uc0tleXNbMF1dKTtcbiAgICB9XG4gICAgcmVxLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2socmVxLmVycm9yKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgcmVxLm9uc3VjY2VzcyA9IChldjogYW55KSA9PiB7XG4gICAgICBjb25zdCBjdXJzb3IgPSBldi50YXJnZXQucmVzdWx0O1xuICAgICAgaWYgKGN1cnNvcikge1xuICAgICAgICBpdGVtcy5wdXNoKGN1cnNvci52YWx1ZSk7XG4gICAgICAgIGN1cnNvci5jb250aW51ZSgpO1xuICAgICAgfSBlbHNlIGlmIChjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBpdGVtcyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHNhdmUoY29sbGVjdGlvbk5hbWU6IHN0cmluZywgbW9kZWw6IGFueSwgY2FsbGJhY2s/OiAoZXJyLCByZXN1bHQ/KSA9PiB2b2lkKSB7XG4gICAgY29uc3QgcmVjb3JkID0gbW9kZWw7IC8vIG1vZGVsLnRvSnNvbih0cnVlLCBmYWxzZSk7XG4gICAgY29uc3QgY3JlYXRlTmV3ID0gKCkgPT4ge1xuICAgICAgY29uc3QgdHhOID0gdGhpcy5kYi50cmFuc2FjdGlvbihbY29sbGVjdGlvbk5hbWVdLCAncmVhZHdyaXRlJyk7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gdHhOLm9iamVjdFN0b3JlKGNvbGxlY3Rpb25OYW1lKS5hZGQocmVjb3JkKTtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICByZXF1ZXN0Lm9uZXJyb3IgPSAoKSA9PiBjYWxsYmFjayhyZXF1ZXN0LmVycm9yKTtcbiAgICAgIH1cbiAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICByZWNvcmQuaWQgPSByZXF1ZXN0LnJlc3VsdDtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgY2FsbGJhY2sobnVsbCwgcmVjb3JkKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3QgdXBkYXRlT2xkQnlJZCA9IChpZCkgPT4ge1xuICAgICAgY29uc3QgdHhPID0gdGhpcy5kYi50cmFuc2FjdGlvbihbY29sbGVjdGlvbk5hbWVdLCAncmVhZHdyaXRlJyk7XG4gICAgICBjb25zdCBzdG9yZVcgPSB0eE8ub2JqZWN0U3RvcmUoY29sbGVjdGlvbk5hbWUpO1xuICAgICAgY29uc3QgZ2V0UmVxdWVzdCA9IHN0b3JlVy5nZXQoaWQpO1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGdldFJlcXVlc3Qub25lcnJvciA9ICgpID0+IGNhbGxiYWNrKGdldFJlcXVlc3QuZXJyb3IpO1xuICAgICAgfVxuICAgICAgZ2V0UmVxdWVzdC5vbnN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZ2V0UmVxdWVzdC5yZXN1bHQ7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICBjYWxsYmFjayh7IG1lc3NhZ2U6ICdOb3QgRm91bmQnIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBPYmplY3Qua2V5cyhyZWNvcmQpKSB7XG4gICAgICAgICAgICBleGlzdGluZ1twXSA9IHJlY29yZFtwXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgdXBkYXRlUmVxdWVzdCA9IHN0b3JlVy5wdXQoZXhpc3RpbmcpO1xuICAgICAgICAgIHVwZGF0ZVJlcXVlc3Qub25lcnJvciA9ICgpID0+IGNhbGxiYWNrKHVwZGF0ZVJlcXVlc3QuZXJyb3IpO1xuICAgICAgICAgIHVwZGF0ZVJlcXVlc3Qub25zdWNjZXNzID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiAoY2FsbGJhY2spID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGV4aXN0aW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG5cbiAgICBpZiAocmVjb3JkLmlkKSB7XG4gICAgICB1cGRhdGVPbGRCeUlkKHJlY29yZC5pZCk7XG4gICAgfSBlbHNlIGlmIChyZWNvcmQuaW50ZWdyYXRpb24gJiYgcmVjb3JkLnJlc291cmNlKSB7XG4gICAgICB0aGlzLmZpbmRPbmUoY29sbGVjdGlvbk5hbWUsIHtcbiAgICAgICAgY29udGV4dDogcmVjb3JkLmNvbnRleHQgfHwgJycsXG4gICAgICAgIGludGVncmF0aW9uOiByZWNvcmQuaW50ZWdyYXRpb24gfHwgJycsXG4gICAgICAgIHJlc291cmNlOiByZWNvcmQucmVzb3VyY2UgfHwgJydcbiAgICAgIH0sIG51bGwsIChlcnIsIGV4aXN0aW5nKSA9PiB7XG4gICAgICAgIGlmICghZXhpc3RpbmcpIHtcbiAgICAgICAgICBjcmVhdGVOZXcoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB1cGRhdGVPbGRCeUlkKGV4aXN0aW5nLmlkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNyZWF0ZU5ldygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlRHJhZnRTdG9yZSgpIHtcbiAgICBjb25zdCBvYmplY3RTdG9yZSA9IHRoaXMuZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ0RyYWZ0JywgeyBrZXlQYXRoOiAnaWQnLCBhdXRvSW5jcmVtZW50OiB0cnVlIH0pO1xuICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdjb250ZXh0SW5kZXgnLCAnY29udGV4dCcsIHsgdW5pcXVlOiBmYWxzZSB9KTtcbiAgICBvYmplY3RTdG9yZS5jcmVhdGVJbmRleCgnY29udGV4dGludGVncmF0aW9uSW5kZXgnLCBbJ2NvbnRleHQnLCAnaW50ZWdyYXRpb24nXSwgeyB1bmlxdWU6IGZhbHNlIH0pO1xuICAgIG9iamVjdFN0b3JlLmNyZWF0ZUluZGV4KCdjb250ZXh0aW50ZWdyYXRpb25yZXNvdXJjZUluZGV4JywgWydjb250ZXh0JywgJ2ludGVncmF0aW9uJywgJ3Jlc291cmNlJ10sIHsgdW5pcXVlOiB0cnVlIH0pO1xuICB9XG59XG4iXX0=
@@ -1,49 +0,0 @@
1
- /*
2
- * @Author: Alexander.Vangelov@vonage.com
3
- * @Date: 2019-09-19 17:35:19
4
- * @Last Modified by: Alexander.Vangelov@vonage.com
5
- * @Last Modified time: 2020-02-18 15:41:17
6
- */
7
- const wordToMilliseconds = {
8
- now: 0,
9
- seconds: 1000,
10
- minutes: 1000 * 60,
11
- hours: 1000 * 60 * 60,
12
- days: 1000 * 60 * 60 * 24
13
- };
14
- const protoTime = (text) => {
15
- const protoMatch = (text || '').match(/^(-?)((\d+).)?(\S+)$/);
16
- if (protoMatch) {
17
- const negative = protoMatch[1] === '-';
18
- const units = parseInt(protoMatch[3], 10) * (wordToMilliseconds[protoMatch[4]] || 0);
19
- if (negative) {
20
- return -units;
21
- }
22
- else {
23
- return units;
24
- }
25
- }
26
- };
27
- export const relativeTimeBuilder = (type, value, step = 0, base) => {
28
- let timestamp = base || new Date().getTime();
29
- const offset = protoTime(value);
30
- if (offset) {
31
- timestamp = timestamp + offset;
32
- }
33
- if (step) {
34
- if (type === 'date') { // step is days
35
- const mod = timestamp % (step * 1000 * 60 * 60 * 24);
36
- if (mod) {
37
- timestamp = timestamp - mod + (step * 1000 * 60 * 60 * 24);
38
- }
39
- }
40
- else { // step is seconds
41
- const mod = timestamp % (step * 1000);
42
- if (mod) {
43
- timestamp = timestamp - mod + (step * 1000);
44
- }
45
- }
46
- }
47
- return timestamp;
48
- };
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpdmVUaW1lQnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ldGEtdWkvc3JjL2xpYi9jb21tb24vdXRpbHMvcmVsYXRpdmVUaW1lQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE1BQU0sa0JBQWtCLEdBQUc7SUFDekIsR0FBRyxFQUFFLENBQUM7SUFDTixPQUFPLEVBQUUsSUFBSTtJQUNiLE9BQU8sRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUNsQixLQUFLLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFO0lBQ3JCLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO0NBQzFCLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ3pCLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzlELElBQUksVUFBVSxFQUFFO1FBQ2QsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDckYsSUFBSSxRQUFRLEVBQUU7WUFDWixPQUFPLENBQUMsS0FBSyxDQUFDO1NBQ2Y7YUFBTTtZQUNMLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7S0FDRjtBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsSUFBcUQsRUFBRSxLQUFhLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFhLEVBQUUsRUFBRTtJQUNuSSxJQUFJLFNBQVMsR0FBRyxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM3QyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLEVBQUU7UUFDVixTQUFTLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQztLQUNoQztJQUNELElBQUksSUFBSSxFQUFFO1FBQ1IsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLEVBQUUsZUFBZTtZQUNwQyxNQUFNLEdBQUcsR0FBRyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDckQsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsU0FBUyxHQUFHLFNBQVMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7YUFDNUQ7U0FDRjthQUFNLEVBQUcsa0JBQWtCO1lBQzFCLE1BQU0sR0FBRyxHQUFHLFNBQVMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN0QyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxTQUFTLEdBQUcsU0FBUyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQzthQUM3QztTQUNGO0tBQ0Y7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQEF1dGhvcjogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb20gXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOSBcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wMi0xOCAxNTo0MToxN1xuICovXG5cbmNvbnN0IHdvcmRUb01pbGxpc2Vjb25kcyA9IHtcbiAgbm93OiAwLFxuICBzZWNvbmRzOiAxMDAwLFxuICBtaW51dGVzOiAxMDAwICogNjAsXG4gIGhvdXJzOiAxMDAwICogNjAgKiA2MCxcbiAgZGF5czogMTAwMCAqIDYwICogNjAgKiAyNFxufTtcblxuY29uc3QgcHJvdG9UaW1lID0gKHRleHQpID0+IHsgLy8gcHJvdG9jb2wgaXM6IDMwLm1pbnV0ZXMsIC00LmhvdXJzLCAzLmRheXMsIGV0Yy4uLlxuICBjb25zdCBwcm90b01hdGNoID0gKHRleHQgfHwgJycpLm1hdGNoKC9eKC0/KSgoXFxkKykuKT8oXFxTKykkLyk7XG4gIGlmIChwcm90b01hdGNoKSB7XG4gICAgY29uc3QgbmVnYXRpdmUgPSBwcm90b01hdGNoWzFdID09PSAnLSc7XG4gICAgY29uc3QgdW5pdHMgPSBwYXJzZUludChwcm90b01hdGNoWzNdLCAxMCkgKiAod29yZFRvTWlsbGlzZWNvbmRzW3Byb3RvTWF0Y2hbNF1dIHx8IDApO1xuICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgcmV0dXJuIC11bml0cztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuaXRzO1xuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbGF0aXZlVGltZUJ1aWxkZXIgPSAodHlwZTogJ2RhdGUnIHwgJ2RhdGV0aW1lJyB8ICdkYXRldGltZS1sb2NhbCcgfCAndGltZScsIHZhbHVlOiBzdHJpbmcsIHN0ZXAgPSAwLCBiYXNlPzogbnVtYmVyKSA9PiB7XG4gIGxldCB0aW1lc3RhbXAgPSBiYXNlIHx8IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBjb25zdCBvZmZzZXQgPSBwcm90b1RpbWUodmFsdWUpO1xuICBpZiAob2Zmc2V0KSB7XG4gICAgdGltZXN0YW1wID0gdGltZXN0YW1wICsgb2Zmc2V0O1xuICB9XG4gIGlmIChzdGVwKSB7XG4gICAgaWYgKHR5cGUgPT09ICdkYXRlJykgeyAvLyBzdGVwIGlzIGRheXNcbiAgICAgIGNvbnN0IG1vZCA9IHRpbWVzdGFtcCAlIChzdGVwICogMTAwMCAqIDYwICogNjAgKiAyNCk7XG4gICAgICBpZiAobW9kKSB7XG4gICAgICAgIHRpbWVzdGFtcCA9IHRpbWVzdGFtcCAtIG1vZCArIChzdGVwICogMTAwMCAqIDYwICogNjAgKiAyNCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHsgIC8vIHN0ZXAgaXMgc2Vjb25kc1xuICAgICAgY29uc3QgbW9kID0gdGltZXN0YW1wICUgKHN0ZXAgKiAxMDAwKTtcbiAgICAgIGlmIChtb2QpIHtcbiAgICAgICAgdGltZXN0YW1wID0gdGltZXN0YW1wIC0gbW9kICsgKHN0ZXAgKiAxMDAwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRpbWVzdGFtcDtcbn07XG4iXX0=
@@ -1,24 +0,0 @@
1
- /*
2
- * @Author: Alexander.Vangelov@vonage.com
3
- * @Date: 2023-02-08 12:41:56
4
- * @Last Modified by: Alexander.Vangelov@vonage.com
5
- * @Last Modified time: 2023-02-08 14:04:46
6
- */
7
- const pad2Digit = (t) => t < 10 ? '0' + t : t;
8
- export const resourceCardLabel = (r) => {
9
- // eslint-disable-next-line no-underscore-dangle
10
- if (r._vgis && r._vgis.connector === 'CLIO' && r._vgis.resourceType === 'PhoneCommunicationTimer') {
11
- const duration = r.quantity || 0; // in seconds
12
- let durationText = '00:00';
13
- if (duration > 0) {
14
- const hours = Math.floor(duration / 3600);
15
- const minutes = Math.floor((duration % 3600) / 60);
16
- const seconds = Math.round(duration % 60);
17
- const checkHours = hours ? pad2Digit(hours) + ':' : '';
18
- durationText = checkHours + pad2Digit(minutes) + ':' + pad2Digit(seconds);
19
- }
20
- return `⏱ ${durationText} | $${(Math.round(r.price) * 100) / 100} | ${r.non_billable ? 'Non-billable' : 'Billable'}`;
21
- }
22
- return r.Subject || r.subject || r.summary || r.title || r.CaseNumber || r.comment || r.body || r.name || r.topic || r.content || '...';
23
- };
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VDYXJkTGFiZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvY29tbW9uL3V0aWxzL3Jlc291cmNlQ2FyZExhYmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBQ0gsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU5QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFO0lBQzFDLGdEQUFnRDtJQUNoRCxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLHlCQUF5QixFQUFFO1FBQ2pHLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUMvQyxJQUFJLFlBQVksR0FBRyxPQUFPLENBQUM7UUFDM0IsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO1lBQ2hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDMUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFFdkQsWUFBWSxHQUFHLFVBQVUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzRTtRQUNELE9BQU8sS0FBTSxZQUFhLE9BQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUUsR0FBRyxHQUFHLE1BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxVQUFZLEVBQUUsQ0FBQztLQUM3SDtJQUNELE9BQU8sQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7QUFDMUksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBARGF0ZTogMjAyMy0wMi0wOCAxMjo0MTo1NlxuICogQExhc3QgTW9kaWZpZWQgYnk6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIzLTAyLTA4IDE0OjA0OjQ2XG4gKi9cbmNvbnN0IHBhZDJEaWdpdCA9ICh0KSA9PiB0IDwgMTAgPyAnMCcgKyB0IDogdDtcblxuZXhwb3J0IGNvbnN0IHJlc291cmNlQ2FyZExhYmVsID0gKHI6IGFueSkgPT4geyAvLyBUT0RPIG1ha2UgcGlwZSB0byBhc2sgaW50ZWdyYXRpb24gd29ya2VyIGZvciB0aGlzIGluIGFic3RyYWN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICBpZiAoci5fdmdpcyAmJiByLl92Z2lzLmNvbm5lY3RvciA9PT0gJ0NMSU8nICYmIHIuX3ZnaXMucmVzb3VyY2VUeXBlID09PSAnUGhvbmVDb21tdW5pY2F0aW9uVGltZXInKSB7XG4gICAgY29uc3QgZHVyYXRpb24gPSByLnF1YW50aXR5IHx8IDA7IC8vIGluIHNlY29uZHNcbiAgICBsZXQgZHVyYXRpb25UZXh0ID0gJzAwOjAwJztcbiAgICBpZiAoZHVyYXRpb24gPiAwKSB7XG4gICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IoZHVyYXRpb24gLyAzNjAwKTtcbiAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChkdXJhdGlvbiAlIDM2MDApIC8gNjApO1xuICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGgucm91bmQoZHVyYXRpb24gJSA2MCk7XG4gICAgICBjb25zdCBjaGVja0hvdXJzID0gaG91cnMgPyBwYWQyRGlnaXQoaG91cnMpICsgJzonIDogJyc7XG5cbiAgICAgIGR1cmF0aW9uVGV4dCA9IGNoZWNrSG91cnMgKyBwYWQyRGlnaXQobWludXRlcykgKyAnOicgKyBwYWQyRGlnaXQoc2Vjb25kcyk7XG4gICAgfVxuICAgIHJldHVybiBg4o+xICR7IGR1cmF0aW9uVGV4dCB9IHwgJCR7IChNYXRoLnJvdW5kKHIucHJpY2UpICogMTAwICkgLyAxMDB9IHwgJHsgci5ub25fYmlsbGFibGUgPyAnTm9uLWJpbGxhYmxlJyA6ICdCaWxsYWJsZScgIH1gO1xuICB9XG4gIHJldHVybiByLlN1YmplY3QgfHwgci5zdWJqZWN0IHx8IHIuc3VtbWFyeSB8fCByLnRpdGxlIHx8IHIuQ2FzZU51bWJlciB8fCByLmNvbW1lbnQgfHwgci5ib2R5IHx8IHIubmFtZSB8fCByLnRvcGljIHx8IHIuY29udGVudCB8fCAnLi4uJztcbn07XG4iXX0=
@@ -1,31 +0,0 @@
1
- export const extractValueBySmartProp = (rootObj, prop) => {
2
- // { WhoId: { id: 1, type: 'Contact' } } // "WhoId.type" -> 'Contact'
3
- if (rootObj.hasOwnProperty(prop)) {
4
- return rootObj[prop];
5
- }
6
- else {
7
- const parts = prop.split('.');
8
- if (parts.length > 1) {
9
- if (rootObj.hasOwnProperty(parts[0])) {
10
- if (typeof (rootObj[parts[0]]) === 'object' && rootObj[parts[0]][parts[1]]) {
11
- return extractValueBySmartProp(rootObj[parts[0]], prop.substring(parts[0].length + 1));
12
- }
13
- }
14
- }
15
- }
16
- };
17
- export const extractBooleanValueBySmartProp = (rootValue, visibleObj) => {
18
- if (rootValue) {
19
- if (typeof (rootValue) === 'boolean') {
20
- return visibleObj !== rootValue;
21
- }
22
- else {
23
- return rootValue !== '' ? visibleObj !== true : visibleObj !== false;
24
- }
25
- }
26
- else {
27
- // rootValue is undefined
28
- return visibleObj !== false;
29
- }
30
- };
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRQcm9wLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWV0YS11aS9zcmMvbGliL2NvbW1vbi91dGlscy9zbWFydFByb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDdkQsc0VBQXNFO0lBQ3RFLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNoQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QjtTQUFNO1FBQ0wsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDcEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDMUUsT0FBTyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3hGO2FBQ0Y7U0FDRjtLQUNGO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEVBQUU7SUFDdEUsSUFBSSxTQUFTLEVBQUU7UUFDYixJQUFHLE9BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxTQUFTLEVBQUU7WUFDbEMsT0FBTyxVQUFVLEtBQUssU0FBUyxDQUFDO1NBQ2pDO2FBQUk7WUFDSCxPQUFPLFNBQVMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7U0FDdEU7S0FDRjtTQUFNO1FBQ0wseUJBQXlCO1FBQ3pCLE9BQU8sVUFBVSxLQUFLLEtBQUssQ0FBQztLQUM3QjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBleHRyYWN0VmFsdWVCeVNtYXJ0UHJvcCA9IChyb290T2JqLCBwcm9wKSA9PiB7XG4gIC8vICB7IFdob0lkOiB7IGlkOiAxLCB0eXBlOiAnQ29udGFjdCcgfSB9IC8vIFwiV2hvSWQudHlwZVwiIC0+ICdDb250YWN0J1xuICBpZiAocm9vdE9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgIHJldHVybiByb290T2JqW3Byb3BdO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHBhcnRzID0gcHJvcC5zcGxpdCgnLicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAocm9vdE9iai5oYXNPd25Qcm9wZXJ0eShwYXJ0c1swXSkpIHtcbiAgICAgICAgaWYgKHR5cGVvZiAocm9vdE9ialtwYXJ0c1swXV0pID09PSAnb2JqZWN0JyAmJiByb290T2JqW3BhcnRzWzBdXVtwYXJ0c1sxXV0pIHtcbiAgICAgICAgICByZXR1cm4gZXh0cmFjdFZhbHVlQnlTbWFydFByb3Aocm9vdE9ialtwYXJ0c1swXV0sIHByb3Auc3Vic3RyaW5nKHBhcnRzWzBdLmxlbmd0aCArIDEpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGV4dHJhY3RCb29sZWFuVmFsdWVCeVNtYXJ0UHJvcCA9IChyb290VmFsdWUsIHZpc2libGVPYmopID0+IHtcbiAgaWYgKHJvb3RWYWx1ZSkge1xuICAgIGlmKHR5cGVvZihyb290VmFsdWUpID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiB2aXNpYmxlT2JqICE9PSByb290VmFsdWU7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gcm9vdFZhbHVlICE9PSAnJyA/IHZpc2libGVPYmogIT09IHRydWUgOiB2aXNpYmxlT2JqICE9PSBmYWxzZTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gcm9vdFZhbHVlIGlzIHVuZGVmaW5lZFxuICAgIHJldHVybiB2aXNpYmxlT2JqICE9PSBmYWxzZTtcbiAgfVxufTtcbiJdfQ==
@@ -1,103 +0,0 @@
1
- export const templateBuilder = (metaContext, pattern) => {
2
- const context = (metaContext || {}).context;
3
- if (!context) {
4
- if (!pattern || typeof (pattern) !== 'string') {
5
- return;
6
- }
7
- else {
8
- return (pattern || '').replace(/\${\s*([\w.]+)\s*}/g, 'N/A');
9
- }
10
- }
11
- const padTime = (t) => t < 10 ? '0' + t : t;
12
- const patternBuilder = (pattern || '').replace(/\${\s*([\w.]+)\s*}/g, (match, value) => {
13
- switch (value) {
14
- case 'direction': {
15
- return (context[value] || '').toUpperCase() === 'INBOUND' ? 'Inbound' : 'Outbound';
16
- }
17
- case 'name': {
18
- return context.contact ? context.contact.name : (context.callerId || 'Unknown');
19
- }
20
- case 'contact': { // (FE-BE contract violation)
21
- return context.contact ? context.contact.name : (context.callerId || 'Unknown');
22
- }
23
- case 'type': {
24
- return context.type ? context.type : '';
25
- }
26
- case 'phoneNumber': {
27
- return context[value];
28
- }
29
- case 'directionArrow': {
30
- return (context.direction || '').toUpperCase() === 'INBOUND' ? '⬇' : '⬆';
31
- }
32
- case 'timestamp': {
33
- try {
34
- const callTime = new Date(context.answerTime || context.startTime || Date.now());
35
- const date = callTime.toDateString();
36
- const time = callTime.toLocaleTimeString();
37
- return date + ', ' + time;
38
- }
39
- catch (e) {
40
- console.error('context without startTime', e);
41
- }
42
- return '';
43
- }
44
- case 'duration': {
45
- try {
46
- if (typeof (context[value]) === 'number' && context.endTime) {
47
- return '(' + (context[value]).toFixed() + 'ms)';
48
- }
49
- }
50
- catch (e) {
51
- console.error('context without duration', e);
52
- }
53
- return '(0ms)';
54
- }
55
- case 'durationSec': {
56
- try {
57
- if (typeof (context.duration) === 'number' && context.endTime) {
58
- return '(' + (context.duration / 1000).toFixed() + 's)';
59
- }
60
- }
61
- catch (e) {
62
- console.error('call without duration', e);
63
- }
64
- return '(0s)';
65
- }
66
- case 'durationTime': {
67
- try {
68
- if (typeof (context.duration) === 'number' && context.endTime) {
69
- const duration = context.duration / 1000; // convert it to seconds
70
- if (duration < 0) {
71
- return '00:00';
72
- }
73
- const hours = Math.floor(duration / 3600);
74
- const minutes = Math.floor((duration % 3600) / 60);
75
- const seconds = Math.floor(duration % 60);
76
- const checkHours = hours ? padTime(hours) + ':' : '';
77
- return checkHours + padTime(minutes) + ':' + padTime(seconds);
78
- }
79
- }
80
- catch (e) {
81
- console.error('context without duration', e);
82
- }
83
- return '00:00';
84
- }
85
- default: {
86
- const nestedTagMatch = value.match(/(\S+)\.(\S+)/);
87
- if (nestedTagMatch) {
88
- if (typeof (context[nestedTagMatch[1]]) === 'object') {
89
- return context[nestedTagMatch[1]][nestedTagMatch[2]] || '';
90
- }
91
- else {
92
- return '';
93
- }
94
- }
95
- else {
96
- return context[value] || '';
97
- }
98
- }
99
- }
100
- });
101
- return /^\s+$/.test(patternBuilder) ? '' : patternBuilder;
102
- };
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbWV0YS11aS9zcmMvbGliL2NvbW1vbi91dGlscy90ZW1wbGF0ZUJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQ3RELE1BQU0sT0FBTyxHQUFHLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM1QyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ1osSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFO1lBQzVDLE9BQU87U0FDUjthQUFNO1lBQ0wsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDOUQ7S0FDRjtJQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFNUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3JGLFFBQVEsS0FBSyxFQUFFO1lBQ2IsS0FBSyxXQUFXLENBQUMsQ0FBQztnQkFDaEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO2FBQ3JGO1lBQ0QsS0FBSyxNQUFNLENBQUMsQ0FB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Q0wsT0FBTyxFQUFFLENBQUM7cUJBQ1g7aUJBQ0Y7cUJBQU07b0JBQ0wsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUM3QjthQUNGO1NBQ0Y7SUFDSCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7QUFDNUQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHRlbXBsYXRlQnVpbGRlciA9IChtZXRhQ29udGV4dCwgcGF0dGVybikgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gKG1ldGFDb250ZXh0IHx8IHt9KS5jb250ZXh0O1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICBpZiAoIXBhdHRlcm4gfHwgdHlwZW9mKHBhdHRlcm4pICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKHBhdHRlcm4gfHwgJycpLnJlcGxhY2UoL1xcJHtcXHMqKFtcXHcuXSspXFxzKn0vZywgJ04vQScpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBhZFRpbWUgPSAodCkgPT4gdCA8IDEwID8gJzAnICsgdCA6IHQ7XG5cbiAgY29uc3QgcGF0dGVybkJ1aWxkZXIgPSAocGF0dGVybiB8fCAnJykucmVwbGFjZSgvXFwke1xccyooW1xcdy5dKylcXHMqfS9nLCAobWF0Y2gsIHZhbHVlKSA9PiB7XG4gICAgc3dpdGNoICh2YWx1ZSkge1xuICAgICAgY2FzZSAnZGlyZWN0aW9uJzoge1xuICAgICAgICByZXR1cm4gKGNvbnRleHRbdmFsdWVdIHx8ICcnKS50b1VwcGVyQ2FzZSgpID09PSAnSU5CT1VORCcgPyAgJ0luYm91bmQnIDogJ091dGJvdW5kJztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ25hbWUnOiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0LmNvbnRhY3QgPyBjb250ZXh0LmNvbnRhY3QubmFtZSA6IChjb250ZXh0LmNhbGxlcklkIHx8ICdVbmtub3duJyk7XG4gICAgICB9XG4gICAgICBjYXNlICdjb250YWN0JzogeyAvLyAoRkUtQkUgY29udHJhY3QgdmlvbGF0aW9uKVxuICAgICAgICByZXR1cm4gY29udGV4dC5jb250YWN0ID8gY29udGV4dC5jb250YWN0Lm5hbWUgOiAoY29udGV4dC5jYWxsZXJJZCB8fCAnVW5rbm93bicpO1xuICAgICAgfVxuICAgICAgY2FzZSAndHlwZSc6IHtcbiAgICAgICAgcmV0dXJuIGNvbnRleHQudHlwZSA/IGNvbnRleHQudHlwZSA6ICcnO1xuICAgICAgfVxuICAgICAgY2FzZSAncGhvbmVOdW1iZXInOiB7XG4gICAgICAgIHJldHVybiBjb250ZXh0W3ZhbHVlXTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RpcmVjdGlvbkFycm93Jzoge1xuICAgICAgICByZXR1cm4gKGNvbnRleHQuZGlyZWN0aW9uIHx8ICcnKS50b1VwcGVyQ2FzZSgpID09PSAnSU5CT1VORCcgPyAn4qyHJyA6ICfirIYnO1xuICAgICAgfVxuICAgICAgY2FzZSAndGltZXN0YW1wJzoge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGNhbGxUaW1lID0gbmV3IERhdGUoY29udGV4dC5hbnN3ZXJUaW1lIHx8IGNvbnRleHQuc3RhcnRUaW1lIHx8IERhdGUubm93KCkpO1xuICAgICAgICAgIGNvbnN0IGRhdGUgPSBjYWxsVGltZS50b0RhdGVTdHJpbmcoKTtcbiAgICAgICAgICBjb25zdCB0aW1lID0gY2FsbFRpbWUudG9Mb2NhbGVUaW1lU3RyaW5nKCk7XG4gICAgICAgICAgcmV0dXJuIGRhdGUgKyAnLCAnICsgdGltZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NvbnRleHQgd2l0aG91dCBzdGFydFRpbWUnLCBlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBjYXNlICdkdXJhdGlvbic6IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodHlwZW9mIChjb250ZXh0W3ZhbHVlXSkgPT09ICdudW1iZXInICYmIGNvbnRleHQuZW5kVGltZSkge1xuICAgICAgICAgICAgcmV0dXJuICcoJyArIChjb250ZXh0W3ZhbHVlXSkudG9GaXhlZCgpICsgJ21zKSc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignY29udGV4dCB3aXRob3V0IGR1cmF0aW9uJywgZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcoMG1zKSc7XG4gICAgICB9XG4gICAgICBjYXNlICdkdXJhdGlvblNlYyc6IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAodHlwZW9mIChjb250ZXh0LmR1cmF0aW9uKSA9PT0gJ251bWJlcicgJiYgY29udGV4dC5lbmRUaW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gJygnICsgKGNvbnRleHQuZHVyYXRpb24gLyAxMDAwKS50b0ZpeGVkKCkgKyAncyknO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NhbGwgd2l0aG91dCBkdXJhdGlvbicsIGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnKDBzKSc7XG4gICAgICB9XG4gICAgICBjYXNlICdkdXJhdGlvblRpbWUnOiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiAoY29udGV4dC5kdXJhdGlvbikgPT09ICdudW1iZXInICYmIGNvbnRleHQuZW5kVGltZSkge1xuICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSBjb250ZXh0LmR1cmF0aW9uIC8gMTAwMDsgLy8gY29udmVydCBpdCB0byBzZWNvbmRzXG4gICAgICAgICAgICBpZiAoZHVyYXRpb24gPCAwKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnMDA6MDAnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IoZHVyYXRpb24gLyAzNjAwKTtcbiAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKChkdXJhdGlvbiAlIDM2MDApIC8gNjApO1xuICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IE1hdGguZmxvb3IoZHVyYXRpb24gJSA2MCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNoZWNrSG91cnMgPSBob3VycyA/IHBhZFRpbWUoaG91cnMpICsgJzonIDogJyc7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2tIb3VycyArIHBhZFRpbWUobWludXRlcykgKyAnOicgKyBwYWRUaW1lKHNlY29uZHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ2NvbnRleHQgd2l0aG91dCBkdXJhdGlvbicsIGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnMDA6MDAnO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBuZXN0ZWRUYWdNYXRjaCA9IHZhbHVlLm1hdGNoKC8oXFxTKylcXC4oXFxTKykvKTtcbiAgICAgICAgaWYgKG5lc3RlZFRhZ01hdGNoKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZihjb250ZXh0W25lc3RlZFRhZ01hdGNoWzFdXSkgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICByZXR1cm4gY29udGV4dFtuZXN0ZWRUYWdNYXRjaFsxXV1bbmVzdGVkVGFnTWF0Y2hbMl1dIHx8ICcnO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBjb250ZXh0W3ZhbHVlXSB8fCAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIHJldHVybiAvXlxccyskLy50ZXN0KHBhdHRlcm5CdWlsZGVyKSA/ICcnIDogcGF0dGVybkJ1aWxkZXI7XG59O1xuIl19