@mediusinc/mng-commons 0.4.2 → 0.4.3

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 (30) hide show
  1. package/assets/i18n/en.json +21 -19
  2. package/assets/i18n/sl.json +19 -17
  3. package/esm2020/lib/components/action/action.component.mjs +4 -4
  4. package/esm2020/lib/components/action/editor/action-editor.component.mjs +4 -8
  5. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +1 -1
  6. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +1 -1
  7. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +1 -1
  8. package/esm2020/lib/components/tableview/table/table.component.mjs +7 -3
  9. package/esm2020/lib/components/tableview/tableview.component.mjs +4 -4
  10. package/esm2020/lib/descriptors/action.descriptor.mjs +29 -10
  11. package/esm2020/lib/descriptors/editor.descriptor.mjs +4 -4
  12. package/esm2020/lib/descriptors/field.descriptor.mjs +3 -3
  13. package/esm2020/lib/pipes/i18n-property.pipe.mjs +3 -3
  14. package/esm2020/lib/pipes/link-formatter.pipe.mjs +1 -1
  15. package/esm2020/lib/services/action-executor.service.mjs +13 -14
  16. package/esm2020/lib/services/view-container.component.service.mjs +2 -2
  17. package/esm2020/lib/utils/i18n.util.mjs +213 -144
  18. package/esm2020/lib/utils/notification.util.mjs +16 -17
  19. package/fesm2015/mediusinc-mng-commons.mjs +364 -277
  20. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  21. package/fesm2020/mediusinc-mng-commons.mjs +358 -275
  22. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  23. package/lib/components/tableview/table/table.component.d.ts +4 -1
  24. package/lib/descriptors/action.descriptor.d.ts +13 -6
  25. package/lib/pipes/link-formatter.pipe.d.ts +1 -1
  26. package/lib/services/action-executor.service.d.ts +4 -2
  27. package/lib/services/view-container.component.service.d.ts +1 -1
  28. package/lib/utils/i18n.util.d.ts +52 -21
  29. package/lib/utils/notification.util.d.ts +4 -4
  30. package/package.json +1 -1
