@1money/component-ui 0.0.74 → 0.0.76
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.
- package/es/components/Dialog/Dialog.js +7 -39
- package/es/components/Dialog/constants.d.ts +0 -3
- package/es/components/Dialog/constants.js +1 -4
- package/es/components/Dialog/style/Dialog.css +0 -21
- package/es/components/ProForm/ProForm.js +46 -33
- package/es/components/ProForm/ProFormDependency.js +6 -16
- package/es/components/ProForm/ProFormItem.js +5 -7
- package/es/components/ProForm/ProFormList.js +112 -40
- package/es/components/ProForm/core/constants.d.ts +2 -0
- package/es/components/ProForm/core/constants.js +7 -1
- package/es/components/ProForm/core/devWarning.d.ts +3 -0
- package/es/components/ProForm/core/devWarning.js +22 -0
- package/es/components/ProForm/core/formStore.d.ts +10 -2
- package/es/components/ProForm/core/formStore.js +21 -2
- package/es/components/ProForm/core/hooks/useForm.js +246 -103
- package/es/components/ProForm/core/hooks/useFormCore.js +134 -28
- package/es/components/ProForm/core/interface.d.ts +124 -49
- package/es/components/ProForm/core/runRules.d.ts +44 -12
- package/es/components/ProForm/core/runRules.js +584 -133
- package/es/components/ProForm/core/useFormItem.d.ts +6 -7
- package/es/components/ProForm/core/useFormItem.js +44 -22
- package/es/components/ProForm/core/validationError.d.ts +13 -0
- package/es/components/ProForm/core/validationError.js +29 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +19 -5
- package/es/components/ProForm/fields/ProFormFieldSet.js +51 -12
- package/es/components/ProForm/fields/ProFormRadioGroup.js +8 -3
- package/es/components/ProForm/fields/ProFormSelect.js +13 -7
- package/es/components/ProForm/fields/createProFormField.js +18 -25
- package/es/components/ProForm/hooks/useFieldRequest.js +10 -8
- package/es/components/ProForm/index.d.ts +2 -1
- package/es/components/ProForm/index.js +4 -1
- package/es/components/ProForm/interface.d.ts +31 -40
- package/es/components/ProForm/layouts/QueryFilter.js +24 -16
- package/es/components/ProForm/style/ProForm.css +0 -1
- package/es/components/ProForm/utils.d.ts +8 -0
- package/es/components/ProForm/utils.js +51 -3
- package/es/components/Table/core/useTableSetup.js +2 -2
- package/es/components/Table/interface.d.ts +1 -1
- package/es/index.css +1 -1
- package/lib/components/Dialog/Dialog.js +6 -38
- package/lib/components/Dialog/constants.d.ts +0 -3
- package/lib/components/Dialog/constants.js +1 -4
- package/lib/components/Dialog/style/Dialog.css +0 -21
- package/lib/components/ProForm/ProForm.js +45 -32
- package/lib/components/ProForm/ProFormDependency.js +5 -15
- package/lib/components/ProForm/ProFormItem.js +5 -7
- package/lib/components/ProForm/ProFormList.js +110 -38
- package/lib/components/ProForm/core/constants.d.ts +2 -0
- package/lib/components/ProForm/core/constants.js +8 -2
- package/lib/components/ProForm/core/devWarning.d.ts +3 -0
- package/lib/components/ProForm/core/devWarning.js +29 -0
- package/lib/components/ProForm/core/formStore.d.ts +10 -2
- package/lib/components/ProForm/core/formStore.js +23 -2
- package/lib/components/ProForm/core/hooks/useForm.js +242 -99
- package/lib/components/ProForm/core/hooks/useFormCore.js +133 -27
- package/lib/components/ProForm/core/interface.d.ts +124 -49
- package/lib/components/ProForm/core/runRules.d.ts +44 -12
- package/lib/components/ProForm/core/runRules.js +587 -133
- package/lib/components/ProForm/core/useFormItem.d.ts +6 -7
- package/lib/components/ProForm/core/useFormItem.js +43 -21
- package/lib/components/ProForm/core/validationError.d.ts +13 -0
- package/lib/components/ProForm/core/validationError.js +36 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +18 -4
- package/lib/components/ProForm/fields/ProFormFieldSet.js +51 -12
- package/lib/components/ProForm/fields/ProFormRadioGroup.js +7 -2
- package/lib/components/ProForm/fields/ProFormSelect.js +13 -7
- package/lib/components/ProForm/fields/createProFormField.js +18 -25
- package/lib/components/ProForm/hooks/useFieldRequest.js +10 -8
- package/lib/components/ProForm/index.d.ts +2 -1
- package/lib/components/ProForm/index.js +10 -1
- package/lib/components/ProForm/interface.d.ts +31 -40
- package/lib/components/ProForm/layouts/QueryFilter.js +24 -16
- package/lib/components/ProForm/style/ProForm.css +0 -1
- package/lib/components/ProForm/utils.d.ts +8 -0
- package/lib/components/ProForm/utils.js +52 -3
- package/lib/components/Table/core/useTableSetup.js +2 -2
- package/lib/components/Table/interface.d.ts +1 -1
- package/lib/index.css +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +42 -36
- package/scripts/mcp-server/index.generated.json +23 -67
|
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports["default"] = exports.ProForm = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
12
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -26,6 +25,7 @@ var _utils = require("./utils");
|
|
|
26
25
|
var _formStore = require("./core/formStore");
|
|
27
26
|
var _useUrlSync2 = require("./hooks/useUrlSync");
|
|
28
27
|
var _pathUtils = require("./core/pathUtils");
|
|
28
|
+
var _validationError = require("./core/validationError");
|
|
29
29
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
30
30
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
31
31
|
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
@@ -72,9 +72,8 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
72
72
|
var children = props.children,
|
|
73
73
|
className = props.className,
|
|
74
74
|
submitter = props.submitter,
|
|
75
|
-
_props$
|
|
76
|
-
|
|
77
|
-
modeProp = props.mode,
|
|
75
|
+
_props$mode = props.mode,
|
|
76
|
+
mode = _props$mode === void 0 ? 'edit' : _props$mode,
|
|
78
77
|
_props$grid = props.grid,
|
|
79
78
|
grid = _props$grid === void 0 ? false : _props$grid,
|
|
80
79
|
colProps = props.colProps,
|
|
@@ -111,15 +110,10 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
111
110
|
labelAlign = _props$labelAlign === void 0 ? 'left' : _props$labelAlign,
|
|
112
111
|
_props$disabled = props.disabled,
|
|
113
112
|
disabled = _props$disabled === void 0 ? false : _props$disabled,
|
|
114
|
-
_props$colon = props.colon,
|
|
115
|
-
colon = _props$colon === void 0 ? true : _props$colon,
|
|
116
|
-
_props$requiredMark = props.requiredMark,
|
|
117
|
-
requiredMark = _props$requiredMark === void 0 ? true : _props$requiredMark,
|
|
118
113
|
_props$validateTrigge = props.validateTrigger,
|
|
119
114
|
validateTrigger = _props$validateTrigge === void 0 ? 'onChange' : _props$validateTrigge,
|
|
120
115
|
_prefixCls = props.prefixCls,
|
|
121
|
-
rest = __rest(props, ["children", "className", "submitter", "
|
|
122
|
-
var mode = modeProp !== null && modeProp !== void 0 ? modeProp : readonly ? 'read' : 'edit';
|
|
116
|
+
rest = __rest(props, ["children", "className", "submitter", "mode", "grid", "colProps", "rowProps", "loading", "request", "params", "initialValues", "onFinish", "onFinishFailed", "onValuesChange", "onReset", "onInit", "onLoadingChange", "syncToUrl", "syncToUrlAsImportant", "extraUrlParams", "autoFocusFirstInput", "formComponentType", "formRef", "omitNil", "dateFormatter", "fieldProps", "formItemProps", "layout", "size", "labelAlign", "disabled", "validateTrigger", "prefixCls"]);
|
|
123
117
|
var _useSafeState = (0, _useSafeState5["default"])(false),
|
|
124
118
|
_useSafeState2 = (0, _slicedToArray2["default"])(_useSafeState, 2),
|
|
125
119
|
requestLoading = _useSafeState2[0],
|
|
@@ -209,8 +203,6 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
209
203
|
size: size,
|
|
210
204
|
labelAlign: labelAlign,
|
|
211
205
|
disabled: disabled,
|
|
212
|
-
colon: colon,
|
|
213
|
-
requiredMark: requiredMark,
|
|
214
206
|
validateTrigger: validateTrigger
|
|
215
207
|
}),
|
|
216
208
|
formInstance = _useForm.formInstance,
|
|
@@ -221,7 +213,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
221
213
|
// ref catches two calls in the same tick).
|
|
222
214
|
var wrappedHandleSubmit = (0, _useEventCallback["default"])(function (e) {
|
|
223
215
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
224
|
-
var _a, _b, _c, epoch, validatedValues, pipelined, result,
|
|
216
|
+
var _a, _b, _c, epoch, validatedValues, pipelined, result, _t;
|
|
225
217
|
return _regenerator["default"].wrap(function (_context) {
|
|
226
218
|
while (1) switch (_context.prev = _context.next) {
|
|
227
219
|
case 0:
|
|
@@ -269,11 +261,18 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
269
261
|
}
|
|
270
262
|
return _context.abrupt("return");
|
|
271
263
|
case 7:
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
264
|
+
// Only a VALIDATION failure routes to onFinishFailed. An exception out
|
|
265
|
+
// of the consumer's own onFinish is not a validation result: the submit
|
|
266
|
+
// fails (URL untouched, overlay stays open) and the error is surfaced
|
|
267
|
+
// on the console instead of being misreported with an empty payload.
|
|
268
|
+
if (_t instanceof _validationError.FormValidationError) {
|
|
269
|
+
onFinishFailed === null || onFinishFailed === void 0 ? void 0 : onFinishFailed({
|
|
270
|
+
values: _t.values,
|
|
271
|
+
errors: _t.errors
|
|
272
|
+
});
|
|
273
|
+
} else {
|
|
274
|
+
console.error('[ProForm] onFinish threw during submit:', _t);
|
|
275
|
+
}
|
|
277
276
|
case 8:
|
|
278
277
|
_context.prev = 8;
|
|
279
278
|
submittingRef.current = false;
|
|
@@ -299,8 +298,9 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
299
298
|
getFieldFormatValueObject: function getFieldFormatValueObject(name) {
|
|
300
299
|
var formatted = formatValuesKeepNil(formInstance.getFieldsValue());
|
|
301
300
|
if (!name) return formatted;
|
|
302
|
-
|
|
303
|
-
|
|
301
|
+
// A nested object carrying ONLY the requested leaf — not the whole
|
|
302
|
+
// top-level subtree the path happens to live in.
|
|
303
|
+
return (0, _pathUtils.setNestedValue)({}, name, (0, _pathUtils.resolveValue)(formatted, name));
|
|
304
304
|
},
|
|
305
305
|
validateFieldsReturnFormatValue: function validateFieldsReturnFormatValue() {
|
|
306
306
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
@@ -345,6 +345,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
345
345
|
}, [formRef, proFormFormInstance]);
|
|
346
346
|
// ── request / params auto-load ──
|
|
347
347
|
var requestRef = (0, _useLatest["default"])(request);
|
|
348
|
+
var hasRequest = !!request;
|
|
348
349
|
var serializedParams = (0, _react.useMemo)(function () {
|
|
349
350
|
return (0, _utils.stableSerialize)(params);
|
|
350
351
|
}, [params]);
|
|
@@ -364,7 +365,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
364
365
|
var stale = false;
|
|
365
366
|
var fetchData = function fetchData() {
|
|
366
367
|
return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
367
|
-
var requestFn, data;
|
|
368
|
+
var requestFn, data, _t3;
|
|
368
369
|
return _regenerator["default"].wrap(function (_context3) {
|
|
369
370
|
while (1) switch (_context3.prev = _context3.next) {
|
|
370
371
|
case 0:
|
|
@@ -384,20 +385,31 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
384
385
|
if (!stale && data && (0, _typeof2["default"])(data) === 'object') {
|
|
385
386
|
formInstance.setFieldsValue(data);
|
|
386
387
|
}
|
|
388
|
+
_context3.next = 5;
|
|
389
|
+
break;
|
|
387
390
|
case 4:
|
|
388
391
|
_context3.prev = 4;
|
|
392
|
+
_t3 = _context3["catch"](2);
|
|
393
|
+
// A failed request must not escape as an unhandled rejection — the
|
|
394
|
+
// form keeps its initialValues and the failure is surfaced on the
|
|
395
|
+
// console (mirrors the field-level useFieldRequest handling).
|
|
396
|
+
if (!stale) {
|
|
397
|
+
console.error('[ProForm] request failed:', _t3);
|
|
398
|
+
}
|
|
399
|
+
case 5:
|
|
400
|
+
_context3.prev = 5;
|
|
389
401
|
if (!stale) {
|
|
390
402
|
setRequestLoading(false);
|
|
391
403
|
// Only a NON-superseded settle initializes the form: a stale
|
|
392
404
|
// request's data was discarded, so its values must not be reported.
|
|
393
405
|
fireInit();
|
|
394
406
|
}
|
|
395
|
-
return _context3.finish(
|
|
396
|
-
case
|
|
407
|
+
return _context3.finish(5);
|
|
408
|
+
case 6:
|
|
397
409
|
case "end":
|
|
398
410
|
return _context3.stop();
|
|
399
411
|
}
|
|
400
|
-
}, _callee3, null, [[2
|
|
412
|
+
}, _callee3, null, [[2, 4, 5, 6]]);
|
|
401
413
|
}));
|
|
402
414
|
};
|
|
403
415
|
if (requestRef.current) {
|
|
@@ -408,10 +420,12 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
408
420
|
return function () {
|
|
409
421
|
stale = true;
|
|
410
422
|
};
|
|
411
|
-
// Re-fetch
|
|
423
|
+
// Re-fetch when params change by VALUE (depending on the raw `params`
|
|
412
424
|
// reference would re-run on every render for inline object literals and,
|
|
413
|
-
// combined with the loading setState, loop forever
|
|
414
|
-
|
|
425
|
+
// combined with the loading setState, loop forever) — and when `request`
|
|
426
|
+
// first becomes defined (e.g. behind a feature flag), mirroring
|
|
427
|
+
// useFieldRequest. fireInit's once-guard keeps onInit from re-firing.
|
|
428
|
+
}, [serializedParams, hasRequest]);
|
|
415
429
|
// ── autoFocusFirstInput ──
|
|
416
430
|
var formElRef = (0, _react.useRef)(null);
|
|
417
431
|
(0, _react.useEffect)(function () {
|
|
@@ -441,17 +455,16 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
441
455
|
validateFieldAsync: internals.validateFieldAsync,
|
|
442
456
|
registerField: internals.registerField,
|
|
443
457
|
unregisterField: internals.unregisterField,
|
|
458
|
+
retainField: internals.retainField,
|
|
459
|
+
releaseField: internals.releaseField,
|
|
444
460
|
size: size,
|
|
445
461
|
labelAlign: labelAlign,
|
|
446
462
|
// Submitting/loading does NOT disable fields — only the
|
|
447
463
|
// explicit `disabled` prop does. Keeping isLoading out of this slice
|
|
448
464
|
// means a submit cycle no longer re-renders every field shell.
|
|
449
465
|
disabled: disabled,
|
|
450
|
-
colon: colon,
|
|
451
|
-
requiredMark: requiredMark,
|
|
452
466
|
validateTrigger: validateTrigger,
|
|
453
467
|
// ProForm specifics
|
|
454
|
-
readonly: readonly,
|
|
455
468
|
mode: mode,
|
|
456
469
|
grid: grid,
|
|
457
470
|
colProps: stableColProps !== null && stableColProps !== void 0 ? stableColProps : DEFAULT_COL_PROPS,
|
|
@@ -464,7 +477,7 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
464
477
|
layout: stableLayout,
|
|
465
478
|
formComponentType: formComponentType
|
|
466
479
|
};
|
|
467
|
-
}, [proFormFormInstance, internals.setFieldValue, internals.setFieldError, internals.setFieldWarning, internals.validateField, internals.validateFieldAsync, internals.registerField, internals.unregisterField,
|
|
480
|
+
}, [proFormFormInstance, internals.setFieldValue, internals.setFieldError, internals.setFieldWarning, internals.validateField, internals.validateFieldAsync, internals.registerField, internals.unregisterField, internals.retainField, internals.releaseField, size, labelAlign, disabled, validateTrigger, mode, grid, stableColProps, registerTransform, unregisterTransform, registerValueType, unregisterValueType, stableFieldProps, stableFormItemProps, stableLayout, formComponentType]);
|
|
468
481
|
var WrapperComponent = grid ? _Grid.Row : _react.Fragment;
|
|
469
482
|
var wrapperProps = grid ? Object.assign({}, rowProps) : {};
|
|
470
483
|
// Reset callback chain: the Submitter resets the values first, then the
|
|
@@ -498,4 +511,4 @@ var ProFormBase = function ProFormBase(props) {
|
|
|
498
511
|
ProFormBase.displayName = 'ProForm';
|
|
499
512
|
var ProForm = exports.ProForm = /*#__PURE__*/(0, _react.memo)(ProFormBase);
|
|
500
513
|
var _default = exports["default"] = ProForm;
|
|
501
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VNZW1vaXplZEZuIiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9HcmlkIiwiX3VzZUZvcm0yIiwiX2NvbnRleHQ0IiwiX1N1Ym1pdHRlciIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZm9ybVN0b3JlIiwiX3VzZVVybFN5bmMyIiwiX3BhdGhVdGlscyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZjMiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJDU1NfUFJFRklYIiwiZm9ybUNsYXNzZXMiLCJERUZBVUxUX0NPTF9QUk9QUyIsInNwYW4iLCJQcm9Gb3JtQmFzZSIsInByb3BzIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJzdWJtaXR0ZXIiLCJfcHJvcHMkcmVhZG9ubHkiLCJyZWFkb25seSIsIm1vZGVQcm9wIiwibW9kZSIsIl9wcm9wcyRncmlkIiwiZ3JpZCIsImNvbFByb3BzIiwicm93UHJvcHMiLCJfcHJvcHMkbG9hZGluZyIsImxvYWRpbmciLCJyZXF1ZXN0IiwicGFyYW1zIiwiaW5pdGlhbFZhbHVlcyIsIm9uRmluaXNoIiwib25GaW5pc2hGYWlsZWQiLCJvblZhbHVlc0NoYW5nZSIsIm9uUmVzZXQiLCJvbkluaXQiLCJvbkxvYWRpbmdDaGFuZ2UiLCJzeW5jVG9VcmwiLCJfcHJvcHMkc3luY1RvVXJsQXNJbXAiLCJzeW5jVG9VcmxBc0ltcG9ydGFudCIsImV4dHJhVXJsUGFyYW1zIiwiX3Byb3BzJGF1dG9Gb2N1c0ZpcnN0IiwiYXV0b0ZvY3VzRmlyc3RJbnB1dCIsImZvcm1Db21wb25lbnRUeXBlIiwiZm9ybVJlZiIsIl9wcm9wcyRvbWl0TmlsIiwib21pdE5pbCIsIl9wcm9wcyRkYXRlRm9ybWF0dGVyIiwiZGF0ZUZvcm1hdHRlciIsImZpZWxkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwibGF5b3V0IiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkY29sb24iLCJjb2xvbiIsIl9wcm9wcyRyZXF1aXJlZE1hcmsiLCJyZXF1aXJlZE1hcmsiLCJfcHJvcHMkdmFsaWRhdGVUcmlnZ2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsIl91c2VTYWZlU3RhdGUiLCJ1c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInJlcXVlc3RMb2FkaW5nIiwic2V0UmVxdWVzdExvYWRpbmciLCJfdXNlU2FmZVN0YXRlMyIsIl91c2VTYWZlU3RhdGU0Iiwic3VibWl0dGluZyIsInNldFN1Ym1pdHRpbmciLCJzdWJtaXR0aW5nUmVmIiwidXNlUmVmIiwiaXNMb2FkaW5nIiwidHJhbnNmb3JtS2V5UmVmIiwidmFsdWVUeXBlUmVmIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1c2VNZW1vaXplZEZuIiwibmFtZSIsImZuIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJ1bmRlZmluZWQiLCJyZWdpc3RlclZhbHVlVHlwZSIsInZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJvbkZpbmlzaFJlZiIsInVzZUxhdGVzdCIsIm9uSW5pdFJlZiIsIm9uTG9hZGluZ0NoYW5nZVJlZiIsImFwcGx5UGlwZWxpbmUiLCJ2YWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwidHJhbnNmb3JtU3VibWl0VmFsdWVzIiwib21pdE5pbFZhbHVlcyIsImZvcm1hdFZhbHVlc0tlZXBOaWwiLCJfdXNlVXJsU3luYyIsInVzZVVybFN5bmMiLCJ1cmxJbml0aWFsVmFsdWVzIiwib25VcmxTeW5jRmluaXNoIiwib25VcmxTeW5jUmVzZXQiLCJtZXJnZWRJbml0aWFsVmFsdWVzUmVmIiwiYXNzaWduIiwibWVyZ2VkSW5pdGlhbFZhbHVlcyIsInJlc2V0RXBvY2hSZWYiLCJmaXJlRm9ybVJlc2V0IiwiZmluYWxWYWx1ZXMiLCJmb3JtSW5zdGFuY2UiLCJnZXRGaWVsZHNWYWx1ZSIsIl91c2VGb3JtIiwidXNlRm9ybSIsImludGVybmFscyIsInN0b3JlIiwid3JhcHBlZEhhbmRsZVN1Ym1pdCIsInVzZUV2ZW50Q2FsbGJhY2siLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwiX2IiLCJfYyIsImVwb2NoIiwidmFsaWRhdGVkVmFsdWVzIiwicGlwZWxpbmVkIiwidHlwZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJwcmV2ZW50RGVmYXVsdCIsImFicnVwdCIsInZhbGlkYXRlRmllbGRzIiwic2VudCIsImVycm9ycyIsImZpbmlzaCIsInN0b3AiLCJwcm9Gb3JtRm9ybUluc3RhbmNlIiwidXNlTWVtbyIsImdldEZpZWxkc0Zvcm1hdFZhbHVlIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZSIsInJlc29sdmVWYWx1ZSIsImdldEZpZWxkRm9ybWF0VmFsdWVPYmplY3QiLCJmb3JtYXR0ZWQiLCJ0b3BLZXkiLCJzcGxpdCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJ2YWxpZGF0ZUZpZWxkc1JldHVybkZvcm1hdFZhbHVlIiwiX2NhbGxlZTIiLCJ2YWxzIiwiX3QyIiwiX2NvbnRleHQyIiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJ1c2VFZmZlY3QiLCJyZXF1ZXN0UmVmIiwic2VyaWFsaXplZFBhcmFtcyIsInN0YWJsZVNlcmlhbGl6ZSIsImluaXRGaXJlZFJlZiIsImZpcmVJbml0Iiwic3RhbGUiLCJmZXRjaERhdGEiLCJfY2FsbGVlMyIsInJlcXVlc3RGbiIsImRhdGEiLCJfY29udGV4dDMiLCJfdHlwZW9mMiIsInNldEZpZWxkc1ZhbHVlIiwiZm9ybUVsUmVmIiwiZmlyc3RJbnB1dCIsInF1ZXJ5U2VsZWN0b3IiLCJmb2N1cyIsInN0YWJsZUZpZWxkUHJvcHMiLCJ1c2VTaGFsbG93U3RhYmxlIiwic3RhYmxlRm9ybUl0ZW1Qcm9wcyIsInN0YWJsZUNvbFByb3BzIiwic3RhYmxlTGF5b3V0Iiwic3RhYmxlVmFsdWUiLCJzZXRGaWVsZFZhbHVlIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkV2FybmluZyIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwiV3JhcHBlckNvbXBvbmVudCIsIlJvdyIsIkZyYWdtZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiX2pzeCIsIlN1Ym1pdHRlciIsIlByb0Zvcm1TdGFibGVDb250ZXh0IiwiUHJvdmlkZXIiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiX2pzeHMiLCJyZWYiLCJqb2luQ2xzIiwib25TdWJtaXQiLCJoYW5kbGVSZXNldCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQW9CQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNwQkEsSUFBQUMsTUFBQSxHQUFBQyx1QkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sY0FBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8saUJBQUEsR0FBQUgsc0JBQUEsQ0FBQUosT0FBQTtBQUNBLElBQUFRLFdBQUEsR0FBQU4sdUJBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFTLEtBQUEsR0FBQVQsT0FBQTtBQUNBLElBQUFVLFNBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLFNBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLFVBQUEsR0FBQVosT0FBQTtBQUNBLElBQUFhLFVBQUEsR0FBQWIsT0FBQTtBQUNBLElBQUFjLE1BQUEsR0FBQWQsT0FBQTtBQUNBLElBQUFlLFVBQUEsR0FBQWYsT0FBQTtBQUNBLElBQUFnQixZQUFBLEdBQUFoQixPQUFBO0FBQ0EsSUFBQWlCLFVBQUEsR0FBQWpCLE9BQUE7QUFBZ0QsU0FBQWtCLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBakIsd0JBQUFpQixDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEs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RSxFQUFFUyxTQUFTLENBQUMsQ0FBQztRQUNoRTRMLFFBQVEsRUFBRXJGLG1CQUFtQjtRQUM3QnJGLE9BQU8sRUFBRW1GLFNBQVMsQ0FBQ3dGLFdBQVc7UUFBQTlMLFFBQUEsRUFBQSxDQUU5QixJQUFBcUwsZUFBQSxFQUFDTixnQkFBZ0IsRUFBQXpOLE1BQUEsQ0FBQXVJLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS3FGLFlBQVksRUFBQTtVQUFBbEwsUUFBQSxFQUFHQTtRQUFRLENBQUEsQ0FBQSxDQUFvQixFQUNoRW9MLGFBQWE7TUFBQSxDQUFBLENBQUE7SUFDVCxDQUFBO0VBQ3NCLENBQUEsQ0FDRDtBQUVwQyxDQUFDO0FBRUR0TCxXQUFXLENBQUNpTSxXQUFXLEdBQUcsU0FBUztBQVc1QixJQUFNQyxPQUFPLEdBQUFDLE9BQUEsQ0FBQUQsT0FBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUNwTSxXQUFXLENBQWdDO0FBQUMsSUFBQXFNLFFBQUEsR0FBQUYsT0FBQSxjQUV6REQsT0FBTyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgRnJhZ21lbnQgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTGF0ZXN0JztcbmltcG9ydCB1c2VTYWZlU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VTYWZlU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB1c2VFdmVudENhbGxiYWNrIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IFJvdyB9IGZyb20gJy4uL0dyaWQnO1xuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gJy4vY29yZS9ob29rcy91c2VGb3JtJztcbmltcG9ydCB7IFByb0Zvcm1TdGFibGVDb250ZXh0LCBQcm9Gb3JtU3RhdGVDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IFN1Ym1pdHRlciB9IGZyb20gJy4vU3VibWl0dGVyJztcbmltcG9ydCB7IENTU19QUkVGSVggfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBzdGFibGVTZXJpYWxpemUsIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcywgb21pdE5pbFZhbHVlcywgZm9ybWF0RGF0ZVZhbHVlcyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgdXNlU2hhbGxvd1N0YWJsZSB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgdXNlVXJsU3luYyB9IGZyb20gJy4vaG9va3MvdXNlVXJsU3luYyc7XG5pbXBvcnQgeyByZXNvbHZlVmFsdWUgfSBmcm9tICcuL2NvcmUvcGF0aFV0aWxzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKENTU19QUkVGSVgpO1xuY29uc3QgZm9ybUNsYXNzZXMgPSBjbGFzc25hbWVzKCdmb3JtJyk7XG5jb25zdCBERUZBVUxUX0NPTF9QUk9QUyA9IHsgc3BhbjogMjQgfTtcbmNvbnN0IFByb0Zvcm1CYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgY2xhc3NOYW1lLCBzdWJtaXR0ZXIsIHJlYWRvbmx5ID0gZmFsc2UsIG1vZGU6IG1vZGVQcm9wLCBncmlkID0gZmFsc2UsIGNvbFByb3BzLCByb3dQcm9wcywgbG9hZGluZyA9IGZhbHNlLCByZXF1ZXN0LCBwYXJhbXMsIGluaXRpYWxWYWx1ZXMsIG9uRmluaXNoLCBvbkZpbmlzaEZhaWxlZCwgb25WYWx1ZXNDaGFuZ2UsIG9uUmVzZXQsIG9uSW5pdCwgb25Mb2FkaW5nQ2hhbmdlLCBzeW5jVG9VcmwsIHN5bmNUb1VybEFzSW1wb3J0YW50ID0gZmFsc2UsIGV4dHJhVXJsUGFyYW1zLCBhdXRvRm9jdXNGaXJzdElucHV0ID0gZmFsc2UsIGZvcm1Db21wb25lbnRUeXBlLCBmb3JtUmVmLCBvbWl0TmlsID0gdHJ1ZSwgZGF0ZUZvcm1hdHRlciA9ICdzdHJpbmcnLCBmaWVsZFByb3BzLCBmb3JtSXRlbVByb3BzLCBsYXlvdXQsIHNpemUgPSAnbGFyZ2UnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIHByZWZpeENsczogX3ByZWZpeENscyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwic3VibWl0dGVyXCIsIFwicmVhZG9ubHlcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwib25Jbml0XCIsIFwib25Mb2FkaW5nQ2hhbmdlXCIsIFwic3luY1RvVXJsXCIsIFwic3luY1RvVXJsQXNJbXBvcnRhbnRcIiwgXCJleHRyYVVybFBhcmFtc1wiLCBcImF1dG9Gb2N1c0ZpcnN0SW5wdXRcIiwgXCJmb3JtQ29tcG9uZW50VHlwZVwiLCBcImZvcm1SZWZcIiwgXCJvbWl0TmlsXCIsIFwiZGF0ZUZvcm1hdHRlclwiLCBcImZpZWxkUHJvcHNcIiwgXCJmb3JtSXRlbVByb3BzXCIsIFwibGF5b3V0XCIsIFwic2l6ZVwiLCBcImxhYmVsQWxpZ25cIiwgXCJkaXNhYmxlZFwiLCBcImNvbG9uXCIsIFwicmVxdWlyZWRNYXJrXCIsIFwidmFsaWRhdGVUcmlnZ2VyXCIsIFwicHJlZml4Q2xzXCJdKTtcbiAgICBjb25zdCBtb2RlID0gbW9kZVByb3AgIT09IG51bGwgJiYgbW9kZVByb3AgIT09IHZvaWQgMCA/IG1vZGVQcm9wIDogKHJlYWRvbmx5ID8gJ3JlYWQnIDogJ2VkaXQnKTtcbiAgICBjb25zdCBbcmVxdWVzdExvYWRpbmcsIHNldFJlcXVlc3RMb2FkaW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgLy8gdXNlU2FmZVN0YXRlIGZvciB0aGUgUkVOREVSRUQgc3VibWl0dGluZyBzdGF0ZSAoaXRzIHNldHRlciBpcyB1bm1vdW50LXNhZmVcbiAgICAvLyDigJQgdGhlIGZpbmFsbHkgYmVsb3cgcnVucyBhZnRlciBhd2FpdGluZyBvbkZpbmlzaCwgd2hlbiB0aGUgdHlwaWNhbFxuICAgIC8vIHN1Ym1pdC10aGVuLWNsb3NlIGZsb3cgbWF5IGFscmVhZHkgaGF2ZSB1bm1vdW50ZWQgdGhlIGZvcm0gb24gUmVhY3RcbiAgICAvLyAxNi8xNykuIFRoZSByZWYgaXMgdGhlIHN5bmNocm9ub3VzIHJlLWVudHJ5IGd1YXJkOyBAMW1vbmV5L2hvb2tzIGhhcyBub1xuICAgIC8vIHNpbmdsZSBob29rIHRoYXQgaXMgYm90aCB1bm1vdW50LXNhZmUgYW5kIHN5bmNocm9ub3VzbHkgcmVhZGFibGUuXG4gICAgY29uc3QgW3N1Ym1pdHRpbmcsIHNldFN1Ym1pdHRpbmddID0gdXNlU2FmZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBzdWJtaXR0aW5nUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBpc0xvYWRpbmcgPSBsb2FkaW5nIHx8IHJlcXVlc3RMb2FkaW5nIHx8IHN1Ym1pdHRpbmc7XG4gICAgLy8g4pSA4pSAIFRyYW5zZm9ybSAvIHZhbHVlVHlwZSByZWdpc3RyaWVzIOKUgOKUgFxuICAgIGNvbnN0IHRyYW5zZm9ybUtleVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgdmFsdWVUeXBlUmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCByZWdpc3RlclRyYW5zZm9ybSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGZuKSA9PiB7XG4gICAgICAgIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50W25hbWVdID0gZm47XG4gICAgfSk7XG4gICAgLy8gVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBndWFyZHMgcmVtb3ZhbDogZGVsZXRlIG9ubHkgd2hlbiB0aGUgcmVnaXN0cnlcbiAgICAvLyBzdGlsbCBob2xkcyB0aGUgQ0FMTEVSJ1MgcmVnaXN0cmF0aW9uLCBzbyBhbiB1bm1vdW50aW5nIGluc3RhbmNlIGNhbiBuZXZlclxuICAgIC8vIHdpcGUgYSBzYW1lLW5hbWUgc2libGluZydzIG9yIHN1Y2Nlc3NvcidzIGVudHJ5LlxuICAgIGNvbnN0IHVucmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICBpZiAoZm4gPT09IHVuZGVmaW5lZCB8fCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9PT0gZm4pIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIHZhbHVlVHlwZVJlZi5jdXJyZW50W25hbWVdID0gdmFsdWVUeXBlO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJWYWx1ZVR5cGUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZVR5cGUpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlVHlwZVJlZi5jdXJyZW50W25hbWVdID09PSB2YWx1ZVR5cGUpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IG9uRmluaXNoUmVmID0gdXNlTGF0ZXN0KG9uRmluaXNoKTtcbiAgICBjb25zdCBvbkluaXRSZWYgPSB1c2VMYXRlc3Qob25Jbml0KTtcbiAgICBjb25zdCBvbkxvYWRpbmdDaGFuZ2VSZWYgPSB1c2VMYXRlc3Qob25Mb2FkaW5nQ2hhbmdlKTtcbiAgICAvLyBTdWJtaXQgcGlwZWxpbmU6IGRhdGVzIOKGkiBmaWVsZCB0cmFuc2Zvcm1zIOKGkiBvbWl0TmlsXG4gICAgY29uc3QgYXBwbHlQaXBlbGluZSA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZm9ybWF0RGF0ZVZhbHVlcyh2YWx1ZXMsIGRhdGVGb3JtYXR0ZXIsIHZhbHVlVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHJlc3VsdCwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAob21pdE5pbClcbiAgICAgICAgICAgIHJlc3VsdCA9IG9taXROaWxWYWx1ZXMocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICAvLyBTYW1lIHBpcGVsaW5lIFdJVEhPVVQgb21pdE5pbCDigJQgc2luZ2xlLWZpZWxkIHJlYWRlcnMgbXVzdCBub3Qgc2VlIGEgZmllbGRcbiAgICAvLyB2YW5pc2gganVzdCBiZWNhdXNlIGl0cyBjdXJyZW50IHZhbHVlIGlzIGVtcHR5LlxuICAgIGNvbnN0IGZvcm1hdFZhbHVlc0tlZXBOaWwgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZm9ybWF0RGF0ZVZhbHVlcyh2YWx1ZXMsIGRhdGVGb3JtYXR0ZXIsIHZhbHVlVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICB9KTtcbiAgICAvLyDilIDilIAgVVJMIHN5bmMgKHN5bmNUb1VybCAvIHN5bmNUb1VybEFzSW1wb3J0YW50IC8gZXh0cmFVcmxQYXJhbXMpIOKUgOKUgFxuICAgIGNvbnN0IHsgdXJsSW5pdGlhbFZhbHVlcywgb25VcmxTeW5jRmluaXNoLCBvblVybFN5bmNSZXNldCB9ID0gdXNlVXJsU3luYyh7XG4gICAgICAgIHN5bmNUb1VybCxcbiAgICAgICAgZXh0cmFVcmxQYXJhbXMsXG4gICAgfSk7XG4gICAgLy8gaW5pdGlhbFZhbHVlcyBpcyBNT1VOVC1PTkxZIChkb2N1bWVudGVkIGNvbnRyYWN0OyB1c2VGb3JtQ29yZSByZS1mcmVlemVzXG4gICAgLy8gYXMgYSBzYWZldHkgbmV0KSDigJQgY29tcHV0ZSB0aGUgVVJMIG1lcmdlIG9uY2Ugc28gdGhlIGZyZWV6ZSBpcyB2aXNpYmxlXG4gICAgLy8gd2hlcmUgdGhlIHByb3BzIGVudGVyLCBpbnN0ZWFkIG9mIHJlY29tcHV0aW5nIGRlYWQgc3ByZWFkcyBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgaWYgKG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICBtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPSBzeW5jVG9VcmxcbiAgICAgICAgICAgID8gKHN5bmNUb1VybEFzSW1wb3J0YW50XG4gICAgICAgICAgICAgICAgPyBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXMpLCB1cmxJbml0aWFsVmFsdWVzKSA6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgdXJsSW5pdGlhbFZhbHVlcyksIGluaXRpYWxWYWx1ZXMpKVxuICAgICAgICAgICAgOiAoaW5pdGlhbFZhbHVlcyAhPT0gbnVsbCAmJiBpbml0aWFsVmFsdWVzICE9PSB2b2lkIDAgPyBpbml0aWFsVmFsdWVzIDoge30pO1xuICAgIH1cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzID0gbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50O1xuICAgIC8vIEJ1bXBlZCBvbiBldmVyeSByZXNldCDigJQgYW4gaW4tZmxpZ2h0IHN1Ym1pdCBjYXB0dXJlcyBpdCBhbmQgYWJvcnRzIHdoZW5cbiAgICAvLyBpdCBjaGFuZ2VkIHVuZGVybmVhdGggKHRoZSB1c2VyIGRpc2NhcmRlZCB0aGUgc3VibWlzc2lvbidzIHZhbHVlcykuXG4gICAgY29uc3QgcmVzZXRFcG9jaFJlZiA9IHVzZVJlZigwKTtcbiAgICAvLyBSZXNldCBjaGFpbjogZm9ybS1sZXZlbCBvblJlc2V0IHJlY2VpdmVzIHRoZSAocG9zdC1yZXNldCkgZm9ybWF0dGVkXG4gICAgLy8gdmFsdWVzLCB0aGVuIHRoZSBmb3JtJ3Mgb3duIFVSTCBwYXJhbXMgYXJlIGNsZWFyZWQuIHVzZU1lbW9pemVkRm4gZGVmZXJzXG4gICAgLy8gZXhlY3V0aW9uIHRvIGV2ZW50IHRpbWUsIHdoZW4gYGZvcm1JbnN0YW5jZWAgKGNyZWF0ZWQganVzdCBiZWxvdykgZXhpc3RzLlxuICAgIGNvbnN0IGZpcmVGb3JtUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgcmVzZXRFcG9jaFJlZi5jdXJyZW50ICs9IDE7XG4gICAgICAgIGNvbnN0IGZpbmFsVmFsdWVzID0gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSk7XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldChmaW5hbFZhbHVlcyk7XG4gICAgICAgIG9uVXJsU3luY1Jlc2V0KCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEZvcm0gZW5naW5lICh1c2VGb3JtIHdpdGggYXN5bmMgdmFsaWRhdGlvbikg4pSA4pSAXG4gICAgY29uc3QgeyBmb3JtSW5zdGFuY2UsIGludGVybmFscywgc3RvcmUgfSA9IHVzZUZvcm0oe1xuICAgICAgICBpbml0aWFsVmFsdWVzOiBtZXJnZWRJbml0aWFsVmFsdWVzLFxuICAgICAgICBvblZhbHVlc0NoYW5nZSxcbiAgICAgICAgb25SZXNldDogZmlyZUZvcm1SZXNldCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KTtcbiAgICAvLyDilIDilIAgQXN5bmMgc3VibWl0IHdpdGggdHJhbnNmb3JtIHBpcGVsaW5lIOKUgOKUgFxuICAgIC8vIFJlLWVudHJ5IGd1YXJkOiBhIHNlY29uZCBzdWJtaXQgd2hpbGUgb25lIGlzIGluIGZsaWdodCBpcyBpZ25vcmVkICh0aGVcbiAgICAvLyByZWYgY2F0Y2hlcyB0d28gY2FsbHMgaW4gdGhlIHNhbWUgdGljaykuXG4gICAgY29uc3Qgd3JhcHBlZEhhbmRsZVN1Ym1pdCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzdWJtaXR0aW5nUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHN1Ym1pdHRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIHNldFN1Ym1pdHRpbmcodHJ1ZSk7XG4gICAgICAgIChfYSA9IG9uTG9hZGluZ0NoYW5nZVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkxvYWRpbmdDaGFuZ2VSZWYsIHRydWUpO1xuICAgICAgICBjb25zdCBlcG9jaCA9IHJlc2V0RXBvY2hSZWYuY3VycmVudDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIGZvcm1JbnN0YW5jZS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgICAgICAgLy8gQSByZXNldCBkdXJpbmcgKGFzeW5jKSB2YWxpZGF0aW9uIGRpc2NhcmRzIHRoaXMgc3VibWlzc2lvbiBlbnRpcmVseTpcbiAgICAgICAgICAgIC8vIHZhbGlkYXRlRmllbGRzIHJlLXJlYWRzIHRoZSBsaXZlIHN0b3JlLCBzbyBwcm9jZWVkaW5nIHdvdWxkIGhhbmRcbiAgICAgICAgICAgIC8vIG9uRmluaXNoIHRoZSBQT1NULXJlc2V0IHZhbHVlcy5cbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHBpcGVsaW5lZCA9IGFwcGx5UGlwZWxpbmUodmFsaWRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHlpZWxkICgoX2IgPSBvbkZpbmlzaFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChvbkZpbmlzaFJlZiwgcGlwZWxpbmVkKSk7XG4gICAgICAgICAgICAvLyBTeW5jIHRoZSBVUkwgdW5sZXNzIG9uRmluaXNoIGV4cGxpY2l0bHkgcmV0dXJuZWQgZmFsc2UgKGEgdGhyb3cgYWJvdmVcbiAgICAgICAgICAgIC8vIGFsc28gc2tpcHMg4oCUIGEgZmFpbGVkIHN1Ym1pdCBtdXN0IG5vdCBwb2xsdXRlIHRoZSBVUkwpLCBhbmQgb25seSBpZlxuICAgICAgICAgICAgLy8gdGhlIHVzZXIgZGlkIE5PVCByZXNldCB0aGUgZm9ybSB3aGlsZSB0aGUgc3VibWl0IHdhcyBpbiBmbGlnaHQuXG4gICAgICAgICAgICBpZiAocmVzdWx0ICE9PSBmYWxzZSAmJiBlcG9jaCA9PT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICAgICAgb25VcmxTeW5jRmluaXNoKHBpcGVsaW5lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgLy8gQSByZXNldCBkdXJpbmcgdmFsaWRhdGlvbiBhbHNvIGludmFsaWRhdGVzIHRoZSBGQUlMVVJFIGNhbGxiYWNrIOKAlFxuICAgICAgICAgICAgLy8gdGhlIGVycm9yIGNhcnJpZXMgcG9zdC1yZXNldCB2YWx1ZXMgZm9yIGEgZGlzY2FyZGVkIHN1Ym1pc3Npb24uXG4gICAgICAgICAgICAvLyAoRmllbGQgZXJyb3JzIHN0YW1wZWQgYnkgdGhlIGRlYWQgdmFsaWRhdGlvbiBtYXkgc3RpbGwgYXBwZWFyOyBhXG4gICAgICAgICAgICAvLyBkZWVwZXIgdmFsaWRhdGlvbi1lcG9jaCB3b3VsZCBiZSBuZWVkZWQgdG8gc3VwcHJlc3MgdGhvc2UuKVxuICAgICAgICAgICAgaWYgKGVwb2NoICE9PSByZXNldEVwb2NoUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgdHlwZWQgPSBlcnI7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IHR5cGVkLnZhbHVlcywgZXJyb3JzOiB0eXBlZC5lcnJvcnMgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gb25Mb2FkaW5nQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKG9uTG9hZGluZ0NoYW5nZVJlZiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIGdldEZpZWxkRm9ybWF0VmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUoZm9ybWF0VmFsdWVzS2VlcE5pbChmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIG5hbWUpLCBnZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0OiAobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VmFsdWVzS2VlcE5pbChmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSk7XG4gICAgICAgICAgICBpZiAoIW5hbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgICAgICAgIGNvbnN0IHRvcEtleSA9IG5hbWUuc3BsaXQoJy4nKVswXTtcbiAgICAgICAgICAgIHJldHVybiB7IFt0b3BLZXldOiBmb3JtYXR0ZWRbdG9wS2V5XSB9O1xuICAgICAgICB9LCB2YWxpZGF0ZUZpZWxkc1JldHVybkZvcm1hdFZhbHVlOiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFscyA9IHlpZWxkIGZvcm1JbnN0YW5jZS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHZhbHVlczogYXBwbHlQaXBlbGluZSh2YWxzKSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRlRmllbGRzIHJlamVjdHMgd2l0aCBhbiBFcnJvciBjYXJyeWluZyB0aGUgZmllbGQgZXJyb3JzIG1hcFxuICAgICAgICAgICAgICAgIC8vIChzYW1lIHNoYXBlIHdyYXBwZWRIYW5kbGVTdWJtaXQgY29uc3VtZXMgYWJvdmUpLlxuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzIH0gPSBlcnI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogZXJyb3JzICE9PSBudWxsICYmIGVycm9ycyAhPT0gdm9pZCAwID8gZXJyb3JzIDoge30gfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksIHN1Ym1pdEZvcm06IHdyYXBwZWRIYW5kbGVTdWJtaXQgfSkpLCBbZm9ybUluc3RhbmNlLCBhcHBseVBpcGVsaW5lLCB3cmFwcGVkSGFuZGxlU3VibWl0XSk7XG4gICAgLy8g4pSA4pSAIFN5bmMgdG8gZm9ybVJlZiBwcm9wIOKUgOKUgFxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChmb3JtUmVmKSB7XG4gICAgICAgICAgICBmb3JtUmVmLmN1cnJlbnQgPSBwcm9Gb3JtRm9ybUluc3RhbmNlO1xuICAgICAgICB9XG4gICAgfSwgW2Zvcm1SZWYsIHByb0Zvcm1Gb3JtSW5zdGFuY2VdKTtcbiAgICAvLyDilIDilIAgcmVxdWVzdCAvIHBhcmFtcyBhdXRvLWxvYWQg4pSA4pSAXG4gICAgY29uc3QgcmVxdWVzdFJlZiA9IHVzZUxhdGVzdChyZXF1ZXN0KTtcbiAgICBjb25zdCBzZXJpYWxpemVkUGFyYW1zID0gdXNlTWVtbygoKSA9PiBzdGFibGVTZXJpYWxpemUocGFyYW1zKSwgW3BhcmFtc10pO1xuICAgIC8vIG9uSW5pdCBmaXJlcyBleGFjdGx5IG9uY2U6IGFmdGVyIHRoZSBGSVJTVCByZXF1ZXN0IHJlc29sdmVzIHdoZW4gYVxuICAgIC8vIHJlcXVlc3QgaXMgY29uZmlndXJlZCwgb3RoZXJ3aXNlIHJpZ2h0IGFmdGVyIG1vdW50LlxuICAgIGNvbnN0IGluaXRGaXJlZFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgZmlyZUluaXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaW5pdEZpcmVkUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGluaXRGaXJlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgKF9hID0gb25Jbml0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uSW5pdFJlZiwgYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHByb0Zvcm1Gb3JtSW5zdGFuY2UpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIFN0YWxlbmVzcyBndWFyZDogaWYgcGFyYW1zIGNoYW5nZSBhZ2FpbiBiZWZvcmUgdGhpcyBmZXRjaCByZXNvbHZlcywgdGhlXG4gICAgICAgIC8vIGNsZWFudXAgbWFya3MgaXQgc3RhbGUgc28gdGhlIGxhdGUgcmVzcG9uc2UgY2FuJ3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZXNcbiAgICAgICAgLy8gYSBuZXdlciByZXF1ZXN0IGFscmVhZHkgKG9yIHdpbGwpIHNldC5cbiAgICAgICAgbGV0IHN0YWxlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGZldGNoRGF0YSA9ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgY29uc3QgcmVxdWVzdEZuID0gcmVxdWVzdFJlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKCFyZXF1ZXN0Rm4pXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcodHJ1ZSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSB5aWVsZCByZXF1ZXN0Rm4ocGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlICYmIGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1JbnN0YW5jZS5zZXRGaWVsZHNWYWx1ZShkYXRhKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhIE5PTi1zdXBlcnNlZGVkIHNldHRsZSBpbml0aWFsaXplcyB0aGUgZm9ybTogYSBzdGFsZVxuICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0J3MgZGF0YSB3YXMgZGlzY2FyZGVkLCBzbyBpdHMgdmFsdWVzIG11c3Qgbm90IGJlIHJlcG9ydGVkLlxuICAgICAgICAgICAgICAgICAgICBmaXJlSW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXF1ZXN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGZldGNoRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmlyZUluaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgc3RhbGUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICAvLyBSZS1mZXRjaCBPTkxZIHdoZW4gcGFyYW1zIGNoYW5nZSBieSBWQUxVRTogZGVwZW5kaW5nIG9uIHRoZSByYXcgYHBhcmFtc2BcbiAgICAgICAgLy8gcmVmZXJlbmNlIHdvdWxkIHJlLXJ1biBvbiBldmVyeSByZW5kZXIgZm9yIGlubGluZSBvYmplY3QgbGl0ZXJhbHMgYW5kLFxuICAgICAgICAvLyBjb21iaW5lZCB3aXRoIHRoZSBsb2FkaW5nIHNldFN0YXRlLCBsb29wIGZvcmV2ZXIuXG4gICAgfSwgW3NlcmlhbGl6ZWRQYXJhbXNdKTtcbiAgICAvLyDilIDilIAgYXV0b0ZvY3VzRmlyc3RJbnB1dCDilIDilIBcbiAgICBjb25zdCBmb3JtRWxSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoIWF1dG9Gb2N1c0ZpcnN0SW5wdXQgfHwgbW9kZSA9PT0gJ3JlYWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBmaXJzdElucHV0ID0gKF9hID0gZm9ybUVsUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5xdWVyeVNlbGVjdG9yKCdpbnB1dDpub3QoW3R5cGU9XCJoaWRkZW5cIl0pOm5vdChbZGlzYWJsZWRdKSwgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLCBzZWxlY3Q6bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICAgIGZpcnN0SW5wdXQgPT09IG51bGwgfHwgZmlyc3RJbnB1dCA9PT0gdm9pZCAwID8gdm9pZCAwIDogZmlyc3RJbnB1dC5mb2N1cygpO1xuICAgICAgICAvLyBNb3VudC1vbmx5IGJ5IGRlc2lnbi5cbiAgICB9LCBbXSk7XG4gICAgLy8g4pSA4pSAIFNwbGl0IGNvbnRleHQg4pSA4pSAXG4gICAgLy8gRm9ybS1sZXZlbCBwcm9wIGJhZ3MgYXJlIG9mdGVuIGlubGluZSBsaXRlcmFsczoga2VlcCB0aGVpciBpZGVudGl0eVxuICAgIC8vIHN0YWJsZSB3aGlsZSBzaGFsbG93LWVxdWFsIHNvIHRoZSBzdGFibGUgc2xpY2UgZG9lc24ndCBjaHVybiBwZXIgcmVuZGVyLlxuICAgIGNvbnN0IHN0YWJsZUZpZWxkUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZpZWxkUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUZvcm1JdGVtUHJvcHMgPSB1c2VTaGFsbG93U3RhYmxlKGZvcm1JdGVtUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUNvbFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShjb2xQcm9wcyk7XG4gICAgY29uc3Qgc3RhYmxlTGF5b3V0ID0gdXNlU2hhbGxvd1N0YWJsZShsYXlvdXQpO1xuICAgIC8vIFN0YWJsZSBzbGljZTogY29uZmlndXJhdGlvbiArIGlkZW50aXR5LXN0YWJsZSBkaXNwYXRjaGVycy9pbnN0YW5jZS5cbiAgICAvLyBDaGFuZ2VzIG9ubHkgd2hlbiBmb3JtLWxldmVsIHByb3BzIGNoYW5nZSDigJQgTk9UIG9uIGtleXN0cm9rZXMsIHNvXG4gICAgLy8gc3Vic2NyaWJlcnMgbGlrZSBTdWJtaXR0ZXIgYW5kIHRoZSBmaWVsZCBmYWN0b3JpZXMgc2tpcCB0aG9zZSByZW5kZXJzLlxuICAgIGNvbnN0IHN0YWJsZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmb3JtSW5zdGFuY2U6IHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICAvLyBTdWJtaXR0aW5nL2xvYWRpbmcgZG9lcyBOT1QgZGlzYWJsZSBmaWVsZHMg4oCUIG9ubHkgdGhlXG4gICAgICAgIC8vIGV4cGxpY2l0IGBkaXNhYmxlZGAgcHJvcCBkb2VzLiBLZWVwaW5nIGlzTG9hZGluZyBvdXQgb2YgdGhpcyBzbGljZVxuICAgICAgICAvLyBtZWFucyBhIHN1Ym1pdCBjeWNsZSBubyBsb25nZXIgcmUtcmVuZGVycyBldmVyeSBmaWVsZCBzaGVsbC5cbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgLy8gUHJvRm9ybSBzcGVjaWZpY3NcbiAgICAgICAgcmVhZG9ubHksXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIGNvbFByb3BzOiBzdGFibGVDb2xQcm9wcyAhPT0gbnVsbCAmJiBzdGFibGVDb2xQcm9wcyAhPT0gdm9pZCAwID8gc3RhYmxlQ29sUHJvcHMgOiBERUZBVUxUX0NPTF9QUk9QUyxcbiAgICAgICAgcmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHVucmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICB1bnJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICBmaWVsZFByb3BzOiBzdGFibGVGaWVsZFByb3BzLFxuICAgICAgICBmb3JtSXRlbVByb3BzOiBzdGFibGVGb3JtSXRlbVByb3BzLFxuICAgICAgICBsYXlvdXQ6IHN0YWJsZUxheW91dCxcbiAgICAgICAgZm9ybUNvbXBvbmVudFR5cGUsXG4gICAgfSksIFtcbiAgICAgICAgcHJvRm9ybUZvcm1JbnN0YW5jZSxcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZEVycm9yLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICBtb2RlLFxuICAgICAgICBncmlkLFxuICAgICAgICBzdGFibGVDb2xQcm9wcyxcbiAgICAgICAgcmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHVucmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICB1bnJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICBzdGFibGVGaWVsZFByb3BzLFxuICAgICAgICBzdGFibGVGb3JtSXRlbVByb3BzLFxuICAgICAgICBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIF0pO1xuICAgIGNvbnN0IFdyYXBwZXJDb21wb25lbnQgPSBncmlkID8gUm93IDogRnJhZ21lbnQ7XG4gICAgY29uc3Qgd3JhcHBlclByb3BzID0gZ3JpZCA/IE9iamVjdC5hc3NpZ24oe30sIHJvd1Byb3BzKSA6IHt9O1xuICAgIC8vIFJlc2V0IGNhbGxiYWNrIGNoYWluOiB0aGUgU3VibWl0dGVyIHJlc2V0cyB0aGUgdmFsdWVzIGZpcnN0LCB0aGVuIHRoZVxuICAgIC8vIHN1Ym1pdHRlci1sZXZlbCBvblJlc2V0LCB0aGVuIHRoZSBmb3JtLWxldmVsIG9uUmVzZXQgKHdpdGggZmluYWxWYWx1ZXMpXG4gICAgLy8gYW5kIHRoZSBVUkwgY2xlYW51cCDigJQgZmlyZWQgZXhhY3RseSBvbmNlIHBlciByZXNldCBhY3Rpb24uXG4gICAgY29uc3QgaGFuZGxlU3VibWl0dGVyUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodHlwZW9mIHN1Ym1pdHRlciA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXIub25SZXNldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0dGVyKTtcbiAgICAgICAgZmlyZUZvcm1SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdHRlck5vZGUgPSBzdWJtaXR0ZXIgIT09IGZhbHNlICYmIG1vZGUgIT09ICdyZWFkJyA/IChfanN4KFN1Ym1pdHRlciwgT2JqZWN0LmFzc2lnbih7fSwgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnID8gc3VibWl0dGVyIDoge30pLCB7IG9uUmVzZXQ6IGhhbmRsZVN1Ym1pdHRlclJlc2V0LCBsb2FkaW5nOiBpc0xvYWRpbmcgfSkpKSA6IG51bGw7XG4gICAgcmV0dXJuIChfanN4KFByb0Zvcm1TdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGFibGVWYWx1ZSwgY2hpbGRyZW46IF9qc3goUHJvRm9ybVN0YXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RvcmUsIGNoaWxkcmVuOiBfanN4cyhcImZvcm1cIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGZvcm1FbFJlZiwgY2xhc3NOYW1lOiBmb3JtQ2xhc3Nlcyh1bmRlZmluZWQsIGpvaW5DbHMoY2xhc3NlcygpLCBjbGFzc05hbWUpKSwgb25TdWJtaXQ6IHdyYXBwZWRIYW5kbGVTdWJtaXQsIG9uUmVzZXQ6IGludGVybmFscy5oYW5kbGVSZXNldCwgY2hpbGRyZW46IFtfanN4KFdyYXBwZXJDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHdyYXBwZXJQcm9wcywgeyBjaGlsZHJlbjogY2hpbGRyZW4gfSkpLCBzdWJtaXR0ZXJOb2RlXSB9KSkgfSkgfSkpO1xufTtcblByb0Zvcm1CYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm0nO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm0gPSBtZW1vKFByb0Zvcm1CYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
514
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9qc3hSdW50aW1lIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX3VzZUxhdGVzdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlU2FmZVN0YXRlNSIsIl91c2VNZW1vaXplZEZuIiwiX3VzZUV2ZW50Q2FsbGJhY2siLCJfY2xhc3NuYW1lcyIsIl9HcmlkIiwiX3VzZUZvcm0yIiwiX2NvbnRleHQ0IiwiX1N1Ym1pdHRlciIsIl9jb25zdGFudHMiLCJfdXRpbHMiLCJfZm9ybVN0b3JlIiwiX3VzZVVybFN5bmMyIiwiX3BhdGhVdGlscyIsIl92YWxpZGF0aW9uRXJyb3IiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3Jlc3QiLCJzIiwicCIsInByb3RvdHlwZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiQ1NTX1BSRUZJWCIsImZvcm1DbGFzc2VzIiwiREVGQVVMVF9DT0xfUFJPUFMiLCJzcGFuIiwiUHJvRm9ybUJhc2UiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwic3VibWl0dGVyIiwiX3Byb3BzJG1vZGUiLCJtb2RlIiwiX3Byb3BzJGdyaWQiLCJncmlkIiwiY29sUHJvcHMiLCJyb3dQcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsInJlcXVlc3QiLCJwYXJhbXMiLCJpbml0aWFsVmFsdWVzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsIm9uSW5pdCIsIm9uTG9hZGluZ0NoYW5nZSIsInN5bmNUb1VybCIsIl9wcm9wcyRzeW5jVG9VcmxBc0ltcCIsInN5bmNUb1VybEFzSW1wb3J0YW50IiwiZXh0cmFVcmxQYXJhbXMiLCJfcHJvcHMkYXV0b0ZvY3VzRmlyc3QiLCJhdXRvRm9jdXNGaXJzdElucHV0IiwiZm9ybUNvbXBvbmVudFR5cGUiLCJmb3JtUmVmIiwiX3Byb3BzJG9taXROaWwiLCJvbWl0TmlsIiwiX3Byb3BzJGRhdGVGb3JtYXR0ZXIiLCJkYXRlRm9ybWF0dGVyIiwiZmllbGRQcm9wcyIsImZvcm1JdGVtUHJvcHMiLCJsYXlvdXQiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9wcm9wcyR2YWxpZGF0ZVRyaWdnZSIsInZhbGlkYXRlVHJpZ2dlciIsIl9wcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJyZXN0IiwiX3VzZVNhZmVTdGF0ZSIsInVzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwicmVxdWVzdExvYWRpbmciLCJzZXRSZXF1ZXN0TG9hZGluZyIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsInN1Ym1pdHRpbmdSZWYiLCJ1c2VSZWYiLCJpc0xvYWRpbmciLCJ0cmFuc2Zvcm1LZXlSZWYiLCJ2YWx1ZVR5cGVSZWYiLCJyZWdpc3RlclRyYW5zZm9ybSIsInVzZU1lbW9pemVkRm4iLCJuYW1lIiwiZm4iLCJjdXJyZW50IiwidW5yZWdpc3RlclRyYW5zZm9ybSIsInVuZGVmaW5lZCIsInJlZ2lzdGVyVmFsdWVUeXBlIiwidmFsdWVUeXBlIiwidW5yZWdpc3RlclZhbHVlVHlwZSIsIm9uRmluaXNoUmVmIiwidXNlTGF0ZXN0Iiwib25Jbml0UmVmIiwib25Mb2FkaW5nQ2hhbmdlUmVmIiwiYXBwbHlQaXBlbGluZSIsInZhbHVlcyIsImZvcm1hdERhdGVWYWx1ZXMiLCJ0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMiLCJvbWl0TmlsVmFsdWVzIiwiZm9ybWF0VmFsdWVzS2VlcE5pbCIsIl91c2VVcmxTeW5jIiwidXNlVXJsU3luYyIsInVybEluaXRpYWxWYWx1ZXMiLCJvblVybFN5bmNGaW5pc2giLCJvblVybFN5bmNSZXNldCIsIm1lcmdlZEluaXRpYWxWYWx1ZXNSZWYiLCJhc3NpZ24iLCJtZXJnZWRJbml0aWFsVmFsdWVzIiwicmVzZXRFcG9jaFJlZiIsImZpcmVGb3JtUmVzZXQiLCJmaW5hbFZhbHVlcyIsImZvcm1JbnN0YW5jZSIsImdldEZpZWxkc1ZhbHVlIiwiX3VzZUZvcm0iLCJ1c2VGb3JtIiwiaW50ZXJuYWxzIiwic3RvcmUiLCJ3cmFwcGVkSGFuZGxlU3VibWl0IiwidXNlRXZlbnRDYWxsYmFjayIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX2EiLCJfYiIsIl9jIiwiZXBvY2giLCJ2YWxpZGF0ZWRWYWx1ZXMiLCJwaXBlbGluZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJwcmV2ZW50RGVmYXVsdCIsImFicnVwdCIsInZhbGlkYXRlRmllbGRzIiwic2VudCIsIkZvcm1WYWxpZGF0aW9uRXJyb3IiLCJlcnJvcnMiLCJjb25zb2xlIiwiZXJyb3IiLCJmaW5pc2giLCJzdG9wIiwicHJvRm9ybUZvcm1JbnN0YW5jZSIsInVzZU1lbW8iLCJnZXRGaWVsZHNGb3JtYXRWYWx1ZSIsImdldEZpZWxkRm9ybWF0VmFsdWUiLCJyZXNvbHZlVmFsdWUiLCJnZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0IiwiZm9ybWF0dGVkIiwic2V0TmVzdGVkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkc1JldHVybkZvcm1hdFZhbHVlIiwiX2NhbGxlZTIiLCJ2YWxzIiwiX3QyIiwiX2NvbnRleHQyIiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJ1c2VFZmZlY3QiLCJyZXF1ZXN0UmVmIiwiaGFzUmVxdWVzdCIsInNlcmlhbGl6ZWRQYXJhbXMiLCJzdGFibGVTZXJpYWxpemUiLCJpbml0RmlyZWRSZWYiLCJmaXJlSW5pdCIsInN0YWxlIiwiZmV0Y2hEYXRhIiwiX2NhbGxlZTMiLCJyZXF1ZXN0Rm4iLCJkYXRhIiwiX3QzIiwiX2NvbnRleHQzIiwiX3R5cGVvZjIiLCJzZXRGaWVsZHNWYWx1ZSIsImZvcm1FbFJlZiIsImZpcnN0SW5wdXQiLCJxdWVyeVNlbGVjdG9yIiwiZm9jdXMiLCJzdGFibGVGaWVsZFByb3BzIiwidXNlU2hhbGxvd1N0YWJsZSIsInN0YWJsZUZvcm1JdGVtUHJvcHMiLCJzdGFibGVDb2xQcm9wcyIsInN0YWJsZUxheW91dCIsInN0YWJsZVZhbHVlIiwic2V0RmllbGRWYWx1ZSIsInNldEZpZWxkRXJyb3IiLCJzZXRGaWVsZFdhcm5pbmciLCJ2YWxpZGF0ZUZpZWxkIiwidmFsaWRhdGVGaWVsZEFzeW5jIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsInJldGFpbkZpZWxkIiwicmVsZWFzZUZpZWxkIiwiV3JhcHBlckNvbXBvbmVudCIsIlJvdyIsIkZyYWdtZW50Iiwid3JhcHBlclByb3BzIiwiaGFuZGxlU3VibWl0dGVyUmVzZXQiLCJzdWJtaXR0ZXJOb2RlIiwiX2pzeCIsIlN1Ym1pdHRlciIsIlByb0Zvcm1TdGFibGVDb250ZXh0IiwiUHJvdmlkZXIiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiX2pzeHMiLCJyZWYiLCJqb2luQ2xzIiwib25TdWJtaXQiLCJoYW5kbGVSZXNldCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ3BCQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxVQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxjQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxpQkFBQSxHQUFBSCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQVEsV0FBQSxHQUFBTix1QkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVMsS0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsU0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsU0FBQSxHQUFBWCxPQUFBO0FBQ0EsSUFBQVksVUFBQSxHQUFBWixPQUFBO0FBQ0EsSUFBQWEsVUFBQSxHQUFBYixPQUFBO0FBQ0EsSUFBQWMsTUFBQSxHQUFBZCxPQUFBO0FBQ0EsSUFBQWUsVUFBQSxHQUFBZixPQUFBO0FBQ0EsSUFBQWdCLFlBQUEsR0FBQWhCLE9BQUE7QUFDQSxJQUFBaUIsVUFBQSxHQUFBakIsT0FBQTtBQUNBLElBQUFrQixnQkFBQSxHQUFBbEIsT0FBQTtBQUE2RCxTQUFBbUIseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFsQix3QkFBQWtCLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFB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U0FBUyxDQUFDLENBQUM7UUFDaEUwTCxRQUFRLEVBQUV6RixtQkFBbUI7UUFDN0JqRixPQUFPLEVBQUUrRSxTQUFTLENBQUM0RixXQUFXO1FBQUE1TCxRQUFBLEVBQUEsQ0FFOUIsSUFBQW1MLGVBQUEsRUFBQ04sZ0JBQWdCLEVBQUF2TixNQUFBLENBQUFpSSxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUt5RixZQUFZLEVBQUE7VUFBQWhMLFFBQUEsRUFBR0E7UUFBUSxDQUFBLENBQUEsQ0FBb0IsRUFDaEVrTCxhQUFhO01BQUEsQ0FBQSxDQUFBO0lBQ1QsQ0FBQTtFQUNzQixDQUFBLENBQ0Q7QUFFcEMsQ0FBQztBQUVEcEwsV0FBVyxDQUFDK0wsV0FBVyxHQUFHLFNBQVM7QUFXNUIsSUFBTUMsT0FBTyxHQUFBQyxPQUFBLENBQUFELE9BQUEsZ0JBQUcsSUFBQUUsV0FBSSxFQUFDbE0sV0FBVyxDQUFnQztBQUFDLElBQUFtTSxRQUFBLEdBQUFGLE9BQUEsY0FFekRELE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICcuL2NvcmUvaG9va3MvdXNlRm9ybSc7XG5pbXBvcnQgeyBQcm9Gb3JtU3RhYmxlQ29udGV4dCwgUHJvRm9ybVN0YXRlQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBTdWJtaXR0ZXIgfSBmcm9tICcuL1N1Ym1pdHRlcic7XG5pbXBvcnQgeyBDU1NfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc3RhYmxlU2VyaWFsaXplLCB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMsIG9taXROaWxWYWx1ZXMsIGZvcm1hdERhdGVWYWx1ZXMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IHVzZVNoYWxsb3dTdGFibGUgfSBmcm9tICcuL2NvcmUvZm9ybVN0b3JlJztcbmltcG9ydCB7IHVzZVVybFN5bmMgfSBmcm9tICcuL2hvb2tzL3VzZVVybFN5bmMnO1xuaW1wb3J0IHsgcmVzb2x2ZVZhbHVlLCBzZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vY29yZS9wYXRoVXRpbHMnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vY29yZS92YWxpZGF0aW9uRXJyb3InO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoQ1NTX1BSRUZJWCk7XG5jb25zdCBmb3JtQ2xhc3NlcyA9IGNsYXNzbmFtZXMoJ2Zvcm0nKTtcbmNvbnN0IERFRkFVTFRfQ09MX1BST1BTID0geyBzcGFuOiAyNCB9O1xuY29uc3QgUHJvRm9ybUJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN1Ym1pdHRlciwgbW9kZSA9ICdlZGl0JywgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgcmVxdWVzdCwgcGFyYW1zLCBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBvbkluaXQsIG9uTG9hZGluZ0NoYW5nZSwgc3luY1RvVXJsLCBzeW5jVG9VcmxBc0ltcG9ydGFudCA9IGZhbHNlLCBleHRyYVVybFBhcmFtcywgYXV0b0ZvY3VzRmlyc3RJbnB1dCA9IGZhbHNlLCBmb3JtQ29tcG9uZW50VHlwZSwgZm9ybVJlZiwgb21pdE5pbCA9IHRydWUsIGRhdGVGb3JtYXR0ZXIgPSAnc3RyaW5nJywgZmllbGRQcm9wcywgZm9ybUl0ZW1Qcm9wcywgbGF5b3V0LCBzaXplID0gJ2xhcmdlJywgbGFiZWxBbGlnbiA9ICdsZWZ0JywgZGlzYWJsZWQgPSBmYWxzZSwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgcHJlZml4Q2xzOiBfcHJlZml4Q2xzIH0gPSBwcm9wcywgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJzdWJtaXR0ZXJcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwib25Jbml0XCIsIFwib25Mb2FkaW5nQ2hhbmdlXCIsIFwic3luY1RvVXJsXCIsIFwic3luY1RvVXJsQXNJbXBvcnRhbnRcIiwgXCJleHRyYVVybFBhcmFtc1wiLCBcImF1dG9Gb2N1c0ZpcnN0SW5wdXRcIiwgXCJmb3JtQ29tcG9uZW50VHlwZVwiLCBcImZvcm1SZWZcIiwgXCJvbWl0TmlsXCIsIFwiZGF0ZUZvcm1hdHRlclwiLCBcImZpZWxkUHJvcHNcIiwgXCJmb3JtSXRlbVByb3BzXCIsIFwibGF5b3V0XCIsIFwic2l6ZVwiLCBcImxhYmVsQWxpZ25cIiwgXCJkaXNhYmxlZFwiLCBcInZhbGlkYXRlVHJpZ2dlclwiLCBcInByZWZpeENsc1wiXSk7XG4gICAgY29uc3QgW3JlcXVlc3RMb2FkaW5nLCBzZXRSZXF1ZXN0TG9hZGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIC8vIHVzZVNhZmVTdGF0ZSBmb3IgdGhlIFJFTkRFUkVEIHN1Ym1pdHRpbmcgc3RhdGUgKGl0cyBzZXR0ZXIgaXMgdW5tb3VudC1zYWZlXG4gICAgLy8g4oCUIHRoZSBmaW5hbGx5IGJlbG93IHJ1bnMgYWZ0ZXIgYXdhaXRpbmcgb25GaW5pc2gsIHdoZW4gdGhlIHR5cGljYWxcbiAgICAvLyBzdWJtaXQtdGhlbi1jbG9zZSBmbG93IG1heSBhbHJlYWR5IGhhdmUgdW5tb3VudGVkIHRoZSBmb3JtIG9uIFJlYWN0XG4gICAgLy8gMTYvMTcpLiBUaGUgcmVmIGlzIHRoZSBzeW5jaHJvbm91cyByZS1lbnRyeSBndWFyZDsgQDFtb25leS9ob29rcyBoYXMgbm9cbiAgICAvLyBzaW5nbGUgaG9vayB0aGF0IGlzIGJvdGggdW5tb3VudC1zYWZlIGFuZCBzeW5jaHJvbm91c2x5IHJlYWRhYmxlLlxuICAgIGNvbnN0IFtzdWJtaXR0aW5nLCBzZXRTdWJtaXR0aW5nXSA9IHVzZVNhZmVTdGF0ZShmYWxzZSk7XG4gICAgY29uc3Qgc3VibWl0dGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaXNMb2FkaW5nID0gbG9hZGluZyB8fCByZXF1ZXN0TG9hZGluZyB8fCBzdWJtaXR0aW5nO1xuICAgIC8vIOKUgOKUgCBUcmFuc2Zvcm0gLyB2YWx1ZVR5cGUgcmVnaXN0cmllcyDilIDilIBcbiAgICBjb25zdCB0cmFuc2Zvcm1LZXlSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHZhbHVlVHlwZVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgcmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9IGZuO1xuICAgIH0pO1xuICAgIC8vIFRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgZ3VhcmRzIHJlbW92YWw6IGRlbGV0ZSBvbmx5IHdoZW4gdGhlIHJlZ2lzdHJ5XG4gICAgLy8gc3RpbGwgaG9sZHMgdGhlIENBTExFUidTIHJlZ2lzdHJhdGlvbiwgc28gYW4gdW5tb3VudGluZyBpbnN0YW5jZSBjYW4gbmV2ZXJcbiAgICAvLyB3aXBlIGEgc2FtZS1uYW1lIHNpYmxpbmcncyBvciBzdWNjZXNzb3IncyBlbnRyeS5cbiAgICBjb25zdCB1bnJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZm4pID0+IHtcbiAgICAgICAgaWYgKGZuID09PSB1bmRlZmluZWQgfHwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV0gPT09IGZuKSB7XG4gICAgICAgICAgICBkZWxldGUgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlclZhbHVlVHlwZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHZhbHVlVHlwZSkgPT4ge1xuICAgICAgICB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9IHZhbHVlVHlwZTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyVmFsdWVUeXBlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWVUeXBlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZVR5cGUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZVR5cGVSZWYuY3VycmVudFtuYW1lXSA9PT0gdmFsdWVUeXBlKSB7XG4gICAgICAgICAgICBkZWxldGUgdmFsdWVUeXBlUmVmLmN1cnJlbnRbbmFtZV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBvbkZpbmlzaFJlZiA9IHVzZUxhdGVzdChvbkZpbmlzaCk7XG4gICAgY29uc3Qgb25Jbml0UmVmID0gdXNlTGF0ZXN0KG9uSW5pdCk7XG4gICAgY29uc3Qgb25Mb2FkaW5nQ2hhbmdlUmVmID0gdXNlTGF0ZXN0KG9uTG9hZGluZ0NoYW5nZSk7XG4gICAgLy8gU3VibWl0IHBpcGVsaW5lOiBkYXRlcyDihpIgZmllbGQgdHJhbnNmb3JtcyDihpIgb21pdE5pbFxuICAgIGNvbnN0IGFwcGx5UGlwZWxpbmUgPSB1c2VNZW1vaXplZEZuKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJlc3VsdCA9IHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyhyZXN1bHQsIHRyYW5zZm9ybUtleVJlZi5jdXJyZW50KTtcbiAgICAgICAgaWYgKG9taXROaWwpXG4gICAgICAgICAgICByZXN1bHQgPSBvbWl0TmlsVmFsdWVzKHJlc3VsdCk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSk7XG4gICAgLy8gU2FtZSBwaXBlbGluZSBXSVRIT1VUIG9taXROaWwg4oCUIHNpbmdsZS1maWVsZCByZWFkZXJzIG11c3Qgbm90IHNlZSBhIGZpZWxkXG4gICAgLy8gdmFuaXNoIGp1c3QgYmVjYXVzZSBpdHMgY3VycmVudCB2YWx1ZSBpcyBlbXB0eS5cbiAgICBjb25zdCBmb3JtYXRWYWx1ZXNLZWVwTmlsID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVSZWYuY3VycmVudCk7XG4gICAgICAgIHJldHVybiB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMocmVzdWx0LCB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudCk7XG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIFVSTCBzeW5jIChzeW5jVG9VcmwgLyBzeW5jVG9VcmxBc0ltcG9ydGFudCAvIGV4dHJhVXJsUGFyYW1zKSDilIDilIBcbiAgICBjb25zdCB7IHVybEluaXRpYWxWYWx1ZXMsIG9uVXJsU3luY0ZpbmlzaCwgb25VcmxTeW5jUmVzZXQgfSA9IHVzZVVybFN5bmMoe1xuICAgICAgICBzeW5jVG9VcmwsXG4gICAgICAgIGV4dHJhVXJsUGFyYW1zLFxuICAgIH0pO1xuICAgIC8vIGluaXRpYWxWYWx1ZXMgaXMgTU9VTlQtT05MWSAoZG9jdW1lbnRlZCBjb250cmFjdDsgdXNlRm9ybUNvcmUgcmUtZnJlZXplc1xuICAgIC8vIGFzIGEgc2FmZXR5IG5ldCkg4oCUIGNvbXB1dGUgdGhlIFVSTCBtZXJnZSBvbmNlIHNvIHRoZSBmcmVlemUgaXMgdmlzaWJsZVxuICAgIC8vIHdoZXJlIHRoZSBwcm9wcyBlbnRlciwgaW5zdGVhZCBvZiByZWNvbXB1dGluZyBkZWFkIHNwcmVhZHMgcGVyIHJlbmRlci5cbiAgICBjb25zdCBtZXJnZWRJbml0aWFsVmFsdWVzUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmIChtZXJnZWRJbml0aWFsVmFsdWVzUmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgbWVyZ2VkSW5pdGlhbFZhbHVlc1JlZi5jdXJyZW50ID0gc3luY1RvVXJsXG4gICAgICAgICAgICA/IChzeW5jVG9VcmxBc0ltcG9ydGFudFxuICAgICAgICAgICAgICAgID8gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpbml0aWFsVmFsdWVzKSwgdXJsSW5pdGlhbFZhbHVlcykgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHVybEluaXRpYWxWYWx1ZXMpLCBpbml0aWFsVmFsdWVzKSlcbiAgICAgICAgICAgIDogKGluaXRpYWxWYWx1ZXMgIT09IG51bGwgJiYgaW5pdGlhbFZhbHVlcyAhPT0gdm9pZCAwID8gaW5pdGlhbFZhbHVlcyA6IHt9KTtcbiAgICB9XG4gICAgY29uc3QgbWVyZ2VkSW5pdGlhbFZhbHVlcyA9IG1lcmdlZEluaXRpYWxWYWx1ZXNSZWYuY3VycmVudDtcbiAgICAvLyBCdW1wZWQgb24gZXZlcnkgcmVzZXQg4oCUIGFuIGluLWZsaWdodCBzdWJtaXQgY2FwdHVyZXMgaXQgYW5kIGFib3J0cyB3aGVuXG4gICAgLy8gaXQgY2hhbmdlZCB1bmRlcm5lYXRoICh0aGUgdXNlciBkaXNjYXJkZWQgdGhlIHN1Ym1pc3Npb24ncyB2YWx1ZXMpLlxuICAgIGNvbnN0IHJlc2V0RXBvY2hSZWYgPSB1c2VSZWYoMCk7XG4gICAgLy8gUmVzZXQgY2hhaW46IGZvcm0tbGV2ZWwgb25SZXNldCByZWNlaXZlcyB0aGUgKHBvc3QtcmVzZXQpIGZvcm1hdHRlZFxuICAgIC8vIHZhbHVlcywgdGhlbiB0aGUgZm9ybSdzIG93biBVUkwgcGFyYW1zIGFyZSBjbGVhcmVkLiB1c2VNZW1vaXplZEZuIGRlZmVyc1xuICAgIC8vIGV4ZWN1dGlvbiB0byBldmVudCB0aW1lLCB3aGVuIGBmb3JtSW5zdGFuY2VgIChjcmVhdGVkIGp1c3QgYmVsb3cpIGV4aXN0cy5cbiAgICBjb25zdCBmaXJlRm9ybVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJlc2V0RXBvY2hSZWYuY3VycmVudCArPSAxO1xuICAgICAgICBjb25zdCBmaW5hbFZhbHVlcyA9IGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoZmluYWxWYWx1ZXMpO1xuICAgICAgICBvblVybFN5bmNSZXNldCgpO1xuICAgIH0pO1xuICAgIC8vIOKUgOKUgCBGb3JtIGVuZ2luZSAodXNlRm9ybSB3aXRoIGFzeW5jIHZhbGlkYXRpb24pIOKUgOKUgFxuICAgIGNvbnN0IHsgZm9ybUluc3RhbmNlLCBpbnRlcm5hbHMsIHN0b3JlIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlczogbWVyZ2VkSW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQ6IGZpcmVGb3JtUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSk7XG4gICAgLy8g4pSA4pSAIEFzeW5jIHN1Ym1pdCB3aXRoIHRyYW5zZm9ybSBwaXBlbGluZSDilIDilIBcbiAgICAvLyBSZS1lbnRyeSBndWFyZDogYSBzZWNvbmQgc3VibWl0IHdoaWxlIG9uZSBpcyBpbiBmbGlnaHQgaXMgaWdub3JlZCAodGhlXG4gICAgLy8gcmVmIGNhdGNoZXMgdHdvIGNhbGxzIGluIHRoZSBzYW1lIHRpY2spLlxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc3VibWl0dGluZ1JlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBzZXRTdWJtaXR0aW5nKHRydWUpO1xuICAgICAgICAoX2EgPSBvbkxvYWRpbmdDaGFuZ2VSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwob25Mb2FkaW5nQ2hhbmdlUmVmLCB0cnVlKTtcbiAgICAgICAgY29uc3QgZXBvY2ggPSByZXNldEVwb2NoUmVmLmN1cnJlbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRWYWx1ZXMgPSB5aWVsZCBmb3JtSW5zdGFuY2UudmFsaWRhdGVGaWVsZHMoKTtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIChhc3luYykgdmFsaWRhdGlvbiBkaXNjYXJkcyB0aGlzIHN1Ym1pc3Npb24gZW50aXJlbHk6XG4gICAgICAgICAgICAvLyB2YWxpZGF0ZUZpZWxkcyByZS1yZWFkcyB0aGUgbGl2ZSBzdG9yZSwgc28gcHJvY2VlZGluZyB3b3VsZCBoYW5kXG4gICAgICAgICAgICAvLyBvbkZpbmlzaCB0aGUgUE9TVC1yZXNldCB2YWx1ZXMuXG4gICAgICAgICAgICBpZiAoZXBvY2ggIT09IHJlc2V0RXBvY2hSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBjb25zdCBwaXBlbGluZWQgPSBhcHBseVBpcGVsaW5lKHZhbGlkYXRlZFZhbHVlcyk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB5aWVsZCAoKF9iID0gb25GaW5pc2hSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwob25GaW5pc2hSZWYsIHBpcGVsaW5lZCkpO1xuICAgICAgICAgICAgLy8gU3luYyB0aGUgVVJMIHVubGVzcyBvbkZpbmlzaCBleHBsaWNpdGx5IHJldHVybmVkIGZhbHNlIChhIHRocm93IGFib3ZlXG4gICAgICAgICAgICAvLyBhbHNvIHNraXBzIOKAlCBhIGZhaWxlZCBzdWJtaXQgbXVzdCBub3QgcG9sbHV0ZSB0aGUgVVJMKSwgYW5kIG9ubHkgaWZcbiAgICAgICAgICAgIC8vIHRoZSB1c2VyIGRpZCBOT1QgcmVzZXQgdGhlIGZvcm0gd2hpbGUgdGhlIHN1Ym1pdCB3YXMgaW4gZmxpZ2h0LlxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZXBvY2ggPT09IHJlc2V0RXBvY2hSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIG9uVXJsU3luY0ZpbmlzaChwaXBlbGluZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIC8vIEEgcmVzZXQgZHVyaW5nIHZhbGlkYXRpb24gYWxzbyBpbnZhbGlkYXRlcyB0aGUgRkFJTFVSRSBjYWxsYmFjayDigJRcbiAgICAgICAgICAgIC8vIHRoZSBlcnJvciBjYXJyaWVzIHBvc3QtcmVzZXQgdmFsdWVzIGZvciBhIGRpc2NhcmRlZCBzdWJtaXNzaW9uLlxuICAgICAgICAgICAgLy8gKEZpZWxkIGVycm9ycyBmcm9tIHRoZSBkZWFkIHZhbGlkYXRpb24gYXJlIHN1cHByZXNzZWQgYnkgdGhlXG4gICAgICAgICAgICAvLyBwZXItZmllbGQgdmFsaWRhdGlvbiBlcG9jaHM6IHJlc2V0RmllbGRzIGludmFsaWRhdGVzIGluLWZsaWdodCBydW5zLilcbiAgICAgICAgICAgIGlmIChlcG9jaCAhPT0gcmVzZXRFcG9jaFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vIE9ubHkgYSBWQUxJREFUSU9OIGZhaWx1cmUgcm91dGVzIHRvIG9uRmluaXNoRmFpbGVkLiBBbiBleGNlcHRpb24gb3V0XG4gICAgICAgICAgICAvLyBvZiB0aGUgY29uc3VtZXIncyBvd24gb25GaW5pc2ggaXMgbm90IGEgdmFsaWRhdGlvbiByZXN1bHQ6IHRoZSBzdWJtaXRcbiAgICAgICAgICAgIC8vIGZhaWxzIChVUkwgdW50b3VjaGVkLCBvdmVybGF5IHN0YXlzIG9wZW4pIGFuZCB0aGUgZXJyb3IgaXMgc3VyZmFjZWRcbiAgICAgICAgICAgIC8vIG9uIHRoZSBjb25zb2xlIGluc3RlYWQgb2YgYmVpbmcgbWlzcmVwb3J0ZWQgd2l0aCBhbiBlbXB0eSBwYXlsb2FkLlxuICAgICAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEZvcm1WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXM6IGVyci52YWx1ZXMsIGVycm9yczogZXJyLmVycm9ycyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tQcm9Gb3JtXSBvbkZpbmlzaCB0aHJldyBkdXJpbmcgc3VibWl0OicsIGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICBzdWJtaXR0aW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgKF9jID0gb25Mb2FkaW5nQ2hhbmdlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKG9uTG9hZGluZ0NoYW5nZVJlZiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIGdldEZpZWxkRm9ybWF0VmFsdWU6IChuYW1lKSA9PiByZXNvbHZlVmFsdWUoZm9ybWF0VmFsdWVzS2VlcE5pbChmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIG5hbWUpLCBnZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0OiAobmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkID0gZm9ybWF0VmFsdWVzS2VlcE5pbChmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSk7XG4gICAgICAgICAgICBpZiAoIW5hbWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDtcbiAgICAgICAgICAgIC8vIEEgbmVzdGVkIG9iamVjdCBjYXJyeWluZyBPTkxZIHRoZSByZXF1ZXN0ZWQgbGVhZiDigJQgbm90IHRoZSB3aG9sZVxuICAgICAgICAgICAgLy8gdG9wLWxldmVsIHN1YnRyZWUgdGhlIHBhdGggaGFwcGVucyB0byBsaXZlIGluLlxuICAgICAgICAgICAgcmV0dXJuIHNldE5lc3RlZFZhbHVlKHt9LCBuYW1lLCByZXNvbHZlVmFsdWUoZm9ybWF0dGVkLCBuYW1lKSk7XG4gICAgICAgIH0sIHZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWU6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0geWllbGQgZm9ybUluc3RhbmNlLnZhbGlkYXRlRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzOiBhcHBseVBpcGVsaW5lKHZhbHMpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgLy8gdmFsaWRhdGVGaWVsZHMgcmVqZWN0cyB3aXRoIGFuIEVycm9yIGNhcnJ5aW5nIHRoZSBmaWVsZCBlcnJvcnMgbWFwXG4gICAgICAgICAgICAgICAgLy8gKHNhbWUgc2hhcGUgd3JhcHBlZEhhbmRsZVN1Ym1pdCBjb25zdW1lcyBhYm92ZSkuXG4gICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMgfSA9IGVycjtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSwgZXJyb3JzOiBlcnJvcnMgIT09IG51bGwgJiYgZXJyb3JzICE9PSB2b2lkIDAgPyBlcnJvcnMgOiB7fSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgc3VibWl0Rm9ybTogd3JhcHBlZEhhbmRsZVN1Ym1pdCB9KSksIFtmb3JtSW5zdGFuY2UsIGFwcGx5UGlwZWxpbmUsIHdyYXBwZWRIYW5kbGVTdWJtaXRdKTtcbiAgICAvLyDilIDilIAgU3luYyB0byBmb3JtUmVmIHByb3Ag4pSA4pSAXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvcm1SZWYpIHtcbiAgICAgICAgICAgIGZvcm1SZWYuY3VycmVudCA9IHByb0Zvcm1Gb3JtSW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9LCBbZm9ybVJlZiwgcHJvRm9ybUZvcm1JbnN0YW5jZV0pO1xuICAgIC8vIOKUgOKUgCByZXF1ZXN0IC8gcGFyYW1zIGF1dG8tbG9hZCDilIDilIBcbiAgICBjb25zdCByZXF1ZXN0UmVmID0gdXNlTGF0ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IGhhc1JlcXVlc3QgPSAhIXJlcXVlc3Q7XG4gICAgY29uc3Qgc2VyaWFsaXplZFBhcmFtcyA9IHVzZU1lbW8oKCkgPT4gc3RhYmxlU2VyaWFsaXplKHBhcmFtcyksIFtwYXJhbXNdKTtcbiAgICAvLyBvbkluaXQgZmlyZXMgZXhhY3RseSBvbmNlOiBhZnRlciB0aGUgRklSU1QgcmVxdWVzdCByZXNvbHZlcyB3aGVuIGFcbiAgICAvLyByZXF1ZXN0IGlzIGNvbmZpZ3VyZWQsIG90aGVyd2lzZSByaWdodCBhZnRlciBtb3VudC5cbiAgICBjb25zdCBpbml0RmlyZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGZpcmVJbml0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGluaXRGaXJlZFJlZi5jdXJyZW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpbml0RmlyZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIChfYSA9IG9uSW5pdFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChvbkluaXRSZWYsIGFwcGx5UGlwZWxpbmUoZm9ybUluc3RhbmNlLmdldEZpZWxkc1ZhbHVlKCkpLCBwcm9Gb3JtRm9ybUluc3RhbmNlKTtcbiAgICB9KTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAvLyBTdGFsZW5lc3MgZ3VhcmQ6IGlmIHBhcmFtcyBjaGFuZ2UgYWdhaW4gYmVmb3JlIHRoaXMgZmV0Y2ggcmVzb2x2ZXMsIHRoZVxuICAgICAgICAvLyBjbGVhbnVwIG1hcmtzIGl0IHN0YWxlIHNvIHRoZSBsYXRlIHJlc3BvbnNlIGNhbid0IG92ZXJ3cml0ZSB0aGUgdmFsdWVzXG4gICAgICAgIC8vIGEgbmV3ZXIgcmVxdWVzdCBhbHJlYWR5IChvciB3aWxsKSBzZXQuXG4gICAgICAgIGxldCBzdGFsZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBmZXRjaERhdGEgPSAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcXVlc3RGbiA9IHJlcXVlc3RSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghcmVxdWVzdEZuKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIHNldFJlcXVlc3RMb2FkaW5nKHRydWUpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0geWllbGQgcmVxdWVzdEZuKHBhcmFtcyk7XG4gICAgICAgICAgICAgICAgaWYgKCFzdGFsZSAmJiBkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtSW5zdGFuY2Uuc2V0RmllbGRzVmFsdWUoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIC8vIEEgZmFpbGVkIHJlcXVlc3QgbXVzdCBub3QgZXNjYXBlIGFzIGFuIHVuaGFuZGxlZCByZWplY3Rpb24g4oCUIHRoZVxuICAgICAgICAgICAgICAgIC8vIGZvcm0ga2VlcHMgaXRzIGluaXRpYWxWYWx1ZXMgYW5kIHRoZSBmYWlsdXJlIGlzIHN1cmZhY2VkIG9uIHRoZVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUgKG1pcnJvcnMgdGhlIGZpZWxkLWxldmVsIHVzZUZpZWxkUmVxdWVzdCBoYW5kbGluZykuXG4gICAgICAgICAgICAgICAgaWYgKCFzdGFsZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gcmVxdWVzdCBmYWlsZWQ6JywgZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0YWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJlcXVlc3RMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBhIE5PTi1zdXBlcnNlZGVkIHNldHRsZSBpbml0aWFsaXplcyB0aGUgZm9ybTogYSBzdGFsZVxuICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0J3MgZGF0YSB3YXMgZGlzY2FyZGVkLCBzbyBpdHMgdmFsdWVzIG11c3Qgbm90IGJlIHJlcG9ydGVkLlxuICAgICAgICAgICAgICAgICAgICBmaXJlSW5pdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChyZXF1ZXN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGZldGNoRGF0YSgpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmlyZUluaXQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgc3RhbGUgPSB0cnVlO1xuICAgICAgICB9O1xuICAgICAgICAvLyBSZS1mZXRjaCB3aGVuIHBhcmFtcyBjaGFuZ2UgYnkgVkFMVUUgKGRlcGVuZGluZyBvbiB0aGUgcmF3IGBwYXJhbXNgXG4gICAgICAgIC8vIHJlZmVyZW5jZSB3b3VsZCByZS1ydW4gb24gZXZlcnkgcmVuZGVyIGZvciBpbmxpbmUgb2JqZWN0IGxpdGVyYWxzIGFuZCxcbiAgICAgICAgLy8gY29tYmluZWQgd2l0aCB0aGUgbG9hZGluZyBzZXRTdGF0ZSwgbG9vcCBmb3JldmVyKSDigJQgYW5kIHdoZW4gYHJlcXVlc3RgXG4gICAgICAgIC8vIGZpcnN0IGJlY29tZXMgZGVmaW5lZCAoZS5nLiBiZWhpbmQgYSBmZWF0dXJlIGZsYWcpLCBtaXJyb3JpbmdcbiAgICAgICAgLy8gdXNlRmllbGRSZXF1ZXN0LiBmaXJlSW5pdCdzIG9uY2UtZ3VhcmQga2VlcHMgb25Jbml0IGZyb20gcmUtZmlyaW5nLlxuICAgIH0sIFtzZXJpYWxpemVkUGFyYW1zLCBoYXNSZXF1ZXN0XSk7XG4gICAgLy8g4pSA4pSAIGF1dG9Gb2N1c0ZpcnN0SW5wdXQg4pSA4pSAXG4gICAgY29uc3QgZm9ybUVsUmVmID0gdXNlUmVmKG51bGwpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFhdXRvRm9jdXNGaXJzdElucHV0IHx8IG1vZGUgPT09ICdyZWFkJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgZmlyc3RJbnB1dCA9IChfYSA9IGZvcm1FbFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EucXVlcnlTZWxlY3RvcignaW5wdXQ6bm90KFt0eXBlPVwiaGlkZGVuXCJdKTpub3QoW2Rpc2FibGVkXSksIHRleHRhcmVhOm5vdChbZGlzYWJsZWRdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKScpO1xuICAgICAgICBmaXJzdElucHV0ID09PSBudWxsIHx8IGZpcnN0SW5wdXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGZpcnN0SW5wdXQuZm9jdXMoKTtcbiAgICAgICAgLy8gTW91bnQtb25seSBieSBkZXNpZ24uXG4gICAgfSwgW10pO1xuICAgIC8vIOKUgOKUgCBTcGxpdCBjb250ZXh0IOKUgOKUgFxuICAgIC8vIEZvcm0tbGV2ZWwgcHJvcCBiYWdzIGFyZSBvZnRlbiBpbmxpbmUgbGl0ZXJhbHM6IGtlZXAgdGhlaXIgaWRlbnRpdHlcbiAgICAvLyBzdGFibGUgd2hpbGUgc2hhbGxvdy1lcXVhbCBzbyB0aGUgc3RhYmxlIHNsaWNlIGRvZXNuJ3QgY2h1cm4gcGVyIHJlbmRlci5cbiAgICBjb25zdCBzdGFibGVGaWVsZFByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShmaWVsZFByb3BzKTtcbiAgICBjb25zdCBzdGFibGVGb3JtSXRlbVByb3BzID0gdXNlU2hhbGxvd1N0YWJsZShmb3JtSXRlbVByb3BzKTtcbiAgICBjb25zdCBzdGFibGVDb2xQcm9wcyA9IHVzZVNoYWxsb3dTdGFibGUoY29sUHJvcHMpO1xuICAgIGNvbnN0IHN0YWJsZUxheW91dCA9IHVzZVNoYWxsb3dTdGFibGUobGF5b3V0KTtcbiAgICAvLyBTdGFibGUgc2xpY2U6IGNvbmZpZ3VyYXRpb24gKyBpZGVudGl0eS1zdGFibGUgZGlzcGF0Y2hlcnMvaW5zdGFuY2UuXG4gICAgLy8gQ2hhbmdlcyBvbmx5IHdoZW4gZm9ybS1sZXZlbCBwcm9wcyBjaGFuZ2Ug4oCUIE5PVCBvbiBrZXlzdHJva2VzLCBzb1xuICAgIC8vIHN1YnNjcmliZXJzIGxpa2UgU3VibWl0dGVyIGFuZCB0aGUgZmllbGQgZmFjdG9yaWVzIHNraXAgdGhvc2UgcmVuZGVycy5cbiAgICBjb25zdCBzdGFibGVWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgZm9ybUluc3RhbmNlOiBwcm9Gb3JtRm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBpbnRlcm5hbHMuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogaW50ZXJuYWxzLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkV2FybmluZzogaW50ZXJuYWxzLnNldEZpZWxkV2FybmluZyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZDogaW50ZXJuYWxzLnZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRBc3luYzogaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogaW50ZXJuYWxzLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgcmV0YWluRmllbGQ6IGludGVybmFscy5yZXRhaW5GaWVsZCxcbiAgICAgICAgcmVsZWFzZUZpZWxkOiBpbnRlcm5hbHMucmVsZWFzZUZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICAvLyBTdWJtaXR0aW5nL2xvYWRpbmcgZG9lcyBOT1QgZGlzYWJsZSBmaWVsZHMg4oCUIG9ubHkgdGhlXG4gICAgICAgIC8vIGV4cGxpY2l0IGBkaXNhYmxlZGAgcHJvcCBkb2VzLiBLZWVwaW5nIGlzTG9hZGluZyBvdXQgb2YgdGhpcyBzbGljZVxuICAgICAgICAvLyBtZWFucyBhIHN1Ym1pdCBjeWNsZSBubyBsb25nZXIgcmUtcmVuZGVycyBldmVyeSBmaWVsZCBzaGVsbC5cbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgLy8gUHJvRm9ybSBzcGVjaWZpY3NcbiAgICAgICAgbW9kZSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgY29sUHJvcHM6IHN0YWJsZUNvbFByb3BzICE9PSBudWxsICYmIHN0YWJsZUNvbFByb3BzICE9PSB2b2lkIDAgPyBzdGFibGVDb2xQcm9wcyA6IERFRkFVTFRfQ09MX1BST1BTLFxuICAgICAgICByZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgdW5yZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgcmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIHVucmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIGZpZWxkUHJvcHM6IHN0YWJsZUZpZWxkUHJvcHMsXG4gICAgICAgIGZvcm1JdGVtUHJvcHM6IHN0YWJsZUZvcm1JdGVtUHJvcHMsXG4gICAgICAgIGxheW91dDogc3RhYmxlTGF5b3V0LFxuICAgICAgICBmb3JtQ29tcG9uZW50VHlwZSxcbiAgICB9KSwgW1xuICAgICAgICBwcm9Gb3JtRm9ybUluc3RhbmNlLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZFdhcm5pbmcsXG4gICAgICAgIGludGVybmFscy52YWxpZGF0ZUZpZWxkLFxuICAgICAgICBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICBpbnRlcm5hbHMucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnJldGFpbkZpZWxkLFxuICAgICAgICBpbnRlcm5hbHMucmVsZWFzZUZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICBtb2RlLFxuICAgICAgICBncmlkLFxuICAgICAgICBzdGFibGVDb2xQcm9wcyxcbiAgICAgICAgcmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHVucmVnaXN0ZXJUcmFuc2Zvcm0sXG4gICAgICAgIHJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICB1bnJlZ2lzdGVyVmFsdWVUeXBlLFxuICAgICAgICBzdGFibGVGaWVsZFByb3BzLFxuICAgICAgICBzdGFibGVGb3JtSXRlbVByb3BzLFxuICAgICAgICBzdGFibGVMYXlvdXQsXG4gICAgICAgIGZvcm1Db21wb25lbnRUeXBlLFxuICAgIF0pO1xuICAgIGNvbnN0IFdyYXBwZXJDb21wb25lbnQgPSBncmlkID8gUm93IDogRnJhZ21lbnQ7XG4gICAgY29uc3Qgd3JhcHBlclByb3BzID0gZ3JpZCA/IE9iamVjdC5hc3NpZ24oe30sIHJvd1Byb3BzKSA6IHt9O1xuICAgIC8vIFJlc2V0IGNhbGxiYWNrIGNoYWluOiB0aGUgU3VibWl0dGVyIHJlc2V0cyB0aGUgdmFsdWVzIGZpcnN0LCB0aGVuIHRoZVxuICAgIC8vIHN1Ym1pdHRlci1sZXZlbCBvblJlc2V0LCB0aGVuIHRoZSBmb3JtLWxldmVsIG9uUmVzZXQgKHdpdGggZmluYWxWYWx1ZXMpXG4gICAgLy8gYW5kIHRoZSBVUkwgY2xlYW51cCDigJQgZmlyZWQgZXhhY3RseSBvbmNlIHBlciByZXNldCBhY3Rpb24uXG4gICAgY29uc3QgaGFuZGxlU3VibWl0dGVyUmVzZXQgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAodHlwZW9mIHN1Ym1pdHRlciA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXIub25SZXNldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0dGVyKTtcbiAgICAgICAgZmlyZUZvcm1SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IHN1Ym1pdHRlck5vZGUgPSBzdWJtaXR0ZXIgIT09IGZhbHNlICYmIG1vZGUgIT09ICdyZWFkJyA/IChfanN4KFN1Ym1pdHRlciwgT2JqZWN0LmFzc2lnbih7fSwgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnID8gc3VibWl0dGVyIDoge30pLCB7IG9uUmVzZXQ6IGhhbmRsZVN1Ym1pdHRlclJlc2V0LCBsb2FkaW5nOiBpc0xvYWRpbmcgfSkpKSA6IG51bGw7XG4gICAgcmV0dXJuIChfanN4KFByb0Zvcm1TdGFibGVDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiBzdGFibGVWYWx1ZSwgY2hpbGRyZW46IF9qc3goUHJvRm9ybVN0YXRlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RvcmUsIGNoaWxkcmVuOiBfanN4cyhcImZvcm1cIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGZvcm1FbFJlZiwgY2xhc3NOYW1lOiBmb3JtQ2xhc3Nlcyh1bmRlZmluZWQsIGpvaW5DbHMoY2xhc3NlcygpLCBjbGFzc05hbWUpKSwgb25TdWJtaXQ6IHdyYXBwZWRIYW5kbGVTdWJtaXQsIG9uUmVzZXQ6IGludGVybmFscy5oYW5kbGVSZXNldCwgY2hpbGRyZW46IFtfanN4KFdyYXBwZXJDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHdyYXBwZXJQcm9wcywgeyBjaGlsZHJlbjogY2hpbGRyZW4gfSkpLCBzdWJtaXR0ZXJOb2RlXSB9KSkgfSkgfSkpO1xufTtcblByb0Zvcm1CYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm0nO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm0gPSBtZW1vKFByb0Zvcm1CYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm07IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -14,25 +14,16 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
|
|
|
14
14
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
15
15
|
var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
16
16
|
var name = _ref.name,
|
|
17
|
-
ignoreFormListField = _ref.ignoreFormListField,
|
|
18
17
|
children = _ref.children;
|
|
19
18
|
var _useProFormStable = (0, _context.useProFormStable)(),
|
|
20
19
|
formInstance = _useProFormStable.formInstance;
|
|
21
20
|
var store = (0, _context.useProFormStore)();
|
|
22
|
-
var formListCtx = (0, _context.useFormListContext)();
|
|
23
|
-
// Resolve the actual paths to watch, considering FormList scope
|
|
24
|
-
var resolvedPaths = (0, _react.useMemo)(function () {
|
|
25
|
-
var shouldPrefix = !ignoreFormListField && formListCtx.listName !== undefined;
|
|
26
|
-
return name.map(function (fieldName) {
|
|
27
|
-
return shouldPrefix ? "".concat(formListCtx.listName, ".").concat(fieldName) : fieldName;
|
|
28
|
-
});
|
|
29
|
-
}, [name, ignoreFormListField, formListCtx.listName]);
|
|
30
21
|
// Subscribe ONLY to the watched paths: a commit that leaves every watched
|
|
31
22
|
// value Object.is-equal short-circuits, so children are NOT re-invoked when
|
|
32
23
|
// unrelated fields change. Reactivity tracks the RAW values; the payload
|
|
33
24
|
// below is derived from the FORMATTED values.
|
|
34
25
|
var watchedArray = (0, _formStore.useStoreSelector)(store, function (state) {
|
|
35
|
-
return
|
|
26
|
+
return name.map(function (path) {
|
|
36
27
|
return path.includes('.') ? (0, _utils.getNestedValue)(state.values, path) : state.values[path];
|
|
37
28
|
});
|
|
38
29
|
}, _formStore.shallowEqualArrays);
|
|
@@ -44,17 +35,16 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
44
35
|
var formatted = formInstance.getFieldFormatValueObject();
|
|
45
36
|
var result = {};
|
|
46
37
|
for (var i = 0; i < name.length; i++) {
|
|
47
|
-
|
|
48
|
-
var path = resolvedPaths[i];
|
|
38
|
+
var path = name[i];
|
|
49
39
|
var value = watchedArray[i];
|
|
50
40
|
var formattedValue = path.includes('.') ? (0, _utils.getNestedValue)(formatted, path) : path in formatted ? formatted[path] : undefined;
|
|
51
41
|
if (formattedValue !== undefined) {
|
|
52
42
|
value = formattedValue;
|
|
53
43
|
}
|
|
54
|
-
result[
|
|
44
|
+
result[path] = value;
|
|
55
45
|
}
|
|
56
46
|
return result;
|
|
57
|
-
}, [name,
|
|
47
|
+
}, [name, watchedArray, formInstance]);
|
|
58
48
|
return (0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
|
|
59
49
|
children: children(watchedValues, formInstance)
|
|
60
50
|
});
|
|
@@ -62,4 +52,4 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
|
|
|
62
52
|
ProFormDependencyBase.displayName = 'ProFormDependency';
|
|
63
53
|
var ProFormDependency = exports.ProFormDependency = /*#__PURE__*/(0, _react.memo)(ProFormDependencyBase);
|
|
64
54
|
var _default = exports["default"] = ProFormDependency;
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfY29udGV4dCIsIl9mb3JtU3RvcmUiLCJfdXRpbHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImNoaWxkcmVuIiwiX3VzZVByb0Zvcm1TdGFibGUiLCJ1c2VQcm9Gb3JtU3RhYmxlIiwiZm9ybUluc3RhbmNlIiwic3RvcmUiLCJ1c2VQcm9Gb3JtU3RvcmUiLCJ3YXRjaGVkQXJyYXkiLCJ1c2VTdG9yZVNlbGVjdG9yIiwic3RhdGUiLCJtYXAiLCJwYXRoIiwiaW5jbHVkZXMiLCJnZXROZXN0ZWRWYWx1ZSIsInZhbHVlcyIsInNoYWxsb3dFcXVhbEFycmF5cyIsIndhdGNoZWRWYWx1ZXMiLCJ1c2VNZW1vIiwiZm9ybWF0dGVkIiwiZ2V0RmllbGRGb3JtYXRWYWx1ZU9iamVjdCIsInJlc3VsdCIsImxlbmd0aCIsInZhbHVlIiwiZm9ybWF0dGVkVmFsdWUiLCJ1bmRlZmluZWQiLCJfanN4IiwiX0ZyYWdtZW50IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxXQUFB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QyxJQUFNZSxJQUFJLEdBQUdYLElBQUksQ0FBQ0osQ0FBQyxDQUFDO01BQ3BCLElBQUkwQixLQUFLLEdBQVlmLFlBQVksQ0FBQ1gsQ0FBQyxDQUFDO01BQ3BDLElBQU0yQixjQUFjLEdBQUdaLElBQUksQ0FBQ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUNyQyxJQUFBQyxxQkFBYyxFQUFDSyxTQUFTLEVBQUVQLElBQUksQ0FBQyxHQUM5QkEsSUFBSSxJQUFJTyxTQUFTLEdBQUdBLFNBQVMsQ0FBQ1AsSUFBSSxDQUFDLEdBQUdhLFNBQVU7TUFDckQsSUFBSUQsY0FBYyxLQUFLQyxTQUFTLEVBQUU7UUFDaENGLEtBQUssR0FBR0MsY0FBYztNQUN4QjtNQUNBSCxNQUFNLENBQUNULElBQUksQ0FBQyxHQUFHVyxLQUFLO0lBQ3RCO0lBQ0EsT0FBT0YsTUFBTTtFQUNmLENBQUMsRUFBRSxDQUFDcEIsSUFBSSxFQUFFTyxZQUFZLEVBQUVILFlBQVksQ0FBQyxDQUFDO0VBRXRDLE9BQU8sSUFBQXFCLGVBQUEsRUFBQUMsb0JBQUEsRUFBQTtJQUFBekIsUUFBQSxFQUFHQSxRQUFRLENBQUNlLGFBQWEsRUFBRVosWUFBWTtFQUFDLENBQUEsQ0FBSTtBQUNyRCxDQUFDO0FBRUROLHFCQUFxQixDQUFDNkIsV0FBVyxHQUFHLG1CQUFtQjtBQWNoRCxJQUFNQyxpQkFBaUIsR0FBQUMsT0FBQSxDQUFBRCxpQkFBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQ25DaEMscUJBQXFCLENBQ21CO0FBQUMsSUFBQWlDLFFBQUEsR0FBQUYsT0FBQSxjQUU1QkQsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybVN0YWJsZSwgdXNlUHJvRm9ybVN0b3JlIH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IHVzZVN0b3JlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbEFycmF5cyB9IGZyb20gJy4vY29yZS9mb3JtU3RvcmUnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5QmFzZSA9ICh7IG5hbWUsIGNoaWxkcmVuLCB9KSA9PiB7XG4gICAgY29uc3QgeyBmb3JtSW5zdGFuY2UgfSA9IHVzZVByb0Zvcm1TdGFibGUoKTtcbiAgICBjb25zdCBzdG9yZSA9IHVzZVByb0Zvcm1TdG9yZSgpO1xuICAgIC8vIFN1YnNjcmliZSBPTkxZIHRvIHRoZSB3YXRjaGVkIHBhdGhzOiBhIGNvbW1pdCB0aGF0IGxlYXZlcyBldmVyeSB3YXRjaGVkXG4gICAgLy8gdmFsdWUgT2JqZWN0LmlzLWVxdWFsIHNob3J0LWNpcmN1aXRzLCBzbyBjaGlsZHJlbiBhcmUgTk9UIHJlLWludm9rZWQgd2hlblxuICAgIC8vIHVucmVsYXRlZCBmaWVsZHMgY2hhbmdlLiBSZWFjdGl2aXR5IHRyYWNrcyB0aGUgUkFXIHZhbHVlczsgdGhlIHBheWxvYWRcbiAgICAvLyBiZWxvdyBpcyBkZXJpdmVkIGZyb20gdGhlIEZPUk1BVFRFRCB2YWx1ZXMuXG4gICAgY29uc3Qgd2F0Y2hlZEFycmF5ID0gdXNlU3RvcmVTZWxlY3RvcihzdG9yZSwgKHN0YXRlKSA9PiBuYW1lLm1hcCgocGF0aCkgPT4gcGF0aC5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUoc3RhdGUudmFsdWVzLCBwYXRoKSA6IHN0YXRlLnZhbHVlc1twYXRoXSksIHNoYWxsb3dFcXVhbEFycmF5cyk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICAvLyBDaGlsZHJlbiByZWNlaXZlIEZPUk1BVFRFRCB2YWx1ZXMgKGRhdGVGb3JtYXR0ZXIgKyB0cmFuc2Zvcm0gYXBwbGllZCksXG4gICAgICAgIC8vIG1hdGNoaW5nIHdoYXQgb25GaW5pc2ggd291bGQgc3VibWl0IGZvciB0aG9zZSBmaWVsZHMuIEEgdHJhbnNmb3JtIHRoYXRcbiAgICAgICAgLy8gUkVOQU1FUyBpdHMga2V5IGRlbGV0ZXMgdGhlIG9yaWdpbmFsIHBhdGggZnJvbSB0aGUgZm9ybWF0dGVkIG9iamVjdCDigJRcbiAgICAgICAgLy8gZmFsbCBiYWNrIHRvIHRoZSByYXcgdmFsdWUgc28gdGhlIHdhdGNoZXIgc3RpbGwgc2VlcyB0aGUgZmllbGQuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1JbnN0YW5jZS5nZXRGaWVsZEZvcm1hdFZhbHVlT2JqZWN0KCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhdGggPSBuYW1lW2ldO1xuICAgICAgICAgICAgbGV0IHZhbHVlID0gd2F0Y2hlZEFycmF5W2ldO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkVmFsdWUgPSBwYXRoLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IGdldE5lc3RlZFZhbHVlKGZvcm1hdHRlZCwgcGF0aClcbiAgICAgICAgICAgICAgICA6IChwYXRoIGluIGZvcm1hdHRlZCA/IGZvcm1hdHRlZFtwYXRoXSA6IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICBpZiAoZm9ybWF0dGVkVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbcGF0aF0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCB3YXRjaGVkQXJyYXksIGZvcm1JbnN0YW5jZV0pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlKSB9KTtcbn07XG5Qcm9Gb3JtRGVwZW5kZW5jeUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybURlcGVuZGVuY3knO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5ID0gbWVtbyhQcm9Gb3JtRGVwZW5kZW5jeUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybURlcGVuZGVuY3k7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|