ngx-scandoc 0.0.1 → 1.0.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 (71) hide show
  1. package/core/app.worker.d.ts +1 -0
  2. package/core/components/components.module.d.ts +8 -0
  3. package/core/components/webcam/domain/webcam-image.d.ts +35 -0
  4. package/core/components/webcam/domain/webcam-init-error.d.ts +4 -0
  5. package/core/components/webcam/domain/webcam-mirror-properties.d.ts +3 -0
  6. package/core/components/webcam/util/webcam.util.d.ts +8 -0
  7. package/core/components/webcam/webcam/webcam.component.d.ts +202 -0
  8. package/core/components/webcam/webcam.module.d.ts +9 -0
  9. package/core/pipes/pipes.module.d.ts +7 -0
  10. package/core/pipes/safeResourceUrl.pipe.d.ts +10 -0
  11. package/core/shared/material.module.d.ts +28 -0
  12. package/dialogs/components/blank/blank.component.d.ts +17 -0
  13. package/dialogs/components/confirm/confirm.component.d.ts +30 -0
  14. package/dialogs/components/loading/loading.component.d.ts +5 -0
  15. package/dialogs/components/scan-mobile/scan-mobile.component.d.ts +16 -0
  16. package/dialogs/components/scan-profile/scan-profile.component.d.ts +124 -0
  17. package/dialogs/components/scan-selfie/scan-selfie.component.d.ts +83 -0
  18. package/dialogs/dialogs.core.provider.d.ts +18 -0
  19. package/dialogs/dialogs.module.d.ts +21 -0
  20. package/esm2020/core/app.worker.mjs +236 -0
  21. package/esm2020/core/components/components.module.mjs +18 -0
  22. package/esm2020/core/components/webcam/domain/webcam-image.mjs +58 -0
  23. package/esm2020/core/components/webcam/domain/webcam-init-error.mjs +3 -0
  24. package/esm2020/core/components/webcam/domain/webcam-mirror-properties.mjs +3 -0
  25. package/esm2020/core/components/webcam/util/webcam.util.mjs +48 -0
  26. package/esm2020/core/components/webcam/webcam/webcam.component.mjs +861 -0
  27. package/esm2020/core/components/webcam/webcam.module.mjs +22 -0
  28. package/esm2020/core/pipes/pipes.module.mjs +19 -0
  29. package/esm2020/core/pipes/safeResourceUrl.pipe.mjs +20 -0
  30. package/esm2020/core/shared/material.module.mjs +162 -0
  31. package/esm2020/dialogs/components/blank/blank.component.mjs +47 -0
  32. package/esm2020/dialogs/components/confirm/confirm.component.mjs +53 -0
  33. package/esm2020/dialogs/components/loading/loading.component.mjs +12 -0
  34. package/esm2020/dialogs/components/scan-mobile/scan-mobile.component.mjs +43 -0
  35. package/esm2020/dialogs/components/scan-profile/scan-profile.component.mjs +756 -0
  36. package/esm2020/dialogs/components/scan-selfie/scan-selfie.component.mjs +392 -0
  37. package/esm2020/dialogs/dialogs.core.provider.mjs +100 -0
  38. package/esm2020/dialogs/dialogs.module.mjs +89 -0
  39. package/esm2020/forms/form.module.mjs +87 -0
  40. package/esm2020/forms/types/avatar.type.mjs +53 -0
  41. package/esm2020/forms/types/profile.image.type.mjs +54 -0
  42. package/esm2020/forms/types/title.type.mjs +60 -0
  43. package/esm2020/lib/ngx-scandoc.module.mjs +28 -11
  44. package/esm2020/providers/auth.provider.mjs +57 -0
  45. package/esm2020/providers/interceptor.provider.mjs +61 -0
  46. package/esm2020/providers/scan.form.mjs +386 -0
  47. package/esm2020/providers/scan.provider.mjs +490 -0
  48. package/esm2020/providers/translation.provider.mjs +50 -0
  49. package/esm2020/providers/webrtc.provider.mjs +58 -0
  50. package/esm2020/public-api.mjs +22 -4
  51. package/fesm2015/ngx-scandoc.mjs +4178 -32
  52. package/fesm2015/ngx-scandoc.mjs.map +1 -1
  53. package/fesm2020/ngx-scandoc.mjs +4154 -32
  54. package/fesm2020/ngx-scandoc.mjs.map +1 -1
  55. package/forms/form.module.d.ts +18 -0
  56. package/forms/types/avatar.type.d.ts +14 -0
  57. package/forms/types/profile.image.type.d.ts +14 -0
  58. package/forms/types/title.type.d.ts +12 -0
  59. package/lib/ngx-scandoc.module.d.ts +20 -2
  60. package/package.json +6 -2
  61. package/providers/auth.provider.d.ts +21 -0
  62. package/providers/interceptor.provider.d.ts +13 -0
  63. package/providers/scan.form.d.ts +13 -0
  64. package/providers/scan.provider.d.ts +239 -0
  65. package/providers/translation.provider.d.ts +9 -0
  66. package/providers/webrtc.provider.d.ts +11 -0
  67. package/public-api.d.ts +21 -3
  68. package/esm2020/lib/ngx-scandoc.component.mjs +0 -22
  69. package/esm2020/lib/ngx-scandoc.service.mjs +0 -14
  70. package/lib/ngx-scandoc.component.d.ts +0 -8
  71. package/lib/ngx-scandoc.service.d.ts +0 -6
