@1money/component-ui 0.0.71 → 0.0.73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/es/components/ProForm/ProForm.d.ts +10 -2
  2. package/es/components/ProForm/ProForm.js +55 -22
  3. package/es/components/ProForm/ProFormDependency.js +4 -1
  4. package/es/components/ProForm/ProFormItem.js +73 -36
  5. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  6. package/es/components/ProForm/SchemaForm.js +103 -0
  7. package/es/components/ProForm/Submitter.js +12 -2
  8. package/es/components/ProForm/context.d.ts +22 -3
  9. package/es/components/ProForm/context.js +49 -10
  10. package/es/components/ProForm/core/constants.d.ts +2 -1
  11. package/es/components/ProForm/core/constants.js +3 -6
  12. package/es/components/ProForm/core/hooks/useForm.js +155 -131
  13. package/es/components/ProForm/core/hooks/useFormCore.js +73 -39
  14. package/es/components/ProForm/core/interface.d.ts +33 -12
  15. package/es/components/ProForm/core/runRules.d.ts +16 -6
  16. package/es/components/ProForm/core/runRules.js +94 -47
  17. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  18. package/es/components/ProForm/core/useFormItem.js +101 -39
  19. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  20. package/es/components/ProForm/fields/createProFormField.js +50 -31
  21. package/es/components/ProForm/index.d.ts +11 -4
  22. package/es/components/ProForm/index.js +7 -2
  23. package/es/components/ProForm/interface.d.ts +89 -14
  24. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  25. package/es/components/ProForm/layouts/DialogForm.js +2 -1
  26. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  27. package/es/components/ProForm/layouts/DrawerForm.js +2 -1
  28. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  29. package/es/components/ProForm/layouts/QueryFilter.js +77 -12
  30. package/es/components/ProForm/style/ProForm.css +6 -0
  31. package/es/components/ProForm/utils.d.ts +12 -1
  32. package/es/components/ProForm/utils.js +70 -21
  33. package/es/components/Tooltip/style/Tooltip.css +1 -0
  34. package/es/index.css +1 -1
  35. package/es/index.d.ts +2 -2
  36. package/es/index.js +2 -2
  37. package/lib/components/ProForm/ProForm.d.ts +10 -2
  38. package/lib/components/ProForm/ProForm.js +53 -20
  39. package/lib/components/ProForm/ProFormDependency.js +4 -1
  40. package/lib/components/ProForm/ProFormItem.js +72 -34
  41. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  42. package/lib/components/ProForm/SchemaForm.js +110 -0
  43. package/lib/components/ProForm/Submitter.js +12 -2
  44. package/lib/components/ProForm/context.d.ts +22 -3
  45. package/lib/components/ProForm/context.js +49 -10
  46. package/lib/components/ProForm/core/constants.d.ts +2 -1
  47. package/lib/components/ProForm/core/constants.js +4 -7
  48. package/lib/components/ProForm/core/hooks/useForm.js +154 -130
  49. package/lib/components/ProForm/core/hooks/useFormCore.js +72 -38
  50. package/lib/components/ProForm/core/interface.d.ts +33 -12
  51. package/lib/components/ProForm/core/runRules.d.ts +16 -6
  52. package/lib/components/ProForm/core/runRules.js +95 -47
  53. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  54. package/lib/components/ProForm/core/useFormItem.js +100 -38
  55. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  56. package/lib/components/ProForm/fields/createProFormField.js +50 -31
  57. package/lib/components/ProForm/index.d.ts +11 -4
  58. package/lib/components/ProForm/index.js +16 -1
  59. package/lib/components/ProForm/interface.d.ts +89 -14
  60. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  61. package/lib/components/ProForm/layouts/DialogForm.js +2 -1
  62. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  63. package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
  64. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  65. package/lib/components/ProForm/layouts/QueryFilter.js +77 -12
  66. package/lib/components/ProForm/style/ProForm.css +6 -0
  67. package/lib/components/ProForm/utils.d.ts +12 -1
  68. package/lib/components/ProForm/utils.js +73 -21
  69. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  70. package/lib/index.css +1 -1
  71. package/lib/index.d.ts +2 -2
  72. package/lib/index.js +13 -1
  73. package/package.json +1 -1
  74. package/scripts/mcp-server/examples.generated.json +54 -0
  75. package/scripts/mcp-server/index.generated.json +1212 -80
@@ -1,4 +1,12 @@
1
- import React from 'react';
1
+ import type { ReactElement } from 'react';
2
2
  import type { ProFormProps } from './interface';
3
- export declare const ProForm: React.NamedExoticComponent<ProFormProps>;
3
+ /**
4
+ * Generic-aware component type — `memo()` erases generics, so the export is
5
+ * re-asserted to keep `<ProForm<MyValues> onFinish={...}>` fully typed.
6
+ */
7
+ export interface ProFormComponent {
8
+ <Values = Record<string, unknown>>(props: ProFormProps<Values>): ReactElement | null;
9
+ displayName?: string;
10
+ }
11
+ export declare const ProForm: ProFormComponent;
4
12
  export default ProForm;
@@ -45,10 +45,10 @@ import useEventCallback from '@1money/hooks/useEventCallback';
45
45
  import { default as classnames, joinCls } from '../../utils/classnames';
46
46
  import { Row } from '../Grid';
47
47
  import { useForm } from './core/hooks/useForm';
48
- import { ProFormContext } from './context';
48
+ import { ProFormStableContext, ProFormStateContext } from './context';
49
49
  import { Submitter } from './Submitter';
50
50
  import { CSS_PREFIX } from './constants';
51
- import { stableSerialize, transformSubmitValues, omitNilValues } from './utils';
51
+ import { stableSerialize, transformSubmitValues, omitNilValues, formatDateValues } from './utils';
52
52
  var classes = classnames(CSS_PREFIX);
53
53
  var formClasses = classnames('form');
