@mediusinc/mng-commons 5.2.0-rc.2 → 5.3.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/core/descriptors/model.descriptor.d.ts +3 -0
  2. package/core/helpers/route.d.ts +3 -4
  3. package/core/models/menu.model.d.ts +14 -2
  4. package/esm2022/core/data-list/data-list-params-helpers.mjs +7 -4
  5. package/esm2022/core/descriptors/model.descriptor.mjs +1 -1
  6. package/esm2022/core/helpers/route.mjs +1 -1
  7. package/esm2022/core/models/menu.model.mjs +1 -1
  8. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +5 -15
  9. package/esm2022/model/descriptors/model.descriptor.mjs +10 -5
  10. package/esm2022/table/api/descriptors/column.descriptor.mjs +1 -1
  11. package/esm2022/table/api/models/table.model.mjs +2 -3
  12. package/esm2022/table/components/table/table.component.mjs +9 -37
  13. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +18 -4
  14. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +12 -13
  15. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +2 -2
  16. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +16 -24
  17. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +4 -8
  18. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +5 -12
  19. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +13 -19
  20. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +7 -7
  21. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +7 -7
  22. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +8 -4
  23. package/esm2022/tableview/api/editor/models/field.model.mjs +4 -3
  24. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +1 -1
  25. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +3 -3
  26. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +3 -3
  27. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +2 -2
  28. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +12 -5
  29. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +6 -4
  30. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +8 -7
  31. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +4 -3
  32. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +13 -4
  33. package/esm2022/tableview/editor/components/formly/fields/formly-field-type.abstract.component.mjs +7 -1
  34. package/esm2022/tableview/editor/components/formly/pipes/formly-field-label.pipe.mjs +19 -0
  35. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +33 -17
  36. package/esm2022/tableview/editor/helpers/editor-field.mjs +39 -0
  37. package/esm2022/tableview/editor/helpers/editor-formly.mjs +21 -15
  38. package/esm2022/tableview/editor/helpers/formly-config.mjs +13 -17
  39. package/esm2022/tableview/index.mjs +2 -1
  40. package/fesm2022/mediusinc-mng-commons-core.mjs +6 -3
  41. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  42. package/fesm2022/mediusinc-mng-commons-form.mjs +4 -14
  43. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -1
  44. package/fesm2022/mediusinc-mng-commons-model.mjs +9 -4
  45. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  46. package/fesm2022/mediusinc-mng-commons-table-api.mjs +1 -2
  47. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -1
  48. package/fesm2022/mediusinc-mng-commons-table.mjs +8 -36
  49. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  50. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +72 -92
  51. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  52. package/fesm2022/mediusinc-mng-commons-tableview.mjs +171 -69
  53. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  54. package/form/components/autocomplete/autocomplete.component.d.ts +1 -2
  55. package/i18n/en.json +13 -0
  56. package/i18n/sl.json +13 -0
  57. package/model/descriptors/model.descriptor.d.ts +4 -2
  58. package/package.json +1 -1
  59. package/table/api/descriptors/column.descriptor.d.ts +2 -5
  60. package/table/api/models/table.model.d.ts +1 -2
  61. package/table/components/table/table.component.d.ts +3 -11
  62. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +2 -0
  63. package/tableview/api/action/descriptors/action.descriptor.d.ts +3 -4
  64. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +8 -8
  65. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +3 -4
  66. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +11 -13
  67. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +14 -17
  68. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +5 -5
  69. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +4 -4
  70. package/tableview/api/editor/descriptors/field.descriptor.d.ts +4 -3
  71. package/tableview/api/editor/models/field.model.d.ts +3 -2
  72. package/tableview/api/editor/models/formly-field.model.d.ts +2 -0
  73. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +8 -8
  74. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +5 -2
  75. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +5 -1
  76. package/tableview/editor/components/formly/fields/formly-field-type.abstract.component.d.ts +2 -1
  77. package/tableview/editor/components/formly/pipes/formly-field-label.pipe.d.ts +8 -0
  78. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +7 -3
  79. package/tableview/editor/helpers/editor-field.d.ts +2 -0
  80. package/tableview/editor/helpers/editor-formly.d.ts +4 -4
  81. package/tableview/index.d.ts +1 -0
  82. package/version-info.json +5 -5
@@ -9,10 +9,10 @@ export function createFormlyConfigFromDescriptor(descriptor, formlyConfig, formE
9
9
  }
10
10
  if (!descriptor.isLocalized && descriptor.tabs.length === 1 && descriptor.tabs[0].default) {
11
11
  // dont use tabs
12
- fields.push(...createFormlyGroupType(descriptor.tabs[0].fields, formlyConfig, formEditorComponent));
12
+ fields.push(...createFormlyGroupType(descriptor.tabs[0].fields, descriptor, formlyConfig, formEditorComponent));
13
13
  }
14
14
  else {
15
- fields.push(...createFormlyTabType(descriptor.tabs, formlyConfig, formEditorComponent));
15
+ fields.push(...createFormlyTabType(descriptor.tabs, descriptor, formlyConfig, formEditorComponent));
16
16
  }
17
17
  return fields;
18
18
  }
@@ -49,19 +49,22 @@ export function createFormlyLocalizationsTab(descriptor) {
49
49
  }
50
50
  return descriptor;
51
51
  }