@@ -0,0 +1,490 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import moment from 'moment';
5
+ import { HttpHeaders } from '@angular/common/http';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common/http";
8
+ import * as i2 from "./auth.provider";
9
+ export class ScanProvider {
10
+ constructor(http, auth, config) {
11
+ this.http = http;
12
+ this.auth = auth;
13
+ this.config = config;
14
+ this.enableVerification = true;
15
+ this.canStoreImages = true;
16
+ }
17
+ genderList() {
18
+ return {
19
+ M: 'MALE',
20
+ 'M/M': 'MALE',
21
+ F: 'FEMALE',
22
+ 'F/F': 'FEMALE',
23
+ };
24
+ }
25
+ stateless(DocumentFaceImage, LiveFaceImage) {
26
+ const data = {
27
+ AcceptTermsAndConditions: true,
28
+ DataFields: {
29
+ DocumentFaceImageType: 'base64',
30
+ DocumentFaceImage,
31
+ LiveFaceImageType: 'base64',
32
+ LiveFaceImage,
33
+ },
34
+ };
35
+ const $request = this.http.post(this.config.stateLessPath, data);
36
+ return $request;
37
+ }
38
+ sendLog(data) {
39
+ const { TransactionID } = data.Response;
40
+ const $request = this.http.post(this.config.errorLoggingPath, data, {
41
+ headers: new HttpHeaders({
42
+ TransactionID,
43
+ }),
44
+ });
45
+ return $request;
46
+ }
47
+ burst(Images) {
48
+ const data = {
49
+ AcceptTermsAndConditions: true,
50
+ DataFields: {
51
+ Images,
52
+ },
53
+ };
54
+ const $request = this.http.post(this.config.validationPath, data);
55
+ return $request;
56
+ }
57
+ countries() {
58
+ return this.http.get('/assets/data/countries.json').pipe(map((data) => {
59
+ return data.data.map((c) => {
60
+ return { label: c.short.en, value: c.cca2 };
61
+ });
62
+ }));
63
+ }
64
+ countryList() {
65
+ return {
66
+ AFG: 'AF',
67
+ ALB: 'AL',
68
+ DZA: 'DZ',
69
+ ASM: 'AS',
70
+ AND: 'AD',
71
+ AGO: 'AO',
72
+ AIA: 'AI',
73
+ ATG: 'AG',
74
+ ARG: 'AR',
75
+ ARM: 'AM',
76
+ ABW: 'AW',
77
+ AUS: 'AU',
78
+ AUT: 'AT',
79
+ AZE: 'AZ',
80
+ BHS: 'BS',
81
+ BHR: 'BH',
82
+ BGD: 'BD',
83
+ BRB: 'BB',
84
+ BLR: 'BY',
85
+ BEL: 'BE',
86
+ BLZ: 'BZ',
87
+ BEN: 'BJ',
88
+ BMU: 'BM',
89
+ BTN: 'BT',
90
+ BOL: 'BO',
91
+ BIH: 'BA',
92
+ BWA: 'BW',
93
+ BRA: 'BR',
94
+ VGB: 'VG',
95
+ BRN: 'BN',
96
+ BGR: 'BG',
97
+ BFA: 'BF',
98
+ BDI: 'BI',
99
+ KHM: 'KH',
100
+ CMR: 'CM',
101
+ CAN: 'CA',
102
+ CPV: 'CV',
103
+ CAF: 'CF',
104
+ TCD: 'TD',
105
+ CHL: 'CL',
106
+ CHN: 'CN',
107
+ HKG: 'HK',
108
+ MAC: 'MO',
109
+ COL: 'CO',
110
+ COM: 'KM',
111
+ COG: 'CG',
112
+ CRI: 'CR',
113
+ CIV: 'CI',
114
+ HRV: 'HR',
115
+ CUB: 'CU',
116
+ CYP: 'CY',
117
+ CZE: 'CZ',
118
+ DNK: 'DK',
119
+ DJI: 'DJ',
120
+ DMA: 'DM',
121
+ DOM: 'DO',
122
+ ECU: 'EC',
123
+ EGY: 'EG',
124
+ SLV: 'SV',
125
+ GNQ: 'GQ',
126
+ ERI: 'ER',
127
+ EST: 'EE',
128
+ ETH: 'ET',
129
+ FRO: 'FO',
130
+ FJI: 'FJ',
131
+ FIN: 'FI',
132
+ FRA: 'FR',
133
+ GUF: 'GF',
134
+ PYF: 'PF',
135
+ GAB: 'GA',
136
+ GMB: 'GM',
137
+ GEO: 'GE',
138
+ DEU: 'DE',
139
+ GHA: 'GH',
140
+ GRC: 'GR',
141
+ GRL: 'GL',
142
+ GRD: 'GD',
143
+ GLP: 'GP',
144
+ GUM: 'GU',
145
+ GTM: 'GT',
146
+ GNB: 'GW',
147
+ HTI: 'HT',
148
+ HND: 'HN',
149
+ ISL: 'IS',
150
+ IDN: 'ID',
151
+ IRQ: 'IQ',
152
+ ITA: 'IT',
153
+ JPN: 'JP',
154
+ JOR: 'JO',
155
+ KAZ: 'KZ',
156
+ KEN: 'KE',
157
+ KIR: 'KI',
158
+ PRK: 'KP',
159
+ KOR: 'KR',
160
+ KWT: 'KW',
161
+ KGZ: 'KG',
162
+ LAO: 'LA',
163
+ LVA: 'LV',
164
+ LBN: 'LB',
165
+ LSO: 'LS',
166
+ LBR: 'LR',
167
+ LBY: 'LY',
168
+ LIE: 'LI',
169
+ LTU: 'LT',
170
+ LUX: 'LU',
171
+ MDG: 'MG',
172
+ MWI: 'MW',
173
+ MYS: 'MY',
174
+ MDV: 'MV',
175
+ MLI: 'ML',
176
+ MLT: 'MT',
177
+ MHL: 'MH',
178
+ MTQ: 'MQ',
179
+ MRT: 'MR',
180
+ MUS: 'MU',
181
+ MEX: 'MX',
182
+ FSM: 'FM',
183
+ MDA: 'MD',
184
+ MCO: 'MC',
185
+ MNG: 'MN',
186
+ MNE: 'ME',
187
+ MSR: 'MS',
188
+ MAR: 'MA',
189
+ MOZ: 'MZ',
190
+ MMR: 'MM',
191
+ NAM: 'NA',
192
+ NRU: 'NR',
193
+ NPL: 'NP',
194
+ NLD: 'NL',
195
+ ANT: 'AN',
196
+ NCL: 'NC',
197
+ NZL: 'NZ',
198
+ NIC: 'NI',
199
+ NER: 'NE',
200
+ NGA: 'NG',
201
+ MNP: 'MP',
202
+ NOR: 'NO',
203
+ OMN: 'OM',
204
+ PAK: 'PK',
205
+ PLW: 'PW',
206
+ PSE: 'PS',
207
+ PAN: 'PA',
208
+ PNG: 'PG',
209
+ PRY: 'PY',
210
+ PER: 'PE',
211
+ PHL: 'PH',
212
+ PCN: 'PN',
213
+ POL: 'PL',
214
+ PRT: 'PT',
215
+ PRI: 'PR',
216
+ QAT: 'QA',
217
+ REU: 'RE',
218
+ ROU: 'RO',
219
+ RUS: 'RU',
220
+ RWA: 'RW',
221
+ KNA: 'KN',
222
+ LCA: 'LC',
223
+ VCT: 'VC',
224
+ WSM: 'WS',
225
+ SMR: 'SM',
226
+ STP: 'ST',
227
+ SAU: 'SA',
228
+ SEN: 'SN',
229
+ SRB: 'RS',
230
+ SYC: 'SC',
231
+ SLE: 'SL',
232
+ SGP: 'SG',
233
+ SVK: 'SK',
234
+ SVN: 'SI',
235
+ SLB: 'SB',
236
+ SOM: 'SO',
237
+ ZAF: 'ZA',
238
+ ESP: 'ES',
239
+ LKA: 'LK',
240
+ SDN: 'SD',
241
+ SUR: 'SR',
242
+ SWZ: 'SZ',
243
+ SWE: 'SE',
244
+ CHE: 'CH',
245
+ SYR: 'SY',
246
+ TJK: 'TJ',
247
+ TZA: 'TZ',
248
+ THA: 'TH',
249
+ TLS: 'TL',
250
+ TGO: 'TG',
251
+ TON: 'TO',
252
+ TTO: 'TT',
253
+ TUN: 'TN',
254
+ TUR: 'TR',
255
+ TKM: 'TM',
256
+ TUV: 'TV',
257
+ UGA: 'UG',
258
+ UKR: 'UA',
259
+ ARE: 'AE',
260
+ GBR: 'GB',
261
+ USA: 'US',
262
+ URY: 'UY',
263
+ UZB: 'UZ',
264
+ VUT: 'VU',
265
+ VEN: 'VE',
266
+ VNM: 'VN',
267
+ VIR: 'VI',
268
+ YEM: 'YE',
269
+ ZMB: 'ZM',
270
+ ZWE: 'ZW',
271
+ };
272
+ }
273
+ get fields() {
274
+ return [
275
+ {
276
+ key: 'Birth Date',
277
+ form: 'birthDate',
278
+ type: 'date',
279
+ main: false,
280
+ blastKey: 'BirthDate',
281
+ },
282
+ {
283
+ key: 'Given Name',
284
+ form: 'firstName',
285
+ ucFirst: true,
286
+ type: 'string',
287
+ main: true,
288
+ blastKey: 'Name',
289
+ },
290
+ {
291
+ key: 'Surname',
292
+ form: 'lastName',
293
+ ucFirst: true,
294
+ type: 'string',
295
+ main: true,
296
+ blastKey: 'Surname',
297
+ },
298
+ {
299
+ key: 'Sex',
300
+ form: 'gender',
301
+ type: 'gender',
302
+ main: false,
303
+ blastKey: 'Gender',
304
+ },
305
+ {
306
+ key: 'Document Class Name',
307
+ type: 'string',
308
+ form: 'documentType',
309
+ main: false,
310
+ blastKey: 'docType',
311
+ },
312
+ {
313
+ key: 'Document Number',
314
+ type: 'string',
315
+ form: 'documentNumber',
316
+ main: false,
317
+ blastKey: 'DocumentNumber',
318
+ },
319
+ {
320
+ key: 'Issuing State Code',
321
+ type: 'country',
322
+ form: 'issueStateCode',
323
+ blastKey: 'CountryOfIssue',
324
+ main: false,
325
+ },
326
+ {
327
+ key: 'Expiration Date',
328
+ type: 'date',
329
+ form: 'expirationDate',
330
+ blastKey: 'ExpiryDate',
331
+ main: false,
332
+ },
333
+ {
334
+ key: 'Issue Date',
335
+ type: 'date',
336
+ form: 'issueDate',
337
+ blastKey: 'IssuedDate',
338
+ main: false,
339
+ },
340
+ {
341
+ key: 'Birth Place',
342
+ type: 'string',
343
+ form: 'birthPlace',
344
+ blastKey: 'PlaceOfBirth',
345
+ main: false,
346
+ },
347
+ {
348
+ key: 'Issuing Authority',
349
+ type: 'string',
350
+ form: 'issuingPlace',
351
+ blastKey: 'IssuingAuthority',
352
+ main: false,
353
+ },
354
+ {
355
+ key: 'Nationality Code',
356
+ type: 'country',
357
+ form: 'nationality',
358
+ main: false,
359
+ blastKey: 'Nationality',
360
+ },
361
+ {
362
+ key: 'street1',
363
+ type: 'string',
364
+ form: 'street1',
365
+ main: false,
366
+ blastKey: 'AddressStreet',
367
+ },
368
+ {
369
+ key: 'city',
370
+ type: 'string',
371
+ form: 'city',
372
+ main: false,
373
+ blastKey: 'AddressCity',
374
+ },
375
+ {
376
+ key: 'country',
377
+ type: 'country',
378
+ form: 'country',
379
+ main: false,
380
+ blastKey: 'Country',
381
+ },
382
+ {
383
+ key: 'zip',
384
+ type: 'string',
385
+ form: 'zip',
386
+ main: false,
387
+ blastKey: 'AddressZip',
388
+ },
389
+ ];
390
+ }
391
+ parseBlast(results) {
392
+ const countries = this.countryList();
393
+ const genders = this.genderList();
394
+ const data = this.fields;
395
+ const validatedAddressFields = [
396
+ 'AddressCity',
397
+ 'AddressZip',
398
+ 'AddressCounty',
399
+ 'AddressStreet',
400
+ ].filter((key) => results[key].Validated);
401
+ // if no address is validated
402
+ if (validatedAddressFields.length === 0) {
403
+ if (results.Address.Validated) {
404
+ results.AddressStreet = results.Address;
405
+ }
406
+ }
407
+ const out = data.map((itm) => {
408
+ const res = results[itm.blastKey];
409
+ if (res) {
410
+ const value = res.RecommendedValue || '';
411
+ switch (itm.type) {
412
+ case 'string':
413
+ itm.value = value;
414
+ if (itm.ucFirst) {
415
+ const name = value.toLowerCase();
416
+ itm.value = name.charAt(0).toUpperCase() + name.slice(1);
417
+ }
418
+ break;
419
+ case 'date':
420
+ itm.value = value ? moment(value, 'DD.MM.YYYY').toDate() : null;
421
+ // if (value.indexOf('/Date') >= 0) {
422
+ // console.log(value);
423
+ // const timestamp = value.replace(/\D/gm, '');
424
+ // //itm.value = moment.unix(timestamp / 1000).toDate();
425
+ // itm.value = moment(
426
+ // timestamp - moment(timestamp, 'x').utcOffset() * 60 * 1000,
427
+ // 'x',
428
+ // ).toDate();
429
+ // }
430
+ break;
431
+ case 'country':
432
+ itm.value = countries[value] || null;
433
+ break;
434
+ case 'gender':
435
+ itm.value = genders[value] || null;
436
+ }
437
+ }
438
+ return itm;
439
+ });
440
+ const model = {};
441
+ out.forEach((element) => {
442
+ console.log(element);
443
+ model[element.form] = element.value;
444
+ });
445
+ model.documentType = results.Metadata.DocumentType;
446
+ console.log(model);
447
+ return {
448
+ fields: out,
449
+ model,
450
+ };
451
+ }
452
+ blastPost(data) {
453
+ // const $request = this.api.http.get('/assets/json/blastscan.json');
454
+ const $request = this.http.post(this.config.extractionPath, data);
455
+ return $request.pipe(map((m) => {
456
+ if (m.Metadata && m.Metadata.length > 0) {
457
+ const metadata = m.Metadata[0];
458
+ m.Data.Country = {
459
+ RecommendedValue: metadata.Country,
460
+ };
461
+ m.Data.Metadata = metadata;
462
+ }
463
+ return m;
464
+ }));
465
+ }
466
+ blobToDataUrl(file) {
467
+ return Observable.create((obs) => {
468
+ const reader = new FileReader();
469
+ reader.onerror = (err) => obs.error(err);
470
+ reader.onabort = (err) => obs.error(err);
471
+ reader.onload = () => {
472
+ obs.next(reader.result);
473
+ };
474
+ reader.onloadend = () => obs.complete();
475
+ return reader.readAsDataURL(file);
476
+ });
477
+ }
478
+ }
479
+ ScanProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProvider, deps: [{ token: i1.HttpClient }, { token: i2.AuthProvider }, { token: 'config' }], target: i0.ɵɵFactoryTarget.Injectable });
480
+ ScanProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProvider, providedIn: 'root' });
481
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScanProvider, decorators: [{
482
+ type: Injectable,
483
+ args: [{
484
+ providedIn: 'root',
485
+ }]
486
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.AuthProvider }, { type: undefined, decorators: [{
487
+ type: Inject,
488
+ args: ['config']
489
+ }] }]; } });
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zY2FuZG9jL3NyYy9wcm92aWRlcnMvc2Nhbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsVUFBVSxFQUFNLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxHQUFHLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBTy9ELE1BQU0sT0FBTyxZQUFZO0lBSXZCLFlBQ1UsSUFBZ0IsRUFDaEIsSUFBa0IsRUFDQSxNQUFrQjtRQUZwQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFNBQUksR0FBSixJQUFJLENBQWM7UUFDQSxXQUFNLEdBQU4sTUFBTSxDQUFZO1FBTDlDLHVCQUFrQixHQUFHLElBQUksQ0FBQztRQUMxQixtQkFBYyxHQUFHLElBQUksQ0FBQztJQUtuQixDQUFDO0lBQ0osVUFBVTtRQUNSLE9BQU87WUFDTCxDQUFDLEVBQUUsTUFBTTtZQUNULEtBQUssRUFBRSxNQUFNO1lBQ2IsQ0FBQyxFQUFFLFFBQVE7WUFDWCxLQUFLLEVBQUUsUUFBUTtTQUNoQixDQUFDO0lBQ0osQ0FBQztJQUVELFNBQVMsQ0FBQyxpQkFBc0IsRUFBRSxhQUFrQjtRQUNsRCxNQUFNLElBQUksR0FBRztZQUNYLHdCQUF3QixFQUFFLElBQUk7WUFDOUIsVUFBVSxFQUFFO2dCQUNWLHFCQUFxQixFQUFFLFFBQVE7Z0JBQy9CLGlCQUFpQjtnQkFDakIsaUJBQWlCLEVBQUUsUUFBUTtnQkFDM0IsYUFBYTthQUNkO1NBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBUztRQUNmLE1BQU0sRUFBRSxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFO1lBQ2xFLE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDdkIsYUFBYTthQUNkLENBQUM7U0FDSCxDQUFDLENBQUM7UUFDSCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQWdCO1FBQ3BCLE1BQU0sSUFBSSxHQUFHO1lBQ1gsd0JBQXdCLEVBQUUsSUFBSTtZQUM5QixVQUFVLEVBQUU7Z0JBQ1YsTUFBTTthQUNQO1NBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDLElBQUksQ0FDdEQsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO2dCQUM5QixPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxFQUFFLElBQUk7WUFDVCxHQUFH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MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVFJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gJy4vYXV0aC5wcm92aWRlcic7XG5pbXBvcnQgeyBTY2FuQ29uZmlnIH0gZnJvbSAnLi4vbGliL25neC1zY2FuZG9jLm1vZHVsZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTY2FuUHJvdmlkZXIge1xuXG4gIGVuYWJsZVZlcmlmaWNhdGlvbiA9IHRydWU7XG4gIGNhblN0b3JlSW1hZ2VzID0gdHJ1ZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgYXV0aDogQXV0aFByb3ZpZGVyLFxuICAgIEBJbmplY3QoJ2NvbmZpZycpIHByaXZhdGUgY29uZmlnOiBTY2FuQ29uZmlnXG4gICkge31cbiAgZ2VuZGVyTGlzdCgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgTTogJ01BTEUnLFxuICAgICAgJ00vTSc6ICdNQUxFJyxcbiAgICAgIEY6ICdGRU1BTEUnLFxuICAgICAgJ0YvRic6ICdGRU1BTEUnLFxuICAgIH07XG4gIH1cblxuICBzdGF0ZWxlc3MoRG9jdW1lbnRGYWNlSW1hZ2U6IGFueSwgTGl2ZUZhY2VJbWFnZTogYW55KSB7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIEFjY2VwdFRlcm1zQW5kQ29uZGl0aW9uczogdHJ1ZSxcbiAgICAgIERhdGFGaWVsZHM6IHtcbiAgICAgICAgRG9jdW1lbnRGYWNlSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgRG9jdW1lbnRGYWNlSW1hZ2UsXG4gICAgICAgIExpdmVGYWNlSW1hZ2VUeXBlOiAnYmFzZTY0JyxcbiAgICAgICAgTGl2ZUZhY2VJbWFnZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCAkcmVxdWVzdCA9IHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLnN0YXRlTGVzc1BhdGgsIGRhdGEpO1xuICAgIHJldHVybiAkcmVxdWVzdDtcbiAgfVxuXG4gIHNlbmRMb2coZGF0YTogYW55KSB7XG4gICAgY29uc3QgeyBUcmFuc2FjdGlvbklEIH0gPSBkYXRhLlJlc3BvbnNlO1xuICAgIGNvbnN0ICRyZXF1ZXN0ID0gdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuZXJyb3JMb2dnaW5nUGF0aCwgZGF0YSwge1xuICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgVHJhbnNhY3Rpb25JRCxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIHJldHVybiAkcmVxdWVzdDtcbiAgfVxuXG4gIGJ1cnN0KEltYWdlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgQWNjZXB0VGVybXNBbmRDb25kaXRpb25zOiB0cnVlLFxuICAgICAgRGF0YUZpZWxkczoge1xuICAgICAgICBJbWFnZXMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCAkcmVxdWVzdCA9IHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLnZhbGlkYXRpb25QYXRoLCBkYXRhKTtcbiAgICByZXR1cm4gJHJlcXVlc3Q7XG4gIH1cblxuICBjb3VudHJpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJy9hc3NldHMvZGF0YS9jb3VudHJpZXMuanNvbicpLnBpcGUoXG4gICAgICBtYXAoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gZGF0YS5kYXRhLm1hcCgoYzogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGMuc2hvcnQuZW4sIHZhbHVlOiBjLmNjYTIgfTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgY291bnRyeUxpc3QoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEFGRzogJ0FGJyxcbiAgICAgIEFMQjogJ0FMJyxcbiAgICAgIERaQTogJ0RaJyxcbiAgICAgIEFTTTogJ0FTJyxcbiAgICAgIEFORDogJ0FEJyxcbiAgICAgIEFHTzogJ0FPJyxcbiAgICAgIEFJQTogJ0FJJyxcbiAgICAgIEFURzogJ0FHJyxcbiAgICAgIEFSRzogJ0FSJyxcbiAgICAgIEFSTTogJ0FNJyxcbiAgICAgIEFCVzogJ0FXJyxcbiAgICAgIEFVUzogJ0FVJyxcbiAgICAgIEFVVDogJ0FUJyxcbiAgICAgIEFaRTogJ0FaJyxcbiAgICAgIEJIUzogJ0JTJyxcbiAgICAgIEJIUjogJ0JIJyxcbiAgICAgIEJHRDogJ0JEJyxcbiAgICAgIEJSQjogJ0JCJyxcbiAgICAgIEJMUjogJ0JZJyxcbiAgICAgIEJFTDogJ0JFJyxcbiAgICAgIEJMWjogJ0JaJyxcbiAgICAgIEJFTjogJ0JKJyxcbiAgICAgIEJNVTogJ0JNJyxcbiAgICAgIEJUTjogJ0JUJyxcbiAgICAgIEJPTDogJ0JPJyxcbiAgICAgIEJJSDogJ0JBJyxcbiAgICAgIEJXQTogJ0JXJyxcbiAgICAgIEJSQTogJ0JSJyxcbiAgICAgIFZHQjogJ1ZHJyxcbiAgICAgIEJSTjogJ0JOJyxcbiAgICAgIEJHUjogJ0JHJyxcbiAgICAgIEJGQTogJ0JGJyxcbiAgICAgIEJESTogJ0JJJyxcbiAgICAgIEtITTogJ0tIJyxcbiAgICAgIENNUjogJ0NNJyxcbiAgICAgIENBTjogJ0NBJyxcbiAgICAgIENQVjogJ0NWJyxcbiAgICAgIENBRjogJ0NGJyxcbiAgICAgIFRDRDogJ1REJyxcbiAgICAgIENITDogJ0NMJyxcbiAgICAgIENITjogJ0NOJyxcbiAgICAgIEhLRzogJ0hLJyxcbiAgICAgIE1BQzogJ01PJyxcbiAgICAgIENPTDogJ0NPJyxcbiAgICAgIENPTTogJ0tNJyxcbiAgICAgIENPRzogJ0NHJyxcbiAgICAgIENSSTogJ0NSJyxcbiAgICAgIENJVjogJ0NJJyxcbiAgICAgIEhSVjogJ0hSJyxcbiAgICAgIENVQjogJ0NVJyxcbiAgICAgIENZUDogJ0NZJyxcbiAgICAgIENaRTogJ0NaJyxcbiAgICAgIEROSzogJ0RLJyxcbiAgICAgIERKSTogJ0RKJyxcbiAgICAgIERNQTogJ0RNJyxcbiAgICAgIERPTTogJ0RPJyxcbiAgICAgIEVDVTogJ0VDJyxcbiAgICAgIEVHWTogJ0VHJyxcbiAgICAgIFNMVjogJ1NWJyxcbiAgICAgIEdOUTogJ0dRJyxcbiAgICAgIEVSSTogJ0VSJyxcbiAgICAgIEVTVDogJ0VFJyxcbiAgICAgIEVUSDogJ0VUJyxcbiAgICAgIEZSTzogJ0ZPJyxcbiAgICAgIEZKSTogJ0ZKJyxcbiAgICAgIEZJTjogJ0ZJJyxcbiAgICAgIEZSQTogJ0ZSJyxcbiAgICAgIEdVRjogJ0dGJyxcbiAgICAgIFBZRjogJ1BGJyxcbiAgICAgIEdBQjogJ0dBJyxcbiAgICAgIEdNQjogJ0dNJyxcbiAgICAgIEdFTzogJ0dFJyxcbiAgICAgIERFVTogJ0RFJyxcbiAgICAgIEdIQTogJ0dIJyxcbiAgICAgIEdSQzogJ0dSJyxcbiAgICAgIEdSTDogJ0dMJyxcbiAgICAgIEdSRDogJ0dEJyxcbiAgICAgIEdMUDogJ0dQJyxcbiAgICAgIEdVTTogJ0dVJyxcbiAgICAgIEdUTTogJ0dUJyxcbiAgICAgIEdOQjogJ0dXJyxcbiAgICAgIEhUSTogJ0hUJyxcbiAgICAgIEhORDogJ0hOJyxcbiAgICAgIElTTDogJ0lTJyxcbiAgICAgIElETjogJ0lEJyxcbiAgICAgIElSUTogJ0lRJyxcbiAgICAgIElUQTogJ0lUJyxcbiAgICAgIEpQTjogJ0pQJyxcbiAgICAgIEpPUjogJ0pPJyxcbiAgICAgIEtBWjogJ0taJyxcbiAgICAgIEtFTjogJ0tFJyxcbiAgICAgIEtJUjogJ0tJJyxcbiAgICAgIFBSSzogJ0tQJyxcbiAgICAgIEtPUjogJ0tSJyxcbiAgICAgIEtXVDogJ0tXJyxcbiAgICAgIEtHWjogJ0tHJyxcbiAgICAgIExBTzogJ0xBJyxcbiAgICAgIExWQTogJ0xWJyxcbiAgICAgIExCTjogJ0xCJyxcbiAgICAgIExTTzogJ0xTJyxcbiAgICAgIExCUjogJ0xSJyxcbiAgICAgIExCWTogJ0xZJyxcbiAgICAgIExJRTogJ0xJJyxcbiAgICAgIExUVTogJ0xUJyxcbiAgICAgIExVWDogJ0xVJyxcbiAgICAgIE1ERzogJ01HJyxcbiAgICAgIE1XSTogJ01XJyxcbiAgICAgIE1ZUzogJ01ZJyxcbiAgICAgIE1EVjogJ01WJyxcbiAgICAgIE1MSTogJ01MJyxcbiAgICAgIE1MVDogJ01UJyxcbiAgICAgIE1ITDogJ01IJyxcbiAgICAgIE1UUTogJ01RJyxcbiAgICAgIE1SVDogJ01SJyxcbiAgICAgIE1VUzogJ01VJyxcbiAgICAgIE1FWDogJ01YJyxcbiAgICAgIEZTTTogJ0ZNJyxcbiAgICAgIE1EQTogJ01EJyxcbiAgICAgIE1DTzogJ01DJyxcbiAgICAgIE1ORzogJ01OJyxcbiAgICAgIE1ORTogJ01FJyxcbiAgICAgIE1TUjogJ01TJyxcbiAgICAgIE1BUjogJ01BJyxcbiAgICAgIE1PWjogJ01aJyxcbiAgICAgIE1NUjogJ01NJyxcbiAgICAgIE5BTTogJ05BJyxcbiAgICAgIE5SVTogJ05SJyxcbiAgICAgIE5QTDogJ05QJyxcbiAgICAgIE5MRDogJ05MJyxcbiAgICAgIEFOVDogJ0FOJyxcbiAgICAgIE5DTDogJ05DJyxcbiAgICAgIE5aTDogJ05aJyxcbiAgICAgIE5JQzogJ05JJyxcbiAgICAgIE5FUjogJ05FJyxcbiAgICAgIE5HQTogJ05HJyxcbiAgICAgIE1OUDogJ01QJyxcbiAgICAgIE5PUjogJ05PJyxcbiAgICAgIE9NTjogJ09NJyxcbiAgICAgIFBBSzogJ1BLJyxcbiAgICAgIFBMVzogJ1BXJyxcbiAgICAgIFBTRTogJ1BTJyxcbiAgICAgIFBBTjogJ1BBJyxcbiAgICAgIFBORzogJ1BHJyxcbiAgICAgIFBSWTogJ1BZJyxcbiAgICAgIFBFUjogJ1BFJyxcbiAgICAgIFBITDogJ1BIJyxcbiAgICAgIFBDTjogJ1BOJyxcbiAgICAgIFBPTDogJ1BMJyxcbiAgICAgIFBSVDogJ1BUJyxcbiAgICAgIFBSSTogJ1BSJyxcbiAgICAgIFFBVDogJ1FBJyxcbiAgICAgIFJFVTogJ1JFJyxcbiAgICAgIFJPVTogJ1JPJyxcbiAgICAgIFJVUzogJ1JVJyxcbiAgICAgIFJXQTogJ1JXJyxcbiAgICAgIEtOQTogJ0tOJyxcbiAgICAgIExDQTogJ0xDJyxcbiAgICAgIFZDVDogJ1ZDJyxcbiAgICAgIFdTTTogJ1dTJyxcbiAgICAgIFNNUjogJ1NNJyxcbiAgICAgIFNUUDogJ1NUJyxcbiAgICAgIFNBVTogJ1NBJyxcbiAgICAgIFNFTjogJ1NOJyxcbiAgICAgIFNSQjogJ1JTJyxcbiAgICAgIFNZQzogJ1NDJyxcbiAgICAgIFNMRTogJ1NMJyxcbiAgICAgIFNHUDogJ1NHJyxcbiAgICAgIFNWSzogJ1NLJyxcbiAgICAgIFNWTjogJ1NJJyxcbiAgICAgIFNMQjogJ1NCJyxcbiAgICAgIFNPTTogJ1NPJyxcbiAgICAgIFpBRjogJ1pBJyxcbiAgICAgIEVTUDogJ0VTJyxcbiAgICAgIExLQTogJ0xLJyxcbiAgICAgIFNETjogJ1NEJyxcbiAgICAgIFNVUjogJ1NSJyxcbiAgICAgIFNXWjogJ1NaJyxcbiAgICAgIFNXRTogJ1NFJyxcbiAgICAgIENIRTogJ0NIJyxcbiAgICAgIFNZUjogJ1NZJyxcbiAgICAgIFRKSzogJ1RKJyxcbiAgICAgIFRaQTogJ1RaJyxcbiAgICAgIFRIQTogJ1RIJyxcbiAgICAgIFRMUzogJ1RMJyxcbiAgICAgIFRHTzogJ1RHJyxcbiAgICAgIFRPTjogJ1RPJyxcbiAgICAgIFRUTzogJ1RUJyxcbiAgICAgIFRVTjogJ1ROJyxcbiAgICAgIFRVUjogJ1RSJyxcbiAgICAgIFRLTTogJ1RNJyxcbiAgICAgIFRVVjogJ1RWJyxcbiAgICAgIFVHQTogJ1VHJyxcbiAgICAgIFVLUjogJ1VBJyxcbiAgICAgIEFSRTogJ0FFJyxcbiAgICAgIEdCUjogJ0dCJyxcbiAgICAgIFVTQTogJ1VTJyxcbiAgICAgIFVSWTogJ1VZJyxcbiAgICAgIFVaQjogJ1VaJyxcbiAgICAgIFZVVDogJ1ZVJyxcbiAgICAgIFZFTjogJ1ZFJyxcbiAgICAgIFZOTTogJ1ZOJyxcbiAgICAgIFZJUjogJ1ZJJyxcbiAgICAgIFlFTTogJ1lFJyxcbiAgICAgIFpNQjogJ1pNJyxcbiAgICAgIFpXRTogJ1pXJyxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGZpZWxkcygpOiBhbnkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGtleTogJ0JpcnRoIERhdGUnLFxuICAgICAgICBmb3JtOiAnYmlydGhEYXRlJyxcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgICAgYmxhc3RLZXk6ICdCaXJ0aERhdGUnLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBrZXk6ICdHaXZlbiBOYW1lJyxcbiAgICAgICAgZm9ybTogJ2ZpcnN0TmFtZScsXG4gICAgICAgIHVjRmlyc3Q6IHRydWUsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBtYWluOiB0cnVlLFxuICAgICAgICBibGFzdEtleTogJ05hbWUnLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnU3VybmFtZScsXG4gICAgICAgIGZvcm06ICdsYXN0TmFtZScsXG4gICAgICAgIHVjRmlyc3Q6IHRydWUsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBtYWluOiB0cnVlLFxuICAgICAgICBibGFzdEtleTogJ1N1cm5hbWUnLFxuICAgICAgfSxcblxuICAgICAge1xuICAgICAgICBrZXk6ICdTZXgnLFxuICAgICAgICBmb3JtOiAnZ2VuZGVyJyxcbiAgICAgICAgdHlwZTogJ2dlbmRlcicsXG4gICAgICAgIG1haW46IGZhbHNlLFxuICAgICAgICBibGFzdEtleTogJ0dlbmRlcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdEb2N1bWVudCBDbGFzcyBOYW1lJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGZvcm06ICdkb2N1bWVudFR5cGUnLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgICAgYmxhc3RLZXk6ICdkb2NUeXBlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ0RvY3VtZW50IE51bWJlcicsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBmb3JtOiAnZG9jdW1lbnROdW1iZXInLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgICAgYmxhc3RLZXk6ICdEb2N1bWVudE51bWJlcicsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdJc3N1aW5nIFN0YXRlIENvZGUnLFxuICAgICAgICB0eXBlOiAnY291bnRyeScsXG4gICAgICAgIGZvcm06ICdpc3N1ZVN0YXRlQ29kZScsXG4gICAgICAgIGJsYXN0S2V5OiAnQ291bnRyeU9mSXNzdWUnLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ0V4cGlyYXRpb24gRGF0ZScsXG4gICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgZm9ybTogJ2V4cGlyYXRpb25EYXRlJyxcbiAgICAgICAgYmxhc3RLZXk6ICdFeHBpcnlEYXRlJyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdJc3N1ZSBEYXRlJyxcbiAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICBmb3JtOiAnaXNzdWVEYXRlJyxcbiAgICAgICAgYmxhc3RLZXk6ICdJc3N1ZWREYXRlJyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdCaXJ0aCBQbGFjZScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBmb3JtOiAnYmlydGhQbGFjZScsXG4gICAgICAgIGJsYXN0S2V5OiAnUGxhY2VPZkJpcnRoJyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdJc3N1aW5nIEF1dGhvcml0eScsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBmb3JtOiAnaXNzdWluZ1BsYWNlJyxcbiAgICAgICAgYmxhc3RLZXk6ICdJc3N1aW5nQXV0aG9yaXR5JyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdOYXRpb25hbGl0eSBDb2RlJyxcbiAgICAgICAgdHlwZTogJ2NvdW50cnknLFxuICAgICAgICBmb3JtOiAnbmF0aW9uYWxpdHknLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgICAgYmxhc3RLZXk6ICdOYXRpb25hbGl0eScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdzdHJlZXQxJyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGZvcm06ICdzdHJlZXQxJyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICAgIGJsYXN0S2V5OiAnQWRkcmVzc1N0cmVldCcsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdjaXR5JyxcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIGZvcm06ICdjaXR5JyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICAgIGJsYXN0S2V5OiAnQWRkcmVzc0NpdHknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnY291bnRyeScsXG4gICAgICAgIHR5cGU6ICdjb3VudHJ5JyxcbiAgICAgICAgZm9ybTogJ2NvdW50cnknLFxuICAgICAgICBtYWluOiBmYWxzZSxcbiAgICAgICAgYmxhc3RLZXk6ICdDb3VudHJ5JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3ppcCcsXG4gICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICBmb3JtOiAnemlwJyxcbiAgICAgICAgbWFpbjogZmFsc2UsXG4gICAgICAgIGJsYXN0S2V5OiAnQWRkcmVzc1ppcCcsXG4gICAgICB9LFxuICAgIF07XG4gIH1cbiAgcGFyc2VCbGFzdChyZXN1bHRzOiBhbnkpIHtcbiAgICBjb25zdCBjb3VudHJpZXM6IGFueSA9IHRoaXMuY291bnRyeUxpc3QoKTtcbiAgICBjb25zdCBnZW5kZXJzOiBhbnkgPSB0aGlzLmdlbmRlckxpc3QoKTtcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB0aGlzLmZpZWxkcztcblxuICAgIGNvbnN0IHZhbGlkYXRlZEFkZHJlc3NGaWVsZHMgPSBbXG4gICAgICAnQWRkcmVzc0NpdHknLFxuICAgICAgJ0FkZHJlc3NaaXAnLFxuICAgICAgJ0FkZHJlc3NDb3VudHknLFxuICAgICAgJ0FkZHJlc3NTdHJlZXQnLFxuICAgIF0uZmlsdGVyKChrZXkpID0+IHJlc3VsdHNba2V5XS5WYWxpZGF0ZWQpO1xuXG4gICAgLy8gaWYgbm8gYWRkcmVzcyBpcyB2YWxpZGF0ZWRcbiAgICBpZiAodmFsaWRhdGVkQWRkcmVzc0ZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmIChyZXN1bHRzLkFkZHJlc3MuVmFsaWRhdGVkKSB7XG4gICAgICAgIHJlc3VsdHMuQWRkcmVzc1N0cmVldCA9IHJlc3VsdHMuQWRkcmVzcztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvdXQgPSBkYXRhLm1hcCgoaXRtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHJlc3VsdHNbaXRtLmJsYXN0S2V5XTtcbiAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSByZXMuUmVjb21tZW5kZWRWYWx1ZSB8fCAnJztcblxuICAgICAgICBzd2l0Y2ggKGl0bS50eXBlKSB7XG4gICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgIGl0bS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKGl0bS51Y0ZpcnN0KSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICBpdG0udmFsdWUgPSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgICAgaXRtLnZhbHVlID0gdmFsdWUgPyBtb21lbnQodmFsdWUsICdERC5NTS5ZWVlZJykudG9EYXRlKCkgOiBudWxsO1xuICAgICAgICAgICAgLy8gaWYgKHZhbHVlLmluZGV4T2YoJy9EYXRlJykgPj0gMCkge1xuICAgICAgICAgICAgLy8gICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gICAgICAgICAgICAvLyAgIGNvbnN0IHRpbWVzdGFtcCA9IHZhbHVlLnJlcGxhY2UoL1xcRC9nbSwgJycpO1xuICAgICAgICAgICAgLy8gICAvL2l0bS52YWx1ZSA9IG1vbWVudC51bml4KHRpbWVzdGFtcCAvIDEwMDApLnRvRGF0ZSgpO1xuICAgICAgICAgICAgLy8gICBpdG0udmFsdWUgPSBtb21lbnQoXG4gICAgICAgICAgICAvLyAgICAgdGltZXN0YW1wIC0gbW9tZW50KHRpbWVzdGFtcCwgJ3gnKS51dGNPZmZzZXQoKSAqIDYwICogMTAwMCxcbiAgICAgICAgICAgIC8vICAgICAneCcsXG4gICAgICAgICAgICAvLyAgICkudG9EYXRlKCk7XG4gICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2NvdW50cnknOlxuICAgICAgICAgICAgaXRtLnZhbHVlID0gY291bnRyaWVzW3ZhbHVlXSB8fCBudWxsO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnZ2VuZGVyJzpcbiAgICAgICAgICAgIGl0bS52YWx1ZSA9IGdlbmRlcnNbdmFsdWVdIHx8IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBpdG07XG4gICAgfSk7XG5cbiAgICBjb25zdCBtb2RlbDogYW55ID0ge307XG5cbiAgICBvdXQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhlbGVtZW50KTtcbiAgICAgIG1vZGVsW2VsZW1lbnQuZm9ybV0gPSBlbGVtZW50LnZhbHVlO1xuICAgIH0pO1xuXG4gICAgbW9kZWwuZG9jdW1lbnRUeXBlID0gcmVzdWx0cy5NZXRhZGF0YS5Eb2N1bWVudFR5cGU7XG5cbiAgICBjb25zb2xlLmxvZyhtb2RlbCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiBvdXQsXG4gICAgICBtb2RlbCxcbiAgICB9O1xuICB9XG5cbiAgYmxhc3RQb3N0KGRhdGE6IGFueSkge1xuICAgIC8vIGNvbnN0ICRyZXF1ZXN0ID0gdGhpcy5hcGkuaHR0cC5nZXQoJy9hc3NldHMvanNvbi9ibGFzdHNjYW4uanNvbicpO1xuXG4gICAgY29uc3QgJHJlcXVlc3QgPSB0aGlzLmh0dHAucG9zdCh0aGlzLmNvbmZpZy5leHRyYWN0aW9uUGF0aCwgZGF0YSk7XG5cbiAgICByZXR1cm4gJHJlcXVlc3QucGlwZShcbiAgICAgIG1hcCgobTogYW55KSA9PiB7XG4gICAgICAgIGlmIChtLk1ldGFkYXRhICYmIG0uTWV0YWRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0gbS5NZXRhZGF0YVswXTtcbiAgICAgICAgICBtLkRhdGEuQ291bnRyeSA9IHtcbiAgICAgICAgICAgIFJlY29tbWVuZGVkVmFsdWU6IG1ldGFkYXRhLkNvdW50cnksXG4gICAgICAgICAgfTtcbiAgICAgICAgICBtLkRhdGEuTWV0YWRhdGEgPSBtZXRhZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGJsb2JUb0RhdGFVcmwoZmlsZTogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gT2JzZXJ2YWJsZS5jcmVhdGUoKG9iczogYW55KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyKSA9PiBvYnMuZXJyb3IoZXJyKTtcbiAgICAgIHJlYWRlci5vbmFib3J0ID0gKGVycikgPT4gb2JzLmVycm9yKGVycik7XG4gICAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgICBvYnMubmV4dChyZWFkZXIucmVzdWx0KTtcbiAgICAgIH07XG4gICAgICByZWFkZXIub25sb2FkZW5kID0gKCkgPT4gb2JzLmNvbXBsZXRlKCk7XG4gICAgICByZXR1cm4gcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,50 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ export class TranslationProvider {
5
+ constructor(translate) {
6
+ this.translate = translate;
7
+ }
8
+ forms(item, namespace = null) {
9
+ if (item.fieldGroup) {
10
+ item.fieldGroup = item.fieldGroup.map((field) => this.forms(field));
11
+ }
12
+ const prefix = namespace ? namespace + '.' : '';
13
+ if (item.templateOptions &&
14
+ (item.templateOptions.label ||
15
+ item.templateOptions.placeholder ||
16
+ item.templateOptions.options)) {
17
+ if (!item.expressionProperties) {
18
+ item.expressionProperties = {};
19
+ }
20
+ if (item.templateOptions.label) {
21
+ item.expressionProperties['templateOptions.label'] =
22
+ this.translate.stream(prefix + item.templateOptions.label);
23
+ }
24
+ if (item.templateOptions.placeholder) {
25
+ item.expressionProperties['templateOptions.placeholder'] =
26
+ this.translate.stream(prefix + item.templateOptions.placeholder);
27
+ }
28
+ if (Array.isArray(item.templateOptions.options)) {
29
+ item.expressionProperties['templateOptions.options'] =
30
+ item.templateOptions.options.map((m) => {
31
+ // console.log(m);
32
+ if (m.label) {
33
+ m.label = this.translate.instant(prefix + m.label);
34
+ }
35
+ return m;
36
+ });
37
+ }
38
+ }
39
+ return item;
40
+ }
41
+ }
42
+ TranslationProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslationProvider, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
43
+ TranslationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslationProvider, providedIn: 'root' });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TranslationProvider, decorators: [{
45
+ type: Injectable,
46
+ args: [{
47
+ providedIn: 'root',
48
+ }]
49
+ }], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2NhbmRvYy9zcmMvcHJvdmlkZXJzL3RyYW5zbGF0aW9uLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQTRCLE1BQU0sZUFBZSxDQUFDOzs7QUFTN0UsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QixZQUFtQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtJQUFHLENBQUM7SUFFbEQsS0FBSyxDQUFDLElBQVMsRUFBRSxTQUFTLEdBQUcsSUFBSTtRQUMvQixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3pFO1FBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFaEQsSUFDRSxJQUFJLENBQUMsZUFBZTtZQUNwQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSztnQkFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXO2dCQUNoQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUMvQjtZQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUM7YUFDaEM7WUFDRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFO2dCQUM5QixJQUFJLENBQUMsb0JBQW9CLENBQUMsdUJBQXVCLENBQUM7b0JBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzlEO1lBQ0QsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDO29CQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwRTtZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUMvQyxJQUFJLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUM7b0JBQ2xELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUssRUFBRSxFQUFFO3dCQUN6QyxrQkFBa0I7d0JBQ2xCLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTs0QkFDWCxDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7eUJBQ3BEO3dCQUNELE9BQU8sQ0FBQyxDQUFDO29CQUNYLENBQUMsQ0FBQyxDQUFDO2FBQ047U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7Z0hBeENVLG1CQUFtQjtvSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHN3aXRjaE1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0aW9uUHJvdmlkZXIge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gIGZvcm1zKGl0ZW06IGFueSwgbmFtZXNwYWNlID0gbnVsbCkge1xuICAgIGlmIChpdGVtLmZpZWxkR3JvdXApIHtcbiAgICAgIGl0ZW0uZmllbGRHcm91cCA9IGl0ZW0uZmllbGRHcm91cC5tYXAoKGZpZWxkOmFueSkgPT4gdGhpcy5mb3JtcyhmaWVsZCkpO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeCA9IG5hbWVzcGFjZSA/IG5hbWVzcGFjZSArICcuJyA6ICcnO1xuXG4gICAgaWYgKFxuICAgICAgaXRlbS50ZW1wbGF0ZU9wdGlvbnMgJiZcbiAgICAgIChpdGVtLnRlbXBsYXRlT3B0aW9ucy5sYWJlbCB8fFxuICAgICAgICBpdGVtLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlciB8fFxuICAgICAgICBpdGVtLnRlbXBsYXRlT3B0aW9ucy5vcHRpb25zKVxuICAgICkge1xuICAgICAgaWYgKCFpdGVtLmV4cHJlc3Npb25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIGl0ZW0uZXhwcmVzc2lvblByb3BlcnRpZXMgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnRlbXBsYXRlT3B0aW9ucy5sYWJlbCkge1xuICAgICAgICBpdGVtLmV4cHJlc3Npb25Qcm9wZXJ0aWVzWyd0ZW1wbGF0ZU9wdGlvbnMubGFiZWwnXSA9XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuc3RyZWFtKHByZWZpeCArIGl0ZW0udGVtcGxhdGVPcHRpb25zLmxhYmVsKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnRlbXBsYXRlT3B0aW9ucy5wbGFjZWhvbGRlcikge1xuICAgICAgICBpdGVtLmV4cHJlc3Npb25Qcm9wZXJ0aWVzWyd0ZW1wbGF0ZU9wdGlvbnMucGxhY2Vob2xkZXInXSA9XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuc3RyZWFtKHByZWZpeCArIGl0ZW0udGVtcGxhdGVPcHRpb25zLnBsYWNlaG9sZGVyKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0udGVtcGxhdGVPcHRpb25zLm9wdGlvbnMpKSB7XG4gICAgICAgIGl0ZW0uZXhwcmVzc2lvblByb3BlcnRpZXNbJ3RlbXBsYXRlT3B0aW9ucy5vcHRpb25zJ10gPVxuICAgICAgICAgIGl0ZW0udGVtcGxhdGVPcHRpb25zLm9wdGlvbnMubWFwKChtOmFueSkgPT4ge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2cobSk7XG4gICAgICAgICAgICBpZiAobS5sYWJlbCkge1xuICAgICAgICAgICAgICBtLmxhYmVsID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChwcmVmaXggKyBtLmxhYmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBtO1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBpdGVtO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { webSocket } from 'rxjs/webSocket';
3
+ import * as i0 from "@angular/core";
4
+ export class webRtcProvider {
5
+ constructor() {
6
+ this.pc = new RTCPeerConnection();
7
+ }
8
+ connect(id = 1) {
9
+ this.subject = webSocket('wss://localhost:3000?id=' + id);
10
+ }
11
+ setup() {
12
+ this.connect(1);
13
+ // try {
14
+ // this.pc = new RTCPeerConnection({
15
+ // iceServers: [
16
+ // { urls: 'stun:stun.services.mozilla.com' },
17
+ // { urls: 'stun:stun.l.google.com:19302' },
18
+ // ],
19
+ // });
20
+ // } catch (error) {
21
+ // console.log(error);
22
+ // this.pc = new RTCPeerConnection({
23
+ // iceServers: [
24
+ // { urls: 'stun:stun.services.mozilla.com' },
25
+ // { urls: 'stun:stun.l.google.com:19302' },
26
+ // ],
27
+ // });
28
+ // }
29
+ // this.pc.onicecandidate = (event) => {
30
+ // event.candidate
31
+ // ? this.sendMessage({ ice: event.candidate })
32
+ // : console.log('Sent All Ice');
33
+ // };
34
+ // if (this.pc) {
35
+ // from(this.pc.createOffer())
36
+ // .pipe(switchMap((offer) => from(this.pc.setLocalDescription(offer))))
37
+ // .subscribe((data: any) => {
38
+ // this.sendMessage({
39
+ // type: 'offer',
40
+ // sdp: this.pc.localDescription,
41
+ // });
42
+ // });
43
+ // }
44
+ }
45
+ sendMessage(data) {
46
+ console.log(data);
47
+ this.subject.next(JSON.stringify(data));
48
+ }
49
+ }
50
+ webRtcProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: webRtcProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
+ webRtcProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: webRtcProvider, providedIn: 'root' });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: webRtcProvider, decorators: [{
53
+ type: Injectable,
54
+ args: [{
55
+ providedIn: 'root',
56
+ }]
57
+ }], ctorParameters: function () { return []; } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VicnRjLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNjYW5kb2Mvc3JjL3Byb3ZpZGVycy93ZWJydGMucHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTNDLE1BQU0sT0FBTyxjQUFjO0lBR3pCO1FBRkEsT0FBRSxHQUFzQixJQUFJLGlCQUFpQixFQUFFLENBQUM7SUFFakMsQ0FBQztJQUVoQixPQUFPLENBQUMsRUFBRSxHQUFHLENBQUM7UUFDWixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQywwQkFBMEIsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQsS0FBSztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFZixRQUFRO1FBQ1Isc0NBQXNDO1FBQ3RDLG9CQUFvQjtRQUNwQixvREFBb0Q7UUFDcEQsa0RBQWtEO1FBQ2xELFNBQVM7UUFDVCxRQUFRO1FBQ1Isb0JBQW9CO1FBQ3BCLHdCQUF3QjtRQUN4QixzQ0FBc0M7UUFDdEMsb0JBQW9CO1FBQ3BCLG9EQUFvRDtRQUNwRCxrREFBa0Q7UUFDbEQsU0FBUztRQUNULFFBQVE7UUFDUixJQUFJO1FBRUosd0NBQXdDO1FBQ3hDLG9CQUFvQjtRQUNwQixtREFBbUQ7UUFDbkQscUNBQXFDO1FBQ3JDLEtBQUs7UUFFTCxpQkFBaUI7UUFDakIsZ0NBQWdDO1FBQ2hDLDRFQUE0RTtRQUM1RSxrQ0FBa0M7UUFDbEMsMkJBQTJCO1FBQzNCLHlCQUF5QjtRQUN6Qix5Q0FBeUM7UUFDekMsWUFBWTtRQUNaLFVBQVU7UUFDVixJQUFJO0lBQ04sQ0FBQztJQUNELFdBQVcsQ0FBQyxJQUFTO1FBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzJHQWxEVSxjQUFjOytHQUFkLGNBQWMsY0FGYixNQUFNOzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgd2ViU29ja2V0IH0gZnJvbSAncnhqcy93ZWJTb2NrZXQnO1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3Mgd2ViUnRjUHJvdmlkZXIge1xuICBwYzogUlRDUGVlckNvbm5lY3Rpb24gPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oKTtcbiAgc3ViamVjdDogYW55O1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgY29ubmVjdChpZCA9IDEpIHtcbiAgICB0aGlzLnN1YmplY3QgPSB3ZWJTb2NrZXQoJ3dzczovL2xvY2FsaG9zdDozMDAwP2lkPScgKyBpZCk7XG4gIH1cblxuICBzZXR1cCgpIHtcblxuICAgIHRoaXMuY29ubmVjdCgxKVxuXG4gICAgLy8gdHJ5IHtcbiAgICAvLyAgIHRoaXMucGMgPSBuZXcgUlRDUGVlckNvbm5lY3Rpb24oe1xuICAgIC8vICAgICBpY2VTZXJ2ZXJzOiBbXG4gICAgLy8gICAgICAgeyB1cmxzOiAnc3R1bjpzdHVuLnNlcnZpY2VzLm1vemlsbGEuY29tJyB9LFxuICAgIC8vICAgICAgIHsgdXJsczogJ3N0dW46c3R1bi5sLmdvb2dsZS5jb206MTkzMDInIH0sXG4gICAgLy8gICAgIF0sXG4gICAgLy8gICB9KTtcbiAgICAvLyB9IGNhdGNoIChlcnJvcikge1xuICAgIC8vICAgY29uc29sZS5sb2coZXJyb3IpO1xuICAgIC8vICAgdGhpcy5wYyA9IG5ldyBSVENQZWVyQ29ubmVjdGlvbih7XG4gICAgLy8gICAgIGljZVNlcnZlcnM6IFtcbiAgICAvLyAgICAgICB7IHVybHM6ICdzdHVuOnN0dW4uc2VydmljZXMubW96aWxsYS5jb20nIH0sXG4gICAgLy8gICAgICAgeyB1cmxzOiAnc3R1bjpzdHVuLmwuZ29vZ2xlLmNvbToxOTMwMicgfSxcbiAgICAvLyAgICAgXSxcbiAgICAvLyAgIH0pO1xuICAgIC8vIH1cblxuICAgIC8vIHRoaXMucGMub25pY2VjYW5kaWRhdGUgPSAoZXZlbnQpID0+IHtcbiAgICAvLyAgIGV2ZW50LmNhbmRpZGF0ZVxuICAgIC8vICAgICA/IHRoaXMuc2VuZE1lc3NhZ2UoeyBpY2U6IGV2ZW50LmNhbmRpZGF0ZSB9KVxuICAgIC8vICAgICA6IGNvbnNvbGUubG9nKCdTZW50IEFsbCBJY2UnKTtcbiAgICAvLyB9O1xuXG4gICAgLy8gaWYgKHRoaXMucGMpIHtcbiAgICAvLyAgIGZyb20odGhpcy5wYy5jcmVhdGVPZmZlcigpKVxuICAgIC8vICAgICAucGlwZShzd2l0Y2hNYXAoKG9mZmVyKSA9PiBmcm9tKHRoaXMucGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikpKSlcbiAgICAvLyAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5zZW5kTWVzc2FnZSh7XG4gICAgLy8gICAgICAgICB0eXBlOiAnb2ZmZXInLFxuICAgIC8vICAgICAgICAgc2RwOiB0aGlzLnBjLmxvY2FsRGVzY3JpcHRpb24sXG4gICAgLy8gICAgICAgfSk7XG4gICAgLy8gICAgIH0pO1xuICAgIC8vIH1cbiAgfVxuICBzZW5kTWVzc2FnZShkYXRhOiBhbnkpIHtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICB0aGlzLnN1YmplY3QubmV4dChKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gIH1cbn1cbiJdfQ==