tuain-ng-forms-lib 0.12.30 → 0.12.34

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 (34) hide show
  1. package/bundles/tuain-ng-forms-lib.umd.js +162 -256
  2. package/bundles/tuain-ng-forms-lib.umd.js.map +1 -1
  3. package/esm2015/lib/classes/forms/action.js +5 -5
  4. package/esm2015/lib/classes/forms/element.js +7 -6
  5. package/esm2015/lib/classes/forms/field.js +41 -91
  6. package/esm2015/lib/classes/forms/form.constants.js +11 -82
  7. package/esm2015/lib/classes/forms/form.js +10 -10
  8. package/esm2015/lib/classes/forms/subsection.js +5 -5
  9. package/esm2015/lib/classes/forms/table/column.js +5 -5
  10. package/esm2015/lib/classes/forms/table/row-data.js +6 -4
  11. package/esm2015/lib/classes/forms/table/table.js +15 -13
  12. package/esm2015/lib/components/elements/action.component.js +3 -1
  13. package/esm2015/lib/components/elements/field.component.js +22 -12
  14. package/esm2015/lib/components/elements/layout/element.component.js +3 -6
  15. package/esm2015/lib/components/elements/layout/form-error.component.js +1 -1
  16. package/esm2015/lib/components/elements/tables/table.component.js +7 -7
  17. package/esm2015/lib/components/forms/basic-form.js +25 -23
  18. package/fesm2015/tuain-ng-forms-lib.js +160 -259
  19. package/fesm2015/tuain-ng-forms-lib.js.map +1 -1
  20. package/lib/classes/forms/action.d.ts +1 -1
  21. package/lib/classes/forms/element.d.ts +2 -1
  22. package/lib/classes/forms/field.d.ts +2 -1
  23. package/lib/classes/forms/form.constants.d.ts +10 -74
  24. package/lib/classes/forms/form.d.ts +3 -2
  25. package/lib/classes/forms/table/column.d.ts +2 -1
  26. package/lib/classes/forms/table/table.d.ts +1 -1
  27. package/lib/components/elements/action.component.d.ts +1 -0
  28. package/lib/components/elements/field.component.d.ts +2 -3
  29. package/lib/components/elements/layout/element.component.d.ts +1 -2
  30. package/lib/components/elements/layout/form-error.component.d.ts +0 -1
  31. package/lib/components/elements/tables/table.component.d.ts +1 -0
  32. package/lib/components/forms/basic-form.d.ts +3 -2
  33. package/package.json +1 -1
  34. package/tuain-ng-forms-lib.metadata.json +1 -1
