@commercetools-frontend-extensions/export-resources-modal 0.0.0-canary-20240507102123

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.
@@ -0,0 +1,1258 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
6
+ var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
7
+ var _filterInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/filter');
8
+ var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
9
+ var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/for-each');
10
+ var _Object$getOwnPropertyDescriptors = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors');
11
+ var _Object$defineProperties = require('@babel/runtime-corejs3/core-js-stable/object/define-properties');
12
+ var _Object$defineProperty = require('@babel/runtime-corejs3/core-js-stable/object/define-property');
13
+ var _defineProperty = require('@babel/runtime-corejs3/helpers/defineProperty');
14
+ var uiKit = require('@commercetools-frontend/ui-kit');
15
+ var jsxRuntime = require('@emotion/react/jsx-runtime');
16
+ require('@commercetools-uikit/design-system');
17
+ var reactIntl = require('react-intl');
18
+ var _valuesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/values');
19
+ var applicationComponents = require('@commercetools-frontend/application-components');
20
+ var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
21
+ var _Reflect$construct = require('@babel/runtime-corejs3/core-js-stable/reflect/construct');
22
+ var _createClass = require('@babel/runtime-corejs3/helpers/createClass');
23
+ var _classCallCheck = require('@babel/runtime-corejs3/helpers/classCallCheck');
24
+ var _inherits = require('@babel/runtime-corejs3/helpers/inherits');
25
+ var _possibleConstructorReturn = require('@babel/runtime-corejs3/helpers/possibleConstructorReturn');
26
+ var _getPrototypeOf = require('@babel/runtime-corejs3/helpers/getPrototypeOf');
27
+ var _wrapNativeSuper = require('@babel/runtime-corejs3/helpers/wrapNativeSuper');
28
+ var React = require('react');
29
+ var _objectWithoutProperties = require('@babel/runtime-corejs3/helpers/objectWithoutProperties');
30
+ var _mapInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/map');
31
+ var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
32
+ var moment = require('moment');
33
+ var _someInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/some');
34
+ var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
35
+ var omitEmpty = require('omit-empty-es');
36
+ var _Array$isArray = require('@babel/runtime-corejs3/core-js-stable/array/is-array');
37
+ var _flatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/flat');
38
+ var _Set = require('@babel/runtime-corejs3/core-js-stable/set');
39
+ var _sortInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/sort');
40
+ require('@babel/runtime-corejs3/core-js-stable/instance/starts-with');
41
+ var _indexOfInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
42
+ var sdk = require('@commercetools-frontend/sdk');
43
+ var actionsGlobal = require('@commercetools-frontend/actions-global');
44
+ var constants = require('@commercetools-frontend/constants');
45
+ var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
46
+ var _styled = require('@emotion/styled/base');
47
+ var _everyInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/every');
48
+ var _includesInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/includes');
49
+ var _trimInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/trim');
50
+ var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
51
+ var throttle = require('lodash/throttle');
52
+ var react = require('@emotion/react');
53
+ var get = require('lodash/get');
54
+ var PropTypes = require('prop-types');
55
+ var formik = require('formik');
56
+
57
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
58
+
59
+ var _Object$keys__default = /*#__PURE__*/_interopDefault(_Object$keys);
60
+ var _Object$getOwnPropertySymbols__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertySymbols);
61
+ var _filterInstanceProperty__default = /*#__PURE__*/_interopDefault(_filterInstanceProperty);
62
+ var _Object$getOwnPropertyDescriptor__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptor);
63
+ var _forEachInstanceProperty__default = /*#__PURE__*/_interopDefault(_forEachInstanceProperty);
64
+ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_Object$getOwnPropertyDescriptors);
65
+ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
66
+ var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
67
+ var _valuesInstanceProperty__default = /*#__PURE__*/_interopDefault(_valuesInstanceProperty);
68
+ var _Reflect$construct__default = /*#__PURE__*/_interopDefault(_Reflect$construct);
69
+ var React__default = /*#__PURE__*/_interopDefault(React);
70
+ var _mapInstanceProperty__default = /*#__PURE__*/_interopDefault(_mapInstanceProperty);
71
+ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
72
+ var moment__default = /*#__PURE__*/_interopDefault(moment);
73
+ var _someInstanceProperty__default = /*#__PURE__*/_interopDefault(_someInstanceProperty);
74
+ var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInstanceProperty);
75
+ var omitEmpty__default = /*#__PURE__*/_interopDefault(omitEmpty);
76
+ var _Array$isArray__default = /*#__PURE__*/_interopDefault(_Array$isArray);
77
+ var _flatInstanceProperty__default = /*#__PURE__*/_interopDefault(_flatInstanceProperty);
78
+ var _Set__default = /*#__PURE__*/_interopDefault(_Set);
79
+ var _sortInstanceProperty__default = /*#__PURE__*/_interopDefault(_sortInstanceProperty);
80
+ var _indexOfInstanceProperty__default = /*#__PURE__*/_interopDefault(_indexOfInstanceProperty);
81
+ var _styled__default = /*#__PURE__*/_interopDefault(_styled);
82
+ var _everyInstanceProperty__default = /*#__PURE__*/_interopDefault(_everyInstanceProperty);
83
+ var _includesInstanceProperty__default = /*#__PURE__*/_interopDefault(_includesInstanceProperty);
84
+ var _trimInstanceProperty__default = /*#__PURE__*/_interopDefault(_trimInstanceProperty);
85
+ var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
86
+ var throttle__default = /*#__PURE__*/_interopDefault(throttle);
87
+ var get__default = /*#__PURE__*/_interopDefault(get);
88
+ var PropTypes__default = /*#__PURE__*/_interopDefault(PropTypes);
89
+
90
+ function getBold(msg) {
91
+ return jsxRuntime.jsx(uiKit.Text.Body, {
92
+ as: "span",
93
+ isBold: true,
94
+ children: msg
95
+ });
96
+ }
97
+
98
+ function getNewLine() {
99
+ return jsxRuntime.jsx("br", {});
100
+ }
101
+
102
+ var messages = reactIntl.defineMessages({
103
+ modalTitle: {
104
+ id: 'ExportResourcesModal.modalTitle',
105
+ description: 'Label for the modal title',
106
+ defaultMessage: 'Export {resourceType}'
107
+ },
108
+ outputFormat: {
109
+ id: 'ExportResourcesModal.outputFormat',
110
+ description: 'File format like (csv, xls, ...etc)',
111
+ defaultMessage: 'File format'
112
+ },
113
+ fileName: {
114
+ id: 'ExportResourcesModal.fileName',
115
+ description: 'exported file name',
116
+ defaultMessage: 'File name'
117
+ },
118
+ locale: {
119
+ id: 'ExportResourcesModal.locale',
120
+ description: 'Locale',
121
+ defaultMessage: 'Locale'
122
+ },
123
+ exportSelection: {
124
+ id: 'ExportResourcesModal.exportSelection',
125
+ description: 'Export selection',
126
+ defaultMessage: 'Export selection'
127
+ },
128
+ exportAllResources: {
129
+ id: 'ExportResourcesModal.exportAllResources',
130
+ description: 'Export All selection',
131
+ defaultMessage: 'Export all {resourceType} ({count})'
132
+ },
133
+ exportOnlySelectedResources: {
134
+ id: 'ExportResourcesModal.exportOnlySelectedResources',
135
+ description: 'Export only selected resources',
136
+ defaultMessage: 'Export selected {resourceType} ({count})'
137
+ },
138
+ exportAllMessage: {
139
+ id: 'ExportResourcesModal.exportAllMessage',
140
+ description: 'All resources will be exported',
141
+ defaultMessage: 'All <b>{count}</b> {resourceType} will be exported.'
142
+ },
143
+ exportMatchingMessage: {
144
+ id: 'ExportResourcesModal.exportMatchingMessage',
145
+ description: 'resources will be exported',
146
+ defaultMessage: '<b>{count}</b> {resourceType} will be exported.'
147
+ },
148
+ exportSelectedMessage: {
149
+ id: 'ExportResourcesModal.exportSelectedMessage',
150
+ description: 'resources are selected and will be exported',
151
+ defaultMessage: '<b>{count}</b> {resourceType} are selected and will be exported.'
152
+ },
153
+ exportBasedOnMyViewsMessage: {
154
+ id: 'ExportResourcesModal.exportBasedOnMyViewsMessage',
155
+ description: 'Select Export setttings based on my views',
156
+ defaultMessage: 'Select export settings based on:'
157
+ },
158
+ propertiesPanelLabel: {
159
+ id: 'ExportResourcesModal.propertiesPanelLabel',
160
+ description: 'properties panel label',
161
+ defaultMessage: 'Properties'
162
+ },
163
+ exportOperationSuccessMessage: {
164
+ id: 'ExportResourcesModal.exportOperationSuccessMessage',
165
+ description: 'Success message',
166
+ defaultMessage: '<b>Your export has started.</b> <newline></newline><logsLink>Go to Export logs</logsLink> to view the progress and download the file.'
167
+ },
168
+ nothingApplied: {
169
+ id: 'ExportResourcesModal.nothingApplied',
170
+ description: 'Shown when there is no filter applied',
171
+ defaultMessage: 'nothing applied'
172
+ },
173
+ selectAllLocales: {
174
+ id: 'ExportResourcesModal.selectAllLocales',
175
+ description: 'label for "Select all locales" checkbox',
176
+ defaultMessage: 'Select all locales'
177
+ },
178
+ missingFileNameError: {
179
+ id: 'ExportResourcesModal.missingFileNameError',
180
+ description: 'Error when file name field is missing',
181
+ defaultMessage: 'Please enter a file name'
182
+ },
183
+ invalidFileNameError: {
184
+ id: 'ExportResourcesModal.invalidFileNameError',
185
+ description: 'Error when file name field is not valid',
186
+ defaultMessage: 'File name may only contain alphanumeric characters, hyphens and underscores'
187
+ },
188
+ missingLocaleError: {
189
+ id: 'ExportResourcesModal.missingLocaleError',
190
+ description: 'Error when no locale is selected',
191
+ defaultMessage: 'Please select at least one locale'
192
+ },
193
+ myViews: {
194
+ id: 'ExportResourcesModal.myViews',
195
+ description: 'Label for "My Views" Select Field',
196
+ defaultMessage: 'My Views'
197
+ },
198
+ selectFieldsToExport: {
199
+ id: 'ExportResourcesModal.selectFieldsToExport',
200
+ defaultMessage: 'Select fields to export'
201
+ },
202
+ back: {
203
+ id: 'ExportResourcesModal.back',
204
+ description: 'Label for "Back" button',
205
+ defaultMessage: 'Back'
206
+ },
207
+ startExport: {
208
+ id: 'ExportResourcesModal.startExport',
209
+ description: 'Label for "Start export" button',
210
+ defaultMessage: 'Start export'
211
+ },
212
+ continue: {
213
+ id: 'ExportResourcesModal.continue',
214
+ description: 'Label for "Continue" button',
215
+ defaultMessage: 'Continue'
216
+ },
217
+ fieldDefinitions: {
218
+ id: 'ExportResourcesModal.fieldDefinitions',
219
+ description: 'Label for "Field definitions" link',
220
+ defaultMessage: 'Field definitions'
221
+ },
222
+ allGeneralFields: {
223
+ id: 'ExportResourcesModal.allGeneralFields',
224
+ description: 'Label for "All general fields" checkbox',
225
+ defaultMessage: 'All general fields'
226
+ },
227
+ allCustomFields: {
228
+ id: 'ExportResourcesModal.allCustomFields',
229
+ description: 'Label for "All custom fields" checkbox',
230
+ defaultMessage: 'All custom fields'
231
+ },
232
+ customTypeKeyAndTypeId: {
233
+ id: 'ExportResourcesModal.customTypeKeyAndTypeId',
234
+ description: 'Label for "Custom type key and typeId" checkbox',
235
+ defaultMessage: 'Custom type key and typeId'
236
+ },
237
+ unexpectedError: {
238
+ id: 'ExportResourcesModal.unexpectedError',
239
+ description: 'Generic notification message when starting export process fails',
240
+ defaultMessage: 'An error occurred while starting the export process. Please try again or contact support if the problem persists.'
241
+ },
242
+ searchForFields: {
243
+ id: 'ExportResourcesModal.searchForFields',
244
+ description: 'Placeholder for "Search for fields" search input',
245
+ defaultMessage: 'Search for fields'
246
+ },
247
+ thereAreNoResults: {
248
+ id: 'ExportResourcesModal.thereAreNoResults',
249
+ description: 'No search results message',
250
+ defaultMessage: 'There are no results that match your search.'
251
+ },
252
+ suggestions: {
253
+ id: 'ExportResourcesModal.suggestions',
254
+ description: 'In Export fields selection - Suggestions message',
255
+ defaultMessage: 'Suggestions:'
256
+ },
257
+ checkTheSpelling: {
258
+ id: 'ExportResourcesModal.checkTheSpelling',
259
+ description: 'In Export fields selection - Check the spelling message',
260
+ defaultMessage: 'Check the spelling.'
261
+ },
262
+ searchByEnteringTheExactFieldName: {
263
+ id: 'ExportResourcesModal.searchByEnteringTheExactFieldName',
264
+ description: 'In Export fields selection - Search by entering the exact field name message',
265
+ defaultMessage: 'Try searching by entering the exact field name.'
266
+ }
267
+ });
268
+
269
+ function ownKeys$6(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
270
+ function _objectSpread$6(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$6(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$6(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
271
+ function renderFileNameError(key) {
272
+ switch (key) {
273
+ case 'missing':
274
+ return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$6({}, messages.missingFileNameError));
275
+ case 'invalidInput':
276
+ return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$6({}, messages.invalidFileNameError));
277
+ default:
278
+ return null;
279
+ }
280
+ }
281
+ function renderLocaleError(key) {
282
+ switch (key) {
283
+ case 'missing':
284
+ return jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread$6({}, messages.missingLocaleError));
285
+ default:
286
+ return null;
287
+ }
288
+ }
289
+
290
+ const Z_INDEX_DROPDOWN = 30000;
291
+
292
+ const EXPORT_OPERATION_STATES = {
293
+ PROCESSING: 'processing',
294
+ COMPLETED: 'completed',
295
+ FAILED: 'failed'
296
+ };
297
+
298
+ const EXPORT_TYPES = {
299
+ ALL: 'all',
300
+ FILTERED: 'filtered',
301
+ SELECTED: 'selected'
302
+ };
303
+
304
+ const EXPORTABLE_RESOURCES = {
305
+ CATEGORY: 'category',
306
+ PRODUCT: 'product',
307
+ DISCOUNT_CODE: 'discountCode'
308
+ };
309
+
310
+ const OUTPUT_FORMATS = {
311
+ JSON: 'json',
312
+ CSV: 'csv'
313
+ };
314
+ const OUTPUT_FORMAT_OPTIONS = [{
315
+ value: OUTPUT_FORMATS.CSV,
316
+ label: 'CSV'
317
+ }, {
318
+ value: OUTPUT_FORMATS.JSON,
319
+ label: 'JSON'
320
+ }];
321
+
322
+ const FIELD_DEFINITIONS_URLS = {
323
+ category: 'https://docs.commercetools.com/merchant-center/import-categories#supported-headers-and-values'
324
+ };
325
+
326
+ function _createSuper$4(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$4(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
327
+ function _isNativeReflectConstruct$4() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$4 = function () { return !!t; })(); }
328
+ let UnexpectedExportTypeError = /*#__PURE__*/function (_Error) {
329
+ _inherits(UnexpectedExportTypeError, _Error);
330
+ var _super = _createSuper$4(UnexpectedExportTypeError);
331
+ function UnexpectedExportTypeError(exportType) {
332
+ var _this;
333
+ _classCallCheck(this, UnexpectedExportTypeError);
334
+ _this = _super.call(this, "Unexpected export type: ".concat(exportType));
335
+ _this.name = 'UnexpectedExportTypeError';
336
+ return _this;
337
+ }
338
+ return _createClass(UnexpectedExportTypeError);
339
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
340
+
341
+ function _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
342
+ function _isNativeReflectConstruct$3() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$3 = function () { return !!t; })(); }
343
+ let MissingExportResourceProviderError = /*#__PURE__*/function (_Error) {
344
+ _inherits(MissingExportResourceProviderError, _Error);
345
+ var _super = _createSuper$3(MissingExportResourceProviderError);
346
+ function MissingExportResourceProviderError() {
347
+ var _this;
348
+ _classCallCheck(this, MissingExportResourceProviderError);
349
+ _this = _super.call(this, 'useExportResourcesContext must be used within ExportResourcesProvider');
350
+ _this.name = 'MissingExportResourceProviderError';
351
+ return _this;
352
+ }
353
+ return _createClass(MissingExportResourceProviderError);
354
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
355
+
356
+ function _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
357
+ function _isNativeReflectConstruct$2() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$2 = function () { return !!t; })(); }
358
+ let UnexpectedExportOperationStateError = /*#__PURE__*/function (_Error) {
359
+ _inherits(UnexpectedExportOperationStateError, _Error);
360
+ var _super = _createSuper$2(UnexpectedExportOperationStateError);
361
+ function UnexpectedExportOperationStateError(state) {
362
+ var _this;
363
+ _classCallCheck(this, UnexpectedExportOperationStateError);
364
+ _this = _super.call(this, "Unexpected export operation state \"".concat(state, "\""));
365
+ _this.name = 'UnexpectedExportOperationStateError';
366
+ return _this;
367
+ }
368
+ return _createClass(UnexpectedExportOperationStateError);
369
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
370
+
371
+ function _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
372
+ function _isNativeReflectConstruct$1() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct$1 = function () { return !!t; })(); }
373
+ let UnexpectedResourceTypeError = /*#__PURE__*/function (_Error) {
374
+ _inherits(UnexpectedResourceTypeError, _Error);
375
+ var _super = _createSuper$1(UnexpectedResourceTypeError);
376
+ function UnexpectedResourceTypeError(resourceType) {
377
+ var _this;
378
+ _classCallCheck(this, UnexpectedResourceTypeError);
379
+ _this = _super.call(this, "Unexpected resource type: ".concat(resourceType));
380
+ _this.name = 'UnexpectedResourceTypeError';
381
+ return _this;
382
+ }
383
+ return _createClass(UnexpectedResourceTypeError);
384
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
385
+
386
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = _Reflect$construct__default["default"](Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
387
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct__default["default"](Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function () { return !!t; })(); }
388
+ let InvalidResponseError = /*#__PURE__*/function (_Error) {
389
+ _inherits(InvalidResponseError, _Error);
390
+ var _super = _createSuper(InvalidResponseError);
391
+ function InvalidResponseError(message) {
392
+ var _this;
393
+ _classCallCheck(this, InvalidResponseError);
394
+ _this = _super.call(this, message);
395
+ _this.name = 'InvalidResponseError';
396
+ return _this;
397
+ }
398
+ return _createClass(InvalidResponseError);
399
+ }( /*#__PURE__*/_wrapNativeSuper(Error));
400
+
401
+ function useExportResourcesContext() {
402
+ const context = React.useContext(ExportResourcesContext);
403
+ if (!context) {
404
+ throw new MissingExportResourceProviderError();
405
+ }
406
+ return context;
407
+ }
408
+
409
+ function checkAtLeastOneFieldChecked$1(fields) {
410
+ return _someInstanceProperty__default["default"](fields).call(fields, field => {
411
+ if (field.fields) {
412
+ return field.isChecked || checkAtLeastOneFieldChecked$1(field.fields);
413
+ }
414
+ return field.isChecked;
415
+ });
416
+ }
417
+ function validate(_ref) {
418
+ let values = _valuesInstanceProperty__default["default"](_ref),
419
+ step = _ref.step;
420
+ const fileName = values.fileName,
421
+ locales = values.locales,
422
+ groups = values.groups;
423
+ const errors = {
424
+ fileName: {},
425
+ locales: {},
426
+ fields: {}
427
+ };
428
+ if (uiKit.TextInput.isEmpty(fileName)) {
429
+ // @ts-ignore
430
+ errors.fileName.missing = true;
431
+ } else if (!/^[a-zA-Z0-9-_.]+$/.test(fileName)) {
432
+ // @ts-ignore
433
+ errors.fileName.invalidInput = true;
434
+ }
435
+ if (locales.length < 1) {
436
+ // @ts-ignore
437
+ errors.locales.missing = true;
438
+ }
439
+ if (step === 2) {
440
+ const allFields = _reduceInstanceProperty__default["default"](groups).call(groups, (acc, group) => _concatInstanceProperty__default["default"](acc).call(acc, group.fields), []);
441
+ const checkedFieldsCount = _filterInstanceProperty__default["default"](allFields).call(allFields, field => {
442
+ if (field.fields) return checkAtLeastOneFieldChecked$1(field.fields);
443
+ return !field.isRequired && !field.isReadOnly && field.isChecked;
444
+ }).length;
445
+ if (checkedFieldsCount < 1) {
446
+ // @ts-ignore
447
+ errors.fields.missing = true;
448
+ }
449
+ }
450
+ return omitEmpty__default["default"](errors);
451
+ }
452
+
453
+ function ownKeys$5(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
454
+ function _objectSpread$5(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context5 = ownKeys$5(Object(t), !0)).call(_context5, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context6 = ownKeys$5(Object(t))).call(_context6, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
455
+ function resourceTypeToDisplayName(_ref) {
456
+ let resourceType = _ref.resourceType,
457
+ _ref$isUpperCase = _ref.isUpperCase,
458
+ isUpperCase = _ref$isUpperCase === void 0 ? false : _ref$isUpperCase,
459
+ _ref$isPlural = _ref.isPlural,
460
+ isPlural = _ref$isPlural === void 0 ? false : _ref$isPlural;
461
+ let displayName;
462
+ switch (resourceType) {
463
+ case EXPORTABLE_RESOURCES.CATEGORY:
464
+ displayName = isPlural ? 'Categories' : 'Category';
465
+ break;
466
+ case EXPORTABLE_RESOURCES.PRODUCT:
467
+ displayName = isPlural ? 'Products' : 'Product';
468
+ break;
469
+ case EXPORTABLE_RESOURCES.DISCOUNT_CODE:
470
+ displayName = isPlural ? 'Discount codes' : 'Discount code';
471
+ break;
472
+ default:
473
+ throw UnexpectedResourceTypeError(resourceType);
474
+ }
475
+ return isUpperCase ? displayName : displayName.toLowerCase();
476
+ }
477
+ function mapLocalesToOptions(locales) {
478
+ return _mapInstanceProperty__default["default"](locales).call(locales, locale => ({
479
+ value: locale,
480
+ label: locale
481
+ }));
482
+ }
483
+ function isFilledArray(maybeArray) {
484
+ return _Array$isArray__default["default"](maybeArray) && maybeArray.length;
485
+ }
486
+ function appendCsvOrJsonExtensionIfAbsent(fileName, fileFormat) {
487
+ var _context;
488
+ const extensionRegex = /\.(csv|json)$/i;
489
+ if (!extensionRegex.test(fileName)) return _concatInstanceProperty__default["default"](_context = "".concat(fileName, ".")).call(_context, fileFormat);
490
+ return fileName;
491
+ }
492
+ function flattenNestedFields(fields) {
493
+ const result = (fields === null || fields === void 0 ? void 0 : _mapInstanceProperty__default["default"](fields).call(fields, field => {
494
+ if (isFilledArray(field.fields)) {
495
+ var _context2;
496
+ return _mapInstanceProperty__default["default"](_context2 = flattenNestedFields(field.fields)).call(_context2, nestedField => {
497
+ var _context3;
498
+ return _objectSpread$5(_objectSpread$5({}, nestedField), {}, {
499
+ name: _concatInstanceProperty__default["default"](_context3 = "".concat(field.name, ".")).call(_context3, nestedField.name)
500
+ });
501
+ });
502
+ }
503
+ return field;
504
+ })) || [];
505
+ return _flatInstanceProperty__default["default"](result).call(result);
506
+ }
507
+ function checkRequiredFields(fields) {
508
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => field.isRequired ? _objectSpread$5(_objectSpread$5({}, field), {}, {
509
+ isChecked: true
510
+ }) : field);
511
+ }
512
+ function getExportLogsLink(projectKey, msg) {
513
+ return jsxRuntime.jsx(uiKit.Link, {
514
+ to: "/".concat(projectKey, "/operations/export/logs"),
515
+ children: msg
516
+ });
517
+ }
518
+ function setInitialCheckedStateForCustomFields(customFields) {
519
+ return _mapInstanceProperty__default["default"](customFields).call(customFields, customType => {
520
+ var _context4;
521
+ return _objectSpread$5(_objectSpread$5({}, customType), {}, {
522
+ fields: _mapInstanceProperty__default["default"](_context4 = customType.fields).call(_context4, field => _objectSpread$5(_objectSpread$5({}, field), {}, {
523
+ isChecked: false
524
+ }))
525
+ });
526
+ });
527
+ }
528
+ const extractFieldNamesAndAdditionalFieldExtensions = fields => {
529
+ const result = _reduceInstanceProperty__default["default"](fields).call(fields, (acc, field) => {
530
+ if (field.additionalFieldExtensions) {
531
+ return [...acc, ...field.additionalFieldExtensions, field.name];
532
+ }
533
+ return [...acc, field.name];
534
+ }, []);
535
+ return [...new _Set__default["default"](result)];
536
+ };
537
+ function sortFieldsByFieldOrder(_ref2) {
538
+ let fields = _ref2.fields,
539
+ fieldOrder = _ref2.fieldOrder;
540
+ if (isFilledArray(fieldOrder)) {
541
+ return _sortInstanceProperty__default["default"](fields).call(fields, (a, b) => {
542
+ let orderA = _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, a) !== -1 ? _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, a) : _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, a.split('.')[0]);
543
+ let orderB = _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, b) !== -1 ? _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, b) : _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, b.split('.')[0]);
544
+
545
+ // If a field is not 'custom',then consider it as '*'
546
+ orderA = orderA === -1 ? _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, '*') : orderA;
547
+ orderB = orderB === -1 ? _indexOfInstanceProperty__default["default"](fieldOrder).call(fieldOrder, '*') : orderB;
548
+ return orderA - orderB;
549
+ });
550
+ }
551
+ return fields;
552
+ }
553
+
554
+ // TODO: remove this function when filters are passed directly from parent views
555
+ // This function is temporary and will be removed in the future
556
+ // Later, filters will be passed directly from parent views (category, product...) instead of being built within the Export resources modal
557
+ // The `selectedResourceIds` prop will also be removed
558
+ function tmpBuildFilters(selectedResourceIds) {
559
+ if (!selectedResourceIds || (selectedResourceIds === null || selectedResourceIds === void 0 ? void 0 : selectedResourceIds.length) === 0) return undefined;
560
+ const formattedIds = _mapInstanceProperty__default["default"](selectedResourceIds).call(selectedResourceIds, id => "\"".concat(id, "\"")).join(', ');
561
+ return ["id in (".concat(formattedIds, ")")];
562
+ }
563
+
564
+ function ownKeys$4(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
565
+ function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$4(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$4(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
566
+ const updateFieldGroupsWithIsCheckedValue = groups => {
567
+ const updateFields = (fields, parentChecked) => {
568
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => {
569
+ var _field$isRequired;
570
+ let isChecked = ((_field$isRequired = field.isRequired) !== null && _field$isRequired !== void 0 ? _field$isRequired : !field.isReadOnly && field.isSelectedByDefault) || parentChecked;
571
+ if (field.fields) {
572
+ const updatedFields = updateFields(field.fields, isChecked);
573
+ isChecked = false;
574
+ field.fields = updatedFields;
575
+ }
576
+ return _objectSpread$4(_objectSpread$4({}, field), {}, {
577
+ isChecked
578
+ });
579
+ });
580
+ };
581
+ return _mapInstanceProperty__default["default"](groups).call(groups, group => {
582
+ const updatedFields = updateFields(group.fields, false);
583
+ return _objectSpread$4(_objectSpread$4({}, group), {}, {
584
+ fields: updatedFields
585
+ });
586
+ });
587
+ };
588
+ const updateFieldGroupWithAdditionalFieldExtensions = groups => {
589
+ function updateAdditionalFieldExtensions(fields, additionalFieldExtensions) {
590
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => {
591
+ const updatedAdditionalFieldExtensions = [...additionalFieldExtensions, ...(field.additionalFieldExtensions || [])];
592
+ if (field.fields) {
593
+ field.fields = updateAdditionalFieldExtensions(field.fields, updatedAdditionalFieldExtensions);
594
+ }
595
+ return _objectSpread$4(_objectSpread$4({}, field), {}, {
596
+ additionalFieldExtensions: updatedAdditionalFieldExtensions
597
+ });
598
+ });
599
+ }
600
+ return _mapInstanceProperty__default["default"](groups).call(groups, group => {
601
+ return _objectSpread$4(_objectSpread$4({}, group), {}, {
602
+ fields: updateAdditionalFieldExtensions(group.fields, group.additionalFieldExtensions || [])
603
+ });
604
+ });
605
+ };
606
+
607
+ const _excluded = ["isSelectedByDefault"];
608
+ function ownKeys$3(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
609
+ function _objectSpread$3(e) { for (var r = 1; r < arguments.length; r++) { var _context3, _context4; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context3 = ownKeys$3(Object(t), !0)).call(_context3, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context4 = ownKeys$3(Object(t))).call(_context4, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
610
+ const useInitialValues = props => {
611
+ var _context;
612
+ const todayFormatted = moment__default["default"]().format('DD-MM-YY_HH-mm');
613
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => ({
614
+ locale: applicationContext.dataLocale
615
+ })),
616
+ locale = _useApplicationContex.locale;
617
+ const fields = _mapInstanceProperty__default["default"](_context = flattenNestedFields(props.fields)).call(_context, _ref => {
618
+ let isSelectedByDefault = _ref.isSelectedByDefault,
619
+ field = _objectWithoutProperties(_ref, _excluded);
620
+ return _objectSpread$3(_objectSpread$3({}, field), {}, {
621
+ isChecked: isSelectedByDefault !== null && isSelectedByDefault !== void 0 ? isSelectedByDefault : true
622
+ });
623
+ });
624
+ const groups = updateFieldGroupsWithIsCheckedValue(props.fieldGroups);
625
+ return React__default["default"].useMemo(() => {
626
+ var _context2;
627
+ return {
628
+ outputFormat: props.outputFormat,
629
+ fileName: _concatInstanceProperty__default["default"](_context2 = "".concat(resourceTypeToDisplayName({
630
+ resourceType: props.resourceType,
631
+ isUpperCase: true,
632
+ isPlural: true
633
+ }), "_Export_")).call(_context2, todayFormatted),
634
+ locales: [locale],
635
+ fields: checkRequiredFields(fields),
636
+ customFields: setInitialCheckedStateForCustomFields(props.customFields),
637
+ groups: updateFieldGroupWithAdditionalFieldExtensions(groups)
638
+ };
639
+ }, [props, locale, todayFormatted, fields, groups]);
640
+ };
641
+
642
+ async function createExportOperation(_ref) {
643
+ let projectKey = _ref.projectKey,
644
+ resourceType = _ref.resourceType,
645
+ fileName = _ref.fileName,
646
+ fileFormat = _ref.fileFormat,
647
+ fields = _ref.fields,
648
+ locales = _ref.locales,
649
+ filters = _ref.filters,
650
+ asyncDispatchFn = _ref.asyncDispatchFn;
651
+ const uri = "/proxy/export/".concat(projectKey, "/export-operations");
652
+ const response = await asyncDispatchFn(sdk.actions.post({
653
+ // FIXME: EXPORT is undefined
654
+ mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.EXPORT,
655
+ uri: uri,
656
+ headers: {
657
+ accept: 'application/json'
658
+ },
659
+ payload: {
660
+ resourceType,
661
+ fileName,
662
+ fileFormat,
663
+ fields,
664
+ locales,
665
+ filters
666
+ }
667
+ }));
668
+ if (!response.state) throw new InvalidResponseError('Invalid response');
669
+ return response;
670
+ }
671
+
672
+ const useStartExportOperation = props => {
673
+ const intl = reactIntl.useIntl();
674
+ const asyncDispatch = sdk.useAsyncDispatch();
675
+ const showNotification = actionsGlobal.useShowNotification();
676
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => {
677
+ var _applicationContext$p;
678
+ return {
679
+ locale: applicationContext.dataLocale,
680
+ projectKey: (_applicationContext$p = applicationContext.project) === null || _applicationContext$p === void 0 ? void 0 : _applicationContext$p.key
681
+ };
682
+ }),
683
+ projectKey = _useApplicationContex.projectKey;
684
+ const extractFieldsFromGroups = groups => {
685
+ let selectedGeneralFields = [];
686
+ const getSelectedFields = fields => {
687
+ return _filterInstanceProperty__default["default"](fields).call(fields, field => {
688
+ var _field$isChecked;
689
+ if (field.fields) {
690
+ return getSelectedFields(field.fields);
691
+ }
692
+ if (field.isChecked) selectedGeneralFields.push(field);
693
+ return (_field$isChecked = field.isChecked) !== null && _field$isChecked !== void 0 ? _field$isChecked : false;
694
+ });
695
+ };
696
+ _forEachInstanceProperty__default["default"](groups).call(groups, group => {
697
+ getSelectedFields(group.fields);
698
+ });
699
+ return sortFieldsByFieldOrder({
700
+ fields: extractFieldNamesAndAdditionalFieldExtensions(selectedGeneralFields),
701
+ fieldOrder: props.fieldOrder
702
+ });
703
+ };
704
+ const startExportOperation = async values => {
705
+ try {
706
+ const fields = extractFieldsFromGroups(values.groups);
707
+ const filters = tmpBuildFilters(props.selectedResourceIds);
708
+ const response = await createExportOperation({
709
+ projectKey,
710
+ resourceType: props.resourceType,
711
+ fileName: appendCsvOrJsonExtensionIfAbsent(values.fileName, values.outputFormat),
712
+ fileFormat: values.outputFormat,
713
+ locales: values.locales,
714
+ fields,
715
+ filters,
716
+ asyncDispatchFn: asyncDispatch
717
+ });
718
+ switch (response.state) {
719
+ case EXPORT_OPERATION_STATES.PROCESSING:
720
+ case EXPORT_OPERATION_STATES.COMPLETED:
721
+ showNotification({
722
+ kind: 'info',
723
+ domain: constants.DOMAINS.SIDE,
724
+ // @ts-ignore
725
+ text: intl.formatMessage(messages.exportOperationSuccessMessage, {
726
+ newline: getNewLine,
727
+ logsLink: msg => getExportLogsLink(projectKey, msg),
728
+ b: getBold
729
+ })
730
+ }, {
731
+ dismissAfter: 5000
732
+ });
733
+ if (typeof props.onExportSuccess === 'function') props.onExportSuccess();
734
+ break;
735
+ default:
736
+ throw new UnexpectedExportOperationStateError(response.state);
737
+ }
738
+ } catch (error) {
739
+ // TODO: custom error messages for each error type
740
+ showNotification({
741
+ text: intl.formatMessage(messages.unexpectedError),
742
+ kind: 'error',
743
+ domain: constants.DOMAINS.PAGE
744
+ });
745
+ } finally {
746
+ if (typeof props.onClose === 'function') props.onClose();
747
+ }
748
+ };
749
+ return {
750
+ startExportOperation
751
+ };
752
+ };
753
+
754
+ function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
755
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys$2(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
756
+ function ExportTextMessage() {
757
+ const intl = reactIntl.useIntl();
758
+ const _useExportResourcesCo = useExportResourcesContext(),
759
+ resourceType = _useExportResourcesCo.resourceType,
760
+ totalResourcesCount = _useExportResourcesCo.totalResourcesCount,
761
+ selectedResourceIds = _useExportResourcesCo.selectedResourceIds,
762
+ exportType = _useExportResourcesCo.exportType;
763
+ const resourceTypePlural = resourceTypeToDisplayName({
764
+ resourceType: resourceType,
765
+ isPlural: true
766
+ });
767
+ let message;
768
+ let count;
769
+ switch (exportType) {
770
+ case EXPORT_TYPES.ALL:
771
+ message = messages.exportAllMessage;
772
+ count = totalResourcesCount;
773
+ break;
774
+ case EXPORT_TYPES.SELECTED:
775
+ message = messages.exportSelectedMessage;
776
+ count = selectedResourceIds.length;
777
+ break;
778
+ default:
779
+ throw new UnexpectedExportTypeError(exportType);
780
+ }
781
+ return jsxRuntime.jsx(uiKit.Text.Body, {
782
+ "data-testid": "export-description",
783
+ intlMessage: _objectSpread$2(_objectSpread$2({}, message), {}, {
784
+ values: {
785
+ count: intl.formatNumber(count),
786
+ resourceType: resourceTypePlural,
787
+ b: getBold
788
+ }
789
+ })
790
+ });
791
+ }
792
+
793
+ const ExportFileSettingsStep = () => {
794
+ const intl = reactIntl.useIntl();
795
+ const _useExportResourcesCo = useExportResourcesContext(),
796
+ formik = _useExportResourcesCo.formik,
797
+ resourceType = _useExportResourcesCo.resourceType,
798
+ onClose = _useExportResourcesCo.onClose;
799
+ const resourceTypePlural = resourceTypeToDisplayName({
800
+ resourceType: resourceType,
801
+ isPlural: true
802
+ });
803
+ const _useApplicationContex = applicationShellConnectors.useApplicationContext(applicationContext => {
804
+ var _applicationContext$p;
805
+ return {
806
+ locale: applicationContext.dataLocale,
807
+ locales: ((_applicationContext$p = applicationContext.project) === null || _applicationContext$p === void 0 ? void 0 : _applicationContext$p.languages) || []
808
+ };
809
+ }),
810
+ locales = _useApplicationContex.locales,
811
+ locale = _useApplicationContex.locale;
812
+ const areAllLocalesChecked = _valuesInstanceProperty__default["default"](formik).locales.length === locales.length;
813
+ return jsxRuntime.jsx(applicationComponents.FormDialog, {
814
+ isOpen: true,
815
+ title: intl.formatMessage(messages.modalTitle, {
816
+ resourceType: resourceTypePlural
817
+ }),
818
+ labelPrimary: intl.formatMessage(messages.continue),
819
+ onPrimaryButtonClick: formik.submitForm,
820
+ isPrimaryButtonDisabled: !formik.isValid,
821
+ onSecondaryButtonClick: onClose,
822
+ onClose: onClose,
823
+ size: 16,
824
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
825
+ scale: "xxxl",
826
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
827
+ scale: "l",
828
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
829
+ alignItems: "center",
830
+ children: [jsxRuntime.jsx(uiKit.ExportIcon, {
831
+ size: "medium",
832
+ color: "neutral60"
833
+ }), jsxRuntime.jsx(ExportTextMessage, {})]
834
+ }), jsxRuntime.jsxs(uiKit.Spacings.Stack, {
835
+ scale: "m",
836
+ children: [jsxRuntime.jsx(uiKit.SelectField, {
837
+ name: "outputFormat",
838
+ onChange: formik.handleChange,
839
+ onBlur: formik.handleBlur,
840
+ value: _valuesInstanceProperty__default["default"](formik).outputFormat,
841
+ title: intl.formatMessage(messages.outputFormat),
842
+ options: OUTPUT_FORMAT_OPTIONS
843
+ }), jsxRuntime.jsx(uiKit.TextField, {
844
+ name: "fileName",
845
+ onChange: formik.handleChange,
846
+ onBlur: formik.handleBlur,
847
+ value: _valuesInstanceProperty__default["default"](formik).fileName,
848
+ title: intl.formatMessage(messages.fileName),
849
+ touched: formik.touched.fileName,
850
+ errors: formik.errors.fileName,
851
+ renderError: renderFileNameError
852
+ }), jsxRuntime.jsxs(uiKit.Spacings.Stack, {
853
+ scale: "xs",
854
+ children: [jsxRuntime.jsx(uiKit.SelectField, {
855
+ id: "locales",
856
+ name: "locales",
857
+ value: _valuesInstanceProperty__default["default"](formik).locales,
858
+ title: intl.formatMessage(messages.locale),
859
+ options: mapLocalesToOptions(locales),
860
+ isMulti: true,
861
+ onChange: formik.handleChange,
862
+ onBlur: formik.handleBlur,
863
+ touched: formik.touched.locales,
864
+ errors: formik.errors.locales,
865
+ renderError: renderLocaleError,
866
+ menuPortalTarget: document.body,
867
+ menuPortalZIndex: Z_INDEX_DROPDOWN
868
+ }), jsxRuntime.jsx(uiKit.CheckboxInput, {
869
+ isChecked: areAllLocalesChecked,
870
+ onChange: e => {
871
+ if (e.target.checked) formik.setFieldValue('locales', locales);else formik.setFieldValue('locales', [locale]);
872
+ },
873
+ children: intl.formatMessage(messages.selectAllLocales)
874
+ })]
875
+ })]
876
+ })]
877
+ }), jsxRuntime.jsx("div", {})]
878
+ })
879
+ });
880
+ };
881
+
882
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
883
+ var _ref = process.env.NODE_ENV === "production" ? {
884
+ name: "ti75j2",
885
+ styles: "margin:0"
886
+ } : {
887
+ name: "ozey8m-NoSearchResults",
888
+ styles: "margin:0;label:NoSearchResults;",
889
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vLXNlYXJjaC1yZXN1bHRzLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFlZ0IiLCJmaWxlIjoibm8tc2VhcmNoLXJlc3VsdHMuanN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FyZCwgU3BhY2luZ3MsIFRleHQgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC91aS1raXQnXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCdcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcydcblxuZXhwb3J0IGNvbnN0IE5vU2VhcmNoUmVzdWx0cyA9ICgpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8Q2FyZCBpbnNldFNjYWxlPVwieGxcIj5cbiAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cInNcIj5cbiAgICAgICAgPFRleHQuQm9keVxuICAgICAgICAgIGZvbnRXZWlnaHQ9XCJtZWRpdW1cIlxuICAgICAgICAgIGludGxNZXNzYWdlPXttZXNzYWdlcy50aGVyZUFyZU5vUmVzdWx0c31cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHQuQm9keSBpbnRsTWVzc2FnZT17bWVzc2FnZXMuc3VnZ2VzdGlvbnN9IC8+XG4gICAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICAgICAgPHVsXG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgYH1cbiAgICAgID5cbiAgICAgICAgPGxpPlxuICAgICAgICAgIDxUZXh0LkJvZHkgaW50bE1lc3NhZ2U9e21lc3NhZ2VzLmNoZWNrVGhlU3BlbGxpbmd9IC8+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaT5cbiAgICAgICAgICA8VGV4dC5Cb2R5IGludGxNZXNzYWdlPXttZXNzYWdlcy5zZWFyY2hCeUVudGVyaW5nVGhlRXhhY3RGaWVsZE5hbWV9IC8+XG4gICAgICAgIDwvbGk+XG4gICAgICA8L3VsPlxuICAgIDwvQ2FyZD5cbiAgKVxufVxuIl19 */",
890
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
891
+ };
892
+ const NoSearchResults = () => {
893
+ return jsxRuntime.jsxs(uiKit.Card, {
894
+ insetScale: "xl",
895
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Stack, {
896
+ scale: "s",
897
+ children: [jsxRuntime.jsx(uiKit.Text.Body, {
898
+ fontWeight: "medium",
899
+ intlMessage: messages.thereAreNoResults
900
+ }), jsxRuntime.jsx(uiKit.Text.Body, {
901
+ intlMessage: messages.suggestions
902
+ })]
903
+ }), jsxRuntime.jsxs("ul", {
904
+ css: _ref,
905
+ children: [jsxRuntime.jsx("li", {
906
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
907
+ intlMessage: messages.checkTheSpelling
908
+ })
909
+ }), jsxRuntime.jsx("li", {
910
+ children: jsxRuntime.jsx(uiKit.Text.Body, {
911
+ intlMessage: messages.searchByEnteringTheExactFieldName
912
+ })
913
+ })]
914
+ })]
915
+ });
916
+ };
917
+
918
+ function ownKeys$1(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
919
+ function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var _context7, _context8; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context7 = ownKeys$1(Object(t), !0)).call(_context7, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context8 = ownKeys$1(Object(t))).call(_context8, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
920
+ const StyledGroupCard = /*#__PURE__*/_styled__default["default"](uiKit.Card, process.env.NODE_ENV === "production" ? {
921
+ target: "e3xiyhb1"
922
+ } : {
923
+ target: "e3xiyhb1",
924
+ label: "StyledGroupCard"
925
+ })("border-right:", uiKit.designTokens.borderWidth1, " solid ", uiKit.designTokens.colorNeutral90, ";background-color:", uiKit.designTokens.colorNeutral98, ";height:100%;border-radius:0;", props => props.showTopBorder && /*#__PURE__*/react.css("border-top:", uiKit.designTokens.borderWidth1, " solid ", uiKit.designTokens.colorNeutral90, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledGroupCard;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cG9ydC1maWVsZHMtc2VsZWN0aW9uLXN0ZXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdDTyIsImZpbGUiOiJleHBvcnQtZmllbGRzLXNlbGVjdGlvbi1zdGVwLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJ1xuaW1wb3J0IHRocm90dGxlIGZyb20gJ2xvZGFzaC90aHJvdHRsZSdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgeyBGb3JtRGlhbG9nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cydcbmltcG9ydCB7XG4gIENhcmQsXG4gIENoZWNrYm94SW5wdXQsXG4gIEdyaWQsXG4gIExpbmssXG4gIFNwYWNpbmdzLFxuICBUZXh0LFxuICBTZWFyY2hUZXh0SW5wdXQsXG4gIGRlc2lnblRva2Vucyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0J1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0J1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlRXhwb3J0UmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4uL0Bob29rcydcbmltcG9ydCB7IEZJRUxEX0RFRklOSVRJT05TX1VSTFMgfSBmcm9tICcuLi9AY29uc3RhbnRzJ1xuaW1wb3J0IHsgcmVzb3VyY2VUeXBlVG9EaXNwbGF5TmFtZSB9IGZyb20gJy4uL0B1dGlscydcbmltcG9ydCB7IE5vU2VhcmNoUmVzdWx0cyB9IGZyb20gJy4vbm8tc2VhcmNoLXJlc3VsdHMnXG5pbXBvcnQgeyBGaWVsZEdyb3VwLCBGb3JtaWtGaWVsZCB9IGZyb20gJ0B0eXBlcydcblxuY29uc3QgU3R5bGVkR3JvdXBDYXJkID0gc3R5bGVkKENhcmQpPHsgc2hvd1RvcEJvcmRlcj86IGJvb2xlYW4gfT5gXG4gIGJvcmRlci1yaWdodDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JOZXV0cmFsOTh9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gICR7KHByb3BzKSA9PlxuICAgIHByb3BzLnNob3dUb3BCb3JkZXIgJiZcbiAgICBjc3NgXG4gICAgICBib3JkZXItdG9wOiAke2Rlc2lnblRva2Vucy5ib3JkZXJXaWR0aDF9IHNvbGlkXG4gICAgICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgICBgfVxuYFxuXG5jb25zdCBTdHlsZWRGaWVsZHNDYXJkID0gc3R5bGVkKENhcmQpPHsgc2hvd1RvcEJvcmRlcj86IGJvb2xlYW4gfT5gXG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gICR7KHByb3BzKSA9PlxuICAgIHByb3BzLnNob3dUb3BCb3JkZXIgJiZcbiAgICBjc3NgXG4gICAgICBib3JkZXItdG9wOiAke2Rlc2lnblRva2Vucy5ib3JkZXJXaWR0aDF9IHNvbGlkXG4gICAgICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgICBgfVxuYFxuXG5pbnRlcmZhY2UgRmlsdGVyZWRGaWVsZCBleHRlbmRzIEZvcm1pa0ZpZWxkIHtcbiAgaXNIaWRkZW4/OiBib29sZWFuXG59XG5pbnRlcmZhY2UgRmlsdGVyZWRHcm91cHMgZXh0ZW5kcyBGaWVsZEdyb3VwIHtcbiAgaXNIaWRkZW4/OiBib29sZWFuXG4gIGZpZWxkczogRmlsdGVyZWRGaWVsZFtdXG59XG5cbnR5cGUgRmllbGRTZWN0aW9uc1Byb3BzID0ge1xuICBmaWVsZHM/OiBGaWx0ZXJlZEZpZWxkW11cbiAgcGFyZW50S2V5czogc3RyaW5nW11cbiAgZm9ybWlrOiBhbnlcbiAgaXNBbnlTaWJsaW5nQ2hlY2tlZDogYm9vbGVhblxufVxuXG5jb25zdCBGaWVsZFNlY3Rpb25zID0gKHtcbiAgZmllbGRzLFxuICBwYXJlbnRLZXlzLFxuICBmb3JtaWssXG4gIGlzQW55U2libGluZ0NoZWNrZWQsXG59OiBGaWVsZFNlY3Rpb25zUHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJzXCI+XG4gICAgICB7ZmllbGRzPy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBpc0F0bGVhc3RPbmVDaGlsZENoZWNrZWQgPSAoKSA9PiB7XG4gICAgICAgICAgZnVuY3Rpb24gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcz8uc29tZSgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICBmaWVsZC5pc0NoZWNrZWQgfHwgY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FueU9mVGhlQ2hpbGRGaWVsZHNDaGVja2VkID0gaXNBdGxlYXN0T25lQ2hpbGRDaGVja2VkKClcbiAgICAgICAgaWYgKGZpZWxkLmlzSGlkZGVuKSByZXR1cm4gbnVsbFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2ZpZWxkLm5hbWV9LSR7aW5kZXh9YH0+XG4gICAgICAgICAgICA8Q2hlY2tib3hJbnB1dFxuICAgICAgICAgICAgICBpc0NoZWNrZWQ9e1xuICAgICAgICAgICAgICAgIGZpZWxkLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgID8gaXNBbnlTaWJsaW5nQ2hlY2tlZFxuICAgICAgICAgICAgICAgICAgOiBpc0FueU9mVGhlQ2hpbGRGaWVsZHNDaGVja2VkIHx8IGZpZWxkLmlzQ2hlY2tlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlzUmVhZE9ubHk9e2ZpZWxkLmlzUmVhZE9ubHkgfHwgZmllbGQuaXNSZXF1aXJlZH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3BhcmVudEtleXMuam9pbignLicpfS5maWVsZHNbJHtpbmRleH1dYFxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGwgY2hpbGQgZmllbGRzXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQWxsQ2hpbGRGaWVsZHNDaGVja2VkID0gKFxuICAgICAgICAgICAgICAgICAgcGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYm9vbGVhblxuICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGdldChmb3JtaWsudmFsdWVzLCBwYXRoKVxuICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFBhdGggPSBgJHtwYXRofS5maWVsZHNbJHtpfV1gXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWlrLnNldEZpZWxkVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2ZpZWxkUGF0aH0uaXNDaGVja2VkYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyBgZmFsc2VgIHRvIGF2b2lkIHJldmFsaWRhdGluZyB0aGUgZm9ybSB3aXRoIGludGVybWVkaWF0ZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWxsQ2hpbGRGaWVsZHNDaGVja2VkKGZpZWxkUGF0aCwgY2hlY2tlZClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgZm9ybWlrLnNldEZpZWxkVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIGAke3BhdGh9LmlzQ2hlY2tlZGAsXG4gICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LmNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgYGZhbHNlYCB0byBhdm9pZCByZXZhbGlkYXRpbmcgdGhlIGZvcm0gd2l0aCBpbnRlcm1lZGlhdGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZChwYXRoLCBlLnRhcmdldC5jaGVja2VkKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZmllbGQubGFiZWx9IHtmaWVsZC5pc1JlcXVpcmVkICYmICcqJ31cbiAgICAgICAgICAgIDwvQ2hlY2tib3hJbnB1dD5cbiAgICAgICAgICAgIHtmaWVsZC5maWVsZHMgJiYgZmllbGQuZmllbGRzPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPFNwYWNpbmdzLklubGluZSBzY2FsZT1cImxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgPEZpZWxkU2VjdGlvbnNcbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGQuZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgICAgICBwYXJlbnRLZXlzPXtbLi4ucGFyZW50S2V5cywgYGZpZWxkc1ske2luZGV4fV1gXX1cbiAgICAgICAgICAgICAgICAgIGlzQW55U2libGluZ0NoZWNrZWQ9e2lzQW55U2libGluZ0NoZWNrZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICAgIH0pfVxuICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gIClcbn1cblxudHlwZSBGaWVsZEdyb3VwU2VjdGlvblByb3BzID0ge1xuICBpbmRleDogbnVtYmVyXG4gIGdyb3VwOiBGaWx0ZXJlZEdyb3Vwc1xuICBmb3JtaWs6IGFueVxufVxuXG5mdW5jdGlvbiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgIHJldHVybiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGZpZWxkLmZpZWxkcylcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZCB8fCBmaWVsZC5pc1JlcXVpcmVkIHx8IGZpZWxkLmlzUmVhZE9ubHlcbiAgfSlcbn1cblxuZnVuY3Rpb24gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmllbGRzLnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgaWYgKGZpZWxkLmZpZWxkcykge1xuICAgICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZCB8fCBjaGVja0F0TGVhc3RPbmVGaWVsZENoZWNrZWQoZmllbGQuZmllbGRzKVxuICAgIH1cbiAgICByZXR1cm4gZmllbGQuaXNDaGVja2VkXG4gIH0pXG59XG5cbmNvbnN0IEZpZWxkR3JvdXBTZWN0aW9uID0gKHtcbiAgZ3JvdXAsXG4gIGluZGV4LFxuICBmb3JtaWssXG59OiBGaWVsZEdyb3VwU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGFsbEFsbEZpZWxkc1NlbGVjdGVkID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGdyb3VwLmZpZWxkcyksXG4gICAgW2dyb3VwLmZpZWxkc11cbiAgKVxuXG4gIGNvbnN0IGlzQXRsZWFzdE9uZUZpZWxkQ2hlY2tlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGdyb3VwLmZpZWxkcyksXG4gICAgW2dyb3VwLmZpZWxkc11cbiAgKVxuXG4gIGNvbnN0IHBhcmVudEtleSA9IGBncm91cHNbJHtpbmRleH1dYFxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUFsbEZpZWxkcyA9IChlKSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IGdldChmb3JtaWsudmFsdWVzLCBwYXJlbnRLZXkpXG4gICAgZnVuY3Rpb24gdXBkYXRlQWxsRmllbGRzKGZpZWxkcywgY2hlY2tlZCkge1xuICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICBmaWVsZHM6IHVwZGF0ZUFsbEZpZWxkcyhmaWVsZC5maWVsZHMsIGNoZWNrZWQpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuaXNSZWFkT25seSB8fCBmaWVsZC5pc1JlcXVpcmVkKSByZXR1cm4gZmllbGRcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZm9ybWlrLnNldEZpZWxkVmFsdWUocGFyZW50S2V5LCB7XG4gICAgICAuLi5pdGVtLFxuICAgICAgZmllbGRzOiB1cGRhdGVBbGxGaWVsZHMoaXRlbS5maWVsZHMsIGUudGFyZ2V0LmNoZWNrZWQpLFxuICAgIH0pXG4gIH1cblxuICBpZiAoZ3JvdXAuaXNIaWRkZW4pIHJldHVybiBudWxsXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHcmlkLkl0ZW0+XG4gICAgICAgIDxTdHlsZWRHcm91cENhcmQgdHlwZT1cImZsYXRcIiBpbnNldFNjYWxlPVwibFwiIHNob3dUb3BCb3JkZXI9e3RydWV9PlxuICAgICAgICAgIDxDaGVja2JveElucHV0XG4gICAgICAgICAgICBpc0luZGV0ZXJtaW5hdGU9eyFhbGxBbGxGaWVsZHNTZWxlY3RlZCAmJiBpc0F0bGVhc3RPbmVGaWVsZENoZWNrZWR9XG4gICAgICAgICAgICBpc0NoZWNrZWQ9e2FsbEFsbEZpZWxkc1NlbGVjdGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZUFsbEZpZWxkc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JvdXAuZ3JvdXBMYWJlbH1cbiAgICAgICAgICA8L0NoZWNrYm94SW5wdXQ+XG4gICAgICAgIDwvU3R5bGVkR3JvdXBDYXJkPlxuICAgICAgPC9HcmlkLkl0ZW0+XG4gICAgICA8R3JpZC5JdGVtPlxuICAgICAgICA8U3R5bGVkRmllbGRzQ2FyZCB0eXBlPVwiZmxhdFwiIGluc2V0U2NhbGU9XCJsXCIgc2hvd1RvcEJvcmRlcj17dHJ1ZX0+XG4gICAgICAgICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAgICAgICAgPEZpZWxkU2VjdGlvbnNcbiAgICAgICAgICAgICAgZmllbGRzPXtncm91cC5maWVsZHN9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICBwYXJlbnRLZXlzPXtbcGFyZW50S2V5XX1cbiAgICAgICAgICAgICAgaXNBbnlTaWJsaW5nQ2hlY2tlZD17aXNBdGxlYXN0T25lRmllbGRDaGVja2VkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICAgICAgICA8L1N0eWxlZEZpZWxkc0NhcmQ+XG4gICAgICA8L0dyaWQuSXRlbT5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgRXhwb3J0RmllbGRzU2VsZWN0aW9uU3RlcCA9ICgpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKVxuICBjb25zdCBbZmllbGRTZWFyY2hUZXJtLCBzZXRGaWVsZFNlYXJjaFRlcm1dID0gUmVhY3QudXNlU3RhdGUoJycpXG4gIGNvbnN0IHsgZm9ybWlrLCBzZXRDdXJyZW50U3RlcCwgcmVzb3VyY2VUeXBlLCBvbkNsb3NlIH0gPVxuICAgIHVzZUV4cG9ydFJlc291cmNlc0NvbnRleHQoKVxuICBjb25zdCByZXNvdXJjZVR5cGVQbHVyYWwgPSByZXNvdXJjZVR5cGVUb0Rpc3BsYXlOYW1lKHtcbiAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSxcbiAgICBpc1BsdXJhbDogdHJ1ZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZvcm1pay52YWxpZGF0ZUZvcm0oKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2Zvcm1pay52YWx1ZXMuZ3JvdXBzXSlcbiAgLy8gYWRkcyBgaXNIaWRkZW5gIHByb3BlcnR5IHRvIGVhY2ggZmllbGQgYmFzZWQgb24gc2VhcmNoIHRlcm1cbiAgY29uc3QgZmlsdGVyZWRHcm91cHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVGaWVsZHMgPSAoZmllbGRzLCBwYXJlbnRNYXRjaGVzOiBib29sZWFuKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGZpZWxkLmxhYmVsXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAuaW5jbHVkZXMoZmllbGRTZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIGxldCBpc0hpZGRlbiA9ICFtYXRjaGVzICYmICFwYXJlbnRNYXRjaGVzXG4gICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRzID0gdXBkYXRlRmllbGRzKGZpZWxkLmZpZWxkcywgbWF0Y2hlcylcbiAgICAgICAgICBpc0hpZGRlbiA9IGlzSGlkZGVuICYmIHVwZGF0ZWRGaWVsZHMuZXZlcnkoKGYpID0+IGYuaXNIaWRkZW4pXG4gICAgICAgICAgZmllbGQgPSB7XG4gICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgIGZpZWxkczogdXBkYXRlZEZpZWxkcyxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIGlzSGlkZGVuIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICghZmllbGRTZWFyY2hUZXJtPy50cmltKCk/Lmxlbmd0aCkgcmV0dXJuIGZvcm1pay52YWx1ZXMuZ3JvdXBzXG5cbiAgICByZXR1cm4gZm9ybWlrLnZhbHVlcy5ncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEZpZWxkcyA9IHVwZGF0ZUZpZWxkcyhncm91cC5maWVsZHMsIGZhbHNlKVxuICAgICAgY29uc3QgaXNIaWRkZW4gPSB1cGRhdGVkRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGQuaXNIaWRkZW4pXG4gICAgICByZXR1cm4geyAuLi5ncm91cCwgZmllbGRzOiB1cGRhdGVkRmllbGRzLCBpc0hpZGRlbiB9XG4gICAgfSlcbiAgfSwgW2Zvcm1pay52YWx1ZXMuZ3JvdXBzLCBmaWVsZFNlYXJjaFRlcm1dKVxuXG4gIGNvbnN0IG9uU2VhcmNoQ2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBzZXRGaWVsZFNlYXJjaFRlcm0oZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgIH0sXG4gICAgW3NldEZpZWxkU2VhcmNoVGVybV1cbiAgKVxuXG4gIGNvbnN0IGhhc1Jlc3VsdHMgPSBCb29sZWFuKGZpbHRlcmVkR3JvdXBzLmZpbmQoKGdyb3VwKSA9PiAhZ3JvdXAuaXNIaWRkZW4pKVxuXG4gIGNvbnN0IG9uU2VhcmNoQ2hhbmdlVGhyb3R0bGVkID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiB0aHJvdHRsZShvblNlYXJjaENoYW5nZSwgMzAwKSxcbiAgICBbb25TZWFyY2hDaGFuZ2VdXG4gIClcblxuICBjb25zdCBvblNlYXJjaFJlc2V0ID0gKCkgPT4ge1xuICAgIHNldEZpZWxkU2VhcmNoVGVybSgnJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEZvcm1EaWFsb2dcbiAgICAgIGlzT3BlblxuICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5tb2RhbFRpdGxlLCB7XG4gICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlUGx1cmFsLFxuICAgICAgfSl9XG4gICAgICBsYWJlbFByaW1hcnk9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zdGFydEV4cG9ydCl9XG4gICAgICBvblByaW1hcnlCdXR0b25DbGljaz17Zm9ybWlrLnN1Ym1pdEZvcm19XG4gICAgICBpc1ByaW1hcnlCdXR0b25EaXNhYmxlZD17IWZvcm1pay5pc1ZhbGlkfVxuICAgICAgbGFiZWxTZWNvbmRhcnk9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5iYWNrKX1cbiAgICAgIG9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRTdGVwKDEpfVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIHNpemU9ezE2fVxuICAgID5cbiAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cInhsXCI+XG4gICAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cIm1cIj5cbiAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICAgICAgPFRleHQuQm9keSBpbnRsTWVzc2FnZT17bWVzc2FnZXMuc2VsZWN0RmllbGRzVG9FeHBvcnR9IC8+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBpc0V4dGVybmFsXG4gICAgICAgICAgICAgIHRvbmU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBpbnRsTWVzc2FnZT17bWVzc2FnZXMuZmllbGREZWZpbml0aW9uc31cbiAgICAgICAgICAgICAgdG89e0ZJRUxEX0RFRklOSVRJT05TX1VSTFNbcmVzb3VyY2VUeXBlXX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgPFNlYXJjaFRleHRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zZWFyY2hGb3JGaWVsZHMpfVxuICAgICAgICAgICAgdmFsdWU9e2ZpZWxkU2VhcmNoVGVybX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblNlYXJjaENoYW5nZVRocm90dGxlZH1cbiAgICAgICAgICAgIG9uUmVzZXQ9e29uU2VhcmNoUmVzZXR9XG4gICAgICAgICAgICAvLyBUT0RPOiBgU2VhcmNoVGV4dElucHV0YCBwcm9wcyB0byBiZSBpbXByb3ZlZC4gVGhlIGBvblN1Ym1pdGAgY2FsbGJhY2sgc2hvdWxkbid0IGJlIG1hbmRhdG9yeVxuICAgICAgICAgICAgb25TdWJtaXQ9eygpID0+IHt9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2hhc1Jlc3VsdHMgPyAoXG4gICAgICAgICAgICA8Q2FyZCBpbnNldFNjYWxlPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGdyaWRBdXRvRmxvdz1cInJvd1wiXG4gICAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1ucz17YCR7ZGVzaWduVG9rZW5zLmNvbnN0cmFpbnQ1fSBhdXRvYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZEdyb3Vwcy5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPEZpZWxkR3JvdXBTZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17Z3JvdXAuZ3JvdXBMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXA9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8Tm9TZWFyY2hSZXN1bHRzIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TcGFjaW5ncy5TdGFjaz5cbiAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgPC9Gb3JtRGlhbG9nPlxuICApXG59XG4iXX0= */"), ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cG9ydC1maWVsZHMtc2VsZWN0aW9uLXN0ZXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdCaUUiLCJmaWxlIjoiZXhwb3J0LWZpZWxkcy1zZWxlY3Rpb24tc3RlcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCdcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHsgRm9ybURpYWxvZyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnXG5pbXBvcnQge1xuICBDYXJkLFxuICBDaGVja2JveElucHV0LFxuICBHcmlkLFxuICBMaW5rLFxuICBTcGFjaW5ncyxcbiAgVGV4dCxcbiAgU2VhcmNoVGV4dElucHV0LFxuICBkZXNpZ25Ub2tlbnMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCdcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCdcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcydcbmltcG9ydCB7IHVzZUV4cG9ydFJlc291cmNlc0NvbnRleHQgfSBmcm9tICcuLi9AaG9va3MnXG5pbXBvcnQgeyBGSUVMRF9ERUZJTklUSU9OU19VUkxTIH0gZnJvbSAnLi4vQGNvbnN0YW50cydcbmltcG9ydCB7IHJlc291cmNlVHlwZVRvRGlzcGxheU5hbWUgfSBmcm9tICcuLi9AdXRpbHMnXG5pbXBvcnQgeyBOb1NlYXJjaFJlc3VsdHMgfSBmcm9tICcuL25vLXNlYXJjaC1yZXN1bHRzJ1xuaW1wb3J0IHsgRmllbGRHcm91cCwgRm9ybWlrRmllbGQgfSBmcm9tICdAdHlwZXMnXG5cbmNvbnN0IFN0eWxlZEdyb3VwQ2FyZCA9IHN0eWxlZChDYXJkKTx7IHNob3dUb3BCb3JkZXI/OiBib29sZWFuIH0+YFxuICBib3JkZXItcmlnaHQ6ICR7ZGVzaWduVG9rZW5zLmJvcmRlcldpZHRoMX0gc29saWRcbiAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDk4fTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAkeyhwcm9wcykgPT5cbiAgICBwcm9wcy5zaG93VG9wQm9yZGVyICYmXG4gICAgY3NzYFxuICAgICAgYm9yZGVyLXRvcDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gICAgYH1cbmBcblxuY29uc3QgU3R5bGVkRmllbGRzQ2FyZCA9IHN0eWxlZChDYXJkKTx7IHNob3dUb3BCb3JkZXI/OiBib29sZWFuIH0+YFxuICBib3JkZXItcmFkaXVzOiAwO1xuICAkeyhwcm9wcykgPT5cbiAgICBwcm9wcy5zaG93VG9wQm9yZGVyICYmXG4gICAgY3NzYFxuICAgICAgYm9yZGVyLXRvcDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gICAgYH1cbmBcblxuaW50ZXJmYWNlIEZpbHRlcmVkRmllbGQgZXh0ZW5kcyBGb3JtaWtGaWVsZCB7XG4gIGlzSGlkZGVuPzogYm9vbGVhblxufVxuaW50ZXJmYWNlIEZpbHRlcmVkR3JvdXBzIGV4dGVuZHMgRmllbGRHcm91cCB7XG4gIGlzSGlkZGVuPzogYm9vbGVhblxuICBmaWVsZHM6IEZpbHRlcmVkRmllbGRbXVxufVxuXG50eXBlIEZpZWxkU2VjdGlvbnNQcm9wcyA9IHtcbiAgZmllbGRzPzogRmlsdGVyZWRGaWVsZFtdXG4gIHBhcmVudEtleXM6IHN0cmluZ1tdXG4gIGZvcm1pazogYW55XG4gIGlzQW55U2libGluZ0NoZWNrZWQ6IGJvb2xlYW5cbn1cblxuY29uc3QgRmllbGRTZWN0aW9ucyA9ICh7XG4gIGZpZWxkcyxcbiAgcGFyZW50S2V5cyxcbiAgZm9ybWlrLFxuICBpc0FueVNpYmxpbmdDaGVja2VkLFxufTogRmllbGRTZWN0aW9uc1Byb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAge2ZpZWxkcz8ubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdGxlYXN0T25lQ2hpbGRDaGVja2VkID0gKCkgPT4ge1xuICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZHM/LnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgZmllbGQuaXNDaGVja2VkIHx8IGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZC5maWVsZHMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZC5maWVsZHMpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNBbnlPZlRoZUNoaWxkRmllbGRzQ2hlY2tlZCA9IGlzQXRsZWFzdE9uZUNoaWxkQ2hlY2tlZCgpXG4gICAgICAgIGlmIChmaWVsZC5pc0hpZGRlbikgcmV0dXJuIG51bGxcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtgJHtmaWVsZC5uYW1lfS0ke2luZGV4fWB9PlxuICAgICAgICAgICAgPENoZWNrYm94SW5wdXRcbiAgICAgICAgICAgICAgaXNDaGVja2VkPXtcbiAgICAgICAgICAgICAgICBmaWVsZC5pc1JlYWRPbmx5XG4gICAgICAgICAgICAgICAgICA/IGlzQW55U2libGluZ0NoZWNrZWRcbiAgICAgICAgICAgICAgICAgIDogaXNBbnlPZlRoZUNoaWxkRmllbGRzQ2hlY2tlZCB8fCBmaWVsZC5pc0NoZWNrZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtmaWVsZC5pc1JlYWRPbmx5IHx8IGZpZWxkLmlzUmVxdWlyZWR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBgJHtwYXJlbnRLZXlzLmpvaW4oJy4nKX0uZmllbGRzWyR7aW5kZXh9XWBcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgYWxsIGNoaWxkIGZpZWxkc1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZCA9IChcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGJvb2xlYW5cbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBnZXQoZm9ybWlrLnZhbHVlcywgcGF0aClcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLmZvckVhY2goKGZpZWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRQYXRoID0gYCR7cGF0aH0uZmllbGRzWyR7aX1dYFxuICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtmaWVsZFBhdGh9LmlzQ2hlY2tlZGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgYGZhbHNlYCB0byBhdm9pZCByZXZhbGlkYXRpbmcgdGhlIGZvcm0gd2l0aCBpbnRlcm1lZGlhdGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZChmaWVsZFBhdGgsIGNoZWNrZWQpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZmllbGQuZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICBgJHtwYXRofS5pc0NoZWNrZWRgLFxuICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5jaGVja2VkLFxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIGBmYWxzZWAgdG8gYXZvaWQgcmV2YWxpZGF0aW5nIHRoZSBmb3JtIHdpdGggaW50ZXJtZWRpYXRlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1cGRhdGVBbGxDaGlsZEZpZWxkc0NoZWNrZWQocGF0aCwgZS50YXJnZXQuY2hlY2tlZClcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2ZpZWxkLmxhYmVsfSB7ZmllbGQuaXNSZXF1aXJlZCAmJiAnKid9XG4gICAgICAgICAgICA8L0NoZWNrYm94SW5wdXQ+XG4gICAgICAgICAgICB7ZmllbGQuZmllbGRzICYmIGZpZWxkLmZpZWxkcz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgIDxGaWVsZFNlY3Rpb25zXG4gICAgICAgICAgICAgICAgICBmaWVsZHM9e2ZpZWxkLmZpZWxkc31cbiAgICAgICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICAgICAgcGFyZW50S2V5cz17Wy4uLnBhcmVudEtleXMsIGBmaWVsZHNbJHtpbmRleH1dYF19XG4gICAgICAgICAgICAgICAgICBpc0FueVNpYmxpbmdDaGVja2VkPXtpc0FueVNpYmxpbmdDaGVja2VkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApXG4gICAgICB9KX1cbiAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICApXG59XG5cbnR5cGUgRmllbGRHcm91cFNlY3Rpb25Qcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlclxuICBncm91cDogRmlsdGVyZWRHcm91cHNcbiAgZm9ybWlrOiBhbnlcbn1cblxuZnVuY3Rpb24gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICByZXR1cm4gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChmaWVsZC5maWVsZHMpXG4gICAgfVxuICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWQgfHwgZmllbGQuaXNSZXF1aXJlZCB8fCBmaWVsZC5pc1JlYWRPbmx5XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpZWxkcy5zb21lKChmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWQgfHwgY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZFxuICB9KVxufVxuXG5jb25zdCBGaWVsZEdyb3VwU2VjdGlvbiA9ICh7XG4gIGdyb3VwLFxuICBpbmRleCxcbiAgZm9ybWlrLFxufTogRmllbGRHcm91cFNlY3Rpb25Qcm9wcykgPT4ge1xuICBjb25zdCBhbGxBbGxGaWVsZHNTZWxlY3RlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChncm91cC5maWVsZHMpLFxuICAgIFtncm91cC5maWVsZHNdXG4gIClcblxuICBjb25zdCBpc0F0bGVhc3RPbmVGaWVsZENoZWNrZWQgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChncm91cC5maWVsZHMpLFxuICAgIFtncm91cC5maWVsZHNdXG4gIClcblxuICBjb25zdCBwYXJlbnRLZXkgPSBgZ3JvdXBzWyR7aW5kZXh9XWBcblxuICBjb25zdCBoYW5kbGVDaGFuZ2VBbGxGaWVsZHMgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBnZXQoZm9ybWlrLnZhbHVlcywgcGFyZW50S2V5KVxuICAgIGZ1bmN0aW9uIHVwZGF0ZUFsbEZpZWxkcyhmaWVsZHMsIGNoZWNrZWQpIHtcbiAgICAgIHJldHVybiBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgZmllbGRzOiB1cGRhdGVBbGxGaWVsZHMoZmllbGQuZmllbGRzLCBjaGVja2VkKSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmlzUmVhZE9ubHkgfHwgZmllbGQuaXNSZXF1aXJlZCkgcmV0dXJuIGZpZWxkXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgaXNDaGVja2VkOiBjaGVja2VkLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKHBhcmVudEtleSwge1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGZpZWxkczogdXBkYXRlQWxsRmllbGRzKGl0ZW0uZmllbGRzLCBlLnRhcmdldC5jaGVja2VkKSxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGdyb3VwLmlzSGlkZGVuKSByZXR1cm4gbnVsbFxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R3JpZC5JdGVtPlxuICAgICAgICA8U3R5bGVkR3JvdXBDYXJkIHR5cGU9XCJmbGF0XCIgaW5zZXRTY2FsZT1cImxcIiBzaG93VG9wQm9yZGVyPXt0cnVlfT5cbiAgICAgICAgICA8Q2hlY2tib3hJbnB1dFxuICAgICAgICAgICAgaXNJbmRldGVybWluYXRlPXshYWxsQWxsRmllbGRzU2VsZWN0ZWQgJiYgaXNBdGxlYXN0T25lRmllbGRDaGVja2VkfVxuICAgICAgICAgICAgaXNDaGVja2VkPXthbGxBbGxGaWVsZHNTZWxlY3RlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2VBbGxGaWVsZHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dyb3VwLmdyb3VwTGFiZWx9XG4gICAgICAgICAgPC9DaGVja2JveElucHV0PlxuICAgICAgICA8L1N0eWxlZEdyb3VwQ2FyZD5cbiAgICAgIDwvR3JpZC5JdGVtPlxuICAgICAgPEdyaWQuSXRlbT5cbiAgICAgICAgPFN0eWxlZEZpZWxkc0NhcmQgdHlwZT1cImZsYXRcIiBpbnNldFNjYWxlPVwibFwiIHNob3dUb3BCb3JkZXI9e3RydWV9PlxuICAgICAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cInNcIj5cbiAgICAgICAgICAgIDxGaWVsZFNlY3Rpb25zXG4gICAgICAgICAgICAgIGZpZWxkcz17Z3JvdXAuZmllbGRzfVxuICAgICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgICAgcGFyZW50S2V5cz17W3BhcmVudEtleV19XG4gICAgICAgICAgICAgIGlzQW55U2libGluZ0NoZWNrZWQ9e2lzQXRsZWFzdE9uZUZpZWxkQ2hlY2tlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5TdGFjaz5cbiAgICAgICAgPC9TdHlsZWRGaWVsZHNDYXJkPlxuICAgICAgPC9HcmlkLkl0ZW0+XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IEV4cG9ydEZpZWxkc1NlbGVjdGlvblN0ZXAgPSAoKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKClcbiAgY29uc3QgW2ZpZWxkU2VhcmNoVGVybSwgc2V0RmllbGRTZWFyY2hUZXJtXSA9IFJlYWN0LnVzZVN0YXRlKCcnKVxuICBjb25zdCB7IGZvcm1paywgc2V0Q3VycmVudFN0ZXAsIHJlc291cmNlVHlwZSwgb25DbG9zZSB9ID1cbiAgICB1c2VFeHBvcnRSZXNvdXJjZXNDb250ZXh0KClcbiAgY29uc3QgcmVzb3VyY2VUeXBlUGx1cmFsID0gcmVzb3VyY2VUeXBlVG9EaXNwbGF5TmFtZSh7XG4gICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUsXG4gICAgaXNQbHVyYWw6IHRydWUsXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBmb3JtaWsudmFsaWRhdGVGb3JtKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtmb3JtaWsudmFsdWVzLmdyb3Vwc10pXG4gIC8vIGFkZHMgYGlzSGlkZGVuYCBwcm9wZXJ0eSB0byBlYWNoIGZpZWxkIGJhc2VkIG9uIHNlYXJjaCB0ZXJtXG4gIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlRmllbGRzID0gKGZpZWxkcywgcGFyZW50TWF0Y2hlczogYm9vbGVhbikgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmaWVsZC5sYWJlbFxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgLmluY2x1ZGVzKGZpZWxkU2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICBsZXQgaXNIaWRkZW4gPSAhbWF0Y2hlcyAmJiAhcGFyZW50TWF0Y2hlc1xuICAgICAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkcyA9IHVwZGF0ZUZpZWxkcyhmaWVsZC5maWVsZHMsIG1hdGNoZXMpXG4gICAgICAgICAgaXNIaWRkZW4gPSBpc0hpZGRlbiAmJiB1cGRhdGVkRmllbGRzLmV2ZXJ5KChmKSA9PiBmLmlzSGlkZGVuKVxuICAgICAgICAgIGZpZWxkID0ge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICBmaWVsZHM6IHVwZGF0ZWRGaWVsZHMsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLmZpZWxkLCBpc0hpZGRlbiB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWZpZWxkU2VhcmNoVGVybT8udHJpbSgpPy5sZW5ndGgpIHJldHVybiBmb3JtaWsudmFsdWVzLmdyb3Vwc1xuXG4gICAgcmV0dXJuIGZvcm1pay52YWx1ZXMuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZHMgPSB1cGRhdGVGaWVsZHMoZ3JvdXAuZmllbGRzLCBmYWxzZSlcbiAgICAgIGNvbnN0IGlzSGlkZGVuID0gdXBkYXRlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkLmlzSGlkZGVuKVxuICAgICAgcmV0dXJuIHsgLi4uZ3JvdXAsIGZpZWxkczogdXBkYXRlZEZpZWxkcywgaXNIaWRkZW4gfVxuICAgIH0pXG4gIH0sIFtmb3JtaWsudmFsdWVzLmdyb3VwcywgZmllbGRTZWFyY2hUZXJtXSlcblxuICBjb25zdCBvblNlYXJjaENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgc2V0RmllbGRTZWFyY2hUZXJtKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICB9LFxuICAgIFtzZXRGaWVsZFNlYXJjaFRlcm1dXG4gIClcblxuICBjb25zdCBoYXNSZXN1bHRzID0gQm9vbGVhbihmaWx0ZXJlZEdyb3Vwcy5maW5kKChncm91cCkgPT4gIWdyb3VwLmlzSGlkZGVuKSlcblxuICBjb25zdCBvblNlYXJjaENoYW5nZVRocm90dGxlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gdGhyb3R0bGUob25TZWFyY2hDaGFuZ2UsIDMwMCksXG4gICAgW29uU2VhcmNoQ2hhbmdlXVxuICApXG5cbiAgY29uc3Qgb25TZWFyY2hSZXNldCA9ICgpID0+IHtcbiAgICBzZXRGaWVsZFNlYXJjaFRlcm0oJycpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxGb3JtRGlhbG9nXG4gICAgICBpc09wZW5cbiAgICAgIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMubW9kYWxUaXRsZSwge1xuICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZVBsdXJhbCxcbiAgICAgIH0pfVxuICAgICAgbGFiZWxQcmltYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc3RhcnRFeHBvcnQpfVxuICAgICAgb25QcmltYXJ5QnV0dG9uQ2xpY2s9e2Zvcm1pay5zdWJtaXRGb3JtfVxuICAgICAgaXNQcmltYXJ5QnV0dG9uRGlzYWJsZWQ9eyFmb3JtaWsuaXNWYWxpZH1cbiAgICAgIGxhYmVsU2Vjb25kYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuYmFjayl9XG4gICAgICBvblNlY29uZGFyeUJ1dHRvbkNsaWNrPXsoKSA9PiBzZXRDdXJyZW50U3RlcCgxKX1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBzaXplPXsxNn1cbiAgICA+XG4gICAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJ4bFwiPlxuICAgICAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJtXCI+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxUZXh0LkJvZHkgaW50bE1lc3NhZ2U9e21lc3NhZ2VzLnNlbGVjdEZpZWxkc1RvRXhwb3J0fSAvPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaXNFeHRlcm5hbFxuICAgICAgICAgICAgICB0b25lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgaW50bE1lc3NhZ2U9e21lc3NhZ2VzLmZpZWxkRGVmaW5pdGlvbnN9XG4gICAgICAgICAgICAgIHRvPXtGSUVMRF9ERUZJTklUSU9OU19VUkxTW3Jlc291cmNlVHlwZV19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgIDxTZWFyY2hUZXh0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc2VhcmNoRm9yRmllbGRzKX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWVsZFNlYXJjaFRlcm19XG4gICAgICAgICAgICBvbkNoYW5nZT17b25TZWFyY2hDaGFuZ2VUaHJvdHRsZWR9XG4gICAgICAgICAgICBvblJlc2V0PXtvblNlYXJjaFJlc2V0fVxuICAgICAgICAgICAgLy8gVE9ETzogYFNlYXJjaFRleHRJbnB1dGAgcHJvcHMgdG8gYmUgaW1wcm92ZWQuIFRoZSBgb25TdWJtaXRgIGNhbGxiYWNrIHNob3VsZG4ndCBiZSBtYW5kYXRvcnlcbiAgICAgICAgICAgIG9uU3VibWl0PXsoKSA9PiB7fX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtoYXNSZXN1bHRzID8gKFxuICAgICAgICAgICAgPENhcmQgaW5zZXRTY2FsZT1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c9XCJyb3dcIlxuICAgICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM9e2Ake2Rlc2lnblRva2Vucy5jb25zdHJhaW50NX0gYXV0b2B9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRHcm91cHMubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxGaWVsZEdyb3VwU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwLmdyb3VwTGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPE5vU2VhcmNoUmVzdWx0cyAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICAgIDwvRm9ybURpYWxvZz5cbiAgKVxufVxuIl19 */"));
926
+ const StyledFieldsCard = /*#__PURE__*/_styled__default["default"](uiKit.Card, process.env.NODE_ENV === "production" ? {
927
+ target: "e3xiyhb0"
928
+ } : {
929
+ target: "e3xiyhb0",
930
+ label: "StyledFieldsCard"
931
+ })("border-radius:0;", props => props.showTopBorder && /*#__PURE__*/react.css("border-top:", uiKit.designTokens.borderWidth1, " solid ", uiKit.designTokens.colorNeutral90, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:StyledFieldsCard;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cG9ydC1maWVsZHMtc2VsZWN0aW9uLXN0ZXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBDTyIsImZpbGUiOiJleHBvcnQtZmllbGRzLXNlbGVjdGlvbi1zdGVwLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUludGwgfSBmcm9tICdyZWFjdC1pbnRsJ1xuaW1wb3J0IHRocm90dGxlIGZyb20gJ2xvZGFzaC90aHJvdHRsZSdcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJ1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgeyBGb3JtRGlhbG9nIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvYXBwbGljYXRpb24tY29tcG9uZW50cydcbmltcG9ydCB7XG4gIENhcmQsXG4gIENoZWNrYm94SW5wdXQsXG4gIEdyaWQsXG4gIExpbmssXG4gIFNwYWNpbmdzLFxuICBUZXh0LFxuICBTZWFyY2hUZXh0SW5wdXQsXG4gIGRlc2lnblRva2Vucyxcbn0gZnJvbSAnQGNvbW1lcmNldG9vbHMtZnJvbnRlbmQvdWkta2l0J1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2gvZ2V0J1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlRXhwb3J0UmVzb3VyY2VzQ29udGV4dCB9IGZyb20gJy4uL0Bob29rcydcbmltcG9ydCB7IEZJRUxEX0RFRklOSVRJT05TX1VSTFMgfSBmcm9tICcuLi9AY29uc3RhbnRzJ1xuaW1wb3J0IHsgcmVzb3VyY2VUeXBlVG9EaXNwbGF5TmFtZSB9IGZyb20gJy4uL0B1dGlscydcbmltcG9ydCB7IE5vU2VhcmNoUmVzdWx0cyB9IGZyb20gJy4vbm8tc2VhcmNoLXJlc3VsdHMnXG5pbXBvcnQgeyBGaWVsZEdyb3VwLCBGb3JtaWtGaWVsZCB9IGZyb20gJ0B0eXBlcydcblxuY29uc3QgU3R5bGVkR3JvdXBDYXJkID0gc3R5bGVkKENhcmQpPHsgc2hvd1RvcEJvcmRlcj86IGJvb2xlYW4gfT5gXG4gIGJvcmRlci1yaWdodDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JOZXV0cmFsOTh9O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gICR7KHByb3BzKSA9PlxuICAgIHByb3BzLnNob3dUb3BCb3JkZXIgJiZcbiAgICBjc3NgXG4gICAgICBib3JkZXItdG9wOiAke2Rlc2lnblRva2Vucy5ib3JkZXJXaWR0aDF9IHNvbGlkXG4gICAgICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgICBgfVxuYFxuXG5jb25zdCBTdHlsZWRGaWVsZHNDYXJkID0gc3R5bGVkKENhcmQpPHsgc2hvd1RvcEJvcmRlcj86IGJvb2xlYW4gfT5gXG4gIGJvcmRlci1yYWRpdXM6IDA7XG4gICR7KHByb3BzKSA9PlxuICAgIHByb3BzLnNob3dUb3BCb3JkZXIgJiZcbiAgICBjc3NgXG4gICAgICBib3JkZXItdG9wOiAke2Rlc2lnblRva2Vucy5ib3JkZXJXaWR0aDF9IHNvbGlkXG4gICAgICAgICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDkwfTtcbiAgICBgfVxuYFxuXG5pbnRlcmZhY2UgRmlsdGVyZWRGaWVsZCBleHRlbmRzIEZvcm1pa0ZpZWxkIHtcbiAgaXNIaWRkZW4/OiBib29sZWFuXG59XG5pbnRlcmZhY2UgRmlsdGVyZWRHcm91cHMgZXh0ZW5kcyBGaWVsZEdyb3VwIHtcbiAgaXNIaWRkZW4/OiBib29sZWFuXG4gIGZpZWxkczogRmlsdGVyZWRGaWVsZFtdXG59XG5cbnR5cGUgRmllbGRTZWN0aW9uc1Byb3BzID0ge1xuICBmaWVsZHM/OiBGaWx0ZXJlZEZpZWxkW11cbiAgcGFyZW50S2V5czogc3RyaW5nW11cbiAgZm9ybWlrOiBhbnlcbiAgaXNBbnlTaWJsaW5nQ2hlY2tlZDogYm9vbGVhblxufVxuXG5jb25zdCBGaWVsZFNlY3Rpb25zID0gKHtcbiAgZmllbGRzLFxuICBwYXJlbnRLZXlzLFxuICBmb3JtaWssXG4gIGlzQW55U2libGluZ0NoZWNrZWQsXG59OiBGaWVsZFNlY3Rpb25zUHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJzXCI+XG4gICAgICB7ZmllbGRzPy5tYXAoKGZpZWxkLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBpc0F0bGVhc3RPbmVDaGlsZENoZWNrZWQgPSAoKSA9PiB7XG4gICAgICAgICAgZnVuY3Rpb24gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgcmV0dXJuIGZpZWxkcz8uc29tZSgoZmllbGQpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGZpZWxkLmZpZWxkcykge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICBmaWVsZC5pc0NoZWNrZWQgfHwgY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FueU9mVGhlQ2hpbGRGaWVsZHNDaGVja2VkID0gaXNBdGxlYXN0T25lQ2hpbGRDaGVja2VkKClcbiAgICAgICAgaWYgKGZpZWxkLmlzSGlkZGVuKSByZXR1cm4gbnVsbFxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxSZWFjdC5GcmFnbWVudCBrZXk9e2Ake2ZpZWxkLm5hbWV9LSR7aW5kZXh9YH0+XG4gICAgICAgICAgICA8Q2hlY2tib3hJbnB1dFxuICAgICAgICAgICAgICBpc0NoZWNrZWQ9e1xuICAgICAgICAgICAgICAgIGZpZWxkLmlzUmVhZE9ubHlcbiAgICAgICAgICAgICAgICAgID8gaXNBbnlTaWJsaW5nQ2hlY2tlZFxuICAgICAgICAgICAgICAgICAgOiBpc0FueU9mVGhlQ2hpbGRGaWVsZHNDaGVja2VkIHx8IGZpZWxkLmlzQ2hlY2tlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlzUmVhZE9ubHk9e2ZpZWxkLmlzUmVhZE9ubHkgfHwgZmllbGQuaXNSZXF1aXJlZH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IGAke3BhcmVudEtleXMuam9pbignLicpfS5maWVsZHNbJHtpbmRleH1dYFxuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSBhbGwgY2hpbGQgZmllbGRzXG4gICAgICAgICAgICAgICAgY29uc3QgdXBkYXRlQWxsQ2hpbGRGaWVsZHNDaGVja2VkID0gKFxuICAgICAgICAgICAgICAgICAgcGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogYm9vbGVhblxuICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgaXRlbSA9IGdldChmb3JtaWsudmFsdWVzLCBwYXRoKVxuICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5maWVsZHMuZm9yRWFjaCgoZmllbGQsIGkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZFBhdGggPSBgJHtwYXRofS5maWVsZHNbJHtpfV1gXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWlrLnNldEZpZWxkVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGAke2ZpZWxkUGF0aH0uaXNDaGVja2VkYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyBgZmFsc2VgIHRvIGF2b2lkIHJldmFsaWRhdGluZyB0aGUgZm9ybSB3aXRoIGludGVybWVkaWF0ZSB2YWx1ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgdXBkYXRlQWxsQ2hpbGRGaWVsZHNDaGVja2VkKGZpZWxkUGF0aCwgY2hlY2tlZClcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5maWVsZHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgZm9ybWlrLnNldEZpZWxkVmFsdWUoXG4gICAgICAgICAgICAgICAgICAgIGAke3BhdGh9LmlzQ2hlY2tlZGAsXG4gICAgICAgICAgICAgICAgICAgIGUudGFyZ2V0LmNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgYGZhbHNlYCB0byBhdm9pZCByZXZhbGlkYXRpbmcgdGhlIGZvcm0gd2l0aCBpbnRlcm1lZGlhdGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZChwYXRoLCBlLnRhcmdldC5jaGVja2VkKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7ZmllbGQubGFiZWx9IHtmaWVsZC5pc1JlcXVpcmVkICYmICcqJ31cbiAgICAgICAgICAgIDwvQ2hlY2tib3hJbnB1dD5cbiAgICAgICAgICAgIHtmaWVsZC5maWVsZHMgJiYgZmllbGQuZmllbGRzPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgICAgICAgPFNwYWNpbmdzLklubGluZSBzY2FsZT1cImxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IC8+XG4gICAgICAgICAgICAgICAgPEZpZWxkU2VjdGlvbnNcbiAgICAgICAgICAgICAgICAgIGZpZWxkcz17ZmllbGQuZmllbGRzfVxuICAgICAgICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgICAgICAgICBwYXJlbnRLZXlzPXtbLi4ucGFyZW50S2V5cywgYGZpZWxkc1ske2luZGV4fV1gXX1cbiAgICAgICAgICAgICAgICAgIGlzQW55U2libGluZ0NoZWNrZWQ9e2lzQW55U2libGluZ0NoZWNrZWR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvUmVhY3QuRnJhZ21lbnQ+XG4gICAgICAgIClcbiAgICAgIH0pfVxuICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gIClcbn1cblxudHlwZSBGaWVsZEdyb3VwU2VjdGlvblByb3BzID0ge1xuICBpbmRleDogbnVtYmVyXG4gIGdyb3VwOiBGaWx0ZXJlZEdyb3Vwc1xuICBmb3JtaWs6IGFueVxufVxuXG5mdW5jdGlvbiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgIHJldHVybiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGZpZWxkLmZpZWxkcylcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZCB8fCBmaWVsZC5pc1JlcXVpcmVkIHx8IGZpZWxkLmlzUmVhZE9ubHlcbiAgfSlcbn1cblxuZnVuY3Rpb24gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gZmllbGRzLnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgaWYgKGZpZWxkLmZpZWxkcykge1xuICAgICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZCB8fCBjaGVja0F0TGVhc3RPbmVGaWVsZENoZWNrZWQoZmllbGQuZmllbGRzKVxuICAgIH1cbiAgICByZXR1cm4gZmllbGQuaXNDaGVja2VkXG4gIH0pXG59XG5cbmNvbnN0IEZpZWxkR3JvdXBTZWN0aW9uID0gKHtcbiAgZ3JvdXAsXG4gIGluZGV4LFxuICBmb3JtaWssXG59OiBGaWVsZEdyb3VwU2VjdGlvblByb3BzKSA9PiB7XG4gIGNvbnN0IGFsbEFsbEZpZWxkc1NlbGVjdGVkID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiBjaGVja0FsbEZpZWxkc1NlbGVjdGVkKGdyb3VwLmZpZWxkcyksXG4gICAgW2dyb3VwLmZpZWxkc11cbiAgKVxuXG4gIGNvbnN0IGlzQXRsZWFzdE9uZUZpZWxkQ2hlY2tlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGdyb3VwLmZpZWxkcyksXG4gICAgW2dyb3VwLmZpZWxkc11cbiAgKVxuXG4gIGNvbnN0IHBhcmVudEtleSA9IGBncm91cHNbJHtpbmRleH1dYFxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUFsbEZpZWxkcyA9IChlKSA9PiB7XG4gICAgY29uc3QgaXRlbSA9IGdldChmb3JtaWsudmFsdWVzLCBwYXJlbnRLZXkpXG4gICAgZnVuY3Rpb24gdXBkYXRlQWxsRmllbGRzKGZpZWxkcywgY2hlY2tlZCkge1xuICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICBmaWVsZHM6IHVwZGF0ZUFsbEZpZWxkcyhmaWVsZC5maWVsZHMsIGNoZWNrZWQpLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoZmllbGQuaXNSZWFkT25seSB8fCBmaWVsZC5pc1JlcXVpcmVkKSByZXR1cm4gZmllbGRcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICBpc0NoZWNrZWQ6IGNoZWNrZWQsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZm9ybWlrLnNldEZpZWxkVmFsdWUocGFyZW50S2V5LCB7XG4gICAgICAuLi5pdGVtLFxuICAgICAgZmllbGRzOiB1cGRhdGVBbGxGaWVsZHMoaXRlbS5maWVsZHMsIGUudGFyZ2V0LmNoZWNrZWQpLFxuICAgIH0pXG4gIH1cblxuICBpZiAoZ3JvdXAuaXNIaWRkZW4pIHJldHVybiBudWxsXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxHcmlkLkl0ZW0+XG4gICAgICAgIDxTdHlsZWRHcm91cENhcmQgdHlwZT1cImZsYXRcIiBpbnNldFNjYWxlPVwibFwiIHNob3dUb3BCb3JkZXI9e3RydWV9PlxuICAgICAgICAgIDxDaGVja2JveElucHV0XG4gICAgICAgICAgICBpc0luZGV0ZXJtaW5hdGU9eyFhbGxBbGxGaWVsZHNTZWxlY3RlZCAmJiBpc0F0bGVhc3RPbmVGaWVsZENoZWNrZWR9XG4gICAgICAgICAgICBpc0NoZWNrZWQ9e2FsbEFsbEZpZWxkc1NlbGVjdGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZUFsbEZpZWxkc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7Z3JvdXAuZ3JvdXBMYWJlbH1cbiAgICAgICAgICA8L0NoZWNrYm94SW5wdXQ+XG4gICAgICAgIDwvU3R5bGVkR3JvdXBDYXJkPlxuICAgICAgPC9HcmlkLkl0ZW0+XG4gICAgICA8R3JpZC5JdGVtPlxuICAgICAgICA8U3R5bGVkRmllbGRzQ2FyZCB0eXBlPVwiZmxhdFwiIGluc2V0U2NhbGU9XCJsXCIgc2hvd1RvcEJvcmRlcj17dHJ1ZX0+XG4gICAgICAgICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAgICAgICAgPEZpZWxkU2VjdGlvbnNcbiAgICAgICAgICAgICAgZmllbGRzPXtncm91cC5maWVsZHN9XG4gICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICBwYXJlbnRLZXlzPXtbcGFyZW50S2V5XX1cbiAgICAgICAgICAgICAgaXNBbnlTaWJsaW5nQ2hlY2tlZD17aXNBdGxlYXN0T25lRmllbGRDaGVja2VkfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICAgICAgICA8L1N0eWxlZEZpZWxkc0NhcmQ+XG4gICAgICA8L0dyaWQuSXRlbT5cbiAgICA8Lz5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgRXhwb3J0RmllbGRzU2VsZWN0aW9uU3RlcCA9ICgpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKVxuICBjb25zdCBbZmllbGRTZWFyY2hUZXJtLCBzZXRGaWVsZFNlYXJjaFRlcm1dID0gUmVhY3QudXNlU3RhdGUoJycpXG4gIGNvbnN0IHsgZm9ybWlrLCBzZXRDdXJyZW50U3RlcCwgcmVzb3VyY2VUeXBlLCBvbkNsb3NlIH0gPVxuICAgIHVzZUV4cG9ydFJlc291cmNlc0NvbnRleHQoKVxuICBjb25zdCByZXNvdXJjZVR5cGVQbHVyYWwgPSByZXNvdXJjZVR5cGVUb0Rpc3BsYXlOYW1lKHtcbiAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSxcbiAgICBpc1BsdXJhbDogdHJ1ZSxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZvcm1pay52YWxpZGF0ZUZvcm0oKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2Zvcm1pay52YWx1ZXMuZ3JvdXBzXSlcbiAgLy8gYWRkcyBgaXNIaWRkZW5gIHByb3BlcnR5IHRvIGVhY2ggZmllbGQgYmFzZWQgb24gc2VhcmNoIHRlcm1cbiAgY29uc3QgZmlsdGVyZWRHcm91cHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB1cGRhdGVGaWVsZHMgPSAoZmllbGRzLCBwYXJlbnRNYXRjaGVzOiBib29sZWFuKSA9PiB7XG4gICAgICByZXR1cm4gZmllbGRzLm1hcCgoZmllbGQpID0+IHtcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGZpZWxkLmxhYmVsXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAuaW5jbHVkZXMoZmllbGRTZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgIGxldCBpc0hpZGRlbiA9ICFtYXRjaGVzICYmICFwYXJlbnRNYXRjaGVzXG4gICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkRmllbGRzID0gdXBkYXRlRmllbGRzKGZpZWxkLmZpZWxkcywgbWF0Y2hlcylcbiAgICAgICAgICBpc0hpZGRlbiA9IGlzSGlkZGVuICYmIHVwZGF0ZWRGaWVsZHMuZXZlcnkoKGYpID0+IGYuaXNIaWRkZW4pXG4gICAgICAgICAgZmllbGQgPSB7XG4gICAgICAgICAgICAuLi5maWVsZCxcbiAgICAgICAgICAgIGZpZWxkczogdXBkYXRlZEZpZWxkcyxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4uZmllbGQsIGlzSGlkZGVuIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIGlmICghZmllbGRTZWFyY2hUZXJtPy50cmltKCk/Lmxlbmd0aCkgcmV0dXJuIGZvcm1pay52YWx1ZXMuZ3JvdXBzXG5cbiAgICByZXR1cm4gZm9ybWlrLnZhbHVlcy5ncm91cHMubWFwKChncm91cCkgPT4ge1xuICAgICAgY29uc3QgdXBkYXRlZEZpZWxkcyA9IHVwZGF0ZUZpZWxkcyhncm91cC5maWVsZHMsIGZhbHNlKVxuICAgICAgY29uc3QgaXNIaWRkZW4gPSB1cGRhdGVkRmllbGRzLmV2ZXJ5KChmaWVsZCkgPT4gZmllbGQuaXNIaWRkZW4pXG4gICAgICByZXR1cm4geyAuLi5ncm91cCwgZmllbGRzOiB1cGRhdGVkRmllbGRzLCBpc0hpZGRlbiB9XG4gICAgfSlcbiAgfSwgW2Zvcm1pay52YWx1ZXMuZ3JvdXBzLCBmaWVsZFNlYXJjaFRlcm1dKVxuXG4gIGNvbnN0IG9uU2VhcmNoQ2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBzZXRGaWVsZFNlYXJjaFRlcm0oZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgIH0sXG4gICAgW3NldEZpZWxkU2VhcmNoVGVybV1cbiAgKVxuXG4gIGNvbnN0IGhhc1Jlc3VsdHMgPSBCb29sZWFuKGZpbHRlcmVkR3JvdXBzLmZpbmQoKGdyb3VwKSA9PiAhZ3JvdXAuaXNIaWRkZW4pKVxuXG4gIGNvbnN0IG9uU2VhcmNoQ2hhbmdlVGhyb3R0bGVkID0gUmVhY3QudXNlTWVtbyhcbiAgICAoKSA9PiB0aHJvdHRsZShvblNlYXJjaENoYW5nZSwgMzAwKSxcbiAgICBbb25TZWFyY2hDaGFuZ2VdXG4gIClcblxuICBjb25zdCBvblNlYXJjaFJlc2V0ID0gKCkgPT4ge1xuICAgIHNldEZpZWxkU2VhcmNoVGVybSgnJylcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEZvcm1EaWFsb2dcbiAgICAgIGlzT3BlblxuICAgICAgdGl0bGU9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5tb2RhbFRpdGxlLCB7XG4gICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlUGx1cmFsLFxuICAgICAgfSl9XG4gICAgICBsYWJlbFByaW1hcnk9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zdGFydEV4cG9ydCl9XG4gICAgICBvblByaW1hcnlCdXR0b25DbGljaz17Zm9ybWlrLnN1Ym1pdEZvcm19XG4gICAgICBpc1ByaW1hcnlCdXR0b25EaXNhYmxlZD17IWZvcm1pay5pc1ZhbGlkfVxuICAgICAgbGFiZWxTZWNvbmRhcnk9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5iYWNrKX1cbiAgICAgIG9uU2Vjb25kYXJ5QnV0dG9uQ2xpY2s9eygpID0+IHNldEN1cnJlbnRTdGVwKDEpfVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIHNpemU9ezE2fVxuICAgID5cbiAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cInhsXCI+XG4gICAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cIm1cIj5cbiAgICAgICAgICA8U3BhY2luZ3MuSW5saW5lIGp1c3RpZnlDb250ZW50PVwic3BhY2UtYmV0d2VlblwiPlxuICAgICAgICAgICAgPFRleHQuQm9keSBpbnRsTWVzc2FnZT17bWVzc2FnZXMuc2VsZWN0RmllbGRzVG9FeHBvcnR9IC8+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBpc0V4dGVybmFsXG4gICAgICAgICAgICAgIHRvbmU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICBpbnRsTWVzc2FnZT17bWVzc2FnZXMuZmllbGREZWZpbml0aW9uc31cbiAgICAgICAgICAgICAgdG89e0ZJRUxEX0RFRklOSVRJT05TX1VSTFNbcmVzb3VyY2VUeXBlXX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5JbmxpbmU+XG4gICAgICAgICAgPFNlYXJjaFRleHRJbnB1dFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5zZWFyY2hGb3JGaWVsZHMpfVxuICAgICAgICAgICAgdmFsdWU9e2ZpZWxkU2VhcmNoVGVybX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvblNlYXJjaENoYW5nZVRocm90dGxlZH1cbiAgICAgICAgICAgIG9uUmVzZXQ9e29uU2VhcmNoUmVzZXR9XG4gICAgICAgICAgICAvLyBUT0RPOiBgU2VhcmNoVGV4dElucHV0YCBwcm9wcyB0byBiZSBpbXByb3ZlZC4gVGhlIGBvblN1Ym1pdGAgY2FsbGJhY2sgc2hvdWxkbid0IGJlIG1hbmRhdG9yeVxuICAgICAgICAgICAgb25TdWJtaXQ9eygpID0+IHt9fVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2hhc1Jlc3VsdHMgPyAoXG4gICAgICAgICAgICA8Q2FyZCBpbnNldFNjYWxlPVwibm9uZVwiPlxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGdyaWRBdXRvRmxvdz1cInJvd1wiXG4gICAgICAgICAgICAgICAgZ3JpZFRlbXBsYXRlQ29sdW1ucz17YCR7ZGVzaWduVG9rZW5zLmNvbnN0cmFpbnQ1fSBhdXRvYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtmaWx0ZXJlZEdyb3Vwcy5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgPEZpZWxkR3JvdXBTZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17Z3JvdXAuZ3JvdXBMYWJlbH1cbiAgICAgICAgICAgICAgICAgICAgZ3JvdXA9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgPC9DYXJkPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8Tm9TZWFyY2hSZXN1bHRzIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TcGFjaW5ncy5TdGFjaz5cbiAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgPC9Gb3JtRGlhbG9nPlxuICApXG59XG4iXX0= */"), ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImV4cG9ydC1maWVsZHMtc2VsZWN0aW9uLXN0ZXAudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNDa0UiLCJmaWxlIjoiZXhwb3J0LWZpZWxkcy1zZWxlY3Rpb24tc3RlcC50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VJbnRsIH0gZnJvbSAncmVhY3QtaW50bCdcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHsgRm9ybURpYWxvZyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL2FwcGxpY2F0aW9uLWNvbXBvbmVudHMnXG5pbXBvcnQge1xuICBDYXJkLFxuICBDaGVja2JveElucHV0LFxuICBHcmlkLFxuICBMaW5rLFxuICBTcGFjaW5ncyxcbiAgVGV4dCxcbiAgU2VhcmNoVGV4dElucHV0LFxuICBkZXNpZ25Ub2tlbnMsXG59IGZyb20gJ0Bjb21tZXJjZXRvb2xzLWZyb250ZW5kL3VpLWtpdCdcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCdcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcydcbmltcG9ydCB7IHVzZUV4cG9ydFJlc291cmNlc0NvbnRleHQgfSBmcm9tICcuLi9AaG9va3MnXG5pbXBvcnQgeyBGSUVMRF9ERUZJTklUSU9OU19VUkxTIH0gZnJvbSAnLi4vQGNvbnN0YW50cydcbmltcG9ydCB7IHJlc291cmNlVHlwZVRvRGlzcGxheU5hbWUgfSBmcm9tICcuLi9AdXRpbHMnXG5pbXBvcnQgeyBOb1NlYXJjaFJlc3VsdHMgfSBmcm9tICcuL25vLXNlYXJjaC1yZXN1bHRzJ1xuaW1wb3J0IHsgRmllbGRHcm91cCwgRm9ybWlrRmllbGQgfSBmcm9tICdAdHlwZXMnXG5cbmNvbnN0IFN0eWxlZEdyb3VwQ2FyZCA9IHN0eWxlZChDYXJkKTx7IHNob3dUb3BCb3JkZXI/OiBib29sZWFuIH0+YFxuICBib3JkZXItcmlnaHQ6ICR7ZGVzaWduVG9rZW5zLmJvcmRlcldpZHRoMX0gc29saWRcbiAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDk4fTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwO1xuICAkeyhwcm9wcykgPT5cbiAgICBwcm9wcy5zaG93VG9wQm9yZGVyICYmXG4gICAgY3NzYFxuICAgICAgYm9yZGVyLXRvcDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gICAgYH1cbmBcblxuY29uc3QgU3R5bGVkRmllbGRzQ2FyZCA9IHN0eWxlZChDYXJkKTx7IHNob3dUb3BCb3JkZXI/OiBib29sZWFuIH0+YFxuICBib3JkZXItcmFkaXVzOiAwO1xuICAkeyhwcm9wcykgPT5cbiAgICBwcm9wcy5zaG93VG9wQm9yZGVyICYmXG4gICAgY3NzYFxuICAgICAgYm9yZGVyLXRvcDogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyV2lkdGgxfSBzb2xpZFxuICAgICAgICAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWw5MH07XG4gICAgYH1cbmBcblxuaW50ZXJmYWNlIEZpbHRlcmVkRmllbGQgZXh0ZW5kcyBGb3JtaWtGaWVsZCB7XG4gIGlzSGlkZGVuPzogYm9vbGVhblxufVxuaW50ZXJmYWNlIEZpbHRlcmVkR3JvdXBzIGV4dGVuZHMgRmllbGRHcm91cCB7XG4gIGlzSGlkZGVuPzogYm9vbGVhblxuICBmaWVsZHM6IEZpbHRlcmVkRmllbGRbXVxufVxuXG50eXBlIEZpZWxkU2VjdGlvbnNQcm9wcyA9IHtcbiAgZmllbGRzPzogRmlsdGVyZWRGaWVsZFtdXG4gIHBhcmVudEtleXM6IHN0cmluZ1tdXG4gIGZvcm1pazogYW55XG4gIGlzQW55U2libGluZ0NoZWNrZWQ6IGJvb2xlYW5cbn1cblxuY29uc3QgRmllbGRTZWN0aW9ucyA9ICh7XG4gIGZpZWxkcyxcbiAgcGFyZW50S2V5cyxcbiAgZm9ybWlrLFxuICBpc0FueVNpYmxpbmdDaGVja2VkLFxufTogRmllbGRTZWN0aW9uc1Byb3BzKSA9PiB7XG4gIHJldHVybiAoXG4gICAgPFNwYWNpbmdzLlN0YWNrIHNjYWxlPVwic1wiPlxuICAgICAge2ZpZWxkcz8ubWFwKChmaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdGxlYXN0T25lQ2hpbGRDaGVja2VkID0gKCkgPT4ge1xuICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgICAgICAgICAgIHJldHVybiBmaWVsZHM/LnNvbWUoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgZmllbGQuaXNDaGVja2VkIHx8IGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZC5maWVsZHMpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWRcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZC5maWVsZHMpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNBbnlPZlRoZUNoaWxkRmllbGRzQ2hlY2tlZCA9IGlzQXRsZWFzdE9uZUNoaWxkQ2hlY2tlZCgpXG4gICAgICAgIGlmIChmaWVsZC5pc0hpZGRlbikgcmV0dXJuIG51bGxcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UmVhY3QuRnJhZ21lbnQga2V5PXtgJHtmaWVsZC5uYW1lfS0ke2luZGV4fWB9PlxuICAgICAgICAgICAgPENoZWNrYm94SW5wdXRcbiAgICAgICAgICAgICAgaXNDaGVja2VkPXtcbiAgICAgICAgICAgICAgICBmaWVsZC5pc1JlYWRPbmx5XG4gICAgICAgICAgICAgICAgICA/IGlzQW55U2libGluZ0NoZWNrZWRcbiAgICAgICAgICAgICAgICAgIDogaXNBbnlPZlRoZUNoaWxkRmllbGRzQ2hlY2tlZCB8fCBmaWVsZC5pc0NoZWNrZWRcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpc1JlYWRPbmx5PXtmaWVsZC5pc1JlYWRPbmx5IHx8IGZpZWxkLmlzUmVxdWlyZWR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBgJHtwYXJlbnRLZXlzLmpvaW4oJy4nKX0uZmllbGRzWyR7aW5kZXh9XWBcbiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgYWxsIGNoaWxkIGZpZWxkc1xuICAgICAgICAgICAgICAgIGNvbnN0IHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZCA9IChcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IGJvb2xlYW5cbiAgICAgICAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSBnZXQoZm9ybWlrLnZhbHVlcywgcGF0aClcbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIGl0ZW0uZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uZmllbGRzLmZvckVhY2goKGZpZWxkLCBpKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRQYXRoID0gYCR7cGF0aH0uZmllbGRzWyR7aX1dYFxuICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtmaWVsZFBhdGh9LmlzQ2hlY2tlZGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgYGZhbHNlYCB0byBhdm9pZCByZXZhbGlkYXRpbmcgdGhlIGZvcm0gd2l0aCBpbnRlcm1lZGlhdGUgdmFsdWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUFsbENoaWxkRmllbGRzQ2hlY2tlZChmaWVsZFBhdGgsIGNoZWNrZWQpXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghZmllbGQuZmllbGRzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKFxuICAgICAgICAgICAgICAgICAgICBgJHtwYXRofS5pc0NoZWNrZWRgLFxuICAgICAgICAgICAgICAgICAgICBlLnRhcmdldC5jaGVja2VkLFxuICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIGBmYWxzZWAgdG8gYXZvaWQgcmV2YWxpZGF0aW5nIHRoZSBmb3JtIHdpdGggaW50ZXJtZWRpYXRlIHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1cGRhdGVBbGxDaGlsZEZpZWxkc0NoZWNrZWQocGF0aCwgZS50YXJnZXQuY2hlY2tlZClcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge2ZpZWxkLmxhYmVsfSB7ZmllbGQuaXNSZXF1aXJlZCAmJiAnKid9XG4gICAgICAgICAgICA8L0NoZWNrYm94SW5wdXQ+XG4gICAgICAgICAgICB7ZmllbGQuZmllbGRzICYmIGZpZWxkLmZpZWxkcz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgICAgIDxTcGFjaW5ncy5JbmxpbmUgc2NhbGU9XCJsXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAvPlxuICAgICAgICAgICAgICAgIDxGaWVsZFNlY3Rpb25zXG4gICAgICAgICAgICAgICAgICBmaWVsZHM9e2ZpZWxkLmZpZWxkc31cbiAgICAgICAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgICAgICAgcGFyZW50S2V5cz17Wy4uLnBhcmVudEtleXMsIGBmaWVsZHNbJHtpbmRleH1dYF19XG4gICAgICAgICAgICAgICAgICBpc0FueVNpYmxpbmdDaGVja2VkPXtpc0FueVNpYmxpbmdDaGVja2VkfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApXG4gICAgICB9KX1cbiAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICApXG59XG5cbnR5cGUgRmllbGRHcm91cFNlY3Rpb25Qcm9wcyA9IHtcbiAgaW5kZXg6IG51bWJlclxuICBncm91cDogRmlsdGVyZWRHcm91cHNcbiAgZm9ybWlrOiBhbnlcbn1cblxuZnVuY3Rpb24gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpZWxkcy5ldmVyeSgoZmllbGQpID0+IHtcbiAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICByZXR1cm4gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChmaWVsZC5maWVsZHMpXG4gICAgfVxuICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWQgfHwgZmllbGQuaXNSZXF1aXJlZCB8fCBmaWVsZC5pc1JlYWRPbmx5XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChmaWVsZHMpOiBib29sZWFuIHtcbiAgcmV0dXJuIGZpZWxkcy5zb21lKChmaWVsZCkgPT4ge1xuICAgIGlmIChmaWVsZC5maWVsZHMpIHtcbiAgICAgIHJldHVybiBmaWVsZC5pc0NoZWNrZWQgfHwgY2hlY2tBdExlYXN0T25lRmllbGRDaGVja2VkKGZpZWxkLmZpZWxkcylcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkLmlzQ2hlY2tlZFxuICB9KVxufVxuXG5jb25zdCBGaWVsZEdyb3VwU2VjdGlvbiA9ICh7XG4gIGdyb3VwLFxuICBpbmRleCxcbiAgZm9ybWlrLFxufTogRmllbGRHcm91cFNlY3Rpb25Qcm9wcykgPT4ge1xuICBjb25zdCBhbGxBbGxGaWVsZHNTZWxlY3RlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gY2hlY2tBbGxGaWVsZHNTZWxlY3RlZChncm91cC5maWVsZHMpLFxuICAgIFtncm91cC5maWVsZHNdXG4gIClcblxuICBjb25zdCBpc0F0bGVhc3RPbmVGaWVsZENoZWNrZWQgPSBSZWFjdC51c2VNZW1vKFxuICAgICgpID0+IGNoZWNrQXRMZWFzdE9uZUZpZWxkQ2hlY2tlZChncm91cC5maWVsZHMpLFxuICAgIFtncm91cC5maWVsZHNdXG4gIClcblxuICBjb25zdCBwYXJlbnRLZXkgPSBgZ3JvdXBzWyR7aW5kZXh9XWBcblxuICBjb25zdCBoYW5kbGVDaGFuZ2VBbGxGaWVsZHMgPSAoZSkgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBnZXQoZm9ybWlrLnZhbHVlcywgcGFyZW50S2V5KVxuICAgIGZ1bmN0aW9uIHVwZGF0ZUFsbEZpZWxkcyhmaWVsZHMsIGNoZWNrZWQpIHtcbiAgICAgIHJldHVybiBmaWVsZHMubWFwKChmaWVsZCkgPT4ge1xuICAgICAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmZpZWxkLFxuICAgICAgICAgICAgZmllbGRzOiB1cGRhdGVBbGxGaWVsZHMoZmllbGQuZmllbGRzLCBjaGVja2VkKSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpZWxkLmlzUmVhZE9ubHkgfHwgZmllbGQuaXNSZXF1aXJlZCkgcmV0dXJuIGZpZWxkXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgaXNDaGVja2VkOiBjaGVja2VkLFxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGZvcm1pay5zZXRGaWVsZFZhbHVlKHBhcmVudEtleSwge1xuICAgICAgLi4uaXRlbSxcbiAgICAgIGZpZWxkczogdXBkYXRlQWxsRmllbGRzKGl0ZW0uZmllbGRzLCBlLnRhcmdldC5jaGVja2VkKSxcbiAgICB9KVxuICB9XG5cbiAgaWYgKGdyb3VwLmlzSGlkZGVuKSByZXR1cm4gbnVsbFxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8R3JpZC5JdGVtPlxuICAgICAgICA8U3R5bGVkR3JvdXBDYXJkIHR5cGU9XCJmbGF0XCIgaW5zZXRTY2FsZT1cImxcIiBzaG93VG9wQm9yZGVyPXt0cnVlfT5cbiAgICAgICAgICA8Q2hlY2tib3hJbnB1dFxuICAgICAgICAgICAgaXNJbmRldGVybWluYXRlPXshYWxsQWxsRmllbGRzU2VsZWN0ZWQgJiYgaXNBdGxlYXN0T25lRmllbGRDaGVja2VkfVxuICAgICAgICAgICAgaXNDaGVja2VkPXthbGxBbGxGaWVsZHNTZWxlY3RlZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2VBbGxGaWVsZHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2dyb3VwLmdyb3VwTGFiZWx9XG4gICAgICAgICAgPC9DaGVja2JveElucHV0PlxuICAgICAgICA8L1N0eWxlZEdyb3VwQ2FyZD5cbiAgICAgIDwvR3JpZC5JdGVtPlxuICAgICAgPEdyaWQuSXRlbT5cbiAgICAgICAgPFN0eWxlZEZpZWxkc0NhcmQgdHlwZT1cImZsYXRcIiBpbnNldFNjYWxlPVwibFwiIHNob3dUb3BCb3JkZXI9e3RydWV9PlxuICAgICAgICAgIDxTcGFjaW5ncy5TdGFjayBzY2FsZT1cInNcIj5cbiAgICAgICAgICAgIDxGaWVsZFNlY3Rpb25zXG4gICAgICAgICAgICAgIGZpZWxkcz17Z3JvdXAuZmllbGRzfVxuICAgICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgICAgcGFyZW50S2V5cz17W3BhcmVudEtleV19XG4gICAgICAgICAgICAgIGlzQW55U2libGluZ0NoZWNrZWQ9e2lzQXRsZWFzdE9uZUZpZWxkQ2hlY2tlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TcGFjaW5ncy5TdGFjaz5cbiAgICAgICAgPC9TdHlsZWRGaWVsZHNDYXJkPlxuICAgICAgPC9HcmlkLkl0ZW0+XG4gICAgPC8+XG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IEV4cG9ydEZpZWxkc1NlbGVjdGlvblN0ZXAgPSAoKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKClcbiAgY29uc3QgW2ZpZWxkU2VhcmNoVGVybSwgc2V0RmllbGRTZWFyY2hUZXJtXSA9IFJlYWN0LnVzZVN0YXRlKCcnKVxuICBjb25zdCB7IGZvcm1paywgc2V0Q3VycmVudFN0ZXAsIHJlc291cmNlVHlwZSwgb25DbG9zZSB9ID1cbiAgICB1c2VFeHBvcnRSZXNvdXJjZXNDb250ZXh0KClcbiAgY29uc3QgcmVzb3VyY2VUeXBlUGx1cmFsID0gcmVzb3VyY2VUeXBlVG9EaXNwbGF5TmFtZSh7XG4gICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZVR5cGUsXG4gICAgaXNQbHVyYWw6IHRydWUsXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBmb3JtaWsudmFsaWRhdGVGb3JtKClcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtmb3JtaWsudmFsdWVzLmdyb3Vwc10pXG4gIC8vIGFkZHMgYGlzSGlkZGVuYCBwcm9wZXJ0eSB0byBlYWNoIGZpZWxkIGJhc2VkIG9uIHNlYXJjaCB0ZXJtXG4gIGNvbnN0IGZpbHRlcmVkR3JvdXBzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgdXBkYXRlRmllbGRzID0gKGZpZWxkcywgcGFyZW50TWF0Y2hlczogYm9vbGVhbikgPT4ge1xuICAgICAgcmV0dXJuIGZpZWxkcy5tYXAoKGZpZWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmaWVsZC5sYWJlbFxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgLmluY2x1ZGVzKGZpZWxkU2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICBsZXQgaXNIaWRkZW4gPSAhbWF0Y2hlcyAmJiAhcGFyZW50TWF0Y2hlc1xuICAgICAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICAgICAgY29uc3QgdXBkYXRlZEZpZWxkcyA9IHVwZGF0ZUZpZWxkcyhmaWVsZC5maWVsZHMsIG1hdGNoZXMpXG4gICAgICAgICAgaXNIaWRkZW4gPSBpc0hpZGRlbiAmJiB1cGRhdGVkRmllbGRzLmV2ZXJ5KChmKSA9PiBmLmlzSGlkZGVuKVxuICAgICAgICAgIGZpZWxkID0ge1xuICAgICAgICAgICAgLi4uZmllbGQsXG4gICAgICAgICAgICBmaWVsZHM6IHVwZGF0ZWRGaWVsZHMsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLmZpZWxkLCBpc0hpZGRlbiB9XG4gICAgICB9KVxuICAgIH1cbiAgICBpZiAoIWZpZWxkU2VhcmNoVGVybT8udHJpbSgpPy5sZW5ndGgpIHJldHVybiBmb3JtaWsudmFsdWVzLmdyb3Vwc1xuXG4gICAgcmV0dXJuIGZvcm1pay52YWx1ZXMuZ3JvdXBzLm1hcCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRGaWVsZHMgPSB1cGRhdGVGaWVsZHMoZ3JvdXAuZmllbGRzLCBmYWxzZSlcbiAgICAgIGNvbnN0IGlzSGlkZGVuID0gdXBkYXRlZEZpZWxkcy5ldmVyeSgoZmllbGQpID0+IGZpZWxkLmlzSGlkZGVuKVxuICAgICAgcmV0dXJuIHsgLi4uZ3JvdXAsIGZpZWxkczogdXBkYXRlZEZpZWxkcywgaXNIaWRkZW4gfVxuICAgIH0pXG4gIH0sIFtmb3JtaWsudmFsdWVzLmdyb3VwcywgZmllbGRTZWFyY2hUZXJtXSlcblxuICBjb25zdCBvblNlYXJjaENoYW5nZSA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgIChldmVudCkgPT4ge1xuICAgICAgc2V0RmllbGRTZWFyY2hUZXJtKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICB9LFxuICAgIFtzZXRGaWVsZFNlYXJjaFRlcm1dXG4gIClcblxuICBjb25zdCBoYXNSZXN1bHRzID0gQm9vbGVhbihmaWx0ZXJlZEdyb3Vwcy5maW5kKChncm91cCkgPT4gIWdyb3VwLmlzSGlkZGVuKSlcblxuICBjb25zdCBvblNlYXJjaENoYW5nZVRocm90dGxlZCA9IFJlYWN0LnVzZU1lbW8oXG4gICAgKCkgPT4gdGhyb3R0bGUob25TZWFyY2hDaGFuZ2UsIDMwMCksXG4gICAgW29uU2VhcmNoQ2hhbmdlXVxuICApXG5cbiAgY29uc3Qgb25TZWFyY2hSZXNldCA9ICgpID0+IHtcbiAgICBzZXRGaWVsZFNlYXJjaFRlcm0oJycpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxGb3JtRGlhbG9nXG4gICAgICBpc09wZW5cbiAgICAgIHRpdGxlPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMubW9kYWxUaXRsZSwge1xuICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZVBsdXJhbCxcbiAgICAgIH0pfVxuICAgICAgbGFiZWxQcmltYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc3RhcnRFeHBvcnQpfVxuICAgICAgb25QcmltYXJ5QnV0dG9uQ2xpY2s9e2Zvcm1pay5zdWJtaXRGb3JtfVxuICAgICAgaXNQcmltYXJ5QnV0dG9uRGlzYWJsZWQ9eyFmb3JtaWsuaXNWYWxpZH1cbiAgICAgIGxhYmVsU2Vjb25kYXJ5PXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuYmFjayl9XG4gICAgICBvblNlY29uZGFyeUJ1dHRvbkNsaWNrPXsoKSA9PiBzZXRDdXJyZW50U3RlcCgxKX1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBzaXplPXsxNn1cbiAgICA+XG4gICAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJ4bFwiPlxuICAgICAgICA8U3BhY2luZ3MuU3RhY2sgc2NhbGU9XCJtXCI+XG4gICAgICAgICAgPFNwYWNpbmdzLklubGluZSBqdXN0aWZ5Q29udGVudD1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgICAgIDxUZXh0LkJvZHkgaW50bE1lc3NhZ2U9e21lc3NhZ2VzLnNlbGVjdEZpZWxkc1RvRXhwb3J0fSAvPlxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaXNFeHRlcm5hbFxuICAgICAgICAgICAgICB0b25lPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgaW50bE1lc3NhZ2U9e21lc3NhZ2VzLmZpZWxkRGVmaW5pdGlvbnN9XG4gICAgICAgICAgICAgIHRvPXtGSUVMRF9ERUZJTklUSU9OU19VUkxTW3Jlc291cmNlVHlwZV19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU3BhY2luZ3MuSW5saW5lPlxuICAgICAgICAgIDxTZWFyY2hUZXh0SW5wdXRcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuc2VhcmNoRm9yRmllbGRzKX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWVsZFNlYXJjaFRlcm19XG4gICAgICAgICAgICBvbkNoYW5nZT17b25TZWFyY2hDaGFuZ2VUaHJvdHRsZWR9XG4gICAgICAgICAgICBvblJlc2V0PXtvblNlYXJjaFJlc2V0fVxuICAgICAgICAgICAgLy8gVE9ETzogYFNlYXJjaFRleHRJbnB1dGAgcHJvcHMgdG8gYmUgaW1wcm92ZWQuIFRoZSBgb25TdWJtaXRgIGNhbGxiYWNrIHNob3VsZG4ndCBiZSBtYW5kYXRvcnlcbiAgICAgICAgICAgIG9uU3VibWl0PXsoKSA9PiB7fX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtoYXNSZXN1bHRzID8gKFxuICAgICAgICAgICAgPENhcmQgaW5zZXRTY2FsZT1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBncmlkQXV0b0Zsb3c9XCJyb3dcIlxuICAgICAgICAgICAgICAgIGdyaWRUZW1wbGF0ZUNvbHVtbnM9e2Ake2Rlc2lnblRva2Vucy5jb25zdHJhaW50NX0gYXV0b2B9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7ZmlsdGVyZWRHcm91cHMubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgICAgICAgIDxGaWVsZEdyb3VwU2VjdGlvblxuICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwLmdyb3VwTGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwPXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgaW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPE5vU2VhcmNoUmVzdWx0cyAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3BhY2luZ3MuU3RhY2s+XG4gICAgICA8L1NwYWNpbmdzLlN0YWNrPlxuICAgIDwvRm9ybURpYWxvZz5cbiAgKVxufVxuIl19 */"));
932
+ const FieldSections = _ref => {
933
+ let fields = _ref.fields,
934
+ parentKeys = _ref.parentKeys,
935
+ formik = _ref.formik,
936
+ isAnySiblingChecked = _ref.isAnySiblingChecked;
937
+ return jsxRuntime.jsx(uiKit.Spacings.Stack, {
938
+ scale: "s",
939
+ children: fields === null || fields === void 0 ? void 0 : _mapInstanceProperty__default["default"](fields).call(fields, (field, index) => {
940
+ var _context, _field$fields3;
941
+ const isAtleastOneChildChecked = () => {
942
+ function checkAtLeastOneFieldChecked(fields) {
943
+ return fields === null || fields === void 0 ? void 0 : _someInstanceProperty__default["default"](fields).call(fields, field => {
944
+ if (field.fields) {
945
+ return field.isChecked || checkAtLeastOneFieldChecked(field.fields);
946
+ }
947
+ return field.isChecked;
948
+ });
949
+ }
950
+ return checkAtLeastOneFieldChecked(field.fields);
951
+ };
952
+ const isAnyOfTheChildFieldsChecked = isAtleastOneChildChecked();
953
+ if (field.isHidden) return null;
954
+ return jsxRuntime.jsxs(React__default["default"].Fragment, {
955
+ children: [jsxRuntime.jsxs(uiKit.CheckboxInput, {
956
+ isChecked: field.isReadOnly ? isAnySiblingChecked : isAnyOfTheChildFieldsChecked || field.isChecked,
957
+ isReadOnly: field.isReadOnly || field.isRequired,
958
+ onChange: e => {
959
+ var _context2, _field$fields2;
960
+ const path = _concatInstanceProperty__default["default"](_context2 = "".concat(parentKeys.join('.'), ".fields[")).call(_context2, index, "]");
961
+ // Update all child fields
962
+ const updateAllChildFieldsChecked = (path, checked) => {
963
+ const item = get__default["default"](_valuesInstanceProperty__default["default"](formik), path);
964
+ if (item && item.fields) {
965
+ var _context3;
966
+ _forEachInstanceProperty__default["default"](_context3 = item.fields).call(_context3, (field, i) => {
967
+ var _context4, _field$fields;
968
+ const fieldPath = _concatInstanceProperty__default["default"](_context4 = "".concat(path, ".fields[")).call(_context4, i, "]");
969
+ if (!((_field$fields = field.fields) !== null && _field$fields !== void 0 && _field$fields.length)) {
970
+ formik.setFieldValue("".concat(fieldPath, ".isChecked"), checked,
971
+ // pass `false` to avoid revalidating the form with intermediate values
972
+ false);
973
+ }
974
+ updateAllChildFieldsChecked(fieldPath, checked);
975
+ });
976
+ }
977
+ };
978
+ if (!((_field$fields2 = field.fields) !== null && _field$fields2 !== void 0 && _field$fields2.length)) {
979
+ formik.setFieldValue("".concat(path, ".isChecked"), e.target.checked,
980
+ // pass `false` to avoid revalidating the form with intermediate values
981
+ false);
982
+ }
983
+ updateAllChildFieldsChecked(path, e.target.checked);
984
+ },
985
+ children: [field.label, " ", field.isRequired && '*']
986
+ }), field.fields && ((_field$fields3 = field.fields) === null || _field$fields3 === void 0 ? void 0 : _field$fields3.length) > 0 && jsxRuntime.jsxs(uiKit.Spacings.Inline, {
987
+ scale: "l",
988
+ children: [jsxRuntime.jsx("div", {}), jsxRuntime.jsx(FieldSections, {
989
+ fields: field.fields,
990
+ formik: formik,
991
+ parentKeys: [...parentKeys, "fields[".concat(index, "]")],
992
+ isAnySiblingChecked: isAnySiblingChecked
993
+ })]
994
+ })]
995
+ }, _concatInstanceProperty__default["default"](_context = "".concat(field.name, "-")).call(_context, index));
996
+ })
997
+ });
998
+ };
999
+ function checkAllFieldsSelected(fields) {
1000
+ return _everyInstanceProperty__default["default"](fields).call(fields, field => {
1001
+ if (field.fields) {
1002
+ return checkAllFieldsSelected(field.fields);
1003
+ }
1004
+ return field.isChecked || field.isRequired || field.isReadOnly;
1005
+ });
1006
+ }
1007
+ function checkAtLeastOneFieldChecked(fields) {
1008
+ return _someInstanceProperty__default["default"](fields).call(fields, field => {
1009
+ if (field.fields) {
1010
+ return field.isChecked || checkAtLeastOneFieldChecked(field.fields);
1011
+ }
1012
+ return field.isChecked;
1013
+ });
1014
+ }
1015
+ const FieldGroupSection = _ref2 => {
1016
+ let group = _ref2.group,
1017
+ index = _ref2.index,
1018
+ formik = _ref2.formik;
1019
+ const allAllFieldsSelected = React__default["default"].useMemo(() => checkAllFieldsSelected(group.fields), [group.fields]);
1020
+ const isAtleastOneFieldChecked = React__default["default"].useMemo(() => checkAtLeastOneFieldChecked(group.fields), [group.fields]);
1021
+ const parentKey = "groups[".concat(index, "]");
1022
+ const handleChangeAllFields = e => {
1023
+ const item = get__default["default"](_valuesInstanceProperty__default["default"](formik), parentKey);
1024
+ function updateAllFields(fields, checked) {
1025
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => {
1026
+ if (field.fields) {
1027
+ return _objectSpread$1(_objectSpread$1({}, field), {}, {
1028
+ fields: updateAllFields(field.fields, checked)
1029
+ });
1030
+ }
1031
+ if (field.isReadOnly || field.isRequired) return field;
1032
+ return _objectSpread$1(_objectSpread$1({}, field), {}, {
1033
+ isChecked: checked
1034
+ });
1035
+ });
1036
+ }
1037
+ formik.setFieldValue(parentKey, _objectSpread$1(_objectSpread$1({}, item), {}, {
1038
+ fields: updateAllFields(item.fields, e.target.checked)
1039
+ }));
1040
+ };
1041
+ if (group.isHidden) return null;
1042
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
1043
+ children: [jsxRuntime.jsx(uiKit.Grid.Item, {
1044
+ children: jsxRuntime.jsx(StyledGroupCard, {
1045
+ type: "flat",
1046
+ insetScale: "l",
1047
+ showTopBorder: true,
1048
+ children: jsxRuntime.jsx(uiKit.CheckboxInput, {
1049
+ isIndeterminate: !allAllFieldsSelected && isAtleastOneFieldChecked,
1050
+ isChecked: allAllFieldsSelected,
1051
+ onChange: handleChangeAllFields,
1052
+ children: group.groupLabel
1053
+ })
1054
+ })
1055
+ }), jsxRuntime.jsx(uiKit.Grid.Item, {
1056
+ children: jsxRuntime.jsx(StyledFieldsCard, {
1057
+ type: "flat",
1058
+ insetScale: "l",
1059
+ showTopBorder: true,
1060
+ children: jsxRuntime.jsx(uiKit.Spacings.Stack, {
1061
+ scale: "s",
1062
+ children: jsxRuntime.jsx(FieldSections, {
1063
+ fields: group.fields,
1064
+ formik: formik,
1065
+ parentKeys: [parentKey],
1066
+ isAnySiblingChecked: isAtleastOneFieldChecked
1067
+ })
1068
+ })
1069
+ })
1070
+ })]
1071
+ });
1072
+ };
1073
+ const ExportFieldsSelectionStep = () => {
1074
+ const intl = reactIntl.useIntl();
1075
+ const _React$useState = React__default["default"].useState(''),
1076
+ _React$useState2 = _slicedToArray(_React$useState, 2),
1077
+ fieldSearchTerm = _React$useState2[0],
1078
+ setFieldSearchTerm = _React$useState2[1];
1079
+ const _useExportResourcesCo = useExportResourcesContext(),
1080
+ formik = _useExportResourcesCo.formik,
1081
+ setCurrentStep = _useExportResourcesCo.setCurrentStep,
1082
+ resourceType = _useExportResourcesCo.resourceType,
1083
+ onClose = _useExportResourcesCo.onClose;
1084
+ const resourceTypePlural = resourceTypeToDisplayName({
1085
+ resourceType: resourceType,
1086
+ isPlural: true
1087
+ });
1088
+ React__default["default"].useEffect(() => {
1089
+ formik.validateForm();
1090
+ // eslint-disable-next-line react-hooks/exhaustive-deps
1091
+ }, [_valuesInstanceProperty__default["default"](formik).groups]);
1092
+ // adds `isHidden` property to each field based on search term
1093
+ const filteredGroups = React__default["default"].useMemo(() => {
1094
+ var _fieldSearchTerm$trim, _context6;
1095
+ const updateFields = (fields, parentMatches) => {
1096
+ return _mapInstanceProperty__default["default"](fields).call(fields, field => {
1097
+ var _context5;
1098
+ const matches = _includesInstanceProperty__default["default"](_context5 = field.label.toLowerCase()).call(_context5, fieldSearchTerm.toLowerCase());
1099
+ let isHidden = !matches && !parentMatches;
1100
+ if (field.fields) {
1101
+ const updatedFields = updateFields(field.fields, matches);
1102
+ isHidden = isHidden && _everyInstanceProperty__default["default"](updatedFields).call(updatedFields, f => f.isHidden);
1103
+ field = _objectSpread$1(_objectSpread$1({}, field), {}, {
1104
+ fields: updatedFields
1105
+ });
1106
+ }
1107
+ return _objectSpread$1(_objectSpread$1({}, field), {}, {
1108
+ isHidden
1109
+ });
1110
+ });
1111
+ };
1112
+ if (!(fieldSearchTerm !== null && fieldSearchTerm !== void 0 && (_fieldSearchTerm$trim = _trimInstanceProperty__default["default"](fieldSearchTerm).call(fieldSearchTerm)) !== null && _fieldSearchTerm$trim !== void 0 && _fieldSearchTerm$trim.length)) return _valuesInstanceProperty__default["default"](formik).groups;
1113
+ return _mapInstanceProperty__default["default"](_context6 = _valuesInstanceProperty__default["default"](formik).groups).call(_context6, group => {
1114
+ const updatedFields = updateFields(group.fields, false);
1115
+ const isHidden = _everyInstanceProperty__default["default"](updatedFields).call(updatedFields, field => field.isHidden);
1116
+ return _objectSpread$1(_objectSpread$1({}, group), {}, {
1117
+ fields: updatedFields,
1118
+ isHidden
1119
+ });
1120
+ });
1121
+ }, [_valuesInstanceProperty__default["default"](formik).groups, fieldSearchTerm]);
1122
+ const onSearchChange = React__default["default"].useCallback(event => {
1123
+ setFieldSearchTerm(event.target.value);
1124
+ }, [setFieldSearchTerm]);
1125
+ const hasResults = Boolean(_findInstanceProperty__default["default"](filteredGroups).call(filteredGroups, group => !group.isHidden));
1126
+ const onSearchChangeThrottled = React__default["default"].useMemo(() => throttle__default["default"](onSearchChange, 300), [onSearchChange]);
1127
+ const onSearchReset = () => {
1128
+ setFieldSearchTerm('');
1129
+ };
1130
+ return jsxRuntime.jsx(applicationComponents.FormDialog, {
1131
+ isOpen: true,
1132
+ title: intl.formatMessage(messages.modalTitle, {
1133
+ resourceType: resourceTypePlural
1134
+ }),
1135
+ labelPrimary: intl.formatMessage(messages.startExport),
1136
+ onPrimaryButtonClick: formik.submitForm,
1137
+ isPrimaryButtonDisabled: !formik.isValid,
1138
+ labelSecondary: intl.formatMessage(messages.back),
1139
+ onSecondaryButtonClick: () => setCurrentStep(1),
1140
+ onClose: onClose,
1141
+ size: 16,
1142
+ children: jsxRuntime.jsx(uiKit.Spacings.Stack, {
1143
+ scale: "xl",
1144
+ children: jsxRuntime.jsxs(uiKit.Spacings.Stack, {
1145
+ scale: "m",
1146
+ children: [jsxRuntime.jsxs(uiKit.Spacings.Inline, {
1147
+ justifyContent: "space-between",
1148
+ children: [jsxRuntime.jsx(uiKit.Text.Body, {
1149
+ intlMessage: messages.selectFieldsToExport
1150
+ }), jsxRuntime.jsx(uiKit.Link, {
1151
+ isExternal: true,
1152
+ tone: "secondary",
1153
+ intlMessage: messages.fieldDefinitions,
1154
+ to: FIELD_DEFINITIONS_URLS[resourceType]
1155
+ })]
1156
+ }), jsxRuntime.jsx(uiKit.SearchTextInput, {
1157
+ placeholder: intl.formatMessage(messages.searchForFields),
1158
+ value: fieldSearchTerm,
1159
+ onChange: onSearchChangeThrottled,
1160
+ onReset: onSearchReset
1161
+ // TODO: `SearchTextInput` props to be improved. The `onSubmit` callback shouldn't be mandatory
1162
+ ,
1163
+ onSubmit: () => {}
1164
+ }), hasResults ? jsxRuntime.jsx(uiKit.Card, {
1165
+ insetScale: "none",
1166
+ children: jsxRuntime.jsx(uiKit.Grid, {
1167
+ gridAutoFlow: "row",
1168
+ gridTemplateColumns: "".concat(uiKit.designTokens.constraint5, " auto"),
1169
+ children: _mapInstanceProperty__default["default"](filteredGroups).call(filteredGroups, (group, index) => jsxRuntime.jsx(FieldGroupSection, {
1170
+ group: group,
1171
+ index: index,
1172
+ formik: formik
1173
+ }, group.groupLabel))
1174
+ })
1175
+ }) : jsxRuntime.jsx(NoSearchResults, {})]
1176
+ })
1177
+ })
1178
+ });
1179
+ };
1180
+
1181
+ process.env.NODE_ENV !== "production" ? {
1182
+ renderProperties: PropTypes__default["default"].func
1183
+ } : {};
1184
+
1185
+ const ExportResourcesContext = /*#__PURE__*/React.createContext();
1186
+
1187
+ const ExportResourcesProvider = props => {
1188
+ const initialValues = useInitialValues(props);
1189
+ const _useStartExportOperat = useStartExportOperation(props),
1190
+ startExportOperation = _useStartExportOperat.startExportOperation;
1191
+ const _React$useState = React__default["default"].useState(1),
1192
+ _React$useState2 = _slicedToArray(_React$useState, 2),
1193
+ currentStep = _React$useState2[0],
1194
+ setCurrentStep = _React$useState2[1];
1195
+ const onSubmit = async values => {
1196
+ if (currentStep === 1) {
1197
+ setCurrentStep(2);
1198
+ } else {
1199
+ startExportOperation(values);
1200
+ }
1201
+ };
1202
+ const formik$1 = formik.useFormik({
1203
+ initialValues,
1204
+ validate: values => validate({
1205
+ values,
1206
+ step: currentStep
1207
+ }),
1208
+ onSubmit
1209
+ });
1210
+ React__default["default"].useEffect(() => {
1211
+ formik$1.validateForm();
1212
+ }, [currentStep]);
1213
+ return jsxRuntime.jsx(ExportResourcesContext.Provider, {
1214
+ value: {
1215
+ formik: formik$1,
1216
+ currentStep,
1217
+ setCurrentStep,
1218
+ onClose: props.onClose,
1219
+ resourceType: props.resourceType,
1220
+ exportType: props.exportType,
1221
+ totalResourcesCount: props.totalResourcesCount,
1222
+ selectedResourceIds: props.selectedResourceIds
1223
+ },
1224
+ children: props.children
1225
+ });
1226
+ };
1227
+
1228
+ const CurrentStep = () => {
1229
+ const _useExportResourcesCo = useExportResourcesContext(),
1230
+ currentStep = _useExportResourcesCo.currentStep;
1231
+ const steps = {
1232
+ 1: jsxRuntime.jsx(ExportFileSettingsStep, {}),
1233
+ 2: jsxRuntime.jsx(ExportFieldsSelectionStep, {})
1234
+ };
1235
+ return steps[currentStep] || null;
1236
+ };
1237
+
1238
+ function ownKeys(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
1239
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
1240
+ const ExportResourcesModal = props => {
1241
+ if (!props.isOpen) return null;
1242
+ return jsxRuntime.jsx(ExportResourcesProvider, _objectSpread(_objectSpread({}, props), {}, {
1243
+ children: jsxRuntime.jsx(CurrentStep, {})
1244
+ }));
1245
+ };
1246
+ ExportResourcesModal.displayName = 'ExportResourcesModal';
1247
+ ExportResourcesModal.defaultProps = {
1248
+ isOpen: false,
1249
+ selectedResourceIds: [],
1250
+ exportType: EXPORT_TYPES.ALL,
1251
+ outputFormat: OUTPUT_FORMATS.CSV,
1252
+ customFields: [],
1253
+ fieldGroups: []
1254
+ };
1255
+
1256
+ exports.EXPORTABLE_RESOURCES = EXPORTABLE_RESOURCES;
1257
+ exports.EXPORT_TYPES = EXPORT_TYPES;
1258
+ exports["default"] = ExportResourcesModal;