@onepercentio/one-ui 0.21.3 → 0.21.4
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/ai/components/UncontrolledTransition/UncontrolledTransition.ai.d.ts +15 -0
- package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js +37 -0
- package/ai/components/UncontrolledTransition/UncontrolledTransition.ai.js.map +1 -0
- package/ai/hooks/ui/useAlternating.ai.d.ts +9 -0
- package/ai/hooks/ui/useAlternating.ai.js +17 -0
- package/ai/hooks/ui/useAlternating.ai.js.map +1 -0
- package/ai/hooks/useHero.ai.d.ts +9 -0
- package/ai/hooks/useHero.ai.js +21 -0
- package/ai/hooks/useHero.ai.js.map +1 -0
- package/ai/types.d.ts +9 -0
- package/ai/types.js +3 -0
- package/ai/types.js.map +1 -0
- package/dist/assets/styles/variables.scss +0 -5
- package/dist/components/AdaptiveButton/AdaptiveButton.d.ts +2 -2
- package/dist/components/AdaptiveContainer/AdaptiveContainer.d.ts +2 -2
- package/dist/components/AdaptiveDialog/AdaptiveDialog.d.ts +4 -3
- package/dist/components/AdaptiveDialog/AdaptiveDialog.js +6 -3
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.d.ts +3 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.js +7 -6
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.d.ts +2 -0
- package/dist/components/AdaptiveSidebar/AdaptiveSidebar.sample.js +13 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.d.ts +3 -0
- package/dist/components/AnchoredTooltip/AnchoredTooltip.js +5 -5
- package/dist/components/AnimatedEntrance/AnimatedEntrance.d.ts +3 -3
- package/dist/components/AsyncWrapper/AsyncWrapper.d.ts +2 -2
- package/dist/components/Avatar/Avatar.d.ts +2 -1
- package/dist/components/BucketFill/BucketFill.d.ts +3 -3
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Button/Button.js +5 -4
- package/dist/components/Button/Button.module.scss +5 -2
- package/dist/components/Card/Card.d.ts +2 -2
- package/dist/components/Chart/Chart.logic.d.ts +3 -1
- package/dist/components/Chart/Chart.logic.js +2 -1
- package/dist/components/Chart/Chart.view.d.ts +2 -1
- package/dist/components/CheckBox/CheckBox.d.ts +1 -1
- package/dist/components/CodeInput/CodeInput.d.ts +9 -0
- package/dist/components/CodeInput/CodeInput.js +85 -0
- package/dist/components/CodeInput/CodeInput.module.scss +5 -0
- package/dist/components/CodeInput/index.d.ts +1 -0
- package/dist/components/CodeInput/index.js +14 -0
- package/dist/components/Collapsable/Collapsable.d.ts +5 -2
- package/dist/components/Collapsable/Collapsable.js +22 -7
- package/dist/components/Countdown/Countdown.d.ts +2 -1
- package/dist/components/Divider/Divider.d.ts +2 -1
- package/dist/components/EmailInput/EmailInput.d.ts +3 -0
- package/dist/components/EmailInput/EmailInput.js +5 -5
- package/dist/components/FadeIn/FadeIn.d.ts +3 -0
- package/dist/components/FadeIn/FadeIn.js +5 -4
- package/dist/components/FileInput/FileInput.d.ts +1 -1
- package/dist/components/FileInput/View/BigFactory/BigFactory.d.ts +2 -2
- package/dist/components/FileInput/View/Compact/Compact.d.ts +2 -1
- package/dist/components/FlowController/FlowController.d.ts +2 -2
- package/dist/components/Form/v2/Form.d.ts +18 -0
- package/dist/components/Form/v2/Form.hook.d.ts +21 -0
- package/dist/components/Form/v2/Form.hook.js +214 -0
- package/dist/components/Form/v2/Form.js +69 -0
- package/dist/components/Form/v2/Form.module.scss +0 -0
- package/dist/components/Form/v2/Form.types.d.ts +97 -0
- package/dist/components/Form/v2/Form.types.js +45 -0
- package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.d.ts +12 -0
- package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.js +74 -0
- package/dist/components/Form/v2/FormField/Extensions/DateField/DateField.module.scss +0 -0
- package/dist/components/Form/v2/FormField/Extensions/DateField/index.d.ts +1 -0
- package/dist/components/Form/v2/FormField/Extensions/DateField/index.js +14 -0
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.d.ts +10 -0
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.js +92 -0
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/PhoneField.module.scss +0 -0
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.d.ts +1 -0
- package/dist/components/Form/v2/FormField/Extensions/PhoneField/index.js +14 -0
- package/dist/components/Form/v2/FormField/FormField.d.ts +6 -0
- package/dist/components/Form/v2/FormField/FormField.js +309 -0
- package/dist/components/Form/v2/FormField/FormField.module.scss +0 -0
- package/dist/components/Form/v2/FormField/FormField.types.d.ts +83 -0
- package/dist/components/Form/v2/FormField/FormField.types.js +13 -0
- package/dist/components/Form/v2/FormField/index.d.ts +1 -0
- package/dist/components/Form/v2/FormField/index.js +14 -0
- package/dist/components/Form/v2/index.d.ts +1 -0
- package/dist/components/Form/v2/index.js +14 -0
- package/dist/components/HSForms/HSForms.d.ts +2 -1
- package/dist/components/Header/Header.d.ts +2 -2
- package/dist/components/HeaderCloseBtn/HeaderCloseBtn.d.ts +2 -1
- package/dist/components/InfinityScroll/InfinityScroll.d.ts +3 -0
- package/dist/components/InfinityScroll/InfinityScroll.js +5 -5
- package/dist/components/Input/Input.d.ts +3 -0
- package/dist/components/Input/Input.js +4 -4
- package/dist/components/InstantCounter/InstantCounter.d.ts +3 -0
- package/dist/components/InstantCounter/InstantCounter.js +5 -4
- package/dist/components/LavaLamp/LavaLamp.d.ts +2 -2
- package/dist/components/LavaLamp/LavaLamp.js +1 -1
- package/dist/components/LavaLamp/v2/LavaLamp.d.ts +2 -2
- package/dist/components/LinkToId/LinkToId.d.ts +2 -2
- package/dist/components/Loader/Loader.d.ts +1 -1
- package/dist/components/LoaderDotsIndicator/LoaderDotsIndicator.d.ts +2 -1
- package/dist/components/LoopableVideo/LoopableVideo.d.ts +2 -2
- package/dist/components/MainGrid/MainGrid.d.ts +3 -0
- package/dist/components/MainGrid/MainGrid.js +5 -4
- package/dist/components/MutableHamburgerButton/MutableHamburgerButton.d.ts +1 -1
- package/dist/components/Notification/Notification.d.ts +2 -2
- package/dist/components/OrderableList/OrderableList.d.ts +1 -1
- package/dist/components/PaginationIndicator/PaginationIndicator.d.ts +9 -6
- package/dist/components/PaginationIndicator/PaginationIndicator.js +49 -11
- package/dist/components/Parallax/Parallax.d.ts +3 -0
- package/dist/components/Parallax/Parallax.js +5 -4
- package/dist/components/PasswordInput/PasswordInput.d.ts +3 -0
- package/dist/components/PasswordInput/PasswordInput.js +5 -5
- package/dist/components/PingPongText/PingPongText.d.ts +2 -2
- package/dist/components/PixelatedScan/PixelatedScan.d.ts +2 -1
- package/dist/components/Portal/Portal.d.ts +1 -1
- package/dist/components/ProgressBar/ProgressBar.d.ts +3 -3
- package/dist/components/ProgressTexts/ProgressTexts.d.ts +1 -1
- package/dist/components/Radio/Radio.d.ts +1 -1
- package/dist/components/SectionContainer/SectionContainer.d.ts +3 -0
- package/dist/components/SectionContainer/SectionContainer.js +5 -4
- package/dist/components/Select/Select.d.ts +3 -3
- package/dist/components/Select/Select.js +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +2 -1
- package/dist/components/Spacing/Spacing.d.ts +2 -1
- package/dist/components/StaticScroller/StaticScroller.d.ts +3 -0
- package/dist/components/StaticScroller/StaticScroller.js +5 -4
- package/dist/components/Switch/Switch.d.ts +2 -2
- package/dist/components/Table/Table.d.ts +2 -1
- package/dist/components/Tabs/Tabs.d.ts +2 -2
- package/dist/components/Text/Text.d.ts +7 -5
- package/dist/components/Text/Text.js +5 -4
- package/dist/components/Text/Text.module.scss +4 -0
- package/dist/components/Transition/Transition.d.ts +8 -5
- package/dist/components/Transition/Transition.js +18 -16
- package/dist/components/Transition/Transition.module.scss +1 -1
- package/dist/components/UncontrolledTransition/UncontrolledTransition.d.ts +3 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.js +25 -13
- package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.d.ts +2 -0
- package/dist/components/UncontrolledTransition/UncontrolledTransition.sample.js +44 -0
- package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.d.ts +4 -1
- package/dist/components/WalletConnectionWrapper/WalletConnectionWrapper.js +6 -5
- package/dist/components/utilitary/ScrollAndFocusLock/ScrollAndFocusLock.d.ts +2 -2
- package/dist/context/AsyncProcess.d.ts +2 -1
- package/dist/context/ContextAsyncControl.d.ts +24 -0
- package/dist/context/ContextAsyncControl.js +101 -0
- package/dist/context/CustomBrowserRouter.d.ts +2 -2
- package/dist/context/OneUIProvider.d.ts +29 -1
- package/dist/context/OneUIProvider.js +1 -1
- package/dist/hooks/persistence/useLocalStorage.d.ts +1 -1
- package/dist/hooks/persistence/useLocalStorage.js +5 -1
- package/dist/hooks/ui/useAlternating.d.ts +4 -0
- package/dist/hooks/ui/useAlternating.js +34 -0
- package/dist/hooks/ui/usePaginationControls.d.ts +2 -2
- package/dist/hooks/useAsyncControl.d.ts +15 -3
- package/dist/hooks/useAsyncControl.js +24 -20
- package/dist/hooks/useHero.d.ts +4 -2
- package/dist/hooks/useHero.js +39 -15
- package/dist/hooks/useHero.module.scss +1 -1
- package/dist/hooks/useShortIntl.d.ts +1 -1
- package/dist/hooks/useShortIntl.js +1 -1
- package/dist/models/GenericContract.d.ts +3 -3
- package/dist/models/GenericContract.js +5 -3
- package/dist/storybookUtils/index.d.ts +2 -2
- package/dist/type-utils.d.ts +5 -0
- package/dist/type-utils.js +1 -1
- package/dist/utility.d.js +1 -1
- package/package.json +16 -4
- package/src_ai/components/UncontrolledTransition/UncontrolledTransition.ai.ts +35 -0
- package/src_ai/hooks/ui/useAlternating.ai.ts +15 -0
- package/src_ai/hooks/useHero.ai.ts +18 -0
- package/src_ai/types.ts +10 -0
- package/tsconfig-ai.json +9 -0
|
@@ -90,16 +90,14 @@ function TransitionClasses(type) {
|
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
function ChildrenWrapperFactory(func, key, externalPropsContainer,
|
|
93
|
+
function ChildrenWrapperFactory(func, key, externalPropsContainer, /** This is used to prevent newer "duplicated" keys from being removed after the new element finished animation */
|
|
94
|
+
timestamp, toRemoveKeys) {
|
|
95
|
+
func.createdAt = timestamp;
|
|
94
96
|
func.associatedKey = key;
|
|
95
97
|
func.toRemoveKeys = toRemoveKeys;
|
|
96
98
|
func.externalProps = externalPropsContainer;
|
|
97
99
|
return func;
|
|
98
100
|
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Handles the transition between multiple children and recycling of elements
|
|
102
|
-
**/
|
|
103
101
|
function _Transition(_ref, _containerRef) {
|
|
104
102
|
let step = _ref.step,
|
|
105
103
|
contentStyle = _ref.contentStyle,
|
|
@@ -129,7 +127,7 @@ function _Transition(_ref, _containerRef) {
|
|
|
129
127
|
const func = ChildrenWrapperFactory(function (_ref2) {
|
|
130
128
|
let children = _ref2.children;
|
|
131
129
|
return /*#__PURE__*/_react.default.createElement("div", externalProps, children);
|
|
132
|
-
}, children[step].key || step, externalProps, []);
|
|
130
|
+
}, children[step].key || step, externalProps, Date.now(), []);
|
|
133
131
|
return [func];
|
|
134
132
|
}),
|
|
135
133
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -156,6 +154,7 @@ function _Transition(_ref, _containerRef) {
|
|
|
156
154
|
if (prevStep.current !== step && lockTransitionWidth) containerRef.current.style.width = "".concat(containerRef.current.clientWidth, "px");
|
|
157
155
|
if (prevStep.current !== step && lockTransitionHeight) containerRef.current.style.height = "".concat(containerRef.current.clientHeight, "px");
|
|
158
156
|
const transitionMask = props.transitionType === TransitionAnimationTypes.MASK ? props.maskFactory(containerRef.current) : "";
|
|
157
|
+
const insertedAt = Date.now();
|
|
159
158
|
|
|
160
159
|
/** This runs on backwards */
|
|
161
160
|
if (prevStep.current > step) {
|
|
@@ -185,14 +184,14 @@ function _Transition(_ref, _containerRef) {
|
|
|
185
184
|
(_enteringScreenRef$cu2 = enteringScreenRef.current) === null || _enteringScreenRef$cu2 === void 0 ? void 0 : _enteringScreenRef$cu2.classList.remove(transitionClasses.backward.elementEntering);
|
|
186
185
|
setChildrenWrappers(function (screensAfterTheCurrentStepEntered) {
|
|
187
186
|
if (onDiscardStep) {
|
|
188
|
-
if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove);
|
|
187
|
+
if (isAnimationFromExpectedState) onDiscardStep(prevKeyToRemove, insertedAt);
|
|
189
188
|
if (FirstNextScreen && FirstNextScreen.toRemoveKeys) FirstNextScreen.toRemoveKeys.forEach(onDiscardStep);
|
|
190
189
|
}
|
|
191
190
|
return screensAfterTheCurrentStepEntered.filter(function (s) {
|
|
192
191
|
var _FirstNextScreen$toRe;
|
|
193
192
|
const shouldKeep = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) && !(FirstNextScreen !== null && FirstNextScreen !== void 0 && (_FirstNextScreen$toRe = FirstNextScreen.toRemoveKeys) !== null && _FirstNextScreen$toRe !== void 0 && _FirstNextScreen$toRe.some(function (k) {
|
|
194
193
|
return String(k) === String(s === null || s === void 0 ? void 0 : s.associatedKey);
|
|
195
|
-
}));
|
|
194
|
+
})) || s.createdAt > insertedAt;
|
|
196
195
|
return shouldKeep;
|
|
197
196
|
});
|
|
198
197
|
});
|
|
@@ -208,10 +207,10 @@ function _Transition(_ref, _containerRef) {
|
|
|
208
207
|
const newWrapper = ChildrenWrapperFactory(function (_ref3) {
|
|
209
208
|
let children = _ref3.children;
|
|
210
209
|
return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
|
|
211
|
-
}, key, propsContainer, [prevKeyToRemove].concat(_toConsumableArray((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])));
|
|
210
|
+
}, key, propsContainer, insertedAt, [prevKeyToRemove].concat(_toConsumableArray((FirstNextScreen === null || FirstNextScreen === void 0 ? void 0 : FirstNextScreen.toRemoveKeys) || [])));
|
|
212
211
|
if (FirstNextScreen) return [newWrapper, FirstNextScreen || ChildrenWrapperFactory(function () {
|
|
213
212
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
214
|
-
}, "", {})].concat(_toConsumableArray(restOfScreens));else return [newWrapper];
|
|
213
|
+
}, "", {}, insertedAt)].concat(_toConsumableArray(restOfScreens));else return [newWrapper];
|
|
215
214
|
});
|
|
216
215
|
} else if (prevStep.current < step) {
|
|
217
216
|
var _prevChild$current3;
|
|
@@ -231,10 +230,10 @@ function _Transition(_ref, _containerRef) {
|
|
|
231
230
|
var _nextScreenRef$curren;
|
|
232
231
|
if (e.target !== e.currentTarget) return;
|
|
233
232
|
if (transitionClasses.forward.elementEntering) (_nextScreenRef$curren = nextScreenRef.current) === null || _nextScreenRef$curren === void 0 ? void 0 : _nextScreenRef$curren.classList.remove(transitionClasses.forward.elementEntering);
|
|
234
|
-
if (onDiscardStep) onDiscardStep(prevKeyToRemove);
|
|
233
|
+
if (onDiscardStep) onDiscardStep(prevKeyToRemove, insertedAt);
|
|
235
234
|
setChildrenWrappers(function (screensAfterTheCurrentStepEntered) {
|
|
236
235
|
const nextState = screensAfterTheCurrentStepEntered.filter(function (s) {
|
|
237
|
-
const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove);
|
|
236
|
+
const shouldMantain = (s === null || s === void 0 ? void 0 : s.associatedKey) !== String(prevKeyToRemove) || s.createdAt > insertedAt;
|
|
238
237
|
return shouldMantain;
|
|
239
238
|
});
|
|
240
239
|
return nextState;
|
|
@@ -251,10 +250,10 @@ function _Transition(_ref, _containerRef) {
|
|
|
251
250
|
const newWrapper = ChildrenWrapperFactory(function (_ref4) {
|
|
252
251
|
let children = _ref4.children;
|
|
253
252
|
return /*#__PURE__*/_react.default.createElement("div", propsContainer, children);
|
|
254
|
-
}, key, propsContainer);
|
|
253
|
+
}, key, propsContainer, insertedAt);
|
|
255
254
|
return [].concat(_toConsumableArray(screensBeforeChangingStep.slice(0, lastIndex)), [lastWrapper || ChildrenWrapperFactory(function () {
|
|
256
255
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null);
|
|
257
|
-
}, "fallback", {}), newWrapper]);
|
|
256
|
+
}, "fallback", {}, insertedAt), newWrapper]);
|
|
258
257
|
});
|
|
259
258
|
}
|
|
260
259
|
return function () {
|
|
@@ -314,7 +313,7 @@ function _Transition(_ref, _containerRef) {
|
|
|
314
313
|
return ((a === null || a === void 0 ? void 0 : a.key) || i) === (Wrapper === null || Wrapper === void 0 ? void 0 : Wrapper.associatedKey);
|
|
315
314
|
});
|
|
316
315
|
return /*#__PURE__*/_react.default.createElement(Wrapper, {
|
|
317
|
-
key: Wrapper
|
|
316
|
+
key: "".concat(Wrapper.associatedKey, " ").concat(Wrapper.createdAt)
|
|
318
317
|
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childToRender));
|
|
319
318
|
})));
|
|
320
319
|
}
|
|
@@ -328,8 +327,11 @@ let TransitionAnimationTypes = /*#__PURE__*/function (TransitionAnimationTypes)
|
|
|
328
327
|
TransitionAnimationTypes[TransitionAnimationTypes["CUSTOM"] = 6] = "CUSTOM";
|
|
329
328
|
return TransitionAnimationTypes;
|
|
330
329
|
}({});
|
|
330
|
+
/**
|
|
331
|
+
* Handles the transition between multiple children and recycling of elements
|
|
332
|
+
**/
|
|
331
333
|
exports.TransitionAnimationTypes = TransitionAnimationTypes;
|
|
332
334
|
const Transition = /*#__PURE__*/(0, _react.forwardRef)(_Transition);
|
|
333
335
|
var _default = Transition;
|
|
334
336
|
exports.default = _default;
|
|
335
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIml0ZXJhdG9yIiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsIm1pbkxlbiIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsImVyciIsInJldHVybiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlRyYW5zaXRpb25DbGFzc2VzIiwidHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNPSU5fRkxJUCIsImJhY2t3YXJkIiwiZWxlbWVudEV4aXRpbmciLCJTdHlsZXMiLCJmbGlwQm90dG9tVXBPdXQiLCJlbGVtZW50RW50ZXJpbmciLCJmbGlwQm90dG9tVXBJbiIsImZvcndhcmQiLCJGQURFIiwiZmFkZU91dEFic29sdXRlIiwiZmFkZUluRGVsYXllZCIsIlNMSURFIiwiZW50cmFuY2VMZWZ0IiwiZXhpdExlZnQiLCJQT1BfRlJPTV9DTElDS19PUklHSU4iLCJQT1BfRlJPTV9FTEVNRU5UX0lEIiwiZmFkZUluIiwic2NhbGVPdXQiLCJzY2FsZUluIiwiZmFkZU91dCIsIk1BU0siLCJzdHViRW50ZXJpbmciLCJzdHViIiwiQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeSIsImZ1bmMiLCJleHRlcm5hbFByb3BzQ29udGFpbmVyIiwidG9SZW1vdmVLZXlzIiwiYXNzb2NpYXRlZEtleSIsImV4dGVybmFsUHJvcHMiLCJfVHJhbnNpdGlvbiIsIl9yZWYiLCJfY29udGFpbmVyUmVmIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsIl9yZWYkY29udGVudENsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX2NoaWxkcmVuJHN0ZXAiLCJzdHlsZSIsIl9yZWYyIiwiY3JlYXRlRWxlbWVudCIsIl91c2VTdGF0ZTIiLCJjaGlsZHJlbldyYXBwZXJzIiwic2V0Q2hpbGRyZW5XcmFwcGVycyIsInByZXZTdGVwIiwicHJldkNoaWxkIiwidXNlRWZmZWN0IiwiY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMiIsIl9wcmV2Q2hpbGQkY3VycmVudCIsIl9jaGlsZHJlbiRzdGVwMyIsIm92ZXJmbG93IiwidHJhbnNpdGlvbkNsYXNzZXMiLCJ0cmFuc2l0aW9uVHlwZSIsIkNVU1RPTSIsImNvbmZpZyIsIndpZHRoIiwiY29uY2F0IiwiY2xpZW50V2lkdGgiLCJoZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJ0cmFuc2l0aW9uTWFzayIsIm1hc2tGYWN0b3J5IiwiX3ByZXZDaGlsZCRjdXJyZW50MiIsInN0ZXBUb1JlbW92ZSIsInByZXZLZXlUb1JlbW92ZSIsInNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAiLCJlbnRlcmluZ1NjcmVlblJlZiIsIl9zY3JlZW5zQmVmb3JlQ2hhbmdpbiIsImEiLCJfc2NyZWVuc0JlZm9yZUNoYW5naW4yIiwiRmlyc3ROZXh0U2NyZWVuIiwicmVzdE9mU2NyZWVucyIsIldlYmtpdE1hc2tJbWFnZSIsImFuaW1hdGlvbkVuZExpc3RlbmVyIiwiZXZlbnQiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UiLCJfZW50ZXJpbmdTY3JlZW5SZWYkY3UyIiwiY3VycmVudFRhcmdldCIsImlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUiLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsInNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCIsInMiLCJfRmlyc3ROZXh0U2NyZWVuJHRvUmUiLCJzaG91bGRLZWVwIiwic29tZSIsImsiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicHJvcHNDb250YWluZXIiLCJyZWYiLCJvbkFuaW1hdGlvbkVuZCIsIm5ld1dyYXBwZXIiLCJfcmVmMyIsIkZyYWdtZW50IiwiX3ByZXZDaGlsZCRjdXJyZW50MyIsInN0ZXBUb0RlbGV0ZSIsImxhc3RJbmRleCIsImxhc3RXcmFwcGVyIiwibmV4dFNjcmVlblJlZiIsImUiLCJfbmV4dFNjcmVlblJlZiRjdXJyZW4iLCJuZXh0U3RhdGUiLCJzaG91bGRNYW50YWluIiwiX3JlZjQiLCJlbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxlbWVudElkIiwiX3JlZjUiLCJvZmZzZXRYIiwiY2xpZW50TGVmdCIsIm9mZnNldExlZnQiLCJvZmZzZXRZIiwiY2xpZW50VG9wIiwib2Zmc2V0VG9wIiwicGVyY2VudFgiLCJwZXJjZW50WSIsInByb3BzVG9TcHJlYWQiLCJvbkNsaWNrIiwiX2UkY3VycmVudFRhcmdldCIsImNsaWVudFgiLCJjbGllbnRZIiwic2VjdGlvbiIsIm1hcCIsIldyYXBwZXIiLCJjaGlsZFRvUmVuZGVyIiwiZmluZCIsImV4cG9ydHMiLCJUcmFuc2l0aW9uIiwiZm9yd2FyZFJlZiIsIl9kZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVHJhbnNpdGlvbi9UcmFuc2l0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgQW5pbWF0aW9uRXZlbnQsXG4gIGNyZWF0ZVJlZixcbiAgQ1NTUHJvcGVydGllcyxcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgS2V5LFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICBSZWFjdEVsZW1lbnQsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3R5bGVzIGZyb20gXCIuL1RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblR5cGVEZWZpbml0aW9ucyA9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5TTElERVxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU5cbiAgICAgICAgfCBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuRkFERVxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DT0lOX0ZMSVA7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQ7XG4gICAgICBlbGVtZW50SWQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSztcbiAgICAgIC8qKlxuICAgICAgICogSXQgcHJvdmlkZXMgdGhlIHRyYW5zaXRpb24gY29udGFpbmVyIHNvIHlvdSBjYW4gY3JlYXRlIGEgZHluYW1pYyBzdmcgdG8gbWFzayB3aXRoXG4gICAgICAgKi9cbiAgICAgIG1hc2tGYWN0b3J5OiAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCkgPT4gc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DVVNUT007XG4gICAgICBjb25maWc6IFJldHVyblR5cGU8dHlwZW9mIFRyYW5zaXRpb25DbGFzc2VzPjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uUHJvcHMgPSB7XG4gIHN0ZXA6IG51bWJlcjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBjb250ZW50U3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzO1xuICBjb250ZW50Q2xhc3NOYW1lPzogc3RyaW5nO1xuICBjaGlsZHJlbjogKFJlYWN0LlJlYWN0RWxlbWVudCB8IHVuZGVmaW5lZClbXTtcbiAgb25EaXNjYXJkU3RlcD86IChkaXNjYXJkZWRLZXk6IFJlYWN0LktleSkgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPlxuKToge1xuICAvKipcbiAgICogQXBwbGllZCB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBub3QgdmlzaWJsZSBhbmQgaXMgbm93IGVudGVyaW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGJhY2t3YXJkOiB7XG4gICAgZWxlbWVudEVudGVyaW5nOiBzdHJpbmc7XG4gICAgZWxlbWVudEV4aXRpbmc6IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgdmlzaWJsZSBhbmQgbm93IGlzIGV4aXRpbmcgdGhlIHNjcmVlblxuICAgKi9cbiAgZm9yd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG59IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ09JTl9GTElQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwT3V0LFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZsaXBCb3R0b21VcEluLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXRBYnNvbHV0ZSxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mYWRlSW5EZWxheWVkLFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuU0xJREU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVudHJhbmNlTGVmdCxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmV4aXRMZWZ0LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU46XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc2NhbGVPdXQsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zY2FsZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc3R1YixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbnR5cGUgQ2hpbGRyZW5XcmFwcGVyID0gKChwcm9wczoge1xuICBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl1bbnVtYmVyXTtcbn0pID0+IFJlYWN0RWxlbWVudCkgJiB7XG4gIGFzc29jaWF0ZWRLZXk6IEtleTtcbiAgdG9SZW1vdmVLZXlzPzogS2V5W107XG4gIGV4dGVybmFsUHJvcHM6IHsgW2s6IHN0cmluZ106IGFueSB9O1xufTtcblxuZnVuY3Rpb24gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgZnVuYzogKHA6IHsgY2hpbGRyZW46IFRyYW5zaXRpb25Qcm9wc1tcImNoaWxkcmVuXCJdIH0pID0+IFJlYWN0RWxlbWVudCxcbiAga2V5OiBLZXksXG4gIGV4dGVybmFsUHJvcHNDb250YWluZXI6IHsgW2s6IHN0cmluZ106IGFueSB9LFxuICB0b1JlbW92ZUtleXM/OiBLZXlbXVxuKTogQ2hpbGRyZW5XcmFwcGVyIHtcbiAgKGZ1bmMgYXMgYW55KS5hc3NvY2lhdGVkS2V5ID0ga2V5O1xuICAoZnVuYyBhcyBhbnkpLnRvUmVtb3ZlS2V5cyA9IHRvUmVtb3ZlS2V5cztcbiAgKGZ1bmMgYXMgYW55KS5leHRlcm5hbFByb3BzID0gZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjtcbiAgcmV0dXJuIGZ1bmMgYXMgdW5rbm93biBhcyBDaGlsZHJlbldyYXBwZXI7XG59XG5cbi8qKlxuICogSGFuZGxlcyB0aGUgdHJhbnNpdGlvbiBiZXR3ZWVuIG11bHRpcGxlIGNoaWxkcmVuIGFuZCByZWN5Y2xpbmcgb2YgZWxlbWVudHNcbiAqKi9cbmZ1bmN0aW9uIF9UcmFuc2l0aW9uKFxuICB7XG4gICAgc3RlcCxcbiAgICBjb250ZW50U3R5bGUsXG4gICAgY29udGVudENsYXNzTmFtZSA9IFwiXCIsXG4gICAgY2hpbGRyZW4sXG4gICAgY2xhc3NOYW1lLFxuICAgIG9uRGlzY2FyZFN0ZXAsXG4gICAgbG9ja1RyYW5zaXRpb25XaWR0aCA9IGZhbHNlLFxuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0ID0gZmFsc2UsXG4gICAgLi4ucHJvcHNcbiAgfTogVHJhbnNpdGlvblByb3BzLFxuICBfY29udGFpbmVyUmVmOiBGb3J3YXJkZWRSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuKSB7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIChfY29udGFpbmVyUmVmIGFzIE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPikgfHwgY3JlYXRlUmVmKCksXG4gICAgW19jb250YWluZXJSZWZdXG4gICk7XG4gIGNvbnN0IHByZVRyYW5zaXRpb25EZXRhaWxzID0gdXNlUmVmPENTU1Byb3BlcnRpZXM+KHtcbiAgICB0cmFuc2Zvcm1PcmlnaW46IFwiaW5pdGlhbFwiLFxuICB9KTtcbiAgY29uc3QgW2NoaWxkcmVuV3JhcHBlcnMsIHNldENoaWxkcmVuV3JhcHBlcnNdID0gdXNlU3RhdGU8XG4gICAgKENoaWxkcmVuV3JhcHBlciB8IHVuZGVmaW5lZClbXVxuICA+KCgpID0+IHtcbiAgICBjb25zdCBleHRlcm5hbFByb3BzID0ge1xuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICBrZXk6IFN0cmluZyhjaGlsZHJlbltzdGVwXT8ua2V5IHx8IHN0ZXApLFxuICAgICAgc3R5bGU6IGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzTmFtZTogY29udGVudENsYXNzTmFtZSxcbiAgICB9O1xuICAgIGNvbnN0IGZ1bmMgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgKHsgY2hpbGRyZW4gfSkgPT4gPGRpdiB7Li4uZXh0ZXJuYWxQcm9wc30+e2NoaWxkcmVufTwvZGl2PixcbiAgICAgIGNoaWxkcmVuW3N0ZXBdIS5rZXkgfHwgc3RlcCxcbiAgICAgIGV4dGVybmFsUHJvcHMsXG4gICAgICBbXVxuICAgICk7XG4gICAgcmV0dXJuIFtmdW5jXTtcbiAgfSk7XG5cbiAgY29uc3QgcHJldlN0ZXAgPSB1c2VSZWYoc3RlcCk7XG4gIGNvbnN0IHByZXZDaGlsZCA9IHVzZVJlZihjaGlsZHJlbltzdGVwXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+ICgpID0+IHtcbiAgICBwcmV2Q2hpbGQuY3VycmVudCA9IGNoaWxkcmVuW3N0ZXBdO1xuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gICAgY29uc3QgdHJhbnNpdGlvbkNsYXNzZXMgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5DVVNUT01cbiAgICAgICAgPyBwcm9wcy5jb25maWdcbiAgICAgICAgOiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgICAgICAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlIHx8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5TTElERVxuICAgICAgICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBwcmV2Q2hpbGQuY3VycmVudCAhPT0gbnVsbCAmJlxuICAgICAgY2hpbGRyZW5bc3RlcF0/LmtleSA9PT0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSAvLyBJJ20gcmVuZGVyaW5nIHRoZSBzYW1lIHNjcmVlblxuICAgICkge1xuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGNoaWxkcmVuW3N0ZXBdPy5rZXkgfHwgc3RlcDtcblxuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ICE9PSBzdGVwICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudFdpZHRoXG4gICAgICB9cHhgO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gYCR7XG4gICAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5jbGllbnRIZWlnaHRcbiAgICAgIH1weGA7XG4gICAgY29uc3QgdHJhbnNpdGlvbk1hc2sgPVxuICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLXG4gICAgICAgID8gcHJvcHMubWFza0ZhY3RvcnkoY29udGFpbmVyUmVmLmN1cnJlbnQhKVxuICAgICAgICA6IFwiXCI7XG5cbiAgICAvKiogVGhpcyBydW5zIG9uIGJhY2t3YXJkcyAqL1xuICAgIGlmIChwcmV2U3RlcC5jdXJyZW50ID4gc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvUmVtb3ZlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IHByZXZDaGlsZC5jdXJyZW50Py5rZXkgfHwgc3RlcFRvUmVtb3ZlO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBlbnRlcmluZ1NjcmVlblJlZiA9IGNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgW0ZpcnN0TmV4dFNjcmVlbiwgLi4ucmVzdE9mU2NyZWVuc10gPVxuICAgICAgICAgIHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAuZmlsdGVyKFxuICAgICAgICAgICAgKGEpID0+IGE/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhrZXkpXG4gICAgICAgICAgKTtcblxuICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuKSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihGaXJzdE5leHRTY3JlZW4uZXh0ZXJuYWxQcm9wcywge1xuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICBzdHlsZTogeyAuLi5jb250ZW50U3R5bGUsIFdlYmtpdE1hc2tJbWFnZTogdHJhbnNpdGlvbk1hc2sgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogYCR7dHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEV4aXRpbmd9YCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRMaXN0ZW5lcihldmVudDogQW5pbWF0aW9uRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSB7XG4gICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuXG4gICAgICAgICAgY29uc3QgaXNBbmltYXRpb25Gcm9tRXhwZWN0ZWRTdGF0ZSA9XG4gICAgICAgICAgICBlbnRlcmluZ1NjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QuY29udGFpbnMoXG4gICAgICAgICAgICAgIHRyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBlbnRlcmluZ1NjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEVudGVyaW5nXG4gICAgICAgICAgKTtcbiAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSB7XG4gICAgICAgICAgICAgIGlmIChpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSk7XG4gICAgICAgICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4gJiYgRmlyc3ROZXh0U2NyZWVuLnRvUmVtb3ZlS2V5cylcbiAgICAgICAgICAgICAgICBGaXJzdE5leHRTY3JlZW4udG9SZW1vdmVLZXlzLmZvckVhY2gob25EaXNjYXJkU3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2NyZWVuc0FmdGVyVGhlQ3VycmVudFN0ZXBFbnRlcmVkLmZpbHRlcigocykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBzaG91bGRLZWVwID1cbiAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSAmJlxuICAgICAgICAgICAgICAgICFGaXJzdE5leHRTY3JlZW4/LnRvUmVtb3ZlS2V5cz8uc29tZShcbiAgICAgICAgICAgICAgICAgIChrKSA9PiBTdHJpbmcoaykgPT09IFN0cmluZyhzPy5hc3NvY2lhdGVkS2V5KVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBzaG91bGRLZWVwO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgICAgICAgXCJhbmltYXRpb25lbmRcIixcbiAgICAgICAgICAgIGFuaW1hdGlvbkVuZExpc3RlbmVyIGFzIGFueVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHNDb250YWluZXIgPSB7XG4gICAgICAgICAgcmVmOiBlbnRlcmluZ1NjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY2xhc3NOYW1lOiBgJHt0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmd9ICR7Y29udGVudENsYXNzTmFtZX1gLFxuICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkFuaW1hdGlvbkVuZDogYW5pbWF0aW9uRW5kTGlzdGVuZXIsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dyYXBwZXIgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IHsuLi5wcm9wc0NvbnRhaW5lcn0+e2NoaWxkcmVufTwvZGl2PjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwcm9wc0NvbnRhaW5lcixcbiAgICAgICAgICBbcHJldktleVRvUmVtb3ZlLCAuLi4oRmlyc3ROZXh0U2NyZWVuPy50b1JlbW92ZUtleXMgfHwgW10pXVxuICAgICAgICApO1xuICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuKVxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXdXcmFwcGVyLFxuICAgICAgICAgICAgRmlyc3ROZXh0U2NyZWVuIHx8XG4gICAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoKCkgPT4gPFJlYWN0LkZyYWdtZW50IC8+LCBcIlwiLCB7fSksXG4gICAgICAgICAgICAuLi5yZXN0T2ZTY3JlZW5zLFxuICAgICAgICAgIF07XG4gICAgICAgIGVsc2UgcmV0dXJuIFtuZXdXcmFwcGVyXTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJldlN0ZXAuY3VycmVudCA8IHN0ZXApIHtcbiAgICAgIGNvbnN0IHN0ZXBUb0RlbGV0ZSA9IHByZXZTdGVwLmN1cnJlbnQ7XG4gICAgICBjb25zdCBwcmV2S2V5VG9SZW1vdmUgPSBTdHJpbmcocHJldkNoaWxkLmN1cnJlbnQ/LmtleSB8fCBzdGVwVG9EZWxldGUpO1xuICAgICAgc2V0Q2hpbGRyZW5XcmFwcGVycygoc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCkgPT4ge1xuICAgICAgICBjb25zdCBsYXN0SW5kZXggPSBzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGxhc3RXcmFwcGVyID0gc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcFtsYXN0SW5kZXhdO1xuICAgICAgICBjb25zdCBuZXh0U2NyZWVuUmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgICAgICBpZiAobGFzdFdyYXBwZXIpIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKGxhc3RXcmFwcGVyLmV4dGVybmFsUHJvcHMsIHtcbiAgICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgICAgc3R5bGU6IHsgLi4uY29udGVudFN0eWxlLCBXZWJraXRNYXNrSW1hZ2U6IHRyYW5zaXRpb25NYXNrIH0sXG4gICAgICAgICAgICBjbGFzc05hbWU6IGAke2NvbnRlbnRDbGFzc05hbWV9ICR7dHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RXhpdGluZ31gLFxuICAgICAgICAgICAgb25BbmltYXRpb25FbmQ6IChlOiBBbmltYXRpb25FdmVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgIT09IGUuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgICBpZiAodHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RW50ZXJpbmcpXG4gICAgICAgICAgICAgICAgbmV4dFNjcmVlblJlZi5jdXJyZW50Py5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuZm9yd2FyZC5lbGVtZW50RW50ZXJpbmdcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAob25EaXNjYXJkU3RlcCkgb25EaXNjYXJkU3RlcChwcmV2S2V5VG9SZW1vdmUpO1xuICAgICAgICAgICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXh0U3RhdGUgPSBzY3JlZW5zQWZ0ZXJUaGVDdXJyZW50U3RlcEVudGVyZWQuZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgKHMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkTWFudGFpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgcz8uYXNzb2NpYXRlZEtleSAhPT0gU3RyaW5nKHByZXZLZXlUb1JlbW92ZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRNYW50YWluO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByb3BzQ29udGFpbmVyID0ge1xuICAgICAgICAgIHJlZjogbmV4dFNjcmVlblJlZixcbiAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ31gLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBuZXdXcmFwcGVyID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICAgICAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gPGRpdiB7Li4ucHJvcHNDb250YWluZXJ9PntjaGlsZHJlbn08L2Rpdj47XG4gICAgICAgICAgfSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgcHJvcHNDb250YWluZXJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5zY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwLnNsaWNlKDAsIGxhc3RJbmRleCksXG4gICAgICAgICAgbGFzdFdyYXBwZXIgfHxcbiAgICAgICAgICAgIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoKCkgPT4gPFJlYWN0LkZyYWdtZW50IC8+LCBcImZhbGxiYWNrXCIsIHt9KSxcbiAgICAgICAgICBuZXdXcmFwcGVyLFxuICAgICAgICBdO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBwcmV2U3RlcC5jdXJyZW50ID0gc3RlcDtcbiAgICB9O1xuICB9LCBbc3RlcF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaWxkcmVuV3JhcHBlcnMubGVuZ3RoID09PSAxICYmIGxvY2tUcmFuc2l0aW9uV2lkdGgpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUud2lkdGggPSBcIlwiO1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbkhlaWdodClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5oZWlnaHQgPSBcIlwiO1xuICB9LCBbY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggIT09IDFdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlID09PSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRCAmJlxuICAgICAgXCJlbGVtZW50SWRcIiBpbiBwcm9wc1xuICAgICkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgIGAjJHtwcm9wcy5lbGVtZW50SWR9YFxuICAgICAgKSBhcyBIVE1MRGl2RWxlbWVudDtcblxuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBjbGllbnRXaWR0aCwgY2xpZW50SGVpZ2h0IH0gPSBjb250YWluZXJSZWYuY3VycmVudCE7XG5cbiAgICAgICAgY29uc3Qgb2Zmc2V0WCA9XG4gICAgICAgICAgZWxlbWVudC5jbGllbnRMZWZ0ICsgZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IG9mZnNldFkgPVxuICAgICAgICAgIGVsZW1lbnQuY2xpZW50VG9wICsgZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50LmNsaWVudEhlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRYID0gKG9mZnNldFggKiAxMDApIC8gY2xpZW50V2lkdGg7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuICAgICAgICBwcmVUcmFuc2l0aW9uRGV0YWlscy5jdXJyZW50LnRyYW5zZm9ybU9yaWdpbiA9IGAke3BlcmNlbnRYfSUgJHtwZXJjZW50WX0lYDtcblxuICAgICAgICBPYmplY3QuYXNzaWduKGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZSwge1xuICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbjogYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUsIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJcIjtcbiAgICB9XG4gIH0sIFtjaGlsZHJlbldyYXBwZXJzLmxlbmd0aF0pO1xuICBcbiAgY29uc3QgcHJvcHNUb1NwcmVhZCA9IHsgLi4ucHJvcHMgfSBhcyBhbnk7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLnRyYW5zaXRpb25UeXBlO1xuICBkZWxldGUgcHJvcHNUb1NwcmVhZC5jb25maWc7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNlY3Rpb25cbiAgICAgICAgey4uLnByb3BzVG9TcHJlYWR9XG4gICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY3VycmVudFRhcmdldDogeyBvZmZzZXRUb3AsIG9mZnNldExlZnQsIGNsaWVudFdpZHRoLCBjbGllbnRIZWlnaHQgfSxcbiAgICAgICAgICAgIGNsaWVudFgsXG4gICAgICAgICAgICBjbGllbnRZLFxuICAgICAgICAgIH0gPSBlO1xuICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBjbGllbnRYIC0gb2Zmc2V0TGVmdDtcbiAgICAgICAgICBjb25zdCBvZmZzZXRZID0gY2xpZW50WSAtIG9mZnNldFRvcDtcbiAgICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRZID0gKG9mZnNldFkgKiAxMDApIC8gY2xpZW50SGVpZ2h0O1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgPT09XG4gICAgICAgICAgICAgIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9FTEVNRU5UX0lEIHx8XG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICAgIClcbiAgICAgICAgICAgIHByZVRyYW5zaXRpb25EZXRhaWxzLmN1cnJlbnQudHJhbnNmb3JtT3JpZ2luID0gYCR7cGVyY2VudFh9JSAke3BlcmNlbnRZfSVgO1xuICAgICAgICAgIGlmIChwcm9wcy5vbkNsaWNrKSBwcm9wcy5vbkNsaWNrKGUgYXMgYW55KTtcbiAgICAgICAgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ0cmFuc2l0aW9uLWNvbnRyb2xsZXJcIlxuICAgICAgICByZWY9e2NvbnRhaW5lclJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtTdHlsZXMuc2VjdGlvbn0gJHtjbGFzc05hbWV9YH1cbiAgICAgID5cbiAgICAgICAgeyhjaGlsZHJlbldyYXBwZXJzIGFzIENoaWxkcmVuV3JhcHBlcltdKS5tYXAoKFdyYXBwZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBjaGlsZFRvUmVuZGVyID0gY2hpbGRyZW4uZmluZChcbiAgICAgICAgICAgIChhLCBpKSA9PiAoYT8ua2V5IHx8IGkpID09PSBXcmFwcGVyPy5hc3NvY2lhdGVkS2V5XG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFdyYXBwZXIga2V5PXtXcmFwcGVyPy5hc3NvY2lhdGVkS2V5fT5cbiAgICAgICAgICAgICAgPD57Y2hpbGRUb1JlbmRlcn08Lz5cbiAgICAgICAgICAgIDwvV3JhcHBlcj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICA8Lz5cbiAgKTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzIHtcbiAgU0xJREUsXG4gIFBPUF9GUk9NX0NMSUNLX09SSUdJTixcbiAgUE9QX0ZST01fRUxFTUVOVF9JRCxcbiAgRkFERSxcbiAgQ09JTl9GTElQLFxuICBNQVNLLFxuICBDVVNUT00sXG59XG5cbmNvbnN0IFRyYW5zaXRpb24gPSBmb3J3YXJkUmVmKF9U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
|
|
337
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbk1vZHVsZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJBcnJheSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJfdG9Qcm9wZXJ0eUtleSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiYXJnIiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwidW5kZWZpbmVkIiwicmVzIiwiTnVtYmVyIiwiX3RvQXJyYXkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfbm9uSXRlcmFibGVSZXN0IiwiaXRlciIsIml0ZXJhdG9yIiwiZnJvbSIsIl9zbGljZWRUb0FycmF5IiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwibyIsIm1pbkxlbiIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIl9zIiwiX2UiLCJfeCIsIl9yIiwiX2FyciIsIl9uIiwiX2QiLCJuZXh0IiwiZG9uZSIsImVyciIsInJldHVybiIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImV4Y2x1ZGVkIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UiLCJzb3VyY2VTeW1ib2xLZXlzIiwiaW5kZXhPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwic291cmNlS2V5cyIsIlRyYW5zaXRpb25DbGFzc2VzIiwidHlwZSIsIlRyYW5zaXRpb25BbmltYXRpb25UeXBlcyIsIkNPSU5fRkxJUCIsImJhY2t3YXJkIiwiZWxlbWVudEV4aXRpbmciLCJTdHlsZXMiLCJmbGlwQm90dG9tVXBPdXQiLCJlbGVtZW50RW50ZXJpbmciLCJmbGlwQm90dG9tVXBJbiIsImZvcndhcmQiLCJGQURFIiwiZmFkZU91dEFic29sdXRlIiwiZmFkZUluRGVsYXllZCIsIlNMSURFIiwiZW50cmFuY2VMZWZ0IiwiZXhpdExlZnQiLCJQT1BfRlJPTV9DTElDS19PUklHSU4iLCJQT1BfRlJPTV9FTEVNRU5UX0lEIiwiZmFkZUluIiwic2NhbGVPdXQiLCJzY2FsZUluIiwiZmFkZU91dCIsIk1BU0siLCJzdHViRW50ZXJpbmciLCJzdHViIiwiQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeSIsImZ1bmMiLCJleHRlcm5hbFByb3BzQ29udGFpbmVyIiwidGltZXN0YW1wIiwidG9SZW1vdmVLZXlzIiwiY3JlYXRlZEF0IiwiYXNzb2NpYXRlZEtleSIsImV4dGVybmFsUHJvcHMiLCJfVHJhbnNpdGlvbiIsIl9yZWYiLCJfY29udGFpbmVyUmVmIiwic3RlcCIsImNvbnRlbnRTdHlsZSIsIl9yZWYkY29udGVudENsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsIm9uRGlzY2FyZFN0ZXAiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJwcm9wcyIsImNvbnRhaW5lclJlZiIsInVzZU1lbW8iLCJjcmVhdGVSZWYiLCJwcmVUcmFuc2l0aW9uRGV0YWlscyIsInVzZVJlZiIsInRyYW5zZm9ybU9yaWdpbiIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX2NoaWxkcmVuJHN0ZXAiLCJzdHlsZSIsIl9yZWYyIiwiY3JlYXRlRWxlbWVudCIsIkRhdGUiLCJub3ciLCJfdXNlU3RhdGUyIiwiY2hpbGRyZW5XcmFwcGVycyIsInNldENoaWxkcmVuV3JhcHBlcnMiLCJwcmV2U3RlcCIsInByZXZDaGlsZCIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJfY2hpbGRyZW4kc3RlcDIiLCJfcHJldkNoaWxkJGN1cnJlbnQiLCJfY2hpbGRyZW4kc3RlcDMiLCJvdmVyZmxvdyIsInRyYW5zaXRpb25DbGFzc2VzIiwidHJhbnNpdGlvblR5cGUiLCJDVVNUT00iLCJjb25maWciLCJ3aWR0aCIsImNvbmNhdCIsImNsaWVudFdpZHRoIiwiaGVpZ2h0IiwiY2xpZW50SGVpZ2h0IiwidHJhbnNpdGlvbk1hc2siLCJtYXNrRmFjdG9yeSIsImluc2VydGVkQXQiLCJfcHJldkNoaWxkJGN1cnJlbnQyIiwic3RlcFRvUmVtb3ZlIiwicHJldktleVRvUmVtb3ZlIiwic2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcCIsImVudGVyaW5nU2NyZWVuUmVmIiwiX3NjcmVlbnNCZWZvcmVDaGFuZ2luIiwiYSIsIl9zY3JlZW5zQmVmb3JlQ2hhbmdpbjIiLCJGaXJzdE5leHRTY3JlZW4iLCJyZXN0T2ZTY3JlZW5zIiwiV2Via2l0TWFza0ltYWdlIiwiYW5pbWF0aW9uRW5kTGlzdGVuZXIiLCJldmVudCIsIl9lbnRlcmluZ1NjcmVlblJlZiRjdSIsIl9lbnRlcmluZ1NjcmVlblJlZiRjdTIiLCJjdXJyZW50VGFyZ2V0IiwiaXNBbmltYXRpb25Gcm9tRXhwZWN0ZWRTdGF0ZSIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwic2NyZWVuc0FmdGVyVGhlQ3VycmVudFN0ZXBFbnRlcmVkIiwicyIsIl9GaXJzdE5leHRTY3JlZW4kdG9SZSIsInNob3VsZEtlZXAiLCJzb21lIiwiayIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJwcm9wc0NvbnRhaW5lciIsInJlZiIsIm9uQW5pbWF0aW9uRW5kIiwibmV3V3JhcHBlciIsIl9yZWYzIiwiRnJhZ21lbnQiLCJfcHJldkNoaWxkJGN1cnJlbnQzIiwic3RlcFRvRGVsZXRlIiwibGFzdEluZGV4IiwibGFzdFdyYXBwZXIiLCJuZXh0U2NyZWVuUmVmIiwiZSIsIl9uZXh0U2NyZWVuUmVmJGN1cnJlbiIsIm5leHRTdGF0ZSIsInNob3VsZE1hbnRhaW4iLCJfcmVmNCIsImVsZW1lbnQiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbGVtZW50SWQiLCJfcmVmNSIsIm9mZnNldFgiLCJjbGllbnRMZWZ0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFkiLCJjbGllbnRUb3AiLCJvZmZzZXRUb3AiLCJwZXJjZW50WCIsInBlcmNlbnRZIiwicHJvcHNUb1NwcmVhZCIsIm9uQ2xpY2siLCJfZSRjdXJyZW50VGFyZ2V0IiwiY2xpZW50WCIsImNsaWVudFkiLCJzZWN0aW9uIiwibWFwIiwiV3JhcHBlciIsImNoaWxkVG9SZW5kZXIiLCJmaW5kIiwiZXhwb3J0cyIsIlRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9UcmFuc2l0aW9uL1RyYW5zaXRpb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICBBbmltYXRpb25FdmVudCxcbiAgY3JlYXRlUmVmLFxuICBDU1NQcm9wZXJ0aWVzLFxuICBEZXRhaWxlZEhUTUxQcm9wcyxcbiAgRm9yd2FyZGVkUmVmLFxuICBmb3J3YXJkUmVmLFxuICBLZXksXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIFJlYWN0RWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdHlsZXMgZnJvbSBcIi4vVHJhbnNpdGlvbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zID1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86XG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0NMSUNLX09SSUdJTlxuICAgICAgICB8IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFXG4gICAgICAgIHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNPSU5fRkxJUDtcbiAgICB9XG4gIHwge1xuICAgICAgdHJhbnNpdGlvblR5cGU/OiBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDtcbiAgICAgIGVsZW1lbnRJZDogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0cmFuc2l0aW9uVHlwZT86IFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5NQVNLO1xuICAgICAgLyoqXG4gICAgICAgKiBJdCBwcm92aWRlcyB0aGUgdHJhbnNpdGlvbiBjb250YWluZXIgc28geW91IGNhbiBjcmVhdGUgYSBkeW5hbWljIHN2ZyB0byBtYXNrIHdpdGhcbiAgICAgICAqL1xuICAgICAgbWFza0ZhY3Rvcnk6IChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50KSA9PiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHRyYW5zaXRpb25UeXBlPzogVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTTtcbiAgICAgIGNvbmZpZzogUmV0dXJuVHlwZTx0eXBlb2YgVHJhbnNpdGlvbkNsYXNzZXM+O1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25Qcm9wcyA9IHtcbiAgc3RlcDogbnVtYmVyO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNvbnRlbnRTdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIGNvbnRlbnRDbGFzc05hbWU/OiBzdHJpbmc7XG4gIGNoaWxkcmVuOiAoUmVhY3QuUmVhY3RFbGVtZW50IHwgdW5kZWZpbmVkKVtdO1xuICBvbkRpc2NhcmRTdGVwPzogKGRpc2NhcmRlZEtleTogUmVhY3QuS2V5LCBzdGFydGVkQW5pbWF0aW9uQXQ6IG51bWJlcikgPT4gdm9pZDtcbiAgbG9ja1RyYW5zaXRpb25XaWR0aD86IGJvb2xlYW47XG4gIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbn0gJiBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgT21pdDxcbiAgICBEZXRhaWxlZEhUTUxQcm9wczxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIGFueT4sXG4gICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIlxuICA+O1xuXG5mdW5jdGlvbiBUcmFuc2l0aW9uQ2xhc3NlcyhcbiAgdHlwZTogTm9uTnVsbGFibGU8XG4gICAgRXhjbHVkZTxUcmFuc2l0aW9uUHJvcHNbXCJ0cmFuc2l0aW9uVHlwZVwiXSwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTT5cbiAgPlxuKToge1xuICAvKipcbiAgICogQXBwbGllZCB0byB0aGUgZWxlbWVudCB0aGF0IHdhcyBub3QgdmlzaWJsZSBhbmQgaXMgbm93IGVudGVyaW5nIHRoZSBzY3JlZW5cbiAgICovXG4gIGJhY2t3YXJkOiB7XG4gICAgZWxlbWVudEVudGVyaW5nOiBzdHJpbmc7XG4gICAgZWxlbWVudEV4aXRpbmc6IHN0cmluZztcbiAgfTtcbiAgLyoqXG4gICAqIEFwcGxpZWQgdG8gdGhlIGVsZW1lbnQgdGhhdCB3YXMgdmlzaWJsZSBhbmQgbm93IGlzIGV4aXRpbmcgdGhlIHNjcmVlblxuICAgKi9cbiAgZm9yd2FyZDoge1xuICAgIGVsZW1lbnRFbnRlcmluZzogc3RyaW5nO1xuICAgIGVsZW1lbnRFeGl0aW5nOiBzdHJpbmc7XG4gIH07XG59IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuQ09JTl9GTElQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZsaXBCb3R0b21VcE91dCxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mbGlwQm90dG9tVXBJbixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmxpcEJvdHRvbVVwT3V0LFxuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmZsaXBCb3R0b21VcEluLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5GQURFOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYmFja3dhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmZhZGVPdXRBYnNvbHV0ZSxcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5mYWRlSW5EZWxheWVkLFxuICAgICAgICB9LFxuICAgICAgICBmb3J3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEV4aXRpbmc6IFN0eWxlcy5mYWRlT3V0QWJzb2x1dGUsXG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluRGVsYXllZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuU0xJREU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBiYWNrd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLmVudHJhbmNlTGVmdCxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogXCJcIixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogXCJcIixcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLmV4aXRMZWZ0LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICBjYXNlIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcy5QT1BfRlJPTV9DTElDS19PUklHSU46XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fRUxFTUVOVF9JRDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuZmFkZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc2NhbGVPdXQsXG4gICAgICAgIH0sXG4gICAgICAgIGZvcndhcmQ6IHtcbiAgICAgICAgICBlbGVtZW50RW50ZXJpbmc6IFN0eWxlcy5zY2FsZUluLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuZmFkZU91dCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgY2FzZSBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuTUFTSzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGJhY2t3YXJkOiB7XG4gICAgICAgICAgZWxlbWVudEVudGVyaW5nOiBTdHlsZXMuc3R1YkVudGVyaW5nLFxuICAgICAgICAgIGVsZW1lbnRFeGl0aW5nOiBTdHlsZXMuc3R1YixcbiAgICAgICAgfSxcbiAgICAgICAgZm9yd2FyZDoge1xuICAgICAgICAgIGVsZW1lbnRFbnRlcmluZzogU3R5bGVzLnN0dWJFbnRlcmluZyxcbiAgICAgICAgICBlbGVtZW50RXhpdGluZzogU3R5bGVzLnN0dWIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICB9XG59XG5cbnR5cGUgQ2hpbGRyZW5XcmFwcGVyID0gKChwcm9wczoge1xuICBjaGlsZHJlbjogVHJhbnNpdGlvblByb3BzW1wiY2hpbGRyZW5cIl1bbnVtYmVyXTtcbn0pID0+IFJlYWN0RWxlbWVudCkgJiB7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICBhc3NvY2lhdGVkS2V5OiBLZXk7XG4gIHRvUmVtb3ZlS2V5cz86IEtleVtdO1xuICBleHRlcm5hbFByb3BzOiB7IFtrOiBzdHJpbmddOiBhbnkgfTtcbn07XG5cbmZ1bmN0aW9uIENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gIGZ1bmM6IChwOiB7IGNoaWxkcmVuOiBUcmFuc2l0aW9uUHJvcHNbXCJjaGlsZHJlblwiXSB9KSA9PiBSZWFjdEVsZW1lbnQsXG4gIGtleTogS2V5LFxuICBleHRlcm5hbFByb3BzQ29udGFpbmVyOiB7IFtrOiBzdHJpbmddOiBhbnkgfSxcbiAgLyoqIFRoaXMgaXMgdXNlZCB0byBwcmV2ZW50IG5ld2VyIFwiZHVwbGljYXRlZFwiIGtleXMgZnJvbSBiZWluZyByZW1vdmVkIGFmdGVyIHRoZSBuZXcgZWxlbWVudCBmaW5pc2hlZCBhbmltYXRpb24gKi9cbiAgdGltZXN0YW1wOiBudW1iZXIsXG4gIHRvUmVtb3ZlS2V5cz86IEtleVtdXG4pOiBDaGlsZHJlbldyYXBwZXIge1xuICAoZnVuYyBhcyBhbnkpLmNyZWF0ZWRBdCA9IHRpbWVzdGFtcDtcbiAgKGZ1bmMgYXMgYW55KS5hc3NvY2lhdGVkS2V5ID0ga2V5O1xuICAoZnVuYyBhcyBhbnkpLnRvUmVtb3ZlS2V5cyA9IHRvUmVtb3ZlS2V5cztcbiAgKGZ1bmMgYXMgYW55KS5leHRlcm5hbFByb3BzID0gZXh0ZXJuYWxQcm9wc0NvbnRhaW5lcjtcbiAgcmV0dXJuIGZ1bmMgYXMgdW5rbm93biBhcyBDaGlsZHJlbldyYXBwZXI7XG59XG5mdW5jdGlvbiBfVHJhbnNpdGlvbihcbiAge1xuICAgIHN0ZXAsXG4gICAgY29udGVudFN0eWxlLFxuICAgIGNvbnRlbnRDbGFzc05hbWUgPSBcIlwiLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBvbkRpc2NhcmRTdGVwLFxuICAgIGxvY2tUcmFuc2l0aW9uV2lkdGggPSBmYWxzZSxcbiAgICBsb2NrVHJhbnNpdGlvbkhlaWdodCA9IGZhbHNlLFxuICAgIC4uLnByb3BzXG4gIH06IFRyYW5zaXRpb25Qcm9wcyxcbiAgX2NvbnRhaW5lclJlZjogRm9yd2FyZGVkUmVmPEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbikge1xuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VNZW1vKFxuICAgICgpID0+XG4gICAgICAoX2NvbnRhaW5lclJlZiBhcyBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD4pIHx8IGNyZWF0ZVJlZigpLFxuICAgIFtfY29udGFpbmVyUmVmXVxuICApO1xuICBjb25zdCBwcmVUcmFuc2l0aW9uRGV0YWlscyA9IHVzZVJlZjxDU1NQcm9wZXJ0aWVzPih7XG4gICAgdHJhbnNmb3JtT3JpZ2luOiBcImluaXRpYWxcIixcbiAgfSk7XG4gIGNvbnN0IFtjaGlsZHJlbldyYXBwZXJzLCBzZXRDaGlsZHJlbldyYXBwZXJzXSA9IHVzZVN0YXRlPFxuICAgIChDaGlsZHJlbldyYXBwZXIgfCB1bmRlZmluZWQpW11cbiAgPigoKSA9PiB7XG4gICAgY29uc3QgZXh0ZXJuYWxQcm9wcyA9IHtcbiAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAga2V5OiBTdHJpbmcoY2hpbGRyZW5bc3RlcF0/LmtleSB8fCBzdGVwKSxcbiAgICAgIHN0eWxlOiBjb250ZW50U3R5bGUsXG4gICAgICBjbGFzc05hbWU6IGNvbnRlbnRDbGFzc05hbWUsXG4gICAgfTtcbiAgICBjb25zdCBmdW5jID0gQ2hpbGRyZW5XcmFwcGVyRmFjdG9yeShcbiAgICAgICh7IGNoaWxkcmVuIH0pID0+IDxkaXYgey4uLmV4dGVybmFsUHJvcHN9PntjaGlsZHJlbn08L2Rpdj4sXG4gICAgICBjaGlsZHJlbltzdGVwXSEua2V5IHx8IHN0ZXAsXG4gICAgICBleHRlcm5hbFByb3BzLFxuICAgICAgRGF0ZS5ub3coKSxcbiAgICAgIFtdXG4gICAgKTtcbiAgICByZXR1cm4gW2Z1bmNdO1xuICB9KTtcblxuICBjb25zdCBwcmV2U3RlcCA9IHVzZVJlZihzdGVwKTtcbiAgY29uc3QgcHJldkNoaWxkID0gdXNlUmVmKGNoaWxkcmVuW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgIHByZXZDaGlsZC5jdXJyZW50ID0gY2hpbGRyZW5bc3RlcF07XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLm92ZXJmbG93ID0gXCJoaWRkZW5cIjtcbiAgICBjb25zdCB0cmFuc2l0aW9uQ2xhc3NlcyA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLkNVU1RPTVxuICAgICAgICA/IHByb3BzLmNvbmZpZ1xuICAgICAgICA6IFRyYW5zaXRpb25DbGFzc2VzKFxuICAgICAgICAgICAgcHJvcHMudHJhbnNpdGlvblR5cGUgfHwgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlNMSURFXG4gICAgICAgICAgKTtcblxuICAgIGlmIChcbiAgICAgIHByZXZDaGlsZC5jdXJyZW50ICE9PSBudWxsICYmXG4gICAgICBjaGlsZHJlbltzdGVwXT8ua2V5ID09PSBwcmV2Q2hpbGQuY3VycmVudD8ua2V5IC8vIEknbSByZW5kZXJpbmcgdGhlIHNhbWUgc2NyZWVuXG4gICAgKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2U3RlcC5jdXJyZW50ID0gc3RlcDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qga2V5ID0gY2hpbGRyZW5bc3RlcF0/LmtleSB8fCBzdGVwO1xuXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgIT09IHN0ZXAgJiYgbG9ja1RyYW5zaXRpb25XaWR0aClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS53aWR0aCA9IGAke1xuICAgICAgICBjb250YWluZXJSZWYuY3VycmVudCEuY2xpZW50V2lkdGhcbiAgICAgIH1weGA7XG5cbiAgICBpZiAocHJldlN0ZXAuY3VycmVudCAhPT0gc3RlcCAmJiBsb2NrVHJhbnNpdGlvbkhlaWdodClcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5oZWlnaHQgPSBgJHtcbiAgICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLmNsaWVudEhlaWdodFxuICAgICAgfXB4YDtcbiAgICBjb25zdCB0cmFuc2l0aW9uTWFzayA9XG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLk1BU0tcbiAgICAgICAgPyBwcm9wcy5tYXNrRmFjdG9yeShjb250YWluZXJSZWYuY3VycmVudCEpXG4gICAgICAgIDogXCJcIjtcbiAgICBjb25zdCBpbnNlcnRlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgIC8qKiBUaGlzIHJ1bnMgb24gYmFja3dhcmRzICovXG4gICAgaWYgKHByZXZTdGVwLmN1cnJlbnQgPiBzdGVwKSB7XG4gICAgICBjb25zdCBzdGVwVG9SZW1vdmUgPSBwcmV2U3RlcC5jdXJyZW50O1xuICAgICAgY29uc3QgcHJldktleVRvUmVtb3ZlID0gcHJldkNoaWxkLmN1cnJlbnQ/LmtleSB8fCBzdGVwVG9SZW1vdmU7XG4gICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IGVudGVyaW5nU2NyZWVuUmVmID0gY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgICAgICBjb25zdCBbRmlyc3ROZXh0U2NyZWVuLCAuLi5yZXN0T2ZTY3JlZW5zXSA9XG4gICAgICAgICAgc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5maWx0ZXIoXG4gICAgICAgICAgICAoYSkgPT4gYT8uYXNzb2NpYXRlZEtleSAhPT0gU3RyaW5nKGtleSlcbiAgICAgICAgICApO1xuXG4gICAgICAgIGlmIChGaXJzdE5leHRTY3JlZW4pIHtcbiAgICAgICAgICBPYmplY3QuYXNzaWduKEZpcnN0TmV4dFNjcmVlbi5leHRlcm5hbFByb3BzLCB7XG4gICAgICAgICAgICBcImRhdGEtdGVzdGlkXCI6IFwidHJhbnNpdGlvbi1jb250YWluZXJcIixcbiAgICAgICAgICAgIHN0eWxlOiB7IC4uLmNvbnRlbnRTdHlsZSwgV2Via2l0TWFza0ltYWdlOiB0cmFuc2l0aW9uTWFzayB9LFxuICAgICAgICAgICAgY2xhc3NOYW1lOiBgJHt0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RXhpdGluZ31gLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGFuaW1hdGlvbkVuZExpc3RlbmVyKGV2ZW50OiBBbmltYXRpb25FdmVudDxIVE1MRGl2RWxlbWVudD4pIHtcbiAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBpc0FuaW1hdGlvbkZyb21FeHBlY3RlZFN0YXRlID1cbiAgICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5jb250YWlucyhcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkNsYXNzZXMuYmFja3dhcmQuZWxlbWVudEVudGVyaW5nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGVudGVyaW5nU2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5iYWNrd2FyZC5lbGVtZW50RW50ZXJpbmdcbiAgICAgICAgICApO1xuICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgaWYgKG9uRGlzY2FyZFN0ZXApIHtcbiAgICAgICAgICAgICAgaWYgKGlzQW5pbWF0aW9uRnJvbUV4cGVjdGVkU3RhdGUpXG4gICAgICAgICAgICAgICAgb25EaXNjYXJkU3RlcChwcmV2S2V5VG9SZW1vdmUsIGluc2VydGVkQXQpO1xuICAgICAgICAgICAgICBpZiAoRmlyc3ROZXh0U2NyZWVuICYmIEZpcnN0TmV4dFNjcmVlbi50b1JlbW92ZUtleXMpXG4gICAgICAgICAgICAgICAgRmlyc3ROZXh0U2NyZWVuLnRvUmVtb3ZlS2V5cy5mb3JFYWNoKG9uRGlzY2FyZFN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoKHMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkS2VlcCA9XG4gICAgICAgICAgICAgICAgKHM/LmFzc29jaWF0ZWRLZXkgIT09IFN0cmluZyhwcmV2S2V5VG9SZW1vdmUpICYmXG4gICAgICAgICAgICAgICAgICAhRmlyc3ROZXh0U2NyZWVuPy50b1JlbW92ZUtleXM/LnNvbWUoXG4gICAgICAgICAgICAgICAgICAgIChrKSA9PiBTdHJpbmcoaykgPT09IFN0cmluZyhzPy5hc3NvY2lhdGVkS2V5KVxuICAgICAgICAgICAgICAgICAgKSkgfHxcbiAgICAgICAgICAgICAgICBzIS5jcmVhdGVkQXQhID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEtlZXA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImFuaW1hdGlvbmVuZFwiLFxuICAgICAgICAgICAgYW5pbWF0aW9uRW5kTGlzdGVuZXIgYXMgYW55XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wc0NvbnRhaW5lciA9IHtcbiAgICAgICAgICByZWY6IGVudGVyaW5nU2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBjbGFzc05hbWU6IGAke3RyYW5zaXRpb25DbGFzc2VzLmJhY2t3YXJkLmVsZW1lbnRFbnRlcmluZ30gJHtjb250ZW50Q2xhc3NOYW1lfWAsXG4gICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQW5pbWF0aW9uRW5kOiBhbmltYXRpb25FbmRMaXN0ZW5lcixcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgbmV3V3JhcHBlciA9IENoaWxkcmVuV3JhcHBlckZhY3RvcnkoXG4gICAgICAgICAgKHsgY2hpbGRyZW4gfSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgey4uLnByb3BzQ29udGFpbmVyfT57Y2hpbGRyZW59PC9kaXY+O1xuICAgICAgICAgIH0sXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHByb3BzQ29udGFpbmVyLFxuICAgICAgICAgIGluc2VydGVkQXQsXG4gICAgICAgICAgW3ByZXZLZXlUb1JlbW92ZSwgLi4uKEZpcnN0TmV4dFNjcmVlbj8udG9SZW1vdmVLZXlzIHx8IFtdKV1cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKEZpcnN0TmV4dFNjcmVlbilcbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgICAgIEZpcnN0TmV4dFNjcmVlbiB8fFxuICAgICAgICAgICAgICBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICAgICAgICgpID0+IDxSZWFjdC5GcmFnbWVudCAvPixcbiAgICAgICAgICAgICAgICBcIlwiLFxuICAgICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgICAgIGluc2VydGVkQXRcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLnJlc3RPZlNjcmVlbnMsXG4gICAgICAgICAgXTtcbiAgICAgICAgZWxzZSByZXR1cm4gW25ld1dyYXBwZXJdO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChwcmV2U3RlcC5jdXJyZW50IDwgc3RlcCkge1xuICAgICAgY29uc3Qgc3RlcFRvRGVsZXRlID0gcHJldlN0ZXAuY3VycmVudDtcbiAgICAgIGNvbnN0IHByZXZLZXlUb1JlbW92ZSA9IFN0cmluZyhwcmV2Q2hpbGQuY3VycmVudD8ua2V5IHx8IHN0ZXBUb0RlbGV0ZSk7XG4gICAgICBzZXRDaGlsZHJlbldyYXBwZXJzKChzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwKSA9PiB7XG4gICAgICAgIGNvbnN0IGxhc3RJbmRleCA9IHNjcmVlbnNCZWZvcmVDaGFuZ2luZ1N0ZXAubGVuZ3RoIC0gMTtcbiAgICAgICAgY29uc3QgbGFzdFdyYXBwZXIgPSBzY3JlZW5zQmVmb3JlQ2hhbmdpbmdTdGVwW2xhc3RJbmRleF07XG4gICAgICAgIGNvbnN0IG5leHRTY3JlZW5SZWYgPSBjcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XG4gICAgICAgIGlmIChsYXN0V3JhcHBlcikge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24obGFzdFdyYXBwZXIuZXh0ZXJuYWxQcm9wcywge1xuICAgICAgICAgICAgXCJkYXRhLXRlc3RpZFwiOiBcInRyYW5zaXRpb24tY29udGFpbmVyXCIsXG4gICAgICAgICAgICBzdHlsZTogeyAuLi5jb250ZW50U3R5bGUsIFdlYmtpdE1hc2tJbWFnZTogdHJhbnNpdGlvbk1hc2sgfSxcbiAgICAgICAgICAgIGNsYXNzTmFtZTogYCR7Y29udGVudENsYXNzTmFtZX0gJHt0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFeGl0aW5nfWAsXG4gICAgICAgICAgICBvbkFuaW1hdGlvbkVuZDogKGU6IEFuaW1hdGlvbkV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChlLnRhcmdldCAhPT0gZS5jdXJyZW50VGFyZ2V0KSByZXR1cm47XG4gICAgICAgICAgICAgIGlmICh0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZylcbiAgICAgICAgICAgICAgICBuZXh0U2NyZWVuUmVmLmN1cnJlbnQ/LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uQ2xhc3Nlcy5mb3J3YXJkLmVsZW1lbnRFbnRlcmluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSBvbkRpc2NhcmRTdGVwKHByZXZLZXlUb1JlbW92ZSwgaW5zZXJ0ZWRBdCk7XG4gICAgICAgICAgICAgIHNldENoaWxkcmVuV3JhcHBlcnMoKHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IHNjcmVlbnNBZnRlclRoZUN1cnJlbnRTdGVwRW50ZXJlZC5maWx0ZXIoXG4gICAgICAgICAgICAgICAgICAocykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG91bGRNYW50YWluID1cbiAgICAgICAgICAgICAgICAgICAgICBzPy5hc3NvY2lhdGVkS2V5ICE9PSBTdHJpbmcocHJldktleVRvUmVtb3ZlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgIHMuY3JlYXRlZEF0ID4gaW5zZXJ0ZWRBdDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZE1hbnRhaW47XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFN0YXRlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHNDb250YWluZXIgPSB7XG4gICAgICAgICAgcmVmOiBuZXh0U2NyZWVuUmVmLFxuICAgICAgICAgIFwiZGF0YS10ZXN0aWRcIjogXCJ0cmFuc2l0aW9uLWNvbnRhaW5lclwiLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFN0eWxlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2xhc3NOYW1lOiBgJHtjb250ZW50Q2xhc3NOYW1lfSAke3RyYW5zaXRpb25DbGFzc2VzLmZvcndhcmQuZWxlbWVudEVudGVyaW5nfWAsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG5ld1dyYXBwZXIgPSBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IHsuLi5wcm9wc0NvbnRhaW5lcn0+e2NoaWxkcmVufTwvZGl2PjtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICBwcm9wc0NvbnRhaW5lcixcbiAgICAgICAgICBpbnNlcnRlZEF0XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgLi4uc2NyZWVuc0JlZm9yZUNoYW5naW5nU3RlcC5zbGljZSgwLCBsYXN0SW5kZXgpLFxuICAgICAgICAgIGxhc3RXcmFwcGVyIHx8XG4gICAgICAgICAgICBDaGlsZHJlbldyYXBwZXJGYWN0b3J5KFxuICAgICAgICAgICAgICAoKSA9PiA8UmVhY3QuRnJhZ21lbnQgLz4sXG4gICAgICAgICAgICAgIFwiZmFsbGJhY2tcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgIGluc2VydGVkQXRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgbmV3V3JhcHBlcixcbiAgICAgICAgXTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcHJldlN0ZXAuY3VycmVudCA9IHN0ZXA7XG4gICAgfTtcbiAgfSwgW3N0ZXBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjaGlsZHJlbldyYXBwZXJzLmxlbmd0aCA9PT0gMSAmJiBsb2NrVHJhbnNpdGlvbldpZHRoKVxuICAgICAgY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLndpZHRoID0gXCJcIjtcbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEgJiYgbG9ja1RyYW5zaXRpb25IZWlnaHQpXG4gICAgICBjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUuaGVpZ2h0ID0gXCJcIjtcbiAgfSwgW2NoaWxkcmVuV3JhcHBlcnMubGVuZ3RoICE9PSAxXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoXG4gICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT0gVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgJiZcbiAgICAgIFwiZWxlbWVudElkXCIgaW4gcHJvcHNcbiAgICApIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICBgIyR7cHJvcHMuZWxlbWVudElkfWBcbiAgICAgICkgYXMgSFRNTERpdkVsZW1lbnQ7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IHsgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyUmVmLmN1cnJlbnQhO1xuXG4gICAgICAgIGNvbnN0IG9mZnNldFggPVxuICAgICAgICAgIGVsZW1lbnQuY2xpZW50TGVmdCArIGVsZW1lbnQub2Zmc2V0TGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGggLyAyO1xuICAgICAgICBjb25zdCBvZmZzZXRZID1cbiAgICAgICAgICBlbGVtZW50LmNsaWVudFRvcCArIGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5jbGllbnRIZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBwZXJjZW50WCA9IChvZmZzZXRYICogMTAwKSAvIGNsaWVudFdpZHRoO1xuICAgICAgICBjb25zdCBwZXJjZW50WSA9IChvZmZzZXRZICogMTAwKSAvIGNsaWVudEhlaWdodDtcbiAgICAgICAgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudC50cmFuc2Zvcm1PcmlnaW4gPSBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWA7XG5cbiAgICAgICAgT2JqZWN0LmFzc2lnbihjb250YWluZXJSZWYuY3VycmVudCEuc3R5bGUsIHtcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46IGAke3BlcmNlbnRYfSUgJHtwZXJjZW50WX0lYCxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIE9iamVjdC5hc3NpZ24oY29udGFpbmVyUmVmLmN1cnJlbnQhLnN0eWxlLCBwcmVUcmFuc2l0aW9uRGV0YWlscy5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hpbGRyZW5XcmFwcGVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGNvbnRhaW5lclJlZi5jdXJyZW50IS5zdHlsZS5vdmVyZmxvdyA9IFwiXCI7XG4gICAgfVxuICB9LCBbY2hpbGRyZW5XcmFwcGVycy5sZW5ndGhdKTtcblxuICBjb25zdCBwcm9wc1RvU3ByZWFkID0geyAuLi5wcm9wcyB9IGFzIGFueTtcbiAgZGVsZXRlIHByb3BzVG9TcHJlYWQudHJhbnNpdGlvblR5cGU7XG4gIGRlbGV0ZSBwcm9wc1RvU3ByZWFkLmNvbmZpZztcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8c2VjdGlvblxuICAgICAgICB7Li4ucHJvcHNUb1NwcmVhZH1cbiAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjdXJyZW50VGFyZ2V0OiB7IG9mZnNldFRvcCwgb2Zmc2V0TGVmdCwgY2xpZW50V2lkdGgsIGNsaWVudEhlaWdodCB9LFxuICAgICAgICAgICAgY2xpZW50WCxcbiAgICAgICAgICAgIGNsaWVudFksXG4gICAgICAgICAgfSA9IGU7XG4gICAgICAgICAgY29uc3Qgb2Zmc2V0WCA9IGNsaWVudFggLSBvZmZzZXRMZWZ0O1xuICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBjbGllbnRZIC0gb2Zmc2V0VG9wO1xuICAgICAgICAgIGNvbnN0IHBlcmNlbnRYID0gKG9mZnNldFggKiAxMDApIC8gY2xpZW50V2lkdGg7XG4gICAgICAgICAgY29uc3QgcGVyY2VudFkgPSAob2Zmc2V0WSAqIDEwMCkgLyBjbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBwcm9wcy50cmFuc2l0aW9uVHlwZSA9PT1cbiAgICAgICAgICAgICAgVHJhbnNpdGlvbkFuaW1hdGlvblR5cGVzLlBPUF9GUk9NX0VMRU1FTlRfSUQgfHxcbiAgICAgICAgICAgIHByb3BzLnRyYW5zaXRpb25UeXBlID09PVxuICAgICAgICAgICAgICBUcmFuc2l0aW9uQW5pbWF0aW9uVHlwZXMuUE9QX0ZST01fQ0xJQ0tfT1JJR0lOXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcHJlVHJhbnNpdGlvbkRldGFpbHMuY3VycmVudC50cmFuc2Zvcm1PcmlnaW4gPSBgJHtwZXJjZW50WH0lICR7cGVyY2VudFl9JWA7XG4gICAgICAgICAgaWYgKHByb3BzLm9uQ2xpY2spIHByb3BzLm9uQ2xpY2soZSBhcyBhbnkpO1xuICAgICAgICB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cInRyYW5zaXRpb24tY29udHJvbGxlclwiXG4gICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2Ake1N0eWxlcy5zZWN0aW9ufSAke2NsYXNzTmFtZX1gfVxuICAgICAgPlxuICAgICAgICB7KGNoaWxkcmVuV3JhcHBlcnMgYXMgQ2hpbGRyZW5XcmFwcGVyW10pLm1hcCgoV3JhcHBlcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoaWxkVG9SZW5kZXIgPSBjaGlsZHJlbi5maW5kKFxuICAgICAgICAgICAgKGEsIGkpID0+IChhPy5rZXkgfHwgaSkgPT09IFdyYXBwZXI/LmFzc29jaWF0ZWRLZXlcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8V3JhcHBlciBrZXk9e2Ake1dyYXBwZXIhLmFzc29jaWF0ZWRLZXl9ICR7V3JhcHBlci5jcmVhdGVkQXR9YH0+XG4gICAgICAgICAgICAgIDw+e2NoaWxkVG9SZW5kZXJ9PC8+XG4gICAgICAgICAgICA8L1dyYXBwZXI+XG4gICAgICAgICAgKTtcbiAgICAgICAgfSl9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zaXRpb25BbmltYXRpb25UeXBlcyB7XG4gIFNMSURFLFxuICBQT1BfRlJPTV9DTElDS19PUklHSU4sXG4gIFBPUF9GUk9NX0VMRU1FTlRfSUQsXG4gIEZBREUsXG4gIENPSU5fRkxJUCxcbiAgTUFTSyxcbiAgQ1VTVE9NLFxufVxuXG4vKipcbiAqIEhhbmRsZXMgdGhlIHRyYW5zaXRpb24gYmV0d2VlbiBtdWx0aXBsZSBjaGlsZHJlbiBhbmQgcmVjeWNsaW5nIG9mIGVsZW1lbnRzXG4gKiovXG5jb25zdCBUcmFuc2l0aW9uID0gZm9yd2FyZFJlZihfVHJhbnNpdGlvbik7XG5leHBvcnQgZGVmYXVsdCBUcmFuc2l0aW9uO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBZUEsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUE4QyxNQUFBRyxTQUFBO0FBQUEs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
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import React, { Key, RefObject } from "react";
|
|
2
2
|
import { TransitionProps, TransitionTypeDefinitions } from "../Transition/Transition";
|
|
3
|
+
/**
|
|
4
|
+
* This component receives child with key and applies a transition when the key changes, allowing to swap elements with a fine transition.
|
|
5
|
+
**/
|
|
3
6
|
declare const UncontrolledTransition: React.ForwardRefExoticComponent<({
|
|
4
7
|
className?: string | undefined;
|
|
5
8
|
contentClassName?: string | undefined;
|
|
@@ -29,9 +29,6 @@ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefine
|
|
|
29
29
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
30
30
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
31
31
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
32
|
-
/**
|
|
33
|
-
* This component handles when a child changes and transition this child change, allowing the finest experiences
|
|
34
|
-
**/
|
|
35
32
|
function _UncontrolledTransition(_ref, ref) {
|
|
36
33
|
let _ref$className = _ref.className,
|
|
37
34
|
className = _ref$className === void 0 ? "" : _ref$className,
|
|
@@ -48,9 +45,13 @@ function _UncontrolledTransition(_ref, ref) {
|
|
|
48
45
|
_onDiscardStep = _ref.onDiscardStep,
|
|
49
46
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
50
47
|
const sectionRef = (0, _react.useRef)(null);
|
|
51
|
-
const _useState = (0, _react.useState)({
|
|
52
|
-
|
|
53
|
-
|
|
48
|
+
const _useState = (0, _react.useState)(function () {
|
|
49
|
+
return {
|
|
50
|
+
childStack: [_objectSpread(_objectSpread({}, children), {}, {
|
|
51
|
+
createdAt: Date.now()
|
|
52
|
+
})],
|
|
53
|
+
offset: 1
|
|
54
|
+
};
|
|
54
55
|
}),
|
|
55
56
|
_useState2 = _slicedToArray(_useState, 2),
|
|
56
57
|
_useState2$ = _useState2[0],
|
|
@@ -72,11 +73,15 @@ function _UncontrolledTransition(_ref, ref) {
|
|
|
72
73
|
if (childStack.length === 1 && childStack[0].key === children.key) return;
|
|
73
74
|
if (orientation.current === "forward") setChildStack(function (p) {
|
|
74
75
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
75
|
-
childStack: [].concat(_toConsumableArray(p.childStack), [children
|
|
76
|
+
childStack: [].concat(_toConsumableArray(p.childStack), [_objectSpread(_objectSpread({}, children), {}, {
|
|
77
|
+
createdAt: Date.now()
|
|
78
|
+
})])
|
|
76
79
|
});
|
|
77
80
|
});else setChildStack(function (p) {
|
|
78
81
|
return _objectSpread(_objectSpread({}, p), {}, {
|
|
79
|
-
childStack: [
|
|
82
|
+
childStack: [_objectSpread(_objectSpread({}, children), {}, {
|
|
83
|
+
createdAt: Date.now()
|
|
84
|
+
})].concat(_toConsumableArray(p.childStack))
|
|
80
85
|
});
|
|
81
86
|
});
|
|
82
87
|
}, [children.key]);
|
|
@@ -90,20 +95,23 @@ function _UncontrolledTransition(_ref, ref) {
|
|
|
90
95
|
}
|
|
91
96
|
}, [childStack.length]);
|
|
92
97
|
childStack.forEach(function (a, i, arr) {
|
|
93
|
-
if (a.key === children.key) arr[i] = children
|
|
98
|
+
if (a.key === children.key) arr[i] = _objectSpread(_objectSpread({}, children), {}, {
|
|
99
|
+
createdAt: a.createdAt
|
|
100
|
+
});
|
|
94
101
|
});
|
|
102
|
+
const predictedStep = childStack.length - offset;
|
|
95
103
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, childStack.length ? /*#__PURE__*/_react.default.createElement(_Transition.default, _extends({
|
|
96
104
|
ref: sectionRef,
|
|
97
105
|
contentStyle: contentStyle,
|
|
98
106
|
className: className,
|
|
99
|
-
step:
|
|
100
|
-
onDiscardStep: function onDiscardStep(discardedKey) {
|
|
107
|
+
step: predictedStep,
|
|
108
|
+
onDiscardStep: function onDiscardStep(discardedKey, animatedAt) {
|
|
101
109
|
if (_onDiscardStep) _onDiscardStep(discardedKey);
|
|
102
110
|
orientation.current = "forward";
|
|
103
111
|
setChildStack(function (prev) {
|
|
104
112
|
return {
|
|
105
113
|
childStack: prev.childStack.filter(function (a) {
|
|
106
|
-
return a.key !== discardedKey;
|
|
114
|
+
return a.key !== discardedKey || a.createdAt > animatedAt;
|
|
107
115
|
}),
|
|
108
116
|
offset: prev.offset === 1 ? 1 : prev.offset - 1
|
|
109
117
|
};
|
|
@@ -114,7 +122,11 @@ function _UncontrolledTransition(_ref, ref) {
|
|
|
114
122
|
contentClassName: contentClassName
|
|
115
123
|
}, props), childStack) : null);
|
|
116
124
|
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* This component receives child with key and applies a transition when the key changes, allowing to swap elements with a fine transition.
|
|
128
|
+
**/
|
|
117
129
|
const UncontrolledTransition = /*#__PURE__*/(0, _react.forwardRef)(_UncontrolledTransition);
|
|
118
130
|
var _default = UncontrolledTransition;
|
|
119
131
|
exports.default = _default;
|
|
120
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm8iLCJtaW5MZW4iLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiX2kiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsImRvbmUiLCJlcnIiLCJyZXR1cm4iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJfVW5jb250cm9sbGVkVHJhbnNpdGlvbiIsIl9yZWYiLCJyZWYiLCJfcmVmJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJfcmVmJGNoaWxkcmVuIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJjb250ZW50U3R5bGUiLCJvbkRpc2NhcmRTdGVwIiwicHJvcHMiLCJzZWN0aW9uUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJjaGlsZFN0YWNrIiwib2Zmc2V0IiwiX3VzZVN0YXRlMiIsIl91c2VTdGF0ZTIkIiwic2V0Q2hpbGRTdGFjayIsIm9yaWVudGF0aW9uIiwic2V0T3JpZW50YXRpb24iLCJhIiwiY3VycmVudCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VFZmZlY3QiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJFcnJvciIsInAiLCJjb25jYXQiLCJwcmV2Iiwic3RlcCIsImRpc2NhcmRlZEtleSIsIlVuY29udHJvbGxlZFRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVW5jb250cm9sbGVkVHJhbnNpdGlvbi9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgS2V5LFxuICBSZWZPYmplY3QsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IHtcbiAgVHJhbnNpdGlvblByb3BzLFxuICBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zLFxufSBmcm9tIFwiLi4vVHJhbnNpdGlvbi9UcmFuc2l0aW9uXCI7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgaGFuZGxlcyB3aGVuIGEgY2hpbGQgY2hhbmdlcyBhbmQgdHJhbnNpdGlvbiB0aGlzIGNoaWxkIGNoYW5nZSwgYWxsb3dpbmcgdGhlIGZpbmVzdCBleHBlcmllbmNlc1xuICoqL1xuZnVuY3Rpb24gX1VuY29udHJvbGxlZFRyYW5zaXRpb24oXG4gIHtcbiAgICBjbGFzc05hbWUgPSBcIlwiLFxuICAgIGNvbnRlbnRDbGFzc05hbWUsXG4gICAgY2hpbGRyZW4gPSA8UmVhY3QuRnJhZ21lbnQga2V5PVwiZGVmYXVsdFwiPjwvUmVhY3QuRnJhZ21lbnQ+LFxuICAgIGxvY2tUcmFuc2l0aW9uV2lkdGggPSB0cnVlLFxuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0ID0gZmFsc2UsXG4gICAgY29udGVudFN0eWxlLFxuICAgIG9uRGlzY2FyZFN0ZXAsXG4gICAgLi4ucHJvcHNcbiAgfToge1xuICAgIGNsYXNzTmFtZT86IHN0cmluZztcbiAgICBjb250ZW50Q2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIGNoaWxkcmVuPzogUmVhY3QuUmVhY3RFbGVtZW50O1xuICAgIGxvY2tUcmFuc2l0aW9uV2lkdGg/OiBib29sZWFuO1xuICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PzogYm9vbGVhbjtcbiAgICBvbkRpc2NhcmRTdGVwPzogKGtleTogS2V5KSA9PiB2b2lkO1xuICB9ICYgUGljazxUcmFuc2l0aW9uUHJvcHMsIFwiY29udGVudFN0eWxlXCI+ICZcbiAgICBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zICZcbiAgICBPbWl0PFxuICAgICAgRGV0YWlsZWRIVE1MUHJvcHM8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBhbnk+LFxuICAgICAgXCJjbGFzc05hbWVcIiB8IFwiY2hpbGRyZW5cIiB8IFwicmVmXCJcbiAgICA+LFxuICByZWY6IEZvcndhcmRlZFJlZjx7XG4gICAgc2V0T3JpZW50YXRpb246IChvcmllbnRhdGlvbjogXCJmb3J3YXJkXCIgfCBcImJhY2t3YXJkXCIpID0+IHZvaWQ7XG4gICAgc2VjdGlvblJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PjtcbiAgfT5cbikge1xuICBjb25zdCBzZWN0aW9uUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgW3sgY2hpbGRTdGFjaywgb2Zmc2V0IH0sIHNldENoaWxkU3RhY2tdID0gdXNlU3RhdGU8e1xuICAgIGNoaWxkU3RhY2s6IFJlYWN0LlJlYWN0RWxlbWVudFtdO1xuICAgIG9mZnNldDogbnVtYmVyO1xuICB9Pih7XG4gICAgY2hpbGRTdGFjazogW2NoaWxkcmVuXSxcbiAgICBvZmZzZXQ6IDEsXG4gIH0pO1xuICBjb25zdCBvcmllbnRhdGlvbiA9IHVzZVJlZjxcImZvcndhcmRcIiB8IFwiYmFja3dhcmRcIj4oXCJmb3J3YXJkXCIpO1xuICBmdW5jdGlvbiBzZXRPcmllbnRhdGlvbihhOiB0eXBlb2Ygb3JpZW50YXRpb24uY3VycmVudCkge1xuICAgIG9yaWVudGF0aW9uLmN1cnJlbnQgPSBhO1xuICB9XG5cbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShcbiAgICByZWYsXG4gICAgKCkgPT4gKHtcbiAgICAgIHNldE9yaWVudGF0aW9uLFxuICAgICAgc2VjdGlvblJlZixcbiAgICB9KSxcbiAgICBbXVxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiAmJiAhY2hpbGRyZW4ua2V5KVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlRoZSBwcm92aWRlZCBjaGlsZCBzaG91bGQgaGF2ZSBhIGtleSBwcm9wZXJ0eSwgcGxlYXNlIHByb3ZpZGUgaXRcIlxuICAgICAgKTtcbiAgICBpZiAoY2hpbGRTdGFjay5sZW5ndGggPT09IDEgJiYgY2hpbGRTdGFja1swXS5rZXkgPT09IGNoaWxkcmVuLmtleSkgcmV0dXJuO1xuICAgIGlmIChvcmllbnRhdGlvbi5jdXJyZW50ID09PSBcImZvcndhcmRcIilcbiAgICAgIHNldENoaWxkU3RhY2soKHApID0+ICh7XG4gICAgICAgIC4uLnAsXG4gICAgICAgIGNoaWxkU3RhY2s6IFsuLi5wLmNoaWxkU3RhY2ssIGNoaWxkcmVuXSxcbiAgICAgIH0pKTtcbiAgICBlbHNlXG4gICAgICBzZXRDaGlsZFN0YWNrKChwKSA9PiAoe1xuICAgICAgICAuLi5wLFxuICAgICAgICBjaGlsZFN0YWNrOiBbY2hpbGRyZW4sIC4uLnAuY2hpbGRTdGFja10sXG4gICAgICB9KSk7XG4gIH0sIFtjaGlsZHJlbi5rZXldKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvcmllbnRhdGlvbi5jdXJyZW50ID09PSBcImJhY2t3YXJkXCIpIHtcbiAgICAgIHNldENoaWxkU3RhY2soKHByZXYpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5wcmV2LFxuICAgICAgICAgIG9mZnNldDogcHJldi5jaGlsZFN0YWNrLmxlbmd0aCxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSwgW2NoaWxkU3RhY2subGVuZ3RoXSk7XG5cbiAgY2hpbGRTdGFjay5mb3JFYWNoKChhLCBpLCBhcnIpID0+IHtcbiAgICBpZiAoYS5rZXkgPT09IGNoaWxkcmVuLmtleSkgYXJyW2ldID0gY2hpbGRyZW47XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtjaGlsZFN0YWNrLmxlbmd0aCA/IChcbiAgICAgICAgPFRyYW5zaXRpb25cbiAgICAgICAgICByZWY9e3NlY3Rpb25SZWZ9XG4gICAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgc3RlcD17Y2hpbGRTdGFjay5sZW5ndGggLSBvZmZzZXR9XG4gICAgICAgICAgb25EaXNjYXJkU3RlcD17KGRpc2NhcmRlZEtleSkgPT4ge1xuICAgICAgICAgICAgaWYgKG9uRGlzY2FyZFN0ZXApIG9uRGlzY2FyZFN0ZXAoZGlzY2FyZGVkS2V5KTtcbiAgICAgICAgICAgIG9yaWVudGF0aW9uLmN1cnJlbnQgPSBcImZvcndhcmRcIjtcbiAgICAgICAgICAgIHNldENoaWxkU3RhY2soKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBjaGlsZFN0YWNrOiBwcmV2LmNoaWxkU3RhY2suZmlsdGVyKFxuICAgICAgICAgICAgICAgICAgKGEpID0+IGEua2V5ICE9PSBkaXNjYXJkZWRLZXlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG9mZnNldDogcHJldi5vZmZzZXQgPT09IDEgPyAxIDogcHJldi5vZmZzZXQgLSAxLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBsb2NrVHJhbnNpdGlvbldpZHRoPXtsb2NrVHJhbnNpdGlvbldpZHRofVxuICAgICAgICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PXtsb2NrVHJhbnNpdGlvbkhlaWdodH1cbiAgICAgICAgICBjb250ZW50Q2xhc3NOYW1lPXtjb250ZW50Q2xhc3NOYW1lfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZFN0YWNrfVxuICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICApIDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcbn1cblxuY29uc3QgVW5jb250cm9sbGVkVHJhbnNpdGlvbiA9IGZvcndhcmRSZWYoX1VuY29udHJvbGxlZFRyYW5zaXRpb24pO1xuZXhwb3J0IGRlZmF1bHQgVW5jb250cm9sbGVkVHJhbnNpdGlvbjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQVdBLElBQUFDLFdBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUF1QyxNQUFBRyxTQUFBO0FBQUEsU0FBQUQsdUJBQUFFLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyx5QkFBQUMsV0FBQSxlQUFBQyxPQUFBLGtDQUFBQyxpQkFBQSxPQUFBRCxPQUFBLFFBQUFFLGdCQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEseUJBQUFDLFdBQUEsV0FBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxLQUFBRixXQUFBO0FBQUEsU0FBQVQsd0JBQUFLLEdBQUEsRUFBQUksV0FBQSxTQUFBQSxXQUFBLElB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
|
|
132
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVHJhbnNpdGlvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZXhjbHVkZWQiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsIm5vZGVJbnRlcm9wIiwiV2Vha01hcCIsImNhY2hlQmFiZWxJbnRlcm9wIiwiY2FjaGVOb2RlSW50ZXJvcCIsIl90eXBlb2YiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9leHRlbmRzIiwiYXNzaWduIiwiYmluZCIsInRhcmdldCIsImkiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJzb3VyY2UiLCJhcHBseSIsIl90b0NvbnN1bWFibGVBcnJheSIsImFyciIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImVudW1lcmFibGUiLCJwdXNoIiwiX29iamVjdFNwcmVhZCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsInZhbHVlIiwiX3RvUHJvcGVydHlLZXkiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsImFyZyIsIl90b1ByaW1pdGl2ZSIsIlN0cmluZyIsImlucHV0IiwiaGludCIsInByaW0iLCJ0b1ByaW1pdGl2ZSIsInVuZGVmaW5lZCIsInJlcyIsIk51bWJlciIsIl9zbGljZWRUb0FycmF5IiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX25vbkl0ZXJhYmxlUmVzdCIsIm8iLCJtaW5MZW4iLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsInRlc3QiLCJsZW4iLCJhcnIyIiwiX2kiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsImRvbmUiLCJlcnIiLCJyZXR1cm4iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJleGNsdWRlZCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIiwic291cmNlU3ltYm9sS2V5cyIsImluZGV4T2YiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInNvdXJjZUtleXMiLCJfVW5jb250cm9sbGVkVHJhbnNpdGlvbiIsIl9yZWYiLCJyZWYiLCJfcmVmJGNsYXNzTmFtZSIsImNsYXNzTmFtZSIsImNvbnRlbnRDbGFzc05hbWUiLCJfcmVmJGNoaWxkcmVuIiwiY2hpbGRyZW4iLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJfcmVmJGxvY2tUcmFuc2l0aW9uV2kiLCJsb2NrVHJhbnNpdGlvbldpZHRoIiwiX3JlZiRsb2NrVHJhbnNpdGlvbkhlIiwibG9ja1RyYW5zaXRpb25IZWlnaHQiLCJjb250ZW50U3R5bGUiLCJvbkRpc2NhcmRTdGVwIiwicHJvcHMiLCJzZWN0aW9uUmVmIiwidXNlUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJjaGlsZFN0YWNrIiwiY3JlYXRlZEF0IiwiRGF0ZSIsIm5vdyIsIm9mZnNldCIsIl91c2VTdGF0ZTIiLCJfdXNlU3RhdGUyJCIsInNldENoaWxkU3RhY2siLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYSIsImN1cnJlbnQiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlRWZmZWN0IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRXJyb3IiLCJwIiwiY29uY2F0IiwicHJldiIsInByZWRpY3RlZFN0ZXAiLCJzdGVwIiwiZGlzY2FyZGVkS2V5IiwiYW5pbWF0ZWRBdCIsIlVuY29udHJvbGxlZFRyYW5zaXRpb24iLCJmb3J3YXJkUmVmIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVW5jb250cm9sbGVkVHJhbnNpdGlvbi9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgRGV0YWlsZWRIVE1MUHJvcHMsXG4gIEZvcndhcmRlZFJlZixcbiAgZm9yd2FyZFJlZixcbiAgS2V5LFxuICBSZWZPYmplY3QsXG4gIHVzZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVHJhbnNpdGlvbiBmcm9tIFwiLi4vVHJhbnNpdGlvblwiO1xuaW1wb3J0IHtcbiAgVHJhbnNpdGlvblByb3BzLFxuICBUcmFuc2l0aW9uVHlwZURlZmluaXRpb25zLFxufSBmcm9tIFwiLi4vVHJhbnNpdGlvbi9UcmFuc2l0aW9uXCI7XG5cbmZ1bmN0aW9uIF9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uKFxuICB7XG4gICAgY2xhc3NOYW1lID0gXCJcIixcbiAgICBjb250ZW50Q2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuID0gPFJlYWN0LkZyYWdtZW50IGtleT1cImRlZmF1bHRcIj48L1JlYWN0LkZyYWdtZW50PixcbiAgICBsb2NrVHJhbnNpdGlvbldpZHRoID0gdHJ1ZSxcbiAgICBsb2NrVHJhbnNpdGlvbkhlaWdodCA9IGZhbHNlLFxuICAgIGNvbnRlbnRTdHlsZSxcbiAgICBvbkRpc2NhcmRTdGVwLFxuICAgIC4uLnByb3BzXG4gIH06IHtcbiAgICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gICAgY29udGVudENsYXNzTmFtZT86IHN0cmluZztcbiAgICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0RWxlbWVudDtcbiAgICBsb2NrVHJhbnNpdGlvbldpZHRoPzogYm9vbGVhbjtcbiAgICBsb2NrVHJhbnNpdGlvbkhlaWdodD86IGJvb2xlYW47XG4gICAgb25EaXNjYXJkU3RlcD86IChrZXk6IEtleSkgPT4gdm9pZDtcbiAgfSAmIFBpY2s8VHJhbnNpdGlvblByb3BzLCBcImNvbnRlbnRTdHlsZVwiPiAmXG4gICAgVHJhbnNpdGlvblR5cGVEZWZpbml0aW9ucyAmXG4gICAgT21pdDxcbiAgICAgIERldGFpbGVkSFRNTFByb3BzPFJlYWN0LkhUTUxBdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PiwgYW55PixcbiAgICAgIFwiY2xhc3NOYW1lXCIgfCBcImNoaWxkcmVuXCIgfCBcInJlZlwiXG4gICAgPixcbiAgcmVmOiBGb3J3YXJkZWRSZWY8e1xuICAgIHNldE9yaWVudGF0aW9uOiAob3JpZW50YXRpb246IFwiZm9yd2FyZFwiIHwgXCJiYWNrd2FyZFwiKSA9PiB2b2lkO1xuICAgIHNlY3Rpb25SZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD47XG4gIH0+XG4pIHtcbiAgY29uc3Qgc2VjdGlvblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IFt7IGNoaWxkU3RhY2ssIG9mZnNldCB9LCBzZXRDaGlsZFN0YWNrXSA9IHVzZVN0YXRlPHtcbiAgICBjaGlsZFN0YWNrOiAoUmVhY3QuUmVhY3RFbGVtZW50ICYgeyBjcmVhdGVkQXQ6IG51bWJlciB9KVtdO1xuICAgIG9mZnNldDogbnVtYmVyO1xuICB9PigoKSA9PiAoe1xuICAgIGNoaWxkU3RhY2s6IFt7IC4uLmNoaWxkcmVuLCBjcmVhdGVkQXQ6IERhdGUubm93KCkgfV0sXG4gICAgb2Zmc2V0OiAxLFxuICB9KSk7XG4gIGNvbnN0IG9yaWVudGF0aW9uID0gdXNlUmVmPFwiZm9yd2FyZFwiIHwgXCJiYWNrd2FyZFwiPihcImZvcndhcmRcIik7XG4gIGZ1bmN0aW9uIHNldE9yaWVudGF0aW9uKGE6IHR5cGVvZiBvcmllbnRhdGlvbi5jdXJyZW50KSB7XG4gICAgb3JpZW50YXRpb24uY3VycmVudCA9IGE7XG4gIH1cblxuICB1c2VJbXBlcmF0aXZlSGFuZGxlKFxuICAgIHJlZixcbiAgICAoKSA9PiAoe1xuICAgICAgc2V0T3JpZW50YXRpb24sXG4gICAgICBzZWN0aW9uUmVmLFxuICAgIH0pLFxuICAgIFtdXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiICYmICFjaGlsZHJlbi5rZXkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiVGhlIHByb3ZpZGVkIGNoaWxkIHNob3VsZCBoYXZlIGEga2V5IHByb3BlcnR5LCBwbGVhc2UgcHJvdmlkZSBpdFwiXG4gICAgICApO1xuICAgIGlmIChjaGlsZFN0YWNrLmxlbmd0aCA9PT0gMSAmJiBjaGlsZFN0YWNrWzBdLmtleSA9PT0gY2hpbGRyZW4ua2V5KSByZXR1cm47XG4gICAgaWYgKG9yaWVudGF0aW9uLmN1cnJlbnQgPT09IFwiZm9yd2FyZFwiKVxuICAgICAgc2V0Q2hpbGRTdGFjaygocCkgPT4gKHtcbiAgICAgICAgLi4ucCxcbiAgICAgICAgY2hpbGRTdGFjazogWy4uLnAuY2hpbGRTdGFjaywgeyAuLi5jaGlsZHJlbiwgY3JlYXRlZEF0OiBEYXRlLm5vdygpIH1dLFxuICAgICAgfSkpO1xuICAgIGVsc2VcbiAgICAgIHNldENoaWxkU3RhY2soKHApID0+ICh7XG4gICAgICAgIC4uLnAsXG4gICAgICAgIGNoaWxkU3RhY2s6IFt7IC4uLmNoaWxkcmVuLCBjcmVhdGVkQXQ6IERhdGUubm93KCkgfSwgLi4ucC5jaGlsZFN0YWNrXSxcbiAgICAgIH0pKTtcbiAgfSwgW2NoaWxkcmVuLmtleV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9yaWVudGF0aW9uLmN1cnJlbnQgPT09IFwiYmFja3dhcmRcIikge1xuICAgICAgc2V0Q2hpbGRTdGFjaygocHJldikgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgb2Zmc2V0OiBwcmV2LmNoaWxkU3RhY2subGVuZ3RoLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY2hpbGRTdGFjay5sZW5ndGhdKTtcblxuICBjaGlsZFN0YWNrLmZvckVhY2goKGEsIGksIGFycikgPT4ge1xuICAgIGlmIChhLmtleSA9PT0gY2hpbGRyZW4ua2V5KVxuICAgICAgYXJyW2ldID0geyAuLi5jaGlsZHJlbiwgY3JlYXRlZEF0OiBhLmNyZWF0ZWRBdCB9O1xuICB9KTtcblxuICBjb25zdCBwcmVkaWN0ZWRTdGVwID0gY2hpbGRTdGFjay5sZW5ndGggLSBvZmZzZXQ7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkU3RhY2subGVuZ3RoID8gKFxuICAgICAgICA8VHJhbnNpdGlvblxuICAgICAgICAgIHJlZj17c2VjdGlvblJlZn1cbiAgICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICBzdGVwPXtwcmVkaWN0ZWRTdGVwfVxuICAgICAgICAgIG9uRGlzY2FyZFN0ZXA9eyhkaXNjYXJkZWRLZXksIGFuaW1hdGVkQXQpID0+IHtcbiAgICAgICAgICAgIGlmIChvbkRpc2NhcmRTdGVwKSBvbkRpc2NhcmRTdGVwKGRpc2NhcmRlZEtleSk7XG4gICAgICAgICAgICBvcmllbnRhdGlvbi5jdXJyZW50ID0gXCJmb3J3YXJkXCI7XG4gICAgICAgICAgICBzZXRDaGlsZFN0YWNrKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgY2hpbGRTdGFjazogcHJldi5jaGlsZFN0YWNrLmZpbHRlcigoYSkgPT4ge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGEua2V5ICE9PSBkaXNjYXJkZWRLZXkgfHwgYS5jcmVhdGVkQXQgPiBhbmltYXRlZEF0O1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG9mZnNldDogcHJldi5vZmZzZXQgPT09IDEgPyAxIDogcHJldi5vZmZzZXQgLSAxLFxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBsb2NrVHJhbnNpdGlvbldpZHRoPXtsb2NrVHJhbnNpdGlvbldpZHRofVxuICAgICAgICAgIGxvY2tUcmFuc2l0aW9uSGVpZ2h0PXtsb2NrVHJhbnNpdGlvbkhlaWdodH1cbiAgICAgICAgICBjb250ZW50Q2xhc3NOYW1lPXtjb250ZW50Q2xhc3NOYW1lfVxuICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgPlxuICAgICAgICAgIHtjaGlsZFN0YWNrfVxuICAgICAgICA8L1RyYW5zaXRpb24+XG4gICAgICApIDogbnVsbH1cbiAgICA8Lz5cbiAgKTtcbn1cblxuLyoqXG4gKiBUaGlzIGNvbXBvbmVudCByZWNlaXZlcyBjaGlsZCB3aXRoIGtleSBhbmQgYXBwbGllcyBhIHRyYW5zaXRpb24gd2hlbiB0aGUga2V5IGNoYW5nZXMsIGFsbG93aW5nIHRvIHN3YXAgZWxlbWVudHMgd2l0aCBhIGZpbmUgdHJhbnNpdGlvbi5cbiAqKi9cbmNvbnN0IFVuY29udHJvbGxlZFRyYW5zaXRpb24gPSBmb3J3YXJkUmVmKF9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uKTtcbmV4cG9ydCBkZWZhdWx0IFVuY29udHJvbGxlZFRyYW5zaXRpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFXQSxJQUFBQyxXQUFB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
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = Example;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _UncontrolledTransition = _interopRequireDefault(require("../UncontrolledTransition"));
|
|
10
|
+
var _Button = _interopRequireDefault(require("../Button"));
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
14
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
18
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
19
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
20
|
+
function colorGen() {
|
|
21
|
+
return [255 * Math.random(), 255 * Math.random(), 255 * Math.random()];
|
|
22
|
+
}
|
|
23
|
+
function Example() {
|
|
24
|
+
const _useState = (0, _react.useState)(colorGen),
|
|
25
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
26
|
+
color = _useState2[0],
|
|
27
|
+
setColor = _useState2[1];
|
|
28
|
+
const rgb = "rgb(".concat(color.join(","), ")");
|
|
29
|
+
return /*#__PURE__*/_react.default.createElement(_UncontrolledTransition.default, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
30
|
+
key: color.join(""),
|
|
31
|
+
style: {
|
|
32
|
+
width: "100vw",
|
|
33
|
+
height: "100vh",
|
|
34
|
+
backgroundColor: rgb,
|
|
35
|
+
textAlign: "center"
|
|
36
|
+
}
|
|
37
|
+
}, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
38
|
+
variant: "filled",
|
|
39
|
+
onClick: function onClick() {
|
|
40
|
+
return setColor(colorGen());
|
|
41
|
+
}
|
|
42
|
+
}, "Click to transition"), /*#__PURE__*/_react.default.createElement("h2", null, "RGB"), /*#__PURE__*/_react.default.createElement("p", null, color[0].toFixed(0)), /*#__PURE__*/_react.default.createElement("p", null, color[1].toFixed(0)), /*#__PURE__*/_react.default.createElement("p", null, color[2].toFixed(0))));
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfVW5jb250cm9sbGVkVHJhbnNpdGlvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfQnV0dG9uIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJfdHlwZW9mIiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJfc2xpY2VkVG9BcnJheSIsImFyciIsImkiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVSZXN0IiwiVHlwZUVycm9yIiwibyIsIm1pbkxlbiIsIl9hcnJheUxpa2VUb0FycmF5IiwibiIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJBcnJheSIsImZyb20iLCJ0ZXN0IiwibGVuIiwibGVuZ3RoIiwiYXJyMiIsIl9pIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJfcyIsIl9lIiwiX3giLCJfciIsIl9hcnIiLCJfbiIsIl9kIiwibmV4dCIsImRvbmUiLCJwdXNoIiwidmFsdWUiLCJlcnIiLCJyZXR1cm4iLCJpc0FycmF5IiwiY29sb3JHZW4iLCJNYXRoIiwicmFuZG9tIiwiRXhhbXBsZSIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImNvbG9yIiwic2V0Q29sb3IiLCJyZ2IiLCJjb25jYXQiLCJqb2luIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ0ZXh0QWxpZ24iLCJ2YXJpYW50Iiwib25DbGljayIsInRvRml4ZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9VbmNvbnRyb2xsZWRUcmFuc2l0aW9uL1VuY29udHJvbGxlZFRyYW5zaXRpb24uc2FtcGxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVW5jb250cm9sbGVkVHJhbnNpdGlvbiBmcm9tIFwiLi4vVW5jb250cm9sbGVkVHJhbnNpdGlvblwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vQnV0dG9uXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5mdW5jdGlvbiBjb2xvckdlbigpIHtcbiAgcmV0dXJuIFsyNTUgKiBNYXRoLnJhbmRvbSgpLCAyNTUgKiBNYXRoLnJhbmRvbSgpLCAyNTUgKiBNYXRoLnJhbmRvbSgpXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhhbXBsZSgpIHtcbiAgY29uc3QgW2NvbG9yLCBzZXRDb2xvcl0gPSB1c2VTdGF0ZShjb2xvckdlbik7XG4gIGNvbnN0IHJnYiA9IGByZ2IoJHtjb2xvci5qb2luKFwiLFwiKX0pYDtcbiAgcmV0dXJuIChcbiAgICA8VW5jb250cm9sbGVkVHJhbnNpdGlvbj5cbiAgICAgIDxkaXZcbiAgICAgICAga2V5PXtjb2xvci5qb2luKFwiXCIpfVxuICAgICAgICBzdHlsZT17e1xuICAgICAgICAgIHdpZHRoOiBcIjEwMHZ3XCIsXG4gICAgICAgICAgaGVpZ2h0OiBcIjEwMHZoXCIsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiByZ2IsXG4gICAgICAgICAgdGV4dEFsaWduOiBcImNlbnRlclwiLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8QnV0dG9uIHZhcmlhbnQ9XCJmaWxsZWRcIiBvbkNsaWNrPXsoKSA9PiBzZXRDb2xvcihjb2xvckdlbigpKX0+XG4gICAgICAgICAgQ2xpY2sgdG8gdHJhbnNpdGlvblxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPGgyPlJHQjwvaDI+XG4gICAgICAgIDxwPntjb2xvclswXS50b0ZpeGVkKDApfTwvcD5cbiAgICAgICAgPHA+e2NvbG9yWzFdLnRvRml4ZWQoMCl9PC9wPlxuICAgICAgICA8cD57Y29sb3JbMl0udG9GaXhlZCgwKX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L1VuY29udHJvbGxlZFRyYW5zaXRpb24+XG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQStCLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBQUEsU0FBQUcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFULHdCQUFBSyxHQUFBLEVBQUFJLFdBQUEsU0FBQUEsV0FBQSxJQUFBSixHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQVEsT0FBQSxDQUFBUixHQUFBLHlCQUFBQSxHQUFBLDRCQUFBRSxPQUFBLEVBQUFGLEdBQUEsVUFBQVMsS0FBQSxHQUFBTix3QkFBQSxDQUFBQyxXQUFBLE9BQUFLLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFW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
|