54
54
  var ProFormBase = function ProFormBase(props) {
@@ -74,6 +74,10 @@ var ProFormBase = function ProFormBase(props) {
74
74
  formRef = props.formRef,
75
75
  _props$omitNil = props.omitNil,
76
76
  omitNil = _props$omitNil === void 0 ? true : _props$omitNil,
77
+ _props$dateFormatter = props.dateFormatter,
78
+ dateFormatter = _props$dateFormatter === void 0 ? 'string' : _props$dateFormatter,
79
+ fieldProps = props.fieldProps,
80
+ formItemProps = props.formItemProps,
77
81
  _props$size = props.size,
78
82
  size = _props$size === void 0 ? 'middle' : _props$size,
79
83
  _props$labelAlign = props.labelAlign,
@@ -87,7 +91,7 @@ var ProFormBase = function ProFormBase(props) {
87
91
  _props$validateTrigge = props.validateTrigger,
88
92
  validateTrigger = _props$validateTrigge === void 0 ? 'onChange' : _props$validateTrigge,
89
93
  _prefixCls = props.prefixCls,
90
- rest = __rest(props, ["children", "className", "submitter", "readonly", "mode", "grid", "colProps", "rowProps", "loading", "request", "params", "initialValues", "onFinish", "onFinishFailed", "onValuesChange", "onReset", "formRef", "omitNil", "size", "labelAlign", "disabled", "colon", "requiredMark", "validateTrigger", "prefixCls"]);
94
+ rest = __rest(props, ["children", "className", "submitter", "readonly", "mode", "grid", "colProps", "rowProps", "loading", "request", "params", "initialValues", "onFinish", "onFinishFailed", "onValuesChange", "onReset", "formRef", "omitNil", "dateFormatter", "fieldProps", "formItemProps", "size", "labelAlign", "disabled", "colon", "requiredMark", "validateTrigger", "prefixCls"]);
91
95
  var mode = modeProp !== null && modeProp !== void 0 ? modeProp : readonly ? 'read' : 'edit';
92
96
  var _useSafeState = useSafeState(false),
93
97
  _useSafeState2 = _slicedToArray(_useSafeState, 2),
@@ -98,17 +102,26 @@ var ProFormBase = function ProFormBase(props) {
98
102
  submitting = _useSafeState4[0],
99
103
  setSubmitting = _useSafeState4[1];
100
104
  var isLoading = loading || requestLoading || submitting;
101
- // ── Transform registry ──
105
+ // ── Transform / valueType registries ──
102
106
  var transformKeyRef = useRef({});
107
+ var valueTypeRef = useRef({});
103
108
  var registerTransform = useMemoizedFn(function (name, fn) {
104
109
  transformKeyRef.current[name] = fn;
105
110
  });
106
111
  var unregisterTransform = useMemoizedFn(function (name) {
107
112
  delete transformKeyRef.current[name];
108
113
  });
114
+ var registerValueType = useMemoizedFn(function (name, valueType) {
115
+ valueTypeRef.current[name] = valueType;
116
+ });
117
+ var unregisterValueType = useMemoizedFn(function (name) {
118
+ delete valueTypeRef.current[name];
119
+ });
109
120
  var onFinishRef = useLatest(onFinish);
121
+ // Submit pipeline: dates → field transforms → omitNil
110
122
  var applyPipeline = useMemoizedFn(function (values) {
111
- var result = transformSubmitValues(values, transformKeyRef.current);
123
+ var result = formatDateValues(values, dateFormatter, valueTypeRef.current);
124
+ result = transformSubmitValues(result, transformKeyRef.current);
112
125
  if (omitNil) result = omitNilValues(result);
113
126
  return result;
114
127
  });
@@ -250,17 +263,30 @@ var ProFormBase = function ProFormBase(props) {
250
263
  if (requestRef.current) {
251
264
  fetchData();
252
265
  }
253
- }, [serializedParams, params, requestRef, setRequestLoading, formInstance]);
254
- // ── Merged context ──
255
- var contextValue = useMemo(function () {
266
+ // Re-fetch ONLY when params change by VALUE: depending on the raw `params`
267
+ // reference would re-run on every render for inline object literals and,
268
+ // combined with the loading setState, loop forever.
269
+ }, [serializedParams]);
270
+ // ── Split context ──
271
+ // Volatile slice: changes on every value/error update (per keystroke).
272
+ var stateValue = useMemo(function () {
256
273
  return {
257
274
  values: internals.values,
258
275
  errors: internals.errors,
276
+ warnings: internals.warnings,
259
277
  touched: internals.touched,
260
- validating: internals.validating,
278
+ validating: internals.validating
279
+ };
280
+ }, [internals.values, internals.errors, internals.warnings, internals.touched, internals.validating]);
281
+ // Stable slice: configuration + identity-stable dispatchers/instance.
282
+ // Changes only when form-level props change — NOT on keystrokes, so
283
+ // subscribers like Submitter and the field factories skip those renders.
284
+ var stableValue = useMemo(function () {
285
+ return {
261
286
  formInstance: proFormFormInstance,
262
287
  setFieldValue: internals.setFieldValue,
263
288
  setFieldError: internals.setFieldError,
289
+ setFieldWarning: internals.setFieldWarning,
264
290
  validateField: internals.validateField,
265
291
  validateFieldAsync: internals.validateFieldAsync,
266
292
  registerField: internals.registerField,
@@ -279,27 +305,34 @@ var ProFormBase = function ProFormBase(props) {
279
305
  span: 24
280
306
  },
281
307
  registerTransform: registerTransform,
282
- unregisterTransform: unregisterTransform
308
+ unregisterTransform: unregisterTransform,
309
+ registerValueType: registerValueType,
310
+ unregisterValueType: unregisterValueType,
311
+ fieldProps: fieldProps,
312
+ formItemProps: formItemProps
283
313
  };
284
- }, [internals, proFormFormInstance, size, labelAlign, disabled, isLoading, colon, requiredMark, validateTrigger, readonly, mode, grid, colProps, registerTransform, unregisterTransform]);
314
+ }, [proFormFormInstance, internals.setFieldValue, internals.setFieldError, internals.setFieldWarning, internals.validateField, internals.validateFieldAsync, internals.registerField, internals.unregisterField, size, labelAlign, disabled, isLoading, colon, requiredMark, validateTrigger, readonly, mode, grid, colProps, registerTransform, unregisterTransform, registerValueType, unregisterValueType, fieldProps, formItemProps]);
285
315
  var WrapperComponent = grid ? Row : Fragment;
286
316
  var wrapperProps = grid ? Object.assign({}, rowProps) : {};
287
317
  var submitterNode = submitter !== false && mode !== 'read' ? _jsx(Submitter, Object.assign({}, _typeof(submitter) === 'object' ? submitter : {}, {
288
318
  loading: isLoading
289
319
  })) : null;
290
- return _jsx(ProFormContext.Provider, {
291
- value: contextValue,
292
- children: _jsxs("form", Object.assign({}, rest, {
293
- className: formClasses(undefined, joinCls(classes(), className)),
294
- onSubmit: wrappedHandleSubmit,
295
- onReset: internals.handleReset,
296
- children: [_jsx(WrapperComponent, Object.assign({}, wrapperProps, {
297
- children: children
298
- })), submitterNode]
299
- }))
320
+ return _jsx(ProFormStableContext.Provider, {
321
+ value: stableValue,
322
+ children: _jsx(ProFormStateContext.Provider, {
323
+ value: stateValue,
324
+ children: _jsxs("form", Object.assign({}, rest, {
325
+ className: formClasses(undefined, joinCls(classes(), className)),
326
+ onSubmit: wrappedHandleSubmit,
327
+ onReset: internals.handleReset,
328
+ children: [_jsx(WrapperComponent, Object.assign({}, wrapperProps, {
329
+ children: children
330
+ })), submitterNode]
331
+ }))
332
+ })
300
333
  });
301
334
  };
302
335
  ProFormBase.displayName = 'ProForm';
303
336
  export var ProForm = /*#__PURE__*/memo(ProFormBase);
304
337
  export default ProForm;
305
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiUmVhY3QiLCJtZW1vIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsIkZyYWdtZW50IiwidXNlTGF0ZXN0IiwidXNlU2FmZVN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsInVzZUV2ZW50Q2FsbGJhY2siLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJSb3ciLCJ1c2VGb3JtIiwiUHJvRm9ybUNvbnRleHQiLCJTdWJtaXR0ZXIiLCJDU1NfUFJFRklYIiwic3RhYmxlU2VyaWFsaXplIiwidHJhbnNmb3JtU3VibWl0VmFsdWVzIiwib21pdE5pbFZhbHVlcyIsImNsYXNzZXMiLCJmb3JtQ2xhc3NlcyIsIlByb0Zvcm1CYXNlIiwicHJvcHMiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInN1Ym1pdHRlciIsIl9wcm9wcyRyZWFkb25seSIsInJlYWRvbmx5IiwibW9kZVByb3AiLCJtb2RlIiwiX3Byb3BzJGdyaWQiLCJncmlkIiwiY29sUHJvcHMiLCJyb3dQcm9wcyIsIl9wcm9wcyRsb2FkaW5nIiwibG9hZGluZyIsInJlcXVlc3QiLCJwYXJhbXMiLCJpbml0aWFsVmFsdWVzIiwib25GaW5pc2giLCJvbkZpbmlzaEZhaWxlZCIsIm9uVmFsdWVzQ2hhbmdlIiwib25SZXNldCIsImZvcm1SZWYiLCJfcHJvcHMkb21pdE5pbCIsIm9taXROaWwiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJfcHJvcHMkbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfcHJvcHMkZGlzYWJsZWQiLCJkaXNhYmxlZCIsIl9wcm9wcyRjb2xvbiIsImNvbG9uIiwiX3Byb3BzJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9wcm9wcyR2YWxpZGF0ZVRyaWdnZSIsInZhbGlkYXRlVHJpZ2dlciIsIl9wcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJyZXN0IiwiX3VzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJyZXF1ZXN0TG9hZGluZyIsInNldFJlcXVlc3RMb2FkaW5nIiwiX3VzZVNhZmVTdGF0ZTMiLCJfdXNlU2FmZVN0YXRlNCIsInN1Ym1pdHRpbmciLCJzZXRTdWJtaXR0aW5nIiwiaXNMb2FkaW5nIiwidHJhbnNmb3JtS2V5UmVmIiwicmVnaXN0ZXJUcmFuc2Zvcm0iLCJuYW1lIiwiZm4iLCJjdXJyZW50IiwidW5yZWdpc3RlclRyYW5zZm9ybSIsIm9uRmluaXNoUmVmIiwiYXBwbHlQaXBlbGluZSIsInZhbHVlcyIsIl91c2VGb3JtIiwiZm9ybUluc3RhbmNlIiwiaW50ZXJuYWxzIiwid3JhcHBlZEhhbmRsZVN1Ym1pdCIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl9hIiwidmFsaWRhdGVkVmFsdWVzIiwicGlwZWxpbmVkIiwidHlwZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJwcmV2ZW50RGVmYXVsdCIsInZhbGlkYXRlRmllbGRzIiwic2VudCIsImVycm9ycyIsImZpbmlzaCIsInN0b3AiLCJwcm9Gb3JtRm9ybUluc3RhbmNlIiwiYXNzaWduIiwiZ2V0RmllbGRzRm9ybWF0VmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsInZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWUiLCJfY2FsbGVlMiIsInZhbHMiLCJfdDIiLCJfY29udGV4dDIiLCJhYnJ1cHQiLCJzdWNjZXNzIiwic3VibWl0Rm9ybSIsInJlcXVlc3RSZWYiLCJzZXJpYWxpemVkUGFyYW1zIiwiZmV0Y2hEYXRhIiwiX2NhbGxlZTMiLCJyZXF1ZXN0Rm4iLCJkYXRhIiwiX2NvbnRleHQzIiwiX3R5cGVvZiIsInNldEZpZWxkc1ZhbHVlIiwiY29udGV4dFZhbHVlIiwidG91Y2hlZCIsInZhbGlkYXRpbmciLCJzZXRGaWVsZFZhbHVlIiwic2V0RmllbGRFcnJvciIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwic3BhbiIsIldyYXBwZXJDb21wb25lbnQiLCJ3cmFwcGVyUHJvcHMiLCJzdWJtaXR0ZXJOb2RlIiwiUHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJvblN1Ym1pdCIsImhhbmRsZVJlc2V0IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxT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RUFBUyxDQUFBLENBQUEsQ0FDbEIsR0FDQSxJQUFJO0VBRVYsT0FDRTNFLElBQUEsQ0FBQ2tCLGNBQWMsQ0FBQzBILFFBQVEsRUFBQTtJQUFDdkssS0FBSyxFQUFFMEosWUFBWTtJQUFBbkcsUUFBQSxFQUMxQzFCLEtBQUEsQ0FBQSxNQUFBLEVBQUFaLE1BQUEsQ0FBQXFILE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFDTTFDLElBQUksRUFBQTtNQUNScEMsU0FBUyxFQUFFSixXQUFXLENBQUNvSCxTQUFTLEVBQUU5SCxPQUFPLENBQUNTLE9BQU8sQ0FBQSxDQUFFLEVBQUVLLFNBQVMsQ0FBQyxDQUFDO01BQ2hFaUgsUUFBUSxFQUFFdEQsbUJBQW1CO01BQzdCekMsT0FBTyxFQUFFd0MsU0FBUyxDQUFDd0QsV0FBVztNQUFBbkgsUUFBQSxFQUFBLENBRTlCNUIsSUFBQSxDQUFDeUksZ0JBQWdCLEVBQUFuSixNQUFBLENBQUFxSCxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQUsrQixZQUFZLEVBQUE7UUFBQTlHLFFBQUEsRUFBR0E7TUFBUSxDQUFBLENBQUEsQ0FBb0IsRUFDaEUrRyxhQUFhO0lBQUEsQ0FBQSxDQUFBO0VBQ1QsQ0FBQSxDQUNpQjtBQUU5QixDQUFDO0FBRURqSCxXQUFXLENBQUNzSCxXQUFXLEdBQUcsU0FBUztBQUVuQyxPQUFPLElBQU1DLE9BQU8sZ0JBQUc3SSxJQUFJLENBQUNzQixXQUFXLENBQUM7QUFFeEMsZUFBZXVILE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgUmVhY3QsIHsgbWVtbywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIEZyYWdtZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZUxhdGVzdCBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlU2FmZVN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlU2FmZVN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgdXNlRXZlbnRDYWxsYmFjayBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2snO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBjbGFzc25hbWVzLCBqb2luQ2xzIH0gZnJvbSAnLi4vLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBSb3cgfSBmcm9tICcuLi9HcmlkJztcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICcuL2NvcmUvaG9va3MvdXNlRm9ybSc7XG5pbXBvcnQgeyBQcm9Gb3JtQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBTdWJtaXR0ZXIgfSBmcm9tICcuL1N1Ym1pdHRlcic7XG5pbXBvcnQgeyBDU1NfUFJFRklYIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgc3RhYmxlU2VyaWFsaXplLCB0cmFuc2Zvcm1TdWJtaXRWYWx1ZXMsIG9taXROaWxWYWx1ZXMgfSBmcm9tICcuL3V0aWxzJztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKENTU19QUkVGSVgpO1xuY29uc3QgZm9ybUNsYXNzZXMgPSBjbGFzc25hbWVzKCdmb3JtJyk7XG5jb25zdCBQcm9Gb3JtQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIGNsYXNzTmFtZSwgc3VibWl0dGVyLCByZWFkb25seSA9IGZhbHNlLCBtb2RlOiBtb2RlUHJvcCwgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGxvYWRpbmcgPSBmYWxzZSwgcmVxdWVzdCwgcGFyYW1zLCBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBmb3JtUmVmLCBvbWl0TmlsID0gdHJ1ZSwgc2l6ZSA9ICdtaWRkbGUnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIHByZWZpeENsczogX3ByZWZpeENscyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwic3VibWl0dGVyXCIsIFwicmVhZG9ubHlcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwiZm9ybVJlZlwiLCBcIm9taXROaWxcIiwgXCJzaXplXCIsIFwibGFiZWxBbGlnblwiLCBcImRpc2FibGVkXCIsIFwiY29sb25cIiwgXCJyZXF1aXJlZE1hcmtcIiwgXCJ2YWxpZGF0ZVRyaWdnZXJcIiwgXCJwcmVmaXhDbHNcIl0pO1xuICAgIGNvbnN0IG1vZGUgPSBtb2RlUHJvcCAhPT0gbnVsbCAmJiBtb2RlUHJvcCAhPT0gdm9pZCAwID8gbW9kZVByb3AgOiAocmVhZG9ubHkgPyAncmVhZCcgOiAnZWRpdCcpO1xuICAgIGNvbnN0IFtyZXF1ZXN0TG9hZGluZywgc2V0UmVxdWVzdExvYWRpbmddID0gdXNlU2FmZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc3VibWl0dGluZywgc2V0U3VibWl0dGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IGxvYWRpbmcgfHwgcmVxdWVzdExvYWRpbmcgfHwgc3VibWl0dGluZztcbiAgICAvLyDilIDilIAgVHJhbnNmb3JtIHJlZ2lzdHJ5IOKUgOKUgFxuICAgIGNvbnN0IHRyYW5zZm9ybUtleVJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgcmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lLCBmbikgPT4ge1xuICAgICAgICB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXSA9IGZuO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJUcmFuc2Zvcm0gPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0cmFuc2Zvcm1LZXlSZWYuY3VycmVudFtuYW1lXTtcbiAgICB9KTtcbiAgICBjb25zdCBvbkZpbmlzaFJlZiA9IHVzZUxhdGVzdChvbkZpbmlzaCk7XG4gICAgY29uc3QgYXBwbHlQaXBlbGluZSA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHZhbHVlcywgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAob21pdE5pbClcbiAgICAgICAgICAgIHJlc3VsdCA9IG9taXROaWxWYWx1ZXMocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICAvLyDilIDilIAgRm9ybSBlbmdpbmUgKHVzZUZvcm0gd2l0aCBhc3luYyB2YWxpZGF0aW9uKSDilIDilIBcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSwgaW50ZXJuYWxzIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpc0xvYWRpbmcsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KTtcbiAgICAvLyDilIDilIAgQXN5bmMgc3VibWl0IHdpdGggdHJhbnNmb3JtIHBpcGVsaW5lIOKUgOKUgFxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0U3VibWl0dGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIGZvcm1JbnN0YW5jZS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgICAgICAgY29uc3QgcGlwZWxpbmVkID0gYXBwbHlQaXBlbGluZSh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgeWllbGQgKChfYSA9IG9uRmluaXNoUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uRmluaXNoUmVmLCBwaXBlbGluZWQpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlZCA9IGVycjtcbiAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogdHlwZWQudmFsdWVzLCBlcnJvcnM6IHR5cGVkLmVycm9ycyB9KTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWU6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0geWllbGQgZm9ybUluc3RhbmNlLnZhbGlkYXRlRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzOiBhcHBseVBpcGVsaW5lKHZhbHMpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgc3VibWl0Rm9ybTogd3JhcHBlZEhhbmRsZVN1Ym1pdCB9KSksIFtmb3JtSW5zdGFuY2UsIGFwcGx5UGlwZWxpbmUsIHdyYXBwZWRIYW5kbGVTdWJtaXRdKTtcbiAgICAvLyDilIDilIAgU3luYyB0byBmb3JtUmVmIHByb3Ag4pSA4pSAXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvcm1SZWYpIHtcbiAgICAgICAgICAgIGZvcm1SZWYuY3VycmVudCA9IHByb0Zvcm1Gb3JtSW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9LCBbZm9ybVJlZiwgcHJvRm9ybUZvcm1JbnN0YW5jZV0pO1xuICAgIC8vIOKUgOKUgCByZXF1ZXN0IC8gcGFyYW1zIGF1dG8tbG9hZCDilIDilIBcbiAgICBjb25zdCByZXF1ZXN0UmVmID0gdXNlTGF0ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRQYXJhbXMgPSB1c2VNZW1vKCgpID0+IHN0YWJsZVNlcmlhbGl6ZShwYXJhbXMpLCBbcGFyYW1zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hEYXRhID0gKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0Rm4gPSByZXF1ZXN0UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoIXJlcXVlc3RGbilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRSZXF1ZXN0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHJlcXVlc3RGbihwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtSW5zdGFuY2Uuc2V0RmllbGRzVmFsdWUoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVlc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICB9LCBbc2VyaWFsaXplZFBhcmFtcywgcGFyYW1zLCByZXF1ZXN0UmVmLCBzZXRSZXF1ZXN0TG9hZGluZywgZm9ybUluc3RhbmNlXSk7XG4gICAgLy8g4pSA4pSAIE1lcmdlZCBjb250ZXh0IOKUgOKUgFxuICAgIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgdmFsdWVzOiBpbnRlcm5hbHMudmFsdWVzLFxuICAgICAgICBlcnJvcnM6IGludGVybmFscy5lcnJvcnMsXG4gICAgICAgIHRvdWNoZWQ6IGludGVybmFscy50b3VjaGVkLFxuICAgICAgICB2YWxpZGF0aW5nOiBpbnRlcm5hbHMudmFsaWRhdGluZyxcbiAgICAgICAgZm9ybUluc3RhbmNlOiBwcm9Gb3JtRm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiBpbnRlcm5hbHMuc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogaW50ZXJuYWxzLnNldEZpZWxkRXJyb3IsXG4gICAgICAgIHZhbGlkYXRlRmllbGQ6IGludGVybmFscy52YWxpZGF0ZUZpZWxkLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkQXN5bmM6IGludGVybmFscy52YWxpZGF0ZUZpZWxkQXN5bmMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQ6IGludGVybmFscy5yZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6IGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpc0xvYWRpbmcsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgLy8gUHJvRm9ybSBzcGVjaWZpY3NcbiAgICAgICAgcmVhZG9ubHksXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIGNvbFByb3BzOiBjb2xQcm9wcyAhPT0gbnVsbCAmJiBjb2xQcm9wcyAhPT0gdm9pZCAwID8gY29sUHJvcHMgOiB7IHNwYW46IDI0IH0sXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgIH0pLCBbXG4gICAgICAgIGludGVybmFscyxcbiAgICAgICAgcHJvRm9ybUZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGlzTG9hZGluZyxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgICAgICByZWFkb25seSxcbiAgICAgICAgbW9kZSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgY29sUHJvcHMsXG4gICAgICAgIHJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgICAgICB1bnJlZ2lzdGVyVHJhbnNmb3JtLFxuICAgIF0pO1xuICAgIGNvbnN0IFdyYXBwZXJDb21wb25lbnQgPSBncmlkID8gUm93IDogRnJhZ21lbnQ7XG4gICAgY29uc3Qgd3JhcHBlclByb3BzID0gZ3JpZCA/IE9iamVjdC5hc3NpZ24oe30sIHJvd1Byb3BzKSA6IHt9O1xuICAgIGNvbnN0IHN1Ym1pdHRlck5vZGUgPSBzdWJtaXR0ZXIgIT09IGZhbHNlICYmIG1vZGUgIT09ICdyZWFkJyA/IChfanN4KFN1Ym1pdHRlciwgT2JqZWN0LmFzc2lnbih7fSwgKHR5cGVvZiBzdWJtaXR0ZXIgPT09ICdvYmplY3QnID8gc3VibWl0dGVyIDoge30pLCB7IGxvYWRpbmc6IGlzTG9hZGluZyB9KSkpIDogbnVsbDtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IGNvbnRleHRWYWx1ZSwgY2hpbGRyZW46IF9qc3hzKFwiZm9ybVwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IGNsYXNzTmFtZTogZm9ybUNsYXNzZXModW5kZWZpbmVkLCBqb2luQ2xzKGNsYXNzZXMoKSwgY2xhc3NOYW1lKSksIG9uU3VibWl0OiB3cmFwcGVkSGFuZGxlU3VibWl0LCBvblJlc2V0OiBpbnRlcm5hbHMuaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiBbX2pzeChXcmFwcGVyQ29tcG9uZW50LCBPYmplY3QuYXNzaWduKHt9LCB3cmFwcGVyUHJvcHMsIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKSwgc3VibWl0dGVyTm9kZV0gfSkpIH0pKTtcbn07XG5Qcm9Gb3JtQmFzZS5kaXNwbGF5TmFtZSA9ICdQcm9Gb3JtJztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtID0gbWVtbyhQcm9Gb3JtQmFzZSk7XG5leHBvcnQgZGVmYXVsdCBQcm9Gb3JtOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
338
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiUmVhY3QiLCJtZW1vIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsIkZyYWdtZW50IiwidXNlTGF0ZXN0IiwidXNlU2FmZVN0YXRlIiwidXNlTWVtb2l6ZWRGbiIsInVzZUV2ZW50Q2FsbGJhY2siLCJkZWZhdWx0IiwiY2xhc3NuYW1lcyIsImpvaW5DbHMiLCJSb3ciLCJ1c2VGb3JtIiwiUHJvRm9ybVN0YWJsZUNvbnRleHQiLCJQcm9Gb3JtU3RhdGVDb250ZXh0IiwiU3VibWl0dGVyIiwiQ1NTX1BSRUZJWCIsInN0YWJsZVNlcmlhbGl6ZSIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsIm9taXROaWxWYWx1ZXMiLCJmb3JtYXREYXRlVmFsdWVzIiwiY2xhc3NlcyIsImZvcm1DbGFzc2VzIiwiUHJvRm9ybUJhc2UiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwic3VibWl0dGVyIiwiX3Byb3BzJHJlYWRvbmx5IiwicmVhZG9ubHkiLCJtb2RlUHJvcCIsIm1vZGUiLCJfcHJvcHMkZ3JpZCIsImdyaWQiLCJjb2xQcm9wcyIsInJvd1Byb3BzIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwicmVxdWVzdCIsInBhcmFtcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiZm9ybVJlZiIsIl9wcm9wcyRvbWl0TmlsIiwib21pdE5pbCIsIl9wcm9wcyRkYXRlRm9ybWF0dGVyIiwiZGF0ZUZvcm1hdHRlciIsImZpZWxkUHJvcHMiLCJmb3JtSXRlbVByb3BzIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiX3Byb3BzJGxhYmVsQWxpZ24iLCJsYWJlbEFsaWduIiwiX3Byb3BzJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfcHJvcHMkY29sb24iLCJjb2xvbiIsIl9wcm9wcyRyZXF1aXJlZE1hcmsiLCJyZXF1aXJlZE1hcmsiLCJfcHJvcHMkdmFsaWRhdGVUcmlnZ2UiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJfcHJlZml4Q2xzIiwicHJlZml4Q2xzIiwicmVzdCIsIl91c2VTYWZlU3RhdGUiLCJfdXNlU2FmZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwicmVxdWVzdExvYWRpbmciLCJzZXRSZXF1ZXN0TG9hZGluZyIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJzdWJtaXR0aW5nIiwic2V0U3VibWl0dGluZyIsImlzTG9hZGluZyIsInRyYW5zZm9ybUtleVJlZiIsInZhbHVlVHlwZVJlZiIsInJlZ2lzdGVyVHJhbnNmb3JtIiwibmFtZSIsImZuIiwiY3VycmVudCIsInVucmVnaXN0ZXJUcmFuc2Zvcm0iLCJyZWdpc3RlclZhbHVlVHlwZSIsInZhbHVlVHlwZSIsInVucmVnaXN0ZXJWYWx1ZVR5cGUiLCJvbkZpbmlzaFJlZiIsImFwcGx5UGlwZWxpbmUiLCJ2YWx1ZXMiLCJfdXNlRm9ybSIsImZvcm1JbnN0YW5jZSIsImludGVybmFscyIsIndyYXBwZWRIYW5kbGVTdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfYSIsInZhbGlkYXRlZFZhbHVlcyIsInBpcGVsaW5lZCIsInR5cGVkIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwicHJldmVudERlZmF1bHQiLCJ2YWxpZGF0ZUZpZWxkcyIsInNlbnQiLCJlcnJvcnMiLCJmaW5pc2giLCJzdG9wIiwicHJvRm9ybUZvcm1JbnN0YW5jZSIsImFzc2lnbiIsImdldEZpZWxkc0Zvcm1hdFZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkc1JldHVybkZvcm1hdFZhbHVlIiwiX2NhbGxlZTIiLCJ2YWxzIiwiX3QyIiwiX2NvbnRleHQyIiwiYWJydXB0Iiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJyZXF1ZXN0UmVmIiwic2VyaWFsaXplZFBhcmFtcyIsImZldGNoRGF0YSIsIl9jYWxsZWUzIiwicmVxdWVzdEZuIiwiZGF0YSIsIl9jb250ZXh0MyIsIl90eXBlb2YiLCJzZXRGaWVsZHNWYWx1ZSIsInN0YXRlVmFsdWUiLCJ3YXJuaW5ncyIsInRvdWNoZWQiLCJ2YWxpZGF0aW5nIiwic3RhYmxlVmFsdWUiLCJzZXRGaWVsZFZhbHVlIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkV2FybmluZyIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwic3BhbiIsIldyYXBwZXJDb21wb25lbnQiLCJ3cmFwcGVyUHJvcHMiLCJzdWJtaXR0ZXJOb2RlIiwiUHJvdmlkZXIiLCJ1bmRlZmluZWQiLCJvblN1Ym1pdCIsImhhbmRsZVJlc2V0IiwiZGlzcGxheU5hbWUiLCJQcm9Gb3JtIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxL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QUVnRCxTQUFTLENBQUMyRCxXQUFXO1FBQUE5SCxRQUFBLEVBQUEsQ0FFOUI5QixJQUFBLENBQUNzSixnQkFBZ0IsRUFBQWhLLE1BQUEsQ0FBQStILE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBS2tDLFlBQVksRUFBQTtVQUFBekgsUUFBQSxFQUFHQTtRQUFRLENBQUEsQ0FBQSxDQUFvQixFQUNoRTBILGFBQWE7TUFBQSxDQUFBLENBQUE7SUFDVCxDQUFBO0VBQ3NCLENBQUEsQ0FDRDtBQUVwQyxDQUFDO0FBRUQ1SCxXQUFXLENBQUNpSSxXQUFXLEdBQUcsU0FBUztBQVduQyxPQUFPLElBQU1DLE9BQU8sZ0JBQUcxSixJQUFJLENBQUN3QixXQUFXLENBQWdDO0FBRXZFLGVBQWVrSSxPQUFPIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCBGcmFnbWVudCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VMYXRlc3QgZnJvbSAnQDFtb25leS9ob29rcy91c2VMYXRlc3QnO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZU1lbW9pemVkRm4nO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnQDFtb25leS9ob29rcy91c2VFdmVudENhbGxiYWNrJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAnLi9jb3JlL2hvb2tzL3VzZUZvcm0nO1xuaW1wb3J0IHsgUHJvRm9ybVN0YWJsZUNvbnRleHQsIFByb0Zvcm1TdGF0ZUNvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgU3VibWl0dGVyIH0gZnJvbSAnLi9TdWJtaXR0ZXInO1xuaW1wb3J0IHsgQ1NTX1BSRUZJWCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IHN0YWJsZVNlcmlhbGl6ZSwgdHJhbnNmb3JtU3VibWl0VmFsdWVzLCBvbWl0TmlsVmFsdWVzLCBmb3JtYXREYXRlVmFsdWVzIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcyhDU1NfUFJFRklYKTtcbmNvbnN0IGZvcm1DbGFzc2VzID0gY2xhc3NuYW1lcygnZm9ybScpO1xuY29uc3QgUHJvRm9ybUJhc2UgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBjbGFzc05hbWUsIHN1Ym1pdHRlciwgcmVhZG9ubHkgPSBmYWxzZSwgbW9kZTogbW9kZVByb3AsIGdyaWQgPSBmYWxzZSwgY29sUHJvcHMsIHJvd1Byb3BzLCBsb2FkaW5nID0gZmFsc2UsIHJlcXVlc3QsIHBhcmFtcywgaW5pdGlhbFZhbHVlcywgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblZhbHVlc0NoYW5nZSwgb25SZXNldCwgZm9ybVJlZiwgb21pdE5pbCA9IHRydWUsIGRhdGVGb3JtYXR0ZXIgPSAnc3RyaW5nJywgZmllbGRQcm9wcywgZm9ybUl0ZW1Qcm9wcywgc2l6ZSA9ICdtaWRkbGUnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIHByZWZpeENsczogX3ByZWZpeENscyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwic3VibWl0dGVyXCIsIFwicmVhZG9ubHlcIiwgXCJtb2RlXCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJsb2FkaW5nXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImluaXRpYWxWYWx1ZXNcIiwgXCJvbkZpbmlzaFwiLCBcIm9uRmluaXNoRmFpbGVkXCIsIFwib25WYWx1ZXNDaGFuZ2VcIiwgXCJvblJlc2V0XCIsIFwiZm9ybVJlZlwiLCBcIm9taXROaWxcIiwgXCJkYXRlRm9ybWF0dGVyXCIsIFwiZmllbGRQcm9wc1wiLCBcImZvcm1JdGVtUHJvcHNcIiwgXCJzaXplXCIsIFwibGFiZWxBbGlnblwiLCBcImRpc2FibGVkXCIsIFwiY29sb25cIiwgXCJyZXF1aXJlZE1hcmtcIiwgXCJ2YWxpZGF0ZVRyaWdnZXJcIiwgXCJwcmVmaXhDbHNcIl0pO1xuICAgIGNvbnN0IG1vZGUgPSBtb2RlUHJvcCAhPT0gbnVsbCAmJiBtb2RlUHJvcCAhPT0gdm9pZCAwID8gbW9kZVByb3AgOiAocmVhZG9ubHkgPyAncmVhZCcgOiAnZWRpdCcpO1xuICAgIGNvbnN0IFtyZXF1ZXN0TG9hZGluZywgc2V0UmVxdWVzdExvYWRpbmddID0gdXNlU2FmZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbc3VibWl0dGluZywgc2V0U3VibWl0dGluZ10gPSB1c2VTYWZlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGlzTG9hZGluZyA9IGxvYWRpbmcgfHwgcmVxdWVzdExvYWRpbmcgfHwgc3VibWl0dGluZztcbiAgICAvLyDilIDilIAgVHJhbnNmb3JtIC8gdmFsdWVUeXBlIHJlZ2lzdHJpZXMg4pSA4pSAXG4gICAgY29uc3QgdHJhbnNmb3JtS2V5UmVmID0gdXNlUmVmKHt9KTtcbiAgICBjb25zdCB2YWx1ZVR5cGVSZWYgPSB1c2VSZWYoe30pO1xuICAgIGNvbnN0IHJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgZm4pID0+IHtcbiAgICAgICAgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV0gPSBmbjtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyVHJhbnNmb3JtID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICBkZWxldGUgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnRbbmFtZV07XG4gICAgfSk7XG4gICAgY29uc3QgcmVnaXN0ZXJWYWx1ZVR5cGUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZVR5cGUpID0+IHtcbiAgICAgICAgdmFsdWVUeXBlUmVmLmN1cnJlbnRbbmFtZV0gPSB2YWx1ZVR5cGU7XG4gICAgfSk7XG4gICAgY29uc3QgdW5yZWdpc3RlclZhbHVlVHlwZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgZGVsZXRlIHZhbHVlVHlwZVJlZi5jdXJyZW50W25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IG9uRmluaXNoUmVmID0gdXNlTGF0ZXN0KG9uRmluaXNoKTtcbiAgICAvLyBTdWJtaXQgcGlwZWxpbmU6IGRhdGVzIOKGkiBmaWVsZCB0cmFuc2Zvcm1zIOKGkiBvbWl0TmlsXG4gICAgY29uc3QgYXBwbHlQaXBlbGluZSA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0ID0gZm9ybWF0RGF0ZVZhbHVlcyh2YWx1ZXMsIGRhdGVGb3JtYXR0ZXIsIHZhbHVlVHlwZVJlZi5jdXJyZW50KTtcbiAgICAgICAgcmVzdWx0ID0gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHJlc3VsdCwgdHJhbnNmb3JtS2V5UmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAob21pdE5pbClcbiAgICAgICAgICAgIHJlc3VsdCA9IG9taXROaWxWYWx1ZXMocmVzdWx0KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9KTtcbiAgICAvLyDilIDilIAgRm9ybSBlbmdpbmUgKHVzZUZvcm0gd2l0aCBhc3luYyB2YWxpZGF0aW9uKSDilIDilIBcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSwgaW50ZXJuYWxzIH0gPSB1c2VGb3JtKHtcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25WYWx1ZXNDaGFuZ2UsXG4gICAgICAgIG9uUmVzZXQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCB8fCBpc0xvYWRpbmcsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KTtcbiAgICAvLyDilIDilIAgQXN5bmMgc3VibWl0IHdpdGggdHJhbnNmb3JtIHBpcGVsaW5lIOKUgOKUgFxuICAgIGNvbnN0IHdyYXBwZWRIYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgc2V0U3VibWl0dGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFZhbHVlcyA9IHlpZWxkIGZvcm1JbnN0YW5jZS52YWxpZGF0ZUZpZWxkcygpO1xuICAgICAgICAgICAgY29uc3QgcGlwZWxpbmVkID0gYXBwbHlQaXBlbGluZSh2YWxpZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgeWllbGQgKChfYSA9IG9uRmluaXNoUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5jYWxsKG9uRmluaXNoUmVmLCBwaXBlbGluZWQpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlZCA9IGVycjtcbiAgICAgICAgICAgIG9uRmluaXNoRmFpbGVkID09PSBudWxsIHx8IG9uRmluaXNoRmFpbGVkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaEZhaWxlZCh7IHZhbHVlczogdHlwZWQudmFsdWVzLCBlcnJvcnM6IHR5cGVkLmVycm9ycyB9KTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldFN1Ym1pdHRpbmcoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIC8vIOKUgOKUgCBQcm9Gb3JtIGluc3RhbmNlOiBzdXBlcnNldCBvZiBGb3JtSW5zdGFuY2Ug4pSA4pSAXG4gICAgY29uc3QgcHJvRm9ybUZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgZm9ybUluc3RhbmNlKSwgeyBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gYXBwbHlQaXBlbGluZShmb3JtSW5zdGFuY2UuZ2V0RmllbGRzVmFsdWUoKSksIHZhbGlkYXRlRmllbGRzUmV0dXJuRm9ybWF0VmFsdWU6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCB2YWxzID0geWllbGQgZm9ybUluc3RhbmNlLnZhbGlkYXRlRmllbGRzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzOiBhcHBseVBpcGVsaW5lKHZhbHMpIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBzdWNjZXNzOiBmYWxzZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSwgc3VibWl0Rm9ybTogd3JhcHBlZEhhbmRsZVN1Ym1pdCB9KSksIFtmb3JtSW5zdGFuY2UsIGFwcGx5UGlwZWxpbmUsIHdyYXBwZWRIYW5kbGVTdWJtaXRdKTtcbiAgICAvLyDilIDilIAgU3luYyB0byBmb3JtUmVmIHByb3Ag4pSA4pSAXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGZvcm1SZWYpIHtcbiAgICAgICAgICAgIGZvcm1SZWYuY3VycmVudCA9IHByb0Zvcm1Gb3JtSW5zdGFuY2U7XG4gICAgICAgIH1cbiAgICB9LCBbZm9ybVJlZiwgcHJvRm9ybUZvcm1JbnN0YW5jZV0pO1xuICAgIC8vIOKUgOKUgCByZXF1ZXN0IC8gcGFyYW1zIGF1dG8tbG9hZCDilIDilIBcbiAgICBjb25zdCByZXF1ZXN0UmVmID0gdXNlTGF0ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IHNlcmlhbGl6ZWRQYXJhbXMgPSB1c2VNZW1vKCgpID0+IHN0YWJsZVNlcmlhbGl6ZShwYXJhbXMpLCBbcGFyYW1zXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hEYXRhID0gKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0Rm4gPSByZXF1ZXN0UmVmLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAoIXJlcXVlc3RGbilcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBzZXRSZXF1ZXN0TG9hZGluZyh0cnVlKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IHlpZWxkIHJlcXVlc3RGbihwYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICBmb3JtSW5zdGFuY2Uuc2V0RmllbGRzVmFsdWUoZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWVzdExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHJlcXVlc3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgZmV0Y2hEYXRhKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmUtZmV0Y2ggT05MWSB3aGVuIHBhcmFtcyBjaGFuZ2UgYnkgVkFMVUU6IGRlcGVuZGluZyBvbiB0aGUgcmF3IGBwYXJhbXNgXG4gICAgICAgIC8vIHJlZmVyZW5jZSB3b3VsZCByZS1ydW4gb24gZXZlcnkgcmVuZGVyIGZvciBpbmxpbmUgb2JqZWN0IGxpdGVyYWxzIGFuZCxcbiAgICAgICAgLy8gY29tYmluZWQgd2l0aCB0aGUgbG9hZGluZyBzZXRTdGF0ZSwgbG9vcCBmb3JldmVyLlxuICAgIH0sIFtzZXJpYWxpemVkUGFyYW1zXSk7XG4gICAgLy8g4pSA4pSAIFNwbGl0IGNvbnRleHQg4pSA4pSAXG4gICAgLy8gVm9sYXRpbGUgc2xpY2U6IGNoYW5nZXMgb24gZXZlcnkgdmFsdWUvZXJyb3IgdXBkYXRlIChwZXIga2V5c3Ryb2tlKS5cbiAgICBjb25zdCBzdGF0ZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICB2YWx1ZXM6IGludGVybmFscy52YWx1ZXMsXG4gICAgICAgIGVycm9yczogaW50ZXJuYWxzLmVycm9ycyxcbiAgICAgICAgd2FybmluZ3M6IGludGVybmFscy53YXJuaW5ncyxcbiAgICAgICAgdG91Y2hlZDogaW50ZXJuYWxzLnRvdWNoZWQsXG4gICAgICAgIHZhbGlkYXRpbmc6IGludGVybmFscy52YWxpZGF0aW5nLFxuICAgIH0pLCBbXG4gICAgICAgIGludGVybmFscy52YWx1ZXMsXG4gICAgICAgIGludGVybmFscy5lcnJvcnMsXG4gICAgICAgIGludGVybmFscy53YXJuaW5ncyxcbiAgICAgICAgaW50ZXJuYWxzLnRvdWNoZWQsXG4gICAgICAgIGludGVybmFscy52YWxpZGF0aW5nLFxuICAgIF0pO1xuICAgIC8vIFN0YWJsZSBzbGljZTogY29uZmlndXJhdGlvbiArIGlkZW50aXR5LXN0YWJsZSBkaXNwYXRjaGVycy9pbnN0YW5jZS5cbiAgICAvLyBDaGFuZ2VzIG9ubHkgd2hlbiBmb3JtLWxldmVsIHByb3BzIGNoYW5nZSDigJQgTk9UIG9uIGtleXN0cm9rZXMsIHNvXG4gICAgLy8gc3Vic2NyaWJlcnMgbGlrZSBTdWJtaXR0ZXIgYW5kIHRoZSBmaWVsZCBmYWN0b3JpZXMgc2tpcCB0aG9zZSByZW5kZXJzLlxuICAgIGNvbnN0IHN0YWJsZVZhbHVlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBmb3JtSW5zdGFuY2U6IHByb0Zvcm1Gb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWU6IGludGVybmFscy5zZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yOiBpbnRlcm5hbHMuc2V0RmllbGRFcnJvcixcbiAgICAgICAgc2V0RmllbGRXYXJuaW5nOiBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZEFzeW5jOiBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZEFzeW5jLFxuICAgICAgICByZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkOiBpbnRlcm5hbHMudW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQgfHwgaXNMb2FkaW5nLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgICAgIC8vIFByb0Zvcm0gc3BlY2lmaWNzXG4gICAgICAgIHJlYWRvbmx5LFxuICAgICAgICBtb2RlLFxuICAgICAgICBncmlkLFxuICAgICAgICBjb2xQcm9wczogY29sUHJvcHMgIT09IG51bGwgJiYgY29sUHJvcHMgIT09IHZvaWQgMCA/IGNvbFByb3BzIDogeyBzcGFuOiAyNCB9LFxuICAgICAgICByZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgdW5yZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgcmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIHVucmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIGZpZWxkUHJvcHMsXG4gICAgICAgIGZvcm1JdGVtUHJvcHMsXG4gICAgfSksIFtcbiAgICAgICAgcHJvRm9ybUZvcm1JbnN0YW5jZSxcbiAgICAgICAgaW50ZXJuYWxzLnNldEZpZWxkVmFsdWUsXG4gICAgICAgIGludGVybmFscy5zZXRGaWVsZEVycm9yLFxuICAgICAgICBpbnRlcm5hbHMuc2V0RmllbGRXYXJuaW5nLFxuICAgICAgICBpbnRlcm5hbHMudmFsaWRhdGVGaWVsZCxcbiAgICAgICAgaW50ZXJuYWxzLnZhbGlkYXRlRmllbGRBc3luYyxcbiAgICAgICAgaW50ZXJuYWxzLnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGludGVybmFscy51bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBpc0xvYWRpbmcsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICAgICAgcmVhZG9ubHksXG4gICAgICAgIG1vZGUsXG4gICAgICAgIGdyaWQsXG4gICAgICAgIGNvbFByb3BzLFxuICAgICAgICByZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgdW5yZWdpc3RlclRyYW5zZm9ybSxcbiAgICAgICAgcmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIHVucmVnaXN0ZXJWYWx1ZVR5cGUsXG4gICAgICAgIGZpZWxkUHJvcHMsXG4gICAgICAgIGZvcm1JdGVtUHJvcHMsXG4gICAgXSk7XG4gICAgY29uc3QgV3JhcHBlckNvbXBvbmVudCA9IGdyaWQgPyBSb3cgOiBGcmFnbWVudDtcbiAgICBjb25zdCB3cmFwcGVyUHJvcHMgPSBncmlkID8gT2JqZWN0LmFzc2lnbih7fSwgcm93UHJvcHMpIDoge307XG4gICAgY29uc3Qgc3VibWl0dGVyTm9kZSA9IHN1Ym1pdHRlciAhPT0gZmFsc2UgJiYgbW9kZSAhPT0gJ3JlYWQnID8gKF9qc3goU3VibWl0dGVyLCBPYmplY3QuYXNzaWduKHt9LCAodHlwZW9mIHN1Ym1pdHRlciA9PT0gJ29iamVjdCcgPyBzdWJtaXR0ZXIgOiB7fSksIHsgbG9hZGluZzogaXNMb2FkaW5nIH0pKSkgOiBudWxsO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtU3RhYmxlQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogc3RhYmxlVmFsdWUsIGNoaWxkcmVuOiBfanN4KFByb0Zvcm1TdGF0ZUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IHN0YXRlVmFsdWUsIGNoaWxkcmVuOiBfanN4cyhcImZvcm1cIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyBjbGFzc05hbWU6IGZvcm1DbGFzc2VzKHVuZGVmaW5lZCwgam9pbkNscyhjbGFzc2VzKCksIGNsYXNzTmFtZSkpLCBvblN1Ym1pdDogd3JhcHBlZEhhbmRsZVN1Ym1pdCwgb25SZXNldDogaW50ZXJuYWxzLmhhbmRsZVJlc2V0LCBjaGlsZHJlbjogW19qc3goV3JhcHBlckNvbXBvbmVudCwgT2JqZWN0LmFzc2lnbih7fSwgd3JhcHBlclByb3BzLCB7IGNoaWxkcmVuOiBjaGlsZHJlbiB9KSksIHN1Ym1pdHRlck5vZGVdIH0pKSB9KSB9KSk7XG59O1xuUHJvRm9ybUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybSc7XG5leHBvcnQgY29uc3QgUHJvRm9ybSA9IG1lbW8oUHJvRm9ybUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -96,6 +96,9 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
96
96
  getFieldError: function getFieldError() {
97
97
  return undefined;
98
98
  },
99
+ getFieldWarning: function getFieldWarning() {
100
+ return undefined;
101
+ },
99
102
  getFieldsError: function getFieldsError() {
100
103
  return {};
101
104
  },
@@ -157,4 +160,4 @@ var ProFormDependencyBase = function ProFormDependencyBase(_ref) {
157
160
  ProFormDependencyBase.displayName = 'ProFormDependency';
158
161
  export var ProFormDependency = /*#__PURE__*/memo(ProFormDependencyBase);
159
162
  export default ProFormDependency;
160
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJtZW1vIiwidXNlTWVtbyIsInVzZVByb0Zvcm1Db250ZXh0IiwidXNlRm9ybUxpc3RDb250ZXh0IiwiZ2V0TmVzdGVkVmFsdWUiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtQ29udGV4dCIsInZhbHVlcyIsImZvcm1JbnN0YW5jZSIsImZvcm1MaXN0Q3R4IiwicmVzb2x2ZWRQYXRocyIsInNob3VsZFByZWZpeCIsImxpc3ROYW1lIiwidW5kZWZpbmVkIiwibWFwIiwiZmllbGROYW1lIiwiY29uY2F0Iiwid2F0Y2hlZFZhbHVlcyIsImkiLCJsZW5ndGgiLCJvcmlnaW5hbE5hbWUiLCJyZXNvbHZlZFBhdGgiLCJpbmNsdWRlcyIsImZhbGxiYWNrSW5zdGFuY2UiLCJzdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic3RvcCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRWYWx1ZSIsIm4iLCJnZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJnZXRGaWVsZEVycm9yIiwiZ2V0RmllbGRzRXJyb3IiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkc0Vycm9yIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImRlZmluZUZpZWxkIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsImdldEZpZWxkc0Zvcm1hdFZhbHVlIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtRQUFFSixNQUFNLENBQUNJLENB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R0FBWkEsWUFBWSxHQUFJZSxnQkFBZ0I7RUFBQyxDQUFBLENBQUk7QUFDekUsQ0FBQztBQUVEdEIscUJBQXFCLENBQUM2RCxXQUFXLEdBQUcsbUJBQW1CO0FBRXZELE9BQU8sSUFBTUMsaUJBQWlCLGdCQUFHbkUsSUFBSSxDQUFDSyxxQkFBcUIsQ0FBQztBQUU1RCxlQUFlOEQsaUJBQWlCIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJlYWN0LCB7IG1lbW8sIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtQ29udGV4dCwgdXNlRm9ybUxpc3RDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IGdldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi91dGlscyc7XG5jb25zdCBQcm9Gb3JtRGVwZW5kZW5jeUJhc2UgPSAoeyBuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBjaGlsZHJlbiwgfSkgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWVzLCBmb3JtSW5zdGFuY2UgfSA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgZm9ybUxpc3RDdHggPSB1c2VGb3JtTGlzdENvbnRleHQoKTtcbiAgICAvLyBSZXNvbHZlIHRoZSBhY3R1YWwgcGF0aHMgdG8gd2F0Y2gsIGNvbnNpZGVyaW5nIEZvcm1MaXN0IHNjb3BlXG4gICAgY29uc3QgcmVzb2x2ZWRQYXRocyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG91bGRQcmVmaXggPSAhaWdub3JlRm9ybUxpc3RGaWVsZCAmJiBmb3JtTGlzdEN0eC5saXN0TmFtZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICByZXR1cm4gbmFtZS5tYXAoKGZpZWxkTmFtZSkgPT4gc2hvdWxkUHJlZml4ID8gYCR7Zm9ybUxpc3RDdHgubGlzdE5hbWV9LiR7ZmllbGROYW1lfWAgOiBmaWVsZE5hbWUpO1xuICAgIH0sIFtuYW1lLCBpZ25vcmVGb3JtTGlzdEZpZWxkLCBmb3JtTGlzdEN0eC5saXN0TmFtZV0pO1xuICAgIGNvbnN0IHdhdGNoZWRWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxOYW1lID0gbmFtZVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVkUGF0aHNbaV07XG4gICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIG5hbWUgYXMga2V5IHNvIGNoaWxkcmVuIGdldCBjbGVhbiBrZXlzXG4gICAgICAgICAgICByZXN1bHRbb3JpZ2luYWxOYW1lXSA9IHJlc29sdmVkUGF0aC5pbmNsdWRlcygnLicpXG4gICAgICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIHJlc29sdmVkUGF0aClcbiAgICAgICAgICAgICAgICA6IHZhbHVlc1tyZXNvbHZlZFBhdGhdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSwgW25hbWUsIHJlc29sdmVkUGF0aHMsIHZhbHVlc10pO1xuICAgIC8vIEZhbGxiYWNrIGZvcm0gaW5zdGFuY2UgZm9yIHN0YW5kYWxvbmUgdXNhZ2UgKG91dHNpZGUgUHJvRm9ybSlcbiAgICBjb25zdCBmYWxsYmFja0luc3RhbmNlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICBzdWJtaXQ6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9KSxcbiAgICAgICAgcmVzZXRGaWVsZHM6ICgpID0+IHsgfSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZTogKG4pID0+IG4uaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgbikgOiB2YWx1ZXNbbl0sXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlOiAoKSA9PiB2YWx1ZXMsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkVmFsdWU6ICgpID0+IHsgfSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHM6ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyByZXR1cm4gdmFsdWVzOyB9KSxcbiAgICAgICAgZ2V0RmllbGRFcnJvcjogKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgICBnZXRGaWVsZHNFcnJvcjogKCkgPT4gKHt9KSxcbiAgICAgICAgaXNGaWVsZFRvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkc1RvdWNoZWQ6ICgpID0+IGZhbHNlLFxuICAgICAgICBpc0ZpZWxkVmFsaWRhdGluZzogKCkgPT4gZmFsc2UsXG4gICAgICAgIHNldEZpZWxkRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRzRXJyb3I6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRUb3VjaGVkOiAoKSA9PiB7IH0sXG4gICAgICAgIHNldEZpZWxkc1RvdWNoZWQ6ICgpID0+IHsgfSxcbiAgICAgICAgZGVmaW5lRmllbGQ6ICgpID0+ICgoKSA9PiBudWxsKSxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZDogKCkgPT4geyB9LFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQ6ICgpID0+IHsgfSxcbiAgICAgICAgZ2V0RmllbGRzRm9ybWF0VmFsdWU6ICgpID0+IHZhbHVlcyxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IHJldHVybiAoeyBzdWNjZXNzOiBmYWxzZSB9KTsgfSksXG4gICAgICAgIHN1Ym1pdEZvcm06ICgpID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgeyB9KSxcbiAgICB9KSwgW3ZhbHVlc10pO1xuICAgIHJldHVybiBfanN4KF9GcmFnbWVudCwgeyBjaGlsZHJlbjogY2hpbGRyZW4od2F0Y2hlZFZhbHVlcywgZm9ybUluc3RhbmNlICE9PSBudWxsICYmIGZvcm1JbnN0YW5jZSAhPT0gdm9pZCAwID8gZm9ybUluc3RhbmNlIDogZmFsbGJhY2tJbnN0YW5jZSkgfSk7XG59O1xuUHJvRm9ybURlcGVuZGVuY3lCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EZXBlbmRlbmN5JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGVwZW5kZW5jeSA9IG1lbW8oUHJvRm9ybURlcGVuZGVuY3lCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EZXBlbmRlbmN5OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
163
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJ2YWx1ZSIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsIm5leHQiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwiUmVhY3QiLCJtZW1vIiwidXNlTWVtbyIsInVzZVByb0Zvcm1Db250ZXh0IiwidXNlRm9ybUxpc3RDb250ZXh0IiwiZ2V0TmVzdGVkVmFsdWUiLCJQcm9Gb3JtRGVwZW5kZW5jeUJhc2UiLCJfcmVmIiwibmFtZSIsImlnbm9yZUZvcm1MaXN0RmllbGQiLCJjaGlsZHJlbiIsIl91c2VQcm9Gb3JtQ29udGV4dCIsInZhbHVlcyIsImZvcm1JbnN0YW5jZSIsImZvcm1MaXN0Q3R4IiwicmVzb2x2ZWRQYXRocyIsInNob3VsZFByZWZpeCIsImxpc3ROYW1lIiwidW5kZWZpbmVkIiwibWFwIiwiZmllbGROYW1lIiwiY29uY2F0Iiwid2F0Y2hlZFZhbHVlcyIsImkiLCJsZW5ndGgiLCJvcmlnaW5hbE5hbWUiLCJyZXNvbHZlZFBhdGgiLCJpbmNsdWRlcyIsImZhbGxiYWNrSW5zdGFuY2UiLCJzdWJtaXQiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwiYWJydXB0Iiwic3RvcCIsInJlc2V0RmllbGRzIiwiZ2V0RmllbGRWYWx1ZSIsIm4iLCJnZXRGaWVsZHNWYWx1ZSIsInNldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGRzIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJnZXRGaWVsZEVycm9yIiwiZ2V0RmllbGRXYXJuaW5nIiwiZ2V0RmllbGRzRXJyb3IiLCJpc0ZpZWxkVG91Y2hlZCIsImlzRmllbGRzVG91Y2hlZCIsImlzRmllbGRWYWxpZGF0aW5nIiwic2V0RmllbGRFcnJvciIsInNldEZpZWxkc0Vycm9yIiwic2V0RmllbGRUb3VjaGVkIiwic2V0RmllbGRzVG91Y2hlZCIsImRlZmluZUZpZWxkIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsImdldEZpZWxkc0Zvcm1hdFZhbHVlIiwidmFsaWRhdGVGaWVsZHNSZXR1cm5Gb3JtYXRWYWx1ZSIsIl9jYWxsZWUzIiwiX2NvbnRleHQzIiwic3VjY2VzcyIsInN1Ym1pdEZvcm0iLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImRpc3BsYXlOYW1lIiwiUHJvRm9ybURlcGVuZGVuY3kiXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFJQSxTQUFTLEdBQUksSUFBSSxJQUFJLElBQUksQ0FBQ0EsU0FBUyxJQUFLLFVBQVVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFQyxDQUFDLEVBQUVDLFNBQVMsRUFBRTtFQUNyRixTQUFTQyxLQUFLQSxDQUFDQyxLQUFLLEVBQUU7SUFBRSxPQUFPQSxLQUFLLFlBQVlILENBQUMsR0FBR0csS0FBSyxHQUFHLElBQUlILENBQUMsQ0FBQyxVQUFVSSxPQUFPLEVBQUU7TUFBRUEsT0FBTyxDQUFDRCxLQUFLLENBQUM7SUFBRSxDQUFDLENBQUM7RUFBRTtFQUMzRyxPQUFPLEtBQUtILENBQUMsS0FBS0EsQ0FBQyxHQUFHSyxPQUFPLENBQUMsRUFBRSxVQUFVRCxPQUFPLEVBQUVFLE1BQU0sRUFBRTtJQUN2RCxTQUFTQyxTQUFTQSxDQUFDSixLQUFLLEVBQUU7TUFBRSxJQUFJO1FBQUVLLElBQUksQ0FBQ1AsU0FBUyxDQUFDUSxJQUFJLENBQUNOLEtBQUssQ0FBQyxDQUFDO01BQUUsQ0FBQyxDQUFDLE9BQU9PLENBQUMsRUFBRTtR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YSxRQUFBLEVBQUdBLFFBQVEsQ0FBQ1ksYUFBYSxFQUFFVCxZQUFZLEtBQUEsSUFBQSxJQUFaQSxZQUFZLEtBQUEsS0FBQSxDQUFBLEdBQVpBLFlBQVksR0FBSWUsZ0JBQWdCO0VBQUMsQ0FBQSxDQUFJO0FBQ3pFLENBQUM7QUFFRHRCLHFCQUFxQixDQUFDOEQsV0FBVyxHQUFHLG1CQUFtQjtBQUV2RCxPQUFPLElBQU1DLGlCQUFpQixnQkFBR3BFLElBQUksQ0FBQ0sscUJBQXFCLENBQUM7QUFFNUQsZUFBZStELGlCQUFpQiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vUHJvRm9ybURlcGVuZGVuY3kuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IEZyYWdtZW50IGFzIF9GcmFnbWVudCwganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlUHJvRm9ybUNvbnRleHQsIHVzZUZvcm1MaXN0Q29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgeyBnZXROZXN0ZWRWYWx1ZSB9IGZyb20gJy4vdXRpbHMnO1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHsgbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgY2hpbGRyZW4sIH0pID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcywgZm9ybUluc3RhbmNlIH0gPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IGZvcm1MaXN0Q3R4ID0gdXNlRm9ybUxpc3RDb250ZXh0KCk7XG4gICAgLy8gUmVzb2x2ZSB0aGUgYWN0dWFsIHBhdGhzIHRvIHdhdGNoLCBjb25zaWRlcmluZyBGb3JtTGlzdCBzY29wZVxuICAgIGNvbnN0IHJlc29sdmVkUGF0aHMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2hvdWxkUHJlZml4ID0gIWlnbm9yZUZvcm1MaXN0RmllbGQgJiYgZm9ybUxpc3RDdHgubGlzdE5hbWUgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgcmV0dXJuIG5hbWUubWFwKChmaWVsZE5hbWUpID0+IHNob3VsZFByZWZpeCA/IGAke2Zvcm1MaXN0Q3R4Lmxpc3ROYW1lfS4ke2ZpZWxkTmFtZX1gIDogZmllbGROYW1lKTtcbiAgICB9LCBbbmFtZSwgaWdub3JlRm9ybUxpc3RGaWVsZCwgZm9ybUxpc3RDdHgubGlzdE5hbWVdKTtcbiAgICBjb25zdCB3YXRjaGVkVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsTmFtZSA9IG5hbWVbaV07XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlZFBhdGhzW2ldO1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBuYW1lIGFzIGtleSBzbyBjaGlsZHJlbiBnZXQgY2xlYW4ga2V5c1xuICAgICAgICAgICAgcmVzdWx0W29yaWdpbmFsTmFtZV0gPSByZXNvbHZlZFBhdGguaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCByZXNvbHZlZFBhdGgpXG4gICAgICAgICAgICAgICAgOiB2YWx1ZXNbcmVzb2x2ZWRQYXRoXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtuYW1lLCByZXNvbHZlZFBhdGhzLCB2YWx1ZXNdKTtcbiAgICAvLyBGYWxsYmFjayBmb3JtIGluc3RhbmNlIGZvciBzdGFuZGFsb25lIHVzYWdlIChvdXRzaWRlIFByb0Zvcm0pXG4gICAgY29uc3QgZmFsbGJhY2tJbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgc3VibWl0OiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfSksXG4gICAgICAgIHJlc2V0RmllbGRzOiAoKSA9PiB7IH0sXG4gICAgICAgIGdldEZpZWxkVmFsdWU6IChuKSA9PiBuLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG4pIDogdmFsdWVzW25dLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZTogKCkgPT4gdmFsdWVzLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZTogKCkgPT4geyB9LFxuICAgICAgICBzZXRGaWVsZFZhbHVlOiAoKSA9PiB7IH0sXG4gICAgICAgIHZhbGlkYXRlRmllbGRzOiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgcmV0dXJuIHZhbHVlczsgfSksXG4gICAgICAgIGdldEZpZWxkRXJyb3I6ICgpID0+IHVuZGVmaW5lZCxcbiAgICAgICAgZ2V0RmllbGRXYXJuaW5nOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgICAgIGdldEZpZWxkc0Vycm9yOiAoKSA9PiAoe30pLFxuICAgICAgICBpc0ZpZWxkVG91Y2hlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgIGlzRmllbGRzVG91Y2hlZDogKCkgPT4gZmFsc2UsXG4gICAgICAgIGlzRmllbGRWYWxpZGF0aW5nOiAoKSA9PiBmYWxzZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcjogKCkgPT4geyB9LFxuICAgICAgICBzZXRGaWVsZHNFcnJvcjogKCkgPT4geyB9LFxuICAgICAgICBzZXRGaWVsZFRvdWNoZWQ6ICgpID0+IHsgfSxcbiAgICAgICAgc2V0RmllbGRzVG91Y2hlZDogKCkgPT4geyB9LFxuICAgICAgICBkZWZpbmVGaWVsZDogKCkgPT4gKCgpID0+IG51bGwpLFxuICAgICAgICByZWdpc3RlckZpZWxkOiAoKSA9PiB7IH0sXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZDogKCkgPT4geyB9LFxuICAgICAgICBnZXRGaWVsZHNGb3JtYXRWYWx1ZTogKCkgPT4gdmFsdWVzLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkc1JldHVybkZvcm1hdFZhbHVlOiAoKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsgcmV0dXJuICh7IHN1Y2Nlc3M6IGZhbHNlIH0pOyB9KSxcbiAgICAgICAgc3VibWl0Rm9ybTogKCkgPT4gX19hd2FpdGVyKHZvaWQgMCwgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7IH0pLFxuICAgIH0pLCBbdmFsdWVzXSk7XG4gICAgcmV0dXJuIF9qc3goX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBjaGlsZHJlbih3YXRjaGVkVmFsdWVzLCBmb3JtSW5zdGFuY2UgIT09IG51bGwgJiYgZm9ybUluc3RhbmNlICE9PSB2b2lkIDAgPyBmb3JtSW5zdGFuY2UgOiBmYWxsYmFja0luc3RhbmNlKSB9KTtcbn07XG5Qcm9Gb3JtRGVwZW5kZW5jeUJhc2UuZGlzcGxheU5hbWUgPSAnUHJvRm9ybURlcGVuZGVuY3knO1xuZXhwb3J0IGNvbnN0IFByb0Zvcm1EZXBlbmRlbmN5ID0gbWVtbyhQcm9Gb3JtRGVwZW5kZW5jeUJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybURlcGVuZGVuY3k7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9