52
- export function createFormlyTabType(tabGroups, formlyConfig, formEditorComponent) {
52
+ export function createFormlyTabType(tabGroups, editorDescriptor, formlyConfig, formEditorComponent) {
53
53
  const tabsField = {
54
54
  type: 'tabs',
55
55
  fieldGroup: [],
56
56
  props: {
57
- formEditorComponent
57
+ formEditorComponent,
58
+ editorDescriptor: editorDescriptor
58
59
  }
59
60
  };
60
61
  for (const tab of tabGroups) {
61
62
  const tabField = {
62
63
  id: tab.name,
63
64
  props: {
64
- formEditorComponent
65
+ formEditorComponent,
66
+ descriptor: tab,
67
+ editorDescriptor: editorDescriptor
65
68
  },
66
69
  expressions: {},
67
70
  fieldGroup: []
@@ -69,22 +72,23 @@ export function createFormlyTabType(tabGroups, formlyConfig, formEditorComponent
69
72
  if (tab.title) {
70
73
  tabField.props.label = tab.title;
71
74
  }
72
- tabField.fieldGroup.push(...createFormlyGroupType(tab.fields, formlyConfig, formEditorComponent));
75
+ tabField.fieldGroup.push(...createFormlyGroupType(tab.fields, editorDescriptor, formlyConfig, formEditorComponent));
73
76
  tabsField.fieldGroup.push(tabField);
74
77
  }
75
78
  return [tabsField];
76
79
  }
77
- export function createFormlyGroupType(groups, formlyConfig, formEditorComponent) {
80
+ export function createFormlyGroupType(groups, editorDescriptor, formlyConfig, formEditorComponent) {
78
81
  if (groups.length === 1 && groups[0].default) {
79
82
  // dont use fieldset, just create fields
80
- return createFormlyFields(groups[0], formlyConfig, formEditorComponent);
83
+ return createFormlyFields(groups[0], editorDescriptor, formlyConfig, formEditorComponent);
81
84
  }
82
85
  else {
83
86
  const groupsField = {
84
87
  type: 'fieldset',
85
88
  fieldGroup: [],
86
89
  props: {
87
- formEditorComponent
90
+ formEditorComponent,
91
+ editorDescriptor: editorDescriptor
88
92
  },
89
93
  expressions: {}
90
94
  };
@@ -92,7 +96,8 @@ export function createFormlyGroupType(groups, formlyConfig, formEditorComponent)
92
96
  const groupField = {
93
97
  id: group.name,
94
98
  props: {
95
- descriptor: group
99
+ descriptor: group,
100
+ editorDescriptor: editorDescriptor
96
101
  },
97
102
  expressions: {},
98
103
  fieldGroup: []
@@ -100,16 +105,16 @@ export function createFormlyGroupType(groups, formlyConfig, formEditorComponent)
100
105
  if (group.title) {
101
106
  groupField.props.label = group.title;
102
107
  }
103
- groupField.fieldGroup.push(...createFormlyFields(group, formlyConfig, formEditorComponent));
108
+ groupField.fieldGroup.push(...createFormlyFields(group, editorDescriptor, formlyConfig, formEditorComponent));
104
109
  groupsField.fieldGroup.push(groupField);
105
110
  }
106
111
  return [groupsField];
107
112
  }
108
113
  }
109
- export function createFormlyFields(descriptor, formlyConfig, formEditorComponent) {
114
+ export function createFormlyFields(descriptor, editorDescriptor, formlyConfig, formEditorComponent) {
110
115
  const fields = [];
111
116
  for (const descriptorField of descriptor.fields) {
112
- fields.push(createFormlyField(descriptorField, formlyConfig, formEditorComponent));
117
+ fields.push(createFormlyField(descriptorField, editorDescriptor, formlyConfig, formEditorComponent));
113
118
  }
114
119
  // wrap in group to be able to use flex grid
115
120
  const wrapperGroup = {
@@ -120,7 +125,7 @@ export function createFormlyFields(descriptor, formlyConfig, formEditorComponent
120
125
  addValidationsToFormlyField(wrapperGroup, descriptor.validations, formlyConfig);
121
126
  return [wrapperGroup];
122
127
  }
123
- export function createFormlyField(descriptor, formlyConfig, formEditorComponent) {
128
+ export function createFormlyField(descriptor, editorDescriptor, formlyConfig, formEditorComponent) {
124
129
  const field = {
125
130
  key: descriptor.property,
126
131
  modelOptions: {
@@ -136,6 +141,7 @@ export function createFormlyField(descriptor, formlyConfig, formEditorComponent)
136
141
  props: {
137
142
  descriptor,
138
143
  formEditorComponent,
144
+ editorDescriptor: editorDescriptor,
139
145
  onValueChange: descriptor.onValueChange
140
146
  },
141
147
  expressions: {}
@@ -373,4 +379,4 @@ export function createFormlyValidation(config, validation, formlyConfig) {
373
379
  }
374
380
  }
375
381
  }
376
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZvcm1seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xELE9BQU8sRUFLSCxxQkFBcUIsRUFHckIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsK0JBQStCLEVBRS9CLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTFKLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsVUFBcUMsRUFDckMsWUFBMEIsRUFDMUIsbUJBQStDO0lBRS9DLE1BQU0sTUFBTSxHQUErQixFQUFFLENBQUM7SUFFOUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsVUFBVSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RixnQkFBZ0I7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO2dCQUNuQixJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxFQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBQzthQUNyRCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0wsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Fic3RyYWN0Q29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7Rm9ybWx5Q29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7VmFsaWRhdGlvbk1lc3NhZ2VPcHRpb259IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscyc7XG5pbXBvcnQge0Zvcm1seUZpZWxkQ29uZmlnfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlL2xpYi9tb2RlbHMvZmllbGRjb25maWcnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBDb21tb25zU2VydmljZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9jb3JlJztcbmltcG9ydCB7dHlwZX0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5pbXBvcnQge1xuICAgIEFGaWVsZERlc2NyaXB0b3IsXG4gICAgQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLFxuICAgIENvbW1vbnNGb3JtbHlWYWxpZGF0aW9uLFxuICAgIEVkaXRvckRlc2NyaXB0b3JJbnN0LFxuICAgIEZpZWxkQWN0aW9uRGVzY3JpcHRvcixcbiAgICBGaWVsZEJhc2VWYWxpZGF0b3IsXG4gICAgRmllbGRHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dERlc2NyaXB0b3IsXG4gICAgRmllbGRJbnB1dFR5cGVFbnVtLFxuICAgIEZpZWxkTG9va3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwVHlwZUVudW0sXG4gICAgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcixcbiAgICBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IsXG4gICAgSUZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgVGFibGV2aWV3RGVzY3JpcHRvckluc3QsXG4gICAgVGFibGV2aWV3RWRpdG9yVHlwZUVudW1cbn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtlbWFpbFZhbGlkYXRpb25OYW1lLCBlbWFpbFZhbGlkYXRvciwgbWF4RGF0ZVZhbGlkYXRpb25OYW1lLCBtYXhEYXRlVmFsaWRhdG9yLCBtaW5EYXRlVmFsaWRhdGlvbk5hbWUsIG1pbkRhdGVWYWxpZGF0b3J9IGZyb20gJy4vZWRpdG9yLXZhbGlkYXRvcnMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5Q29uZmlnRnJvbURlc2NyaXB0b3I8SXRlbT4oXG4gICAgZGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIGNvbnN0IGZpZWxkczogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcblxuICAgIGlmIChkZXNjcmlwdG9yLmlzTG9jYWxpemVkKSB7XG4gICAgICAgIGRlc2NyaXB0b3IgPSBjcmVhdGVGb3JtbHlMb2NhbGl6YXRpb25zVGFiKGRlc2NyaXB0b3IpO1xuICAgIH1cblxuICAgIGlmICghZGVzY3JpcHRvci5pc0xvY2FsaXplZCAmJiBkZXNjcmlwdG9yLnRhYnMubGVuZ3RoID09PSAxICYmIGRlc2NyaXB0b3IudGFic1swXS5kZWZhdWx0KSB7XG4gICAgICAgIC8vIGRvbnQgdXNlIHRhYnNcbiAgICAgICAgZmllbGRzLnB1c2goLi4uY3JlYXRlRm9ybWx5R3JvdXBUeXBlKGRlc2NyaXB0b3IudGFic1swXS5maWVsZHMsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZpZWxkcy5wdXNoKC4uLmNyZWF0ZUZvcm1seVRhYlR5cGUoZGVzY3JpcHRvci50YWJzLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmllbGRzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5TG9jYWxpemF0aW9uc1RhYjxJdGVtPihkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtPikge1xuICAgIGlmIChkZXNjcmlwdG9yLmlzTG9jYWxpemVkICYmIGRlc2NyaXB0b3IudGFibGV2aWV3RWRpdG9yVHlwZSAhPT0gVGFibGV2aWV3RWRpdG9yVHlwZUVudW0uRGV0YWlscykge1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IubG9jYWxpemF0aW9uTW9kZWwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignTG9jYWxpemF0aW9uIG1vZGVsIG11c3QgYmUgZGVmaW5lZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvciA9IG5ldyBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdDxhbnksIG5ldmVyLCBuZXZlciwgSXRlbT4oZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Nb2RlbCk7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdMb2NhbGl6YXRpb24gbG9jYWxlIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZC4nKTtcbiAgICAgICAgfVxuICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRDb2x1bW4oZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSk7XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmVkaXRFZGl0b3IuYWRkRmllbGQoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSkud2l0aERpc2FibGVkKHRydWUpO1xuICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5kZXRhaWxzRWRpdG9yLmFkZEZpZWxkKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkpLndpdGhEaXNhYmxlZCh0cnVlKTtcbiAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuYWRkRWRpdG9yXG4gICAgICAgICAgICAuYWRkRmllbGRMb29rdXBXaXRoUHJvdmlkZXIoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSwgQ29tbW9uc1NlcnZpY2UsIHR5cGU8c3RyaW5nPigpKVxuICAgICAgICAgICAgLndpdGhMb29rdXAoKHFwLCBzZXJ2aWNlKSA9PiBzZXJ2aWNlLmFwcERhdGFMb2NhbGVzKCkpXG4gICAgICAgICAgICAud2l0aERpc2FibGVkKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhSZXF1aXJlZCgpO1xuICAgICAgICBkZXNjcmlwdG9yLmZpZWxkcy5mb3JFYWNoKGZpZWxkID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5pc0xvY2FsaXplZCkge1xuICAgICAgICAgICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmFkZENvbHVtbihmaWVsZC5wcm9wZXJ0eSk7XG4gICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuYWRkRmllbGQoZmllbGQucHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvcldpdGhMb2NhbGl6YXRpb25zID0gZGVzY3JpcHRvci5jb3B5KCk7XG4gICAgICAgIGRlc2NyaXB0b3JXaXRoTG9jYWxpemF0aW9ucy5jcmVhdGVUYWJHcm91cCgnbG9jYWxpemF0aW9ucycpO1xuICAgICAgICBpZiAoIWRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcignTG9jYWxpemF0aW9uIGxvY2FsaXphdGlvbiBwcm9wZXJ0eSBtdXN0IGJlIGRlZmluZWQnKTtcbiAgICAgICAgfVxuICAgICAgICBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnMuYWRkRmllbGRNYW55RWRpdG9yVW5zYWZlKGRlc2NyaXB0b3IubG9jYWxpemF0aW9uTG9jYWxpemF0aW9uUHJvcGVydHksIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcldpdGhMb2NhbGl6YXRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seVRhYlR5cGU8SXRlbT4oXG4gICAgdGFiR3JvdXBzOiBGaWVsZFRhYkdyb3VwRGVzY3JpcHRvcjxhbnk+W10sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBjb25zdCB0YWJzRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgdHlwZTogJ3RhYnMnLFxuICAgICAgICBmaWVsZEdyb3VwOiBbXSxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnRcbiAgICAgICAgfVxuICAgIH07XG4gICAgZm9yIChjb25zdCB0YWIgb2YgdGFiR3JvdXBzKSB7XG4gICAgICAgIGNvbnN0IHRhYkZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICBpZDogdGFiLm5hbWUsXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICBmaWVsZEdyb3VwOiBbXVxuICAgICAgICB9O1xuICAgICAgICBpZiAodGFiLnRpdGxlKSB7XG4gICAgICAgICAgICB0YWJGaWVsZC5wcm9wcy5sYWJlbCA9IHRhYi50aXRsZTtcbiAgICAgICAgfVxuICAgICAgICB0YWJGaWVsZC5maWVsZEdyb3VwIS5wdXNoKC4uLmNyZWF0ZUZvcm1seUdyb3VwVHlwZSh0YWIuZmllbGRzLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICAgICAgdGFic0ZpZWxkLmZpZWxkR3JvdXAhLnB1c2godGFiRmllbGQpO1xuICAgIH1cbiAgICByZXR1cm4gW3RhYnNGaWVsZF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlHcm91cFR5cGU8SXRlbT4oXG4gICAgZ3JvdXBzOiBGaWVsZEdyb3VwRGVzY3JpcHRvcjxhbnk+W10sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBpZiAoZ3JvdXBzLmxlbmd0aCA9PT0gMSAmJiBncm91cHNbMF0uZGVmYXVsdCkge1xuICAgICAgICAvLyBkb250IHVzZSBmaWVsZHNldCwganVzdCBjcmVhdGUgZmllbGRzXG4gICAgICAgIHJldHVybiBjcmVhdGVGb3JtbHlGaWVsZHMoZ3JvdXBzWzBdLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdyb3Vwc0ZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiAnZmllbGRzZXQnLFxuICAgICAgICAgICAgZmllbGRHcm91cDogW10sXG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uczoge31cbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGdyb3VwXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBncm91cEZpZWxkLnByb3BzLmxhYmVsID0gZ3JvdXAudGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cEZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICAgICAgICAgIGdyb3Vwc0ZpZWxkLmZpZWxkR3JvdXAhLnB1c2goZ3JvdXBGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtncm91cHNGaWVsZF07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5RmllbGRzPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPGFueT4sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdIHtcbiAgICBjb25zdCBmaWVsZHM6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBkZXNjcmlwdG9yRmllbGQgb2YgZGVzY3JpcHRvci5maWVsZHMpIHtcbiAgICAgICAgZmllbGRzLnB1c2goY3JlYXRlRm9ybWx5RmllbGQoZGVzY3JpcHRvckZpZWxkLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICB9XG4gICAgLy8gd3JhcCBpbiBncm91cCB0byBiZSBhYmxlIHRvIHVzZSBmbGV4IGdyaWRcbiAgICBjb25zdCB3cmFwcGVyR3JvdXA6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgZmllbGRHcm91cENsYXNzTmFtZTogJ3AtZmx1aWQgZm9ybWdyaWQgZ3JpZCcsXG4gICAgICAgIGZpZWxkR3JvdXA6IGZpZWxkcyxcbiAgICAgICAgcHJvcHM6IHt9XG4gICAgfTtcblxuICAgIGFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZCh3cmFwcGVyR3JvdXAsIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMsIGZvcm1seUNvbmZpZyk7XG5cbiAgICByZXR1cm4gW3dyYXBwZXJHcm91cF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlGaWVsZDxJdGVtPihcbiAgICBkZXNjcmlwdG9yOiBBRmllbGREZXNjcmlwdG9yPGFueSwgYW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnIHtcbiAgICBjb25zdCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnPGFueSwgSXRlbT4gPSB7XG4gICAgICAgIGtleTogZGVzY3JpcHRvci5wcm9wZXJ0eSxcbiAgICAgICAgbW9kZWxPcHRpb25zOiB7XG4gICAgICAgICAgICB1cGRhdGVPbjogZGVzY3JpcHRvci51cGRhdGVPblxuICAgICAgICB9LFxuICAgICAgICBob29rczoge1xuICAgICAgICAgICAgb25Jbml0OiAoKSA9PiAoZGVzY3JpcHRvci5vbkluaXQgPyBkZXNjcmlwdG9yLm9uSW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgb25DaGFuZ2VzOiAoKSA9PiAoZGVzY3JpcHRvci5vbkNoYW5nZXMgPyBkZXNjcmlwdG9yLm9uQ2hhbmdlcyhmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgYWZ0ZXJDb250ZW50SW5pdDogKCkgPT4gKGRlc2NyaXB0b3IuYWZ0ZXJDb250ZW50SW5pdCA/IGRlc2NyaXB0b3IuYWZ0ZXJDb250ZW50SW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgYWZ0ZXJWaWV3SW5pdDogKCkgPT4gKGRlc2NyaXB0b3IuYWZ0ZXJWaWV3SW5pdCA/IGRlc2NyaXB0b3IuYWZ0ZXJWaWV3SW5pdChmaWVsZCkgOiB1bmRlZmluZWQpLFxuICAgICAgICAgICAgb25EZXN0cm95OiAoKSA9PiAoZGVzY3JpcHRvci5vbkRlc3Ryb3kgPyBkZXNjcmlwdG9yLm9uRGVzdHJveShmaWVsZCkgOiB1bmRlZmluZWQpXG4gICAgICAgIH0sXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLFxuICAgICAgICAgICAgZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgIG9uVmFsdWVDaGFuZ2U6IGRlc2NyaXB0b3Iub25WYWx1ZUNoYW5nZVxuICAgICAgICB9LFxuICAgICAgICBleHByZXNzaW9uczoge31cbiAgICB9O1xuXG4gICAgbGV0IGNsYXNzTmFtZSA9IGRlc2NyaXB0b3IuY2xhc3NOYW1lO1xuICAgIGlmICghY2xhc3NOYW1lKSB7XG4gICAgICAgIC8vIGFzc2lnbiBkZWZhdWx0IGZpZWxkIHdpZHRoIHRocm91Z2ggZW50aXJlIHJvd1xuICAgICAgICBjbGFzc05hbWUgPSAnY29sLTEyJztcbiAgICB9XG4gICAgZmllbGQuY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuXG4gICAgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZmllbGRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5IaWRkZW46XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5MYWJlbDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2xhYmVsJztcbiAgICAgICAgICAgICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uVGV4dGFyZWE6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICd0ZXh0YXJlYSc7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWF4TGVuZ3RoID0gZGVzY3JpcHRvci5tYXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWluTGVuZ3RoID0gZGVzY3JpcHRvci5taW5MZW5ndGg7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMucGF0dGVybiA9IGRlc2NyaXB0b3IucGF0dGVybjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ251bWJlcic7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWluID0gZGVzY3JpcHRvci5udW1iZXJNaW47XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWF4ID0gZGVzY3JpcHRvci5udW1iZXJNYXg7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXJyZW5jeTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2N1cnJlbmN5JztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlN3aXRjaDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ3N3aXRjaCc7XG4gICAgICAgICAgICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5SYWRpbzpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ3JhZGlvJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkRhdGVwaWNrZXI6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkYXRlcGlja2VyJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLk1hc2s6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdtYXNrJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkZpbGU6XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5JbWFnZUZpbGU6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdmaWxlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlVXJsOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnaW1hZ2VVcmwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdjdXN0b20nO1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC5wcm9wc1snY3VzdG9tQ29tcG9uZW50VHlwZSddID0gZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRUeXBlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFdyYXBwZXJzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQud3JhcHBlcnMgPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFdyYXBwZXJzO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCB3cmFwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC53cmFwcGVycyA9IFsnZmllbGQnXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdpbnB1dCc7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWluTGVuZ3RoID0gZGVzY3JpcHRvci5taW5MZW5ndGg7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMubWF4TGVuZ3RoID0gZGVzY3JpcHRvci5tYXhMZW5ndGg7XG4gICAgICAgICAgICAgICAgZmllbGQucHJvcHMucGF0dGVybiA9IGRlc2NyaXB0b3IucGF0dGVybjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkQWN0aW9uRGVzY3JpcHRvcikge1xuICAgICAgICBmaWVsZC50eXBlID0gJ2FjdGlvbic7XG4gICAgICAgIGZpZWxkLndyYXBwZXJzID0gZGVzY3JpcHRvci53cmFwcGVycztcbiAgICAgICAgZGVsZXRlIGZpZWxkLmtleTtcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cEVudW1EZXNjcmlwdG9yKSB7XG4gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5sb29rdXBUeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZW51bSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZExvb2t1cERlc2NyaXB0b3IpIHtcbiAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5BdXRvY29tcGxldGU6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdhdXRvY29tcGxldGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkRpYWxvZzpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RpYWxvZyc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudE5hbWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uRHJvcGRvd246XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZHJvcGRvd24nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55VG9NYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICBmaWVsZC50eXBlID0gJ3RhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdCc7XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRNYW55RWRpdG9yRGVzY3JpcHRvcikge1xuICAgICAgICBmaWVsZC50eXBlID0gJ3RhYmxlLWRpYWxvZy1mb3JtJztcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5sYWJlbCkge1xuICAgICAgICBmaWVsZC5wcm9wcy5sYWJlbCA9IGRlc2NyaXB0b3IubGFiZWw7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0b3IucmVxdWlyZWRFeHByZXNzaW9uKSB7XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsncHJvcHMucmVxdWlyZWQnXSA9IGRlc2NyaXB0b3IucmVxdWlyZWRFeHByZXNzaW9uO1xuICAgIH1cbiAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZCkge1xuICAgICAgICBmaWVsZC5wcm9wcyEucmVxdWlyZWQgPSB0cnVlO1xuICAgICAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEhpZGVMYWJlbE1hcmtlcikge1xuICAgICAgICAgICAgZmllbGQucHJvcHMhWydoaWRlUmVxdWlyZWRNYXJrZXInXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5oaWRkZW5FeHByZXNzaW9uKSB7XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsnaGlkZSddID0gZGVzY3JpcHRvci5oaWRkZW5FeHByZXNzaW9uO1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ3Jlc2V0T25IaWRlJ10gPSAoKSA9PiBkZXNjcmlwdG9yLmhpZGRlblJlc2V0T25IaWRlID8/IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0b3IuZGlzYWJsZWRFeHByZXNzaW9uKSB7XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsncHJvcHMuZGlzYWJsZWQnXSA9IGRlc2NyaXB0b3IuZGlzYWJsZWRFeHByZXNzaW9uO1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZCkge1xuICAgICAgICBmaWVsZC5wcm9wcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydwcm9wcy5kaXNhYmxlZCddID0gJ2Zvcm1TdGF0ZS5kaXNhYmxlZCc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgZmllbGQuZGVmYXVsdFZhbHVlID0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZElucHV0RGVzY3JpcHRvcikge1xuICAgICAgICBpZiAoZGVzY3JpcHRvci52YWxpZGF0aW9uRW1haWwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMucHVzaChuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihlbWFpbFZhbGlkYXRpb25OYW1lLCBlbWFpbFZhbGlkYXRvcigpIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBhbnk+KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbikge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWxpZGF0aW9ucy5wdXNoKFxuICAgICAgICAgICAgICAgIG5ldyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yKG1pbkRhdGVWYWxpZGF0aW9uTmFtZSwgbWluRGF0ZVZhbGlkYXRvcihkZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW4pIGFzIEZpZWxkQmFzZVZhbGlkYXRvcjxzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBhbnk+KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobWF4RGF0ZVZhbGlkYXRpb25OYW1lLCBtYXhEYXRlVmFsaWRhdG9yKGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1heCkgYXMgRmllbGRCYXNlVmFsaWRhdG9yPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGFueT4pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGZpZWxkLCBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLCBmb3JtbHlDb25maWcpO1xuICAgIGFkZEFzeW5jVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGZpZWxkLCBkZXNjcmlwdG9yLmFzeW5jVmFsaWRhdGlvbnMsIGZvcm1seUNvbmZpZyk7XG5cbiAgICByZXR1cm4gZmllbGQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcsIHZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPGFueSwgYW55Pj4sIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcudmFsaWRhdG9ycykge1xuICAgICAgICBjb25maWcudmFsaWRhdG9ycyA9IHt9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiB2YWxpZGF0aW9ucykge1xuICAgICAgICBjcmVhdGVGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZy52YWxpZGF0b3JzLCB2YWxpZGF0aW9uLCBmb3JtbHlDb25maWcpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFzeW5jVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKGNvbmZpZzogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBhc3luY1ZhbGlkYXRpb25zOiBBcnJheTxGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPGFueSwgYW55Pj4sIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnKSB7XG4gICAgaWYgKCFjb25maWcuYXN5bmNWYWxpZGF0b3JzKSB7XG4gICAgICAgIGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMgPSB7fTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHZhbGlkYXRpb24gb2YgYXN5bmNWYWxpZGF0aW9ucykge1xuICAgICAgICBjcmVhdGVGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZy5hc3luY1ZhbGlkYXRvcnMsIHZhbGlkYXRpb24sIGZvcm1seUNvbmZpZyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5VmFsaWRhdGlvbihjb25maWc6IE5vbk51bGxhYmxlPENvbW1vbnNGb3JtbHlWYWxpZGF0aW9uPiwgdmFsaWRhdGlvbjogRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcjxhbnksIGFueT4sIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnKSB7XG4gICAgaWYgKHR5cGVvZiB2YWxpZGF0aW9uLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBpZiAodmFsaWRhdGlvbi5vcHRpb25zPy5lcnJvclBhdGggJiYgdmFsaWRhdGlvbi5tZXNzYWdlICE9IG51bGwpIHtcbiAgICAgICAgICAgIC8vIGlmIHRoaXMgaXMgdXNlZCwgdGhlIHZhbGlkYXRvciBhbmQgbWVzc2FnZSBtdXN0IGJlIHJlZ2lzdGVyZWQgZ2xvYmFsbHlcbiAgICAgICAgICAgIGlmICghZm9ybWx5Q29uZmlnLmdldFZhbGlkYXRvck1lc3NhZ2UodmFsaWRhdGlvbi5uYW1lKSkge1xuICAgICAgICAgICAgICAgIGZvcm1seUNvbmZpZy5hZGRWYWxpZGF0b3JNZXNzYWdlKHZhbGlkYXRpb24ubmFtZSwgdmFsaWRhdGlvbi5tZXNzYWdlIGFzIFZhbGlkYXRpb25NZXNzYWdlT3B0aW9uWydtZXNzYWdlJ10pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWZvcm1seUNvbmZpZy52YWxpZGF0b3JzW3ZhbGlkYXRpb24ubmFtZV0pIHtcbiAgICAgICAgICAgICAgICBmb3JtbHlDb25maWcuc2V0VmFsaWRhdG9yKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogdmFsaWRhdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiAoY29udHJvbCwgZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZyA9IGZpZWxkIGFzIENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uLnZhbGlkYXRvciEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm9ybUNvbnRyb2w6IGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybTogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLmZvcm0gYXMgRm9ybUdyb3VwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBmaWVsZCBhcyBDb21tb25zRm9ybWx5RmllbGRDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbXBvbmVudDogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLnByb3BzPy5mb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZpZWxkQ29tcG9uZW50XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogPFZhbGlkYXRvcnM+e1t2YWxpZGF0aW9uLm5hbWVdOiB0cnVlfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnZhbGlkYXRpb24pKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24gPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWU6IHZhbGlkYXRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7ZXJyb3JQYXRoOiB2YWxpZGF0aW9uLm9wdGlvbnMuZXJyb3JQYXRofVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25maWdbdmFsaWRhdGlvbi5uYW1lXSA9IHtcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uOiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sLCBmaWVsZDogRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnID0gZmllbGQgYXMgQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbi52YWxpZGF0b3IhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm9ybUNvbnRyb2w6IGNvbnRyb2wsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiBjb21tb25zRmllbGRGb3JtbHlDb25maWcuZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZEZvcm1seUNvbmZpZzogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbXBvbmVudDogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLnByb3BzPy5mb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5wcm9wcz8uZmllbGRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0aW9uLm1lc3NhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNvbmZpZ1t2YWxpZGF0aW9uLm5hbWVdLm1lc3NhZ2UgPSB2YWxpZGF0aW9uLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnZhbGlkYXRpb24pKSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWxpZGF0aW9uLm9wdGlvbnM/LmVycm9yUGF0aCkge1xuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24ucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdmFsaWRhdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtlcnJvclBhdGg6IHZhbGlkYXRpb24ub3B0aW9ucy5lcnJvclBhdGh9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uLnB1c2godmFsaWRhdGlvbi5uYW1lKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
382
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWZvcm1seS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZvcm1seS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDakYsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xELE9BQU8sRUFLSCxxQkFBcUIsRUFHckIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixxQkFBcUIsRUFDckIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsK0JBQStCLEVBRS9CLHlCQUF5QixFQUV6Qix1QkFBdUIsRUFDdkIsdUJBQXVCLEVBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFFOUMsT0FBTyxFQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRTFKLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FDNUMsVUFBcUMsRUFDckMsWUFBMEIsRUFDMUIsbUJBQStDO0lBRS9DLE1BQU0sTUFBTSxHQUErQixFQUFFLENBQUM7SUFFOUMsSUFBSSxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDekIsVUFBVSxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4RixnQkFBZ0I7UUFDaEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLHFCQUFxQixDQUFDLFVBQVUsQ0FB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUM7WUFDekQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO1NBQU0sQ0FBQztRQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFDRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDaEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtnQkFDckIsT0FBTyxFQUFFLEVBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFDO2FBQ3JELENBQUMsQ0FBQztRQUNQLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDTCxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtGb3JtbHlDb25maWd9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uTWVzc2FnZU9wdGlvbn0gZnJvbSAnQG5neC1mb3JtbHkvY29yZS9saWIvbW9kZWxzJztcbmltcG9ydCB7Rm9ybWx5RmllbGRDb25maWd9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscy9maWVsZGNvbmZpZyc7XG5cbmltcG9ydCB7Q29tbW9uc0ludGVybmFsRXJyb3IsIENvbW1vbnNTZXJ2aWNlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHt0eXBlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcbmltcG9ydCB7XG4gICAgQUZpZWxkRGVzY3JpcHRvcixcbiAgICBDb21tb25zRm9ybWx5RmllbGRDb25maWcsXG4gICAgQ29tbW9uc0Zvcm1seVZhbGlkYXRpb24sXG4gICAgRWRpdG9yRGVzY3JpcHRvckluc3QsXG4gICAgRmllbGRBY3Rpb25EZXNjcmlwdG9yLFxuICAgIEZpZWxkQmFzZVZhbGlkYXRvcixcbiAgICBGaWVsZEdyb3VwRGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0RGVzY3JpcHRvcixcbiAgICBGaWVsZElucHV0VHlwZUVudW0sXG4gICAgRmllbGRMb29rdXBEZXNjcmlwdG9yLFxuICAgIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IsXG4gICAgRmllbGRMb29rdXBUeXBlRW51bSxcbiAgICBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yLFxuICAgIEZpZWxkTWFueVRvTWFueUVkaXRvckRlc2NyaXB0b3IsXG4gICAgRmllbGRUYWJHcm91cERlc2NyaXB0b3IsXG4gICAgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcixcbiAgICBJRm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICBUYWJsZXZpZXdEZXNjcmlwdG9ySW5zdCxcbiAgICBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL3RhYmxldmlldy9hcGknO1xuXG5pbXBvcnQge2VtYWlsVmFsaWRhdGlvbk5hbWUsIGVtYWlsVmFsaWRhdG9yLCBtYXhEYXRlVmFsaWRhdGlvbk5hbWUsIG1heERhdGVWYWxpZGF0b3IsIG1pbkRhdGVWYWxpZGF0aW9uTmFtZSwgbWluRGF0ZVZhbGlkYXRvcn0gZnJvbSAnLi9lZGl0b3ItdmFsaWRhdG9ycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlDb25maWdGcm9tRGVzY3JpcHRvcjxJdGVtPihcbiAgICBkZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgY29uc3QgZmllbGRzOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSA9IFtdO1xuXG4gICAgaWYgKGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQpIHtcbiAgICAgICAgZGVzY3JpcHRvciA9IGNyZWF0ZUZvcm1seUxvY2FsaXphdGlvbnNUYWIoZGVzY3JpcHRvcik7XG4gICAgfVxuXG4gICAgaWYgKCFkZXNjcmlwdG9yLmlzTG9jYWxpemVkICYmIGRlc2NyaXB0b3IudGFicy5sZW5ndGggPT09IDEgJiYgZGVzY3JpcHRvci50YWJzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgLy8gZG9udCB1c2UgdGFic1xuICAgICAgICBmaWVsZHMucHVzaCguLi5jcmVhdGVGb3JtbHlHcm91cFR5cGUoZGVzY3JpcHRvci50YWJzWzBdLmZpZWxkcywgZGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGRzLnB1c2goLi4uY3JlYXRlRm9ybWx5VGFiVHlwZShkZXNjcmlwdG9yLnRhYnMsIGRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlMb2NhbGl6YXRpb25zVGFiPEl0ZW0+KGRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0+KSB7XG4gICAgaWYgKGRlc2NyaXB0b3IuaXNMb2NhbGl6ZWQgJiYgZGVzY3JpcHRvci50YWJsZXZpZXdFZGl0b3JUeXBlICE9PSBUYWJsZXZpZXdFZGl0b3JUeXBlRW51bS5EZXRhaWxzKSB7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Nb2RlbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdMb2NhbGl6YXRpb24gbW9kZWwgbXVzdCBiZSBkZWZpbmVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yID0gbmV3IFRhYmxldmlld0Rlc2NyaXB0b3JJbnN0PGFueSwgbmV2ZXIsIG5ldmVyLCBJdGVtPihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbk1vZGVsKTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoJ0xvY2FsaXphdGlvbiBsb2NhbGUgcHJvcGVydHkgbXVzdCBiZSBkZWZpbmVkLicpO1xuICAgICAgICB9XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmFkZENvbHVtbihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KTtcbiAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuZWRpdEVkaXRvci5hZGRGaWVsZChkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KS53aXRoRGlzYWJsZWQodHJ1ZSk7XG4gICAgICAgIGxvY2FsaXphdGlvbnNUYWJsZVZpZXdEZXNjcmlwdG9yLmRldGFpbHNFZGl0b3IuYWRkRmllbGQoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eSkud2l0aERpc2FibGVkKHRydWUpO1xuICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRFZGl0b3JcbiAgICAgICAgICAgIC5hZGRGaWVsZExvb2t1cFdpdGhQcm92aWRlcihkZXNjcmlwdG9yLmxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5LCBDb21tb25zU2VydmljZSwgdHlwZTxzdHJpbmc+KCkpXG4gICAgICAgICAgICAud2l0aExvb2t1cCgocXAsIHNlcnZpY2UpID0+IHNlcnZpY2UuYXBwRGF0YUxvY2FsZXMoKSlcbiAgICAgICAgICAgIC53aXRoRGlzYWJsZWQoZmFsc2UpXG4gICAgICAgICAgICAud2l0aFJlcXVpcmVkKCk7XG4gICAgICAgIGRlc2NyaXB0b3IuZmllbGRzLmZvckVhY2goZmllbGQgPT4ge1xuICAgICAgICAgICAgaWYgKGZpZWxkLmlzTG9jYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IuYWRkQ29sdW1uKGZpZWxkLnByb3BlcnR5KTtcbiAgICAgICAgICAgICAgICBsb2NhbGl6YXRpb25zVGFibGVWaWV3RGVzY3JpcHRvci5hZGRGaWVsZChmaWVsZC5wcm9wZXJ0eSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnMgPSBkZXNjcmlwdG9yLmNvcHkoKTtcbiAgICAgICAgZGVzY3JpcHRvcldpdGhMb2NhbGl6YXRpb25zLmNyZWF0ZVRhYkdyb3VwKCdsb2NhbGl6YXRpb25zJyk7XG4gICAgICAgIGlmICghZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKCdMb2NhbGl6YXRpb24gbG9jYWxpemF0aW9uIHByb3BlcnR5IG11c3QgYmUgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIGRlc2NyaXB0b3JXaXRoTG9jYWxpemF0aW9ucy5hZGRGaWVsZE1hbnlFZGl0b3JVbnNhZmUoZGVzY3JpcHRvci5sb2NhbGl6YXRpb25Mb2NhbGl6YXRpb25Qcm9wZXJ0eSwgbG9jYWxpemF0aW9uc1RhYmxlVmlld0Rlc2NyaXB0b3IpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yV2l0aExvY2FsaXphdGlvbnM7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5VGFiVHlwZTxJdGVtPihcbiAgICB0YWJHcm91cHM6IEZpZWxkVGFiR3JvdXBEZXNjcmlwdG9yPGFueT5bXSxcbiAgICBlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgY29uc3QgdGFic0ZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgICAgIHR5cGU6ICd0YWJzJyxcbiAgICAgICAgZmllbGRHcm91cDogW10sXG4gICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICBmb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgZWRpdG9yRGVzY3JpcHRvcjogZWRpdG9yRGVzY3JpcHRvclxuICAgICAgICB9XG4gICAgfTtcbiAgICBmb3IgKGNvbnN0IHRhYiBvZiB0YWJHcm91cHMpIHtcbiAgICAgICAgY29uc3QgdGFiRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyA9IHtcbiAgICAgICAgICAgIGlkOiB0YWIubmFtZSxcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgZm9ybUVkaXRvckNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yOiB0YWIsXG4gICAgICAgICAgICAgICAgZWRpdG9yRGVzY3JpcHRvcjogZWRpdG9yRGVzY3JpcHRvclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4cHJlc3Npb25zOiB7fSxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0YWIudGl0bGUpIHtcbiAgICAgICAgICAgIHRhYkZpZWxkLnByb3BzLmxhYmVsID0gdGFiLnRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIHRhYkZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uY3JlYXRlRm9ybWx5R3JvdXBUeXBlKHRhYi5maWVsZHMsIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgICAgICB0YWJzRmllbGQuZmllbGRHcm91cCEucHVzaCh0YWJGaWVsZCk7XG4gICAgfVxuICAgIHJldHVybiBbdGFic0ZpZWxkXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUdyb3VwVHlwZTxJdGVtPihcbiAgICBncm91cHM6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPGFueT5bXSxcbiAgICBlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxhbnk+LFxuICAgIGZvcm1seUNvbmZpZzogRm9ybWx5Q29uZmlnLFxuICAgIGZvcm1FZGl0b3JDb21wb25lbnQ6IElGb3JtRWRpdG9yQ29tcG9uZW50PEl0ZW0+XG4pOiBDb21tb25zRm9ybWx5RmllbGRDb25maWdbXSB7XG4gICAgaWYgKGdyb3Vwcy5sZW5ndGggPT09IDEgJiYgZ3JvdXBzWzBdLmRlZmF1bHQpIHtcbiAgICAgICAgLy8gZG9udCB1c2UgZmllbGRzZXQsIGp1c3QgY3JlYXRlIGZpZWxkc1xuICAgICAgICByZXR1cm4gY3JlYXRlRm9ybWx5RmllbGRzKGdyb3Vwc1swXSwgZWRpdG9yRGVzY3JpcHRvciwgZm9ybWx5Q29uZmlnLCBmb3JtRWRpdG9yQ29tcG9uZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBncm91cHNGaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICAgICAgdHlwZTogJ2ZpZWxkc2V0JyxcbiAgICAgICAgICAgIGZpZWxkR3JvdXA6IFtdLFxuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICBmb3JtRWRpdG9yQ29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGVkaXRvckRlc2NyaXB0b3I6IGVkaXRvckRlc2NyaXB0b3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBleHByZXNzaW9uczoge31cbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyb3VwRmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICAgICAgICAgIGlkOiBncm91cC5uYW1lLFxuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGdyb3VwLFxuICAgICAgICAgICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBleHByZXNzaW9uczoge30sXG4gICAgICAgICAgICAgICAgZmllbGRHcm91cDogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAudGl0bGUpIHtcbiAgICAgICAgICAgICAgICBncm91cEZpZWxkLnByb3BzLmxhYmVsID0gZ3JvdXAudGl0bGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cEZpZWxkLmZpZWxkR3JvdXAhLnB1c2goLi4uY3JlYXRlRm9ybWx5RmllbGRzKGdyb3VwLCBlZGl0b3JEZXNjcmlwdG9yLCBmb3JtbHlDb25maWcsIGZvcm1FZGl0b3JDb21wb25lbnQpKTtcbiAgICAgICAgICAgIGdyb3Vwc0ZpZWxkLmZpZWxkR3JvdXAhLnB1c2goZ3JvdXBGaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtncm91cHNGaWVsZF07XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9ybWx5RmllbGRzPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEZpZWxkR3JvdXBEZXNjcmlwdG9yPGFueT4sXG4gICAgZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8YW55PixcbiAgICBmb3JtbHlDb25maWc6IEZvcm1seUNvbmZpZyxcbiAgICBmb3JtRWRpdG9yQ29tcG9uZW50OiBJRm9ybUVkaXRvckNvbXBvbmVudDxJdGVtPlxuKTogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10ge1xuICAgIGNvbnN0IGZpZWxkczogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGRlc2NyaXB0b3JGaWVsZCBvZiBkZXNjcmlwdG9yLmZpZWxkcykge1xuICAgICAgICBmaWVsZHMucHVzaChjcmVhdGVGb3JtbHlGaWVsZChkZXNjcmlwdG9yRmllbGQsIGVkaXRvckRlc2NyaXB0b3IsIGZvcm1seUNvbmZpZywgZm9ybUVkaXRvckNvbXBvbmVudCkpO1xuICAgIH1cbiAgICAvLyB3cmFwIGluIGdyb3VwIHRvIGJlIGFibGUgdG8gdXNlIGZsZXggZ3JpZFxuICAgIGNvbnN0IHdyYXBwZXJHcm91cDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnID0ge1xuICAgICAgICBmaWVsZEdyb3VwQ2xhc3NOYW1lOiAncC1mbHVpZCBmb3JtZ3JpZCBncmlkJyxcbiAgICAgICAgZmllbGRHcm91cDogZmllbGRzLFxuICAgICAgICBwcm9wczoge31cbiAgICB9O1xuXG4gICAgYWRkVmFsaWRhdGlvbnNUb0Zvcm1seUZpZWxkKHdyYXBwZXJHcm91cCwgZGVzY3JpcHRvci52YWxpZGF0aW9ucywgZm9ybWx5Q29uZmlnKTtcblxuICAgIHJldHVybiBbd3JhcHBlckdyb3VwXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZvcm1seUZpZWxkPEl0ZW0+KFxuICAgIGRlc2NyaXB0b3I6IEFGaWVsZERlc2NyaXB0b3I8YW55LCBhbnk+LFxuICAgIGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PGFueT4sXG4gICAgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcsXG4gICAgZm9ybUVkaXRvckNvbXBvbmVudDogSUZvcm1FZGl0b3JDb21wb25lbnQ8SXRlbT5cbik6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyB7XG4gICAgY29uc3QgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZzxhbnksIEl0ZW0+ID0ge1xuICAgICAgICBrZXk6IGRlc2NyaXB0b3IucHJvcGVydHksXG4gICAgICAgIG1vZGVsT3B0aW9uczoge1xuICAgICAgICAgICAgdXBkYXRlT246IGRlc2NyaXB0b3IudXBkYXRlT25cbiAgICAgICAgfSxcbiAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgIG9uSW5pdDogKCkgPT4gKGRlc2NyaXB0b3Iub25Jbml0ID8gZGVzY3JpcHRvci5vbkluaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9uQ2hhbmdlczogKCkgPT4gKGRlc2NyaXB0b3Iub25DaGFuZ2VzID8gZGVzY3JpcHRvci5vbkNoYW5nZXMoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGFmdGVyQ29udGVudEluaXQ6ICgpID0+IChkZXNjcmlwdG9yLmFmdGVyQ29udGVudEluaXQgPyBkZXNjcmlwdG9yLmFmdGVyQ29udGVudEluaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIGFmdGVyVmlld0luaXQ6ICgpID0+IChkZXNjcmlwdG9yLmFmdGVyVmlld0luaXQgPyBkZXNjcmlwdG9yLmFmdGVyVmlld0luaXQoZmllbGQpIDogdW5kZWZpbmVkKSxcbiAgICAgICAgICAgIG9uRGVzdHJveTogKCkgPT4gKGRlc2NyaXB0b3Iub25EZXN0cm95ID8gZGVzY3JpcHRvci5vbkRlc3Ryb3koZmllbGQpIDogdW5kZWZpbmVkKVxuICAgICAgICB9LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgZGVzY3JpcHRvcixcbiAgICAgICAgICAgIGZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICBlZGl0b3JEZXNjcmlwdG9yOiBlZGl0b3JEZXNjcmlwdG9yLFxuICAgICAgICAgICAgb25WYWx1ZUNoYW5nZTogZGVzY3JpcHRvci5vblZhbHVlQ2hhbmdlXG4gICAgICAgIH0sXG4gICAgICAgIGV4cHJlc3Npb25zOiB7fVxuICAgIH07XG5cbiAgICBsZXQgY2xhc3NOYW1lID0gZGVzY3JpcHRvci5jbGFzc05hbWU7XG4gICAgaWYgKCFjbGFzc05hbWUpIHtcbiAgICAgICAgLy8gYXNzaWduIGRlZmF1bHQgZmllbGQgd2lkdGggdGhyb3VnaCBlbnRpcmUgcm93XG4gICAgICAgIGNsYXNzTmFtZSA9ICdjb2wtMTInO1xuICAgIH1cbiAgICBmaWVsZC5jbGFzc05hbWUgPSBjbGFzc05hbWU7XG5cbiAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkSW5wdXREZXNjcmlwdG9yKSB7XG4gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5maWVsZFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkhpZGRlbjpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkxhYmVsOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbGFiZWwnO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBmaWVsZC5rZXk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5UZXh0YXJlYTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ3RleHRhcmVhJztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5wYXR0ZXJuID0gZGVzY3JpcHRvci5wYXR0ZXJuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTnVtYmVyOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnbnVtYmVyJztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW4gPSBkZXNjcmlwdG9yLm51bWJlck1pbjtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXggPSBkZXNjcmlwdG9yLm51bWJlck1heDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkN1cnJlbmN5OlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnY3VycmVuY3knO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1pbiA9IGRlc2NyaXB0b3IubnVtYmVyTWluO1xuICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzLm1heCA9IGRlc2NyaXB0b3IubnVtYmVyTWF4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uU3dpdGNoOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnc3dpdGNoJztcbiAgICAgICAgICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLlJhZGlvOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAncmFkaW8nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uRGF0ZXBpY2tlcjpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2RhdGVwaWNrZXInO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uTWFzazpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ21hc2snO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uRmlsZTpcbiAgICAgICAgICAgIGNhc2UgRmllbGRJbnB1dFR5cGVFbnVtLkltYWdlRmlsZTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBGaWVsZElucHV0VHlwZUVudW0uSW1hZ2VVcmw6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdpbWFnZVVybCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkSW5wdXRUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50VHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2N1c3RvbSc7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnByb3BzWydjdXN0b21Db21wb25lbnRUeXBlJ10gPSBkZXNjcmlwdG9yLmN1c3RvbUNvbXBvbmVudFR5cGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50V3JhcHBlcnMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC53cmFwcGVycyA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50V3JhcHBlcnM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHdyYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLndyYXBwZXJzID0gWydmaWVsZCddO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2lucHV0JztcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5taW5MZW5ndGggPSBkZXNjcmlwdG9yLm1pbkxlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5tYXhMZW5ndGggPSBkZXNjcmlwdG9yLm1heExlbmd0aDtcbiAgICAgICAgICAgICAgICBmaWVsZC5wcm9wcy5wYXR0ZXJuID0gZGVzY3JpcHRvci5wYXR0ZXJuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yIGluc3RhbmNlb2YgRmllbGRBY3Rpb25EZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAnYWN0aW9uJztcbiAgICAgICAgZmllbGQud3JhcHBlcnMgPSBkZXNjcmlwdG9yLndyYXBwZXJzO1xuICAgICAgICBkZWxldGUgZmllbGQua2V5O1xuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRW51bURlc2NyaXB0b3IpIHtcbiAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLmxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdlbnVtJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkTG9va3VwRGVzY3JpcHRvcikge1xuICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3IubG9va3VwVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGaWVsZExvb2t1cFR5cGVFbnVtLkF1dG9jb21wbGV0ZTpcbiAgICAgICAgICAgICAgICBmaWVsZC50eXBlID0gJ2F1dG9jb21wbGV0ZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEZpZWxkTG9va3VwVHlwZUVudW0uRGlhbG9nOlxuICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUgPSAnZGlhbG9nJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5DdXN0b206XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9IGRlc2NyaXB0b3IuY3VzdG9tQ29tcG9uZW50TmFtZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRmllbGRMb29rdXBUeXBlRW51bS5Ecm9wZG93bjpcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZmllbGQudHlwZSA9ICdkcm9wZG93bic7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlUb01hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLW11bHRpc2VsZWN0JztcbiAgICB9IGVsc2UgaWYgKGRlc2NyaXB0b3IgaW5zdGFuY2VvZiBGaWVsZE1hbnlFZGl0b3JEZXNjcmlwdG9yKSB7XG4gICAgICAgIGZpZWxkLnR5cGUgPSAndGFibGUtZGlhbG9nLWZvcm0nO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLmxhYmVsKSB7XG4gICAgICAgIGZpZWxkLnByb3BzLmxhYmVsID0gZGVzY3JpcHRvci5sYWJlbDtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydwcm9wcy5yZXF1aXJlZCddID0gZGVzY3JpcHRvci5yZXF1aXJlZEV4cHJlc3Npb247XG4gICAgfVxuICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkKSB7XG4gICAgICAgIGZpZWxkLnByb3BzIS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnJlcXVpcmVkSGlkZUxhYmVsTWFya2VyKSB7XG4gICAgICAgICAgICBmaWVsZC5wcm9wcyFbJ2hpZGVSZXF1aXJlZE1hcmtlciddID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydoaWRlJ10gPSBkZXNjcmlwdG9yLmhpZGRlbkV4cHJlc3Npb247XG4gICAgICAgIGZpZWxkLmV4cHJlc3Npb25zIVsncmVzZXRPbkhpZGUnXSA9ICgpID0+IGRlc2NyaXB0b3IuaGlkZGVuUmVzZXRPbkhpZGUgPz8gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb24pIHtcbiAgICAgICAgZmllbGQuZXhwcmVzc2lvbnMhWydwcm9wcy5kaXNhYmxlZCddID0gZGVzY3JpcHRvci5kaXNhYmxlZEV4cHJlc3Npb247XG4gICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmRpc2FibGVkKSB7XG4gICAgICAgIGZpZWxkLnByb3BzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmaWVsZC5leHByZXNzaW9ucyFbJ3Byb3BzLmRpc2FibGVkJ10gPSAnZm9ybVN0YXRlLmRpc2FibGVkJztcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBmaWVsZC5kZWZhdWx0VmFsdWUgPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGVzY3JpcHRvciBpbnN0YW5jZW9mIEZpZWxkSW5wdXREZXNjcmlwdG9yKSB7XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLnZhbGlkYXRpb25FbWFpbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci52YWxpZGF0aW9ucy5wdXNoKG5ldyBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yKGVtYWlsVmFsaWRhdGlvbk5hbWUsIGVtYWlsVmFsaWRhdG9yKCkgYXMgRmllbGRCYXNlVmFsaWRhdG9yPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGFueT4pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVzY3JpcHRvci5kYXRlUGlja2VyTWluKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLnZhbGlkYXRpb25zLnB1c2goXG4gICAgICAgICAgICAgICAgbmV3IEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3IobWluRGF0ZVZhbGlkYXRpb25OYW1lLCBtaW5EYXRlVmFsaWRhdG9yKGRlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbikgYXMgRmllbGRCYXNlVmFsaWRhdG9yPHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGFueT4pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXgpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMucHVzaChcbiAgICAgICAgICAgICAgICBuZXcgRmllbGRWYWxpZGF0aW9uRGVzY3JpcHRvcihtYXhEYXRlVmFsaWRhdGlvbk5hbWUsIG1heERhdGVWYWxpZGF0b3IoZGVzY3JpcHRvci5kYXRlUGlja2VyTWF4KSBhcyBGaWVsZEJhc2VWYWxpZGF0b3I8c3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgYW55PilcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IudmFsaWRhdGlvbnMsIGZvcm1seUNvbmZpZyk7XG4gICAgYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoZmllbGQsIGRlc2NyaXB0b3IuYXN5bmNWYWxpZGF0aW9ucywgZm9ybWx5Q29uZmlnKTtcblxuICAgIHJldHVybiBmaWVsZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFZhbGlkYXRpb25zVG9Gb3JtbHlGaWVsZChjb25maWc6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZywgdmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnk+PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZy52YWxpZGF0b3JzKSB7XG4gICAgICAgIGNvbmZpZy52YWxpZGF0b3JzID0ge307XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHZhbGlkYXRpb25zKSB7XG4gICAgICAgIGNyZWF0ZUZvcm1seVZhbGlkYXRpb24oY29uZmlnLnZhbGlkYXRvcnMsIHZhbGlkYXRpb24sIGZvcm1seUNvbmZpZyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYWRkQXN5bmNWYWxpZGF0aW9uc1RvRm9ybWx5RmllbGQoY29uZmlnOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcsIGFzeW5jVmFsaWRhdGlvbnM6IEFycmF5PEZpZWxkVmFsaWRhdGlvbkRlc2NyaXB0b3I8YW55LCBhbnk+PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZy5hc3luY1ZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uZmlnLmFzeW5jVmFsaWRhdG9ycyA9IHt9O1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbiBvZiBhc3luY1ZhbGlkYXRpb25zKSB7XG4gICAgICAgIGNyZWF0ZUZvcm1seVZhbGlkYXRpb24oY29uZmlnLmFzeW5jVmFsaWRhdG9ycywgdmFsaWRhdGlvbiwgZm9ybWx5Q29uZmlnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb3JtbHlWYWxpZGF0aW9uKGNvbmZpZzogTm9uTnVsbGFibGU8Q29tbW9uc0Zvcm1seVZhbGlkYXRpb24+LCB2YWxpZGF0aW9uOiBGaWVsZFZhbGlkYXRpb25EZXNjcmlwdG9yPGFueSwgYW55PiwgZm9ybWx5Q29uZmlnOiBGb3JtbHlDb25maWcpIHtcbiAgICBpZiAodHlwZW9mIHZhbGlkYXRpb24udmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9uLm9wdGlvbnM/LmVycm9yUGF0aCAmJiB2YWxpZGF0aW9uLm1lc3NhZ2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyB1c2VkLCB0aGUgdmFsaWRhdG9yIGFuZCBtZXNzYWdlIG11c3QgYmUgcmVnaXN0ZXJlZCBnbG9iYWxseVxuICAgICAgICAgICAgaWYgKCFmb3JtbHlDb25maWcuZ2V0VmFsaWRhdG9yTWVzc2FnZSh2YWxpZGF0aW9uLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgZm9ybWx5Q29uZmlnLmFkZFZhbGlkYXRvck1lc3NhZ2UodmFsaWRhdGlvbi5uYW1lLCB2YWxpZGF0aW9uLm1lc3NhZ2UgYXMgVmFsaWRhdGlvbk1lc3NhZ2VPcHRpb25bJ21lc3NhZ2UnXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghZm9ybWx5Q29uZmlnLnZhbGlkYXRvcnNbdmFsaWRhdGlvbi5uYW1lXSkge1xuICAgICAgICAgICAgICAgIGZvcm1seUNvbmZpZy5zZXRWYWxpZGF0b3Ioe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YWxpZGF0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IChjb250cm9sLCBmaWVsZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnID0gZmllbGQgYXMgQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24udmFsaWRhdG9yISh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtQ29udHJvbDogY29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtOiBjb21tb25zRmllbGRGb3JtbHlDb25maWcuZm9ybSBhcyBGb3JtR3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtbHlDb25maWc6IGZpZWxkIGFzIENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRDb21wb25lbnQ6IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5wcm9wcz8uZmllbGRDb21wb25lbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA8VmFsaWRhdG9ycz57W3ZhbGlkYXRpb24ubmFtZV06IHRydWV9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbiA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24ucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogdmFsaWRhdGlvbi5uYW1lLFxuICAgICAgICAgICAgICAgIG9wdGlvbnM6IHtlcnJvclBhdGg6IHZhbGlkYXRpb24ub3B0aW9ucy5lcnJvclBhdGh9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbmZpZ1t2YWxpZGF0aW9uLm5hbWVdID0ge1xuICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wsIGZpZWxkOiBGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21tb25zRmllbGRGb3JtbHlDb25maWcgPSBmaWVsZCBhcyBDb21tb25zRm9ybWx5RmllbGRDb25maWc7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uLnZhbGlkYXRvciEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRGb3JtQ29udHJvbDogY29udHJvbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm06IGNvbW1vbnNGaWVsZEZvcm1seUNvbmZpZy5mb3JtIGFzIEZvcm1Hcm91cCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkRm9ybWx5Q29uZmlnOiBjb21tb25zRmllbGRGb3JtbHlDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29tcG9uZW50OiBjb21tb25zRmllbGRGb3JtbHlDb25maWcucHJvcHM/LmZvcm1FZGl0b3JDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZENvbXBvbmVudDogY29tbW9uc0ZpZWxkRm9ybWx5Q29uZmlnLnByb3BzPy5maWVsZENvbXBvbmVudFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb24ubWVzc2FnZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgY29uZmlnW3ZhbGlkYXRpb24ubmFtZV0ubWVzc2FnZSA9IHZhbGlkYXRpb24ubWVzc2FnZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcudmFsaWRhdGlvbikpIHtcbiAgICAgICAgICAgIGNvbmZpZy52YWxpZGF0aW9uID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbGlkYXRpb24ub3B0aW9ucz8uZXJyb3JQYXRoKSB7XG4gICAgICAgICAgICBjb25maWcudmFsaWRhdGlvbi5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiB2YWxpZGF0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge2Vycm9yUGF0aDogdmFsaWRhdGlvbi5vcHRpb25zLmVycm9yUGF0aH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uZmlnLnZhbGlkYXRpb24ucHVzaCh2YWxpZGF0aW9uLm5hbWUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -12,6 +12,7 @@ import { FormlyFieldTableDialogMultiselectComponent } from '../components/formly
12
12
  import { FormlyFieldTabsComponent } from '../components/formly/fields/formly-field-tabs/formly-field-tabs.component';
13
13
  import { FormlyFieldNoLabelWrapperComponent } from '../components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';
14
14
  import { FormlyFieldWrapperComponent } from '../components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';
15
+ import { getEditorFieldLabel } from './editor-field';
15
16
  export const formlyWrappersConfig = [
16
17
  { name: 'field', component: FormlyFieldWrapperComponent },
17
18
  { name: 'field-no-label', component: FormlyFieldNoLabelWrapperComponent }
@@ -173,50 +174,43 @@ export const formlyTypesConfig = [
173
174
  ];
174
175
  export function getRequiredValidationMessage(translate) {
175
176
  return (error, field) => {
176
- const fieldLabel = field.props.label || 'field';
177
- const fieldName = translate.instant(fieldLabel);
177
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
178
178
  return translate.instant('mngEditor.validation.required', { field: fieldName });
179
179
  };
180
180
  }
181
181
  export function getMinLengthValidationMessage(translate) {
182
182
  return (error, field) => {
183
- const fieldLabel = field.props.label ?? 'field';
184
- const fieldName = translate.instant(fieldLabel);
183
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
185
184
  return translate.instant('mngEditor.validation.minLength', { field: fieldName, minLength: field.props.minLength });
186
185
  };
187
186
  }
188
187
  export function getMaxLengthValidationMessage(translate) {
189
188
  return (error, field) => {
190
- const fieldLabel = field.props.label || 'field';
191
- const fieldName = translate.instant(fieldLabel);
189
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
192
190
  return translate.instant('mngEditor.validation.maxLength', { field: fieldName, maxLength: field.props.maxLength });
193
191
  };
194
192
  }
195
193
  export function getMinValidationMessage(translate) {
196
194
  return (error, field) => {
197
- const fieldLabel = field.props.label ?? 'field';
198
- const fieldName = translate.instant(fieldLabel);
195
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
199
196
  return translate.instant('mngEditor.validation.min', { field: fieldName, min: field.props.min });
200
197
  };
201
198
  }
202
199
  export function getMaxValidationMessage(translate) {
203
200
  return (error, field) => {
204
- const fieldLabel = field.props.label || 'field';
205
- const fieldName = translate.instant(fieldLabel);
201
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
206
202
  return translate.instant('mngEditor.validation.max', { field: fieldName, max: field.props.max });
207
203
  };
208
204
  }
209
205
  export function getTextPatternValidationMessage(translate) {
210
206
  return (error, field) => {
211
- const fieldLabel = field.props.label ?? 'field';
212
- const fieldName = translate.instant(fieldLabel);
207
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
213
208
  return translate.instant('mngEditor.validation.pattern', { field: fieldName, pattern: field.props.pattern });
214
209
  };
215
210
  }
216
211
  export function getEmailValidationMessage(translate) {
217
212
  return (error, field) => {
218
- const fieldLabel = field.props.label || 'field';
219
- const fieldName = translate.instant(fieldLabel);
213
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
220
214
  return translate.instant('mngEditor.validation.email', { field: fieldName });
221
215
  };
222
216
  }
@@ -231,7 +225,8 @@ export function getMinDateValidationMessage(translate, datePipe) {
231
225
  if (inputDescriptor.datePickerShowTime) {
232
226
  dateString += datePipe.transform(minDate, ' HH:mm:ss');
233
227
  }
234
- return translate.instant('mngEditor.validation.minDate', { min: dateString });
228
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
229
+ return translate.instant('mngEditor.validation.minDate', { field: fieldName, min: dateString });
235
230
  };
236
231
  }
237
232
  export function getMaxDateValidationMessage(translate, datePipe) {
@@ -245,7 +240,8 @@ export function getMaxDateValidationMessage(translate, datePipe) {
245
240
  if (inputDescriptor.datePickerShowTime) {
246
241
  dateString += datePipe.transform(maxDate, ' HH:mm:ss');
247
242
  }
248
- return translate.instant('mngEditor.validation.maxDate', { max: dateString });
243
+ const fieldName = getEditorFieldLabel(field.props.descriptor, field.props.editorDescriptor);
244
+ return translate.instant('mngEditor.validation.maxDate', { field: fieldName, max: dateString });
249
245
  };
250
246
  }
251
247
  export const getFormlyValidationMessages = (translate, datePipe) => {
@@ -261,4 +257,4 @@ export const getFormlyValidationMessages = (translate, datePipe) => {
261
257
  { name: 'maxDate', message: getMaxDateValidationMessage(translate, datePipe) }
262
258
  ];
263
259
  };
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZm9ybWx5LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrRUFBK0UsQ0FBQztBQUN6SCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwyRkFBMkYsQ0FBQztBQUMzSSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrRUFBK0UsQ0FBQztBQUN6SCxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx1RkFBdUYsQ0FBQztBQUNySSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUMvSCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUMvSCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUN0SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2RkFBNkYsQ0FBQztBQUM3SSxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxxR0FBcUcsQ0FBQztBQUN4SixPQUFPLEVBQUMsMENBQTBDLEVBQUMsTUFBTSxtSEFBbUgsQ0FBQztBQUM3SyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxxR0FBcUcsQ0FBQztBQUN2SixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUc5SCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBb0I7SUFDakQsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSwyQkFBMkIsRUFBQztJQUN2RCxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFB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QUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxFQUFDO1FBQzlELEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFDO1FBQzVFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFDO0tBQy9FLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RhdGVQaXBlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1dyYXBwZXJPcHRpb259IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUvbGliL21vZGVscy9jb25maWcnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7Q29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnLCBGaWVsZElucHV0RGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy90YWJsZXZpZXcvYXBpJztcblxuaW1wb3J0IHtGb3JtbHlGaWVsZEFjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hY3Rpb24vZm9ybWx5LWZpZWxkLWFjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZEF1dG9jb21wbGV0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZEN1c3RvbUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1jdXN0b20vZm9ybWx5LWZpZWxkLWN1c3RvbS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZERhdGVwaWNrZXJDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci9mb3JtbHktZmllbGQtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZERyb3Bkb3duQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWRyb3Bkb3duL2Zvcm1seS1maWVsZC1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZEZpZWxkc2V0Q29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWZpZWxkc2V0L2Zvcm1seS1maWVsZC1maWVsZHNldC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZExhYmVsQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWxhYmVsL2Zvcm1seS1maWVsZC1sYWJlbC5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZExvb2t1cERpYWxvZ0NvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1seUZpZWxkVGFibGVEaWFsb2dGb3JtQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZFRhYmxlRGlhbG9nTXVsdGlzZWxlY3RDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLW11bHRpc2VsZWN0L2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRUYWJzQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYnMvZm9ybWx5LWZpZWxkLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGROb0xhYmVsV3JhcHBlckNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLW5vLWxhYmVsLXdyYXBwZXIvZm9ybWx5LWZpZWxkLW5vLWxhYmVsLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRXcmFwcGVyQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS93cmFwcGVycy9mb3JtbHktZmllbGQtd3JhcHBlci9mb3JtbHktZmllbGQtd3JhcHBlci5jb21wb25lbnQnO1xuaW1wb3J0IHtDb21tb25zRm9ybWx5VHlwZUNvbmZpZ30gZnJvbSAnLi4vbW9kZWxzL2Zvcm1seS1jb25maWcubW9kZWwnO1xuXG5leHBvcnQgY29uc3QgZm9ybWx5V3JhcHBlcnNDb25maWc6IFdyYXBwZXJPcHRpb25bXSA9IFtcbiAgICB7bmFtZTogJ2ZpZWxkJywgY29tcG9uZW50OiBGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnR9LFxuICAgIHtuYW1lOiAnZmllbGQtbm8tbGFiZWwnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkTm9MYWJlbFdyYXBwZXJDb21wb25lbnR9XG5dO1xuXG5leHBvcnQgY29uc3QgZm9ybWx5VHlwZXNDb25maWc6IENvbW1vbnNGb3JtbHlUeXBlQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAgICBuYW1lOiAnbGFiZWwnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2lucHV0JyxcbiAgICAgICAgY29tcG9uZW50OiBGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZCddXG4gICAgfSxcbiAgICB7bmFtZTogJ3N0cmluZycsIGV4dGVuZHM6ICdpbnB1dCd9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ251bWJlcicsXG4gICAgICAgIGV4dGVuZHM6ICdpbnB1dCcsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnaW50ZWdlcicsXG4gICAgICAgIGV4dGVuZHM6ICdpbnB1dCcsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RleHRhcmVhJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdzd2l0Y2gnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3JhZGlvJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JhZGlvJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRlcGlja2VyJyxcbiAgICAgICAgY29tcG9uZW50OiBGb3JtbHlGaWVsZERhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlcGlja2VyJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdtYXNrJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21hc2snXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2ZpbGUnLFxuICAgICAgICBleHRlbmRzOiAnaW5wdXQnLFxuICAgICAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnaW1hZ2VVcmwnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbWFnZVVybCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd3JhcHBlcnM6IFsnZmllbGQnXVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnZHJvcGRvd24nLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtuYW1lOiAnZW51bScsIGV4dGVuZHM6ICdkcm9wZG93bid9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2F1dG9jb21wbGV0ZScsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2FjdGlvbicsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkLW5vLWxhYmVsJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2RpYWxvZycsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdCcsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRUYWJsZURpYWxvZ011bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZC1uby1sYWJlbCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICd0YWJsZS1kaWFsb2ctZm9ybScsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkLW5vLWxhYmVsJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RhYnMnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkVGFic0NvbXBvbmVudCxcbiAgICAgICAgd3JhcHBlcnM6IFtdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdmaWVsZHNldCcsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRGaWVsZHNldENvbXBvbmVudCxcbiAgICAgICAgd3JhcHBlcnM6IFtdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdmb3JtbHktZ3JvdXAnLFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZC1uby1sYWJlbCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdjdXN0b20nLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkQ3VzdG9tQ29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogW11cbiAgICB9XG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpOiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRMYWJlbCA9IGZpZWxkLnByb3BzLmxhYmVsIHx8ICdmaWVsZCc7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHRyYW5zbGF0ZS5pbnN0YW50KGZpZWxkTGFiZWwpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLnJlcXVpcmVkJywge2ZpZWxkOiBmaWVsZE5hbWV9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWluTGVuZ3RoVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBmaWVsZC5wcm9wcy5sYWJlbCA/PyAnZmllbGQnO1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0cmFuc2xhdGUuaW5zdGFudChmaWVsZExhYmVsKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5taW5MZW5ndGgnLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWluTGVuZ3RoOiBmaWVsZC5wcm9wcy5taW5MZW5ndGh9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF4TGVuZ3RoVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBmaWVsZC5wcm9wcy5sYWJlbCB8fCAnZmllbGQnO1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0cmFuc2xhdGUuaW5zdGFudChmaWVsZExhYmVsKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5tYXhMZW5ndGgnLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWF4TGVuZ3RoOiBmaWVsZC5wcm9wcy5tYXhMZW5ndGh9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWluVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBmaWVsZC5wcm9wcy5sYWJlbCA/PyAnZmllbGQnO1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0cmFuc2xhdGUuaW5zdGFudChmaWVsZExhYmVsKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5taW4nLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWluOiBmaWVsZC5wcm9wcy5taW59KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF4VmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTGFiZWwgPSBmaWVsZC5wcm9wcy5sYWJlbCB8fCAnZmllbGQnO1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSB0cmFuc2xhdGUuaW5zdGFudChmaWVsZExhYmVsKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5tYXgnLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWF4OiBmaWVsZC5wcm9wcy5tYXh9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGV4dFBhdHRlcm5WYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpOiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGRMYWJlbCA9IGZpZWxkLnByb3BzLmxhYmVsID8/ICdmaWVsZCc7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IHRyYW5zbGF0ZS5pbnN0YW50KGZpZWxkTGFiZWwpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLnBhdHRlcm4nLCB7ZmllbGQ6IGZpZWxkTmFtZSwgcGF0dGVybjogZmllbGQucHJvcHMucGF0dGVybn0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWFpbFZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZExhYmVsID0gZmllbGQucHJvcHMubGFiZWwgfHwgJ2ZpZWxkJztcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gdHJhbnNsYXRlLmluc3RhbnQoZmllbGRMYWJlbCk7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnbW5nRWRpdG9yLnZhbGlkYXRpb24uZW1haWwnLCB7ZmllbGQ6IGZpZWxkTmFtZX0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaW5EYXRlVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBkYXRlUGlwZTogRGF0ZVBpcGUpOiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgaW5wdXREZXNjcmlwdG9yID0gZmllbGQucHJvcHMuZGVzY3JpcHRvciBhcyBGaWVsZElucHV0RGVzY3JpcHRvcjxhbnk+O1xuICAgICAgICBjb25zdCBtaW5EYXRlID0gZmllbGQucHJvcHMubWluRGF0ZSA/PyBpbnB1dERlc2NyaXB0b3IuZGF0ZVBpY2tlck1pbjtcblxuICAgICAgICBpZiAoIW1pbkRhdGUgfHwgIShtaW5EYXRlIGluc3RhbmNlb2YgRGF0ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBsZXQgZGF0ZVN0cmluZyA9IGRhdGVQaXBlLnRyYW5zZm9ybShtaW5EYXRlLCAnZGQuIE1NLiB5eXl5JykgPz8gJyc7XG5cbiAgICAgICAgaWYgKGlucHV0RGVzY3JpcHRvci5kYXRlUGlja2VyU2hvd1RpbWUpIHtcbiAgICAgICAgICAgIGRhdGVTdHJpbmcgKz0gZGF0ZVBpcGUudHJhbnNmb3JtKG1pbkRhdGUsICcgSEg6bW06c3MnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnbW5nRWRpdG9yLnZhbGlkYXRpb24ubWluRGF0ZScsIHttaW46IGRhdGVTdHJpbmd9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF4RGF0ZVZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZGF0ZVBpcGU6IERhdGVQaXBlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGVzY3JpcHRvciA9IGZpZWxkLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8YW55PjtcbiAgICAgICAgY29uc3QgbWF4RGF0ZSA9IGZpZWxkLnByb3BzLm1heERhdGUgPz8gaW5wdXREZXNjcmlwdG9yLmRhdGVQaWNrZXJNYXg7XG5cbiAgICAgICAgaWYgKCFtYXhEYXRlIHx8ICEobWF4RGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGVTdHJpbmcgPSBkYXRlUGlwZS50cmFuc2Zvcm0obWF4RGF0ZSwgJ2RkLiBNTS4geXl5eScpID8/ICcnO1xuXG4gICAgICAgIGlmIChpbnB1dERlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lKSB7XG4gICAgICAgICAgICBkYXRlU3RyaW5nICs9IGRhdGVQaXBlLnRyYW5zZm9ybShtYXhEYXRlLCAnIEhIOm1tOnNzJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLm1heERhdGUnLCB7bWF4OiBkYXRlU3RyaW5nfSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZvcm1seVZhbGlkYXRpb25NZXNzYWdlcyA9ICh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGRhdGVQaXBlOiBEYXRlUGlwZSk6IGFueVtdID0+IHtcbiAgICByZXR1cm4gW1xuICAgICAgICB7bmFtZTogJ3JlcXVpcmVkJywgbWVzc2FnZTogZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdtaW5MZW5ndGgnLCBtZXNzYWdlOiBnZXRNaW5MZW5ndGhWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdtYXhMZW5ndGgnLCBtZXNzYWdlOiBnZXRNYXhMZW5ndGhWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdtaW4nLCBtZXNzYWdlOiBnZXRNaW5WYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdtYXgnLCBtZXNzYWdlOiBnZXRNYXhWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdwYXR0ZXJuJywgbWVzc2FnZTogZ2V0VGV4dFBhdHRlcm5WYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUpfSxcbiAgICAgICAge25hbWU6ICdlbWFpbCcsIG1lc3NhZ2U6IGdldEVtYWlsVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnbWluRGF0ZScsIG1lc3NhZ2U6IGdldE1pbkRhdGVWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUsIGRhdGVQaXBlKX0sXG4gICAgICAgIHtuYW1lOiAnbWF4RGF0ZScsIG1lc3NhZ2U6IGdldE1heERhdGVWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGUsIGRhdGVQaXBlKX1cbiAgICBdO1xufTtcbiJdfQ==
260
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWx5LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9zcmMvZWRpdG9yL2hlbHBlcnMvZm9ybWx5LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrRUFBK0UsQ0FBQztBQUN6SCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSwyRkFBMkYsQ0FBQztBQUMzSSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwrRUFBK0UsQ0FBQztBQUN6SCxPQUFPLEVBQUMsOEJBQThCLEVBQUMsTUFBTSx1RkFBdUYsQ0FBQztBQUNySSxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUMvSCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUMvSCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUN0SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw2RUFBNkUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSw2RkFBNkYsQ0FBQztBQUM3SSxPQUFPLEVBQUMsbUNBQW1DLEVBQUMsTUFBTSxxR0FBcUcsQ0FBQztBQUN4SixPQUFPLEVBQUMsMENBQTBDLEVBQUMsTUFBTSxtSEFBbUgsQ0FBQztBQUM3SyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwyRUFBMkUsQ0FBQztBQUNuSCxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSxxR0FBcUcsQ0FBQztBQUN2SixPQUFPLEVBQUMsMkJBQTJCLEVBQUMsTUFBTSxtRkFBbUYsQ0FBQztBQUU5SCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBb0I7SUFDakQsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFB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dUIsQ0FBQyxTQUFTLENBQUMsRUFBQztRQUMxRCxFQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxFQUFDO1FBQzFELEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsK0JBQStCLENBQUMsU0FBUyxDQUFDLEVBQUM7UUFDdEUsRUFBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsRUFBQztRQUM5RCxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBQztRQUM1RSxFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBQztLQUMvRSxDQUFDO0FBQ04sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtXcmFwcGVyT3B0aW9ufSBmcm9tICdAbmd4LWZvcm1seS9jb3JlL2xpYi9tb2RlbHMvY29uZmlnJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NvbW1vbnNGb3JtbHlGaWVsZENvbmZpZywgRmllbGRJbnB1dERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvdGFibGV2aWV3L2FwaSc7XG5cbmltcG9ydCB7Rm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtYWN0aW9uL2Zvcm1seS1maWVsZC1hY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRDdXN0b21Db21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtY3VzdG9tL2Zvcm1seS1maWVsZC1jdXN0b20uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGREYXRlcGlja2VyQ29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWRhdGVwaWNrZXIvZm9ybWx5LWZpZWxkLWRhdGVwaWNrZXIuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGREcm9wZG93bkNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1kcm9wZG93bi9mb3JtbHktZmllbGQtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRGaWVsZHNldENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1maWVsZHNldC9mb3JtbHktZmllbGQtZmllbGRzZXQuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRJbnB1dENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1pbnB1dC9mb3JtbHktZmllbGQtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRMYWJlbENvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sYWJlbC9mb3JtbHktZmllbGQtbGFiZWwuY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHtGb3JtbHlGaWVsZFRhYmxlRGlhbG9nRm9ybUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLWZvcm0uY29tcG9uZW50JztcbmltcG9ydCB7Rm9ybWx5RmllbGRUYWJsZURpYWxvZ011bHRpc2VsZWN0Q29tcG9uZW50fSBmcm9tICcuLi9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdC9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1seUZpZWxkVGFic0NvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJzL2Zvcm1seS1maWVsZC10YWJzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1seUZpZWxkTm9MYWJlbFdyYXBwZXJDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvZm9ybWx5L3dyYXBwZXJzL2Zvcm1seS1maWVsZC1uby1sYWJlbC13cmFwcGVyL2Zvcm1seS1maWVsZC1uby1sYWJlbC13cmFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0Zvcm1seUZpZWxkV3JhcHBlckNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLXdyYXBwZXIvZm9ybWx5LWZpZWxkLXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uc0Zvcm1seVR5cGVDb25maWd9IGZyb20gJy4uL21vZGVscy9mb3JtbHktY29uZmlnLm1vZGVsJztcbmltcG9ydCB7Z2V0RWRpdG9yRmllbGRMYWJlbH0gZnJvbSAnLi9lZGl0b3ItZmllbGQnO1xuXG5leHBvcnQgY29uc3QgZm9ybWx5V3JhcHBlcnNDb25maWc6IFdyYXBwZXJPcHRpb25bXSA9IFtcbiAgICB7bmFtZTogJ2ZpZWxkJywgY29tcG9uZW50OiBGb3JtbHlGaWVsZFdyYXBwZXJDb21wb25lbnR9LFxuICAgIHtuYW1lOiAnZmllbGQtbm8tbGFiZWwnLCBjb21wb25lbnQ6IEZvcm1seUZpZWxkTm9MYWJlbFdyYXBwZXJDb21wb25lbnR9XG5dO1xuXG5leHBvcnQgY29uc3QgZm9ybWx5VHlwZXNDb25maWc6IENvbW1vbnNGb3JtbHlUeXBlQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAgICBuYW1lOiAnbGFiZWwnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkTGFiZWxDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2lucHV0JyxcbiAgICAgICAgY29tcG9uZW50OiBGb3JtbHlGaWVsZElucHV0Q29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZCddXG4gICAgfSxcbiAgICB7bmFtZTogJ3N0cmluZycsIGV4dGVuZHM6ICdpbnB1dCd9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ251bWJlcicsXG4gICAgICAgIGV4dGVuZHM6ICdpbnB1dCcsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ251bWJlcidcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnaW50ZWdlcicsXG4gICAgICAgIGV4dGVuZHM6ICdpbnB1dCcsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdudW1iZXInXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RleHRhcmVhJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdzd2l0Y2gnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3JhZGlvJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3JhZGlvJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdkYXRlcGlja2VyJyxcbiAgICAgICAgY29tcG9uZW50OiBGb3JtbHlGaWVsZERhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdkYXRlcGlja2VyJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdtYXNrJyxcbiAgICAgICAgZXh0ZW5kczogJ2lucHV0JyxcbiAgICAgICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ21hc2snXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2ZpbGUnLFxuICAgICAgICBleHRlbmRzOiAnaW5wdXQnLFxuICAgICAgICBkZWZhdWx0T3B0aW9uczoge1xuICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnZmlsZSdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnaW1hZ2VVcmwnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkSW5wdXRDb21wb25lbnQsXG4gICAgICAgIGRlZmF1bHRPcHRpb25zOiB7XG4gICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdpbWFnZVVybCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgd3JhcHBlcnM6IFsnZmllbGQnXVxuICAgIH0sXG4gICAge1xuICAgICAgICBuYW1lOiAnZHJvcGRvd24nLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkRHJvcGRvd25Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtuYW1lOiAnZW51bScsIGV4dGVuZHM6ICdkcm9wZG93bid9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2F1dG9jb21wbGV0ZScsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRBdXRvY29tcGxldGVDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2FjdGlvbicsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRBY3Rpb25Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkLW5vLWxhYmVsJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ2RpYWxvZycsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRMb29rdXBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdCcsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRUYWJsZURpYWxvZ011bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZC1uby1sYWJlbCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICd0YWJsZS1kaWFsb2ctZm9ybScsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRUYWJsZURpYWxvZ0Zvcm1Db21wb25lbnQsXG4gICAgICAgIHdyYXBwZXJzOiBbJ2ZpZWxkLW5vLWxhYmVsJ11cbiAgICB9LFxuICAgIHtcbiAgICAgICAgbmFtZTogJ3RhYnMnLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkVGFic0NvbXBvbmVudCxcbiAgICAgICAgd3JhcHBlcnM6IFtdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdmaWVsZHNldCcsXG4gICAgICAgIGNvbXBvbmVudDogRm9ybWx5RmllbGRGaWVsZHNldENvbXBvbmVudCxcbiAgICAgICAgd3JhcHBlcnM6IFtdXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdmb3JtbHktZ3JvdXAnLFxuICAgICAgICB3cmFwcGVyczogWydmaWVsZC1uby1sYWJlbCddXG4gICAgfSxcbiAgICB7XG4gICAgICAgIG5hbWU6ICdjdXN0b20nLFxuICAgICAgICBjb21wb25lbnQ6IEZvcm1seUZpZWxkQ3VzdG9tQ29tcG9uZW50LFxuICAgICAgICB3cmFwcGVyczogW11cbiAgICB9XG5dO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpOiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0RWRpdG9yRmllbGRMYWJlbChmaWVsZC5wcm9wcy5kZXNjcmlwdG9yLCBmaWVsZC5wcm9wcy5lZGl0b3JEZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5yZXF1aXJlZCcsIHtmaWVsZDogZmllbGROYW1lfSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pbkxlbmd0aFZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRFZGl0b3JGaWVsZExhYmVsKGZpZWxkLnByb3BzLmRlc2NyaXB0b3IsIGZpZWxkLnByb3BzLmVkaXRvckRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLm1pbkxlbmd0aCcsIHtmaWVsZDogZmllbGROYW1lLCBtaW5MZW5ndGg6IGZpZWxkLnByb3BzLm1pbkxlbmd0aH0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXhMZW5ndGhWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpOiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4gT2JzZXJ2YWJsZTxzdHJpbmc+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0RWRpdG9yRmllbGRMYWJlbChmaWVsZC5wcm9wcy5kZXNjcmlwdG9yLCBmaWVsZC5wcm9wcy5lZGl0b3JEZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5tYXhMZW5ndGgnLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWF4TGVuZ3RoOiBmaWVsZC5wcm9wcy5tYXhMZW5ndGh9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWluVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEVkaXRvckZpZWxkTGFiZWwoZmllbGQucHJvcHMuZGVzY3JpcHRvciwgZmllbGQucHJvcHMuZWRpdG9yRGVzY3JpcHRvcik7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudCgnbW5nRWRpdG9yLnZhbGlkYXRpb24ubWluJywge2ZpZWxkOiBmaWVsZE5hbWUsIG1pbjogZmllbGQucHJvcHMubWlufSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heFZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRFZGl0b3JGaWVsZExhYmVsKGZpZWxkLnByb3BzLmRlc2NyaXB0b3IsIGZpZWxkLnByb3BzLmVkaXRvckRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLm1heCcsIHtmaWVsZDogZmllbGROYW1lLCBtYXg6IGZpZWxkLnByb3BzLm1heH0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZXh0UGF0dGVyblZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRFZGl0b3JGaWVsZExhYmVsKGZpZWxkLnByb3BzLmRlc2NyaXB0b3IsIGZpZWxkLnByb3BzLmVkaXRvckRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLnBhdHRlcm4nLCB7ZmllbGQ6IGZpZWxkTmFtZSwgcGF0dGVybjogZmllbGQucHJvcHMucGF0dGVybn0pO1xuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWFpbFZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRFZGl0b3JGaWVsZExhYmVsKGZpZWxkLnByb3BzLmRlc2NyaXB0b3IsIGZpZWxkLnByb3BzLmVkaXRvckRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLmVtYWlsJywge2ZpZWxkOiBmaWVsZE5hbWV9KTtcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWluRGF0ZVZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgZGF0ZVBpcGU6IERhdGVQaXBlKTogKGVycm9yOiBhbnksIGZpZWxkOiBDb21tb25zRm9ybWx5RmllbGRDb25maWcpID0+IE9ic2VydmFibGU8c3RyaW5nPiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiB7XG4gICAgICAgIGNvbnN0IGlucHV0RGVzY3JpcHRvciA9IGZpZWxkLnByb3BzLmRlc2NyaXB0b3IgYXMgRmllbGRJbnB1dERlc2NyaXB0b3I8YW55PjtcbiAgICAgICAgY29uc3QgbWluRGF0ZSA9IGZpZWxkLnByb3BzLm1pbkRhdGUgPz8gaW5wdXREZXNjcmlwdG9yLmRhdGVQaWNrZXJNaW47XG5cbiAgICAgICAgaWYgKCFtaW5EYXRlIHx8ICEobWluRGF0ZSBpbnN0YW5jZW9mIERhdGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGRhdGVTdHJpbmcgPSBkYXRlUGlwZS50cmFuc2Zvcm0obWluRGF0ZSwgJ2RkLiBNTS4geXl5eScpID8/ICcnO1xuXG4gICAgICAgIGlmIChpbnB1dERlc2NyaXB0b3IuZGF0ZVBpY2tlclNob3dUaW1lKSB7XG4gICAgICAgICAgICBkYXRlU3RyaW5nICs9IGRhdGVQaXBlLnRyYW5zZm9ybShtaW5EYXRlLCAnIEhIOm1tOnNzJyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWVsZE5hbWUgPSBnZXRFZGl0b3JGaWVsZExhYmVsKGZpZWxkLnByb3BzLmRlc2NyaXB0b3IsIGZpZWxkLnByb3BzLmVkaXRvckRlc2NyaXB0b3IpO1xuICAgICAgICByZXR1cm4gdHJhbnNsYXRlLmluc3RhbnQoJ21uZ0VkaXRvci52YWxpZGF0aW9uLm1pbkRhdGUnLCB7ZmllbGQ6IGZpZWxkTmFtZSwgbWluOiBkYXRlU3RyaW5nfSk7XG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1heERhdGVWYWxpZGF0aW9uTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGRhdGVQaXBlOiBEYXRlUGlwZSk6IChlcnJvcjogYW55LCBmaWVsZDogQ29tbW9uc0Zvcm1seUZpZWxkQ29uZmlnKSA9PiBPYnNlcnZhYmxlPHN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoZXJyb3I6IGFueSwgZmllbGQ6IENvbW1vbnNGb3JtbHlGaWVsZENvbmZpZykgPT4ge1xuICAgICAgICBjb25zdCBpbnB1dERlc2NyaXB0b3IgPSBmaWVsZC5wcm9wcy5kZXNjcmlwdG9yIGFzIEZpZWxkSW5wdXREZXNjcmlwdG9yPGFueT47XG4gICAgICAgIGNvbnN0IG1heERhdGUgPSBmaWVsZC5wcm9wcy5tYXhEYXRlID8/IGlucHV0RGVzY3JpcHRvci5kYXRlUGlja2VyTWF4O1xuXG4gICAgICAgIGlmICghbWF4RGF0ZSB8fCAhKG1heERhdGUgaW5zdGFuY2VvZiBEYXRlKSkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGxldCBkYXRlU3RyaW5nID0gZGF0ZVBpcGUudHJhbnNmb3JtKG1heERhdGUsICdkZC4gTU0uIHl5eXknKSA/PyAnJztcblxuICAgICAgICBpZiAoaW5wdXREZXNjcmlwdG9yLmRhdGVQaWNrZXJTaG93VGltZSkge1xuICAgICAgICAgICAgZGF0ZVN0cmluZyArPSBkYXRlUGlwZS50cmFuc2Zvcm0obWF4RGF0ZSwgJyBISDptbTpzcycpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZ2V0RWRpdG9yRmllbGRMYWJlbChmaWVsZC5wcm9wcy5kZXNjcmlwdG9yLCBmaWVsZC5wcm9wcy5lZGl0b3JEZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZS5pbnN0YW50KCdtbmdFZGl0b3IudmFsaWRhdGlvbi5tYXhEYXRlJywge2ZpZWxkOiBmaWVsZE5hbWUsIG1heDogZGF0ZVN0cmluZ30pO1xuICAgIH07XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtbHlWYWxpZGF0aW9uTWVzc2FnZXMgPSAodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBkYXRlUGlwZTogRGF0ZVBpcGUpOiBhbnlbXSA9PiB7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge25hbWU6ICdyZXF1aXJlZCcsIG1lc3NhZ2U6IGdldFJlcXVpcmVkVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnbWluTGVuZ3RoJywgbWVzc2FnZTogZ2V0TWluTGVuZ3RoVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnbWF4TGVuZ3RoJywgbWVzc2FnZTogZ2V0TWF4TGVuZ3RoVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnbWluJywgbWVzc2FnZTogZ2V0TWluVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnbWF4JywgbWVzc2FnZTogZ2V0TWF4VmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAncGF0dGVybicsIG1lc3NhZ2U6IGdldFRleHRQYXR0ZXJuVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlKX0sXG4gICAgICAgIHtuYW1lOiAnZW1haWwnLCBtZXNzYWdlOiBnZXRFbWFpbFZhbGlkYXRpb25NZXNzYWdlKHRyYW5zbGF0ZSl9LFxuICAgICAgICB7bmFtZTogJ21pbkRhdGUnLCBtZXNzYWdlOiBnZXRNaW5EYXRlVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlLCBkYXRlUGlwZSl9LFxuICAgICAgICB7bmFtZTogJ21heERhdGUnLCBtZXNzYWdlOiBnZXRNYXhEYXRlVmFsaWRhdGlvbk1lc3NhZ2UodHJhbnNsYXRlLCBkYXRlUGlwZSl9XG4gICAgXTtcbn07XG4iXX0=
@@ -43,6 +43,7 @@ export * from './editor/components/formly/fields/formly-field-tabs/formly-field-
43
43
  export * from './editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component';
44
44
  export * from './editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component';
45
45
  // editor helpers
46
+ export * from './editor/helpers/editor-field';
46
47
  export * from './editor/helpers/editor-formly';
47
48
  export * from './editor/helpers/formly-config';
48
49
  export * from './editor/helpers/notification';
@@ -61,4 +62,4 @@ export * from './tableview/router/tableview-route-builder';
61
62
  export * from './tableview/services/tableview-feature-config.token';
62
63
  // provide
63
64
  export * from './provide';
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90YWJsZXZpZXcvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsa0RBQWtELENBQUM7QUFFakUsZ0JBQWdCO0FBQ2hCLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsaUJBQWlCO0FBQ2pCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGdCQUFnQjtBQUNoQixjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0Qsa0JBQWtCO0FBQ2xCLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsMENBQTBDLENBQUM7QUFFekQsb0JBQW9CO0FBQ3BCLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxxRkFBcUYsQ0FBQztBQUNwRyxjQUFjLGlHQUFpRyxDQUFDO0FBQ2hILGNBQWMscUZBQXFGLENBQUM7QUFDcEcsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLHlGQUF5RixDQUFDO0FBQ3hHLGNBQWMsbUZBQW1GLENBQUM7QUFDbEcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsMkdBQTJHLENBQUM7QUFDMUgsY0FBYyx5SEFBeUgsQ0FBQztBQUN4SSxjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsMkdBQTJHLENBQUM7QUFDMUgsY0FBYyx5RkFBeUYsQ0FBQztBQUV4RyxpQkFBaUI7QUFDakIsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxnQkFBZ0I7QUFDaEIsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxrQkFBa0I7QUFDbEIsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLDBDQUEwQyxDQUFDO0FBRXpELHVCQUF1QjtBQUN2QixjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUM7QUFFckUsbUJBQW1CO0FBQ25CLGNBQWMsNENBQTRDLENBQUM7QUFFM0QscUJBQXFCO0FBQ3JCLGNBQWMscURBQXFELENBQUM7QUFFcEUsVUFBVTtBQUNWLGNBQWMsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gYWN0aW9uIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2NvbXBvbmVudHMvYWN0aW9uL2FjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vY29tcG9uZW50cy9lZGl0b3IvYWN0aW9uLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vY29tcG9uZW50cy9sb2NhbGl6YXRpb24vZGF0YS1sYW5ndWFnZS1kcm9wZG93bi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vY29tcG9uZW50cy9yb3V0ZS9hY3Rpb24tcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2NvbXBvbmVudHMvdGFibGUvYWN0aW9uLXRhYmxlLmNvbXBvbmVudCc7XG5cbi8vIGFjdGlvbiBndWFyZHNcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2d1YXJkcy91bnNhdmVkLWNoYW5nZXMuZ3VhcmQnO1xuXG4vLyBhY3Rpb24gaGVscGVyc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9pMThuJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2hlbHBlcnMvbm90aWZpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL2hlbHBlcnMvc3R5bGVzJztcblxuLy8gYWN0aW9uIG1vZGVsc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vbW9kZWxzL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1pbnN0YW5jZS1zdGF0ZS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvYWN0aW9uLWVkaXRvci1kaWFsb2ctZGF0YS5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvY2FuLWNvbXBvbmVudC1kZWFjdGl2YXRlLm1vZGVsJztcblxuLy8gYWN0aW9uIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9wcm92aWRlcnMvcHJvdmlkZS1hY3Rpb24tZXhlY3V0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvcHJvdmlkZXJzL3Byb3ZpZGUtdmlldy1jb250YWluZXInO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvdG9rZW5zL2FjdGlvbi1lZGl0b3IudG9rZW4nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvYWN0aW9uLWVycm9yLW1hcHBlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL3NlcnZpY2VzL2FjdGlvbi1leGVjdXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL3NlcnZpY2VzL2NvbXBvbmVudC1hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9kYXRhLXByb3ZpZGVyLWV4ZWN1dG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL3NlcnZpY2VzL3Jvb3QtYWN0aW9uLWV4ZWN1dG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvdmlldy1jb250YWluZXIuc2VydmljZSc7XG5cbi8vIGVkaXRvciBjb21wb25lbnRzXG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2VkaXRvci9mb3JtLWVkaXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hY3Rpb24vZm9ybWx5LWZpZWxkLWFjdGlvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1hdXRvY29tcGxldGUvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1jdXN0b20vZm9ybWx5LWZpZWxkLWN1c3RvbS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1kcm9wZG93bi9mb3JtbHktZmllbGQtZHJvcGRvd24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtZmllbGRzZXQvZm9ybWx5LWZpZWxkLWZpZWxkc2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWlucHV0L2Zvcm1seS1maWVsZC1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sYWJlbC9mb3JtbHktZmllbGQtbGFiZWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy9mb3JtbHktZmllbGQtbG9va3VwLWRpYWxvZy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFibGUtZGlhbG9nLW11bHRpc2VsZWN0L2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtdGFicy9mb3JtbHktZmllbGQtdGFicy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLW5vLWxhYmVsLXdyYXBwZXIvZm9ybWx5LWZpZWxkLW5vLWxhYmVsLXdyYXBwZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L3dyYXBwZXJzL2Zvcm1seS1maWVsZC13cmFwcGVyL2Zvcm1seS1maWVsZC13cmFwcGVyLmNvbXBvbmVudCc7XG5cbi8vIGVkaXRvciBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9oZWxwZXJzL2VkaXRvci1mb3JtbHknO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvaGVscGVycy9mb3JtbHktY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2hlbHBlcnMvbm90aWZpY2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2hlbHBlcnMvZWRpdG9yLXZhbGlkYXRvcnMnO1xuXG4vLyBlZGl0b3IgbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9tb2RlbHMvZm9ybWx5LWNvbmZpZy5tb2RlbCc7XG5cbi8vIGVkaXRvciBzZXJ2aWNlc1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3Ivc2VydmljZXMvZm9ybS1lZGl0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9zZXJ2aWNlcy9mb3JtbHktY29uZmlnLnByb3ZpZGVyJztcblxuLy8gdGFibGV2aWV3IGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2NvbXBvbmVudHMvcm91dGUvdGFibGV2aWV3LXJvdXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9jb21wb25lbnRzL3RhYmxldmlldy90YWJsZXZpZXcuY29tcG9uZW50JztcblxuLy8gdGFibGV2aWV3IHJvdXRlclxuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvcm91dGVyL3RhYmxldmlldy1yb3V0ZS1idWlsZGVyJztcblxuLy8gdGFibGV2aWV3IHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9zZXJ2aWNlcy90YWJsZXZpZXctZmVhdHVyZS1jb25maWcudG9rZW4nO1xuXG4vLyBwcm92aWRlXG5leHBvcnQgKiBmcm9tICcuL3Byb3ZpZGUnO1xuIl19
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90YWJsZXZpZXcvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQjtBQUNwQixjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxtRUFBbUUsQ0FBQztBQUNsRixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsa0RBQWtELENBQUM7QUFFakUsZ0JBQWdCO0FBQ2hCLGNBQWMsdUNBQXVDLENBQUM7QUFFdEQsaUJBQWlCO0FBQ2pCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHlCQUF5QixDQUFDO0FBRXhDLGdCQUFnQjtBQUNoQixjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx1REFBdUQsQ0FBQztBQUN0RSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsZ0RBQWdELENBQUM7QUFFL0Qsa0JBQWtCO0FBQ2xCLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGdEQUFnRCxDQUFDO0FBQy9ELGNBQWMsMENBQTBDLENBQUM7QUFFekQsb0JBQW9CO0FBQ3BCLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxxRkFBcUYsQ0FBQztBQUNwRyxjQUFjLGlHQUFpRyxDQUFDO0FBQ2hILGNBQWMscUZBQXFGLENBQUM7QUFDcEcsY0FBYyx5RkFBeUYsQ0FBQztBQUN4RyxjQUFjLHlGQUF5RixDQUFDO0FBQ3hHLGNBQWMsbUZBQW1GLENBQUM7QUFDbEcsY0FBYyxtRkFBbUYsQ0FBQztBQUNsRyxjQUFjLG1HQUFtRyxDQUFDO0FBQ2xILGNBQWMsMkdBQTJHLENBQUM7QUFDMUgsY0FBYyx5SEFBeUgsQ0FBQztBQUN4SSxjQUFjLGlGQUFpRixDQUFDO0FBQ2hHLGNBQWMsMkdBQTJHLENBQUM7QUFDMUgsY0FBYyx5RkFBeUYsQ0FBQztBQUV4RyxpQkFBaUI7QUFDakIsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLG9DQUFvQyxDQUFDO0FBRW5ELGdCQUFnQjtBQUNoQixjQUFjLHFDQUFxQyxDQUFDO0FBRXBELGtCQUFrQjtBQUNsQixjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsMENBQTBDLENBQUM7QUFFekQsdUJBQXVCO0FBQ3ZCLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxzREFBc0QsQ0FBQztBQUVyRSxtQkFBbUI7QUFDbkIsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxxQkFBcUI7QUFDckIsY0FBYyxxREFBcUQsQ0FBQztBQUVwRSxVQUFVO0FBQ1YsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhY3Rpb24gY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vY29tcG9uZW50cy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9jb21wb25lbnRzL2VkaXRvci9hY3Rpb24tZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9jb21wb25lbnRzL2xvY2FsaXphdGlvbi9kYXRhLWxhbmd1YWdlLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9jb21wb25lbnRzL3JvdXRlL2FjdGlvbi1yb3V0ZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vY29tcG9uZW50cy90YWJsZS9hY3Rpb24tdGFibGUuY29tcG9uZW50JztcblxuLy8gYWN0aW9uIGd1YXJkc1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vZ3VhcmRzL3Vuc2F2ZWQtY2hhbmdlcy5ndWFyZCc7XG5cbi8vIGFjdGlvbiBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9oZWxwZXJzL2kxOG4nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vaGVscGVycy9zdHlsZXMnO1xuXG4vLyBhY3Rpb24gbW9kZWxzXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWluc3RhbmNlLXN0YXRlLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9hY3Rpb24tZWRpdG9yLWRpYWxvZy1kYXRhLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL21vZGVscy9jYW4tY29tcG9uZW50LWRlYWN0aXZhdGUubW9kZWwnO1xuXG4vLyBhY3Rpb24gc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL3NlcnZpY2VzL3Byb3ZpZGVycy9wcm92aWRlLWFjdGlvbi1leGVjdXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9wcm92aWRlcnMvcHJvdmlkZS12aWV3LWNvbnRhaW5lcic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy90b2tlbnMvYWN0aW9uLWVkaXRvci50b2tlbic7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9hY3Rpb24tZXJyb3ItbWFwcGVyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvYWN0aW9uLWV4ZWN1dG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvY29tcG9uZW50LWFjdGlvbi1leGVjdXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uL3NlcnZpY2VzL2RhdGEtcHJvdmlkZXItZXhlY3V0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24vc2VydmljZXMvcm9vdC1hY3Rpb24tZXhlY3V0b3Iuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi9zZXJ2aWNlcy92aWV3LWNvbnRhaW5lci5zZXJ2aWNlJztcblxuLy8gZWRpdG9yIGNvbXBvbmVudHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZWRpdG9yL2Zvcm0tZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWFjdGlvbi9mb3JtbHktZmllbGQtYWN0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWF1dG9jb21wbGV0ZS9mb3JtbHktZmllbGQtYXV0b2NvbXBsZXRlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWN1c3RvbS9mb3JtbHktZmllbGQtY3VzdG9tLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWRyb3Bkb3duL2Zvcm1seS1maWVsZC1kcm9wZG93bi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1maWVsZHNldC9mb3JtbHktZmllbGQtZmllbGRzZXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2NvbXBvbmVudHMvZm9ybWx5L2ZpZWxkcy9mb3JtbHktZmllbGQtaW5wdXQvZm9ybWx5LWZpZWxkLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLWxhYmVsL2Zvcm1seS1maWVsZC1sYWJlbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nL2Zvcm1seS1maWVsZC1sb29rdXAtZGlhbG9nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS9maWVsZHMvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1mb3JtL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJsZS1kaWFsb2ctbXVsdGlzZWxlY3QvZm9ybWx5LWZpZWxkLXRhYmxlLWRpYWxvZy1tdWx0aXNlbGVjdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvZmllbGRzL2Zvcm1seS1maWVsZC10YWJzL2Zvcm1seS1maWVsZC10YWJzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9jb21wb25lbnRzL2Zvcm1seS93cmFwcGVycy9mb3JtbHktZmllbGQtbm8tbGFiZWwtd3JhcHBlci9mb3JtbHktZmllbGQtbm8tbGFiZWwtd3JhcHBlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvY29tcG9uZW50cy9mb3JtbHkvd3JhcHBlcnMvZm9ybWx5LWZpZWxkLXdyYXBwZXIvZm9ybWx5LWZpZWxkLXdyYXBwZXIuY29tcG9uZW50JztcblxuLy8gZWRpdG9yIGhlbHBlcnNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZpZWxkJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL2hlbHBlcnMvZWRpdG9yLWZvcm1seSc7XG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9oZWxwZXJzL2Zvcm1seS1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvaGVscGVycy9ub3RpZmljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9lZGl0b3IvaGVscGVycy9lZGl0b3ItdmFsaWRhdG9ycyc7XG5cbi8vIGVkaXRvciBtb2RlbHNcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL21vZGVscy9mb3JtbHktY29uZmlnLm1vZGVsJztcblxuLy8gZWRpdG9yIHNlcnZpY2VzXG5leHBvcnQgKiBmcm9tICcuL2VkaXRvci9zZXJ2aWNlcy9mb3JtLWVkaXRvci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yL3NlcnZpY2VzL2Zvcm1seS1jb25maWcucHJvdmlkZXInO1xuXG4vLyB0YWJsZXZpZXcgY29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcvY29tcG9uZW50cy9yb3V0ZS90YWJsZXZpZXctcm91dGUuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxldmlldy5jb21wb25lbnQnO1xuXG4vLyB0YWJsZXZpZXcgcm91dGVyXG5leHBvcnQgKiBmcm9tICcuL3RhYmxldmlldy9yb3V0ZXIvdGFibGV2aWV3LXJvdXRlLWJ1aWxkZXInO1xuXG4vLyB0YWJsZXZpZXcgc2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vdGFibGV2aWV3L3NlcnZpY2VzL3RhYmxldmlldy1mZWF0dXJlLWNvbmZpZy50b2tlbic7XG5cbi8vIHByb3ZpZGVcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZSc7XG4iXX0=
@@ -897,7 +897,10 @@ function dataListParamsToUrlQuery(params, defaults = {
897
897
  (defaultFilter.caseSensitive ?? false) === (paramFilter.caseSensitive ?? false)) {
898
898
  return;
899
899
  }
900
- if (paramFilter.value == null && defaultFilter?.value == null) {
900
+ if (paramFilter.value == null &&
901
+ defaultFilter?.value == null &&
902
+ paramFilter.matchMode !== FilterMatchMode.Exists &&
903
+ paramFilter.matchMode !== FilterMatchMode.DoesNotExist) {
901
904
  return;
902
905
  }
903
906
  urlParams[k] = dataListParamsFiltersToUrlQuery(params, k, true);
@@ -982,14 +985,14 @@ function dataListParamsFiltersToUrlQuery(params, key, allowNull = false) {
982
985
  */
983
986
  function dataListParamsFilterToUrlQuery(paramFilter, allowNull = false) {
984
987
  const filterValueAsArray = Array.isArray(paramFilter?.value) ? paramFilter.value.filter(v => v !== undefined && (allowNull || v !== null)) : undefined;
988
+ const matchMode = paramFilter?.matchMode ?? FilterMatchMode.Equals;
985
989
  if (paramFilter === undefined ||
986
- (!allowNull && paramFilter.value == null) ||
990
+ (!allowNull && matchMode !== 'exists' && matchMode !== 'doesNotExist' && paramFilter.value == null) ||
987
991
  (typeof paramFilter.value === 'string' && paramFilter.value.length === 0) ||
988
992
  (Array.isArray(filterValueAsArray) && filterValueAsArray.length === 0)) {
989
993
  // no need to include filters for empty values
990
994
  return undefined;
991
995
  }
992
- const matchMode = paramFilter.matchMode ?? FilterMatchMode.Equals;
993
996
  if (matchMode === FilterMatchMode.Between && !(Array.isArray(filterValueAsArray) && filterValueAsArray.length === 2)) {
994
997
  throw new CommonsInternalError(`Filter match mode between requires exactly 2 values: ${paramFilter.value}`);
995
998
  }