@@ -1,43 +1,13 @@
1
- export const componentConstants = {
2
- recordsPerPage: 10,
3
- // Constantes para el despliegue de formularios
4
- ELEMENTTYPE_ACTION: 'ACTION',
5
- ELEMENTTYPE_FIELD: 'FIELD',
6
- ELEMENTTYPE_TABLE: 'TABLE',
7
- // Acciones de formularios
8
- FORMACTION_TABLEACTION: 'TABLEACTION',
9
- FORMACTION_GETDATA: 'GETDATA',
10
- FORMACTION_GETTABLEDATA: 'GETTABLEDATA',
11
- FORMACTION_VALIDATE: 'VALIDATE',
12
- // Errores etándar de formularios
13
- FORMERROR_VALIDATION_CODE: '13',
14
- FORMERROR_TYPE_WARNING: 'WARNING',
15
- FORMERROR_REQUIRED_FIELDS: 'Todos los campos requeridos deben ser diligenciados',
16
- FORMERROR_VALIDATION_TITLE: 'Advertencia',
17
- FORMERROR_VALIDATION_FIELDS: 'Existen campos con problemas de validación',
18
- // Valores para los controles de navegació
19
- FORMNAVIGATION_FIRST: 'first',
20
- FORMNAVIGATION_PREVGROUP: 'prevgroup',
21
- FORMNAVIGATION_NEXTGROUP: 'nextgroup',
22
- FORMNAVIGATION_LAST: 'last',
23
- FIELDTYPE_ARRAY: 'ARRAY',
24
- FIELDTYPE_CHECK: 'CHECK',
25
- FIELDTYPE_DATE: 'DATE',
26
- FIELDTYPE_MAP: 'MAP',
27
- FIELDTYPE_CURRENCY: 'CURRENCY',
28
- FIELDTYPE_SELECT: 'SELECT',
29
- FIELDTYPE_TEXT: 'TEXT',
30
- FIELD_REQUIRED_MESSAGE: 'Campo requerido',
31
- FORMTABLEACTION_SORT: 'SORT',
32
- FORMTABLEACTION_REFRESH: 'REFRESH',
33
- FORMTABLEACTION_NAVIGATE: 'NAVIGATE',
34
- FORMTABLEACTION_INLINE: 'INLINE',
35
- FORMTABLEACTION_GLOBAL: 'GLOBAL',
36
- FORMTABLEACTION_ROWSELECTION: 'ROWSELECTION',
37
- FORMTABLEACTION_SELECTION: 'SELECTION',
38
- TABLE_SORT_ASCENDING: 'asc',
39
- TABLE_SORT_DESCENDING: 'desc',
40
- SERVICE_ERRORCODE_NOERROR: '00',
1
+ export const elementTypes = {
2
+ action: 'ACTION',
3
+ field: 'FIELD',
4
+ table: 'TABLE',
5
+ };
6
+ export const formActions = {
7
+ tableAction: 'TABLEACTION',
8
+ getData: 'GETDATA',
9
+ getTableData: 'GETTABLEDATA',
10
+ validate: 'VALIDATE',
41
11
  };
42
12
  export const operators = {
43
13
  G: '>',
@@ -50,45 +20,4 @@ export const operators = {
50
20
  NOT_CONTENT: 'No Contiene',
51
21
  BETWEEN: 'Entre',
52
22
  };
53
- export const tableFieldStyles = {
54
- TEXT: {
55
- 'text-align': 'left'
56
- },
57
- TITLE: {
58
- 'text-align': 'left'
59
- },
60
- LABEL: {
61
- 'text-align': 'left'
62
- },
63
- MESSAGE: {
64
- 'text-align': 'left'
65
- },
66
- NUMBER: {
67
- 'text-align': 'right'
68
- },
69
- DATE: {
70
- 'text-align': 'right'
71
- },
72
- CHECK: {
73
- 'text-align': 'center'
74
- },
75
- ARRAY: {
76
- 'text-align': 'left'
77
- },
78
- SELECT: {
79
- 'text-align': 'left'
80
- }
81
- };
82
- export const DEFAULT_STATE_FLOW = {
83
- defaultState: 'CREATE',
84
- states: ['CREATE', 'EDIT', 'VIEW'],
85
- transitions: [
86
- { name: 'VIEW1', origin: 'CREATE', destination: 'VIEW' },
87
- { name: 'VIEW2', origin: 'EDIT', destination: 'VIEW' },
88
- { name: 'EDIT1', origin: 'CREATE', destination: 'EDIT' },
89
- { name: 'EDIT2', origin: 'VIEW', destination: 'EDIT' },
90
- { name: 'CREATE1', origin: 'EDIT', destination: 'CREATE' },
91
- { name: 'CREATE2', origin: 'VIEW', destination: 'CREATE' },
92
- ]
93
- };
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLCtDQUErQztJQUMvQyxrQkFBa0IsRUFBRSxRQUFRO0lBQzVCLGlCQUFpQixFQUFFLE9BQU87SUFDMUIsaUJBQWlCLEVBQUUsT0FBTztJQUMxQiwwQkFBMEI7SUFDMUIsc0JBQXNCLEVBQUUsYUFBYTtJQUNyQyxrQkFBa0IsRUFBRSxTQUFTO0lBQzdCLHVCQUF1QixFQUFFLGNBQWM7SUFDdkMsbUJBQW1CLEVBQUUsVUFBVTtJQUMvQixpQ0FBaUM7SUFDakMseUJBQXlCLEVBQUUsSUFBSTtJQUMvQixzQkFBc0IsRUFBRSxTQUFTO0lBQ2pDLHlCQUF5QixFQUFFLHFEQUFxRDtJQUNoRiwwQkFBMEIsRUFBRSxhQUFhO0lBQ3pDLDJCQUEyQixFQUFFLDRDQUE0QztJQUN6RSwwQ0FBMEM7SUFDMUMsb0JBQW9CLEVBQUUsT0FBTztJQUM3Qix3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHdCQUF3QixFQUFFLFdBQVc7SUFDckMsbUJBQW1CLEVBQUUsTUFBTTtJQUUzQixlQUFlLEVBQUUsT0FBTztJQUN4QixlQUFlLEVBQUUsT0FBTztJQUN4QixjQUFjLEVBQUUsTUFBTTtJQUN0QixhQUFhLEVBQUUsS0FBSztJQUNwQixrQkFBa0IsRUFBRSxVQUFVO0lBQzlCLGdCQUFnQixFQUFFLFFBQVE7SUFDMUIsY0FBYyxFQUFFLE1BQU07SUFDdEIsc0JBQXNCLEVBQUUsaUJBQWlCO0lBRXpDLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsdUJBQXVCLEVBQUUsU0FBUztJQUNsQyx3QkFBd0IsRUFBRSxVQUFVO0lBRXBDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyw0QkFBNEIsRUFBRSxjQUFjO0lBQzVDLHlCQUF5QixFQUFFLFdBQVc7SUFFdEMsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixxQkFBcUIsRUFBRSxNQUFNO0lBRTdCLHlCQUF5QixFQUFFLElBQUk7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsVUFBVTtJQUNuQixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLE1BQU07S0FDckI7SUFDRCxLQUFLLEVBQUU7UUFDTCxZQUFZLEVBQUUsTUFBTTtLQUNyQjtJQUNELEtBQUssRUFBRTtRQUNMLFlBQVksRUFBRSxNQUFNO0tBQ3JCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsWUFBWSxFQUFFLE1BQU07S0FDckI7SUFDRCxNQUFNLEVBQUU7UUFDTixZQUFZLEVBQUUsT0FBTztLQUN0QjtJQUNELElBQUksRUFBRTtRQUNKLFlBQVksRUFBRSxPQUFPO0tBQ3RCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLFFBQVE7S0FDdkI7SUFDRCxLQUFLLEVBQUU7UUFDTCxZQUFZLEVBQUUsTUFBTTtLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLFlBQVksRUFBRSxNQUFNO0tBQ3JCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFlBQVksRUFBRSxRQUFRO0lBQ3RCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLFdBQVcsRUFBRTtRQUNYLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7UUFDeEQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtRQUN0RCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO1FBQ3hELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7UUFDdEQsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtRQUMxRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFO0tBQzNEO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBjb21wb25lbnRDb25zdGFudHMgPSB7XG4gIHJlY29yZHNQZXJQYWdlOiAxMCxcbiAgLy8gQ29uc3RhbnRlcyBwYXJhIGVsIGRlc3BsaWVndWUgZGUgZm9ybXVsYXJpb3NcbiAgRUxFTUVOVFRZUEVfQUNUSU9OOiAnQUNUSU9OJyxcbiAgRUxFTUVOVFRZUEVfRklFTEQ6ICdGSUVMRCcsXG4gIEVMRU1FTlRUWVBFX1RBQkxFOiAnVEFCTEUnLFxuICAvLyBBY2Npb25lcyBkZSBmb3JtdWxhcmlvc1xuICBGT1JNQUNUSU9OX1RBQkxFQUNUSU9OOiAnVEFCTEVBQ1RJT04nLFxuICBGT1JNQUNUSU9OX0dFVERBVEE6ICdHRVREQVRBJyxcbiAgRk9STUFDVElPTl9HRVRUQUJMRURBVEE6ICdHRVRUQUJMRURBVEEnLFxuICBGT1JNQUNUSU9OX1ZBTElEQVRFOiAnVkFMSURBVEUnLFxuICAvLyBFcnJvcmVzIGV0w6FuZGFyIGRlIGZvcm11bGFyaW9zXG4gIEZPUk1FUlJPUl9WQUxJREFUSU9OX0NPREU6ICcxMycsXG4gIEZPUk1FUlJPUl9UWVBFX1dBUk5JTkc6ICdXQVJOSU5HJyxcbiAgRk9STUVSUk9SX1JFUVVJUkVEX0ZJRUxEUzogJ1RvZG9zIGxvcyBjYW1wb3MgcmVxdWVyaWRvcyBkZWJlbiBzZXIgZGlsaWdlbmNpYWRvcycsXG4gIEZPUk1FUlJPUl9WQUxJREFUSU9OX1RJVExFOiAnQWR2ZXJ0ZW5jaWEnLFxuICBGT1JNRVJST1JfVkFMSURBVElPTl9GSUVMRFM6ICdFeGlzdGVuIGNhbXBvcyBjb24gcHJvYmxlbWFzIGRlIHZhbGlkYWNpw7NuJyxcbiAgLy8gVmFsb3JlcyBwYXJhIGxvcyBjb250cm9sZXMgZGUgbmF2ZWdhY2nDs1xuICBGT1JNTkFWSUdBVElPTl9GSVJTVDogJ2ZpcnN0JyxcbiAgRk9STU5BVklHQVRJT05fUFJFVkdST1VQOiAncHJldmdyb3VwJyxcbiAgRk9STU5BVklHQVRJT05fTkVYVEdST1VQOiAnbmV4dGdyb3VwJyxcbiAgRk9STU5BVklHQVRJT05fTEFTVDogJ2xhc3QnLFxuXG4gIEZJRUxEVFlQRV9BUlJBWTogJ0FSUkFZJyxcbiAgRklFTERUWVBFX0NIRUNLOiAnQ0hFQ0snLFxuICBGSUVMRFRZUEVfREFURTogJ0RBVEUnLFxuICBGSUVMRFRZUEVfTUFQOiAnTUFQJyxcbiAgRklFTERUWVBFX0NVUlJFTkNZOiAnQ1VSUkVOQ1knLFxuICBGSUVMRFRZUEVfU0VMRUNUOiAnU0VMRUNUJyxcbiAgRklFTERUWVBFX1RFWFQ6ICdURVhUJyxcbiAgRklFTERfUkVRVUlSRURfTUVTU0FHRTogJ0NhbXBvIHJlcXVlcmlkbycsXG5cbiAgRk9STVRBQkxFQUNUSU9OX1NPUlQ6ICdTT1JUJyxcbiAgRk9STVRBQkxFQUNUSU9OX1JFRlJFU0g6ICdSRUZSRVNIJyxcbiAgRk9STVRBQkxFQUNUSU9OX05BVklHQVRFOiAnTkFWSUdBVEUnLFxuXG4gIEZPUk1UQUJMRUFDVElPTl9JTkxJTkU6ICdJTkxJTkUnLFxuICBGT1JNVEFCTEVBQ1RJT05fR0xPQkFMOiAnR0xPQkFMJyxcbiAgRk9STVRBQkxFQUNUSU9OX1JPV1NFTEVDVElPTjogJ1JPV1NFTEVDVElPTicsXG4gIEZPUk1UQUJMRUFDVElPTl9TRUxFQ1RJT046ICdTRUxFQ1RJT04nLFxuXG4gIFRBQkxFX1NPUlRfQVNDRU5ESU5HOiAnYXNjJyxcbiAgVEFCTEVfU09SVF9ERVNDRU5ESU5HOiAnZGVzYycsXG5cbiAgU0VSVklDRV9FUlJPUkNPREVfTk9FUlJPUjogJzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBvcGVyYXRvcnMgPSB7XG4gIEc6ICc+JyxcbiAgTDogJzwnLFxuICBHRTogJz49JyxcbiAgTEU6ICc8PScsXG4gIEVROiAnPT0nLFxuICBOT1RfRVE6ICchPScsXG4gIENPTlRFTlQ6ICdDb250aWVuZScsXG4gIE5PVF9DT05URU5UOiAnTm8gQ29udGllbmUnLFxuICBCRVRXRUVOOiAnRW50cmUnLFxufTtcblxuZXhwb3J0IGNvbnN0IHRhYmxlRmllbGRTdHlsZXMgPSB7XG4gIFRFWFQ6IHtcbiAgICAndGV4dC1hbGlnbic6ICdsZWZ0J1xuICB9LFxuICBUSVRMRToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIExBQkVMOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAnbGVmdCdcbiAgfSxcbiAgTUVTU0FHRToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIE5VTUJFUjoge1xuICAgICd0ZXh0LWFsaWduJzogJ3JpZ2h0J1xuICB9LFxuICBEQVRFOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAncmlnaHQnXG4gIH0sXG4gIENIRUNLOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAnY2VudGVyJ1xuICB9LFxuICBBUlJBWToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIFNFTEVDVDoge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUQVRFX0ZMT1cgPSB7XG4gIGRlZmF1bHRTdGF0ZTogJ0NSRUFURScsXG4gIHN0YXRlczogWydDUkVBVEUnLCAnRURJVCcsICdWSUVXJ10sXG4gIHRyYW5zaXRpb25zOiBbXG4gICAgeyBuYW1lOiAnVklFVzEnLCBvcmlnaW46ICdDUkVBVEUnLCBkZXN0aW5hdGlvbjogJ1ZJRVcnIH0sXG4gICAgeyBuYW1lOiAnVklFVzInLCBvcmlnaW46ICdFRElUJywgZGVzdGluYXRpb246ICdWSUVXJyB9LFxuICAgIHsgbmFtZTogJ0VESVQxJywgb3JpZ2luOiAnQ1JFQVRFJywgZGVzdGluYXRpb246ICdFRElUJyB9LFxuICAgIHsgbmFtZTogJ0VESVQyJywgb3JpZ2luOiAnVklFVycsIGRlc3RpbmF0aW9uOiAnRURJVCcgfSxcbiAgICB7IG5hbWU6ICdDUkVBVEUxJywgb3JpZ2luOiAnRURJVCcsIGRlc3RpbmF0aW9uOiAnQ1JFQVRFJyB9LFxuICAgIHsgbmFtZTogJ0NSRUFURTInLCBvcmlnaW46ICdWSUVXJywgZGVzdGluYXRpb246ICdDUkVBVEUnIH0sXG4gIF1cbn07XG4iXX0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsU0FBUztJQUNsQixZQUFZLEVBQUUsY0FBYztJQUM1QixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3ZCLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZWxlbWVudFR5cGVzID0ge1xuICBhY3Rpb246ICdBQ1RJT04nLFxuICBmaWVsZDogJ0ZJRUxEJyxcbiAgdGFibGU6ICdUQUJMRScsXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybUFjdGlvbnMgPSB7XG4gIHRhYmxlQWN0aW9uOiAnVEFCTEVBQ1RJT04nLFxuICBnZXREYXRhOiAnR0VUREFUQScsXG4gIGdldFRhYmxlRGF0YTogJ0dFVFRBQkxFREFUQScsXG4gIHZhbGlkYXRlOiAnVkFMSURBVEUnLFxufTtcblxuZXhwb3J0IGNvbnN0IG9wZXJhdG9ycyA9IHtcbiAgRzogJz4nLFxuICBMOiAnPCcsXG4gIEdFOiAnPj0nLFxuICBMRTogJzw9JyxcbiAgRVE6ICc9PScsXG4gIE5PVF9FUTogJyE9JyxcbiAgQ09OVEVOVDogJ0NvbnRpZW5lJyxcbiAgTk9UX0NPTlRFTlQ6ICdObyBDb250aWVuZScsXG4gIEJFVFdFRU46ICdFbnRyZScsXG59O1xuIl19
@@ -2,17 +2,17 @@ import { RecordFormSection } from './section';
2
2
  import { FormAction } from './action';
3
3
  import { FieldDescriptor } from './field';
4
4
  import { RecordTable } from './table/table';
5
- import { DEFAULT_STATE_FLOW } from './form.constants';
6
5
  const HEADER = 'HEADER';
7
6
  const NO_ERROR = '00';
8
7
  export class FormStructureAndData {
9
- constructor(definitionReceived) {
8
+ constructor(definitionReceived, formConfig) {
10
9
  this._fieldsObj = {};
11
10
  this._actionsObj = {};
12
11
  this._tableObj = {};
13
12
  this._sectionsObj = {};
14
13
  this._immutableData = {};
15
14
  this._extraInfo = {};
15
+ this._formConfig = formConfig;
16
16
  this.state = '';
17
17
  this._actions = [];
18
18
  this._fields = [];
@@ -46,7 +46,7 @@ export class FormStructureAndData {
46
46
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
47
47
  });
48
48
  for (const actionReceived of formActions) {
49
- const globalAction = new FormAction(actionReceived);
49
+ const globalAction = new FormAction(actionReceived, this._formConfig);
50
50
  const globalActionCode = globalAction.actionCode;
51
51
  if (globalActionCode) {
52
52
  this._actions.push(globalAction);
@@ -67,7 +67,7 @@ export class FormStructureAndData {
67
67
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
68
68
  });
69
69
  for (const fieldReceived of formFields) {
70
- const fieldToAdd = new FieldDescriptor(fieldReceived);
70
+ const fieldToAdd = new FieldDescriptor(fieldReceived, this._formConfig);
71
71
  const fieldCode = fieldToAdd.fieldCode;
72
72
  if (fieldCode) {
73
73
  this._fields.push(fieldToAdd);
@@ -86,12 +86,12 @@ export class FormStructureAndData {
86
86
  enabledStates = [...visibleStates];
87
87
  }
88
88
  if (!visibleStates || visibleStates.length === 0) {
89
- visibleStates = DEFAULT_STATE_FLOW.states;
89
+ visibleStates = this._formConfig.defaultStateFlow.states;
90
90
  }
91
91
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
92
92
  });
93
93
  for (const tableReceived of tables) {
94
- const tableToAdd = new RecordTable(tableReceived);
94
+ const tableToAdd = new RecordTable(tableReceived, this._formConfig);
95
95
  const tableCode = tableToAdd.tableCode;
96
96
  if (tableCode) {
97
97
  this._tables.push(tableToAdd);
@@ -143,7 +143,7 @@ export class FormStructureAndData {
143
143
  }
144
144
  setStateFlow(states, transitions, defaultState) {
145
145
  if (!states || !transitions) {
146
- this._stateFlow = JSON.parse(JSON.stringify(DEFAULT_STATE_FLOW));
146
+ this._stateFlow = JSON.parse(JSON.stringify(this._formConfig.defaultStateFlow));
147
147
  return;
148
148
  }
149
149
  this._stateFlow.states = states;
@@ -369,8 +369,8 @@ export class FormStructureAndData {
369
369
  const fieldObject = this.getFieldObject(fieldCode);
370
370
  return (fieldObject) ? fieldObject.setValue(fieldValue) : null;
371
371
  }
372
- setFieldError(code, message, type = 'error') {
373
- const fieldObject = this.getFieldObject(code);
372
+ setFieldError(fieldCode, code, message, type = 'error') {
373
+ const fieldObject = this.getFieldObject(fieldCode);
374
374
  return (fieldObject) ? fieldObject.setError(code, message, type) : null;
375
375
  }
376
376
  setFieldIntrinsicErrorMessage(code, message) {
@@ -567,4 +567,4 @@ export class FormStructureAndData {
567
567
  return formData;
568
568
  }
569
569
  }
570
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQWN0QixNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUFZLGtCQUFrQjtRQVZ0QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBR3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsTUFBTSxFQUFFLEVBQUU7WUFDVixXQUFXLEVBQUUsRUFBRTtT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QztpQkFDakM7YUFDRjtTQUNGO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLEtBQUssTUFBTSxlQUFlLElBQUksTUFBTSxFQUFFO2dCQUNwQyxNQUFNLFNBQVMsR0FBRztvQkFDaEIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO29CQUNwQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87b0JBQ2hDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztvQkFDeEMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO29CQUM1QyxjQUFjLEVBQUUsZUFBZSxDQUFDLGNBQWM7b0JBQzlDLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtvQkFDNUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsVUFBVTtvQkFDakQsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2lCQUNwRCxDQUFDO2dCQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNvcmRGb3JtU2VjdGlvbiB9IGZyb20gJy4vc2VjdGlvbic7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgRmllbGREZXNjcmlwdG9yIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSB9IGZyb20gJy4vdGFibGUvdGFibGUnO1xuaW1wb3J0IHsgREVGQVVMVF9TVEFURV9GTE9XIH0gZnJvbSAnLi9mb3JtLmNvbnN0YW50cyc7XG5cbmNvbnN0IEhFQURFUiA9ICdIRUFERVInO1xuY29uc3QgTk9fRVJST1IgPSAnMDAnO1xuXG5pbnRlcmZhY2UgVHJhbnNpdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgc291cmNlOiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGF0ZUZsb3cge1xuICBkZWZhdWx0U3RhdGU6IHN0cmluZztcbiAgc3RhdGVzOiBzdHJpbmdbXTtcbiAgdHJhbnNpdGlvbnM6IFRyYW5zaXRpb25bXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZvcm1TdHJ1Y3R1cmVBbmREYXRhIHtcbiAgc3RhdGU6IHN0cmluZztcbiAgX25hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfdGl0bGU6IHN0cmluZztcbiAgcHJpdmF0ZSBfc3RhdGVGbG93OiBTdGF0ZUZsb3c7XG4gIHByaXZhdGUgX2ZpZWxkczogRmllbGREZXNjcmlwdG9yW107XG4gIHByaXZhdGUgX2ZpZWxkc09iaiA9IHt9O1xuICBwcml2YXRlIF9hY3Rpb25zOiBGb3JtQWN0aW9uW107XG4gIHByaXZhdGUgX2FjdGlvbnNPYmogPSB7fTtcbiAgcHJpdmF0ZSBfdGFibGVzOiBSZWNvcmRUYWJsZVtdO1xuICBwcml2YXRlIF90YWJsZU9iaiA9IHt9O1xuICBwcml2YXRlIF9zZWN0aW9uczogUmVjb3JkRm9ybVNlY3Rpb25bXTtcbiAgcHJpdmF0ZSBfc2VjdGlvbnNPYmogPSB7fTtcbiAgcHJpdmF0ZSBfaW1tdXRhYmxlRGF0YSA9IHt9O1xuICBwcml2YXRlIF9leHRyYUluZm8gPSB7fTtcblxuICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uUmVjZWl2ZWQpIHtcbiAgICB0aGlzLnN0YXRlID0gJyc7XG4gICAgdGhpcy5fYWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX2ZpZWxkcyA9IFtdO1xuICAgIHRoaXMuX3RhYmxlcyA9IFtdO1xuICAgIHRoaXMuX3NlY3Rpb25zID0gW107XG4gICAgdGhpcy5fc3RhdGVGbG93ID0ge1xuICAgICAgZGVmYXVsdFN0YXRlOiAnJyxcbiAgICAgIHN0YXRlczogW10sXG4gICAgICB0cmFuc2l0aW9uczogW10sXG4gICAgfTtcbiAgICBpZiAoIWRlZmluaXRpb25SZWNlaXZlZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLl9uYW1lID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1Db2RlKVxuICAgICAgPyBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtQ29kZSA6IHRoaXMuX25hbWU7XG4gICAgdGhpcy5fdGl0bGUgPSAoZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0gJiYgZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlKVxuICAgICAgPyBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtVGl0bGUgOiAnJztcbiAgICB0aGlzLnNldFN0YXRlRmxvdyhkZWZpbml0aW9uUmVjZWl2ZWQ/LnN0YXRlcywgZGVmaW5pdGlvblJlY2VpdmVkPy50cmFuc2l0aW9ucyxcbiAgICAgIGRlZmluaXRpb25SZWNlaXZlZD8uZGVmYXVsdFN0YXRlKTtcbiAgICB0aGlzLmltbXV0YWJsZURhdGEgPSBkZWZpbml0aW9uUmVjZWl2ZWQuaW1tdXRhYmxlRGF0YTtcbiAgICB0aGlzLmV4dHJhSW5mbyA9IGRlZmluaXRpb25SZWNlaXZlZC5leHRyYUluZm87XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZvcm1BY3Rpb25zID0gZGVmaW5pdGlvblJlY2VpdmVkLmFjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmFjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb25SZWNlaXZlZCBvZiBmb3JtQWN0aW9ucykge1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb24gPSBuZXcgRm9ybUFjdGlvbihhY3Rpb25SZWNlaXZlZCk7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbkNvZGUgPSBnbG9iYWxBY3Rpb24uYWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKGdsb2JhbEFjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9hY3Rpb25zLnB1c2goZ2xvYmFsQWN0aW9uKTtcbiAgICAgICAgICB0aGlzLl9hY3Rpb25zT2JqW2dsb2JhbEFjdGlvbkNvZGVdID0gZ2xvYmFsQWN0aW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMpIHtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzIHx8IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuZmllbGRNb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgZmllbGRSZWNlaXZlZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkVG9BZGQgPSBuZXcgRmllbGREZXNjcmlwdG9yKGZpZWxkUmVjZWl2ZWQpO1xuICAgICAgICBjb25zdCBmaWVsZENvZGUgPSBmaWVsZFRvQWRkLmZpZWxkQ29kZTtcbiAgICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICAgIHRoaXMuX2ZpZWxkcy5wdXNoKGZpZWxkVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX2ZpZWxkc09ialtmaWVsZENvZGVdID0gZmllbGRUb0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQudGFibGVzKSB7XG4gICAgICBjb25zdCB0YWJsZXMgPSBkZWZpbml0aW9uUmVjZWl2ZWQudGFibGVzLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzIHx8IG9iakRlZi5lZGl0YWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYudGFibGVNb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzIHx8IHZpc2libGVTdGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IERFRkFVTFRfU1RBVEVfRkxPVy5zdGF0ZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgdGFibGVSZWNlaXZlZCBvZiB0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgdGFibGVUb0FkZCA9IG5ldyBSZWNvcmRUYWJsZSh0YWJsZVJlY2VpdmVkKTtcbiAgICAgICAgY29uc3QgdGFibGVDb2RlID0gdGFibGVUb0FkZC50YWJsZUNvZGU7XG4gICAgICAgIGlmICh0YWJsZUNvZGUpIHtcbiAgICAgICAgICB0aGlzLl90YWJsZXMucHVzaCh0YWJsZVRvQWRkKTtcbiAgICAgICAgICB0aGlzLl90YWJsZU9ialt0YWJsZUNvZGVdID0gdGFibGVUb0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZvcm1TZWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuc2VjdGlvbk1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3Qgc2VjdGlvblJlY2VpdmVkIG9mIGZvcm1TZWN0aW9ucykge1xuICAgICAgICBjb25zdCBzZWN0aW9uVG9BZGQgPSBuZXcgUmVjb3JkRm9ybVNlY3Rpb24oc2VjdGlvblJlY2VpdmVkLCB0aGlzKTtcbiAgICAgICAgY29uc3Qgc2VjdGlvbkNvZGUgPSBzZWN0aW9uVG9BZGQuc2VjdGlvbkNvZGU7XG4gICAgICAgIGlmIChzZWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuX3NlY3Rpb25zLnB1c2goc2VjdGlvblRvQWRkKTtcbiAgICAgICAgICB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gPSBzZWN0aW9uVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXQgaW1tdXRhYmxlRGF0YShpbW11dGFibGVEYXRhKSB7IE9iamVjdC5hc3NpZ24odGhpcy5faW1tdXRhYmxlRGF0YSwgaW1tdXRhYmxlRGF0YSk7IH1cbiAgc2V0IGV4dHJhSW5mbyhleHRyYUluZm8pIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9leHRyYUluZm8sIGV4dHJhSW5mbyk7IH1cblxuICBnZXQgZGVmYXVsdFN0YXRlKCkgeyByZXR1cm4gdGhpcy5fc3RhdGVGbG93LmRlZmF1bHRTdGF0ZTsgfVxuICBnZXQgdGl0bGUoKSB7IHJldHVybiB0aGlzLl90aXRsZTsgfVxuICBzZXQgdGl0bGUodGl0bGUpIHsgdGhpcy5fdGl0bGUgPSB0aXRsZTsgfVxuICBnZXQgbmFtZSgpIHsgcmV0dXJuIHRoaXMuX25hbWU7IH1cbiAgc2V0IG5hbWUobmFtZSkgeyB0aGlzLl9uYW1lID0gbmFtZTsgfVxuXG4gIGNoYW5nZVN0YXRlKG5ld1N0YXRlKSB7XG4gICAgaWYgKCFuZXdTdGF0ZSB8fCAhdGhpcy5zdXBwb3J0U3RhdGUobmV3U3RhdGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghdGhpcy5zdGF0ZSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0cmFuc2l0aW9uVG9DaGFuZ2UgPSB0aGlzLl9zdGF0ZUZsb3cudHJhbnNpdGlvbnMuZmluZCh0cm5zID0+XG4gICAgICAgIHRybnMuc291cmNlID09PSB0aGlzLnN0YXRlICYmIHRybnMuZGVzdGluYXRpb24gPT09IG5ld1N0YXRlKTtcbiAgICAgIGlmICh0cmFuc2l0aW9uVG9DaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IG5ld1N0YXRlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gKHRoaXMuc3RhdGUgPT09IG5ld1N0YXRlKTtcbiAgfVxuXG4gIHNldFN0YXRlRmxvdyhzdGF0ZXM/LCB0cmFuc2l0aW9ucz8sIGRlZmF1bHRTdGF0ZT8pIHtcbiAgICBpZiAoIXN0YXRlcyB8fCAhdHJhbnNpdGlvbnMpIHtcbiAgICAgIHRoaXMuX3N0YXRlRmxvdyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoREVGQVVMVF9TVEFURV9GTE9XKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMgPSBzdGF0ZXM7XG4gICAgdGhpcy5fc3RhdGVGbG93LmRlZmF1bHRTdGF0ZSA9IGRlZmF1bHRTdGF0ZSB8fCB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzWzBdO1xuICAgIHRoaXMuX3N0YXRlRmxvdy50cmFuc2l0aW9ucyA9IHRyYW5zaXRpb25zLm1hcCh0cmFuc2l0aW9uID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSB0cmFuc2l0aW9uLm5hbWU7XG4gICAgICBjb25zdCBzb3VyY2UgPSAodGhpcy5fc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLnNvdXJjZSkpID8gdHJhbnNpdGlvbi5zb3VyY2UgOiAnJztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gKHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMuaW5jbHVkZXModHJhbnNpdGlvbi5kZXN0aW5hdGlvbikpID8gdHJhbnNpdGlvbi5kZXN0aW5hdGlvbiA6ICcnO1xuICAgICAgcmV0dXJuIHsgbmFtZSwgc291cmNlLCBkZXN0aW5hdGlvbiB9O1xuICAgIH0pLmZpbHRlcihpdGVtID0+IGl0ZW0ubmFtZSAmJiBpdGVtLnNvdXJjZSAmJiBpdGVtLmRlc3RpbmF0aW9uKTtcbiAgfVxuXG4gIHN1cHBvcnRTdGF0ZShzdGF0ZSkgeyByZXR1cm4gdGhpcy5fc3RhdGVGbG93LnN0YXRlcz8uaW5jbHVkZXMoc3RhdGUpOyB9XG4gIHN1cHBvcnRNb2RlKHN0YXRlKSB7IHJldHVybiB0aGlzLnN1cHBvcnRTdGF0ZShzdGF0ZSk7IH1cblxuXG4gIGdldCBpbW11dGFibGVEYXRhKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX2ltbXV0YWJsZURhdGEpO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBvYmplY3ROYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBvYmplY3ROYW1lc1tpbmRleF07XG4gICAgICBkYXRhW25hbWVdID0gdGhpcy5nZXRJbW11dGFibGVFbGVtZW50KG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldEltbXV0YWJsZUVsZW1lbnQobmFtZSkgeyByZXR1cm4gdGhpcy5faW1tdXRhYmxlRGF0YT8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG4gIGdldEV4dHJhSW5mbyhuYW1lKSB7IHJldHVybiB0aGlzLl9leHRyYUluZm8/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuXG4gIGdldCBleHRyYUluZm8oKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGNvbnN0IG9iamVjdE5hbWVzID0gT2JqZWN0LmtleXModGhpcy5fZXh0cmFJbmZvKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0TmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gb2JqZWN0TmFtZXNbaW5kZXhdO1xuICAgICAgZGF0YVtuYW1lXSA9IHRoaXMuZ2V0RXh0cmFJbmZvKG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIGdldEZpZWxkcygpIHsgcmV0dXJuIHRoaXMuX2ZpZWxkczsgfVxuXG4gIGdldFN0YXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVGbG93LnN0YXRlcztcbiAgfVxuXG4gIGdldEZpZWxkTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQuZmllbGRDb2RlKTtcbiAgfVxuXG4gIGdldEFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7XG4gIH1cblxuICBnZXRIZWFkZXJBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zLmZpbHRlcihhY3Rpb25JdGVtID0+IGFjdGlvbkl0ZW0ubG9jYXRpb24gPT09IEhFQURFUik7XG4gIH1cblxuICBnZXRGaWVsZE9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX2ZpZWxkc09iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fZmllbGRzT2JqW2VsZW1lbnRJZF0pXG4gICAgICA/IHRoaXMuX2ZpZWxkc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldFRhYmxlT2JqZWN0KGVsZW1lbnRJZCkge1xuICAgIHJldHVybiAodGhpcy5fdGFibGVPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX3RhYmxlT2JqW2VsZW1lbnRJZF0pXG4gICAgICA/IHRoaXMuX3RhYmxlT2JqW2VsZW1lbnRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0QWN0aW9uT2JqZWN0KGVsZW1lbnRJZCkge1xuICAgIHJldHVybiAodGhpcy5fYWN0aW9uc09iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fYWN0aW9uc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9hY3Rpb25zT2JqW2VsZW1lbnRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0U3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3Vic2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uID0gKHRoaXMuX3NlY3Rpb25zT2JqICYmIHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSlcbiAgICAgID8gdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdIDogbnVsbDtcbiAgICByZXR1cm4gKHNlY3Rpb24pID8gc2VjdGlvbi5nZXRTdWJzZWN0aW9uKHN1YnNlY3Rpb25Db2RlKSA6IG51bGw7XG4gIH1cblxuICBnZXRTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgcmV0dXJuICh0aGlzLl9zZWN0aW9uc09iaiAmJiB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA6IG51bGw7XG4gIH1cbiAgc2VjdGlvbnMoKSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zKCk7IH1cbiAgc2VjdGlvblRpdGxlcygpIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbnNUaXRsZXMoKTsgfVxuXG4gIGdldFNlY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucztcbiAgfVxuXG4gIG51bVNlY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7XG4gIH1cblxuICBnZXRTZWN0aW9uc1RpdGxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMubWFwKGZvcm1TZWN0aW9uID0+IGZvcm1TZWN0aW9uLnNlY3Rpb25UaXRsZSk7XG4gIH1cblxuICBnZXRTZWN0aW9uT2JqZWN0KGVsZW1lbnRJZCkge1xuICAgIHJldHVybiAodGhpcy5fc2VjdGlvbnNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX3NlY3Rpb25zT2JqW2VsZW1lbnRJZF0pXG4gICAgICA/IHRoaXMuX3NlY3Rpb25zT2JqW2VsZW1lbnRJZF0gOiBudWxsO1xuICB9XG4gIHRhYmxlcygpIHsgcmV0dXJuIHRoaXMuZ2V0VGFibGVzKCk7IH1cblxuICBnZXRUYWJsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlcztcbiAgfVxuXG4gIGNsZWFuRGF0YSgpIHtcbiAgICBpZiAodGhpcy5fZmllbGRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlY29yZEZpZWxkIG9mIHRoaXMuX2ZpZWxkcykge1xuICAgICAgICByZWNvcmRGaWVsZC5zZXRWYWx1ZShyZWNvcmRGaWVsZC5kZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5fdGFibGVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGZvcm1UYWJsZSBvZiB0aGlzLl90YWJsZXMpIHtcbiAgICAgICAgZm9ybVRhYmxlLmNsZWFuKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd1NlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgYWN0aXZlU2VjdGlvbigpIHtcbiAgICBjb25zdCBhY3RpdmVTZWN0aW9uID0gdGhpcy5fc2VjdGlvbnMuZmluZChzZWN0aW9uT2JqID0+IHNlY3Rpb25PYmouYWN0aXZlKTtcbiAgICByZXR1cm4gYWN0aXZlU2VjdGlvbi5zZWN0aW9uQ29kZTtcbiAgfVxuXG4gIGFjdGl2YXRlU2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIHRoaXMuX3NlY3Rpb25zLmZvckVhY2goc2VjdGlvbk9iaiA9PiB7XG4gICAgICBpZiAoc2VjdGlvbk9iaikgeyBzZWN0aW9uT2JqLmluYWN0aXZhdGUoKTsgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmFjdGl2YXRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1NlY3Rpb25zKHNlY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IHNlY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KHNlY3Rpb25BcnJheSkpID8gc2VjdGlvbkFycmF5IDogW3NlY3Rpb25BcnJheV07XG4gICAgc2VjdGlvbk5hbWVzLmZvckVhY2goc2VjdGlvbkNvZGUgPT4gdGhpcy5zaG93U2VjdGlvbihzZWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgaGlkZVNlY3Rpb25zKHNlY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IHNlY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KHNlY3Rpb25BcnJheSkpID8gc2VjdGlvbkFycmF5IDogW3NlY3Rpb25BcnJheV07XG4gICAgc2VjdGlvbk5hbWVzLmZvckVhY2goc2VjdGlvbkNvZGUgPT4gdGhpcy5oaWRlU2VjdGlvbihzZWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgc2hvd1N1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgIHJldHVybiAoc3ViU2VjdGlvbk9iamVjdCkgPyBzdWJTZWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlU3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgcmV0dXJuIChzdWJTZWN0aW9uT2JqZWN0KSA/IHN1YlNlY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dTdWJTZWN0aW9ucyhzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgaWYgKHN1YlNlY3Rpb25BcnJheSAmJiBzdWJTZWN0aW9uQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb25Db2RlIG9mIHN1YlNlY3Rpb25BcnJheSkge1xuICAgICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgICAgIGlmIChzdWJTZWN0aW9uT2JqZWN0KSB7IHN1YlNlY3Rpb25PYmplY3Quc2hvdygpOyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGlkZVN1YlNlY3Rpb25zKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICBpZiAoc3ViU2VjdGlvbkFycmF5ICYmIHN1YlNlY3Rpb25BcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbkNvZGUgb2Ygc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKHN1YlNlY3Rpb25PYmplY3QpIHsgc3ViU2VjdGlvbk9iamVjdC5oaWRlKCk7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaG93QWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd0FjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuc2hvd0FjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBoaWRlQWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5oaWRlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGVuYWJsZUFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LmVuYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGRpc2FibGVBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5kaXNhYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZW5hYmxlQWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5lbmFibGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZGlzYWJsZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuZGlzYWJsZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBlbmFibGVGaWVsZChmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmVuYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZChmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmRpc2FibGUoKSA6IG51bGw7XG4gIH1cblxuICBnZXRGaWVsZFZhbHVlKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZ2V0VmFsdWUoKSA6IG51bGw7XG4gIH1cblxuICBnZXRGaWVsZHNWYWx1ZXMoZmllbGRDb2Rlc0FycmF5KSB7XG4gICAgaWYgKCFmaWVsZENvZGVzQXJyYXkgfHwgIUFycmF5LmlzQXJyYXkoZmllbGRDb2Rlc0FycmF5KSB8fCBmaWVsZENvZGVzQXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0T2JqZWN0ID0ge307XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpZWxkQ29kZXNBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkQ29kZXNBcnJheVtpbmRleF07XG4gICAgICBpZiAoZmllbGRDb2RlKSB7XG4gICAgICAgIHJlc3VsdE9iamVjdFtmaWVsZENvZGVdID0gdGhpcy5fZmllbGRzT2JqPy5bZmllbGRDb2RlXT8uZ2V0VmFsdWUoKSA/PyBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0T2JqZWN0O1xuICB9XG5cbiAgZ2V0RmllbGRPcHRpb25zKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZ2V0RmllbGRPcHRpb25zKCkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRWYWx1ZShmaWVsZENvZGUsIGZpZWxkVmFsdWUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldFZhbHVlKGZpZWxkVmFsdWUpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkRXJyb3IoY29kZSwgbWVzc2FnZSwgdHlwZSA9ICdlcnJvcicpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoY29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEludHJpbnNpY0Vycm9yTWVzc2FnZShjb2RlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkUmVxdWlyZWQoZmllbGRDb2RlLCByZXF1aXJlZCkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QucmVxdWlyZWQgPSByZXF1aXJlZCA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEVycm9yTWVzc2FnZShmaWVsZENvZGUsIGVycm9yTWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRPcHRpb25zKGZpZWxkQ29kZSwgb3B0aW9uc0FycmF5LCBpZEF0dHJpYnV0ZSwgbmFtZUF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIGlmIChmaWVsZE9iamVjdCAmJiBvcHRpb25zQXJyYXkgJiYgb3B0aW9uc0FycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBvcHRpb25JdGVtIG9mIG9wdGlvbnNBcnJheSkge1xuICAgICAgICBjb25zdCBmaWVsZE9wdGlvbiA9IHtcbiAgICAgICAgICBmaWVsZE9wdGlvbklkOiBvcHRpb25JdGVtW2lkQXR0cmlidXRlXSxcbiAgICAgICAgICBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb25JdGVtW25hbWVBdHRyaWJ1dGVdXG4gICAgICAgIH07XG4gICAgICAgIGZpZWxkT3B0aW9ucy5wdXNoKGZpZWxkT3B0aW9uKTtcbiAgICAgIH1cbiAgICAgIGZpZWxkT2JqZWN0LnNldEZpZWxkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkU2V0KGZpbHRlckZ1bmMsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGxldCBmaWVsZFVuaXZlcnNlID0gbnVsbDtcbiAgICBpZiAoZmllbGRBcnJheSAmJiBBcnJheS5pc0FycmF5KGZpZWxkQXJyYXkpICYmIGZpZWxkQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgZmllbGRVbml2ZXJzZSA9IGZpZWxkQXJyYXk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uQ29kZSAmJiAhc3ViU2VjdGlvbkNvZGUpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHNlY3Rpb25PYmplY3Q/LmdldEZpZWxkTmFtZXMoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25Db2RlICYmIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gc3ViU2VjdGlvbk9iamVjdD8uZ2V0RmllbGROYW1lcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gdGhpcy5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfVxuICAgIGlmICghZmlsdGVyRnVuYykge1xuICAgICAgcmV0dXJuIGZpZWxkVW5pdmVyc2U7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZFVuaXZlcnNlLmZpbHRlcihmbGQgPT4ge1xuICAgICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZsZCk7XG4gICAgICByZXR1cm4gKGZpZWxkT2JqZWN0ICYmIGZpbHRlckZ1bmMoZmllbGRPYmplY3QpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5UHJvY2Vzc1RvRmllbGRTZXQocHJvY2Vzc0Z1bmMsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGNvbnN0IGZpZWxkVW5pdmVyc2UgPSB0aGlzLmdldEZpZWxkU2V0KG51bGwsIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgbGV0IGZpZWxkU2V0U2l6ZSA9IDA7XG4gICAgaWYgKGZpZWxkVW5pdmVyc2UgJiYgcHJvY2Vzc0Z1bmMpIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGRDb2RlIG9mIGZpZWxkVW5pdmVyc2UpIHtcbiAgICAgICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgICAgIGlmIChmaWVsZE9iamVjdCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9jZXNzRnVuYyhmaWVsZE9iamVjdCk7XG4gICAgICAgICAgICBmaWVsZFNldFNpemUgKz0gMTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgcHJvY2VzYW5kbyBmdW5jaW9uIGVuIGNhbXBvICR7ZmllbGRPYmplY3R9OiAke2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWVsZFNldFNpemU7XG4gIH1cblxuICBzaG93RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5zaG93KCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgaGlkZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuaGlkZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHNob3dMYWJlbEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuc2hvd0xhYmxlbCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGhpZGVMYWJlbEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuaGlkZUxhYmVsKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG4gIC8vIFBhcmEgZGVwcmVjYXJcbiAgZW5hYmxlRWRpdEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuICAvLyBQYXJhIGRlcHJlY2FyXG4gIGRpc2FibGVFZGl0RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuZW5hYmxlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuZGlzYWJsZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGNsZWFuRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmllbGRPYmplY3QgPT4ge1xuICAgICAgZmllbGRPYmplY3QuY2xlYW4oJycpO1xuICAgICAgZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKCcnKTtcbiAgICB9LCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmZpZWxkUmVxdWlyZWQsIGZpZWxkQXJyYXksXG4gICAgICBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmZpZWxkUmVxdWlyZWQgJiYgZmxkLmlzRW1wdHkoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRDaGFuZ2VkRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+ICFmbGQub3V0cHV0T25seSAmJiBmbGQuaGFzQ2hhbmdlZCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1dpdGhWYWxpZGF0aW9uSXNzdWVzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5lcnJvckNvZGUgIT09IE5PX0VSUk9SLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHRhZ0ZpZWxkc1dpdGhFcnJvcihlcnJvck1lc3NhZ2UsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmllbGRPYmplY3QgPT4ge1xuICAgICAgZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgfSwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3JGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IoJycsIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICB0YWdFbXB0eVJlcXVpcmVkRmllbGRzKGVycm9yTWVzc2FnZSwgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgY29uc3QgcGVuZGluZ0ZpZWxkcyA9IHRoaXMuZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgIGlmIChwZW5kaW5nRmllbGRzICYmIHBlbmRpbmdGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IoZXJyb3JNZXNzYWdlLCBwZW5kaW5nRmllbGRzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjbGVhblRhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuY2xlYW4oKSA6IG51bGw7XG4gIH1cblxuICBnZXRUYWJsZVJlY29yZCh0YWJsZUNvZGUsIHJlY29yZElkKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5nZXRUYWJsZVJlY29yZChyZWNvcmRJZCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVRhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dUYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBzaG93VGFibGVzKHRhYmxlQXJyYXkpIHtcbiAgICBjb25zdCB0YWJsZU5hbWVzID0gKEFycmF5LmlzQXJyYXkodGFibGVBcnJheSkpID8gdGFibGVBcnJheSA6IFt0YWJsZUFycmF5XTtcbiAgICB0YWJsZU5hbWVzLmZvckVhY2godGFibGVDb2RlID0+IHRoaXMuc2hvd1RhYmxlKHRhYmxlQ29kZSkpO1xuICB9XG5cbiAgaGlkZVRhYmxlcyh0YWJsZUFycmF5KSB7XG4gICAgY29uc3QgdGFibGVOYW1lcyA9IChBcnJheS5pc0FycmF5KHRhYmxlQXJyYXkpKSA/IHRhYmxlQXJyYXkgOiBbdGFibGVBcnJheV07XG4gICAgdGFibGVOYW1lcy5mb3JFYWNoKHRhYmxlQ29kZSA9PiB0aGlzLmhpZGVUYWJsZSh0YWJsZUNvZGUpKTtcbiAgfVxuXG4gIC8qKiBwYXlsb2FkIHBhcmEgc2VydmljaW9zIFR1YWluICovXG4gIGdldFBheWxvYWQoKSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7XG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgdGFibGVzOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmdldEZpZWxkcygpO1xuICAgIGlmIChmb3JtRmllbGRzICYmIGZvcm1GaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZERlc2NyaXB0b3Igb2YgZm9ybUZpZWxkcykge1xuICAgICAgICBpZiAoIWZpZWxkRGVzY3JpcHRvci5vdXRwdXRPbmx5KSB7XG4gICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0ge1xuICAgICAgICAgICAgZmllbGRDb2RlOiBmaWVsZERlc2NyaXB0b3IuZmllbGRDb2RlLFxuICAgICAgICAgICAgZmllbGRWYWx1ZTogZmllbGREZXNjcmlwdG9yLmdldFZhbHVlKCksXG4gICAgICAgICAgICBlZGl0YWJsZTogIWZpZWxkRGVzY3JpcHRvci5kaXNhYmxlZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZpZWxkRGVzY3JpcHRvci52aXNpYmxlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZpZWxkRGVzY3JpcHRvci5maWVsZFJlcXVpcmVkLFxuICAgICAgICAgICAgZmllbGRPcHRpb25zOiAnJyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvcm1EYXRhLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdGFibGVzID0gdGhpcy5nZXRUYWJsZXMoKTtcbiAgICBpZiAodGFibGVzICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlRGVzY3JpcHRvciBvZiB0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgZm9ybVRhYmxlID0ge1xuICAgICAgICAgIHRhYmxlQ29kZTogdGFibGVEZXNjcmlwdG9yLnRhYmxlQ29kZSxcbiAgICAgICAgICB2aXNpYmxlOiB0YWJsZURlc2NyaXB0b3IudmlzaWJsZSxcbiAgICAgICAgICBjdXJyZW50UGFnZTogdGFibGVEZXNjcmlwdG9yLmN1cnJlbnRQYWdlLFxuICAgICAgICAgIHJlcXVlc3RlZFBhZ2U6IHRhYmxlRGVzY3JpcHRvci5yZXF1ZXN0ZWRQYWdlLFxuICAgICAgICAgIHJlY29yZHNQZXJQYWdlOiB0YWJsZURlc2NyaXB0b3IucmVjb3Jkc1BlclBhZ2UsXG4gICAgICAgICAgY3VycmVudEZpbHRlcjogdGFibGVEZXNjcmlwdG9yLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgICAgc29ydGluZ0NvbHVtbjogdGFibGVEZXNjcmlwdG9yLnNvcnRpbmcuY29sdW1uTmFtZSxcbiAgICAgICAgICBzb3J0aW5nRGlyZWN0aW9uOiB0YWJsZURlc2NyaXB0b3Iuc29ydGluZy5kaXJlY3Rpb24sXG4gICAgICAgIH07XG4gICAgICAgIGZvcm1EYXRhLnRhYmxlcy5wdXNoKGZvcm1UYWJsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxufVxuIl19
570
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQWF0QixNQUFNLE9BQU8sb0JBQW9CO0lBaUIvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFWbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUd0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7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aEMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxhQUFhO3dCQUN2QyxZQUFZLEVBQUUsRUFBRTtxQkFDakIsQ0FBQztvQkFDRixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztpQkFDakM7YUFDRjtTQUNGO1FBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9CLEtBQUssTUFBTSxlQUFlLElBQUksTUFBTSxFQUFFO2dCQUNwQyxNQUFNLFNBQVMsR0FBRztvQkFDaEIsU0FBUyxFQUFFLGVBQWUsQ0FBQyxTQUFTO29CQUNwQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87b0JBQ2hDLFdBQVcsRUFBRSxlQUFlLENBQUMsV0FBVztvQkFDeEMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO29CQUM1QyxjQUFjLEVBQUUsZUFBZSxDQUFDLGNBQWM7b0JBQzlDLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtvQkFDNUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsVUFBVTtvQkFDakQsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTO2lCQUNwRCxDQUFDO2dCQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2pDO1NBQ0Y7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZWNvcmRGb3JtU2VjdGlvbiB9IGZyb20gJy4vc2VjdGlvbic7XG5pbXBvcnQgeyBGb3JtQWN0aW9uIH0gZnJvbSAnLi9hY3Rpb24nO1xuaW1wb3J0IHsgRmllbGREZXNjcmlwdG9yIH0gZnJvbSAnLi9maWVsZCc7XG5pbXBvcnQgeyBSZWNvcmRUYWJsZSB9IGZyb20gJy4vdGFibGUvdGFibGUnO1xuXG5jb25zdCBIRUFERVIgPSAnSEVBREVSJztcbmNvbnN0IE5PX0VSUk9SID0gJzAwJztcbmludGVyZmFjZSBUcmFuc2l0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzb3VyY2U6IHN0cmluZztcbiAgZGVzdGluYXRpb246IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFN0YXRlRmxvdyB7XG4gIGRlZmF1bHRTdGF0ZTogc3RyaW5nO1xuICBzdGF0ZXM6IHN0cmluZ1tdO1xuICB0cmFuc2l0aW9uczogVHJhbnNpdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgRm9ybVN0cnVjdHVyZUFuZERhdGEge1xuICBzdGF0ZTogc3RyaW5nO1xuICBfbmFtZTogc3RyaW5nO1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBwcml2YXRlIF90aXRsZTogc3RyaW5nO1xuICBwcml2YXRlIF9zdGF0ZUZsb3c6IFN0YXRlRmxvdztcbiAgcHJpdmF0ZSBfZmllbGRzOiBGaWVsZERlc2NyaXB0b3JbXTtcbiAgcHJpdmF0ZSBfZmllbGRzT2JqID0ge307XG4gIHByaXZhdGUgX2FjdGlvbnM6IEZvcm1BY3Rpb25bXTtcbiAgcHJpdmF0ZSBfYWN0aW9uc09iaiA9IHt9O1xuICBwcml2YXRlIF90YWJsZXM6IFJlY29yZFRhYmxlW107XG4gIHByaXZhdGUgX3RhYmxlT2JqID0ge307XG4gIHByaXZhdGUgX3NlY3Rpb25zOiBSZWNvcmRGb3JtU2VjdGlvbltdO1xuICBwcml2YXRlIF9zZWN0aW9uc09iaiA9IHt9O1xuICBwcml2YXRlIF9pbW11dGFibGVEYXRhID0ge307XG4gIHByaXZhdGUgX2V4dHJhSW5mbyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKGRlZmluaXRpb25SZWNlaXZlZCwgZm9ybUNvbmZpZykge1xuICAgIHRoaXMuX2Zvcm1Db25maWcgPSBmb3JtQ29uZmlnO1xuICAgIHRoaXMuc3RhdGUgPSAnJztcbiAgICB0aGlzLl9hY3Rpb25zID0gW107XG4gICAgdGhpcy5fZmllbGRzID0gW107XG4gICAgdGhpcy5fdGFibGVzID0gW107XG4gICAgdGhpcy5fc2VjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cgPSB7XG4gICAgICBkZWZhdWx0U3RhdGU6ICcnLFxuICAgICAgc3RhdGVzOiBbXSxcbiAgICAgIHRyYW5zaXRpb25zOiBbXSxcbiAgICB9O1xuICAgIGlmICghZGVmaW5pdGlvblJlY2VpdmVkKSB7IHJldHVybjsgfVxuICAgIHRoaXMuX25hbWUgPSAoZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0gJiYgZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1Db2RlIDogdGhpcy5fbmFtZTtcbiAgICB0aGlzLl90aXRsZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtVGl0bGUpXG4gICAgICA/IGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSA6ICcnO1xuICAgIHRoaXMuc2V0U3RhdGVGbG93KGRlZmluaXRpb25SZWNlaXZlZD8uc3RhdGVzLCBkZWZpbml0aW9uUmVjZWl2ZWQ/LnRyYW5zaXRpb25zLFxuICAgICAgZGVmaW5pdGlvblJlY2VpdmVkPy5kZWZhdWx0U3RhdGUpO1xuICAgIHRoaXMuaW1tdXRhYmxlRGF0YSA9IGRlZmluaXRpb25SZWNlaXZlZC5pbW11dGFibGVEYXRhO1xuICAgIHRoaXMuZXh0cmFJbmZvID0gZGVmaW5pdGlvblJlY2VpdmVkLmV4dHJhSW5mbztcblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybUFjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuYWN0aW9ucy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcztcbiAgICAgICAgaWYgKCF2aXNpYmxlU3RhdGVzKSB7XG4gICAgICAgICAgdmlzaWJsZVN0YXRlcyA9IChvYmpEZWYuYWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGFjdGlvblJlY2VpdmVkIG9mIGZvcm1BY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IGdsb2JhbEFjdGlvbiA9IG5ldyBGb3JtQWN0aW9uKGFjdGlvblJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uQ29kZSA9IGdsb2JhbEFjdGlvbi5hY3Rpb25Db2RlO1xuICAgICAgICBpZiAoZ2xvYmFsQWN0aW9uQ29kZSkge1xuICAgICAgICAgIHRoaXMuX2FjdGlvbnMucHVzaChnbG9iYWxBY3Rpb24pO1xuICAgICAgICAgIHRoaXMuX2FjdGlvbnNPYmpbZ2xvYmFsQWN0aW9uQ29kZV0gPSBnbG9iYWxBY3Rpb247XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcykge1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGRlZmluaXRpb25SZWNlaXZlZC5maWVsZHMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5maWVsZE1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBmaWVsZFJlY2VpdmVkIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgY29uc3QgZmllbGRUb0FkZCA9IG5ldyBGaWVsZERlc2NyaXB0b3IoZmllbGRSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGZpZWxkQ29kZSA9IGZpZWxkVG9BZGQuZmllbGRDb2RlO1xuICAgICAgICBpZiAoZmllbGRDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goZmllbGRUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fZmllbGRzT2JqW2ZpZWxkQ29kZV0gPSBmaWVsZFRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMpIHtcbiAgICAgIGNvbnN0IHRhYmxlcyA9IGRlZmluaXRpb25SZWNlaXZlZC50YWJsZXMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGxldCBlbmFibGVkU3RhdGVzID0gb2JqRGVmLmVuYWJsZWRTdGF0ZXMgfHwgb2JqRGVmLmVkaXRhYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi50YWJsZU1vZGVzIHx8ICcnKS5zcGxpdCgnLCcpXG4gICAgICAgICAgICAubWFwKHN0YXRlID0+IHN0YXRlLnRyaW0oKSlcbiAgICAgICAgICAgIC5maWx0ZXIoc3RhdGUgPT4gc3RhdGUubGVuZ3RoID4gMCkgfHwgW107XG4gICAgICAgICAgZW5hYmxlZFN0YXRlcyA9IFsuLi52aXNpYmxlU3RhdGVzXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMgfHwgdmlzaWJsZVN0YXRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gdGhpcy5fZm9ybUNvbmZpZy5kZWZhdWx0U3RhdGVGbG93LnN0YXRlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMsIGVuYWJsZWRTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCB0YWJsZVJlY2VpdmVkIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCB0YWJsZVRvQWRkID0gbmV3IFJlY29yZFRhYmxlKHRhYmxlUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCB0YWJsZUNvZGUgPSB0YWJsZVRvQWRkLnRhYmxlQ29kZTtcbiAgICAgICAgaWYgKHRhYmxlQ29kZSkge1xuICAgICAgICAgIHRoaXMuX3RhYmxlcy5wdXNoKHRhYmxlVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3RhYmxlT2JqW3RhYmxlQ29kZV0gPSB0YWJsZVRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5zZWN0aW9ucykge1xuICAgICAgY29uc3QgZm9ybVNlY3Rpb25zID0gZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5zZWN0aW9uTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyAuLi5vYmpEZWYsIHZpc2libGVTdGF0ZXMgfTtcbiAgICAgIH0pO1xuICAgICAgZm9yIChjb25zdCBzZWN0aW9uUmVjZWl2ZWQgb2YgZm9ybVNlY3Rpb25zKSB7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Ub0FkZCA9IG5ldyBSZWNvcmRGb3JtU2VjdGlvbihzZWN0aW9uUmVjZWl2ZWQsIHRoaXMpO1xuICAgICAgICBjb25zdCBzZWN0aW9uQ29kZSA9IHNlY3Rpb25Ub0FkZC5zZWN0aW9uQ29kZTtcbiAgICAgICAgaWYgKHNlY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaChzZWN0aW9uVG9BZGQpO1xuICAgICAgICAgIHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA9IHNlY3Rpb25Ub0FkZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldCBpbW11dGFibGVEYXRhKGltbXV0YWJsZURhdGEpIHsgT2JqZWN0LmFzc2lnbih0aGlzLl9pbW11dGFibGVEYXRhLCBpbW11dGFibGVEYXRhKTsgfVxuICBzZXQgZXh0cmFJbmZvKGV4dHJhSW5mbykgeyBPYmplY3QuYXNzaWduKHRoaXMuX2V4dHJhSW5mbywgZXh0cmFJbmZvKTsgfVxuXG4gIGdldCBkZWZhdWx0U3RhdGUoKSB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlOyB9XG4gIGdldCB0aXRsZSgpIHsgcmV0dXJuIHRoaXMuX3RpdGxlOyB9XG4gIHNldCB0aXRsZSh0aXRsZSkgeyB0aGlzLl90aXRsZSA9IHRpdGxlOyB9XG4gIGdldCBuYW1lKCkgeyByZXR1cm4gdGhpcy5fbmFtZTsgfVxuICBzZXQgbmFtZShuYW1lKSB7IHRoaXMuX25hbWUgPSBuYW1lOyB9XG5cbiAgY2hhbmdlU3RhdGUobmV3U3RhdGUpIHtcbiAgICBpZiAoIW5ld1N0YXRlIHx8ICF0aGlzLnN1cHBvcnRTdGF0ZShuZXdTdGF0ZSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0YXRlKSB7XG4gICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRyYW5zaXRpb25Ub0NoYW5nZSA9IHRoaXMuX3N0YXRlRmxvdy50cmFuc2l0aW9ucy5maW5kKHRybnMgPT5cbiAgICAgICAgdHJucy5zb3VyY2UgPT09IHRoaXMuc3RhdGUgJiYgdHJucy5kZXN0aW5hdGlvbiA9PT0gbmV3U3RhdGUpO1xuICAgICAgaWYgKHRyYW5zaXRpb25Ub0NoYW5nZSkge1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3U3RhdGU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAodGhpcy5zdGF0ZSA9PT0gbmV3U3RhdGUpO1xuICB9XG5cbiAgc2V0U3RhdGVGbG93KHN0YXRlcz8sIHRyYW5zaXRpb25zPywgZGVmYXVsdFN0YXRlPykge1xuICAgIGlmICghc3RhdGVzIHx8ICF0cmFuc2l0aW9ucykge1xuICAgICAgdGhpcy5fc3RhdGVGbG93ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLl9mb3JtQ29uZmlnLmRlZmF1bHRTdGF0ZUZsb3cpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc3RhdGVGbG93LnN0YXRlcyA9IHN0YXRlcztcbiAgICB0aGlzLl9zdGF0ZUZsb3cuZGVmYXVsdFN0YXRlID0gZGVmYXVsdFN0YXRlIHx8IHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXNbMF07XG4gICAgdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMubWFwKHRyYW5zaXRpb24gPT4ge1xuICAgICAgY29uc3QgbmFtZSA9IHRyYW5zaXRpb24ubmFtZTtcbiAgICAgIGNvbnN0IHNvdXJjZSA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uc291cmNlKSkgPyB0cmFuc2l0aW9uLnNvdXJjZSA6ICcnO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSAodGhpcy5fc3RhdGVGbG93LnN0YXRlcy5pbmNsdWRlcyh0cmFuc2l0aW9uLmRlc3RpbmF0aW9uKSkgPyB0cmFuc2l0aW9uLmRlc3RpbmF0aW9uIDogJyc7XG4gICAgICByZXR1cm4geyBuYW1lLCBzb3VyY2UsIGRlc3RpbmF0aW9uIH07XG4gICAgfSkuZmlsdGVyKGl0ZW0gPT4gaXRlbS5uYW1lICYmIGl0ZW0uc291cmNlICYmIGl0ZW0uZGVzdGluYXRpb24pO1xuICB9XG5cbiAgc3VwcG9ydFN0YXRlKHN0YXRlKSB7IHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzPy5pbmNsdWRlcyhzdGF0ZSk7IH1cbiAgc3VwcG9ydE1vZGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMuc3VwcG9ydFN0YXRlKHN0YXRlKTsgfVxuXG5cbiAgZ2V0IGltbXV0YWJsZURhdGEoKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIGNvbnN0IG9iamVjdE5hbWVzID0gT2JqZWN0LmtleXModGhpcy5faW1tdXRhYmxlRGF0YSk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbmFtZSA9IG9iamVjdE5hbWVzW2luZGV4XTtcbiAgICAgIGRhdGFbbmFtZV0gPSB0aGlzLmdldEltbXV0YWJsZUVsZW1lbnQobmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lKSB7IHJldHVybiB0aGlzLl9pbW11dGFibGVEYXRhPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cbiAgZ2V0RXh0cmFJbmZvKG5hbWUpIHsgcmV0dXJuIHRoaXMuX2V4dHJhSW5mbz8uW25hbWVdPy52YWx1ZSA/PyBudWxsOyB9XG5cbiAgZ2V0IGV4dHJhSW5mbygpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9leHRyYUluZm8pO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBvYmplY3ROYW1lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBvYmplY3ROYW1lc1tpbmRleF07XG4gICAgICBkYXRhW25hbWVdID0gdGhpcy5nZXRFeHRyYUluZm8obmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0RmllbGRzKCkgeyByZXR1cm4gdGhpcy5fZmllbGRzOyB9XG5cbiAgZ2V0U3RhdGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzO1xuICB9XG5cbiAgZ2V0RmllbGROYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5fZmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5maWVsZENvZGUpO1xuICB9XG5cbiAgZ2V0QWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucztcbiAgfVxuXG4gIGdldEhlYWRlckFjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGFjdGlvbkl0ZW0gPT4gYWN0aW9uSXRlbS5sb2NhdGlvbiA9PT0gSEVBREVSKTtcbiAgfVxuXG4gIGdldEZpZWxkT2JqZWN0KGVsZW1lbnRJZCkge1xuICAgIHJldHVybiAodGhpcy5fZmllbGRzT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9maWVsZHNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fZmllbGRzT2JqW2VsZW1lbnRJZF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0VGFibGVPYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl90YWJsZU9iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fdGFibGVPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fdGFibGVPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRBY3Rpb25PYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9hY3Rpb25zT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9hY3Rpb25zT2JqW2VsZW1lbnRJZF0pXG4gICAgICA/IHRoaXMuX2FjdGlvbnNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb24gPSAodGhpcy5fc2VjdGlvbnNPYmogJiYgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gOiBudWxsO1xuICAgIHJldHVybiAoc2VjdGlvbikgPyBzZWN0aW9uLmdldFN1YnNlY3Rpb24oc3Vic2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgfVxuXG4gIGdldFNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlY3Rpb25zT2JqICYmIHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSlcbiAgICAgID8gdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdIDogbnVsbDtcbiAgfVxuICBzZWN0aW9ucygpIHsgcmV0dXJuIHRoaXMuZ2V0U2VjdGlvbnMoKTsgfVxuICBzZWN0aW9uVGl0bGVzKCkgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9uc1RpdGxlcygpOyB9XG5cbiAgZ2V0U2VjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zO1xuICB9XG5cbiAgbnVtU2VjdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLmxlbmd0aDtcbiAgfVxuXG4gIGdldFNlY3Rpb25zVGl0bGVzKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9ucy5tYXAoZm9ybVNlY3Rpb24gPT4gZm9ybVNlY3Rpb24uc2VjdGlvblRpdGxlKTtcbiAgfVxuXG4gIGdldFNlY3Rpb25PYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9zZWN0aW9uc09iaiAmJiBlbGVtZW50SWQgJiYgdGhpcy5fc2VjdGlvbnNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fc2VjdGlvbnNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cbiAgdGFibGVzKCkgeyByZXR1cm4gdGhpcy5nZXRUYWJsZXMoKTsgfVxuXG4gIGdldFRhYmxlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdGFibGVzO1xuICB9XG5cbiAgY2xlYW5EYXRhKCkge1xuICAgIGlmICh0aGlzLl9maWVsZHMpIHtcbiAgICAgIGZvciAoY29uc3QgcmVjb3JkRmllbGQgb2YgdGhpcy5fZmllbGRzKSB7XG4gICAgICAgIHJlY29yZEZpZWxkLnNldFZhbHVlKHJlY29yZEZpZWxkLmRlZmF1bHRWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLl90YWJsZXMpIHtcbiAgICAgIGZvciAoY29uc3QgZm9ybVRhYmxlIG9mIHRoaXMuX3RhYmxlcykge1xuICAgICAgICBmb3JtVGFibGUuY2xlYW4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaG93U2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlU2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBhY3RpdmVTZWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGl2ZVNlY3Rpb24gPSB0aGlzLl9zZWN0aW9ucy5maW5kKHNlY3Rpb25PYmogPT4gc2VjdGlvbk9iai5hY3RpdmUpO1xuICAgIHJldHVybiBhY3RpdmVTZWN0aW9uLnNlY3Rpb25Db2RlO1xuICB9XG5cbiAgYWN0aXZhdGVTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgdGhpcy5fc2VjdGlvbnMuZm9yRWFjaChzZWN0aW9uT2JqID0+IHtcbiAgICAgIGlmIChzZWN0aW9uT2JqKSB7IHNlY3Rpb25PYmouaW5hY3RpdmF0ZSgpOyB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuYWN0aXZhdGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93U2VjdGlvbnMoc2VjdGlvbkFycmF5KSB7XG4gICAgY29uc3Qgc2VjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoc2VjdGlvbkFycmF5KSkgPyBzZWN0aW9uQXJyYXkgOiBbc2VjdGlvbkFycmF5XTtcbiAgICBzZWN0aW9uTmFtZXMuZm9yRWFjaChzZWN0aW9uQ29kZSA9PiB0aGlzLnNob3dTZWN0aW9uKHNlY3Rpb25Db2RlKSk7XG4gIH1cblxuICBoaWRlU2VjdGlvbnMoc2VjdGlvbkFycmF5KSB7XG4gICAgY29uc3Qgc2VjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoc2VjdGlvbkFycmF5KSkgPyBzZWN0aW9uQXJyYXkgOiBbc2VjdGlvbkFycmF5XTtcbiAgICBzZWN0aW9uTmFtZXMuZm9yRWFjaChzZWN0aW9uQ29kZSA9PiB0aGlzLmhpZGVTZWN0aW9uKHNlY3Rpb25Db2RlKSk7XG4gIH1cblxuICBzaG93U3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgcmV0dXJuIChzdWJTZWN0aW9uT2JqZWN0KSA/IHN1YlNlY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICByZXR1cm4gKHN1YlNlY3Rpb25PYmplY3QpID8gc3ViU2VjdGlvbk9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1N1YlNlY3Rpb25zKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICBpZiAoc3ViU2VjdGlvbkFycmF5ICYmIHN1YlNlY3Rpb25BcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICAgIGZvciAoY29uc3Qgc3ViU2VjdGlvbkNvZGUgb2Ygc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICAgICAgaWYgKHN1YlNlY3Rpb25PYmplY3QpIHsgc3ViU2VjdGlvbk9iamVjdC5zaG93KCk7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoaWRlU3ViU2VjdGlvbnMoc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25BcnJheSkge1xuICAgIGlmIChzdWJTZWN0aW9uQXJyYXkgJiYgc3ViU2VjdGlvbkFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uQ29kZSBvZiBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbk9iamVjdCkgeyBzdWJTZWN0aW9uT2JqZWN0LmhpZGUoKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZUFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93QWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5zaG93QWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGhpZGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmhpZGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZW5hYmxlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuZW5hYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZGlzYWJsZUFjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LmRpc2FibGUoKSA6IG51bGw7XG4gIH1cblxuICBlbmFibGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmVuYWJsZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBkaXNhYmxlQWN0aW9ucyhhY3Rpb25BcnJheSkge1xuICAgIGNvbnN0IGFjdGlvbk5hbWVzID0gKEFycmF5LmlzQXJyYXkoYWN0aW9uQXJyYXkpKSA/IGFjdGlvbkFycmF5IDogW2FjdGlvbkFycmF5XTtcbiAgICBhY3Rpb25OYW1lcy5mb3JFYWNoKGFjdGlvbkNvZGUgPT4gdGhpcy5kaXNhYmxlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZW5hYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkKGZpZWxkQ29kZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QuZGlzYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5nZXRWYWx1ZSgpIDogbnVsbDtcbiAgfVxuXG4gIGdldEZpZWxkc1ZhbHVlcyhmaWVsZENvZGVzQXJyYXkpIHtcbiAgICBpZiAoIWZpZWxkQ29kZXNBcnJheSB8fCAhQXJyYXkuaXNBcnJheShmaWVsZENvZGVzQXJyYXkpIHx8IGZpZWxkQ29kZXNBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHRPYmplY3QgPSB7fTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgZmllbGRDb2Rlc0FycmF5Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgZmllbGRDb2RlID0gZmllbGRDb2Rlc0FycmF5W2luZGV4XTtcbiAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgcmVzdWx0T2JqZWN0W2ZpZWxkQ29kZV0gPSB0aGlzLl9maWVsZHNPYmo/LltmaWVsZENvZGVdPy5nZXRWYWx1ZSgpID8/IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHRPYmplY3Q7XG4gIH1cblxuICBnZXRGaWVsZE9wdGlvbnMoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5nZXRGaWVsZE9wdGlvbnMoKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZFZhbHVlKGZpZWxkQ29kZSwgZmllbGRWYWx1ZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0VmFsdWUoZmllbGRWYWx1ZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRFcnJvcihmaWVsZENvZGUsIGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSAnZXJyb3InKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRFcnJvcihjb2RlLCBtZXNzYWdlLCB0eXBlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEludHJpbnNpY0Vycm9yTWVzc2FnZShjb2RlLCBtZXNzYWdlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0SW50cmluc2ljRXJyb3JNZXNzYWdlKG1lc3NhZ2UpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkUmVxdWlyZWQoZmllbGRDb2RlLCByZXF1aXJlZCkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3QucmVxdWlyZWQgPSByZXF1aXJlZCA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEVycm9yTWVzc2FnZShmaWVsZENvZGUsIGVycm9yTWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRPcHRpb25zKGZpZWxkQ29kZSwgb3B0aW9uc0FycmF5LCBpZEF0dHJpYnV0ZSwgbmFtZUF0dHJpYnV0ZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgIGlmIChmaWVsZE9iamVjdCAmJiBvcHRpb25zQXJyYXkgJiYgb3B0aW9uc0FycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpZWxkT3B0aW9ucyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBvcHRpb25JdGVtIG9mIG9wdGlvbnNBcnJheSkge1xuICAgICAgICBjb25zdCBmaWVsZE9wdGlvbiA9IHtcbiAgICAgICAgICBmaWVsZE9wdGlvbklkOiBvcHRpb25JdGVtW2lkQXR0cmlidXRlXSxcbiAgICAgICAgICBmaWVsZE9wdGlvblZhbHVlOiBvcHRpb25JdGVtW25hbWVBdHRyaWJ1dGVdXG4gICAgICAgIH07XG4gICAgICAgIGZpZWxkT3B0aW9ucy5wdXNoKGZpZWxkT3B0aW9uKTtcbiAgICAgIH1cbiAgICAgIGZpZWxkT2JqZWN0LnNldEZpZWxkT3B0aW9ucyhmaWVsZE9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldEZpZWxkU2V0KGZpbHRlckZ1bmMsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGxldCBmaWVsZFVuaXZlcnNlID0gbnVsbDtcbiAgICBpZiAoZmllbGRBcnJheSAmJiBBcnJheS5pc0FycmF5KGZpZWxkQXJyYXkpICYmIGZpZWxkQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgZmllbGRVbml2ZXJzZSA9IGZpZWxkQXJyYXk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uQ29kZSAmJiAhc3ViU2VjdGlvbkNvZGUpIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHNlY3Rpb25PYmplY3Q/LmdldEZpZWxkTmFtZXMoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25Db2RlICYmIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gc3ViU2VjdGlvbk9iamVjdD8uZ2V0RmllbGROYW1lcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gdGhpcy5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfVxuICAgIGlmICghZmlsdGVyRnVuYykge1xuICAgICAgcmV0dXJuIGZpZWxkVW5pdmVyc2U7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZFVuaXZlcnNlLmZpbHRlcihmbGQgPT4ge1xuICAgICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZsZCk7XG4gICAgICByZXR1cm4gKGZpZWxkT2JqZWN0ICYmIGZpbHRlckZ1bmMoZmllbGRPYmplY3QpKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFwcGx5UHJvY2Vzc1RvRmllbGRTZXQocHJvY2Vzc0Z1bmMsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGNvbnN0IGZpZWxkVW5pdmVyc2UgPSB0aGlzLmdldEZpZWxkU2V0KG51bGwsIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgbGV0IGZpZWxkU2V0U2l6ZSA9IDA7XG4gICAgaWYgKGZpZWxkVW5pdmVyc2UgJiYgcHJvY2Vzc0Z1bmMpIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGRDb2RlIG9mIGZpZWxkVW5pdmVyc2UpIHtcbiAgICAgICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgICAgIGlmIChmaWVsZE9iamVjdCkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm9jZXNzRnVuYyhmaWVsZE9iamVjdCk7XG4gICAgICAgICAgICBmaWVsZFNldFNpemUgKz0gMTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgRXJyb3IgcHJvY2VzYW5kbyBmdW5jaW9uIGVuIGNhbXBvICR7ZmllbGRPYmplY3R9OiAke2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmaWVsZFNldFNpemU7XG4gIH1cblxuICBzaG93RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5zaG93KCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgaGlkZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuaGlkZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHNob3dMYWJlbEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuc2hvd0xhYmxlbCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGhpZGVMYWJlbEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuaGlkZUxhYmVsKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG4gIC8vIFBhcmEgZGVwcmVjYXJcbiAgZW5hYmxlRWRpdEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuICAvLyBQYXJhIGRlcHJlY2FyXG4gIGRpc2FibGVFZGl0RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmRpc2FibGVGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGVuYWJsZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuZW5hYmxlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZGlzYWJsZUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuZGlzYWJsZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGNsZWFuRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmllbGRPYmplY3QgPT4ge1xuICAgICAgZmllbGRPYmplY3QuY2xlYW4oJycpO1xuICAgICAgZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKCcnKTtcbiAgICB9LCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmZpZWxkUmVxdWlyZWQsIGZpZWxkQXJyYXksXG4gICAgICBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmZpZWxkUmVxdWlyZWQgJiYgZmxkLmlzRW1wdHkoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRDaGFuZ2VkRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+ICFmbGQub3V0cHV0T25seSAmJiBmbGQuaGFzQ2hhbmdlZCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldEZpZWxkc1dpdGhWYWxpZGF0aW9uSXNzdWVzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5lcnJvckNvZGUgIT09IE5PX0VSUk9SLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHRhZ0ZpZWxkc1dpdGhFcnJvcihlcnJvck1lc3NhZ2UsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmllbGRPYmplY3QgPT4ge1xuICAgICAgZmllbGRPYmplY3Quc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgfSwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGNsZWFuRXJyb3JGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IoJycsIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICB0YWdFbXB0eVJlcXVpcmVkRmllbGRzKGVycm9yTWVzc2FnZSwgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgY29uc3QgcGVuZGluZ0ZpZWxkcyA9IHRoaXMuZ2V0UmVxdWlyZWRFbXB0eUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgIGlmIChwZW5kaW5nRmllbGRzICYmIHBlbmRpbmdGaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50YWdGaWVsZHNXaXRoRXJyb3IoZXJyb3JNZXNzYWdlLCBwZW5kaW5nRmllbGRzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjbGVhblRhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuY2xlYW4oKSA6IG51bGw7XG4gIH1cblxuICBnZXRUYWJsZVJlY29yZCh0YWJsZUNvZGUsIHJlY29yZElkKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5nZXRUYWJsZVJlY29yZChyZWNvcmRJZCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVRhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dUYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBzaG93VGFibGVzKHRhYmxlQXJyYXkpIHtcbiAgICBjb25zdCB0YWJsZU5hbWVzID0gKEFycmF5LmlzQXJyYXkodGFibGVBcnJheSkpID8gdGFibGVBcnJheSA6IFt0YWJsZUFycmF5XTtcbiAgICB0YWJsZU5hbWVzLmZvckVhY2godGFibGVDb2RlID0+IHRoaXMuc2hvd1RhYmxlKHRhYmxlQ29kZSkpO1xuICB9XG5cbiAgaGlkZVRhYmxlcyh0YWJsZUFycmF5KSB7XG4gICAgY29uc3QgdGFibGVOYW1lcyA9IChBcnJheS5pc0FycmF5KHRhYmxlQXJyYXkpKSA/IHRhYmxlQXJyYXkgOiBbdGFibGVBcnJheV07XG4gICAgdGFibGVOYW1lcy5mb3JFYWNoKHRhYmxlQ29kZSA9PiB0aGlzLmhpZGVUYWJsZSh0YWJsZUNvZGUpKTtcbiAgfVxuXG4gIC8qKiBwYXlsb2FkIHBhcmEgc2VydmljaW9zIFR1YWluICovXG4gIGdldFBheWxvYWQoKSB7XG4gICAgY29uc3QgZm9ybURhdGEgPSB7XG4gICAgICBmaWVsZHM6IFtdLFxuICAgICAgdGFibGVzOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IGZvcm1GaWVsZHMgPSB0aGlzLmdldEZpZWxkcygpO1xuICAgIGlmIChmb3JtRmllbGRzICYmIGZvcm1GaWVsZHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCBmaWVsZERlc2NyaXB0b3Igb2YgZm9ybUZpZWxkcykge1xuICAgICAgICBpZiAoIWZpZWxkRGVzY3JpcHRvci5vdXRwdXRPbmx5KSB7XG4gICAgICAgICAgY29uc3QgZm9ybUZpZWxkID0ge1xuICAgICAgICAgICAgZmllbGRDb2RlOiBmaWVsZERlc2NyaXB0b3IuZmllbGRDb2RlLFxuICAgICAgICAgICAgZmllbGRWYWx1ZTogZmllbGREZXNjcmlwdG9yLmdldFZhbHVlKCksXG4gICAgICAgICAgICBlZGl0YWJsZTogIWZpZWxkRGVzY3JpcHRvci5kaXNhYmxlZCxcbiAgICAgICAgICAgIHZpc2libGU6IGZpZWxkRGVzY3JpcHRvci52aXNpYmxlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZpZWxkRGVzY3JpcHRvci5maWVsZFJlcXVpcmVkLFxuICAgICAgICAgICAgZmllbGRPcHRpb25zOiAnJyxcbiAgICAgICAgICB9O1xuICAgICAgICAgIGZvcm1EYXRhLmZpZWxkcy5wdXNoKGZvcm1GaWVsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgdGFibGVzID0gdGhpcy5nZXRUYWJsZXMoKTtcbiAgICBpZiAodGFibGVzICYmIHRhYmxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlRGVzY3JpcHRvciBvZiB0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgZm9ybVRhYmxlID0ge1xuICAgICAgICAgIHRhYmxlQ29kZTogdGFibGVEZXNjcmlwdG9yLnRhYmxlQ29kZSxcbiAgICAgICAgICB2aXNpYmxlOiB0YWJsZURlc2NyaXB0b3IudmlzaWJsZSxcbiAgICAgICAgICBjdXJyZW50UGFnZTogdGFibGVEZXNjcmlwdG9yLmN1cnJlbnRQYWdlLFxuICAgICAgICAgIHJlcXVlc3RlZFBhZ2U6IHRhYmxlRGVzY3JpcHRvci5yZXF1ZXN0ZWRQYWdlLFxuICAgICAgICAgIHJlY29yZHNQZXJQYWdlOiB0YWJsZURlc2NyaXB0b3IucmVjb3Jkc1BlclBhZ2UsXG4gICAgICAgICAgY3VycmVudEZpbHRlcjogdGFibGVEZXNjcmlwdG9yLmN1cnJlbnRGaWx0ZXIsXG4gICAgICAgICAgc29ydGluZ0NvbHVtbjogdGFibGVEZXNjcmlwdG9yLnNvcnRpbmcuY29sdW1uTmFtZSxcbiAgICAgICAgICBzb3J0aW5nRGlyZWN0aW9uOiB0YWJsZURlc2NyaXB0b3Iuc29ydGluZy5kaXJlY3Rpb24sXG4gICAgICAgIH07XG4gICAgICAgIGZvcm1EYXRhLnRhYmxlcy5wdXNoKGZvcm1UYWJsZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmb3JtRGF0YTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { componentConstants } from './form.constants';
1
+ import { elementTypes } from './form.constants';
2
2
  export class RecordFormSubSection {
3
3
  constructor(subsectionReceived, formObject) {
4
4
  if (!subsectionReceived) {
@@ -21,15 +21,15 @@ export class RecordFormSubSection {
21
21
  let arrayToAdd = null;
22
22
  const { type, code } = receivedElement;
23
23
  switch (type) {
24
- case componentConstants.ELEMENTTYPE_FIELD:
24
+ case elementTypes.field:
25
25
  elementObject = formObject.getFieldObject(code);
26
26
  arrayToAdd = this.subSectionFields;
27
27
  break;
28
- case componentConstants.ELEMENTTYPE_TABLE:
28
+ case elementTypes.table:
29
29
  elementObject = formObject.getTableObject(code);
30
30
  arrayToAdd = this.subSectionTables;
31
31
  break;
32
- case componentConstants.ELEMENTTYPE_ACTION:
32
+ case elementTypes.action:
33
33
  elementObject = formObject.getActionObject(code);
34
34
  arrayToAdd = this.subSectionActions;
35
35
  break;
@@ -61,4 +61,4 @@ export class RecordFormSubSection {
61
61
  }
62
62
  supportMode(state) { return this.viewOnState(state); }
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc3Vic2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLFlBQVksa0JBQWtCLEVBQUUsVUFBVTtRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hHLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RyxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDNUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDL0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDekIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLGVBQWUsQ0FBQztnQkFDdkMsUUFBUSxJQUFJLEVBQUU7b0JBQ1osS0FBSyxrQkFBa0IsQ0FBQyxpQkFBaUI7d0JBQ3ZDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssa0JBQWtCLENBQUMsaUJBQWlCO3dCQUN2QyxhQUFhLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEQsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDbkMsTUFBTTtvQkFDUixLQUFLLGtCQUFrQixDQUFDLGtCQUFrQjt3QkFDeEMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2pELFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7d0JBQ3BDLE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO29CQUNqQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQztpQkFDMUM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVoQyxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksWUFBWSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRTdFLFFBQVEsQ0FBQyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBvbmVudENvbnN0YW50cyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkRm9ybVN1YlNlY3Rpb24ge1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBfY3VzdG9tUmVuZGVyOiBzdHJpbmc7XG4gIHN1YnNlY3Rpb25JZDogc3RyaW5nO1xuICBzdWJzZWN0aW9uQ29kZTogc3RyaW5nO1xuICBzdWJzZWN0aW9uVGl0bGU6IHN0cmluZztcbiAgdmlzaWJsZVN0YXRlczogc3RyaW5nW107XG5cbiAgc3ViU2VjdGlvbkVsZW1lbnRzOiBhbnlbXTtcbiAgc3ViU2VjdGlvbkZpZWxkczogYW55W107XG4gIHN1YlNlY3Rpb25UYWJsZXM6IGFueVtdO1xuICBzdWJTZWN0aW9uQWN0aW9uczogYW55W107XG4gIGVsZW1lbnRzQXJyYXk6IGFueTtcblxuICBjb25zdHJ1Y3RvcihzdWJzZWN0aW9uUmVjZWl2ZWQsIGZvcm1PYmplY3QpIHtcbiAgICBpZiAoIXN1YnNlY3Rpb25SZWNlaXZlZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLl9jdXN0b21SZW5kZXIgPSBudWxsO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy5zdWJTZWN0aW9uRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25GaWVsZHMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25UYWJsZXMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25BY3Rpb25zID0gW107XG4gICAgdGhpcy5lbGVtZW50c0FycmF5ID0ge307XG4gICAgdGhpcy5zdWJzZWN0aW9uSWQgPSAoc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25JZCkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbklkLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLnN1YnNlY3Rpb25Db2RlID0gKHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uQ29kZSkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbkNvZGUgOiAnJztcbiAgICB0aGlzLnN1YnNlY3Rpb25UaXRsZSA9IChzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvblRpdGxlKSA/IHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uVGl0bGUgOiAnJztcbiAgICB0aGlzLnZpc2libGVTdGF0ZXMgPSBzdWJzZWN0aW9uUmVjZWl2ZWQudmlzaWJsZVN0YXRlcyB8fCBbXTtcbiAgICBpZiAoc3Vic2VjdGlvblJlY2VpdmVkLmVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlY2VpdmVkRWxlbWVudCBvZiBzdWJzZWN0aW9uUmVjZWl2ZWQuZWxlbWVudHMpIHtcbiAgICAgICAgbGV0IGVsZW1lbnRPYmplY3QgPSBudWxsO1xuICAgICAgICBsZXQgYXJyYXlUb0FkZCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgY29kZSB9ID0gcmVjZWl2ZWRFbGVtZW50O1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5FTEVNRU5UVFlQRV9GSUVMRDpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvbkZpZWxkcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX1RBQkxFOlxuICAgICAgICAgICAgZWxlbWVudE9iamVjdCA9IGZvcm1PYmplY3QuZ2V0VGFibGVPYmplY3QoY29kZSk7XG4gICAgICAgICAgICBhcnJheVRvQWRkID0gdGhpcy5zdWJTZWN0aW9uVGFibGVzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRUxFTUVOVFRZUEVfQUNUSU9OOlxuICAgICAgICAgICAgZWxlbWVudE9iamVjdCA9IGZvcm1PYmplY3QuZ2V0QWN0aW9uT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvbkFjdGlvbnM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudE9iamVjdCkge1xuICAgICAgICAgIGVsZW1lbnRPYmplY3QuZWxlbWVudFR5cGUgPSB0eXBlO1xuICAgICAgICAgIGFycmF5VG9BZGQucHVzaChlbGVtZW50T2JqZWN0KTtcbiAgICAgICAgICB0aGlzLnN1YlNlY3Rpb25FbGVtZW50cy5wdXNoKGVsZW1lbnRPYmplY3QpO1xuICAgICAgICAgIHRoaXMuZWxlbWVudHNBcnJheVtjb2RlXSA9IGVsZW1lbnRPYmplY3Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzaG93KCkgeyB0aGlzLnZpc2libGUgPSB0cnVlOyB9XG4gIGhpZGUoKSB7IHRoaXMudmlzaWJsZSA9IGZhbHNlOyB9XG5cbiAgZ2V0IGN1c3RvbVJlbmRlcigpIHsgcmV0dXJuIHRoaXMuX2N1c3RvbVJlbmRlcjsgfVxuICBzZXQgY3VzdG9tUmVuZGVyKGN1c3RvbVJlbmRlck5hbWUpIHsgdGhpcy5fY3VzdG9tUmVuZGVyID0gY3VzdG9tUmVuZGVyTmFtZTsgfVxuXG4gIGdldEZpZWxkKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJTZWN0aW9uRmllbGRzLmZpbmQoZmxkID0+IGZsZC5uYW1lID09PSBuYW1lKTtcbiAgfVxuXG4gIGdldEZpZWxkcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJTZWN0aW9uRmllbGRzO1xuICB9XG5cbiAgZ2V0RmllbGROYW1lcygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJTZWN0aW9uRmllbGRzLm1hcChmaWVsZCA9PiBmaWVsZC5maWVsZENvZGUpO1xuICB9XG5cbiAgdmlld09uU3RhdGUoc3RhdGUpIHtcbiAgICByZXR1cm4gdGhpcy52aXNpYmxlU3RhdGVzLmluY2x1ZGVzKHN0YXRlKTtcbiAgfVxuXG4gIHN1cHBvcnRNb2RlKHN0YXRlKSB7IHJldHVybiB0aGlzLnZpZXdPblN0YXRlKHN0YXRlKTsgfVxufVxuIl19
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc3Vic2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsTUFBTSxPQUFPLG9CQUFvQjtJQWMvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25HLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1FBQzVELElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQy9CLEtBQUssTUFBTSxlQUFlLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO2dCQUN6RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUM7Z0JBQ3ZDLFFBQVEsSUFBSSxFQUFFO29CQUNaLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07d0JBQ3RCLGFBQWEsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNqRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUNwQyxNQUFNO2lCQUNUO2dCQUNELElBQUksYUFBYSxFQUFFO29CQUNqQixhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUM7aUJBQzFDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9CLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFaEMsSUFBSSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUU3RSxRQUFRLENBQUMsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFJlY29yZEZvcm1TdWJTZWN0aW9uIHtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgX2N1c3RvbVJlbmRlcjogc3RyaW5nO1xuICBzdWJzZWN0aW9uSWQ6IHN0cmluZztcbiAgc3Vic2VjdGlvbkNvZGU6IHN0cmluZztcbiAgc3Vic2VjdGlvblRpdGxlOiBzdHJpbmc7XG4gIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdO1xuXG4gIHN1YlNlY3Rpb25FbGVtZW50czogYW55W107XG4gIHN1YlNlY3Rpb25GaWVsZHM6IGFueVtdO1xuICBzdWJTZWN0aW9uVGFibGVzOiBhbnlbXTtcbiAgc3ViU2VjdGlvbkFjdGlvbnM6IGFueVtdO1xuICBlbGVtZW50c0FycmF5OiBhbnk7XG5cbiAgY29uc3RydWN0b3Ioc3Vic2VjdGlvblJlY2VpdmVkLCBmb3JtT2JqZWN0KSB7XG4gICAgaWYgKCFzdWJzZWN0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fY3VzdG9tUmVuZGVyID0gbnVsbDtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuc3ViU2VjdGlvbkVsZW1lbnRzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uRmllbGRzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uVGFibGVzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uQWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuZWxlbWVudHNBcnJheSA9IHt9O1xuICAgIHRoaXMuc3Vic2VjdGlvbklkID0gKHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uSWQpID8gc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25JZC50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5zdWJzZWN0aW9uQ29kZSA9IChzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbkNvZGUpID8gc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25Db2RlIDogJyc7XG4gICAgdGhpcy5zdWJzZWN0aW9uVGl0bGUgPSAoc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25UaXRsZSkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvblRpdGxlIDogJyc7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gc3Vic2VjdGlvblJlY2VpdmVkLnZpc2libGVTdGF0ZXMgfHwgW107XG4gICAgaWYgKHN1YnNlY3Rpb25SZWNlaXZlZC5lbGVtZW50cykge1xuICAgICAgZm9yIChjb25zdCByZWNlaXZlZEVsZW1lbnQgb2Ygc3Vic2VjdGlvblJlY2VpdmVkLmVsZW1lbnRzKSB7XG4gICAgICAgIGxldCBlbGVtZW50T2JqZWN0ID0gbnVsbDtcbiAgICAgICAgbGV0IGFycmF5VG9BZGQgPSBudWxsO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGNvZGUgfSA9IHJlY2VpdmVkRWxlbWVudDtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBlbGVtZW50VHlwZXMuZmllbGQ6XG4gICAgICAgICAgICBlbGVtZW50T2JqZWN0ID0gZm9ybU9iamVjdC5nZXRGaWVsZE9iamVjdChjb2RlKTtcbiAgICAgICAgICAgIGFycmF5VG9BZGQgPSB0aGlzLnN1YlNlY3Rpb25GaWVsZHM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIGVsZW1lbnRUeXBlcy50YWJsZTpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldFRhYmxlT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvblRhYmxlcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgZWxlbWVudFR5cGVzLmFjdGlvbjpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldEFjdGlvbk9iamVjdChjb2RlKTtcbiAgICAgICAgICAgIGFycmF5VG9BZGQgPSB0aGlzLnN1YlNlY3Rpb25BY3Rpb25zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRPYmplY3QpIHtcbiAgICAgICAgICBlbGVtZW50T2JqZWN0LmVsZW1lbnRUeXBlID0gdHlwZTtcbiAgICAgICAgICBhcnJheVRvQWRkLnB1c2goZWxlbWVudE9iamVjdCk7XG4gICAgICAgICAgdGhpcy5zdWJTZWN0aW9uRWxlbWVudHMucHVzaChlbGVtZW50T2JqZWN0KTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzQXJyYXlbY29kZV0gPSBlbGVtZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvdygpIHsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxuICBoaWRlKCkgeyB0aGlzLnZpc2libGUgPSBmYWxzZTsgfVxuXG4gIGdldCBjdXN0b21SZW5kZXIoKSB7IHJldHVybiB0aGlzLl9jdXN0b21SZW5kZXI7IH1cbiAgc2V0IGN1c3RvbVJlbmRlcihjdXN0b21SZW5kZXJOYW1lKSB7IHRoaXMuX2N1c3RvbVJlbmRlciA9IGN1c3RvbVJlbmRlck5hbWU7IH1cblxuICBnZXRGaWVsZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcy5maW5kKGZsZCA9PiBmbGQubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcztcbiAgfVxuXG4gIGdldEZpZWxkTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQuZmllbGRDb2RlKTtcbiAgfVxuXG4gIHZpZXdPblN0YXRlKHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSk7XG4gIH1cblxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cbn1cbiJdfQ==
@@ -1,12 +1,12 @@
1
- import { componentConstants, tableFieldStyles } from '../form.constants';
2
1
  export class RecordTableColumn {
3
- constructor(recTableColReceived) {
2
+ constructor(recTableColReceived, formConfig) {
4
3
  var _a, _b, _c;
4
+ this._formConfig = formConfig;
5
5
  if (recTableColReceived) {
6
6
  this.fieldCode = recTableColReceived.fieldCode;
7
7
  this.fieldTitle = recTableColReceived.fieldTitle;
8
- this.fieldType = recTableColReceived.fieldTypeCode || componentConstants.FIELDTYPE_TEXT;
9
- const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
8
+ this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;
9
+ const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';
10
10
  this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;
11
11
  this.visible = (_a = recTableColReceived === null || recTableColReceived === void 0 ? void 0 : recTableColReceived.visible) !== null && _a !== void 0 ? _a : true;
12
12
  this.sortable = (_b = recTableColReceived === null || recTableColReceived === void 0 ? void 0 : recTableColReceived.sortable) !== null && _b !== void 0 ? _b : false;
@@ -15,4 +15,4 @@ export class RecordTableColumn {
15
15
  }
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS9jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekUsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUFZLG1CQUFtQjs7UUFDN0IsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7WUFDeEYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbEksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLFFBQVEsbUNBQUksS0FBSyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxtQkFBbUIsYUFBbkIsbUJBQW1CLHVCQUFuQixtQkFBbUIsQ0FBRSxnQkFBZ0IsbUNBQUksRUFBRSxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcG9uZW50Q29uc3RhbnRzLCB0YWJsZUZpZWxkU3R5bGVzIH0gZnJvbSAnLi4vZm9ybS5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkVGFibGVDb2x1bW4ge1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRUaXRsZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZmllbGRBbGlnbm1lbnQ6IHN0cmluZztcbiAgZmllbGRGb3JtYXQ6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgc29ydGFibGU6IGJvb2xlYW47XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihyZWNUYWJsZUNvbFJlY2VpdmVkKSB7XG4gICAgaWYgKHJlY1RhYmxlQ29sUmVjZWl2ZWQpIHtcbiAgICAgIHRoaXMuZmllbGRDb2RlID0gcmVjVGFibGVDb2xSZWNlaXZlZC5maWVsZENvZGU7XG4gICAgICB0aGlzLmZpZWxkVGl0bGUgPSByZWNUYWJsZUNvbFJlY2VpdmVkLmZpZWxkVGl0bGU7XG4gICAgICB0aGlzLmZpZWxkVHlwZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSB8fCBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX1RFWFQ7XG4gICAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXSAhPSBudWxsKSA/IHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiAnbGVmdCc7XG4gICAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKHJlY1RhYmxlQ29sUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gcmVjVGFibGVDb2xSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgICAgdGhpcy52aXNpYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8udmlzaWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0YWJsZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQ/LnNvcnRhYmxlID8/IGZhbHNlO1xuICAgICAgdGhpcy5maWVsZEZvcm1hdCA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZm9ybWF0IHx8ICcnO1xuICAgICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS9jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUFZLG1CQUFtQixFQUFFLFVBQVU7O1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNwSyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsbUJBQW1CLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQ25JLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxtQkFBbUIsYUFBbkIsbUJBQW1CLHVCQUFuQixtQkFBbUIsQ0FBRSxPQUFPLG1DQUFJLElBQUksQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsUUFBUSxtQ0FBSSxLQUFLLENBQUM7WUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLGdCQUFnQixtQ0FBSSxFQUFFLENBQUM7U0FDckU7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVjb3JkVGFibGVDb2x1bW4ge1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRUaXRsZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZmllbGRBbGlnbm1lbnQ6IHN0cmluZztcbiAgZmllbGRGb3JtYXQ6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgc29ydGFibGU6IGJvb2xlYW47XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihyZWNUYWJsZUNvbFJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgaWYgKHJlY1RhYmxlQ29sUmVjZWl2ZWQpIHtcbiAgICAgIHRoaXMuZmllbGRDb2RlID0gcmVjVGFibGVDb2xSZWNlaXZlZC5maWVsZENvZGU7XG4gICAgICB0aGlzLmZpZWxkVGl0bGUgPSByZWNUYWJsZUNvbFJlY2VpdmVkLmZpZWxkVGl0bGU7XG4gICAgICB0aGlzLmZpZWxkVHlwZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSB8fCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMudGV4dDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbCkgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiAnbGVmdCc7XG4gICAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKHJlY1RhYmxlQ29sUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gcmVjVGFibGVDb2xSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgICAgdGhpcy52aXNpYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8udmlzaWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0YWJsZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQ/LnNvcnRhYmxlID8/IGZhbHNlO1xuICAgICAgdGhpcy5maWVsZEZvcm1hdCA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZm9ybWF0IHx8ICcnO1xuICAgICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==