@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.
- package/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +55 -22
- package/es/components/ProForm/ProFormDependency.js +4 -1
- package/es/components/ProForm/ProFormItem.js +73 -36
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +12 -2
- package/es/components/ProForm/context.d.ts +22 -3
- package/es/components/ProForm/context.js +49 -10
- package/es/components/ProForm/core/constants.d.ts +2 -1
- package/es/components/ProForm/core/constants.js +3 -6
- package/es/components/ProForm/core/hooks/useForm.js +155 -131
- package/es/components/ProForm/core/hooks/useFormCore.js +73 -39
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/runRules.d.ts +16 -6
- package/es/components/ProForm/core/runRules.js +94 -47
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +101 -39
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/createProFormField.js +50 -31
- package/es/components/ProForm/index.d.ts +11 -4
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +89 -14
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +2 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +77 -12
- package/es/components/ProForm/style/ProForm.css +6 -0
- package/es/components/ProForm/utils.d.ts +12 -1
- package/es/components/ProForm/utils.js +70 -21
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +53 -20
- package/lib/components/ProForm/ProFormDependency.js +4 -1
- package/lib/components/ProForm/ProFormItem.js +72 -34
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +12 -2
- package/lib/components/ProForm/context.d.ts +22 -3
- package/lib/components/ProForm/context.js +49 -10
- package/lib/components/ProForm/core/constants.d.ts +2 -1
- package/lib/components/ProForm/core/constants.js +4 -7
- package/lib/components/ProForm/core/hooks/useForm.js +154 -130
- package/lib/components/ProForm/core/hooks/useFormCore.js +72 -38
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/runRules.d.ts +16 -6
- package/lib/components/ProForm/core/runRules.js +95 -47
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +100 -38
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/createProFormField.js +50 -31
- package/lib/components/ProForm/index.d.ts +11 -4
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +89 -14
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +77 -12
- package/lib/components/ProForm/style/ProForm.css +6 -0
- package/lib/components/ProForm/utils.d.ts +12 -1
- package/lib/components/ProForm/utils.js +73 -21
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +1 -1
- package/scripts/mcp-server/examples.generated.json +54 -0
- package/scripts/mcp-server/index.generated.json +1212 -80
|
@@ -37,20 +37,32 @@ function getUrlParams() {
|
|
|
37
37
|
});
|
|
38
38
|
return params;
|
|
39
39
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
/**
|
|
41
|
+
* Write the filter values into the URL while PRESERVING unrelated query params
|
|
42
|
+
* (e.g. `?tab=...`). Only keys previously written by this filter (tracked in
|
|
43
|
+
* `managedKeys`) are cleared before writing, so reset removes exactly what the
|
|
44
|
+
* filter added. Returns the new set of managed keys.
|
|
45
|
+
*/
|
|
46
|
+
function setUrlParams(params, managedKeys) {
|
|
47
|
+
if (typeof window === 'undefined') return new Set(managedKeys);
|
|
48
|
+
var sp = new URLSearchParams(window.location.search);
|
|
49
|
+
managedKeys.forEach(function (k) {
|
|
50
|
+
return sp["delete"](k);
|
|
51
|
+
});
|
|
52
|
+
var written = new Set();
|
|
43
53
|
for (var _i = 0, _Object$entries = Object.entries(params); _i < _Object$entries.length; _i++) {
|
|
44
54
|
var _Object$entries$_i = (0, _slicedToArray2["default"])(_Object$entries[_i], 2),
|
|
45
55
|
k = _Object$entries$_i[0],
|
|
46
56
|
v = _Object$entries$_i[1];
|
|
47
57
|
if (v !== null && v !== undefined && v !== '') {
|
|
48
58
|
sp.set(k, String(v));
|
|
59
|
+
written.add(k);
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
62
|
var search = sp.toString();
|
|
52
63
|
var url = search ? "".concat(window.location.pathname, "?").concat(search) : window.location.pathname;
|
|
53
64
|
window.history.replaceState(null, '', url);
|
|
65
|
+
return written;
|
|
54
66
|
}
|
|
55
67
|
// ---------------------------------------------------------------------------
|
|
56
68
|
// QueryFilter
|
|
@@ -80,27 +92,79 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
80
92
|
collapsed = _useControlledState2[0],
|
|
81
93
|
setCollapsed = _useControlledState2[1];
|
|
82
94
|
// ── syncToUrl: merge URL params into initial values on mount ──
|
|
83
|
-
|
|
95
|
+
// One-time snapshot of the URL params at mount. Lazy ref init is IDEMPOTENT,
|
|
96
|
+
// so it is safe under StrictMode's double render (an impure "first run" flag
|
|
97
|
+
// inside useMemo would return the unmerged value on the replay invocation).
|
|
98
|
+
var urlParamsAtMountRef = (0, _react.useRef)(null);
|
|
99
|
+
if (urlParamsAtMountRef.current === null) {
|
|
100
|
+
urlParamsAtMountRef.current = syncToUrl ? getUrlParams() : {};
|
|
101
|
+
}
|
|
102
|
+
// Keys this filter has WRITTEN to the URL — the only keys submit/reset is
|
|
103
|
+
// allowed to clear. The function form of syncToUrl also seeds this from its
|
|
104
|
+
// filtered 'get' result (those keys are the filter's own by definition).
|
|
105
|
+
var managedKeysRef = (0, _react.useRef)(new Set());
|
|
106
|
+
// Boolean-mode only: URL params merged into initialValues but NOT yet
|
|
107
|
+
// claimed. The boolean form cannot tell its own params from foreign ones
|
|
108
|
+
// (?tab=…), so a seeded key is claimed only once its value changes (or it
|
|
109
|
+
// disappears from the submitted values, i.e. the user cleared the field).
|
|
110
|
+
var urlSeededRef = (0, _react.useRef)({});
|
|
84
111
|
var initialValues = (0, _react.useMemo)(function () {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
var urlParams =
|
|
112
|
+
var _a;
|
|
113
|
+
if (!syncToUrl) return initialValuesProp;
|
|
114
|
+
var urlParams = (_a = urlParamsAtMountRef.current) !== null && _a !== void 0 ? _a : {};
|
|
88
115
|
if (typeof syncToUrl === 'function') {
|
|
89
|
-
|
|
116
|
+
var fromUrl = syncToUrl(urlParams, 'get');
|
|
117
|
+
// Idempotent ref writes — same input on every invocation.
|
|
118
|
+
managedKeysRef.current = new Set(Object.keys(fromUrl));
|
|
119
|
+
return Object.assign(Object.assign({}, initialValuesProp), fromUrl);
|
|
90
120
|
}
|
|
121
|
+
urlSeededRef.current = Object.assign({}, urlParams);
|
|
91
122
|
return Object.assign(Object.assign({}, initialValuesProp), urlParams);
|
|
92
123
|
}, []);
|
|
93
124
|
var handleSyncSet = (0, _useMemoizedFn["default"])(function (values) {
|
|
94
125
|
if (!syncToUrl) return;
|
|
95
|
-
var toWrite
|
|
96
|
-
|
|
126
|
+
var toWrite;
|
|
127
|
+
var toClear = new Set(managedKeysRef.current);
|
|
128
|
+
if (typeof syncToUrl === 'function') {
|
|
129
|
+
toWrite = syncToUrl(values, 'set');
|
|
130
|
+
} else {
|
|
131
|
+
// Skip URL-seeded keys we never wrote whose value is unchanged — they
|
|
132
|
+
// may belong to someone else (?tab=…); leave them in the URL untouched.
|
|
133
|
+
// A seeded key whose value DID change is claimed from now on.
|
|
134
|
+
toWrite = {};
|
|
135
|
+
for (var _i2 = 0, _Object$entries2 = Object.entries(values); _i2 < _Object$entries2.length; _i2++) {
|
|
136
|
+
var _Object$entries2$_i = (0, _slicedToArray2["default"])(_Object$entries2[_i2], 2),
|
|
137
|
+
key = _Object$entries2$_i[0],
|
|
138
|
+
value = _Object$entries2$_i[1];
|
|
139
|
+
var seeded = urlSeededRef.current[key];
|
|
140
|
+
if (seeded !== undefined && !managedKeysRef.current.has(key) && String(value) === seeded) {
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
delete urlSeededRef.current[key];
|
|
144
|
+
toClear.add(key);
|
|
145
|
+
toWrite[key] = value;
|
|
146
|
+
}
|
|
147
|
+
// Seeded keys missing from the submitted values were cleared by the
|
|
148
|
+
// user (omitNil strips empty values) — claim them and remove their
|
|
149
|
+
// stale params from the URL.
|
|
150
|
+
for (var _i3 = 0, _Object$keys = Object.keys(urlSeededRef.current); _i3 < _Object$keys.length; _i3++) {
|
|
151
|
+
var _key = _Object$keys[_i3];
|
|
152
|
+
if (!(_key in values)) {
|
|
153
|
+
delete urlSeededRef.current[_key];
|
|
154
|
+
toClear.add(_key);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
managedKeysRef.current = setUrlParams(toWrite, toClear);
|
|
97
159
|
});
|
|
98
160
|
var handleFinish = (0, _useMemoizedFn["default"])(function (values) {
|
|
99
161
|
handleSyncSet(values);
|
|
100
162
|
onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
|
|
101
163
|
});
|
|
102
164
|
var handleReset = (0, _useMemoizedFn["default"])(function () {
|
|
103
|
-
if (syncToUrl)
|
|
165
|
+
if (syncToUrl) {
|
|
166
|
+
managedKeysRef.current = setUrlParams({}, managedKeysRef.current);
|
|
167
|
+
}
|
|
104
168
|
onReset === null || onReset === void 0 ? void 0 : onReset();
|
|
105
169
|
});
|
|
106
170
|
var handleCollapse = (0, _useMemoizedFn["default"])(function () {
|
|
@@ -167,6 +231,7 @@ var QueryFilterBase = function QueryFilterBase(props) {
|
|
|
167
231
|
}));
|
|
168
232
|
};
|
|
169
233
|
QueryFilterBase.displayName = 'QueryFilter';
|
|
234
|
+
/** Generic-aware export — keeps `<QueryFilter<MyValues> …>` fully typed. */
|
|
170
235
|
var QueryFilter = exports.QueryFilter = /*#__PURE__*/(0, _react.memo)(QueryFilterBase);
|
|
171
236
|
var _default = exports["default"] = QueryFilter;
|
|
172
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9jbGFzc25hbWVzIiwiX0J1dHRvbiIsIl9Qcm9Gb3JtIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiZ2V0VXJsUGFyYW1zIiwid2luZG93IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJzZWFyY2giLCJmb3JFYWNoIiwidiIsImsiLCJzZXRVcmxQYXJhbXMiLCJzcCIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsInVuZGVmaW5lZCIsIlN0cmluZyIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJzeW5jSW5pdFJlZiIsInVzZVJlZiIsInVzZU1lbW8iLCJjdXJyZW50IiwidXJsUGFyYW1zIiwiYXNzaWduIiwiaGFuZGxlU3luY1NldCIsInVzZU1lbW9pemVkRm4iLCJ2YWx1ZXMiLCJ0b1dyaXRlIiwiaGFuZGxlRmluaXNoIiwiaGFuZGxlUmVzZXQiLCJoYW5kbGVDb2xsYXBzZSIsIm5leHQiLCJjaGlsZEFycmF5IiwiYXJyIiwiUmVhY3QiLCJDaGlsZHJlbiIsImNoaWxkIiwiaXNWYWxpZEVsZW1lbnQiLCJwdXNoIiwidmlzaWJsZUNoaWxkcmVuIiwic2xpY2UiLCJoYXNNb3JlIiwic2VhcmNoVGV4dCIsIkRFRkFVTFRfVEVYVCIsInJlc2V0VGV4dCIsInJlc2V0IiwiYnV0dG9uU2l6ZSIsInNpemUiLCJsYWJlbFN0eWxlIiwid2lkdGgiLCJfanN4IiwiUHJvRm9ybSIsIl9qc3hzIiwiY2xhc3NOYW1lIiwibWFwIiwiaW5kZXgiLCJGcmFnbWVudCIsInN0eWxlIiwiQnV0dG9uIiwidHlwZSIsImNvbG9yIiwib25DbGljayIsInZhcmlhbnQiLCJleHBhbmQiLCJjb2xsYXBzZSIsImRpc3BsYXlOYW1lIiwiUXVlcnlGaWx0ZXIiLCJleHBvcnRzIiwibWVtbyIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFXQSxJQUFBQSxXQUFBLEdBQUFDLE9BQUE7QUNYQSxJQUFBQyxNQUFBLEdBQUFDLHVCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBRyxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQUssY0FBQSxHQUFBRCxzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBRixzQkFBQSxDQUFBSixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsVUFBQSxHQUFBVCxPQUFBO0FBQXdELFNBQUFVLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBVCx3QkFBQVMsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLGdCQUFBSyxPQUFBLENBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9B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QUVsQ0QsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBtZW1vLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlQ29udHJvbGxlZFN0YXRlIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlQ29udHJvbGxlZFN0YXRlJztcbmltcG9ydCB1c2VNZW1vaXplZEZuIGZyb20gJ0AxbW9uZXkvaG9va3MvdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gJy4uLy4uL0J1dHRvbic7XG5pbXBvcnQgeyBQcm9Gb3JtIH0gZnJvbSAnLi4vUHJvRm9ybSc7XG5pbXBvcnQgeyBDU1NfUFJFRklYLCBERUZBVUxUX1RFWFQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke0NTU19QUkVGSVh9LXF1ZXJ5LWZpbHRlcmApO1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVUkwgc3luYyBoZWxwZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGdldFVybFBhcmFtcygpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgIHJldHVybiB7fTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcbiAgICBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpLmZvckVhY2goKHYsIGspID0+IHtcbiAgICAgICAgcGFyYW1zW2tdID0gdjtcbiAgICB9KTtcbiAgICByZXR1cm4gcGFyYW1zO1xufVxuZnVuY3Rpb24gc2V0VXJsUGFyYW1zKHBhcmFtcykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICAgICAgaWYgKHYgIT09IG51bGwgJiYgdiAhPT0gdW5kZWZpbmVkICYmIHYgIT09ICcnKSB7XG4gICAgICAgICAgICBzcC5zZXQoaywgU3RyaW5nKHYpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzZWFyY2ggPSBzcC50b1N0cmluZygpO1xuICAgIGNvbnN0IHVybCA9IHNlYXJjaCA/IGAke3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZX0/JHtzZWFyY2h9YCA6IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIHVybCk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFF1ZXJ5RmlsdGVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFF1ZXJ5RmlsdGVyQmFzZSA9IChwcm9wcykgPT4ge1xuICAgIHZhciBfYSwgX2I7XG4gICAgY29uc3QgeyBkZWZhdWx0Q29sbGFwc2VkID0gdHJ1ZSwgY29sbGFwc2VkOiBjb250cm9sbGVkQ29sbGFwc2VkLCBvbkNvbGxhcHNlLCBkZWZhdWx0Q29sc051bWJlciA9IDMsIGxhYmVsV2lkdGgsIHNwbGl0ID0gZmFsc2UsIHNlYXJjaENvbmZpZywgc3luY1RvVXJsLCBvbkZpbmlzaCwgb25SZXNldCwgY2hpbGRyZW4sIHN1Ym1pdHRlciA9IGZhbHNlLCBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzUHJvcCB9ID0gcHJvcHMsIGZvcm1Qcm9wcyA9IF9fcmVzdChwcm9wcywgW1wiZGVmYXVsdENvbGxhcHNlZFwiLCBcImNvbGxhcHNlZFwiLCBcIm9uQ29sbGFwc2VcIiwgXCJkZWZhdWx0Q29sc051bWJlclwiLCBcImxhYmVsV2lkdGhcIiwgXCJzcGxpdFwiLCBcInNlYXJjaENvbmZpZ1wiLCBcInN5bmNUb1VybFwiLCBcIm9uRmluaXNoXCIsIFwib25SZXNldFwiLCBcImNoaWxkcmVuXCIsIFwic3VibWl0dGVyXCIsIFwiaW5pdGlhbFZhbHVlc1wiXSk7XG4gICAgY29uc3QgW2NvbGxhcHNlZCwgc2V0Q29sbGFwc2VkXSA9IHVzZUNvbnRyb2xsZWRTdGF0ZShkZWZhdWx0Q29sbGFwc2VkLCBjb250cm9sbGVkQ29sbGFwc2VkKTtcbiAgICAvLyDilIDilIAgc3luY1RvVXJsOiBtZXJnZSBVUkwgcGFyYW1zIGludG8gaW5pdGlhbCB2YWx1ZXMgb24gbW91bnQg4pSA4pSAXG4gICAgY29uc3Qgc3luY0luaXRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKCFzeW5jVG9VcmwgfHwgc3luY0luaXRSZWYuY3VycmVudClcbiAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWVzUHJvcDtcbiAgICAgICAgc3luY0luaXRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHVybFBhcmFtcyA9IGdldFVybFBhcmFtcygpO1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCBzeW5jVG9VcmwodXJsUGFyYW1zLCAnZ2V0JykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXNQcm9wKSwgdXJsUGFyYW1zKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU3luY1NldCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIXN5bmNUb1VybClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgdG9Xcml0ZSA9IHR5cGVvZiBzeW5jVG9VcmwgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgID8gc3luY1RvVXJsKHZhbHVlcywgJ3NldCcpXG4gICAgICAgICAgICA6IHZhbHVlcztcbiAgICAgICAgc2V0VXJsUGFyYW1zKHRvV3JpdGUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBoYW5kbGVTeW5jU2V0KHZhbHVlcyk7XG4gICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jVG9VcmwpXG4gICAgICAgICAgICBzZXRVcmxQYXJhbXMoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVDb2xsYXBzZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0ID0gIWNvbGxhcHNlZDtcbiAgICAgICAgc2V0Q29sbGFwc2VkKG5leHQpO1xuICAgICAgICBvbkNvbGxhcHNlID09PSBudWxsIHx8IG9uQ29sbGFwc2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ29sbGFwc2UobmV4dCk7XG4gICAgfSk7XG4gICAgLy8gQ291bnQgY2hpbGRyZW4gYW5kIHNwbGl0IHZpc2libGUvaGlkZGVuXG4gICAgY29uc3QgY2hpbGRBcnJheSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgUmVhY3QuQ2hpbGRyZW4uZm9yRWFjaChjaGlsZHJlbiwgKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICBpZiAoUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgICAgICAgYXJyLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9LCBbY2hpbGRyZW5dKTtcbiAgICBjb25zdCB2aXNpYmxlQ2hpbGRyZW4gPSBjb2xsYXBzZWRcbiAgICAgICAgPyBjaGlsZEFycmF5LnNsaWNlKDAsIGRlZmF1bHRDb2xzTnVtYmVyKVxuICAgICAgICA6IGNoaWxkQXJyYXk7XG4gICAgY29uc3QgaGFzTW9yZSA9IGNoaWxkQXJyYXkubGVuZ3RoID4gZGVmYXVsdENvbHNOdW1iZXI7XG4gICAgY29uc3Qgc2VhcmNoVGV4dCA9IChfYSA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5zZWFyY2hUZXh0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBERUZBVUxUX1RFWFQuc2VhcmNoO1xuICAgIGNvbnN0IHJlc2V0VGV4dCA9IChfYiA9IHNlYXJjaENvbmZpZyA9PT0gbnVsbCB8fCBzZWFyY2hDb25maWcgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNlYXJjaENvbmZpZy5yZXNldFRleHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IERFRkFVTFRfVEVYVC5yZXNldDtcbiAgICBjb25zdCBidXR0b25TaXplID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNpemU7XG4gICAgY29uc3QgbGFiZWxTdHlsZSA9IGxhYmVsV2lkdGggIT09IHVuZGVmaW5lZCAmJiBsYWJlbFdpZHRoICE9PSAnYXV0bydcbiAgICAgICAgPyB7IHdpZHRoOiBsYWJlbFdpZHRoIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIChfanN4KFByb0Zvcm0sIE9iamVjdC5hc3NpZ24oe30sIGZvcm1Qcm9wcywgeyBpbml0aWFsVmFsdWVzOiBpbml0aWFsVmFsdWVzLCBvbkZpbmlzaDogaGFuZGxlRmluaXNoLCBvblJlc2V0OiBoYW5kbGVSZXNldCwgc3VibWl0dGVyOiBmYWxzZSwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCksIGNoaWxkcmVuOiBbdmlzaWJsZUNoaWxkcmVuLm1hcCgoY2hpbGQsIGluZGV4KSA9PiAoX2pzeHMoUmVhY3QuRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtzcGxpdCAmJiBpbmRleCA+IDAgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc3BsaXQnKSB9KSwgbGFiZWxTdHlsZSA/IChfanN4KFwiZGl2XCIsIHsgc3R5bGU6IGxhYmVsU3R5bGUsIGNoaWxkcmVuOiBjaGlsZCB9KSkgOiAoY2hpbGQpXSB9LCBpbmRleCkpKSwgX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2FjdGlvbnMnKSwgY2hpbGRyZW46IFtfanN4KEJ1dHRvbiwgeyB0eXBlOiBcInN1Ym1pdFwiLCBjb2xvcjogXCJwcmltYXJ5XCIsIHNpemU6IGJ1dHRvblNpemUsIGNoaWxkcmVuOiBzZWFyY2hUZXh0IH0pLCBfanN4KEJ1dHRvbiwgeyB0eXBlOiBcImJ1dHRvblwiLCBjb2xvcjogXCJzZWNvbmRhcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgb25DbGljazogaGFuZGxlUmVzZXQsIGNoaWxkcmVuOiByZXNldFRleHQgfSksIGhhc01vcmUgJiYgKF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIHZhcmlhbnQ6IFwidGV4dFwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVDb2xsYXBzZSwgY2hpbGRyZW46IGNvbGxhcHNlZCA/IERFRkFVTFRfVEVYVC5leHBhbmQgOiBERUZBVUxUX1RFWFQuY29sbGFwc2UgfSkpXSB9KV0gfSkgfSkpKTtcbn07XG5RdWVyeUZpbHRlckJhc2UuZGlzcGxheU5hbWUgPSAnUXVlcnlGaWx0ZXInO1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
237
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vbGF5b3V0cy9RdWVyeUZpbHRlci50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfdXNlQ29udHJvbGxlZFN0YXRlMyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfdXNlTWVtb2l6ZWRGbiIsIl9jbGFzc25hbWVzIiwiX0J1dHRvbiIsIl9Qcm9Gb3JtIiwiX2NvbnN0YW50cyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2xhc3NlcyIsImNsYXNzbmFtZXMiLCJjb25jYXQiLCJDU1NfUFJFRklYIiwiZ2V0VXJsUGFyYW1zIiwid2luZG93IiwicGFyYW1zIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb24iLCJzZWFyY2giLCJmb3JFYWNoIiwidiIsImsiLCJzZXRVcmxQYXJhbXMiLCJtYW5hZ2VkS2V5cyIsIlNldCIsInNwIiwid3JpdHRlbiIsIl9pIiwiX09iamVjdCRlbnRyaWVzIiwiZW50cmllcyIsIl9PYmplY3QkZW50cmllcyRfaSIsIl9zbGljZWRUb0FycmF5MiIsInVuZGVmaW5lZCIsIlN0cmluZyIsImFkZCIsInRvU3RyaW5nIiwidXJsIiwicGF0aG5hbWUiLCJoaXN0b3J5IiwicmVwbGFjZVN0YXRlIiwiUXVlcnlGaWx0ZXJCYXNlIiwicHJvcHMiLCJfYSIsIl9iIiwiX3Byb3BzJGRlZmF1bHRDb2xsYXBzIiwiZGVmYXVsdENvbGxhcHNlZCIsImNvbnRyb2xsZWRDb2xsYXBzZWQiLCJjb2xsYXBzZWQiLCJvbkNvbGxhcHNlIiwiX3Byb3BzJGRlZmF1bHRDb2xzTnVtIiwiZGVmYXVsdENvbHNOdW1iZXIiLCJsYWJlbFdpZHRoIiwiX3Byb3BzJHNwbGl0Iiwic3BsaXQiLCJzZWFyY2hDb25maWciLCJzeW5jVG9VcmwiLCJvbkZpbmlzaCIsIm9uUmVzZXQiLCJjaGlsZHJlbiIsIl9wcm9wcyRzdWJtaXR0ZXIiLCJzdWJtaXR0ZXIiLCJpbml0aWFsVmFsdWVzUHJvcCIsImluaXRpYWxWYWx1ZXMiLCJmb3JtUHJvcHMiLCJfdXNlQ29udHJvbGxlZFN0YXRlIiwidXNlQ29udHJvbGxlZFN0YXRlIiwiX3VzZUNvbnRyb2xsZWRTdGF0ZTIiLCJzZXRDb2xsYXBzZWQiLCJ1cmxQYXJhbXNBdE1vdW50UmVmIiwidXNlUmVmIiwiY3VycmVudCIsIm1hbmFnZWRLZXlzUmVmIiwidXJsU2VlZGVkUmVmIiwidXNlTWVtbyIsInVybFBhcmFtcyIsImZyb21VcmwiLCJrZXlzIiwiYXNzaWduIiwiaGFuZGxlU3luY1NldCIsInVzZU1lbW9pemVkRm4iLCJ2YWx1ZXMiLCJ0b1dyaXRlIiwidG9DbGVhciIsIl9pMiIsIl9PYmplY3QkZW50cmllczIiLCJfT2JqZWN0JGVudHJpZXMyJF9pIiwia2V5IiwidmFsdWUiLCJzZWVkZWQiLCJfaTMiLCJfT2JqZWN0JGtleXMiLCJoYW5kbGVGaW5pc2giLCJoYW5kbGVSZXNldCIsImhhbmRsZUNvbGxhcHNlIiwibmV4dCIsImNoaWxkQXJyYXkiLCJhcnIiLCJSZWFjdCIsIkNoaWxkcmVuIiwiY2hpbGQiLCJpc1ZhbGlkRWxlbWVudCIsInB1c2giLCJ2aXNpYmxlQ2hpbGRyZW4iLCJzbGljZSIsImhhc01vcmUiLCJzZWFyY2hUZXh0IiwiREVGQVVMVF9URVhUIiwicmVzZXRUZXh0IiwicmVzZXQiLCJidXR0b25TaXplIiwic2l6ZSIsImxhYmVsU3R5bGUiLCJ3aWR0aCIsIl9qc3giLCJQcm9Gb3JtIiwiX2pzeHMiLCJjbGFzc05hbWUiLCJtYXAiLCJpbmRleCIsIkZyYWdtZW50Iiwic3R5bGUiLCJCdXR0b24iLCJ0eXBlIiwiY29sb3IiLCJvbkNsaWNrIiwidmFyaWFudCIsImV4cGFuZCIsImNvbGxhcHNlIiwiZGlzcGxheU5hbWUiLCJRdWVyeUZpbHRlciIsImV4cG9ydHMiLCJtZW1vIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQVdBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ1hBLElBQUFDLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUYsT0FBQTtBQUVBLElBQUFHLG9CQUFBLEdBQUFDLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFELHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTSxXQUFBLEdBQUFGLHNCQUFBLENBQUFKLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxVQUFBLEdBQUFULE9BQUE7QUFBd0QsU0FBQVUseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLENBQUEsV0FBQUEsQ0FBQSxHQUFBRyxDQUFBLEdBQUFELENBQUEsS0FBQUYsQ0FBQTtBQUFBLFNBQUFULHdCQUFBUyxDQUFBLEVBQUFFLENBQUEsU0FBQUEsQ0FBQSxJQUFBRixDQUFBLElBQUFBLENBQUEsQ0FBQUksVUFBQSxTQUFBSixDQUFBLGVBQUFBLENBQUEsZ0JBQUFLLE9BQUEsQ0FBQUwsQ0FBQSwwQkFBQUEsQ0FBQSxzQkFBQUEsQ0FBQSxRQUFBRyxDQUFBLEdBQUFKLHdCQUFBLENBQUFHLENB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QUFDLE1BQU07VUFBQ2YsSUFBSSxFQUFFRCxVQUFVO1VBQUVlLE9BQU8sRUFBRS9CLGNBQWM7VUFBQW5DLFFBQUEsRUFDM0VYLFNBQVMsR0FBRzJELHVCQUFZLENBQUNvQixNQUFNLEdBQUdwQix1QkFBWSxDQUFDcUI7UUFBUSxDQUFBLENBRTNEO01BQUEsQ0FBQSxDQUNHO0lBQUEsQ0FBQTtFQUNGLENBQUEsQ0FBQSxDQUNFO0FBRWQsQ0FBQztBQUVEdkYsZUFBZSxDQUFDd0YsV0FBVyxHQUFHLGFBQWE7QUFFM0M7QUFDTyxJQUFNQyxXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxnQkFBRyxJQUFBRSxXQUFJLEVBQUMzRixlQUFlLENBRUs7QUFBQyxJQUFBNEYsUUFBQSxHQUFBRixPQUFBLGNBRXRDRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9sYXlvdXRzL1F1ZXJ5RmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VDb250cm9sbGVkU3RhdGUgZnJvbSAnQDFtb25leS9ob29rcy91c2VDb250cm9sbGVkU3RhdGUnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnQDFtb25leS9ob29rcy91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IFByb0Zvcm0gfSBmcm9tICcuLi9Qcm9Gb3JtJztcbmltcG9ydCB7IENTU19QUkVGSVgsIERFRkFVTFRfVEVYVCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuY29uc3QgY2xhc3NlcyA9IGNsYXNzbmFtZXMoYCR7Q1NTX1BSRUZJWH0tcXVlcnktZmlsdGVyYCk7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFVSTCBzeW5jIGhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZ2V0VXJsUGFyYW1zKCkge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCkuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICBwYXJhbXNba10gPSB2O1xuICAgIH0pO1xuICAgIHJldHVybiBwYXJhbXM7XG59XG4vKipcbiAqIFdyaXRlIHRoZSBmaWx0ZXIgdmFsdWVzIGludG8gdGhlIFVSTCB3aGlsZSBQUkVTRVJWSU5HIHVucmVsYXRlZCBxdWVyeSBwYXJhbXNcbiAqIChlLmcuIGA/dGFiPS4uLmApLiBPbmx5IGtleXMgcHJldmlvdXNseSB3cml0dGVuIGJ5IHRoaXMgZmlsdGVyICh0cmFja2VkIGluXG4gKiBgbWFuYWdlZEtleXNgKSBhcmUgY2xlYXJlZCBiZWZvcmUgd3JpdGluZywgc28gcmVzZXQgcmVtb3ZlcyBleGFjdGx5IHdoYXQgdGhlXG4gKiBmaWx0ZXIgYWRkZWQuIFJldHVybnMgdGhlIG5ldyBzZXQgb2YgbWFuYWdlZCBrZXlzLlxuICovXG5mdW5jdGlvbiBzZXRVcmxQYXJhbXMocGFyYW1zLCBtYW5hZ2VkS2V5cykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQobWFuYWdlZEtleXMpO1xuICAgIGNvbnN0IHNwID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBtYW5hZ2VkS2V5cy5mb3JFYWNoKChrKSA9PiBzcC5kZWxldGUoaykpO1xuICAgIGNvbnN0IHdyaXR0ZW4gPSBuZXcgU2V0KCk7XG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocGFyYW1zKSkge1xuICAgICAgICBpZiAodiAhPT0gbnVsbCAmJiB2ICE9PSB1bmRlZmluZWQgJiYgdiAhPT0gJycpIHtcbiAgICAgICAgICAgIHNwLnNldChrLCBTdHJpbmcodikpO1xuICAgICAgICAgICAgd3JpdHRlbi5hZGQoayk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3Qgc2VhcmNoID0gc3AudG9TdHJpbmcoKTtcbiAgICBjb25zdCB1cmwgPSBzZWFyY2ggPyBgJHt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWV9PyR7c2VhcmNofWAgOiB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCB1cmwpO1xuICAgIHJldHVybiB3cml0dGVuO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBRdWVyeUZpbHRlclxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5jb25zdCBRdWVyeUZpbHRlckJhc2UgPSAocHJvcHMpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IHsgZGVmYXVsdENvbGxhcHNlZCA9IHRydWUsIGNvbGxhcHNlZDogY29udHJvbGxlZENvbGxhcHNlZCwgb25Db2xsYXBzZSwgZGVmYXVsdENvbHNOdW1iZXIgPSAzLCBsYWJlbFdpZHRoLCBzcGxpdCA9IGZhbHNlLCBzZWFyY2hDb25maWcsIHN5bmNUb1VybCwgb25GaW5pc2gsIG9uUmVzZXQsIGNoaWxkcmVuLCBzdWJtaXR0ZXIgPSBmYWxzZSwgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlc1Byb3AgfSA9IHByb3BzLCBmb3JtUHJvcHMgPSBfX3Jlc3QocHJvcHMsIFtcImRlZmF1bHRDb2xsYXBzZWRcIiwgXCJjb2xsYXBzZWRcIiwgXCJvbkNvbGxhcHNlXCIsIFwiZGVmYXVsdENvbHNOdW1iZXJcIiwgXCJsYWJlbFdpZHRoXCIsIFwic3BsaXRcIiwgXCJzZWFyY2hDb25maWdcIiwgXCJzeW5jVG9VcmxcIiwgXCJvbkZpbmlzaFwiLCBcIm9uUmVzZXRcIiwgXCJjaGlsZHJlblwiLCBcInN1Ym1pdHRlclwiLCBcImluaXRpYWxWYWx1ZXNcIl0pO1xuICAgIGNvbnN0IFtjb2xsYXBzZWQsIHNldENvbGxhcHNlZF0gPSB1c2VDb250cm9sbGVkU3RhdGUoZGVmYXVsdENvbGxhcHNlZCwgY29udHJvbGxlZENvbGxhcHNlZCk7XG4gICAgLy8g4pSA4pSAIHN5bmNUb1VybDogbWVyZ2UgVVJMIHBhcmFtcyBpbnRvIGluaXRpYWwgdmFsdWVzIG9uIG1vdW50IOKUgOKUgFxuICAgIC8vIE9uZS10aW1lIHNuYXBzaG90IG9mIHRoZSBVUkwgcGFyYW1zIGF0IG1vdW50LiBMYXp5IHJlZiBpbml0IGlzIElERU1QT1RFTlQsXG4gICAgLy8gc28gaXQgaXMgc2FmZSB1bmRlciBTdHJpY3RNb2RlJ3MgZG91YmxlIHJlbmRlciAoYW4gaW1wdXJlIFwiZmlyc3QgcnVuXCIgZmxhZ1xuICAgIC8vIGluc2lkZSB1c2VNZW1vIHdvdWxkIHJldHVybiB0aGUgdW5tZXJnZWQgdmFsdWUgb24gdGhlIHJlcGxheSBpbnZvY2F0aW9uKS5cbiAgICBjb25zdCB1cmxQYXJhbXNBdE1vdW50UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGlmICh1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdXJsUGFyYW1zQXRNb3VudFJlZi5jdXJyZW50ID0gc3luY1RvVXJsID8gZ2V0VXJsUGFyYW1zKCkgOiB7fTtcbiAgICB9XG4gICAgLy8gS2V5cyB0aGlzIGZpbHRlciBoYXMgV1JJVFRFTiB0byB0aGUgVVJMIOKAlCB0aGUgb25seSBrZXlzIHN1Ym1pdC9yZXNldCBpc1xuICAgIC8vIGFsbG93ZWQgdG8gY2xlYXIuIFRoZSBmdW5jdGlvbiBmb3JtIG9mIHN5bmNUb1VybCBhbHNvIHNlZWRzIHRoaXMgZnJvbSBpdHNcbiAgICAvLyBmaWx0ZXJlZCAnZ2V0JyByZXN1bHQgKHRob3NlIGtleXMgYXJlIHRoZSBmaWx0ZXIncyBvd24gYnkgZGVmaW5pdGlvbikuXG4gICAgY29uc3QgbWFuYWdlZEtleXNSZWYgPSB1c2VSZWYobmV3IFNldCgpKTtcbiAgICAvLyBCb29sZWFuLW1vZGUgb25seTogVVJMIHBhcmFtcyBtZXJnZWQgaW50byBpbml0aWFsVmFsdWVzIGJ1dCBOT1QgeWV0XG4gICAgLy8gY2xhaW1lZC4gVGhlIGJvb2xlYW4gZm9ybSBjYW5ub3QgdGVsbCBpdHMgb3duIHBhcmFtcyBmcm9tIGZvcmVpZ24gb25lc1xuICAgIC8vICg/dGFiPeKApiksIHNvIGEgc2VlZGVkIGtleSBpcyBjbGFpbWVkIG9ubHkgb25jZSBpdHMgdmFsdWUgY2hhbmdlcyAob3IgaXRcbiAgICAvLyBkaXNhcHBlYXJzIGZyb20gdGhlIHN1Ym1pdHRlZCB2YWx1ZXMsIGkuZS4gdGhlIHVzZXIgY2xlYXJlZCB0aGUgZmllbGQpLlxuICAgIGNvbnN0IHVybFNlZWRlZFJlZiA9IHVzZVJlZih7fSk7XG4gICAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghc3luY1RvVXJsKVxuICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxWYWx1ZXNQcm9wO1xuICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSAoX2EgPSB1cmxQYXJhbXNBdE1vdW50UmVmLmN1cnJlbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHt9O1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3QgZnJvbVVybCA9IHN5bmNUb1VybCh1cmxQYXJhbXMsICdnZXQnKTtcbiAgICAgICAgICAgIC8vIElkZW1wb3RlbnQgcmVmIHdyaXRlcyDigJQgc2FtZSBpbnB1dCBvbiBldmVyeSBpbnZvY2F0aW9uLlxuICAgICAgICAgICAgbWFuYWdlZEtleXNSZWYuY3VycmVudCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnJvbVVybCkpO1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgaW5pdGlhbFZhbHVlc1Byb3ApLCBmcm9tVXJsKTtcbiAgICAgICAgfVxuICAgICAgICB1cmxTZWVkZWRSZWYuY3VycmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHVybFBhcmFtcyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGluaXRpYWxWYWx1ZXNQcm9wKSwgdXJsUGFyYW1zKTtcbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlU3luY1NldCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBpZiAoIXN5bmNUb1VybClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgbGV0IHRvV3JpdGU7XG4gICAgICAgIGNvbnN0IHRvQ2xlYXIgPSBuZXcgU2V0KG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICBpZiAodHlwZW9mIHN5bmNUb1VybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9Xcml0ZSA9IHN5bmNUb1VybCh2YWx1ZXMsICdzZXQnKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIFNraXAgVVJMLXNlZWRlZCBrZXlzIHdlIG5ldmVyIHdyb3RlIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlZCDigJQgdGhleVxuICAgICAgICAgICAgLy8gbWF5IGJlbG9uZyB0byBzb21lb25lIGVsc2UgKD90YWI94oCmKTsgbGVhdmUgdGhlbSBpbiB0aGUgVVJMIHVudG91Y2hlZC5cbiAgICAgICAgICAgIC8vIEEgc2VlZGVkIGtleSB3aG9zZSB2YWx1ZSBESUQgY2hhbmdlIGlzIGNsYWltZWQgZnJvbSBub3cgb24uXG4gICAgICAgICAgICB0b1dyaXRlID0ge307XG4gICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VlZGVkID0gdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICBpZiAoc2VlZGVkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgIW1hbmFnZWRLZXlzUmVmLmN1cnJlbnQuaGFzKGtleSkgJiZcbiAgICAgICAgICAgICAgICAgICAgU3RyaW5nKHZhbHVlKSA9PT0gc2VlZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWxldGUgdXJsU2VlZGVkUmVmLmN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIHRvV3JpdGVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2VlZGVkIGtleXMgbWlzc2luZyBmcm9tIHRoZSBzdWJtaXR0ZWQgdmFsdWVzIHdlcmUgY2xlYXJlZCBieSB0aGVcbiAgICAgICAgICAgIC8vIHVzZXIgKG9taXROaWwgc3RyaXBzIGVtcHR5IHZhbHVlcykg4oCUIGNsYWltIHRoZW0gYW5kIHJlbW92ZSB0aGVpclxuICAgICAgICAgICAgLy8gc3RhbGUgcGFyYW1zIGZyb20gdGhlIFVSTC5cbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHVybFNlZWRlZFJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgICAgIGlmICghKGtleSBpbiB2YWx1ZXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB1cmxTZWVkZWRSZWYuY3VycmVudFtrZXldO1xuICAgICAgICAgICAgICAgICAgICB0b0NsZWFyLmFkZChrZXkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBtYW5hZ2VkS2V5c1JlZi5jdXJyZW50ID0gc2V0VXJsUGFyYW1zKHRvV3JpdGUsIHRvQ2xlYXIpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUZpbmlzaCA9IHVzZU1lbW9pemVkRm4oKHZhbHVlcykgPT4ge1xuICAgICAgICBoYW5kbGVTeW5jU2V0KHZhbHVlcyk7XG4gICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGlmIChzeW5jVG9VcmwpIHtcbiAgICAgICAgICAgIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQgPSBzZXRVcmxQYXJhbXMoe30sIG1hbmFnZWRLZXlzUmVmLmN1cnJlbnQpO1xuICAgICAgICB9XG4gICAgICAgIG9uUmVzZXQgPT09IG51bGwgfHwgb25SZXNldCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25SZXNldCgpO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNvbGxhcHNlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5leHQgPSAhY29sbGFwc2VkO1xuICAgICAgICBzZXRDb2xsYXBzZWQobmV4dCk7XG4gICAgICAgIG9uQ29sbGFwc2UgPT09IG51bGwgfHwgb25Db2xsYXBzZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25Db2xsYXBzZShuZXh0KTtcbiAgICB9KTtcbiAgICAvLyBDb3VudCBjaGlsZHJlbiBhbmQgc3BsaXQgdmlzaWJsZS9oaWRkZW5cbiAgICBjb25zdCBjaGlsZEFycmF5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCAoY2hpbGQpID0+IHtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH0sIFtjaGlsZHJlbl0pO1xuICAgIGNvbnN0IHZpc2libGVDaGlsZHJlbiA9IGNvbGxhcHNlZFxuICAgICAgICA/IGNoaWxkQXJyYXkuc2xpY2UoMCwgZGVmYXVsdENvbHNOdW1iZXIpXG4gICAgICAgIDogY2hpbGRBcnJheTtcbiAgICBjb25zdCBoYXNNb3JlID0gY2hpbGRBcnJheS5sZW5ndGggPiBkZWZhdWx0Q29sc051bWJlcjtcbiAgICBjb25zdCBzZWFyY2hUZXh0ID0gKF9hID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnNlYXJjaFRleHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IERFRkFVTFRfVEVYVC5zZWFyY2g7XG4gICAgY29uc3QgcmVzZXRUZXh0ID0gKF9iID0gc2VhcmNoQ29uZmlnID09PSBudWxsIHx8IHNlYXJjaENvbmZpZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2VhcmNoQ29uZmlnLnJlc2V0VGV4dCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogREVGQVVMVF9URVhULnJlc2V0O1xuICAgIGNvbnN0IGJ1dHRvblNpemUgPSBzZWFyY2hDb25maWcgPT09IG51bGwgfHwgc2VhcmNoQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzZWFyY2hDb25maWcuc2l6ZTtcbiAgICBjb25zdCBsYWJlbFN0eWxlID0gbGFiZWxXaWR0aCAhPT0gdW5kZWZpbmVkICYmIGxhYmVsV2lkdGggIT09ICdhdXRvJ1xuICAgICAgICA/IHsgd2lkdGg6IGxhYmVsV2lkdGggfVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKF9qc3goUHJvRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9ybVByb3BzLCB7IGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsIG9uRmluaXNoOiBoYW5kbGVGaW5pc2gsIG9uUmVzZXQ6IGhhbmRsZVJlc2V0LCBzdWJtaXR0ZXI6IGZhbHNlLCBjaGlsZHJlbjogX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoKSwgY2hpbGRyZW46IFt2aXNpYmxlQ2hpbGRyZW4ubWFwKChjaGlsZCwgaW5kZXgpID0+IChfanN4cyhSZWFjdC5GcmFnbWVudCwgeyBjaGlsZHJlbjogW3NwbGl0ICYmIGluZGV4ID4gMCAmJiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzcGxpdCcpIH0pLCBsYWJlbFN0eWxlID8gKF9qc3goXCJkaXZcIiwgeyBzdHlsZTogbGFiZWxTdHlsZSwgY2hpbGRyZW46IGNoaWxkIH0pKSA6IChjaGlsZCldIH0sIGluZGV4KSkpLCBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnYWN0aW9ucycpLCBjaGlsZHJlbjogW19qc3goQnV0dG9uLCB7IHR5cGU6IFwic3VibWl0XCIsIGNvbG9yOiBcInByaW1hcnlcIiwgc2l6ZTogYnV0dG9uU2l6ZSwgY2hpbGRyZW46IHNlYXJjaFRleHQgfSksIF9qc3goQnV0dG9uLCB7IHR5cGU6IFwiYnV0dG9uXCIsIGNvbG9yOiBcInNlY29uZGFyeVwiLCBzaXplOiBidXR0b25TaXplLCBvbkNsaWNrOiBoYW5kbGVSZXNldCwgY2hpbGRyZW46IHJlc2V0VGV4dCB9KSwgaGFzTW9yZSAmJiAoX2pzeChCdXR0b24sIHsgdHlwZTogXCJidXR0b25cIiwgdmFyaWFudDogXCJ0ZXh0XCIsIHNpemU6IGJ1dHRvblNpemUsIG9uQ2xpY2s6IGhhbmRsZUNvbGxhcHNlLCBjaGlsZHJlbjogY29sbGFwc2VkID8gREVGQVVMVF9URVhULmV4cGFuZCA6IERFRkFVTFRfVEVYVC5jb2xsYXBzZSB9KSldIH0pXSB9KSB9KSkpO1xufTtcblF1ZXJ5RmlsdGVyQmFzZS5kaXNwbGF5TmFtZSA9ICdRdWVyeUZpbHRlcic7XG4vKiogR2VuZXJpYy1hd2FyZSBleHBvcnQg4oCUIGtlZXBzIGA8UXVlcnlGaWx0ZXI8TXlWYWx1ZXM+IOKApj5gIGZ1bGx5IHR5cGVkLiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXJ5RmlsdGVyID0gbWVtbyhRdWVyeUZpbHRlckJhc2UpO1xuZXhwb3J0IGRlZmF1bHQgUXVlcnlGaWx0ZXI7IixudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -27,6 +27,9 @@
|
|
|
27
27
|
.om-component-ui-form-item {
|
|
28
28
|
margin-bottom: var(--om-spacing-300, 12px);
|
|
29
29
|
}
|
|
30
|
+
.om-component-ui-form-item-large {
|
|
31
|
+
margin-bottom: var(--om-spacing-600, 24px);
|
|
32
|
+
}
|
|
30
33
|
.om-component-ui-form-item-small {
|
|
31
34
|
margin-bottom: var(--om-spacing-200, 8px);
|
|
32
35
|
}
|
|
@@ -54,6 +57,9 @@
|
|
|
54
57
|
.om-component-ui-form-item .om-component-ui-form-item-error {
|
|
55
58
|
margin-top: 8px;
|
|
56
59
|
}
|
|
60
|
+
.om-component-ui-form-item .om-component-ui-form-item-warning {
|
|
61
|
+
margin-top: 8px;
|
|
62
|
+
}
|
|
57
63
|
.om-component-ui-form-item .om-component-ui-form-item-feedback {
|
|
58
64
|
margin-top: 8px;
|
|
59
65
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { ButtonProps } from "../Button";
|
|
3
3
|
import { getNestedValue, setNestedValue } from './core/pathUtils';
|
|
4
|
-
import type { ProFormFieldTransformFn, ProFormValueEnumObj } from './interface';
|
|
4
|
+
import type { ProFormDateFormatter, ProFormFieldTransformFn, ProFormValueEnumObj, ProFormValueType } from './interface';
|
|
5
5
|
export { getNestedValue, setNestedValue };
|
|
6
6
|
export declare function stableSerialize(value: unknown): string;
|
|
7
7
|
export declare function renderTextReadonly(value: unknown): ReactNode;
|
|
@@ -13,6 +13,17 @@ export declare function extractButtonProps(config: false | Partial<ButtonProps>
|
|
|
13
13
|
rest: Partial<ButtonProps>;
|
|
14
14
|
};
|
|
15
15
|
export declare function transformSubmitValues(values: Record<string, unknown>, transforms: Record<string, ProFormFieldTransformFn>): Record<string, unknown>;
|
|
16
|
+
export declare const DATE_FORMAT = "YYYY-MM-DD";
|
|
17
|
+
export declare const DATE_TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";
|
|
18
|
+
/** Minimal pattern formatter supporting YYYY / MM / DD / HH / mm / ss tokens. */
|
|
19
|
+
export declare function formatDateByPattern(date: Date, pattern: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Recursively serialize every `Date` in `values` according to `dateFormatter`.
|
|
22
|
+
* With `'string'`, fields registered as `valueType: 'dateTime'` use
|
|
23
|
+
* `YYYY-MM-DD HH:mm:ss`, everything else `YYYY-MM-DD`. Untouched when the
|
|
24
|
+
* formatter is `false`. Non-Date values pass through unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export declare function formatDateValues(values: Record<string, unknown>, dateFormatter: ProFormDateFormatter, valueTypes: Record<string, ProFormValueType>): Record<string, unknown>;
|
|
16
27
|
export declare function omitNilValues(values: Record<string, unknown>): Record<string, unknown>;
|
|
17
28
|
export interface ValueEnumOption {
|
|
18
29
|
label: string;
|
|
@@ -4,7 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
+
exports.DATE_TIME_FORMAT = exports.DATE_FORMAT = void 0;
|
|
7
8
|
exports.extractButtonProps = extractButtonProps;
|
|
9
|
+
exports.formatDateByPattern = formatDateByPattern;
|
|
10
|
+
exports.formatDateValues = formatDateValues;
|
|
8
11
|
Object.defineProperty(exports, "getNestedValue", {
|
|
9
12
|
enumerable: true,
|
|
10
13
|
get: function get() {
|
|
@@ -26,6 +29,7 @@ exports.stableSerialize = stableSerialize;
|
|
|
26
29
|
exports.transformSubmitValues = transformSubmitValues;
|
|
27
30
|
exports.valueEnumToOptions = valueEnumToOptions;
|
|
28
31
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
32
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
33
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
30
34
|
var _constants = require("./constants");
|
|
31
35
|
var _pathUtils = require("./core/pathUtils");
|
|
@@ -108,6 +112,9 @@ function isPlainObject(value) {
|
|
|
108
112
|
function transformSubmitValues(values, transforms) {
|
|
109
113
|
var keys = Object.keys(transforms);
|
|
110
114
|
if (keys.length === 0) return values;
|
|
115
|
+
// All nested writes go through setNestedValue (clones every object/array on
|
|
116
|
+
// the path) — `values` is the live form state and must never be mutated;
|
|
117
|
+
// only `result` itself (our own shallow copy) may be written directly.
|
|
111
118
|
var result = Object.assign({}, values);
|
|
112
119
|
// Process transforms in sorted key order for determinism
|
|
113
120
|
keys.sort().forEach(function (name) {
|
|
@@ -123,42 +130,87 @@ function transformSubmitValues(values, transforms) {
|
|
|
123
130
|
delete result[name];
|
|
124
131
|
Object.assign(result, transformed);
|
|
125
132
|
} else {
|
|
126
|
-
// Nested field —
|
|
133
|
+
// Nested field — rebuild the parent without the original key, merged
|
|
127
134
|
var parentPath = name.slice(0, dotIndex);
|
|
128
135
|
var parent = (0, _pathUtils.getNestedValue)(result, parentPath);
|
|
129
136
|
if (isPlainObject(parent)) {
|
|
130
137
|
var childKey = name.slice(dotIndex + 1);
|
|
131
|
-
|
|
132
|
-
|
|
138
|
+
var newParent = Object.assign({}, parent);
|
|
139
|
+
delete newParent[childKey];
|
|
140
|
+
Object.assign(newParent, transformed);
|
|
141
|
+
result = (0, _pathUtils.setNestedValue)(result, parentPath, newParent);
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
} else {
|
|
136
|
-
// Primitive value — replace
|
|
137
|
-
|
|
138
|
-
if (_keys.length === 1) {
|
|
139
|
-
result[name] = transformed;
|
|
140
|
-
} else {
|
|
141
|
-
var current = result;
|
|
142
|
-
for (var i = 0; i < _keys.length - 1; i++) {
|
|
143
|
-
var key = _keys[i];
|
|
144
|
-
if (!isPlainObject(current[key]) && !Array.isArray(current[key])) {
|
|
145
|
-
current[key] = {};
|
|
146
|
-
}
|
|
147
|
-
current = current[key];
|
|
148
|
-
}
|
|
149
|
-
current[_keys[_keys.length - 1]] = transformed;
|
|
150
|
-
}
|
|
145
|
+
// Primitive value — replace at the (possibly nested) path
|
|
146
|
+
result = name.includes('.') ? (0, _pathUtils.setNestedValue)(result, name, transformed) : Object.assign(Object.assign({}, result), (0, _defineProperty2["default"])({}, name, transformed));
|
|
151
147
|
}
|
|
152
148
|
});
|
|
153
149
|
return result;
|
|
154
150
|
}
|
|
155
151
|
// ---------------------------------------------------------------------------
|
|
152
|
+
// Date formatting (form-level dateFormatter, dependency-free)
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
var DATE_FORMAT = exports.DATE_FORMAT = 'YYYY-MM-DD';
|
|
155
|
+
var DATE_TIME_FORMAT = exports.DATE_TIME_FORMAT = 'YYYY-MM-DD HH:mm:ss';
|
|
156
|
+
/** Minimal pattern formatter supporting YYYY / MM / DD / HH / mm / ss tokens. */
|
|
157
|
+
function formatDateByPattern(date, pattern) {
|
|
158
|
+
var pad = function pad(n) {
|
|
159
|
+
return String(n).padStart(2, '0');
|
|
160
|
+
};
|
|
161
|
+
return pattern.replace(/YYYY/g, String(date.getFullYear())).replace(/MM/g, pad(date.getMonth() + 1)).replace(/DD/g, pad(date.getDate())).replace(/HH/g, pad(date.getHours())).replace(/mm/g, pad(date.getMinutes())).replace(/ss/g, pad(date.getSeconds()));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Recursively serialize every `Date` in `values` according to `dateFormatter`.
|
|
165
|
+
* With `'string'`, fields registered as `valueType: 'dateTime'` use
|
|
166
|
+
* `YYYY-MM-DD HH:mm:ss`, everything else `YYYY-MM-DD`. Untouched when the
|
|
167
|
+
* formatter is `false`. Non-Date values pass through unchanged.
|
|
168
|
+
*/
|
|
169
|
+
function formatDateValues(values, dateFormatter, valueTypes) {
|
|
170
|
+
if (dateFormatter === false) return values;
|
|
171
|
+
var formatOne = function formatOne(date, path) {
|
|
172
|
+
if (typeof dateFormatter === 'function') return dateFormatter(date, path);
|
|
173
|
+
if (dateFormatter === 'number') return date.getTime();
|
|
174
|
+
if (dateFormatter === 'string') {
|
|
175
|
+
var pattern = valueTypes[path] === 'dateTime' ? DATE_TIME_FORMAT : DATE_FORMAT;
|
|
176
|
+
return formatDateByPattern(date, pattern);
|
|
177
|
+
}
|
|
178
|
+
return formatDateByPattern(date, dateFormatter);
|
|
179
|
+
};
|
|
180
|
+
var _walk = function walk(value, path) {
|
|
181
|
+
if (value instanceof Date) return formatOne(value, path);
|
|
182
|
+
if (Array.isArray(value)) {
|
|
183
|
+
var changed = false;
|
|
184
|
+
var next = value.map(function (item, index) {
|
|
185
|
+
var walked = _walk(item, path ? "".concat(path, ".").concat(index) : String(index));
|
|
186
|
+
if (walked !== item) changed = true;
|
|
187
|
+
return walked;
|
|
188
|
+
});
|
|
189
|
+
return changed ? next : value;
|
|
190
|
+
}
|
|
191
|
+
if (isPlainObject(value)) {
|
|
192
|
+
var _changed = false;
|
|
193
|
+
var _next = {};
|
|
194
|
+
for (var _i = 0, _Object$keys = Object.keys(value); _i < _Object$keys.length; _i++) {
|
|
195
|
+
var key = _Object$keys[_i];
|
|
196
|
+
var child = value[key];
|
|
197
|
+
var walked = _walk(child, path ? "".concat(path, ".").concat(key) : key);
|
|
198
|
+
if (walked !== child) _changed = true;
|
|
199
|
+
_next[key] = walked;
|
|
200
|
+
}
|
|
201
|
+
return _changed ? _next : value;
|
|
202
|
+
}
|
|
203
|
+
return value;
|
|
204
|
+
};
|
|
205
|
+
return _walk(values, '');
|
|
206
|
+
}
|
|
207
|
+
// ---------------------------------------------------------------------------
|
|
156
208
|
// omitNilValues — recursively remove null / undefined / '' from object
|
|
157
209
|
// ---------------------------------------------------------------------------
|
|
158
210
|
function omitNilValues(values) {
|
|
159
211
|
var result = {};
|
|
160
|
-
for (var
|
|
161
|
-
var key = _Object$
|
|
212
|
+
for (var _i2 = 0, _Object$keys2 = Object.keys(values); _i2 < _Object$keys2.length; _i2++) {
|
|
213
|
+
var key = _Object$keys2[_i2];
|
|
162
214
|
var v = values[key];
|
|
163
215
|
if (v === null || v === undefined || v === '') continue;
|
|
164
216
|
if (isPlainObject(v)) {
|
|
@@ -190,4 +242,4 @@ function valueEnumToOptions(valueEnum) {
|
|
|
190
242
|
};
|
|
191
243
|
});
|
|
192
244
|
}
|
|
193
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS91dGlscy50cyIsImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyJdLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9wYXRoVXRpbHMiLCJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInN0YWJsZVNlcmlhbGl6ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwiX3R5cGVvZjIiLCJKU09OIiwic3RyaW5naWZ5IiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiam9pbiIsImtleXMiLCJzb3J0IiwiayIsInJlbmRlclRleHRSZWFkb25seSIsInJlbmRlckJvb2xlYW5SZWFkb25seSIsInJlbmRlck51bWVyaWNSZWFkb25seSIsIm51bSIsIk51bWJlciIsImlzTmFOIiwicmVzb2x2ZVdpZHRoIiwid2lkdGgiLCJfYSIsIldJRFRIX1NJWkVfTUFQIiwibWQiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJjb25maWciLCJkaXNhYmxlZCIsInJlc3QiLCJfY29uZmlnJGRpc2FibGVkIiwiaXNQbGFpbk9iamVjdCIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsInZhbHVlcyIsInRyYW5zZm9ybXMiLCJyZXN1bHQiLCJhc3NpZ24iLCJmb3JFYWNoIiwibmFtZSIsInRyYW5zZm9ybUZuIiwicmF3VmFsdWUiLCJnZXROZXN0ZWRWYWx1ZSIsInRyYW5zZm9ybWVkIiwiZG90SW5kZXgiLCJsYXN0SW5kZXhPZiIsInBhcmVudFBhdGgiLCJzbGljZSIsInBhcmVudCIsImNoaWxkS2V5Iiwic3BsaXQiLCJjdXJyZW50Iiwia2V5Iiwib21pdE5pbFZhbHVlcyIsIl9pIiwiX09iamVjdCRrZXlzIiwidiIsImNsZWFuZWQiLCJ2YWx1ZUVudW1Ub09wdGlvbnMiLCJ2YWx1ZUVudW0iLCJlbnRyaWVzIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkyIiwibGFiZWwiLCJ0ZXh0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQ0hBLElBQUlFLE1BQU0sR0FBSSxVQUFRLFNBQUtBLE1BQU0sSUFBSyxVQUFVQyxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNsRCxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0VBQ1YsS0FBSyxJQUFJQyxDQUFDLElBQUlILENBQUMsRUFBRSxJQUFJSSxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDLElBQUlGLENBQUMsQ0FBQ08sT0FBTyxDQUFDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQy9FRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNHLENBQUMsQ0FBQztFQUNmLElBQUlILENBQUMsSUFBSSxJQUFJLElBQUksT0FBT0ksTUFBTSxDQUFDSyxxQkFBcUIsS0FBSyxVQUFVLEVBQy9ELEtBQUssSUFBSUMsQ0FBQyxHQUFHLENBQUMsRUFBRVAsQ0FBQyxHQUFHQyxNQUFNLENBQUNLLHFCQUFxQixDQUFDVCxDQUFDLENBQUMsRUFBRVUsQ0FBQyxHQUFHUCxDQUFDLENBQUNRLE1BQU0sRUFBRUQsQ0FBQyxFQUFFLEVBQUU7SUFDcEUsSUFBSVQsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUlOLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDTyxvQkFBb0IsQ0FBQ0wsSUFBSSxDQUFDUCxDQUFDLEVBQUVHLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLENBQUMsRUFDMUVSLENBQUMsQ0FBQ0MsQ0FBQyxDQUFD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Q2dCLEdBQUcsQ0FBQyxHQUFHSyxPQUFPO01BQ3ZCO0lBQ0YsQ0FBQyxNQUFNO01BQ0xyQixNQUFNLENBQUNnQixHQUFHLENBQUMsR0FBR0ksQ0FBQztJQUNqQjtFQUNGO0VBQ0EsT0FBT3BCLE1BQU07QUFDZjtBQVdNLFNBQVVzQixrQkFBa0JBLENBQ2hDQyxTQUE4QixFQUFBO0VBRTlCLE9BQU9sRSxNQUFNLENBQUNtRSxPQUFPLENBQUNELFNBQVMsQ0FBQyxDQUFDaEQsR0FBRyxDQUFDLFVBQUFrRCxJQUFBLEVBQWtCO0lBQUEsSUFBQUMsS0FBQSxPQUFBQyxlQUFBLGFBQUFGLElBQUE7TUFBaEJULEdBQUcsR0FBQVUsS0FBQTtNQUFFbEMsTUFBTSxHQUFBa0MsS0FBQTtJQUNoRCxJQUFJLE9BQU9sQyxNQUFNLEtBQUssUUFBUSxFQUFFO01BQzlCLE9BQU87UUFBRW9DLEtBQUssRUFBRXBDLE1BQU07UUFBRXpCLEtBQUssRUFBRWlEO01BQUcsQ0FBRTtJQUN0QztJQUNBLE9BQU87TUFBRVksS0FBSyxFQUFFcEMsTUFBTSxDQUFDcUMsSUFBSTtNQUFFOUQsS0FBSyxFQUFFaUQsR0FBRztNQUFFdkIsUUFBUSxFQUFFRCxNQUFNLENBQUNDO0lBQVEsQ0FBRTtFQUN0RSxDQUFDLENBQUM7QUFDSiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IFdJRFRIX1NJWkVfTUFQIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyBSZS1leHBvcnRlZCBmb3IgY29uc3VtZXJzIHRoYXQgaW1wb3J0IHRoZSBuZXN0ZWQtcGF0aCBoZWxwZXJzIGZyb20gYC4vdXRpbHNgXG4vLyAoUHJvRm9ybURlcGVuZGVuY3ksIFByb0Zvcm1MaXN0KS4gQ2Fub25pY2FsIGRlZmluaXRpb25zIGxpdmUgaW4gY29yZS9wYXRoVXRpbHMuXG5leHBvcnQgeyBnZXROZXN0ZWRWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gc3RhYmxlU2VyaWFsaXplIOKAlCBkZXRlcm1pbmlzdGljIGRlZXAgc2VyaWFsaXphdGlvbiBmb3IgcGFyYW1zIGNvbXBhcmlzb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHN0YWJsZVNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdbJyArIHZhbHVlLm1hcChzdGFibGVTZXJpYWxpemUpLmpvaW4oJywnKSArICddJztcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKS5zb3J0KCk7XG4gICAgcmV0dXJuICgneycgK1xuICAgICAgICBrZXlzXG4gICAgICAgICAgICAubWFwKChrKSA9PiBKU09OLnN0cmluZ2lmeShrKSArXG4gICAgICAgICAgICAnOicgK1xuICAgICAgICAgICAgc3RhYmxlU2VyaWFsaXplKHZhbHVlW2tdKSlcbiAgICAgICAgICAgIC5qb2luKCcsJykgK1xuICAgICAgICAnfScpO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWFkb25seSByZW5kZXJlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRleHRSZWFkb25seSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCb29sZWFuUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gdmFsdWUgPyAnWWVzJyA6ICdObyc7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTnVtZXJpY1JlYWRvbmx5KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKVxuICAgICAgICByZXR1cm4gJy0nO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSlcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKG51bSk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHJlc29sdmVXaWR0aCDigJQgY29udmVydCBuYW1lZCB3aWR0aCB0byBweCBvciBwYXNzIHRocm91Z2ggbnVtYmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2lkdGgod2lkdGgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICByZXR1cm4gKF9hID0gV0lEVEhfU0laRV9NQVBbd2lkdGhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBXSURUSF9TSVpFX01BUC5tZDtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZXh0cmFjdEJ1dHRvblByb3BzIOKAlCBzYWZlbHkgZXh0cmFjdCBwcm9wcyBmcm9tIGJ1dHRvbiBjb25maWdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RCdXR0b25Qcm9wcyhjb25maWcpIHtcbiAgICBpZiAoY29uZmlnID09PSBmYWxzZSB8fCBjb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4geyBkaXNhYmxlZDogZmFsc2UsIHJlc3Q6IHt9IH07XG4gICAgfVxuICAgIGNvbnN0IHsgZGlzYWJsZWQgPSBmYWxzZSB9ID0gY29uZmlnLCByZXN0ID0gX19yZXN0KGNvbmZpZywgW1wiZGlzYWJsZWRcIl0pO1xuICAgIHJldHVybiB7IGRpc2FibGVkLCByZXN0IH07XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyDigJQgYXBwbHkgcmVnaXN0ZXJlZCBmaWVsZCB0cmFuc2Zvcm1zIHRvIGZvcm0gdmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHZhbHVlcywgdHJhbnNmb3Jtcykge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgdmFsdWVzKTtcbiAgICAvLyBQcm9jZXNzIHRyYW5zZm9ybXMgaW4gc29ydGVkIGtleSBvcmRlciBmb3IgZGV0ZXJtaW5pc21cbiAgICBrZXlzLnNvcnQoKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHRyYW5zZm9ybUZuID0gdHJhbnNmb3Jtc1tuYW1lXTtcbiAgICAgICAgaWYgKHR5cGVvZiB0cmFuc2Zvcm1GbiAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgcmF3VmFsdWUgPSBnZXROZXN0ZWRWYWx1ZShyZXN1bHQsIG5hbWUpO1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZCA9IHRyYW5zZm9ybUZuKHJhd1ZhbHVlLCBuYW1lLCByZXN1bHQpO1xuICAgICAgICBpZiAoaXNQbGFpbk9iamVjdCh0cmFuc2Zvcm1lZCkpIHtcbiAgICAgICAgICAgIC8vIElmIHRyYW5zZm9ybSByZXR1cm5zIGFuIG9iamVjdCwgZGVsZXRlIG9yaWdpbmFsIGtleSBhbmQgbWVyZ2UgdG8gcGFyZW50XG4gICAgICAgICAgICBjb25zdCBkb3RJbmRleCA9IG5hbWUubGFzdEluZGV4T2YoJy4nKTtcbiAgICAgICAgICAgIGlmIChkb3RJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAvLyBUb3AtbGV2ZWwgZmllbGQg4oCUIGRlbGV0ZSBvcmlnaW5hbCBhbmQgbWVyZ2UgYXQgcm9vdFxuICAgICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHRbbmFtZV07XG4gICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihyZXN1bHQsIHRyYW5zZm9ybWVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE5lc3RlZCBmaWVsZCDigJQgZGVsZXRlIG9yaWdpbmFsIGFuZCBtZXJnZSBpbnRvIHBhcmVudCBvYmplY3RcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnRQYXRoID0gbmFtZS5zbGljZSgwLCBkb3RJbmRleCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gZ2V0TmVzdGVkVmFsdWUocmVzdWx0LCBwYXJlbnRQYXRoKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNQbGFpbk9iamVjdChwYXJlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkS2V5ID0gbmFtZS5zbGljZShkb3RJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcGFyZW50W2NoaWxkS2V5XTtcbiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbihwYXJlbnQsIHRyYW5zZm9ybWVkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBQcmltaXRpdmUgdmFsdWUg4oCUIHJlcGxhY2UgaW4tcGxhY2VcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBuYW1lLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbbmFtZV0gPSB0cmFuc2Zvcm1lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50ID0gcmVzdWx0O1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1BsYWluT2JqZWN0KGN1cnJlbnRba2V5XSkgJiYgIUFycmF5LmlzQXJyYXkoY3VycmVudFtrZXldKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFtrZXldID0ge307XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFtrZXlzW2tleXMubGVuZ3RoIC0gMV1dID0gdHJhbnNmb3JtZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBvbWl0TmlsVmFsdWVzIOKAlCByZWN1cnNpdmVseSByZW1vdmUgbnVsbCAvIHVuZGVmaW5lZCAvICcnIGZyb20gb2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiBvbWl0TmlsVmFsdWVzKHZhbHVlcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlcykpIHtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlc1trZXldO1xuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodikpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSBvbWl0TmlsVmFsdWVzKHYpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNsZWFuZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGNsZWFuZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUVudW1Ub09wdGlvbnModmFsdWVFbnVtKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlRW51bSkubWFwKChba2V5LCBjb25maWddKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZywgdmFsdWU6IGtleSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcudGV4dCwgdmFsdWU6IGtleSwgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB9O1xuICAgIH0pO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
245
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS91dGlscy50cyIsImNvbXBvbmVudHMvUHJvRm9ybS91dGlscy5qcyJdLCJuYW1lcyI6WyJfY29uc3RhbnRzIiwicmVxdWlyZSIsIl9wYXRoVXRpbHMiLCJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInN0YWJsZVNlcmlhbGl6ZSIsInZhbHVlIiwidW5kZWZpbmVkIiwiU3RyaW5nIiwiX3R5cGVvZjIiLCJKU09OIiwic3RyaW5naWZ5IiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiam9pbiIsImtleXMiLCJzb3J0IiwiayIsInJlbmRlclRleHRSZWFkb25seSIsInJlbmRlckJvb2xlYW5SZWFkb25seSIsInJlbmRlck51bWVyaWNSZWFkb25seSIsIm51bSIsIk51bWJlciIsImlzTmFOIiwicmVzb2x2ZVdpZHRoIiwid2lkdGgiLCJfYSIsIldJRFRIX1NJWkVfTUFQIiwibWQiLCJleHRyYWN0QnV0dG9uUHJvcHMiLCJjb25maWciLCJkaXNhYmxlZCIsInJlc3QiLCJfY29uZmlnJGRpc2FibGVkIiwiaXNQbGFpbk9iamVjdCIsInRyYW5zZm9ybVN1Ym1pdFZhbHVlcyIsInZhbHVlcyIsInRyYW5zZm9ybXMiLCJyZXN1bHQiLCJhc3NpZ24iLCJmb3JFYWNoIiwibmFtZSIsInRyYW5zZm9ybUZuIiwicmF3VmFsdWUiLCJnZXROZXN0ZWRWYWx1ZSIsInRyYW5zZm9ybWVkIiwiZG90SW5kZXgiLCJsYXN0SW5kZXhPZiIsInBhcmVudFBhdGgiLCJzbGljZSIsInBhcmVudCIsImNoaWxkS2V5IiwibmV3UGFyZW50Iiwic2V0TmVzdGVkVmFsdWUiLCJpbmNsdWRlcyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJEQVRFX0ZPUk1BVCIsImV4cG9ydHMiLCJEQVRFX1RJTUVfRk9STUFUIiwiZm9ybWF0RGF0ZUJ5UGF0dGVybiIsImRhdGUiLCJwYXR0ZXJuIiwicGFkIiwibiIsInBhZFN0YXJ0IiwicmVwbGFjZSIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiZ2V0SG91cnMiLCJnZXRNaW51dGVzIiwiZ2V0U2Vjb25kcyIsImZvcm1hdERhdGVWYWx1ZXMiLCJkYXRlRm9ybWF0dGVyIiwidmFsdWVUeXBlcyIsImZvcm1hdE9uZSIsInBhdGgiLCJnZXRUaW1lIiwid2FsayIsIkRhdGUiLCJjaGFuZ2VkIiwibmV4dCIsIml0ZW0iLCJpbmRleCIsIndhbGtlZCIsImNvbmNhdCIsIl9pIiwiX09iamVjdCRrZXlzIiwia2V5IiwiY2hpbGQiLCJvbWl0TmlsVmFsdWVzIiwiX2kyIiwiX09iamVjdCRrZXlzMiIsInYiLCJjbGVhbmVkIiwidmFsdWVFbnVtVG9PcHRpb25zIiwidmFsdWVFbnVtIiwiZW50cmllcyIsIl9yZWYiLCJfcmVmMiIsIl9zbGljZWRUb0FycmF5MiIsImxhYmVsIiwidGV4dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsVUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FDSEEsSUFBSUUsTUFBTSxHQUFJLFVBQVEsU0FBS0EsTUFBTSxJQUFLLFVBQVVDLENBQUMsRUFBRUMsQ0FBQyxFQUFFO0VBQ2xELElBQUlDLENBQUMsR0FBRyxDQUFDLENBQUM7RUFDVixLQUFLLElBQUlDLENBQUMsSUFBSUgsQ0FBQyxFQUFFLElBQUlJLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQ1AsQ0FBQyxFQUFFRyxDQUFDLENBQUMsSUFBSUYsQ0FBQyxDQUFDTyxPQUFPLENBQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0VELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUdILENBQUMsQ0FBQ0csQ0FBQyxDQUFDO0VBQ2YsSUFBSUgsQ0FBQyxJQUFJLElBQUksSUFBSSxPQUFPSSxNQUFNLENBQUNLLHFCQUFxQixLQUFLLFVBQVUsRUFDL0QsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFUCxDQUFDLEdBQUdDLE1BQU0sQ0FBQ0sscUJBQXFCLENBQUNULENBQUMsQ0FBQyxFQUFFVSxDQUFDLEdBQUdQLENBQUMsQ0FBQ1EsTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtJQUNwRSxJQUFJVCxDQUFDLENBQUNPLE9BQU8sQ0FBQ0wsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSU4sTUFBTSxDQUFDQyxTQUFTLENBQUNPLG9CQUFvQixDQUFDTCxJQUFJLENBQUNQLENBQUMsRUFBRUcsQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQyxFQUMxRVIsQ0FBQyxDQUFDQyxDQUFDLENBQUNPLENBQUMsQ0FBQyxDQUFDLEdBQUdWLENBQUMsQ0FBQ0csQ0FBQyxDQUFDTyxDQUFDLENBQUMsQ0FBQztFQUN6QjtFQUNKLE9BQU9SLENBQUM7QUFDWixDQUFDOztBRENEO0FBQ0E7O0FBR0E7QUFDQTtBQUNBO0FBQ00sU0FBVVcsZUFBZUEsQ0FBQ0MsS0FBYyxFQUFBO0VBQzVDLElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0MsU0FBUyxFQUFFLE9BQU9DLE1BQU0sQ0FBQ0YsS0FBSyxDQUFDO0VBQy9ELElBQUksSUFBQUcsUUFBQSxhQUFPSCxLQUFLLE1BQUssUUFBUSxFQUFFLE9BQU9JLElBQUksQ0FBQ0MsU0FBUyxDQUFDTCxLQUFLLENBQUM7RUFFM0QsSUFBSU0sS0FBSyxDQUFDQyxPQUFPLENBQUNQLEtBQUssQ0FBQyxFQUFFO0lBQ3hCLE9BQU8sR0FBRyxHQUFHQSxLQUFLLENBQUNRLEdBQUcsQ0FBQ1QsZUFBZSxDQUFDLENBQUNVLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHO0VBQ3pEO0VBRUEsSUFBTUMsSUFBSSxHQUFHcEIsTUFBTSxDQUFDb0IsSUFBSSxDQUFDVixLQUFnQyxDQUFDLENBQUNXLElBQUksQ0FBQSxDQUFFO0VBQ2pFLE9BQ0UsR0FBRyxHQUNIRCxJQUFJLENBQ0RGLEdBQUcsQ0FDRixVQUFDSSxDQUFDO0lBQUEsT0FDQVIsSUFBSSxDQUFDQyxTQUFTLENBQUNPLENBQUMsQ0FBQyxHQUNqQixHQUFHLEdBQ0hiLGVBQWUsQ0FBRUMsS0FBaUMsQ0FBQ1ksQ0FBQyxDQUFDLENBQUM7RUFBQSxFQUN6RCxDQUNBSCxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQ1osR0FBRztBQUVQO0FBRUE7QUFDQTtBQUNBO0FBQ00sU0FBVUksa0JBQWtCQSxDQUFDYixLQUFjLEVBQUE7RUFDL0MsSUFBSUEsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLQyxTQUFTLElBQUlELEtBQUssS0FBSyxFQUFFLEVBQUUsT0FBTyxHQUFHO0VBQ3JFLE9BQU9FLE1BQU0sQ0FBQ0YsS0FBSyxDQUFDO0FBQ3RCO0FBRU0sU0FBVWMscUJBQXFCQSxDQUFDZCxLQUFjLEVBQUE7RUFDbEQsSUFBSUEsS0FBSyxLQUFLLElBQUksSUFBSUEsS0FBSyxLQUFLQyxTQUFTLEVBQUUsT0FBTyxHQUFHO0VBQ3JELE9BQU9ELEtBQUssR0FBRyxLQUFLLEdBQUcsSUFBSTtBQUM3QjtBQUVNLFNBQVVlLHFCQUFxQkEsQ0FBQ2YsS0FBYyxFQUFBO0VBQ2xELElBQUlBLEtBQUssS0FBSyxJQUFJLElBQUlBLEtBQUssS0FBS0MsU0FBUyxJQUFJRCxLQUFLLEtBQUssRUFBRSxFQUFFLE9BQU8sR0FBRztFQUNyRSxJQUFJLE9BQU9BLEtBQUssS0FBSyxRQUFRLEVBQUUsT0FBT0UsTUFBTSxDQUFDRixLQUFLLENBQUM7RUFDbkQsSUFBTWdCLEdBQUcsR0FBR0MsTUFBTSxDQUFDakIsS0FBSyxDQUFDO0VBQ3pCLElBQUlpQixNQUFNLENBQUNDLEtBQUssQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBTyxHQUFHO0VBQ2pDLE9BQU9kLE1BQU0sQ0FBQ2MsR0FBRyxDQUFDO0FBQ3BCO0FBRUE7QUFDQTtBQUNBO0FBQ00sU0FBVUcsWUFBWUEsQ0FBQ0MsS0FBeUMsRUFBQTtFQ0ZsRSxJQUFJQyxFQUFFO0VER1IsSUFBSSxPQUFPRCxLQUFLLEtBQUssUUFBUSxFQUFFLE9BQU9BLEtBQUs7RUFDM0MsT0FBTyxDQUFBQyxFQUFBLEdBQUFDLHlCQUFjLENBQUNGLEtBQUssQ0FBQyxNQUFBLElBQUEsSUFBQUMsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlDLHlCQUFjLENBQUNDLEVBQUU7QUFDbkQ7QUFFQTtBQUNBO0FBQ0E7QUFDTSxTQUFVQyxrQkFBa0JBLENBQ2hDQyxNQUFnRCxFQUFBO0VBRWhELElBQUlBLE1BQU0sS0FBSyxLQUFLLElBQUlBLE1BQU0sS0FBS3hCLFNBQVMsRUFBRTtJQUM1QyxPQUFPO01BQUV5QixRQUFRLEVBQUUsS0FBSztNQUFFQyxJQUFJLEVBQUUsQ0FBQTtJQUFFLENBQUU7RUFDdEM7RUFDQSxJQUFBQyxnQkFBQSxHQUFzQ0gsTUFBTSxDQUFwQ0MsUUFBUTtJQUFSQSxRQUFRLEdBQUFFLGdCQUFBLGNBQUcsS0FBSyxHQUFBQSxnQkFBQTtJQUFLRCxJQUFJLEdBQUExQyxNQUFBLENBQUt3QyxNQUFNLEVBQXRDLENBQUEsVUFBQSxDQUE2QixDQUFTO0VBQzVDLE9BQU87SUFBRUMsUUFBUSxFQUFSQSxRQUFRO0lBQUVDLElBQUksRUFBSkE7RUFBSSxDQUFFO0FBQzNCO0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0UsYUFBYUEsQ0FBQzdCLEtBQWMsRUFBQTtFQUNuQyxPQUFPQSxLQUFLLEtBQUssSUFBSSxJQUFJLElBQUFHLFFBQUEsYUFBT0gsS0FBSyxNQUFLLFFBQVEsSUFBSSxDQUFDTSxLQUFLLENBQUNDLE9BQU8sQ0FBQ1AsS0FBSyxDQUFDO0FBQzdFO0FBRU0sU0FBVThCLHFCQUFxQkEsQ0FDbkNDLE1BQStCLEVBQy9CQyxVQUFtRCxFQUFBO0VBRW5ELElBQU10QixJQUFJLEdBQUdwQixNQUFNLENBQUNvQixJQUFJLENBQUNzQixVQUFVLENBQUM7RUFDcEMsSUFBSXRCLElBQUksQ0FBQ2IsTUFBTSxLQUFLLENBQUMsRUFBRSxPQUFPa0MsTUFBTTtFQUVwQztFQUNBO0VBQ0E7RUFDQSxJQUFJRSxNQUFNLEdBQUEzQyxNQUFBLENBQUE0QyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVFILE1BQU0sQ0FBRTtFQUUxQjtFQUNBckIsSUFBSSxDQUFDQyxJQUFJLENBQUEsQ0FBRSxDQUFDd0IsT0FBTyxDQUFDLFVBQUNDLElBQUksRUFBSTtJQUMzQixJQUFNQyxXQUFXLEdBQUdMLFVBQVUsQ0FBQ0ksSUFBSSxDQUFDO0lBQ3BDLElBQUksT0FBT0MsV0FBVyxLQUFLLFVBQVUsRUFBRTtJQUV2QyxJQUFNQyxRQUFRLEdBQUcsSUFBQUMseUJBQWMsRUFBQ04sTUFBTSxFQUFFRyxJQUFJLENBQUM7SUFDN0MsSUFBTUksV0FBVyxHQUFHSCxXQUFXLENBQUNDLFFBQVEsRUFBRUYsSUFBSSxFQUFFSCxNQUFNLENBQUM7SUFFdkQsSUFBSUosYUFBYSxDQUFDVyxXQUFXLENBQUMsRUFBRTtNQUM5QjtNQUNBLElBQU1DLFFBQVEsR0FBR0wsSUFBSSxDQUFDTSxXQUFXLENBQUMsR0FBRyxDQUFDO01BQ3RDLElBQUlELFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNuQjtRQUNBLE9BQU9SLE1BQU0sQ0FBQ0csSUFBSSxDQUFDO1FBQ25COUMsTUFBTSxDQUFDNEMsTUFBTSxDQUFDRCxNQUFNLEVBQUVPLFdBQVcsQ0FBQztNQUNwQyxDQUFDLE1BQU07UUFDTDtRQUNBLElBQU1HLFVBQVUsR0FBR1AsSUFBSSxDQUFDUSxLQUFLLENBQUMsQ0FBQyxFQUFFSCxRQUFRLENBQUM7UUFDMUMsSUFBTUksTUFBTSxHQUFHLElBQUFOLHlCQUFjLEVBQUNOLE1BQU0sRUFBRVUsVUFBVSxDQUFDO1FBQ2pELElBQUlkLGFBQWEsQ0FBQ2dCLE1BQU0sQ0FBQyxFQUFFO1VBQ3pCLElBQU1DLFFBQVEsR0FBR1YsSUFBSSxDQUFDUSxLQUFLLENBQUNILFFBQVEsR0FBRyxDQUFDLENBQUM7VUFDekMsSUFBTU0sU0FBUyxHQUFBekQsTUFBQSxDQUFBNEMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFRVyxNQUFNLENBQUU7VUFDL0IsT0FBT0UsU0FBUyxDQUFDRCxRQUFRLENBQUM7VUFDMUJ4RCxNQUFNLENBQUM0QyxNQUFNLENBQUNhLFNBQVMsRUFBRVAsV0FBVyxDQUFDO1VBQ3JDUCxNQUFNLEdBQUcsSUFBQWUseUJBQWMsRUFBQ2YsTUFBTSxFQUFFVSxVQUFVLEVBQUVJLFNBQVMsQ0FBQztRQUN4RDtNQUNGO0lBQ0YsQ0FBQyxNQUFNO01BQ0w7TUFDQWQsTUFBTSxHQUFHRyxJQUFJLENBQUNhLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FDdkIsSUFBQUQseUJBQWMsRUFBQ2YsTUFBTSxFQUFFRyxJQUFJLEVBQUVJLFdBQVcsQ0FBQyxHQUMxQ2xELE1BQUEsQ0FBQTRDLE1BQUEsQ0FBQTVDLE1BQUEsQ0FBQTRDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBTUQsTUFBTSxDQUFBLE1BQUFpQixnQkFBQSxpQkFBR2QsSUFBSSxFQUFHSSxXQUFXLENBQUEsQ0FBRTtJQUN4QztFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU9QLE1BQU07QUFDZjtBQUVBO0FBQ0E7QUFDQTtBQUNPLElBQU1rQixXQUFXLEdBQUFDLE9BQUEsQ0FBQUQsV0FBQSxHQUFHLFlBQVk7QUFDaEMsSUFBTUUsZ0JBQWdCLEdBQUFELE9BQUEsQ0FBQUMsZ0JBQUEsR0FBRyxxQkFBcUI7QUFFckQ7QUFDTSxTQUFVQyxtQkFBbUJBLENBQUNDLElBQVUsRUFBRUMsT0FBZSxFQUFBO0VBQzdELElBQU1DLEdBQUcsR0FBRyxTQUFOQSxHQUFHQSxDQUFJQyxDQUFTO0lBQUEsT0FBS3hELE1BQU0sQ0FBQ3dELENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztFQUFBO0VBQ3JELE9BQU9ILE9BQU8sQ0FDWEksT0FBTyxDQUFDLE9BQU8sRUFBRTFELE1BQU0sQ0FBQ3FELElBQUksQ0FBQ00sV0FBVyxDQUFBLENBQUUsQ0FBQyxDQUFDLENBQzVDRCxPQUFPLENBQUMsS0FBSyxFQUFFSCxHQUFHLENBQUNGLElBQUksQ0FBQ08sUUFBUSxDQUFBLENBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUN4Q0YsT0FBTyxDQUFDLEtBQUssRUFBRUgsR0FBRyxDQUFDRixJQUFJLENBQUNRLE9BQU8sQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUNuQ0gsT0FBTyxDQUFDLEtBQUssRUFBRUgsR0FBRyxDQUFDRixJQUFJLENBQUNTLFFBQVEsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUNwQ0osT0FBTyxDQUFDLEtBQUssRUFBRUgsR0FBRyxDQUFDRixJQUFJLENBQUNVLFVBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQyxDQUN0Q0wsT0FBTyxDQUFDLEtBQUssRUFBRUgsR0FBRyxDQUFDRixJQUFJLENBQUNXLFVBQVUsQ0FBQSxDQUFFLENBQUMsQ0FBQztBQUMzQztBQUVBO0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRGNNLFNBQVVDLGdCQUFnQkEsQ0FDOUJwQyxNQUErQixFQUMvQnFDLGFBQW1DLEVBQ25DQyxVQUE0QyxFQUFBO0VBRTVDLElBQUlELGFBQWEsS0FBSyxLQUFLLEVBQUUsT0FBT3JDLE1BQU07RUFFMUMsSUFBTXVDLFNBQVMsR0FBRyxTQUFaQSxTQUFTQSxDQUFJZixJQUFVLEVBQUVnQixJQUFZLEVBQWE7SUFDdEQsSUFBSSxPQUFPSCxhQUFhLEtBQUssVUFBVSxFQUFFLE9BQU9BLGFBQWEsQ0FBQ2IsSUFBSSxFQUFFZ0IsSUFBSSxDQUFDO0lBQ3pFLElBQUlILGFBQWEsS0FBSyxRQUFRLEVBQUUsT0FBT2IsSUFBSSxDQUFDaUIsT0FBTyxDQUFBLENBQUU7SUFDckQsSUFBSUosYUFBYSxLQUFLLFFBQVEsRUFBRTtNQUM5QixJQUFNWixPQUFPLEdBQUdhLFVBQVUsQ0FBQ0UsSUFBSSxDQUFDLEtBQUssVUFBVSxHQUFHbEIsZ0JBQWdCLEdBQUdGLFdBQVc7TUFDaEYsT0FBT0csbUJBQW1CLENBQUNDLElBQUksRUFBRUMsT0FBTyxDQUFDO0lBQzNDO0lBQ0EsT0FBT0YsbUJBQW1CLENBQUNDLElBQUksRUFBRWEsYUFBYSxDQUFDO0VBQ2pELENBQUM7RUFFRCxJQUFNSyxLQUFJLEdBQUcsU0FBUEEsSUFBSUEsQ0FBSXpFLEtBQWMsRUFBRXVFLElBQVksRUFBYTtJQUNyRCxJQUFJdkUsS0FBSyxZQUFZMEUsSUFBSSxFQUFFLE9BQU9KLFNBQVMsQ0FBQ3RFLEtBQUssRUFBRXVFLElBQUksQ0FBQztJQUN4RCxJQUFJakUsS0FBSyxDQUFDQyxPQUFPLENBQUNQLEtBQUssQ0FBQyxFQUFFO01BQ3hCLElBQUkyRSxPQUFPLEdBQUcsS0FBSztNQUNuQixJQUFNQyxJQUFJLEdBQUc1RSxLQUFLLENBQUNRLEdBQUcsQ0FBQyxVQUFDcUUsSUFBSSxFQUFFQyxLQUFLLEVBQUk7UUFDckMsSUFBTUMsTUFBTSxHQUFHTixLQUFJLENBQUNJLElBQUksRUFBRU4sSUFBSSxNQUFBUyxNQUFBLENBQU1ULElBQUksT0FBQVMsTUFBQSxDQUFJRixLQUFLLElBQUs1RSxNQUFNLENBQUM0RSxLQUFLLENBQUMsQ0FBQztRQUNwRSxJQUFJQyxNQUFNLEtBQUtGLElBQUksRUFBRUYsT0FBTyxHQUFHLElBQUk7UUFDbkMsT0FBT0ksTUFBTTtNQUNmLENBQUMsQ0FBQztNQUNGLE9BQU9KLE9BQU8sR0FBR0MsSUFBSSxHQUFHNUUsS0FBSztJQUMvQjtJQUNBLElBQUk2QixhQUFhLENBQUM3QixLQUFLLENBQUMsRUFBRTtNQUN4QixJQUFJMkUsUUFBTyxHQUFHLEtBQUs7TUFDbkIsSUFBTUMsS0FBSSxHQUE0QixDQUFBLENBQUU7TUFDeEMsU0FBQUssRUFBQSxNQUFBQyxZQUFBLEdBQWtCNUYsTUFBTSxDQUFDb0IsSUFBSSxDQUFDVixLQUFLLENBQUMsRUFBQWlGLEVBQUEsR0FBQUMsWUFBQSxDQUFBckYsTUFBQSxFQUFBb0YsRUFBQSxJQUFFO1FBQWpDLElBQU1FLEdBQUcsR0FBQUQsWUFBQSxDQUFBRCxFQUFBO1FBQ1osSUFBTUcsS0FBSyxHQUFHcEYsS0FBSyxDQUFDbUYsR0FBRyxDQUFDO1FBQ3hCLElBQU1KLE1BQU0sR0FBR04sS0FBSSxDQUFDVyxLQUFLLEVBQUViLElBQUksTUFBQVMsTUFBQSxDQUFNVCxJQUFJLE9BQUFTLE1BQUEsQ0FBSUcsR0FBRyxJQUFLQSxHQUFHLENBQUM7UUFDekQsSUFBSUosTUFBTSxLQUFLSyxLQUFLLEVBQUVULFFBQU8sR0FBRyxJQUFJO1FBQ3BDQyxLQUFJLENBQUNPLEdBQUcsQ0FBQyxHQUFHSixNQUFNO01BQ3BCO01BQ0EsT0FBT0osUUFBTyxHQUFHQyxLQUFJLEdBQUc1RSxLQUFLO0lBQy9CO0lBQ0EsT0FBT0EsS0FBSztFQUNkLENBQUM7RUFFRCxPQUFPeUUsS0FBSSxDQUFDMUMsTUFBTSxFQUFFLEVBQUUsQ0FBNEI7QUFDcEQ7QUFFQTtBQUNBO0FBQ0E7QUFDTSxTQUFVc0QsYUFBYUEsQ0FDM0J0RCxNQUErQixFQUFBO0VBRS9CLElBQU1FLE1BQU0sR0FBNEIsQ0FBQSxDQUFFO0VBQzFDLFNBQUFxRCxHQUFBLE1BQUFDLGFBQUEsR0FBa0JqRyxNQUFNLENBQUNvQixJQUFJLENBQUNxQixNQUFNLENBQUMsRUFBQXVELEdBQUEsR0FBQUMsYUFBQSxDQUFBMUYsTUFBQSxFQUFBeUYsR0FBQSxJQUFFO0lBQWxDLElBQU1ILEdBQUcsR0FBQUksYUFBQSxDQUFBRCxHQUFBO0lBQ1osSUFBTUUsQ0FBQyxHQUFHekQsTUFBTSxDQUFDb0QsR0FBRyxDQUFDO0lBQ3JCLElBQUlLLENBQUMsS0FBSyxJQUFJLElBQUlBLENBQUMsS0FBS3ZGLFNBQVMsSUFBSXVGLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDL0MsSUFBSTNELGFBQWEsQ0FBQzJELENBQUMsQ0FBQyxFQUFFO01BQ3BCLElBQU1DLE9BQU8sR0FBR0osYUFBYSxDQUFDRyxDQUFDLENBQUM7TUFDaEMsSUFBSWxHLE1BQU0sQ0FBQ29CLElBQUksQ0FBQytFLE9BQU8sQ0FBQyxDQUFDNUYsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUNuQ29DLE1BQU0sQ0FBQ2tELEdBQUcsQ0FBQyxHQUFHTSxPQUFPO01BQ3ZCO0lBQ0YsQ0FBQyxNQUFNO01BQ0x4RCxNQUFNLENBQUNrRCxHQUFHLENBQUMsR0FBR0ssQ0FBQztJQUNqQjtFQUNGO0VBQ0EsT0FBT3ZELE1BQU07QUFDZjtBQVdNLFNBQVV5RCxrQkFBa0JBLENBQ2hDQyxTQUE4QixFQUFBO0VBRTlCLE9BQU9yRyxNQUFNLENBQUNzRyxPQUFPLENBQUNELFNBQVMsQ0FBQyxDQUFDbkYsR0FBRyxDQUFDLFVBQUFxRixJQUFBLEVBQWtCO0lBQUEsSUFBQUMsS0FBQSxPQUFBQyxlQUFBLGFBQUFGLElBQUE7TUFBaEJWLEdBQUcsR0FBQVcsS0FBQTtNQUFFckUsTUFBTSxHQUFBcUUsS0FBQTtJQUNoRCxJQUFJLE9BQU9yRSxNQUFNLEtBQUssUUFBUSxFQUFFO01BQzlCLE9BQU87UUFBRXVFLEtBQUssRUFBRXZFLE1BQU07UUFBRXpCLEtBQUssRUFBRW1GO01BQUcsQ0FBRTtJQUN0QztJQUNBLE9BQU87TUFBRWEsS0FBSyxFQUFFdkUsTUFBTSxDQUFDd0UsSUFBSTtNQUFFakcsS0FBSyxFQUFFbUYsR0FBRztNQUFFekQsUUFBUSxFQUFFRCxNQUFNLENBQUNDO0lBQVEsQ0FBRTtFQUN0RSxDQUFDLENBQUM7QUFDSiIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IFdJRFRIX1NJWkVfTUFQIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2V0TmVzdGVkVmFsdWUsIHNldE5lc3RlZFZhbHVlIH0gZnJvbSAnLi9jb3JlL3BhdGhVdGlscyc7XG4vLyBSZS1leHBvcnRlZCBmb3IgY29uc3VtZXJzIHRoYXQgaW1wb3J0IHRoZSBuZXN0ZWQtcGF0aCBoZWxwZXJzIGZyb20gYC4vdXRpbHNgXG4vLyAoUHJvRm9ybURlcGVuZGVuY3ksIFByb0Zvcm1MaXN0KS4gQ2Fub25pY2FsIGRlZmluaXRpb25zIGxpdmUgaW4gY29yZS9wYXRoVXRpbHMuXG5leHBvcnQgeyBnZXROZXN0ZWRWYWx1ZSwgc2V0TmVzdGVkVmFsdWUgfTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gc3RhYmxlU2VyaWFsaXplIOKAlCBkZXRlcm1pbmlzdGljIGRlZXAgc2VyaWFsaXphdGlvbiBmb3IgcGFyYW1zIGNvbXBhcmlzb25cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHN0YWJsZVNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JylcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuICdbJyArIHZhbHVlLm1hcChzdGFibGVTZXJpYWxpemUpLmpvaW4oJywnKSArICddJztcbiAgICB9XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKS5zb3J0KCk7XG4gICAgcmV0dXJuICgneycgK1xuICAgICAgICBrZXlzXG4gICAgICAgICAgICAubWFwKChrKSA9PiBKU09OLnN0cmluZ2lmeShrKSArXG4gICAgICAgICAgICAnOicgK1xuICAgICAgICAgICAgc3RhYmxlU2VyaWFsaXplKHZhbHVlW2tdKSlcbiAgICAgICAgICAgIC5qb2luKCcsJykgK1xuICAgICAgICAnfScpO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSZWFkb25seSByZW5kZXJlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRleHRSZWFkb25seSh2YWx1ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSAnJylcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCb29sZWFuUmVhZG9ubHkodmFsdWUpIHtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gdmFsdWUgPyAnWWVzJyA6ICdObyc7XG59XG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTnVtZXJpY1JlYWRvbmx5KHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKVxuICAgICAgICByZXR1cm4gJy0nO1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTtcbiAgICBjb25zdCBudW0gPSBOdW1iZXIodmFsdWUpO1xuICAgIGlmIChOdW1iZXIuaXNOYU4obnVtKSlcbiAgICAgICAgcmV0dXJuICctJztcbiAgICByZXR1cm4gU3RyaW5nKG51bSk7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHJlc29sdmVXaWR0aCDigJQgY29udmVydCBuYW1lZCB3aWR0aCB0byBweCBvciBwYXNzIHRocm91Z2ggbnVtYmVyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlV2lkdGgod2lkdGgpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicpXG4gICAgICAgIHJldHVybiB3aWR0aDtcbiAgICByZXR1cm4gKF9hID0gV0lEVEhfU0laRV9NQVBbd2lkdGhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBXSURUSF9TSVpFX01BUC5tZDtcbn1cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gZXh0cmFjdEJ1dHRvblByb3BzIOKAlCBzYWZlbHkgZXh0cmFjdCBwcm9wcyBmcm9tIGJ1dHRvbiBjb25maWdcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RCdXR0b25Qcm9wcyhjb25maWcpIHtcbiAgICBpZiAoY29uZmlnID09PSBmYWxzZSB8fCBjb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4geyBkaXNhYmxlZDogZmFsc2UsIHJlc3Q6IHt9IH07XG4gICAgfVxuICAgIGNvbnN0IHsgZGlzYWJsZWQgPSBmYWxzZSB9ID0gY29uZmlnLCByZXN0ID0gX19yZXN0KGNvbmZpZywgW1wiZGlzYWJsZWRcIl0pO1xuICAgIHJldHVybiB7IGRpc2FibGVkLCByZXN0IH07XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybVN1Ym1pdFZhbHVlcyDigJQgYXBwbHkgcmVnaXN0ZXJlZCBmaWVsZCB0cmFuc2Zvcm1zIHRvIGZvcm0gdmFsdWVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtU3VibWl0VmFsdWVzKHZhbHVlcywgdHJhbnNmb3Jtcykge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgLy8gQWxsIG5lc3RlZCB3cml0ZXMgZ28gdGhyb3VnaCBzZXROZXN0ZWRWYWx1ZSAoY2xvbmVzIGV2ZXJ5IG9iamVjdC9hcnJheSBvblxuICAgIC8vIHRoZSBwYXRoKSDigJQgYHZhbHVlc2AgaXMgdGhlIGxpdmUgZm9ybSBzdGF0ZSBhbmQgbXVzdCBuZXZlciBiZSBtdXRhdGVkO1xuICAgIC8vIG9ubHkgYHJlc3VsdGAgaXRzZWxmIChvdXIgb3duIHNoYWxsb3cgY29weSkgbWF5IGJlIHdyaXR0ZW4gZGlyZWN0bHkuXG4gICAgbGV0IHJlc3VsdCA9IE9iamVjdC5hc3NpZ24oe30sIHZhbHVlcyk7XG4gICAgLy8gUHJvY2VzcyB0cmFuc2Zvcm1zIGluIHNvcnRlZCBrZXkgb3JkZXIgZm9yIGRldGVybWluaXNtXG4gICAga2V5cy5zb3J0KCkuZm9yRWFjaCgobmFtZSkgPT4ge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1GbiA9IHRyYW5zZm9ybXNbbmFtZV07XG4gICAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtRm4gIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHJhd1ZhbHVlID0gZ2V0TmVzdGVkVmFsdWUocmVzdWx0LCBuYW1lKTtcbiAgICAgICAgY29uc3QgdHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1GbihyYXdWYWx1ZSwgbmFtZSwgcmVzdWx0KTtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodHJhbnNmb3JtZWQpKSB7XG4gICAgICAgICAgICAvLyBJZiB0cmFuc2Zvcm0gcmV0dXJucyBhbiBvYmplY3QsIGRlbGV0ZSBvcmlnaW5hbCBrZXkgYW5kIG1lcmdlIHRvIHBhcmVudFxuICAgICAgICAgICAgY29uc3QgZG90SW5kZXggPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7XG4gICAgICAgICAgICBpZiAoZG90SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgLy8gVG9wLWxldmVsIGZpZWxkIOKAlCBkZWxldGUgb3JpZ2luYWwgYW5kIG1lcmdlIGF0IHJvb3RcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVzdWx0W25hbWVdO1xuICAgICAgICAgICAgICAgIE9iamVjdC5hc3NpZ24ocmVzdWx0LCB0cmFuc2Zvcm1lZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBOZXN0ZWQgZmllbGQg4oCUIHJlYnVpbGQgdGhlIHBhcmVudCB3aXRob3V0IHRoZSBvcmlnaW5hbCBrZXksIG1lcmdlZFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudFBhdGggPSBuYW1lLnNsaWNlKDAsIGRvdEluZGV4KTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBnZXROZXN0ZWRWYWx1ZShyZXN1bHQsIHBhcmVudFBhdGgpO1xuICAgICAgICAgICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHBhcmVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGRLZXkgPSBuYW1lLnNsaWNlKGRvdEluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld1BhcmVudCA9IE9iamVjdC5hc3NpZ24oe30sIHBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdQYXJlbnRbY2hpbGRLZXldO1xuICAgICAgICAgICAgICAgICAgICBPYmplY3QuYXNzaWduKG5ld1BhcmVudCwgdHJhbnNmb3JtZWQpO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzZXROZXN0ZWRWYWx1ZShyZXN1bHQsIHBhcmVudFBhdGgsIG5ld1BhcmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gUHJpbWl0aXZlIHZhbHVlIOKAlCByZXBsYWNlIGF0IHRoZSAocG9zc2libHkgbmVzdGVkKSBwYXRoXG4gICAgICAgICAgICByZXN1bHQgPSBuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKHJlc3VsdCwgbmFtZSwgdHJhbnNmb3JtZWQpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHJlc3VsdCksIHsgW25hbWVdOiB0cmFuc2Zvcm1lZCB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIERhdGUgZm9ybWF0dGluZyAoZm9ybS1sZXZlbCBkYXRlRm9ybWF0dGVyLCBkZXBlbmRlbmN5LWZyZWUpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBjb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZLU1NLUREJztcbmV4cG9ydCBjb25zdCBEQVRFX1RJTUVfRk9STUFUID0gJ1lZWVktTU0tREQgSEg6bW06c3MnO1xuLyoqIE1pbmltYWwgcGF0dGVybiBmb3JtYXR0ZXIgc3VwcG9ydGluZyBZWVlZIC8gTU0gLyBERCAvIEhIIC8gbW0gLyBzcyB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBwYXR0ZXJuKSB7XG4gICAgY29uc3QgcGFkID0gKG4pID0+IFN0cmluZyhuKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgIHJldHVybiBwYXR0ZXJuXG4gICAgICAgIC5yZXBsYWNlKC9ZWVlZL2csIFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpKVxuICAgICAgICAucmVwbGFjZSgvTU0vZywgcGFkKGRhdGUuZ2V0TW9udGgoKSArIDEpKVxuICAgICAgICAucmVwbGFjZSgvREQvZywgcGFkKGRhdGUuZ2V0RGF0ZSgpKSlcbiAgICAgICAgLnJlcGxhY2UoL0hIL2csIHBhZChkYXRlLmdldEhvdXJzKCkpKVxuICAgICAgICAucmVwbGFjZSgvbW0vZywgcGFkKGRhdGUuZ2V0TWludXRlcygpKSlcbiAgICAgICAgLnJlcGxhY2UoL3NzL2csIHBhZChkYXRlLmdldFNlY29uZHMoKSkpO1xufVxuLyoqXG4gKiBSZWN1cnNpdmVseSBzZXJpYWxpemUgZXZlcnkgYERhdGVgIGluIGB2YWx1ZXNgIGFjY29yZGluZyB0byBgZGF0ZUZvcm1hdHRlcmAuXG4gKiBXaXRoIGAnc3RyaW5nJ2AsIGZpZWxkcyByZWdpc3RlcmVkIGFzIGB2YWx1ZVR5cGU6ICdkYXRlVGltZSdgIHVzZVxuICogYFlZWVktTU0tREQgSEg6bW06c3NgLCBldmVyeXRoaW5nIGVsc2UgYFlZWVktTU0tRERgLiBVbnRvdWNoZWQgd2hlbiB0aGVcbiAqIGZvcm1hdHRlciBpcyBgZmFsc2VgLiBOb24tRGF0ZSB2YWx1ZXMgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGVWYWx1ZXModmFsdWVzLCBkYXRlRm9ybWF0dGVyLCB2YWx1ZVR5cGVzKSB7XG4gICAgaWYgKGRhdGVGb3JtYXR0ZXIgPT09IGZhbHNlKVxuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIGNvbnN0IGZvcm1hdE9uZSA9IChkYXRlLCBwYXRoKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0ZUZvcm1hdHRlciA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgICAgICAgIHJldHVybiBkYXRlRm9ybWF0dGVyKGRhdGUsIHBhdGgpO1xuICAgICAgICBpZiAoZGF0ZUZvcm1hdHRlciA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XG4gICAgICAgIGlmIChkYXRlRm9ybWF0dGVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IHZhbHVlVHlwZXNbcGF0aF0gPT09ICdkYXRlVGltZScgPyBEQVRFX1RJTUVfRk9STUFUIDogREFURV9GT1JNQVQ7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBwYXR0ZXJuKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0RGF0ZUJ5UGF0dGVybihkYXRlLCBkYXRlRm9ybWF0dGVyKTtcbiAgICB9O1xuICAgIGNvbnN0IHdhbGsgPSAodmFsdWUsIHBhdGgpID0+IHtcbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSlcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXRPbmUodmFsdWUsIHBhdGgpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBuZXh0ID0gdmFsdWUubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHdhbGtlZCA9IHdhbGsoaXRlbSwgcGF0aCA/IGAke3BhdGh9LiR7aW5kZXh9YCA6IFN0cmluZyhpbmRleCkpO1xuICAgICAgICAgICAgICAgIGlmICh3YWxrZWQgIT09IGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybiB3YWxrZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1BsYWluT2JqZWN0KHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IGNoYW5nZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG5leHQgPSB7fTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdmFsdWVba2V5XTtcbiAgICAgICAgICAgICAgICBjb25zdCB3YWxrZWQgPSB3YWxrKGNoaWxkLCBwYXRoID8gYCR7cGF0aH0uJHtrZXl9YCA6IGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKHdhbGtlZCAhPT0gY2hpbGQpXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIG5leHRba2V5XSA9IHdhbGtlZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjaGFuZ2VkID8gbmV4dCA6IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuICAgIHJldHVybiB3YWxrKHZhbHVlcywgJycpO1xufVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBvbWl0TmlsVmFsdWVzIOKAlCByZWN1cnNpdmVseSByZW1vdmUgbnVsbCAvIHVuZGVmaW5lZCAvICcnIGZyb20gb2JqZWN0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmV4cG9ydCBmdW5jdGlvbiBvbWl0TmlsVmFsdWVzKHZhbHVlcykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHZhbHVlcykpIHtcbiAgICAgICAgY29uc3QgdiA9IHZhbHVlc1trZXldO1xuICAgICAgICBpZiAodiA9PT0gbnVsbCB8fCB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gJycpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKGlzUGxhaW5PYmplY3QodikpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuZWQgPSBvbWl0TmlsVmFsdWVzKHYpO1xuICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKGNsZWFuZWQpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IGNsZWFuZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXN1bHRba2V5XSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2YWx1ZUVudW1Ub09wdGlvbnModmFsdWVFbnVtKSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlRW51bSkubWFwKChba2V5LCBjb25maWddKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmV0dXJuIHsgbGFiZWw6IGNvbmZpZywgdmFsdWU6IGtleSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiBjb25maWcudGV4dCwgdmFsdWU6IGtleSwgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB9O1xuICAgIH0pO1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
border-radius: var(--om-radius-200, 8px);
|
|
34
34
|
box-shadow: var(--om-shadow-200, 0 10px 22px rgba(0, 0, 0, 0.1));
|
|
35
35
|
opacity: 1;
|
|
36
|
+
z-index: 999;
|
|
36
37
|
}
|
|
37
38
|
.om-component-ui-tooltip[role=tooltip] .om-component-ui-tooltip-title {
|
|
38
39
|
font-size: var(--om-title-sm-font-size);
|