@@ -1,165 +1,234 @@
1
- import { first, map, mergeMap } from 'rxjs/operators';
2
- export class I18nUtil {
3
- static instantModelTranslation(translate, model, keyPath, customKey, item, fallbackKey, i18nParams) {
4
- const keys = I18nUtil.getModelKeysByPriority(model, keyPath, customKey, fallbackKey);
5
- const i18nModelName = I18nUtil.instantModelName(translate, model, true);
6
- const i18n = translate.instant(keys, I18nUtil.getModelI18nParams(model, item, i18nModelName ?? undefined, i18nParams));
7
- return I18nUtil.selectKeyByPriority(keys, i18n);
8
- }
9
- static getModelTabKey(model, tab) {
10
- return I18nUtil.getModelKeyPath(model, `tabs.${tab}`);
11
- }
12
- static getModelGroupKey(model, group) {
13
- return I18nUtil.getModelKeyPath(model, `groups.${group}`);
14
- }
15
- static getModelPropertyKey(model, property) {
16
- return I18nUtil.getModelKeyPath(model, `properties.${property}`);
17
- }
18
- static instantActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, functionNameKey, i18nParams) {
19
- const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
20
- const i18nModelName = I18nUtil.instantModelName(translate, action?.model, true);
21
- const i18nFunctionTitle = I18nUtil.getFunctionTitle(translate, functionNameKey);
22
- const i18n = translate.instant(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined, i18nParams, i18nFunctionTitle));
23
- return I18nUtil.selectKeyByPriority(keys, i18n);
24
- }
25
- static streamActionTranslation(translate, action, keyPath, customKey, item, fallbackKey) {
26
- return I18nUtil.getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, false);
27
- }
28
- static getActionTranslation(translate, action, keyPath, customKey, item, fallbackKey, oneTime = true) {
29
- const keys = I18nUtil.getActionKeysByPriority(action, keyPath, customKey, fallbackKey);
30
- return I18nUtil.getModelName(translate, action?.model, oneTime, true).pipe(mergeMap(i18nModelName => translate.get(keys, I18nUtil.getActionI18nParams(action, item, i18nModelName ?? undefined))), map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
31
- }
32
- static getModelI18nParams(model, item, i18nModelName, i18nParameters = {}) {
33
- i18nParameters.itemId = '';
34
- i18nParameters.itemTitle = '';
35
- if (i18nModelName) {
36
- i18nParameters.modelName = i18nModelName;
37
- }
38
- if (item) {
39
- if (model.idPropertyName && item[model.idPropertyName]) {
40
- i18nParameters.itemId = item[model.idPropertyName];
1
+ import { of } from 'rxjs';
2
+ import { map, mergeMap } from 'rxjs/operators';
3
+ import { TypeUtil } from './type.util';
4
+ export var I18nUtils;
5
+ (function (I18nUtils) {
6
+ class Common {
7
+ static getAsync(translate, params, ...keys) {
8
+ return translate.stream(keys, params).pipe(map(i18n => I18nUtils.Common.selectI18n(keys, i18n)));
9
+ }
10
+ static get(translate, params, ...keys) {
11
+ const i18n = translate.instant(keys, params);
12
+ return I18nUtils.Common.selectI18n(keys, i18n);
13
+ }
14
+ static populateParams(item, params = {}) {
15
+ const paramsRes = { ...params };
16
+ if (item) {
17
+ paramsRes.item = item;
41
18
  }
42
- if (model.titlePropertyName && item[model.titlePropertyName]) {
43
- i18nParameters.itemTitle = item[model.titlePropertyName];
19
+ return paramsRes;
20
+ }
21
+ static selectI18n(keys, i18n) {
22
+ for (const key of keys) {
23
+ if (key !== i18n[key]) {
24
+ return i18n[key];
25
+ }
44
26
  }
27
+ return null;
45
28
  }
46
- return i18nParameters;
47
29
  }
48
- static getActionI18nParams(action, item, i18nModelName, i18nParameters = {}, functionTitle) {
49
- i18nParameters.itemId = '';
50
- i18nParameters.itemTitle = '';
51
- if (functionTitle) {
52
- i18nParameters.functionTitle = functionTitle;
53
- }
54
- if (i18nModelName) {
55
- i18nParameters.modelName = i18nModelName;
56
- }
57
- if (item) {
58
- if (action.model.idPropertyName && item[action.model.idPropertyName]) {
59
- i18nParameters.itemId = item[action.model.idPropertyName];
30
+ I18nUtils.Common = Common;
31
+ class Type {
32
+ static getClassNameAsync(translate, classType, singular) {
33
+ const typeName = TypeUtil.findTypeName(classType);
34
+ return I18nUtils.Type.getNameAsync(translate, typeName, singular);
35
+ }
36
+ static getClassName(translate, classType, singular) {
37
+ const typeName = TypeUtil.findTypeName(classType);
38
+ return I18nUtils.Type.getName(translate, typeName, singular);
39
+ }
40
+ static getNameAsync(translate, typeName, singular) {
41
+ const keys = I18nUtils.Type.getNameKeys(typeName, singular);
42
+ return I18nUtils.Common.getAsync(translate, undefined, ...keys);
43
+ }
44
+ static getName(translate, typeName, singular) {
45
+ const keys = I18nUtils.Type.getNameKeys(typeName, singular);
46
+ return I18nUtils.Common.get(translate, undefined, ...keys);
47
+ }
48
+ static getClassTabKey(classType, tab) {
49
+ const typeName = TypeUtil.findTypeName(classType);
50
+ return I18nUtils.Type.getTabKey(typeName, tab);
51
+ }
52
+ static getTabKey(typeName, tab) {
53
+ return I18nUtils.Type.getPath(typeName, 'tabs', tab);
54
+ }
55
+ static getClassGroupKey(classType, group) {
56
+ const typeName = TypeUtil.findTypeName(classType);
57
+ return I18nUtils.Type.getGroupKey(typeName, group);
58
+ }
59
+ static getGroupKey(typeName, group) {
60
+ return I18nUtils.Type.getPath(typeName, 'groups', group);
61
+ }
62
+ static getClassPropertyKey(classType, property) {
63
+ const typeName = TypeUtil.findTypeName(classType);
64
+ return I18nUtils.Type.getPropertyKey(typeName, property);
65
+ }
66
+ static getPropertyKey(typeName, property) {
67
+ return I18nUtils.Type.getPath(typeName, 'properties', property);
68
+ }
69
+ static getClassPath(classType, ...path) {
70
+ const typeName = TypeUtil.findTypeName(classType);
71
+ return I18nUtils.Type.getPath(typeName, ...path);
72
+ }
73
+ static getPath(typeName, ...path) {
74
+ return `${typeName}.${path.join('.')}`;
75
+ }
76
+ static getClassParams(translate, classType, item, params = {}) {
77
+ const typeName = TypeUtil.findTypeName(classType);
78
+ return I18nUtils.Type.getParams(translate, typeName, item, params);
79
+ }
80
+ static getParams(translate, typeName, item, params = {}) {
81
+ const i18nTypeName = typeName ? I18nUtils.Type.getName(translate, typeName, true) : null;
82
+ return I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params);
83
+ }
84
+ static getClassParamsAsync(translate, classType, item, params = {}) {
85
+ const typeName = TypeUtil.findTypeName(classType);
86
+ return I18nUtils.Type.getParamsAsync(translate, typeName, item, params);
87
+ }
88
+ static getParamsAsync(translate, typeName, item, params = {}) {
89
+ return (typeName ? I18nUtils.Type.getNameAsync(translate, typeName, true) : of(null)).pipe(map(i18nTypeName => I18nUtils.Type.populateParams(i18nTypeName ?? undefined, item, params)));
90
+ }
91
+ static populateParams(i18nTypeName, item, params = {}) {
92
+ const paramsRes = { ...params };
93
+ if (i18nTypeName) {
94
+ paramsRes.typeName = i18nTypeName;
95
+ }
96
+ return I18nUtils.Common.populateParams(item, paramsRes);
97
+ }
98
+ static getNameKeys(typeName, singular) {
99
+ const keys = [];
100
+ if (typeof singular !== 'undefined') {
101
+ keys.push(singular ? `${typeName}.nameSingular` : `${typeName}.namePlural`);
60
102
  }
61
- if (action.model.titlePropertyName && item[action.model.titlePropertyName]) {
62
- i18nParameters.itemTitle = item[action.model.titlePropertyName];
103
+ keys.push(`${typeName}.name`);
104
+ return keys;
105
+ }
106
+ }
107
+ I18nUtils.Type = Type;
108
+ class Model {
109
+ static get(translate, model, keyPath, customKey, item, fallbackKey, params) {
110
+ const keys = I18nUtils.Model.getKeysByPriority(model, keyPath, customKey, fallbackKey);
111
+ const i18nParams = I18nUtils.Model.getParams(translate, model, item, params);
112
+ return I18nUtils.Common.get(translate, i18nParams, ...keys);
113
+ }
114
+ static getName(translate, model, singular) {
115
+ return I18nUtils.Type.getName(translate, model.typeName, singular);
116
+ }
117
+ static getNameAsync(translate, model, singular) {
118
+ return I18nUtils.Type.getNameAsync(translate, model.typeName, singular);
119
+ }
120
+ static getParams(translate, model, item, params = {}) {
121
+ const i18nParams = I18nUtils.Type.getParams(translate, model?.typeName, item, params);
122
+ return I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams);
123
+ }
124
+ static getParamsAsync(translate, model, item, params = {}) {
125
+ return I18nUtils.Type.getParamsAsync(translate, model?.typeName, item, params).pipe(map(i18nParams => I18nUtils.Model.populateParams(model?.idPropertyName, model?.titlePropertyName, item, i18nParams)));
126
+ }
127
+ static populateParams(idProperty, titleProperty, item, params = {}) {
128
+ const paramsRes = { ...params, itemId: '', itemTitle: '' };
129
+ if (item) {
130
+ if (idProperty && item[idProperty]) {
131
+ paramsRes.itemId = item[idProperty];
132
+ }
133
+ if (titleProperty && item[titleProperty]) {
134
+ paramsRes.itemTitle = item[titleProperty];
135
+ }
63
136
  }
137
+ return paramsRes;
64
138
  }
65
- return i18nParameters;
66
- }
67
- static instantErrorI18nTranslation(translate, error, i18nParameters = {}) {
68
- i18nParameters.errorStatus = '';
69
- i18nParameters.errorMessage = '';
70
- if (error.messageCode) {
71
- const params = I18nUtil.getErrorI18nParams(error);
72
- const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];
73
- const i18ns = translate.instant(keys, params);
74
- const i18n = I18nUtil.selectKeyByPriority(keys, i18ns);
75
- if (i18n) {
76
- return i18n;
139
+ static getKeysByPriority(model, keyPath, customKey, fallbackKey) {
140
+ const keys = [];
141
+ if (customKey) {
142
+ keys.push(customKey);
143
+ }
144
+ const modelActionKey = I18nUtils.Type.getPath(model.typeName, ...keyPath);
145
+ keys.push(modelActionKey);
146
+ if (fallbackKey) {
147
+ keys.push(fallbackKey);
77
148
  }
149
+ return keys;
78
150
  }
79
- return translate.instant(error.message);
80
151
  }
81
- static getErrorI18nParams(error, i18nParameters = {}) {
82
- i18nParameters.errorStatus = '';
83
- i18nParameters.errorMessage = '';
84
- if (error.status) {
85
- i18nParameters.errorStatus = error.status;
152
+ I18nUtils.Model = Model;
153
+ class Action {
154
+ static get(translate, action, actionPathKeys, customKey, item, fallbackKey, params) {
155
+ const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);
156
+ const i18nParams = I18nUtils.Action.getParams(translate, action, item, params);
157
+ return I18nUtils.Common.get(translate, i18nParams, ...keys);
86
158
  }
87
- if (error.message) {
88
- i18nParameters.errorMessage = error.message;
159
+ static getAsync(translate, action, actionPathKeys, customKey, item, fallbackKey, params) {
160
+ return I18nUtils.Action.getParamsAsync(translate, action, item, params).pipe(mergeMap(i18nParams => {
161
+ const keys = I18nUtils.Action.getKeysByPriority(action, actionPathKeys, customKey, fallbackKey);
162
+ return I18nUtils.Common.getAsync(translate, i18nParams, ...keys);
163
+ }));
89
164
  }
90
- if (error.statusDescription) {
91
- i18nParameters.errorStatusDescription = error.statusDescription;
165
+ static getTitleAsync(translate, action, item) {
166
+ return I18nUtils.Action.getAsync(translate, action, 'title', undefined, item);
92
167
  }
93
- return i18nParameters;
94
- }
95
- static instantModelName(translate, model, singular) {
96
- const keys = I18nUtil.getModelNameKeys(model, singular);
97
- const i18n = translate.instant(keys);
98
- return I18nUtil.selectKeyByPriority(keys, i18n);
99
- }
100
- static getModelName(translate, model, oneTime = true, singular) {
101
- const keys = I18nUtil.getModelNameKeys(model, singular);
102
- const obs = translate.stream(keys);
103
- if (oneTime) {
104
- obs.pipe(first());
168
+ static getEditorTitleAsync(translate, action, item) {
169
+ return I18nUtils.Action.getAsync(translate, action, ['editor.title', 'title'], action.editorTitle ?? undefined, item);
105
170
  }
106
- return obs.pipe(map(i18n => I18nUtil.selectKeyByPriority(keys, i18n)));
107
- }
108
- static getModelNameKeys(model, singular) {
109
- const keys = [];
110
- if (singular !== undefined) {
111
- keys.push(singular ? `${model?.typeName}.nameSingular` : `${model?.typeName}.namePlural`);
171
+ static getParams(translate, action, item, params = {}) {
172
+ const modelI18nParams = I18nUtils.Model.getParams(translate, action.model ?? undefined, item, params);
173
+ return I18nUtils.Action.populateParams(modelI18nParams);
112
174
  }
113
- keys.push(`${model?.typeName}.name`);
114
- return keys;
115
- }
116
- static getModelKeysByPriority(model, keyPath, customKey, fallbackKey) {
117
- const keys = [];
118
- if (customKey) {
119
- keys.push(customKey);
175
+ static getParamsAsync(translate, action, item, params = {}) {
176
+ let modelI18nParams;
177
+ return I18nUtils.Model.getParamsAsync(translate, action.model ?? undefined, item, params).pipe(map(i18nParams => I18nUtils.Action.populateParams(modelI18nParams)));
120
178
  }
121
- const modelActionKey = I18nUtil.getModelKeyPath(model, keyPath);
122
- keys.push(modelActionKey);
123
- if (fallbackKey) {
124
- keys.push(fallbackKey);
179
+ static populateParams(params = {}) {
180
+ params = { ...params };
181
+ return params;
125
182
  }
126
- return keys;
127
- }
128
- static getModelKeyPath(model, keyPath) {
129
- return `${model.typeName}.${keyPath}`;
130
- }
131
- static getActionKeysByPriority(action, keyPath, customKey, fallbackKey) {
132
- const keys = [];
133
- if (customKey) {
134
- keys.push(customKey);
135
- }
136
- const modelActionKey = `${action.i18nModelActionBaseKey}.${keyPath}`;
137
- const actionKey = `${action.actionName}.${keyPath}`;
138
- keys.push(modelActionKey, actionKey);
139
- if (fallbackKey) {
140
- keys.push(fallbackKey);
141
- }
142
- return keys;
143
- }
144
- static selectKeyByPriority(keys, i18n) {
145
- for (const key of keys) {
146
- if (key !== i18n[key]) {
147
- return i18n[key];
183
+ static getKeysByPriority(action, actionPathKeys, customKey, fallbackKey) {
184
+ const keys = [];
185
+ if (customKey) {
186
+ keys.push(customKey);
148
187
  }
149
- }
150
- return null;
151
- }
152
- static getFunctionTitle(translate, functionTitle) {
153
- if (functionTitle) {
154
- const translation = translate.instant(`mngAction.functions.${functionTitle}.title`);
155
- if (translation === functionTitle) {
156
- return null;
188
+ if (!Array.isArray(actionPathKeys)) {
189
+ actionPathKeys = [actionPathKeys];
157
190
  }
158
- return translation;
159
- }
160
- else {
161
- return null;
191
+ actionPathKeys.forEach(k => {
192
+ const modelActionKey = `${action.i18nModelActionBaseKey}.${k}`;
193
+ const actionKey = `${action.actionName}.${k}`;
194
+ keys.push(modelActionKey, actionKey);
195
+ });
196
+ if (fallbackKey) {
197
+ keys.push(fallbackKey);
198
+ }
199
+ return keys;
200
+ }
201
+ }
202
+ I18nUtils.Action = Action;
203
+ class Error {
204
+ static get(translate, error, params = {}) {
205
+ const i18nParams = I18nUtils.Error.getParams(error, params);
206
+ if (error.messageCode) {
207
+ const keys = [`errors.${error.messageCode}`, `messages.${error.messageCode}`];
208
+ const i18n = I18nUtils.Common.get(translate, i18nParams, ...keys);
209
+ if (i18n) {
210
+ return i18n;
211
+ }
212
+ }
213
+ return I18nUtils.Common.get(translate, i18nParams, error.message);
214
+ }
215
+ static getParams(error, params = {}) {
216
+ const paramsRes = { ...params };
217
+ paramsRes.errorStatus = '';
218
+ paramsRes.errorMessage = '';
219
+ if (error.status) {
220
+ paramsRes.errorStatus = error.status;
221
+ }
222
+ if (error.message) {
223
+ paramsRes.errorMessage = error.message;
224
+ }
225
+ if (error.statusDescription) {
226
+ paramsRes.errorStatusDescription = error.statusDescription;
227
+ }
228
+ paramsRes.error = error;
229
+ return paramsRes;
162
230
  }
163
231
  }
164
- }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFLcEQsTUFBTSxPQUFPLFFBQVE7SUFDVixNQUFNLENBQUMsdUJBQXVCLENBQ2pDLFNBQTJCLEVBQzNCLEtBQTJCLEVBQzNCLE9BQWUsRUFDZixTQUFrQixFQUNsQixJQUFVLEVBQ1YsV0FBb0IsRUFDcEIsVUFBZ0I7UUFFaEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsSUFBSSxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUN2SCxPQUFPLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBMkIsRUFBRSxHQUFXO1FBQ2pFLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBMkIsRUFBRSxLQUFhO1FBQ3JFLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxLQUFLLEVBQUUsQ0FB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LElBQUksV0FBVyxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsSUFBYyxFQUFFLElBQVM7UUFDeEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDcEIsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUEyQixFQUFFLGFBQXNCO1FBQy9FLElBQUksYUFBYSxFQUFFO1lBQ2YsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsYUFBYSxRQUFRLENBQUMsQ0FBQztZQUNwRixJQUFJLFdBQVcsS0FBSyxhQUFhLEVBQUU7Z0JBQy9CLE9BQU8sSUFBSSxDQUFDO2FBQ2Y7WUFDRCxPQUFPLFdBQVcsQ0FBQztTQUN0QjthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNMLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaXJzdCwgbWFwLCBtZXJnZU1hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtNbmdFcnJvcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuZXhwb3J0IGNsYXNzIEkxOG5VdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbnRNb2RlbFRyYW5zbGF0aW9uKFxuICAgICAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55PixcbiAgICAgICAga2V5UGF0aDogc3RyaW5nLFxuICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgIGl0ZW0/OiBhbnksXG4gICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLFxuICAgICAgICBpMThuUGFyYW1zPzogYW55XG4gICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRNb2RlbEtleXNCeVByaW9yaXR5KG1vZGVsLCBrZXlQYXRoLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgY29uc3QgaTE4bk1vZGVsTmFtZSA9IEkxOG5VdGlsLmluc3RhbnRNb2RlbE5hbWUodHJhbnNsYXRlLCBtb2RlbCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGkxOG4gPSB0cmFuc2xhdGUuaW5zdGFudChrZXlzLCBJMThuVXRpbC5nZXRNb2RlbEkxOG5QYXJhbXMobW9kZWwsIGl0ZW0sIGkxOG5Nb2RlbE5hbWUgPz8gdW5kZWZpbmVkLCBpMThuUGFyYW1zKSk7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5zZWxlY3RLZXlCeVByaW9yaXR5KGtleXMsIGkxOG4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxUYWJLZXkobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCB0YWI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRNb2RlbEtleVBhdGgobW9kZWwsIGB0YWJzLiR7dGFifWApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0TW9kZWxHcm91cEtleShtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gSTE4blV0aWwuZ2V0TW9kZWxLZXlQYXRoKG1vZGVsLCBgZ3JvdXBzLiR7Z3JvdXB9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRNb2RlbFByb3BlcnR5S2V5KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55PiwgcHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBJMThuVXRpbC5nZXRNb2RlbEtleVBhdGgobW9kZWwsIGBwcm9wZXJ0aWVzLiR7cHJvcGVydHl9YCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW50QWN0aW9uVHJhbnNsYXRpb24oXG4gICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sXG4gICAgICAgIGtleVBhdGg6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tS2V5Pzogc3RyaW5nLFxuICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICBmYWxsYmFja0tleT86IHN0cmluZyxcbiAgICAgICAgZnVuY3Rpb25OYW1lS2V5Pzogc3RyaW5nLFxuICAgICAgICBpMThuUGFyYW1zPzogYW55XG4gICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbC5nZXRBY3Rpb25LZXlzQnlQcmlvcml0eShhY3Rpb24sIGtleVBhdGgsIGN1c3RvbUtleSwgZmFsbGJhY2tLZXkpO1xuICAgICAgICBjb25zdCBpMThuTW9kZWxOYW1lID0gSTE4blV0aWwuaW5zdGFudE1vZGVsTmFtZSh0cmFuc2xhdGUsIGFjdGlvbj8ubW9kZWwsIHRydWUpO1xuICAgICAgICBjb25zdCBpMThuRnVuY3Rpb25UaXRsZSA9IEkxOG5VdGlsLmdldEZ1bmN0aW9uVGl0bGUodHJhbnNsYXRlLCBmdW5jdGlvbk5hbWVLZXkpO1xuICAgICAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgSTE4blV0aWwuZ2V0QWN0aW9uSTE4blBhcmFtcyhhY3Rpb24sIGl0ZW0sIGkxOG5Nb2RlbE5hbWUgPz8gdW5kZWZpbmVkLCBpMThuUGFyYW1zLCBpMThuRnVuY3Rpb25UaXRsZSkpO1xuICAgICAgICByZXR1cm4gSTE4blV0aWwuc2VsZWN0S2V5QnlQcmlvcml0eShrZXlzLCBpMThuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHN0cmVhbUFjdGlvblRyYW5zbGF0aW9uKFxuICAgICAgICB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBrZXlQYXRoOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUtleT86IHN0cmluZyxcbiAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgZmFsbGJhY2tLZXk/OiBzdHJpbmdcbiAgICApOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLmdldEFjdGlvblRyYW5zbGF0aW9uKHRyYW5zbGF0ZSwgYWN0aW9uLCBrZXlQYXRoLCBjdXN0b21LZXksIGl0ZW0sIGZhbGxiYWNrS2V5LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3Rpb25UcmFuc2xhdGlvbihcbiAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PixcbiAgICAgICAga2V5UGF0aDogc3RyaW5nLFxuICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgIGl0ZW0/OiBhbnksXG4gICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLFxuICAgICAgICBvbmVUaW1lID0gdHJ1ZVxuICAgICk6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uLCBrZXlQYXRoLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgcmV0dXJuIEkxOG5VdGlsLmdldE1vZGVsTmFtZSh0cmFuc2xhdGUsIGFjdGlvbj8ubW9kZWwsIG9uZVRpbWUsIHRydWUpLnBpcGUoXG4gICAgICAgICAgICBtZXJnZU1hcChpMThuTW9kZWxOYW1lID0+IHRyYW5zbGF0ZS5nZXQoa2V5cywgSTE4blV0aWwuZ2V0QWN0aW9uSTE4blBhcmFtcyhhY3Rpb24sIGl0ZW0sIGkxOG5Nb2RlbE5hbWUgPz8gdW5kZWZpbmVkKSkpLFxuICAgICAgICAgICAgbWFwKGkxOG4gPT4gSTE4blV0aWwuc2VsZWN0S2V5QnlQcmlvcml0eShrZXlzLCBpMThuKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsSTE4blBhcmFtcyhtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGl0ZW06IGFueSwgaTE4bk1vZGVsTmFtZT86IHN0cmluZywgaTE4blBhcmFtZXRlcnM6IGFueSA9IHt9KSB7XG4gICAgICAgIGkxOG5QYXJhbWV0ZXJzLml0ZW1JZCA9ICcnO1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSAnJztcblxuICAgICAgICBpZiAoaTE4bk1vZGVsTmFtZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMubW9kZWxOYW1lID0gaTE4bk1vZGVsTmFtZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgaWYgKG1vZGVsLmlkUHJvcGVydHlOYW1lICYmIGl0ZW1bbW9kZWwuaWRQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbUlkID0gaXRlbVttb2RlbC5pZFByb3BlcnR5TmFtZV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUgJiYgaXRlbVttb2RlbC50aXRsZVByb3BlcnR5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtVGl0bGUgPSBpdGVtW21vZGVsLnRpdGxlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRBY3Rpb25JMThuUGFyYW1zKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtOiBhbnksIGkxOG5Nb2RlbE5hbWU/OiBzdHJpbmcsIGkxOG5QYXJhbWV0ZXJzOiBhbnkgPSB7fSwgZnVuY3Rpb25UaXRsZT86IHN0cmluZykge1xuICAgICAgICBpMThuUGFyYW1ldGVycy5pdGVtSWQgPSAnJztcbiAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbVRpdGxlID0gJyc7XG5cbiAgICAgICAgaWYgKGZ1bmN0aW9uVGl0bGUpIHtcbiAgICAgICAgICAgIGkxOG5QYXJhbWV0ZXJzLmZ1bmN0aW9uVGl0bGUgPSBmdW5jdGlvblRpdGxlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpMThuTW9kZWxOYW1lKSB7XG4gICAgICAgICAgICBpMThuUGFyYW1ldGVycy5tb2RlbE5hbWUgPSBpMThuTW9kZWxOYW1lO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uLm1vZGVsLmlkUHJvcGVydHlOYW1lICYmIGl0ZW1bYWN0aW9uLm1vZGVsLmlkUHJvcGVydHlOYW1lXSkge1xuICAgICAgICAgICAgICAgIGkxOG5QYXJhbWV0ZXJzLml0ZW1JZCA9IGl0ZW1bYWN0aW9uLm1vZGVsLmlkUHJvcGVydHlOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChhY3Rpb24ubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWUgJiYgaXRlbVthY3Rpb24ubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWVdKSB7XG4gICAgICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMuaXRlbVRpdGxlID0gaXRlbVthY3Rpb24ubW9kZWwudGl0bGVQcm9wZXJ0eU5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpMThuUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc3RhbnRFcnJvckkxOG5UcmFuc2xhdGlvbih0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGVycm9yOiBNbmdFcnJvciwgaTE4blBhcmFtZXRlcnM6IGFueSA9IHt9KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGkxOG5QYXJhbWV0ZXJzLmVycm9yU3RhdHVzID0gJyc7XG4gICAgICAgIGkxOG5QYXJhbWV0ZXJzLmVycm9yTWVzc2FnZSA9ICcnO1xuXG4gICAgICAgIGlmIChlcnJvci5tZXNzYWdlQ29kZSkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gSTE4blV0aWwuZ2V0RXJyb3JJMThuUGFyYW1zKGVycm9yKTtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbYGVycm9ycy4ke2Vycm9yLm1lc3NhZ2VDb2RlfWAsIGBtZXNzYWdlcy4ke2Vycm9yLm1lc3NhZ2VDb2RlfWBdO1xuICAgICAgICAgICAgY29uc3QgaTE4bnMgPSB0cmFuc2xhdGUuaW5zdGFudChrZXlzLCBwYXJhbXMpO1xuICAgICAgICAgICAgY29uc3QgaTE4biA9IEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bnMpO1xuICAgICAgICAgICAgaWYgKGkxOG4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTE4bjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGUuaW5zdGFudChlcnJvci5tZXNzYWdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEVycm9ySTE4blBhcmFtcyhlcnJvcjogTW5nRXJyb3IsIGkxOG5QYXJhbWV0ZXJzOiBhbnkgPSB7fSkge1xuICAgICAgICBpMThuUGFyYW1ldGVycy5lcnJvclN0YXR1cyA9ICcnO1xuICAgICAgICBpMThuUGFyYW1ldGVycy5lcnJvck1lc3NhZ2UgPSAnJztcblxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzKSB7XG4gICAgICAgICAgICBpMThuUGFyYW1ldGVycy5lcnJvclN0YXR1cyA9IGVycm9yLnN0YXR1cztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgaTE4blBhcmFtZXRlcnMuZXJyb3JNZXNzYWdlID0gZXJyb3IubWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3Iuc3RhdHVzRGVzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIGkxOG5QYXJhbWV0ZXJzLmVycm9yU3RhdHVzRGVzY3JpcHRpb24gPSBlcnJvci5zdGF0dXNEZXNjcmlwdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaTE4blBhcmFtZXRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpbnN0YW50TW9kZWxOYW1lKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlsLmdldE1vZGVsTmFtZUtleXMobW9kZWwsIHNpbmd1bGFyKTtcbiAgICAgICAgY29uc3QgaTE4biA9IHRyYW5zbGF0ZS5pbnN0YW50KGtleXMpO1xuICAgICAgICByZXR1cm4gSTE4blV0aWwuc2VsZWN0S2V5QnlQcmlvcml0eShrZXlzLCBpMThuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsTmFtZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwgb25lVGltZSA9IHRydWUsIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWwuZ2V0TW9kZWxOYW1lS2V5cyhtb2RlbCwgc2luZ3VsYXIpO1xuICAgICAgICBjb25zdCBvYnMgPSB0cmFuc2xhdGUuc3RyZWFtKGtleXMpO1xuICAgICAgICBpZiAob25lVGltZSkge1xuICAgICAgICAgICAgb2JzLnBpcGUoZmlyc3QoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9icy5waXBlKG1hcChpMThuID0+IEkxOG5VdGlsLnNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5cywgaTE4bikpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE1vZGVsTmFtZUtleXMobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICBpZiAoc2luZ3VsYXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAga2V5cy5wdXNoKHNpbmd1bGFyID8gYCR7bW9kZWw/LnR5cGVOYW1lfS5uYW1lU2luZ3VsYXJgIDogYCR7bW9kZWw/LnR5cGVOYW1lfS5uYW1lUGx1cmFsYCk7XG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKGAke21vZGVsPy50eXBlTmFtZX0ubmFtZWApO1xuICAgICAgICByZXR1cm4ga2V5cztcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXRpYyBnZXRNb2RlbEtleXNCeVByaW9yaXR5KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwga2V5UGF0aDogc3RyaW5nLCBjdXN0b21LZXk/OiBzdHJpbmcsIGZhbGxiYWNrS2V5Pzogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgaWYgKGN1c3RvbUtleSkge1xuICAgICAgICAgICAga2V5cy5wdXNoKGN1c3RvbUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbW9kZWxBY3Rpb25LZXkgPSBJMThuVXRpbC5nZXRNb2RlbEtleVBhdGgobW9kZWwsIGtleVBhdGgpO1xuICAgICAgICBrZXlzLnB1c2gobW9kZWxBY3Rpb25LZXkpO1xuICAgICAgICBpZiAoZmFsbGJhY2tLZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChmYWxsYmFja0tleSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0TW9kZWxLZXlQYXRoKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwga2V5UGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiBgJHttb2RlbC50eXBlTmFtZX0uJHtrZXlQYXRofWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0QWN0aW9uS2V5c0J5UHJpb3JpdHkoYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPGFueT4sIGtleVBhdGg6IHN0cmluZywgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgIGlmIChjdXN0b21LZXkpIHtcbiAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG1vZGVsQWN0aW9uS2V5ID0gYCR7YWN0aW9uLmkxOG5Nb2RlbEFjdGlvbkJhc2VLZXl9LiR7a2V5UGF0aH1gO1xuICAgICAgICBjb25zdCBhY3Rpb25LZXkgPSBgJHthY3Rpb24uYWN0aW9uTmFtZX0uJHtrZXlQYXRofWA7XG4gICAgICAgIGtleXMucHVzaChtb2RlbEFjdGlvbktleSwgYWN0aW9uS2V5KTtcbiAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICBrZXlzLnB1c2goZmFsbGJhY2tLZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBrZXlzO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIHNlbGVjdEtleUJ5UHJpb3JpdHkoa2V5czogc3RyaW5nW10sIGkxOG46IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICAgICAgICBpZiAoa2V5ICE9PSBpMThuW2tleV0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaTE4bltrZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGdldEZ1bmN0aW9uVGl0bGUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBmdW5jdGlvblRpdGxlPzogc3RyaW5nKSB7XG4gICAgICAgIGlmIChmdW5jdGlvblRpdGxlKSB7XG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0ZS5pbnN0YW50KGBtbmdBY3Rpb24uZnVuY3Rpb25zLiR7ZnVuY3Rpb25UaXRsZX0udGl0bGVgKTtcbiAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbiA9PT0gZnVuY3Rpb25UaXRsZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
232
+ I18nUtils.Error = Error;
233
+ })(I18nUtils || (I18nUtils = {}));
234
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi91dGlscy9pMThuLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFhLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBSzdDLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFckMsTUFBTSxLQUFXLFNBQVMsQ0FvU3pCO0FBcFNELFdBQWlCLFNBQVM7SUFDdEIsTUFBYSxNQUFNO1FBQ1IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUEyQixFQUFFLE1BQVksRUFBRSxHQUFHLElBQW1CO1lBQ3BGLE9BQU8sU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsQ0FBQztRQUVNLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBMkIsRUFBRSxNQUFZLEVBQUUsR0FBRyxJQUFtQjtZQUMvRSxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3QyxPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFVLEVBQUUsU0FBYyxFQUFFO1lBQ3JELE1BQU0sU0FBUyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztZQUM5QixJQUFJLElBQUksRUFBRTtnQkFDTixTQUFTLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzth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RUFBRTtvQkFDTixPQUFPLElBQUksQ0FBQztpQkFDZjthQUNKO1lBQ0QsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RSxDQUFDO1FBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFlLEVBQUUsU0FBYyxFQUFFO1lBQ3JELE1BQU0sU0FBUyxHQUFHLEVBQUMsR0FBRyxNQUFNLEVBQUMsQ0FBQztZQUM5QixTQUFTLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztZQUMzQixTQUFTLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztZQUU1QixJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7Z0JBQ2QsU0FBUyxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO2FBQ3hDO1lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO2dCQUNmLFNBQVMsQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUMxQztZQUNELElBQUksS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUN6QixTQUFTLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO2FBQzlEO1lBQ0QsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDeEIsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztLQUNKO0lBOUJZLGVBQUssUUE4QmpCLENBQUE7QUFDTCxDQUFDLEVBcFNnQixTQUFTLEtBQVQsU0FBUyxRQW9TekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcCwgbWVyZ2VNYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7TW5nRXJyb3J9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtUeXBlVXRpbH0gZnJvbSAnLi90eXBlLnV0aWwnO1xuXG5leHBvcnQgbmFtZXNwYWNlIEkxOG5VdGlscyB7XG4gICAgZXhwb3J0IGNsYXNzIENvbW1vbiB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwYXJhbXM/OiBhbnksIC4uLmtleXM6IEFycmF5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGUuc3RyZWFtKGtleXMsIHBhcmFtcykucGlwZShtYXAoaTE4biA9PiBJMThuVXRpbHMuQ29tbW9uLnNlbGVjdEkxOG4oa2V5cywgaTE4bikpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgcGFyYW1zPzogYW55LCAuLi5rZXlzOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBpMThuID0gdHJhbnNsYXRlLmluc3RhbnQoa2V5cywgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLnNlbGVjdEkxOG4oa2V5cywgaTE4bik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIHBvcHVsYXRlUGFyYW1zKGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNSZXMuaXRlbSA9IGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zUmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBzZWxlY3RJMThuKGtleXM6IHN0cmluZ1tdLCBpMThuOiBhbnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBpMThuW2tleV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkxOG5ba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBUeXBlIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc05hbWVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXROYW1lQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSwgc2luZ3VsYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc05hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBzaW5ndWxhcj86IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gVHlwZVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZSh0cmFuc2xhdGUsIHR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldE5hbWVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHR5cGVOYW1lOiBzdHJpbmcsIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5UeXBlLmdldE5hbWVLZXlzKHR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkNvbW1vbi5nZXRBc3luYyh0cmFuc2xhdGUsIHVuZGVmaW5lZCwgLi4ua2V5cyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldE5hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZTogc3RyaW5nLCBzaW5ndWxhcj86IGJvb2xlYW4pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBJMThuVXRpbHMuVHlwZS5nZXROYW1lS2V5cyh0eXBlTmFtZSwgc2luZ3VsYXIpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgdW5kZWZpbmVkLCAuLi5rZXlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NUYWJLZXkoY2xhc3NUeXBlOiBDbGFzc1R5cGU8YW55PiwgdGFiOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRUYWJLZXkodHlwZU5hbWUsIHRhYik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFRhYktleSh0eXBlTmFtZTogc3RyaW5nLCB0YWI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGF0aCh0eXBlTmFtZSwgJ3RhYnMnLCB0YWIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc0dyb3VwS2V5KGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGdyb3VwOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRHcm91cEtleSh0eXBlTmFtZSwgZ3JvdXApO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRHcm91cEtleSh0eXBlTmFtZTogc3RyaW5nLCBncm91cDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXRoKHR5cGVOYW1lLCAnZ3JvdXBzJywgZ3JvdXApO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1Byb3BlcnR5S2V5KGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQcm9wZXJ0eUtleSh0eXBlTmFtZSwgcHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eUtleSh0eXBlTmFtZTogc3RyaW5nLCBwcm9wZXJ0eTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXRoKHR5cGVOYW1lLCAncHJvcGVydGllcycsIHByb3BlcnR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q2xhc3NQYXRoKGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIC4uLnBhdGg6IEFycmF5PHN0cmluZz4pOiBzdHJpbmcge1xuICAgICAgICAgICAgY29uc3QgdHlwZU5hbWUgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoY2xhc3NUeXBlKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuVHlwZS5nZXRQYXRoKHR5cGVOYW1lLCAuLi5wYXRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGF0aCh0eXBlTmFtZTogc3RyaW5nLCAuLi5wYXRoOiBBcnJheTxzdHJpbmc+KTogc3RyaW5nIHtcbiAgICAgICAgICAgIHJldHVybiBgJHt0eXBlTmFtZX0uJHtwYXRoLmpvaW4oJy4nKX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRDbGFzc1BhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGNsYXNzVHlwZTogQ2xhc3NUeXBlPGFueT4sIGl0ZW06IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShjbGFzc1R5cGUpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhcmFtcyh0cmFuc2xhdGUsIHR5cGVOYW1lLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZT86IHN0cmluZywgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IGFueSB7XG4gICAgICAgICAgICBjb25zdCBpMThuVHlwZU5hbWUgPSB0eXBlTmFtZSA/IEkxOG5VdGlscy5UeXBlLmdldE5hbWUodHJhbnNsYXRlLCB0eXBlTmFtZSwgdHJ1ZSkgOiBudWxsO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLnBvcHVsYXRlUGFyYW1zKGkxOG5UeXBlTmFtZSA/PyB1bmRlZmluZWQsIGl0ZW0sIHBhcmFtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldENsYXNzUGFyYW1zQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBjbGFzc1R5cGU6IENsYXNzVHlwZTxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gVHlwZVV0aWwuZmluZFR5cGVOYW1lKGNsYXNzVHlwZSk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLlR5cGUuZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlLCB0eXBlTmFtZSwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0eXBlTmFtZT86IHN0cmluZywgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgICByZXR1cm4gKHR5cGVOYW1lID8gSTE4blV0aWxzLlR5cGUuZ2V0TmFtZUFzeW5jKHRyYW5zbGF0ZSwgdHlwZU5hbWUsIHRydWUpIDogb2YobnVsbCkpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGkxOG5UeXBlTmFtZSA9PiBJMThuVXRpbHMuVHlwZS5wb3B1bGF0ZVBhcmFtcyhpMThuVHlwZU5hbWUgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcG9wdWxhdGVQYXJhbXMoaTE4blR5cGVOYW1lPzogc3RyaW5nLCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgaWYgKGkxOG5UeXBlTmFtZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1Jlcy50eXBlTmFtZSA9IGkxOG5UeXBlTmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLnBvcHVsYXRlUGFyYW1zKGl0ZW0sIHBhcmFtc1Jlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIHN0YXRpYyBnZXROYW1lS2V5cyh0eXBlTmFtZTogc3RyaW5nLCBzaW5ndWxhcj86IGJvb2xlYW4pOiBBcnJheTxzdHJpbmc+IHtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBbXTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2luZ3VsYXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKHNpbmd1bGFyID8gYCR7dHlwZU5hbWV9Lm5hbWVTaW5ndWxhcmAgOiBgJHt0eXBlTmFtZX0ubmFtZVBsdXJhbGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAga2V5cy5wdXNoKGAke3R5cGVOYW1lfS5uYW1lYCk7XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBNb2RlbCB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0KFxuICAgICAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICAgICAgbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICAgICAga2V5UGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgY3VzdG9tS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgICAgIGZhbGxiYWNrS2V5Pzogc3RyaW5nLFxuICAgICAgICAgICAgcGFyYW1zPzogYW55XG4gICAgICAgICk6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IEkxOG5VdGlscy5Nb2RlbC5nZXRLZXlzQnlQcmlvcml0eShtb2RlbCwga2V5UGF0aCwgY3VzdG9tS2V5LCBmYWxsYmFja0tleSk7XG4gICAgICAgICAgICBjb25zdCBpMThuUGFyYW1zID0gSTE4blV0aWxzLk1vZGVsLmdldFBhcmFtcyh0cmFuc2xhdGUsIG1vZGVsLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldE5hbWUodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IHN0cmluZyB8IG51bGwge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldE5hbWUodHJhbnNsYXRlLCBtb2RlbC50eXBlTmFtZSwgc2luZ3VsYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXROYW1lQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4sIHNpbmd1bGFyPzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldE5hbWVBc3luYyh0cmFuc2xhdGUsIG1vZGVsLnR5cGVOYW1lLCBzaW5ndWxhcik7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgaTE4blBhcmFtcyA9IEkxOG5VdGlscy5UeXBlLmdldFBhcmFtcyh0cmFuc2xhdGUsIG1vZGVsPy50eXBlTmFtZSwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuTW9kZWwucG9wdWxhdGVQYXJhbXMobW9kZWw/LmlkUHJvcGVydHlOYW1lLCBtb2RlbD8udGl0bGVQcm9wZXJ0eU5hbWUsIGl0ZW0sIGkxOG5QYXJhbXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRQYXJhbXNBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPGFueT4sIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5UeXBlLmdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgbW9kZWw/LnR5cGVOYW1lLCBpdGVtLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKGkxOG5QYXJhbXMgPT4gSTE4blV0aWxzLk1vZGVsLnBvcHVsYXRlUGFyYW1zKG1vZGVsPy5pZFByb3BlcnR5TmFtZSwgbW9kZWw/LnRpdGxlUHJvcGVydHlOYW1lLCBpdGVtLCBpMThuUGFyYW1zKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIHBvcHVsYXRlUGFyYW1zKGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIGl0ZW0/OiBhbnksIHBhcmFtczogYW55ID0ge30pOiBhbnkge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zUmVzID0gey4uLnBhcmFtcywgaXRlbUlkOiAnJywgaXRlbVRpdGxlOiAnJ307XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpZFByb3BlcnR5ICYmIGl0ZW1baWRQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zUmVzLml0ZW1JZCA9IGl0ZW1baWRQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0aXRsZVByb3BlcnR5ICYmIGl0ZW1bdGl0bGVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zUmVzLml0ZW1UaXRsZSA9IGl0ZW1bdGl0bGVQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhcmFtc1JlcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldEtleXNCeVByaW9yaXR5KG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8YW55Piwga2V5UGF0aDogc3RyaW5nLCBjdXN0b21LZXk/OiBzdHJpbmcsIGZhbGxiYWNrS2V5Pzogc3RyaW5nKSB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gW107XG4gICAgICAgICAgICBpZiAoY3VzdG9tS2V5KSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGN1c3RvbUtleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBtb2RlbEFjdGlvbktleSA9IEkxOG5VdGlscy5UeXBlLmdldFBhdGgobW9kZWwudHlwZU5hbWUsIC4uLmtleVBhdGgpO1xuICAgICAgICAgICAga2V5cy5wdXNoKG1vZGVsQWN0aW9uS2V5KTtcbiAgICAgICAgICAgIGlmIChmYWxsYmFja0tleSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChmYWxsYmFja0tleSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ga2V5cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBBY3Rpb24ge1xuICAgICAgICBwdWJsaWMgc3RhdGljIGdldChcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICAgICAgYWN0aW9uUGF0aEtleXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBwYXJhbXM/OiBhbnlcbiAgICAgICAgKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLkFjdGlvbi5nZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGFjdGlvblBhdGhLZXlzLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5QYXJhbXMgPSBJMThuVXRpbHMuQWN0aW9uLmdldFBhcmFtcyh0cmFuc2xhdGUsIGFjdGlvbiwgaXRlbSwgcGFyYW1zKTtcbiAgICAgICAgICAgIHJldHVybiBJMThuVXRpbHMuQ29tbW9uLmdldCh0cmFuc2xhdGUsIGkxOG5QYXJhbXMsIC4uLmtleXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXRBc3luYyhcbiAgICAgICAgICAgIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICAgICAgYWN0aW9uUGF0aEtleXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXG4gICAgICAgICAgICBjdXN0b21LZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBpdGVtPzogYW55LFxuICAgICAgICAgICAgZmFsbGJhY2tLZXk/OiBzdHJpbmcsXG4gICAgICAgICAgICBwYXJhbXM/OiBhbnlcbiAgICAgICAgKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkFjdGlvbi5nZXRQYXJhbXNBc3luYyh0cmFuc2xhdGUsIGFjdGlvbiwgaXRlbSwgcGFyYW1zKS5waXBlKFxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGkxOG5QYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXlzID0gSTE4blV0aWxzLkFjdGlvbi5nZXRLZXlzQnlQcmlvcml0eShhY3Rpb24sIGFjdGlvblBhdGhLZXlzLCBjdXN0b21LZXksIGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0QXN5bmModHJhbnNsYXRlLCBpMThuUGFyYW1zLCAuLi5rZXlzKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGl0bGVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkFjdGlvbi5nZXRBc3luYyh0cmFuc2xhdGUsIGFjdGlvbiwgJ3RpdGxlJywgdW5kZWZpbmVkLCBpdGVtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0RWRpdG9yVGl0bGVBc3luYyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55KTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLkFjdGlvbi5nZXRBc3luYyh0cmFuc2xhdGUsIGFjdGlvbiwgWydlZGl0b3IudGl0bGUnLCAndGl0bGUnXSwgYWN0aW9uLmVkaXRvclRpdGxlID8/IHVuZGVmaW5lZCwgaXRlbSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBpdGVtPzogYW55LCBwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIGNvbnN0IG1vZGVsSTE4blBhcmFtcyA9IEkxOG5VdGlscy5Nb2RlbC5nZXRQYXJhbXModHJhbnNsYXRlLCBhY3Rpb24ubW9kZWwgPz8gdW5kZWZpbmVkLCBpdGVtLCBwYXJhbXMpO1xuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5BY3Rpb24ucG9wdWxhdGVQYXJhbXMobW9kZWxJMThuUGFyYW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgZ2V0UGFyYW1zQXN5bmModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PiwgaXRlbT86IGFueSwgcGFyYW1zOiBhbnkgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgICBsZXQgbW9kZWxJMThuUGFyYW1zOiBhbnk7XG4gICAgICAgICAgICByZXR1cm4gSTE4blV0aWxzLk1vZGVsLmdldFBhcmFtc0FzeW5jKHRyYW5zbGF0ZSwgYWN0aW9uLm1vZGVsID8/IHVuZGVmaW5lZCwgaXRlbSwgcGFyYW1zKS5waXBlKG1hcChpMThuUGFyYW1zID0+IEkxOG5VdGlscy5BY3Rpb24ucG9wdWxhdGVQYXJhbXMobW9kZWxJMThuUGFyYW1zKSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBwb3B1bGF0ZVBhcmFtcyhwYXJhbXM6IGFueSA9IHt9KTogYW55IHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtcztcbiAgICAgICAgfVxuXG4gICAgICAgIHByaXZhdGUgc3RhdGljIGdldEtleXNCeVByaW9yaXR5KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LCBhY3Rpb25QYXRoS2V5czogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiwgY3VzdG9tS2V5Pzogc3RyaW5nLCBmYWxsYmFja0tleT86IHN0cmluZykge1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtdO1xuICAgICAgICAgICAgaWYgKGN1c3RvbUtleSkge1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChjdXN0b21LZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFjdGlvblBhdGhLZXlzKSkge1xuICAgICAgICAgICAgICAgIGFjdGlvblBhdGhLZXlzID0gW2FjdGlvblBhdGhLZXlzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGlvblBhdGhLZXlzLmZvckVhY2goayA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgbW9kZWxBY3Rpb25LZXkgPSBgJHthY3Rpb24uaTE4bk1vZGVsQWN0aW9uQmFzZUtleX0uJHtrfWA7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uS2V5ID0gYCR7YWN0aW9uLmFjdGlvbk5hbWV9LiR7a31gO1xuICAgICAgICAgICAgICAgIGtleXMucHVzaChtb2RlbEFjdGlvbktleSwgYWN0aW9uS2V5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGZhbGxiYWNrS2V5KSB7XG4gICAgICAgICAgICAgICAga2V5cy5wdXNoKGZhbGxiYWNrS2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXhwb3J0IGNsYXNzIEVycm9yIHtcbiAgICAgICAgcHVibGljIHN0YXRpYyBnZXQodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBlcnJvcjogTW5nRXJyb3IsIHBhcmFtczogYW55ID0ge30pOiBzdHJpbmcgfCBudWxsIHtcbiAgICAgICAgICAgIGNvbnN0IGkxOG5QYXJhbXMgPSBJMThuVXRpbHMuRXJyb3IuZ2V0UGFyYW1zKGVycm9yLCBwYXJhbXMpO1xuICAgICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2VDb2RlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5cyA9IFtgZXJyb3JzLiR7ZXJyb3IubWVzc2FnZUNvZGV9YCwgYG1lc3NhZ2VzLiR7ZXJyb3IubWVzc2FnZUNvZGV9YF07XG4gICAgICAgICAgICAgICAgY29uc3QgaTE4biA9IEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgLi4ua2V5cyk7XG4gICAgICAgICAgICAgICAgaWYgKGkxOG4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkxOG47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIEkxOG5VdGlscy5Db21tb24uZ2V0KHRyYW5zbGF0ZSwgaTE4blBhcmFtcywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIGdldFBhcmFtcyhlcnJvcjogTW5nRXJyb3IsIHBhcmFtczogYW55ID0ge30pIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtc1JlcyA9IHsuLi5wYXJhbXN9O1xuICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzID0gJyc7XG4gICAgICAgICAgICBwYXJhbXNSZXMuZXJyb3JNZXNzYWdlID0gJyc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNSZXMuZXJyb3JTdGF0dXMgPSBlcnJvci5zdGF0dXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvck1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yLnN0YXR1c0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zUmVzLmVycm9yU3RhdHVzRGVzY3JpcHRpb24gPSBlcnJvci5zdGF0dXNEZXNjcmlwdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFtc1Jlcy5lcnJvciA9IGVycm9yO1xuICAgICAgICAgICAgcmV0dXJuIHBhcmFtc1JlcztcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -1,4 +1,4 @@
1
- import { I18nUtil } from './i18n.util';
1
+ import { I18nUtils } from './i18n.util';
2
2
  export class NotificationUtil {
3
3
  static notification(viewContainer, title, message, severity = 'success') {
4
4
  const messageService = viewContainer?.getMessageService();
@@ -11,7 +11,7 @@ export class NotificationUtil {
11
11
  }
12
12
  return notification;
13
13
  }
14
- static tableNotificationError(translationService, table, error, viewContainer) {
14
+ static tableNotificationError(translate, table, error, viewContainer) {
15
15
  const params = {};
16
16
  if (error?.message) {
17
17
  params.errorMessage = `: ${error.message}`;
@@ -19,29 +19,28 @@ export class NotificationUtil {
19
19
  else {
20
20
  params.errorMessage = '.';
21
21
  }
22
- console.log(params);
23
- const tableErrorTitle = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;
24
- const tableErrorMessage = I18nUtil.instantModelTranslation(translationService, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;
22
+ const tableErrorTitle = I18nUtils.Model.get(translate, table.model, 'table.error.title', undefined, undefined, 'general.error', params) ?? undefined;
23
+ const tableErrorMessage = I18nUtils.Model.get(translate, table.model, 'table.error.message', undefined, undefined, 'general.errorMessage', params) ?? undefined;
25
24
  return NotificationUtil.notification(viewContainer, tableErrorTitle, tableErrorMessage, 'error');
26
25
  }
27
- static actionNotificationSuccess(translationService, action, functionName, customTitleKey, customMessageKey, viewContainer, item) {
28
- const actionSuccessTitle = I18nUtil.instantActionTranslation(translationService, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;
29
- const actionSuccessMessage = I18nUtil.instantActionTranslation(translationService, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;
26
+ static actionNotificationSuccess(translate, action, functionName, customTitleKey, customMessageKey, viewContainer, item) {
27
+ const actionSuccessTitle = I18nUtils.Action.get(translate, action, 'success.title', customTitleKey, item, 'general.success', functionName) ?? undefined;
28
+ const actionSuccessMessage = I18nUtils.Action.get(translate, action, 'success.message', customMessageKey, item, 'general.successMessage', functionName) ?? undefined;
30
29
  return NotificationUtil.notification(viewContainer, actionSuccessTitle, actionSuccessMessage);
31
30
  }
32
- static actionNotificationError(translationService, action, error, functionName, viewContainer, item) {
31
+ static actionNotificationError(translate, action, error, functionName, viewContainer, item, severity = 'error') {
33
32
  const params = {
34
- errorMessage: I18nUtil.instantErrorI18nTranslation(translationService, error)
33
+ errorMessage: I18nUtils.Error.get(translate, error) ?? error.message
35
34
  };
36
- const actionErrorTitle = I18nUtil.instantActionTranslation(translationService, action, 'error.title', action.runNotificationErrorTitle, item, 'general.error', functionName, params) ??
35
+ const actionErrorTitle = I18nUtils.Action.get(translate, action, [`error.${functionName}.title`, 'error.title'], action.runNotificationErrorTitle, item, 'general.error', params) ?? undefined;
36
+ const actionErrorMessage = I18nUtils.Action.get(translate, action, [`error.${functionName}.message`, 'error.message'], action.runNotificationErrorMessage, item, 'general.errorMessage', params) ??
37
37
  undefined;
38
- const actionErrorMessage = I18nUtil.instantActionTranslation(translationService, action, 'error.message', action.runNotificationErrorMessage, item, 'general.errorMessage', functionName, params) ?? undefined;
39
- return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, 'error');
38
+ return NotificationUtil.notification(viewContainer, actionErrorTitle, actionErrorMessage, severity);
40
39
  }
41
- static getFormEditorWarningMessage(translationService, title, message) {
42
- const actionErrorTitle = translationService.instant(title) ?? undefined;
43
- const actionErrorMessage = translationService.instant(message) ?? undefined;
40
+ static getFormEditorWarningMessage(translate, title, message) {
41
+ const actionErrorTitle = translate.instant(title) ?? undefined;
42
+ const actionErrorMessage = translate.instant(message) ?? undefined;
44
43
  return { severity: 'warn', summary: actionErrorTitle, detail: actionErrorMessage };
45
44
  }
46
45
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFckMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsWUFBWSxDQUFDLGFBQXdDLEVBQUUsS0FBYyxFQUFFLE9BQWdCLEVBQUUsV0FBeUMsU0FBUztRQUNySixNQUFNLGNBQWMsR0FBRyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFlBQVksR0FBWSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDO1FBQy9ILElBQUksY0FBYyxFQUFFO1lBQ2hCLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUMxRztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsa0JBQW9DLEVBQUUsS0FBMkIsRUFBRSxLQUFVLEVBQUUsYUFBd0M7UUFDeEosTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUNoQixNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQzlDO2FBQU07WUFDSCxNQUFNLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQztTQUM3QjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFB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bnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgVGFibGVEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBNbmdFcnJvcn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7STE4blV0aWx9IGZyb20gJy4vaTE4bi51dGlsJztcblxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgbm90aWZpY2F0aW9uKHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sIHRpdGxlPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBzZXZlcml0eTogJ3N1Y2Nlc3MnIHwgJ3dhcm4nIHwgJ2Vycm9yJyA9ICdzdWNjZXNzJyk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBtZXNzYWdlU2VydmljZSA9IHZpZXdDb250YWluZXI/LmdldE1lc3NhZ2VTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbjogTWVzc2FnZSA9IHtzZXZlcml0eTogc2V2ZXJpdHksIHN1bW1hcnk6IHRpdGxlLCBkZXRhaWw6IG1lc3NhZ2UsIGxpZmU6IHNldmVyaXR5ID09PSAnZXJyb3InID8gMTAwMDAgOiA1MDAwfTtcbiAgICAgICAgaWYgKG1lc3NhZ2VTZXJ2aWNlKSB7XG4gICAgICAgICAgICBtZXNzYWdlU2VydmljZS5hZGQobm90aWZpY2F0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTm8gbWVzc2FnZSBzZXJ2aWNlIHdhcyBwcm92aWRlZCB0aHJvdWdoIHZpZXcgY29udGFpbmVyLCBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZC5gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbm90aWZpY2F0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgdGFibGVOb3RpZmljYXRpb25FcnJvcih0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsIHRhYmxlOiBUYWJsZURlc2NyaXB0b3I8YW55PiwgZXJyb3I6IGFueSwgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55Pik6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBwYXJhbXM6IGFueSA9IHt9O1xuICAgICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIHBhcmFtcy5lcnJvck1lc3NhZ2UgPSBgOiAke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBhcmFtcy5lcnJvck1lc3NhZ2UgPSAnLic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2cocGFyYW1zKTtcbiAgICAgICAgY29uc3QgdGFibGVFcnJvclRpdGxlID0gSTE4blV0aWwuaW5zdGFudE1vZGVsVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgIEkxOG5VdGlsLmluc3RhbnRNb2RlbFRyYW5zbGF0aW9uKHRyYW5zbGF0aW9uU2VydmljZSwgdGFibGUubW9kZWwsICd0YWJsZS5lcnJvci5tZXNzYWdlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yTWVzc2FnZScsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uVXRpbC5ub3RpZmljYXRpb24odmlld0NvbnRhaW5lciwgdGFibGVFcnJvclRpdGxlLCB0YWJsZUVycm9yTWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25TdWNjZXNzKFxuICAgICAgICB0cmFuc2xhdGlvblNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tVGl0bGVLZXk/OiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbU1lc3NhZ2VLZXk/OiBzdHJpbmcsXG4gICAgICAgIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4sXG4gICAgICAgIGl0ZW0/OiBhbnlcbiAgICApOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgYWN0aW9uU3VjY2Vzc1RpdGxlID1cbiAgICAgICAgICAgIEkxOG5VdGlsLmluc3RhbnRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGlvblNlcnZpY2UsIGFjdGlvbiwgJ3N1Y2Nlc3MudGl0bGUnLCBjdXN0b21UaXRsZUtleSwgaXRlbSwgJ2dlbmVyYWwuc3VjY2VzcycsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25TdWNjZXNzTWVzc2FnZSA9XG4gICAgICAgICAgICBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24odHJhbnNsYXRpb25TZXJ2aWNlLCBhY3Rpb24sICdzdWNjZXNzLm1lc3NhZ2UnLCBjdXN0b21NZXNzYWdlS2V5LCBpdGVtLCAnZ2VuZXJhbC5zdWNjZXNzTWVzc2FnZScsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uVXRpbC5ub3RpZmljYXRpb24odmlld0NvbnRhaW5lciwgYWN0aW9uU3VjY2Vzc1RpdGxlLCBhY3Rpb25TdWNjZXNzTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25FcnJvcihcbiAgICAgICAgdHJhbnNsYXRpb25TZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PixcbiAgICAgICAgZXJyb3I6IE1uZ0Vycm9yLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueVxuICAgICk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IEkxOG5VdGlsLmluc3RhbnRFcnJvckkxOG5UcmFuc2xhdGlvbih0cmFuc2xhdGlvblNlcnZpY2UsIGVycm9yKVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID1cbiAgICAgICAgICAgIEkxOG5VdGlsLmluc3RhbnRBY3Rpb25UcmFuc2xhdGlvbih0cmFuc2xhdGlvblNlcnZpY2UsIGFjdGlvbiwgJ2Vycm9yLnRpdGxlJywgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUsIGl0ZW0sICdnZW5lcmFsLmVycm9yJywgZnVuY3Rpb25OYW1lLCBwYXJhbXMpID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yTWVzc2FnZSA9XG4gICAgICAgICAgICBJMThuVXRpbC5pbnN0YW50QWN0aW9uVHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAnZXJyb3IubWVzc2FnZScsXG4gICAgICAgICAgICAgICAgYWN0aW9uLnJ1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBpdGVtLFxuICAgICAgICAgICAgICAgICdnZW5lcmFsLmVycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgIHBhcmFtc1xuICAgICAgICAgICAgKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCBhY3Rpb25FcnJvclRpdGxlLCBhY3Rpb25FcnJvck1lc3NhZ2UsICdlcnJvcicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Rm9ybUVkaXRvcldhcm5pbmdNZXNzYWdlKHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgdGl0bGU6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nKTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPSB0cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudCh0aXRsZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPSB0cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChtZXNzYWdlKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiB7c2V2ZXJpdHk6ICd3YXJuJywgc3VtbWFyeTogYWN0aW9uRXJyb3JUaXRsZSwgZGV0YWlsOiBhY3Rpb25FcnJvck1lc3NhZ2V9O1xuICAgIH1cbn1cbiJdfQ==
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3V0aWxzL25vdGlmaWNhdGlvbi51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFdEMsTUFBTSxPQUFPLGdCQUFnQjtJQUNsQixNQUFNLENBQUMsWUFBWSxDQUFDLGFBQXdDLEVBQUUsS0FBYyxFQUFFLE9BQWdCLEVBQUUsV0FBeUMsU0FBUztRQUNySixNQUFNLGNBQWMsR0FBRyxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFlBQVksR0FBWSxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDO1FBQy9ILElBQUksY0FBYyxFQUFFO1lBQ2hCLGNBQWMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDcEM7YUFBTTtZQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztTQUMxRztRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTSxNQUFNLENBQUMsc0JBQXNCLENBQUMsU0FBMkIsRUFBRSxLQUEyQixFQUFFLEtBQVUsRUFBRSxhQUF3QztRQUMvSSxNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7YUFBTTtZQUNILE1BQU0sQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO1NBQzdCO1FBQ0QsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFD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Q0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlfSBmcm9tICdwcmltZW5nL2FwaSc7XG5cbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgVGFibGVEZXNjcmlwdG9yfSBmcm9tICcuLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBNbmdFcnJvcn0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7STE4blV0aWxzfSBmcm9tICcuL2kxOG4udXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25VdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIG5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LCB0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgc2V2ZXJpdHk6ICdzdWNjZXNzJyB8ICd3YXJuJyB8ICdlcnJvcicgPSAnc3VjY2VzcycpOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZVNlcnZpY2UgPSB2aWV3Q29udGFpbmVyPy5nZXRNZXNzYWdlU2VydmljZSgpO1xuICAgICAgICBjb25zdCBub3RpZmljYXRpb246IE1lc3NhZ2UgPSB7c2V2ZXJpdHk6IHNldmVyaXR5LCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlLCBsaWZlOiBzZXZlcml0eSA9PT0gJ2Vycm9yJyA/IDEwMDAwIDogNTAwMH07XG4gICAgICAgIGlmIChtZXNzYWdlU2VydmljZSkge1xuICAgICAgICAgICAgbWVzc2FnZVNlcnZpY2UuYWRkKG5vdGlmaWNhdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYE5vIG1lc3NhZ2Ugc2VydmljZSB3YXMgcHJvdmlkZWQgdGhyb3VnaCB2aWV3IGNvbnRhaW5lciwgbWVzc2FnZSB3aWxsIG5vdCBiZSBkaXNwbGF5ZWQuYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHRhYmxlTm90aWZpY2F0aW9uRXJyb3IodHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCB0YWJsZTogVGFibGVEZXNjcmlwdG9yPGFueT4sIGVycm9yOiBhbnksIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxhbnksIGFueT4pOiBNZXNzYWdlIHtcbiAgICAgICAgY29uc3QgcGFyYW1zOiBhbnkgPSB7fTtcbiAgICAgICAgaWYgKGVycm9yPy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gYDogJHtlcnJvci5tZXNzYWdlfWA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXJhbXMuZXJyb3JNZXNzYWdlID0gJy4nO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JUaXRsZSA9IEkxOG5VdGlscy5Nb2RlbC5nZXQodHJhbnNsYXRlLCB0YWJsZS5tb2RlbCwgJ3RhYmxlLmVycm9yLnRpdGxlJywgdW5kZWZpbmVkLCB1bmRlZmluZWQsICdnZW5lcmFsLmVycm9yJywgcGFyYW1zKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHRhYmxlRXJyb3JNZXNzYWdlID0gSTE4blV0aWxzLk1vZGVsLmdldCh0cmFuc2xhdGUsIHRhYmxlLm1vZGVsLCAndGFibGUuZXJyb3IubWVzc2FnZScsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnZ2VuZXJhbC5lcnJvck1lc3NhZ2UnLCBwYXJhbXMpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIE5vdGlmaWNhdGlvblV0aWwubm90aWZpY2F0aW9uKHZpZXdDb250YWluZXIsIHRhYmxlRXJyb3JUaXRsZSwgdGFibGVFcnJvck1lc3NhZ2UsICdlcnJvcicpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aW9uTm90aWZpY2F0aW9uU3VjY2VzcyhcbiAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PixcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbVRpdGxlS2V5Pzogc3RyaW5nLFxuICAgICAgICBjdXN0b21NZXNzYWdlS2V5Pzogc3RyaW5nLFxuICAgICAgICB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8YW55LCBhbnk+LFxuICAgICAgICBpdGVtPzogYW55XG4gICAgKTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IGFjdGlvblN1Y2Nlc3NUaXRsZSA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0KHRyYW5zbGF0ZSwgYWN0aW9uLCAnc3VjY2Vzcy50aXRsZScsIGN1c3RvbVRpdGxlS2V5LCBpdGVtLCAnZ2VuZXJhbC5zdWNjZXNzJywgZnVuY3Rpb25OYW1lKSA/PyB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGFjdGlvblN1Y2Nlc3NNZXNzYWdlID0gSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sICdzdWNjZXNzLm1lc3NhZ2UnLCBjdXN0b21NZXNzYWdlS2V5LCBpdGVtLCAnZ2VuZXJhbC5zdWNjZXNzTWVzc2FnZScsIGZ1bmN0aW9uTmFtZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uVXRpbC5ub3RpZmljYXRpb24odmlld0NvbnRhaW5lciwgYWN0aW9uU3VjY2Vzc1RpdGxlLCBhY3Rpb25TdWNjZXNzTWVzc2FnZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBhY3Rpb25Ob3RpZmljYXRpb25FcnJvcihcbiAgICAgICAgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgICAgICBhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55PixcbiAgICAgICAgZXJyb3I6IE1uZ0Vycm9yLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHN0cmluZyxcbiAgICAgICAgdmlld0NvbnRhaW5lcj86IElWaWV3Q29udGFpbmVyPGFueSwgYW55PixcbiAgICAgICAgaXRlbT86IGFueSxcbiAgICAgICAgc2V2ZXJpdHk6ICd3YXJuJyB8ICdlcnJvcicgPSAnZXJyb3InXG4gICAgKTogTWVzc2FnZSB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogSTE4blV0aWxzLkVycm9yLmdldCh0cmFuc2xhdGUsIGVycm9yKSA/PyBlcnJvci5tZXNzYWdlXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFjdGlvbkVycm9yVGl0bGUgPVxuICAgICAgICAgICAgSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sIFtgZXJyb3IuJHtmdW5jdGlvbk5hbWV9LnRpdGxlYCwgJ2Vycm9yLnRpdGxlJ10sIGFjdGlvbi5ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlLCBpdGVtLCAnZ2VuZXJhbC5lcnJvcicsIHBhcmFtcykgPz8gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvck1lc3NhZ2UgPVxuICAgICAgICAgICAgSTE4blV0aWxzLkFjdGlvbi5nZXQodHJhbnNsYXRlLCBhY3Rpb24sIFtgZXJyb3IuJHtmdW5jdGlvbk5hbWV9Lm1lc3NhZ2VgLCAnZXJyb3IubWVzc2FnZSddLCBhY3Rpb24ucnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlLCBpdGVtLCAnZ2VuZXJhbC5lcnJvck1lc3NhZ2UnLCBwYXJhbXMpID8/XG4gICAgICAgICAgICB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBOb3RpZmljYXRpb25VdGlsLm5vdGlmaWNhdGlvbih2aWV3Q29udGFpbmVyLCBhY3Rpb25FcnJvclRpdGxlLCBhY3Rpb25FcnJvck1lc3NhZ2UsIHNldmVyaXR5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZvcm1FZGl0b3JXYXJuaW5nTWVzc2FnZSh0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHRpdGxlOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyk6IE1lc3NhZ2Uge1xuICAgICAgICBjb25zdCBhY3Rpb25FcnJvclRpdGxlID0gdHJhbnNsYXRlLmluc3RhbnQodGl0bGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgYWN0aW9uRXJyb3JNZXNzYWdlID0gdHJhbnNsYXRlLmluc3RhbnQobWVzc2FnZSkgPz8gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4ge3NldmVyaXR5OiAnd2FybicsIHN1bW1hcnk6IGFjdGlvbkVycm9yVGl0bGUsIGRldGFpbDogYWN0aW9uRXJyb3JNZXNzYWdlfTtcbiAgICB9XG59XG4iXX0=