@kaspernj/api-maker 1.0.2163 → 1.0.2165
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/build/table/blocking-overlay.d.ts +10 -0
- package/build/table/blocking-overlay.d.ts.map +1 -0
- package/build/table/blocking-overlay.js +59 -0
- package/build/table/model-row.js +4 -3
- package/build/table/settings/column-row.js +15 -15
- package/build/table/settings/index.js +13 -3
- package/build/table/table.d.ts.map +1 -1
- package/build/table/table.js +46 -13
- package/build/table/worker-plugins-check-all-checkbox.d.ts +1 -0
- package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
- package/build/table/worker-plugins-check-all-checkbox.js +11 -7
- package/package.json +2 -2
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const _default: React.NamedExoticComponent<Record<string, any>>;
|
|
2
|
+
export default _default;
|
|
3
|
+
export type Props = {
|
|
4
|
+
events: import("events").EventEmitter;
|
|
5
|
+
};
|
|
6
|
+
export type State = {
|
|
7
|
+
blocking: boolean;
|
|
8
|
+
};
|
|
9
|
+
import React from "react";
|
|
10
|
+
//# sourceMappingURL=blocking-overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocking-overlay.d.ts","sourceRoot":"/src/","sources":["table/blocking-overlay.jsx"],"names":[],"mappings":";;;YAcc,OAAO,QAAQ,EAAE,YAAY;;;cAI7B,OAAO;;kBAhBO,OAAO"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
// @ts-check
|
|
3
|
+
/* eslint-disable sort-imports */
|
|
4
|
+
import React, { useRef } from "react";
|
|
5
|
+
import memo from "set-state-compare/build/memo.js";
|
|
6
|
+
import PropTypes from "prop-types";
|
|
7
|
+
import propTypesExact from "prop-types-exact";
|
|
8
|
+
import { ActivityIndicator, Animated } from "react-native";
|
|
9
|
+
import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
10
|
+
import useEventEmitter from "ya-use-event-emitter";
|
|
11
|
+
const FADE_DURATION = 150;
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {object} Props
|
|
14
|
+
* @property {import("events").EventEmitter} events
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {object} State
|
|
18
|
+
* @property {boolean} blocking
|
|
19
|
+
*/
|
|
20
|
+
export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>} */ class ApiMakerTableBlockingOverlay extends ShapeComponent {
|
|
21
|
+
static propTypes = propTypesExact({
|
|
22
|
+
events: PropTypes.object.isRequired
|
|
23
|
+
});
|
|
24
|
+
state = { blocking: false };
|
|
25
|
+
setup() {
|
|
26
|
+
this.opacity = useRef(new Animated.Value(0)).current;
|
|
27
|
+
useEventEmitter(this.p.events, "blocking", this.tt.onBlocking);
|
|
28
|
+
}
|
|
29
|
+
render() {
|
|
30
|
+
// Always mounted — pointerEvents toggles click-capture, opacity drives
|
|
31
|
+
// the fade. Kept out of conditional render so the Animated.Value and
|
|
32
|
+
// emitter subscription don't churn on every block/unblock.
|
|
33
|
+
const dataSet = {
|
|
34
|
+
class: "api-maker--table--blocking-overlay",
|
|
35
|
+
overlayState: this.s.blocking ? "blocking" : "idle"
|
|
36
|
+
};
|
|
37
|
+
return (_jsx(Animated.View, { dataSet: dataSet, pointerEvents: this.s.blocking ? "auto" : "none", style: this.cache("overlayStyle", {
|
|
38
|
+
position: "absolute",
|
|
39
|
+
top: 0,
|
|
40
|
+
right: 0,
|
|
41
|
+
bottom: 0,
|
|
42
|
+
left: 0,
|
|
43
|
+
backgroundColor: "rgba(64, 64, 64, 0.5)",
|
|
44
|
+
alignItems: "center",
|
|
45
|
+
justifyContent: "center",
|
|
46
|
+
zIndex: 10,
|
|
47
|
+
opacity: this.opacity
|
|
48
|
+
}), testID: "api-maker/table/blocking-overlay", children: _jsx(ActivityIndicator, { color: "#fff", size: "large" }) }));
|
|
49
|
+
}
|
|
50
|
+
onBlocking = (blocking) => {
|
|
51
|
+
this.setState({ blocking });
|
|
52
|
+
Animated.timing(this.opacity, {
|
|
53
|
+
duration: FADE_DURATION,
|
|
54
|
+
toValue: blocking ? 1 : 0,
|
|
55
|
+
useNativeDriver: false
|
|
56
|
+
}).start();
|
|
57
|
+
};
|
|
58
|
+
}));
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2tpbmctb3ZlcmxheS5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidGFibGUvYmxvY2tpbmctb3ZlcmxheS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVk7QUFDWixpQ0FBaUM7QUFDakMsT0FBTyxLQUFLLEVBQUUsRUFBQyxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDbkMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxRQUFRLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDeEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLGVBQWUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVsRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUE7QUFFekI7OztHQUdHO0FBQ0g7OztHQUdHO0FBQ0gsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLE1BQU0sNEJBQTZCLFNBQVEsY0FBYztJQUMxSSxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0tBQ3BDLENBQUMsQ0FBQTtJQUVGLEtBQUssR0FBRyxFQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsQ0FBQTtJQUV6QixLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO1FBRXBELGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBRUQsTUFBTTtRQUNKLHVFQUF1RTtRQUN2RSxxRUFBcUU7UUFDckUsMkRBQTJEO1FBQzNELE1BQU0sT0FBTyxHQUFHO1lBQ2QsS0FBSyxFQUFFLG9DQUFvQztZQUMzQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTTtTQUNwRCxDQUFBO1FBRUQsT0FBTyxDQUNMLEtBQUMsUUFBUSxDQUFDLElBQUksSUFDWixPQUFPLEVBQUUsT0FBTyxFQUNoQixhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUNoRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7Z0JBQ2hDLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixHQUFHLEVBQUUsQ0FBQztnQkFDTixLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQztnQkFDVCxJQUFJLEVBQUUsQ0FBQztnQkFDUCxlQUFlLEVBQUUsdUJBQXVCO2dCQUN4QyxVQUFVLEVBQUUsUUFBUTtnQkFDcEIsY0FBYyxFQUFFLFFBQVE7Z0JBQ3hCLE1BQU0sRUFBRSxFQUFFO2dCQUNWLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzthQUN0QixDQUFDLEVBQ0YsTUFBTSxFQUFDLGtDQUFrQyxZQUV6QyxLQUFDLGlCQUFpQixJQUFDLEtBQUssRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLE9BQU8sR0FBRyxHQUNqQyxDQUNqQixDQUFBO0lBQ0gsQ0FBQztJQUVELFVBQVUsR0FBRyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFBO1FBQ3pCLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUM1QixRQUFRLEVBQUUsYUFBYTtZQUN2QixPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekIsZUFBZSxFQUFFLEtBQUs7U0FDdkIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ1osQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtBY3Rpdml0eUluZGljYXRvciwgQW5pbWF0ZWR9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuXG5jb25zdCBGQURFX0RVUkFUSU9OID0gMTUwXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwiZXZlbnRzXCIpLkV2ZW50RW1pdHRlcn0gZXZlbnRzXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RhdGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYmxvY2tpbmdcbiAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBBcGlNYWtlclRhYmxlQmxvY2tpbmdPdmVybGF5IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGV2ZW50czogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc3RhdGUgPSB7YmxvY2tpbmc6IGZhbHNlfVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMub3BhY2l0eSA9IHVzZVJlZihuZXcgQW5pbWF0ZWQuVmFsdWUoMCkpLmN1cnJlbnRcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnAuZXZlbnRzLCBcImJsb2NraW5nXCIsIHRoaXMudHQub25CbG9ja2luZylcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICAvLyBBbHdheXMgbW91bnRlZCDigJQgcG9pbnRlckV2ZW50cyB0b2dnbGVzIGNsaWNrLWNhcHR1cmUsIG9wYWNpdHkgZHJpdmVzXG4gICAgLy8gdGhlIGZhZGUuIEtlcHQgb3V0IG9mIGNvbmRpdGlvbmFsIHJlbmRlciBzbyB0aGUgQW5pbWF0ZWQuVmFsdWUgYW5kXG4gICAgLy8gZW1pdHRlciBzdWJzY3JpcHRpb24gZG9uJ3QgY2h1cm4gb24gZXZlcnkgYmxvY2svdW5ibG9jay5cbiAgICBjb25zdCBkYXRhU2V0ID0ge1xuICAgICAgY2xhc3M6IFwiYXBpLW1ha2VyLS10YWJsZS0tYmxvY2tpbmctb3ZlcmxheVwiLFxuICAgICAgb3ZlcmxheVN0YXRlOiB0aGlzLnMuYmxvY2tpbmcgPyBcImJsb2NraW5nXCIgOiBcImlkbGVcIlxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8QW5pbWF0ZWQuVmlld1xuICAgICAgICBkYXRhU2V0PXtkYXRhU2V0fVxuICAgICAgICBwb2ludGVyRXZlbnRzPXt0aGlzLnMuYmxvY2tpbmcgPyBcImF1dG9cIiA6IFwibm9uZVwifVxuICAgICAgICBzdHlsZT17dGhpcy5jYWNoZShcIm92ZXJsYXlTdHlsZVwiLCB7XG4gICAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICAgIGxlZnQ6IDAsXG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcInJnYmEoNjQsIDY0LCA2NCwgMC41KVwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gICAgICAgICAgekluZGV4OiAxMCxcbiAgICAgICAgICBvcGFjaXR5OiB0aGlzLm9wYWNpdHlcbiAgICAgICAgfSl9XG4gICAgICAgIHRlc3RJRD1cImFwaS1tYWtlci90YWJsZS9ibG9ja2luZy1vdmVybGF5XCJcbiAgICAgID5cbiAgICAgICAgPEFjdGl2aXR5SW5kaWNhdG9yIGNvbG9yPVwiI2ZmZlwiIHNpemU9XCJsYXJnZVwiIC8+XG4gICAgICA8L0FuaW1hdGVkLlZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25CbG9ja2luZyA9IChibG9ja2luZykgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe2Jsb2NraW5nfSlcbiAgICBBbmltYXRlZC50aW1pbmcodGhpcy5vcGFjaXR5LCB7XG4gICAgICBkdXJhdGlvbjogRkFERV9EVVJBVElPTixcbiAgICAgIHRvVmFsdWU6IGJsb2NraW5nID8gMSA6IDAsXG4gICAgICB1c2VOYXRpdmVEcml2ZXI6IGZhbHNlXG4gICAgfSkuc3RhcnQoKVxuICB9XG59KSlcbiJdfQ==
|
package/build/table/model-row.js
CHANGED
|
@@ -81,14 +81,15 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
81
81
|
}
|
|
82
82
|
onDestroyClicked = async () => {
|
|
83
83
|
const { t } = this.tt;
|
|
84
|
-
const {
|
|
84
|
+
const { table } = this.p;
|
|
85
|
+
const { destroyMessage } = table.props;
|
|
85
86
|
const { model } = this.p;
|
|
86
87
|
// eslint-disable-next-line no-alert
|
|
87
88
|
if (!confirm(t("js.shared.are_you_sure"))) {
|
|
88
89
|
return;
|
|
89
90
|
}
|
|
90
91
|
try {
|
|
91
|
-
await model.destroy();
|
|
92
|
+
await table.withBlocking(() => model.destroy());
|
|
92
93
|
if (destroyMessage) {
|
|
93
94
|
FlashNotifications.success(destroyMessage);
|
|
94
95
|
}
|
|
@@ -98,4 +99,4 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
98
99
|
}
|
|
99
100
|
};
|
|
100
101
|
}));
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcm93LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9tb2RlbC1yb3cuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osMEZBQTBGO0FBQzFGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxnQkFBZ0IsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLGlCQUFpQixNQUFNLDBCQUEwQixDQUFBO0FBQ3hELE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQTtBQUMxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxPQUFPLE1BQU0sd0NBQXdDLENBQUE7QUFDNUQsT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUU3RDs7Ozs7OztHQU9HO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUNILDZDQUE2QztBQUM3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxrQ0FBbUMsU0FBUSxjQUFjO0lBQ2hKLE1B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a0IsRUFBRSxrQkFBa0IsSUFIakMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBSTdCLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUM1QixNQUFNLEVBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUNuQixNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFBO1FBQzNDLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXRCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFBO1lBRXJCLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ25CLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixrQkFBa0IsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDekMsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBsaWNpdC1hcnJvdy1saW5lYnJlYWssIG1heC1sZW4sIHJlYWN0L2pzeC1zb3J0LXByb3BzLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7UHJlc3NhYmxlfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBDb2x1bW4gZnJvbSBcIi4vY29tcG9uZW50cy9jb2x1bW5cIlxuaW1wb3J0IGNvbHVtbklkZW50aWZpZXIgZnJvbSBcIi4vY29sdW1uLWlkZW50aWZpZXIuanNcIlxuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gXCJldmVudGVtaXR0ZXIzXCJcbmltcG9ydCB7Rmxhc2hOb3RpZmljYXRpb25zfSBmcm9tIFwiZmxhc2gtbm90aWZpY2F0aW9uc1wiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtb2RlbENhbGxiYWNrQXJncyBmcm9tIFwiLi9tb2RlbC1jYWxsYmFjay1hcmdzLmpzXCJcbmltcG9ydCBMaW5rIGZyb20gXCIuLi9saW5rXCJcbmltcG9ydCBNb2RlbENvbHVtbiBmcm9tIFwiLi9tb2RlbC1jb2x1bW5cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgUm93IGZyb20gXCIuL2NvbXBvbmVudHMvcm93XCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCB1c2VJMThuIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzL2J1aWxkL3NyYy91c2UtaTE4bi5qc1wiXG5pbXBvcnQgV29ya2VyUGx1Z2luc0NoZWNrYm94IGZyb20gXCIuL3dvcmtlci1wbHVnaW5zLWNoZWNrYm94XCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcmVwYXJlZENvbHVtblxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWVYWX0gYW5pbWF0ZWRQb3NpdGlvblxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWV9IGFuaW1hdGVkV2lkdGhcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlfSBhbmltYXRlZFpJbmRleFxuICogQHByb3BlcnR5IHtvYmplY3R9IGNvbHVtblxuICogQHByb3BlcnR5IHtvYmplY3R9IHRhYmxlU2V0dGluZ0NvbHVtblxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjYWNoZUtleVxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbltdfSBbY29sdW1uc11cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBjb2x1bW5XaWR0aHNcbiAqIEBwcm9wZXJ0eSB7RXZlbnRFbWl0dGVyfSBldmVudHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbmRleFxuICogQHByb3BlcnR5IHtvYmplY3R9IG1vZGVsXG4gKiBAcHJvcGVydHkge29iamVjdH0gdGFibGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXlcbiAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IFN0YXRlICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIEFwaU1ha2VyQm9vdFN0cmFwTGl2ZVRhYmxlTW9kZWxSb3cgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2FjaGVLZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgY29sdW1uV2lkdGhzOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZXZlbnRzOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihFdmVudEVtaXR0ZXIpLmlzUmVxdWlyZWQsXG4gICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIHRhYmxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnRhYmxlLm1vZGVsX3Jvd1wifSlcblxuICAgIHRoaXMudCA9IHRcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7aW5kZXgsIHRhYmxlLCBtb2RlbH0gPSB0aGlzLnBcbiAgICBjb25zdCB7bW9kZWxDbGFzcywgd29ya3BsYWNlfSA9IHRhYmxlLnBcbiAgICBjb25zdCB7YWN0aW9uc0NvbnRlbnQsIGRlc3Ryb3lFbmFibGVkLCBlZGl0TW9kZWxQYXRoLCB2aWV3TW9kZWxQYXRofSA9IHRhYmxlLnByb3BzXG4gICAgY29uc3Qge2NvbHVtbnMsIGN1cnJlbnRXb3JrcGxhY2V9ID0gdGFibGUuc3RhdGVcbiAgICBjb25zdCB7c3R5bGVGb3JDb2x1bW4sIHN0eWxlRm9yUm93fSA9IHRhYmxlLnR0XG4gICAgY29uc3QgZXZlbiA9IGluZGV4ICUgMiA9PSAwXG5cbiAgICB0aGlzLm1vZGVsQ2FsbGJhY2tBcmdzID0gbW9kZWxDYWxsYmFja0FyZ3ModGFibGUsIG1vZGVsKSAvLyAnbW9kZWwnIGNhbiBjaGFuZ2Ugc28gdGhpcyBuZWVkcyB0byBiZSByZS1jYWNoZWQgZm9yIGV2ZXJ5IHJlbmRlclxuXG4gICAgbGV0IGVkaXRQYXRoLCB2aWV3UGF0aFxuXG4gICAgaWYgKGVkaXRNb2RlbFBhdGggJiYgbW9kZWwuY2FuKFwiZWRpdFwiKSkge1xuICAgICAgZWRpdFBhdGggPSBlZGl0TW9kZWxQYXRoKHRoaXMubW9kZWxDYWxsYmFja0FyZ3MpXG4gICAgfVxuXG4gICAgaWYgKHZpZXdNb2RlbFBhdGggJiYgbW9kZWwuY2FuKFwic2hvd1wiKSkge1xuICAgICAgdmlld1BhdGggPSB2aWV3TW9kZWxQYXRoKHRoaXMubW9kZWxDYWxsYmFja0FyZ3MpXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3dcbiAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcInJvd0RhdGFTZXRcIiwge2NsYXNzOiBgJHtpbmZsZWN0aW9uLmRhc2hlcml6ZShtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkucGFyYW1LZXkpfS1yb3dgLCBtb2RlbElkOiBtb2RlbC5pZCgpfSwgW21vZGVsLmlkKCksIG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleV0pfVxuICAgICAgICBzdHlsZT17c3R5bGVGb3JSb3coe2V2ZW59KX1cbiAgICAgID5cbiAgICAgICAge3dvcmtwbGFjZSAmJlxuICAgICAgICAgIDxDb2x1bW4gZGF0YVNldD17dGhpcy5jYWNoZShcImNvbHVtbkRhdGFTZXRcIiwge2NsYXNzOiBcIndvcmtwbGFjZS1jb2x1bW5cIn0pfSBzdHlsZT17c3R5bGVGb3JDb2x1bW4oe2V2ZW4sIHN0eWxlOiB7d2lkdGg6IDQxfX0pfT5cbiAgICAgICAgICAgIDxXb3JrZXJQbHVnaW5zQ2hlY2tib3hcbiAgICAgICAgICAgICAgY3VycmVudFdvcmtwbGFjZT17Y3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgbW9kZWw9e21vZGVsfVxuICAgICAgICAgICAgICBzdHlsZT17dGhpcy5jYWNoZShcIndvcmtlclBsdWdpbnNDaGVja2JveFN0eWxlXCIsIHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn0pfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbHVtbj5cbiAgICAgICAgfVxuICAgICAgICB7Y29sdW1ucyAmJiB0aGlzLmNvbHVtbnNDb250ZW50RnJvbUNvbHVtbnMobW9kZWwsIGV2ZW4pfVxuICAgICAgICA8Q29sdW1uIGRhdGFTZXQ9e3RoaXMuY2FjaGUoXCJhY3Rpb25zQ29sdW1uRGF0YVNldFwiLCB7Y2xhc3M6IFwiYWN0aW9ucy1jb2x1bW5cIn0pfSBzdHlsZT17c3R5bGVGb3JDb2x1bW4oe2V2ZW4sIHN0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0+XG4gICAgICAgICAge2FjdGlvbnNDb250ZW50ICYmIGFjdGlvbnNDb250ZW50KHRoaXMudHQubW9kZWxDYWxsYmFja0FyZ3MpfVxuICAgICAgICAgIHt2aWV3UGF0aCAmJlxuICAgICAgICAgICAgPExpbmsgZGF0YVNldD17dGhpcy5jYWNoZShcInZpZXdCdXR0b25EYXRhU2V0XCIsIHtjbGFzczogXCJ2aWV3LWJ1dHRvblwifSl9IHN0eWxlPXt0aGlzLmNhY2hlKFwic2VhcmNoTGlua1N0eWxlXCIsIHttYXJnaW5MZWZ0OiAyLCBtYXJnaW5SaWdodDogMn0pfSB0bz17dmlld1BhdGh9PlxuICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwic2VhcmNoXCIgc2l6ZT17MTh9IC8+XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgfVxuICAgICAgICAgIHtlZGl0UGF0aCAmJlxuICAgICAgICAgICAgPExpbmsgZGF0YVNldD17dGhpcy5jYWNoZShcImVkaXRCdXR0b25EYXRhU2V0XCIsIHtjbGFzczogXCJlZGl0LWJ1dHRvblwifSl9IHN0eWxlPXt0aGlzLmNhY2hlKFwiZWRpdEJ1dHRvblN0eWxlXCIsIHttYXJnaW5MZWZ0OiAyLCBtYXJnaW5SaWdodDogMn0pfSB0bz17ZWRpdFBhdGh9PlxuICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwicGVuY2lsXCIgc2l6ZT17MjB9IC8+XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgfVxuICAgICAgICAgIHtkZXN0cm95RW5hYmxlZCAmJiBtb2RlbC5jYW4oXCJkZXN0cm95XCIpICYmXG4gICAgICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuY2FjaGUoXCJkZXN0cm95QnV0dG9uRGF0YVNldFwiLCB7Y2xhc3M6IFwiZGVzdHJveS1idXR0b25cIn0pfVxuICAgICAgICAgICAgICBzdHlsZT17dGhpcy5jYWNoZShcImRlc3Ryb3lCdXR0b25TdHlsZVwiLCB7bWFyZ2luTGVmdDogMiwgbWFyZ2luUmlnaHQ6IDJ9KX1cbiAgICAgICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vbkRlc3Ryb3lDbGlja2VkfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8SWNvbiBuYW1lPVwicmVtb3ZlXCIgc2l6ZT17MjJ9IC8+XG4gICAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvQ29sdW1uPlxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbikge1xuICAgIGNvbnN0IHtjb2x1bW5zLCBldmVudHMsIHRhYmxlfSA9IHRoaXMucFxuXG4gICAgcmV0dXJuIGNvbHVtbnM/Lm1hcCgoe2FuaW1hdGVkUG9zaXRpb24sIGFuaW1hdGVkV2lkdGgsIGFuaW1hdGVkWkluZGV4LCBjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0sIGNvbHVtbkluZGV4KSA9PlxuICAgICAgPE1vZGVsQ29sdW1uXG4gICAgICAgIGFuaW1hdGVkUG9zaXRpb249e2FuaW1hdGVkUG9zaXRpb259XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGNvbHVtbkluZGV4PXtjb2x1bW5JbmRleH1cbiAgICAgICAgZXZlbj17ZXZlbn1cbiAgICAgICAgZXZlbnRzPXtldmVudHN9XG4gICAgICAgIGtleT17Y29sdW1uSWRlbnRpZmllcihjb2x1bW4pfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgdGFibGVTZXR0aW5nQ29sdW1uPXt0YWJsZVNldHRpbmdDb2x1bW59XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG9uRGVzdHJveUNsaWNrZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3R9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtkZXN0cm95TWVzc2FnZX0gPSB0aGlzLnAudGFibGUucHJvcHNcbiAgICBjb25zdCB7bW9kZWx9ID0gdGhpcy5wXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYWxlcnRcbiAgICBpZiAoIWNvbmZpcm0odChcImpzLnNoYXJlZC5hcmVfeW91X3N1cmVcIikpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgbW9kZWwuZGVzdHJveSgpXG5cbiAgICAgIGlmIChkZXN0cm95TWVzc2FnZSkge1xuICAgICAgICBGbGFzaE5vdGlmaWNhdGlvbnMuc3VjY2VzcyhkZXN0cm95TWVzc2FnZSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgRmxhc2hOb3RpZmljYXRpb25zLmVycm9yUmVzcG9uc2UoZXJyb3IpXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWwtcm93LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS9tb2RlbC1yb3cuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osMEZBQTBGO0FBQzFGLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDdEMsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxnQkFBZ0IsTUFBTSx3QkFBd0IsQ0FBQTtBQUNyRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQ3RELE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLGlCQUFpQixNQUFNLDBCQUEwQixDQUFBO0FBQ3hELE9BQU8sSUFBSSxNQUFNLFNBQVMsQ0FBQTtBQUMxQixPQUFPLFdBQVcsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN4QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxjQUFjLE1BQU0sa0JBQWtCLENBQUE7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFBO0FBQ2xDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxPQUFPLE1BQU0sd0NBQXdDLENBQUE7QUFDNUQsT0FBTyxxQkFBcUIsTUFBTSwyQkFBMkIsQ0FBQTtBQUU3RDs7Ozs7OztHQU9HO0FBRUg7Ozs7Ozs7Ozs7R0FVRztBQUNILDZDQUE2QztBQUM3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxrQ0FBbUMsU0FBUSxjQUFjO0lBQ2hKLE1B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a0IsRUFBRSxrQkFBa0IsSUFIakMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBSTdCLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxnQkFBZ0IsR0FBRyxLQUFLLElBQUksRUFBRTtRQUM1QixNQUFNLEVBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQTtRQUNuQixNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN0QixNQUFNLEVBQUMsY0FBYyxFQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQTtRQUNwQyxNQUFNLEVBQUMsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV0QixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFFL0MsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDbkIsa0JBQWtCLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzVDLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN6QyxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIGltcGxpY2l0LWFycm93LWxpbmVicmVhaywgbWF4LWxlbiwgcmVhY3QvanN4LXNvcnQtcHJvcHMsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtQcmVzc2FibGV9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IENvbHVtbiBmcm9tIFwiLi9jb21wb25lbnRzL2NvbHVtblwiXG5pbXBvcnQgY29sdW1uSWRlbnRpZmllciBmcm9tIFwiLi9jb2x1bW4taWRlbnRpZmllci5qc1wiXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuaW1wb3J0IHtGbGFzaE5vdGlmaWNhdGlvbnN9IGZyb20gXCJmbGFzaC1ub3RpZmljYXRpb25zXCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1vZGVsQ2FsbGJhY2tBcmdzIGZyb20gXCIuL21vZGVsLWNhbGxiYWNrLWFyZ3MuanNcIlxuaW1wb3J0IExpbmsgZnJvbSBcIi4uL2xpbmtcIlxuaW1wb3J0IE1vZGVsQ29sdW1uIGZyb20gXCIuL21vZGVsLWNvbHVtblwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBSb3cgZnJvbSBcIi4vY29tcG9uZW50cy9yb3dcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvYnVpbGQvc3JjL3VzZS1pMThuLmpzXCJcbmltcG9ydCBXb3JrZXJQbHVnaW5zQ2hlY2tib3ggZnJvbSBcIi4vd29ya2VyLXBsdWdpbnMtY2hlY2tib3hcIlxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFByZXBhcmVkQ29sdW1uXG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZVhZfSBhbmltYXRlZFBvc2l0aW9uXG4gKiBAcHJvcGVydHkge2ltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZX0gYW5pbWF0ZWRXaWR0aFxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWV9IGFuaW1hdGVkWkluZGV4XG4gKiBAcHJvcGVydHkge29iamVjdH0gY29sdW1uXG4gKiBAcHJvcGVydHkge29iamVjdH0gdGFibGVTZXR0aW5nQ29sdW1uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNhY2hlS2V5XG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW119IFtjb2x1bW5zXVxuICogQHByb3BlcnR5IHtvYmplY3R9IGNvbHVtbldpZHRoc1xuICogQHByb3BlcnR5IHtFdmVudEVtaXR0ZXJ9IGV2ZW50c1xuICogQHByb3BlcnR5IHtudW1iZXJ9IGluZGV4XG4gKiBAcHJvcGVydHkge29iamVjdH0gbW9kZWxcbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSB0YWJsZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleVxuICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gU3RhdGUgKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJCb290U3RyYXBMaXZlVGFibGVNb2RlbFJvdyBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjYWNoZUtleTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIGNvbHVtbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBjb2x1bW5XaWR0aHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBldmVudHM6IFByb3BUeXBlcy5pbnN0YW5jZU9mKEV2ZW50RW1pdHRlcikuaXNSZXF1aXJlZCxcbiAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGFibGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIudGFibGUubW9kZWxfcm93XCJ9KVxuXG4gICAgdGhpcy50ID0gdFxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpbmRleCwgdGFibGUsIG1vZGVsfSA9IHRoaXMucFxuICAgIGNvbnN0IHttb2RlbENsYXNzLCB3b3JrcGxhY2V9ID0gdGFibGUucFxuICAgIGNvbnN0IHthY3Rpb25zQ29udGVudCwgZGVzdHJveUVuYWJsZWQsIGVkaXRNb2RlbFBhdGgsIHZpZXdNb2RlbFBhdGh9ID0gdGFibGUucHJvcHNcbiAgICBjb25zdCB7Y29sdW1ucywgY3VycmVudFdvcmtwbGFjZX0gPSB0YWJsZS5zdGF0ZVxuICAgIGNvbnN0IHtzdHlsZUZvckNvbHVtbiwgc3R5bGVGb3JSb3d9ID0gdGFibGUudHRcbiAgICBjb25zdCBldmVuID0gaW5kZXggJSAyID09IDBcblxuICAgIHRoaXMubW9kZWxDYWxsYmFja0FyZ3MgPSBtb2RlbENhbGxiYWNrQXJncyh0YWJsZSwgbW9kZWwpIC8vICdtb2RlbCcgY2FuIGNoYW5nZSBzbyB0aGlzIG5lZWRzIHRvIGJlIHJlLWNhY2hlZCBmb3IgZXZlcnkgcmVuZGVyXG5cbiAgICBsZXQgZWRpdFBhdGgsIHZpZXdQYXRoXG5cbiAgICBpZiAoZWRpdE1vZGVsUGF0aCAmJiBtb2RlbC5jYW4oXCJlZGl0XCIpKSB7XG4gICAgICBlZGl0UGF0aCA9IGVkaXRNb2RlbFBhdGgodGhpcy5tb2RlbENhbGxiYWNrQXJncylcbiAgICB9XG5cbiAgICBpZiAodmlld01vZGVsUGF0aCAmJiBtb2RlbC5jYW4oXCJzaG93XCIpKSB7XG4gICAgICB2aWV3UGF0aCA9IHZpZXdNb2RlbFBhdGgodGhpcy5tb2RlbENhbGxiYWNrQXJncylcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvd1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm93RGF0YVNldFwiLCB7Y2xhc3M6IGAke2luZmxlY3Rpb24uZGFzaGVyaXplKG1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleSl9LXJvd2AsIG1vZGVsSWQ6IG1vZGVsLmlkKCl9LCBbbW9kZWwuaWQoKSwgbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLnBhcmFtS2V5XSl9XG4gICAgICAgIHN0eWxlPXtzdHlsZUZvclJvdyh7ZXZlbn0pfVxuICAgICAgPlxuICAgICAgICB7d29ya3BsYWNlICYmXG4gICAgICAgICAgPENvbHVtbiBkYXRhU2V0PXt0aGlzLmNhY2hlKFwiY29sdW1uRGF0YVNldFwiLCB7Y2xhc3M6IFwid29ya3BsYWNlLWNvbHVtblwifSl9IHN0eWxlPXtzdHlsZUZvckNvbHVtbih7ZXZlbiwgc3R5bGU6IHt3aWR0aDogNDF9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja2JveFxuICAgICAgICAgICAgICBjdXJyZW50V29ya3BsYWNlPXtjdXJyZW50V29ya3BsYWNlfVxuICAgICAgICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLmNhY2hlKFwid29ya2VyUGx1Z2luc0NoZWNrYm94U3R5bGVcIiwge21hcmdpbkhvcml6b250YWw6IFwiYXV0b1wifSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sdW1uPlxuICAgICAgICB9XG4gICAgICAgIHtjb2x1bW5zICYmIHRoaXMuY29sdW1uc0NvbnRlbnRGcm9tQ29sdW1ucyhtb2RlbCwgZXZlbil9XG4gICAgICAgIDxDb2x1bW4gZGF0YVNldD17dGhpcy5jYWNoZShcImFjdGlvbnNDb2x1bW5EYXRhU2V0XCIsIHtjbGFzczogXCJhY3Rpb25zLWNvbHVtblwifSl9IHN0eWxlPXtzdHlsZUZvckNvbHVtbih7ZXZlbiwgc3R5bGU6IHt9LCB0eXBlOiBcImFjdGlvbnNcIn0pfT5cbiAgICAgICAgICB7YWN0aW9uc0NvbnRlbnQgJiYgYWN0aW9uc0NvbnRlbnQodGhpcy50dC5tb2RlbENhbGxiYWNrQXJncyl9XG4gICAgICAgICAge3ZpZXdQYXRoICYmXG4gICAgICAgICAgICA8TGluayBkYXRhU2V0PXt0aGlzLmNhY2hlKFwidmlld0J1dHRvbkRhdGFTZXRcIiwge2NsYXNzOiBcInZpZXctYnV0dG9uXCJ9KX0gc3R5bGU9e3RoaXMuY2FjaGUoXCJzZWFyY2hMaW5rU3R5bGVcIiwge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfSl9IHRvPXt2aWV3UGF0aH0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJzZWFyY2hcIiBzaXplPXsxOH0gLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICB9XG4gICAgICAgICAge2VkaXRQYXRoICYmXG4gICAgICAgICAgICA8TGluayBkYXRhU2V0PXt0aGlzLmNhY2hlKFwiZWRpdEJ1dHRvbkRhdGFTZXRcIiwge2NsYXNzOiBcImVkaXQtYnV0dG9uXCJ9KX0gc3R5bGU9e3RoaXMuY2FjaGUoXCJlZGl0QnV0dG9uU3R5bGVcIiwge21hcmdpbkxlZnQ6IDIsIG1hcmdpblJpZ2h0OiAyfSl9IHRvPXtlZGl0UGF0aH0+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJwZW5jaWxcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICB9XG4gICAgICAgICAge2Rlc3Ryb3lFbmFibGVkICYmIG1vZGVsLmNhbihcImRlc3Ryb3lcIikgJiZcbiAgICAgICAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgICAgICAgZGF0YVNldD17dGhpcy5jYWNoZShcImRlc3Ryb3lCdXR0b25EYXRhU2V0XCIsIHtjbGFzczogXCJkZXN0cm95LWJ1dHRvblwifSl9XG4gICAgICAgICAgICAgIHN0eWxlPXt0aGlzLmNhY2hlKFwiZGVzdHJveUJ1dHRvblN0eWxlXCIsIHttYXJnaW5MZWZ0OiAyLCBtYXJnaW5SaWdodDogMn0pfVxuICAgICAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRGVzdHJveUNsaWNrZWR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJY29uIG5hbWU9XCJyZW1vdmVcIiBzaXplPXsyMn0gLz5cbiAgICAgICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9Db2x1bW4+XG4gICAgICA8L1Jvdz5cbiAgICApXG4gIH1cblxuICBjb2x1bW5zQ29udGVudEZyb21Db2x1bW5zKG1vZGVsLCBldmVuKSB7XG4gICAgY29uc3Qge2NvbHVtbnMsIGV2ZW50cywgdGFibGV9ID0gdGhpcy5wXG5cbiAgICByZXR1cm4gY29sdW1ucz8ubWFwKCh7YW5pbWF0ZWRQb3NpdGlvbiwgYW5pbWF0ZWRXaWR0aCwgYW5pbWF0ZWRaSW5kZXgsIGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSwgY29sdW1uSW5kZXgpID0+XG4gICAgICA8TW9kZWxDb2x1bW5cbiAgICAgICAgYW5pbWF0ZWRQb3NpdGlvbj17YW5pbWF0ZWRQb3NpdGlvbn1cbiAgICAgICAgYW5pbWF0ZWRXaWR0aD17YW5pbWF0ZWRXaWR0aH1cbiAgICAgICAgYW5pbWF0ZWRaSW5kZXg9e2FuaW1hdGVkWkluZGV4fVxuICAgICAgICBjb2x1bW49e2NvbHVtbn1cbiAgICAgICAgY29sdW1uSW5kZXg9e2NvbHVtbkluZGV4fVxuICAgICAgICBldmVuPXtldmVufVxuICAgICAgICBldmVudHM9e2V2ZW50c31cbiAgICAgICAga2V5PXtjb2x1bW5JZGVudGlmaWVyKGNvbHVtbil9XG4gICAgICAgIG1vZGVsPXttb2RlbH1cbiAgICAgICAgdGFibGU9e3RhYmxlfVxuICAgICAgICB0YWJsZVNldHRpbmdDb2x1bW49e3RhYmxlU2V0dGluZ0NvbHVtbn1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgb25EZXN0cm95Q2xpY2tlZCA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7dH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge3RhYmxlfSA9IHRoaXMucFxuICAgIGNvbnN0IHtkZXN0cm95TWVzc2FnZX0gPSB0YWJsZS5wcm9wc1xuICAgIGNvbnN0IHttb2RlbH0gPSB0aGlzLnBcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hbGVydFxuICAgIGlmICghY29uZmlybSh0KFwianMuc2hhcmVkLmFyZV95b3Vfc3VyZVwiKSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0YWJsZS53aXRoQmxvY2tpbmcoKCkgPT4gbW9kZWwuZGVzdHJveSgpKVxuXG4gICAgICBpZiAoZGVzdHJveU1lc3NhZ2UpIHtcbiAgICAgICAgRmxhc2hOb3RpZmljYXRpb25zLnN1Y2Nlc3MoZGVzdHJveU1lc3NhZ2UpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIEZsYXNoTm90aWZpY2F0aW9ucy5lcnJvclJlc3BvbnNlKGVycm9yKVxuICAgIH1cbiAgfVxufSkpXG4iXX0=
|
|
@@ -23,11 +23,11 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
23
23
|
tableSettingColumn: PropTypes.object.isRequired
|
|
24
24
|
});
|
|
25
25
|
setup() {
|
|
26
|
-
this.checked = this.p.tableSettingColumn.visible();
|
|
27
26
|
this.checkboxRef = useRef(undefined);
|
|
27
|
+
this.visible = this.p.tableSettingColumn.visible();
|
|
28
28
|
useEffect(() => {
|
|
29
29
|
this.updateCheckboxChecked();
|
|
30
|
-
}, [this.
|
|
30
|
+
}, [this.visible]);
|
|
31
31
|
}
|
|
32
32
|
render() {
|
|
33
33
|
const { column, table, tableSettingColumn } = this.p;
|
|
@@ -35,26 +35,26 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
35
35
|
return (_jsx(View, { dataSet: this.cache("rootViewDataSet", { component: "api-maker--table--settings--column-row" }), style: this.cache("rootViewStyle", { justifyContent: "center" }), children: _jsxs("label", { style: { whiteSpace: "nowrap" }, children: [_jsx("input", { checked: checked, className: "api-maker--table--setings--column-checkbox", "data-identifier": columnIdentifier(column), onChange: this.onCheckboxChange, ref: this.checkboxRef, type: "checkbox" }), _jsx(Text, { children: table.headerLabelForColumn(column) })] }) }));
|
|
36
36
|
}
|
|
37
37
|
onCheckboxChange = () => {
|
|
38
|
-
const
|
|
38
|
+
const checked = this.p.tableSettingColumn.visible();
|
|
39
|
+
let visible;
|
|
39
40
|
if (checked === true) {
|
|
40
|
-
|
|
41
|
+
visible = null;
|
|
41
42
|
}
|
|
42
43
|
else if (checked === null) {
|
|
43
|
-
|
|
44
|
+
visible = false;
|
|
44
45
|
}
|
|
45
46
|
else {
|
|
46
|
-
|
|
47
|
+
visible = true;
|
|
47
48
|
}
|
|
48
|
-
this.updateCheckboxChecked();
|
|
49
|
-
this.updateTableSettingColumn();
|
|
49
|
+
this.updateCheckboxChecked(visible);
|
|
50
|
+
this.updateTableSettingColumn(visible);
|
|
50
51
|
};
|
|
51
|
-
updateCheckboxChecked() {
|
|
52
|
-
|
|
53
|
-
if (checked === true) {
|
|
52
|
+
updateCheckboxChecked(visible = this.p.tableSettingColumn.visible()) {
|
|
53
|
+
if (visible === true) {
|
|
54
54
|
this.checkboxRef.current.checked = true;
|
|
55
55
|
this.checkboxRef.current.indeterminate = undefined;
|
|
56
56
|
}
|
|
57
|
-
else if (
|
|
57
|
+
else if (visible === null) {
|
|
58
58
|
this.checkboxRef.current.checked = undefined;
|
|
59
59
|
this.checkboxRef.current.indeterminate = true;
|
|
60
60
|
}
|
|
@@ -63,10 +63,10 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
63
63
|
this.checkboxRef.current.indeterminate = undefined;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
async updateTableSettingColumn() {
|
|
66
|
+
async updateTableSettingColumn(visible) {
|
|
67
67
|
const { table, tableSettingColumn } = this.p;
|
|
68
|
-
await tableSettingColumn.update({ visible
|
|
68
|
+
await tableSettingColumn.update({ visible });
|
|
69
69
|
table.events.emit("columnVisibilityUpdated", { tableSettingColumn });
|
|
70
70
|
}
|
|
71
71
|
}));
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXJvdy5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsidGFibGUvc2V0dGluZ3MvY29sdW1uLXJvdy5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFlBQVk7QUFDWiwwQ0FBMEM7QUFDMUMsT0FBTyxLQUFLLEVBQUUsRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzlDLE9BQU8sZ0JBQWdCLE1BQU0seUJBQXlCLENBQUE7QUFDdEQsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUVqQzs7Ozs7R0FLRztBQUNILDZDQUE2QztBQUM3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxTQUFVLFNBQVEsY0FBYztJQUN2SCxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1FBQ25DLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7UUFDbEMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO0tBQ2hELENBQUMsQ0FBQTtJQUVGLEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUE7UUFFbEQsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElB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QUUxQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxFQUFDLGtCQUFrQixFQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4sIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY29sdW1uSWRlbnRpZmllciBmcm9tIFwiLi4vY29sdW1uLWlkZW50aWZpZXIuanNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IHtTaGFwZUNvbXBvbmVudCwgc2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uLy4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHtWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcblxuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBQcm9wc1xuICogQHByb3BlcnR5IHtvYmplY3R9IGNvbHVtblxuICogQHByb3BlcnR5IHtvYmplY3R9IHRhYmxlXG4gKiBAcHJvcGVydHkge29iamVjdH0gdGFibGVTZXR0aW5nQ29sdW1uXG4gKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgbmV2ZXI+fSBTdGF0ZSAqL1xuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudCgvKiogQGF1Z21lbnRzIHtTaGFwZUNvbXBvbmVudDxQcm9wcywgU3RhdGU+fSAqLyBjbGFzcyBDb2x1bW5Sb3cgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY29sdW1uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgdGFibGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICB0YWJsZVNldHRpbmdDb2x1bW46IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMuY2hlY2tib3hSZWYgPSB1c2VSZWYodW5kZWZpbmVkKVxuICAgIHRoaXMudmlzaWJsZSA9IHRoaXMucC50YWJsZVNldHRpbmdDb2x1bW4udmlzaWJsZSgpXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVDaGVja2JveENoZWNrZWQoKVxuICAgIH0sIFt0aGlzLnZpc2libGVdKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtjb2x1bW4sIHRhYmxlLCB0YWJsZVNldHRpbmdDb2x1bW59ID0gdGhpcy5wXG4gICAgY29uc3QgY2hlY2tlZCA9IHRhYmxlU2V0dGluZ0NvbHVtbi52aXNpYmxlKCkgPT09IHRydWVcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdEYXRhU2V0XCIsIHtjb21wb25lbnQ6IFwiYXBpLW1ha2VyLS10YWJsZS0tc2V0dGluZ3MtLWNvbHVtbi1yb3dcIn0pfSBzdHlsZT17dGhpcy5jYWNoZShcInJvb3RWaWV3U3R5bGVcIiwge2p1c3RpZnlDb250ZW50OiBcImNlbnRlclwifSl9PlxuICAgICAgICA8bGFiZWwgc3R5bGU9e3t3aGl0ZVNwYWNlOiBcIm5vd3JhcFwifX0+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYXBpLW1ha2VyLS10YWJsZS0tc2V0aW5ncy0tY29sdW1uLWNoZWNrYm94XCJcbiAgICAgICAgICAgIGRhdGEtaWRlbnRpZmllcj17Y29sdW1uSWRlbnRpZmllcihjb2x1bW4pfVxuICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGVja2JveENoYW5nZX1cbiAgICAgICAgICAgIHJlZj17dGhpcy5jaGVja2JveFJlZn1cbiAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0YWJsZS5oZWFkZXJMYWJlbEZvckNvbHVtbihjb2x1bW4pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkNoZWNrYm94Q2hhbmdlID0gKCkgPT4ge1xuICAgIGNvbnN0IGNoZWNrZWQgPSB0aGlzLnAudGFibGVTZXR0aW5nQ29sdW1uLnZpc2libGUoKVxuICAgIGxldCB2aXNpYmxlXG5cbiAgICBpZiAoY2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgdmlzaWJsZSA9IG51bGxcbiAgICB9IGVsc2UgaWYgKGNoZWNrZWQgPT09IG51bGwpIHtcbiAgICAgIHZpc2libGUgPSBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICB2aXNpYmxlID0gdHJ1ZVxuICAgIH1cblxuICAgIHRoaXMudXBkYXRlQ2hlY2tib3hDaGVja2VkKHZpc2libGUpXG4gICAgdGhpcy51cGRhdGVUYWJsZVNldHRpbmdDb2x1bW4odmlzaWJsZSlcbiAgfVxuXG4gIHVwZGF0ZUNoZWNrYm94Q2hlY2tlZCh2aXNpYmxlID0gdGhpcy5wLnRhYmxlU2V0dGluZ0NvbHVtbi52aXNpYmxlKCkpIHtcbiAgICBpZiAodmlzaWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5jaGVja2JveFJlZi5jdXJyZW50LmNoZWNrZWQgPSB0cnVlXG4gICAgICB0aGlzLmNoZWNrYm94UmVmLmN1cnJlbnQuaW5kZXRlcm1pbmF0ZSA9IHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAodmlzaWJsZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5jaGVja2JveFJlZi5jdXJyZW50LmNoZWNrZWQgPSB1bmRlZmluZWRcbiAgICAgIHRoaXMuY2hlY2tib3hSZWYuY3VycmVudC5pbmRldGVybWluYXRlID0gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoZWNrYm94UmVmLmN1cnJlbnQuY2hlY2tlZCA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5jaGVja2JveFJlZi5jdXJyZW50LmluZGV0ZXJtaW5hdGUgPSB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVUYWJsZVNldHRpbmdDb2x1bW4odmlzaWJsZSkge1xuICAgIGNvbnN0IHt0YWJsZSwgdGFibGVTZXR0aW5nQ29sdW1ufSA9IHRoaXMucFxuXG4gICAgYXdhaXQgdGFibGVTZXR0aW5nQ29sdW1uLnVwZGF0ZSh7dmlzaWJsZX0pXG5cbiAgICB0YWJsZS5ldmVudHMuZW1pdChcImNvbHVtblZpc2liaWxpdHlVcGRhdGVkXCIsIHt0YWJsZVNldHRpbmdDb2x1bW59KVxuICB9XG59KSlcbiJdfQ==
|
|
@@ -10,7 +10,7 @@ import Modal from "../../modal";
|
|
|
10
10
|
import PropTypes from "prop-types";
|
|
11
11
|
import propTypesExact from "prop-types-exact";
|
|
12
12
|
import { ShapeComponent, shapeComponent } from "set-state-compare/build/shape-component.js";
|
|
13
|
-
import { View } from "react-native";
|
|
13
|
+
import { Pressable, View } from "react-native";
|
|
14
14
|
import Text from "../../utils/text";
|
|
15
15
|
import useI18n from "i18n-on-steroids/build/src/use-i18n.js";
|
|
16
16
|
/**
|
|
@@ -41,7 +41,17 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
41
41
|
padding: 20,
|
|
42
42
|
backgroundColor: "#fff",
|
|
43
43
|
border: "1px solid black"
|
|
44
|
-
}), children: [_jsx(View, { style: this.cache("settingsHeaderViewStyle", { marginBottom: 5 }), children: _jsx(Text, { style: this.cache("settingsHeaderTextSTyle", { fontSize: 16, fontWeight: "bold" }), children: t(".settings", { defaultValue: "Settings" }) }) }), _jsx(DownloadAction, { l: l, table: table }), _jsx(View, { style: this.cache("columnsHeaderViewStyle", { marginBottom: 5 }), children: _jsx(Text, { style: this.cache("columnsHeaderTextStyle", { fontSize: 16, fontWeight: "bold" }), children: t(".columns", { defaultValue: "Columns" }) }) }), preparedColumns?.map(({ column, tableSettingColumn }) => _jsx(ColumnRow, { column: column, table: table, tableSettingColumn: tableSettingColumn }, columnIdentifier(column)))] }) }));
|
|
44
|
+
}), children: [_jsx(View, { style: this.cache("settingsHeaderViewStyle", { marginBottom: 5 }), children: _jsx(Text, { style: this.cache("settingsHeaderTextSTyle", { fontSize: 16, fontWeight: "bold" }), children: t(".settings", { defaultValue: "Settings" }) }) }), _jsx(DownloadAction, { l: l, table: table }), _jsx(View, { style: this.cache("columnsHeaderViewStyle", { marginBottom: 5 }), children: _jsx(Text, { style: this.cache("columnsHeaderTextStyle", { fontSize: 16, fontWeight: "bold" }), children: t(".columns", { defaultValue: "Columns" }) }) }), _jsx(Pressable, { dataSet: this.cache("deselectAllPressableDataSet", { component: "api-maker/table/settings/deselect-all-action" }), onPress: this.tt.onDeselectAllPress, style: this.cache("deselectAllPressableStyle", { marginBottom: 10 }), testID: "table-settings-deselect-all-button", children: _jsx(Text, { children: t(".deselect_all", { defaultValue: "Deselect all" }) }) }), preparedColumns?.map(({ column, tableSettingColumn }) => _jsx(ColumnRow, { column: column, table: table, tableSettingColumn: tableSettingColumn }, columnIdentifier(column)))] }) }));
|
|
45
45
|
}
|
|
46
|
+
onDeselectAllPress = async () => {
|
|
47
|
+
const { table } = this.p;
|
|
48
|
+
const { preparedColumns } = table.s;
|
|
49
|
+
if (!preparedColumns)
|
|
50
|
+
return;
|
|
51
|
+
await Promise.all(preparedColumns.map(async ({ tableSettingColumn }) => {
|
|
52
|
+
await tableSettingColumn.update({ visible: false });
|
|
53
|
+
}));
|
|
54
|
+
table.events.emit("columnVisibilityUpdated");
|
|
55
|
+
};
|
|
46
56
|
}));
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL3NldHRpbmdzL2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHlGQUF5RjtBQUN6RixPQUFPLEtBQUssRUFBRSxFQUFDLE1BQU0sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNuQyxPQUFPLGdCQUFnQixNQUFNLHlCQUF5QixDQUFBO0FBQ3RELE9BQU8sU0FBUyxNQUFNLGNBQWMsQ0FBQTtBQUNwQyxPQUFPLGNBQWMsTUFBTSxtQkFBbUIsQ0FBQTtBQUM5QyxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRCxPQUFPLEtBQUssTUFBTSxhQUFhLENBQUE7QUFDL0IsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxFQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDNUMsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxPQUFPLE1BQU0sd0NBQXdDLENBQUE7QUFFNUQ7Ozs7R0FJRztBQUNILDZDQUE2QztBQUM3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsK0NBQStDLENBQUMsTUFBTSxxQkFBc0IsU0FBUSxjQUFjO0lBQ25JLE1BQU0sQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDO1FBQ2hDLGNBQWMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDekMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtLQUNuQyxDQUFDLENBQUE7SUFFRixLQUFLO1FBQ0gsTUFBTSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUMsR0FBRyxPQUFPLENBQUMsRUFBQyxTQUFTLEVBQUUsNkJBQTZCLEVBQUMsQ0FB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QUMsRUFBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUMsRUFBRSxFQUFFLENBQ3JELEtBQUMsU0FBUyxJQUFDLE1BQU0sRUFBRSxNQUFNLEVBQWlDLEtBQUssRUFBRSxLQUFLLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLElBQTlFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUEwRCxDQUNuSCxJQUNJLEdBQ0QsQ0FDVCxDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixHQUFHLEtBQUssSUFBSSxFQUFFO1FBQzlCLE1BQU0sRUFBQyxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLE1BQU0sRUFBQyxlQUFlLEVBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRWpDLElBQUksQ0FBQyxlQUFlO1lBQUUsT0FBTTtRQUU1QixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBQyxrQkFBa0IsRUFBQyxFQUFFLEVBQUU7WUFDakQsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUNuRCxDQUFDLENBQUMsQ0FDSCxDQUFBO1FBRUQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUM5QyxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgaW1wbGljaXQtYXJyb3ctbGluZWJyZWFrLCBtYXgtbGVuLCByZWFjdC9qc3gtbWF4LWRlcHRoLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCBSZWFjdCwge3VzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBjb2x1bW5JZGVudGlmaWVyIGZyb20gXCIuLi9jb2x1bW4taWRlbnRpZmllci5qc1wiXG5pbXBvcnQgQ29sdW1uUm93IGZyb20gXCIuL2NvbHVtbi1yb3dcIlxuaW1wb3J0IERvd25sb2FkQWN0aW9uIGZyb20gXCIuL2Rvd25sb2FkLWFjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL21vZGFsXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCB7UHJlc3NhYmxlLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBUZXh0IGZyb20gXCIuLi8uLi91dGlscy90ZXh0XCJcbmltcG9ydCB1c2VJMThuIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzL2J1aWxkL3NyYy91c2UtaTE4bi5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IG9uUmVxdWVzdENsb3NlXG4gKiBAcHJvcGVydHkge29iamVjdH0gdGFibGVcbiAqL1xuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IFN0YXRlICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIEFwaU1ha2VyVGFibGVTZXR0aW5ncyBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBvblJlcXVlc3RDbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICB0YWJsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge2wsIHR9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZS5zZXR0aW5nc1wifSlcblxuICAgIHRoaXMucm9vdFJlZiA9IHVzZVJlZih1bmRlZmluZWQpXG4gICAgdGhpcy5sID0gbFxuICAgIHRoaXMudCA9IHRcbiAgfVxuXG4gIHRhYmxlU2V0dGluZyA9ICgpID0+IHRoaXMucC50YWJsZS5zLnRhYmxlU2V0dGluZ1xuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bCwgdH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge3RhYmxlfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwcmVwYXJlZENvbHVtbnN9ID0gdGFibGUuc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNb2RhbCBvbkJhY2tkcm9wUHJlc3M9e3RoaXMucC5vblJlcXVlc3RDbG9zZX0gb25SZXF1ZXN0Q2xvc2U9e3RoaXMucC5vblJlcXVlc3RDbG9zZX0gc3R5bGU9e3RoaXMuY2FjaGUoXCJyb290TW9kYWxTdHlsZVwiLCB7YmFja2dyb3VuZENvbG9yOiBcIiMwMDBcIn0pfSB0cmFuc3BhcmVudD5cbiAgICAgICAgPFZpZXdcbiAgICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdEYXRhU2V0XCIsIHtjbGFzczogXCJhcGktbWFrZXItLXRhYmxlLS1zZXR0aW5nc1wifSl9XG4gICAgICAgICAgc3R5bGU9e3RoaXMuY2FjaGUoXCJyb290Vmlld1N0eWxlXCIsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgIG1heFdpZHRoOiA4MDAsXG4gICAgICAgICAgICBwYWRkaW5nOiAyMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmXCIsXG4gICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkIGJsYWNrXCJcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXt0aGlzLmNhY2hlKFwic2V0dGluZ3NIZWFkZXJWaWV3U3R5bGVcIiwge21hcmdpbkJvdHRvbTogNX0pfT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt0aGlzLmNhY2hlKFwic2V0dGluZ3NIZWFkZXJUZXh0U1R5bGVcIiwge2ZvbnRTaXplOiAxNiwgZm9udFdlaWdodDogXCJib2xkXCJ9KX0+XG4gICAgICAgICAgICAgIHt0KFwiLnNldHRpbmdzXCIsIHtkZWZhdWx0VmFsdWU6IFwiU2V0dGluZ3NcIn0pfVxuICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8RG93bmxvYWRBY3Rpb24gbD17bH0gdGFibGU9e3RhYmxlfSAvPlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXt0aGlzLmNhY2hlKFwiY29sdW1uc0hlYWRlclZpZXdTdHlsZVwiLCB7bWFyZ2luQm90dG9tOiA1fSl9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3RoaXMuY2FjaGUoXCJjb2x1bW5zSGVhZGVyVGV4dFN0eWxlXCIsIHtmb250U2l6ZTogMTYsIGZvbnRXZWlnaHQ6IFwiYm9sZFwifSl9PlxuICAgICAgICAgICAgICB7dChcIi5jb2x1bW5zXCIsIHtkZWZhdWx0VmFsdWU6IFwiQ29sdW1uc1wifSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuY2FjaGUoXCJkZXNlbGVjdEFsbFByZXNzYWJsZURhdGFTZXRcIiwge2NvbXBvbmVudDogXCJhcGktbWFrZXIvdGFibGUvc2V0dGluZ3MvZGVzZWxlY3QtYWxsLWFjdGlvblwifSl9XG4gICAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRGVzZWxlY3RBbGxQcmVzc31cbiAgICAgICAgICAgIHN0eWxlPXt0aGlzLmNhY2hlKFwiZGVzZWxlY3RBbGxQcmVzc2FibGVTdHlsZVwiLCB7bWFyZ2luQm90dG9tOiAxMH0pfVxuICAgICAgICAgICAgdGVzdElEPVwidGFibGUtc2V0dGluZ3MtZGVzZWxlY3QtYWxsLWJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgIHt0KFwiLmRlc2VsZWN0X2FsbFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkRlc2VsZWN0IGFsbFwifSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgICAge3ByZXBhcmVkQ29sdW1ucz8ubWFwKCh7Y29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW59KSA9PlxuICAgICAgICAgICAgPENvbHVtblJvdyBjb2x1bW49e2NvbHVtbn0ga2V5PXtjb2x1bW5JZGVudGlmaWVyKGNvbHVtbil9IHRhYmxlPXt0YWJsZX0gdGFibGVTZXR0aW5nQ29sdW1uPXt0YWJsZVNldHRpbmdDb2x1bW59IC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9Nb2RhbD5cbiAgICApXG4gIH1cblxuICBvbkRlc2VsZWN0QWxsUHJlc3MgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3RhYmxlfSA9IHRoaXMucFxuICAgIGNvbnN0IHtwcmVwYXJlZENvbHVtbnN9ID0gdGFibGUuc1xuXG4gICAgaWYgKCFwcmVwYXJlZENvbHVtbnMpIHJldHVyblxuXG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcmVwYXJlZENvbHVtbnMubWFwKGFzeW5jICh7dGFibGVTZXR0aW5nQ29sdW1ufSkgPT4ge1xuICAgICAgICBhd2FpdCB0YWJsZVNldHRpbmdDb2x1bW4udXBkYXRlKHt2aXNpYmxlOiBmYWxzZX0pXG4gICAgICB9KVxuICAgIClcblxuICAgIHRhYmxlLmV2ZW50cy5lbWl0KFwiY29sdW1uVmlzaWJpbGl0eVVwZGF0ZWRcIilcbiAgfVxufSkpXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"/src/","sources":["table/table.jsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"/src/","sources":["table/table.jsx"],"names":[],"mappings":"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"}
|
package/build/table/table.js
CHANGED
|
@@ -7,6 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
7
7
|
import { dig, digg, digs } from "diggerize";
|
|
8
8
|
import React, { createContext, useContext, useEffect, useMemo, useRef } from "react";
|
|
9
9
|
import { Animated, Platform, Pressable, View } from "react-native";
|
|
10
|
+
import BlockingOverlay from "./blocking-overlay";
|
|
10
11
|
import Card from "../bootstrap/card";
|
|
11
12
|
import classNames from "classnames";
|
|
12
13
|
import Collection from "../collection.js";
|
|
@@ -136,7 +137,7 @@ const ListHeaderComponent = memo(shapeComponent(/** @augments {ShapeComponent<He
|
|
|
136
137
|
const { query } = digs(collection, "query");
|
|
137
138
|
useEventEmitter(events, "columnVisibilityUpdated", this.tt.onColumnVisibilityUpdated);
|
|
138
139
|
return (_jsxs(Row, { style: table.styleForRowHeader(), testID: "api-maker/table/header-row", children: [table.p.workplace && table.s.currentWorkplace &&
|
|
139
|
-
_jsxs(Header, { style: table.styleForHeader({ style: { width: mdUp ? 41 : undefined } }), children: [_jsx(WorkerPluginsCheckAllCheckbox, { currentWorkplace: table.s.currentWorkplace, query: queryWithoutPagination, style: styles.workerPlguinsCheckAllCheckboxStyle ||= { marginHorizontal: "auto" } }), !mdUp &&
|
|
140
|
+
_jsxs(Header, { style: table.styleForHeader({ style: { width: mdUp ? 41 : undefined } }), children: [_jsx(WorkerPluginsCheckAllCheckbox, { currentWorkplace: table.s.currentWorkplace, query: queryWithoutPagination, style: styles.workerPlguinsCheckAllCheckboxStyle ||= { marginHorizontal: "auto" }, table: table }), !mdUp &&
|
|
140
141
|
_jsx(Text, { style: styles.selectAllFoundTextStyle ||= { marginLeft: 3 }, children: t(".select_all_found", { defaultValue: "Select all found" }) })] }), !mdUp &&
|
|
141
142
|
_jsx(Header, { style: table.styleForHeader({ style: {} }), children: _jsx(HeaderSelect, { preparedColumns: table.s.preparedColumns, query: query, table: table }) }), mdUp &&
|
|
142
143
|
_jsxs(_Fragment, { children: [table.headersContentFromColumns(), _jsx(Header, { style: table.styleForHeader({ style: {}, type: "actions" }) })] })] }));
|
|
@@ -271,6 +272,38 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
271
272
|
currentWorkplaceCountRequestId = 0;
|
|
272
273
|
tableSettingLoadRequestId = 0;
|
|
273
274
|
tableSettings = null;
|
|
275
|
+
blockingCount = 0;
|
|
276
|
+
/**
|
|
277
|
+
* Runs the given async function while showing the table's blocking overlay,
|
|
278
|
+
* preventing the user from starting a second heavy action (select all,
|
|
279
|
+
* deselect all, per-row destroy, ...) while the first is in flight.
|
|
280
|
+
*
|
|
281
|
+
* Re-entrant — nested or overlapping calls keep the overlay shown until the
|
|
282
|
+
* outermost call resolves.
|
|
283
|
+
*
|
|
284
|
+
* Emits the "blocking" events via `queueMicrotask` so the overlay's
|
|
285
|
+
* subscription has committed before the first event fires — otherwise a
|
|
286
|
+
* heavy action kicked off from a sibling component's `setup()` (e.g. the
|
|
287
|
+
* check-all checkbox's initial `updateAllChecked`) can emit before the
|
|
288
|
+
* overlay mounts, and the initial transition to blocking is lost.
|
|
289
|
+
*
|
|
290
|
+
* @template T
|
|
291
|
+
* @param {() => Promise<T>} fn
|
|
292
|
+
* @returns {Promise<T>}
|
|
293
|
+
*/
|
|
294
|
+
withBlocking = async (fn) => {
|
|
295
|
+
this.blockingCount += 1;
|
|
296
|
+
if (this.blockingCount === 1)
|
|
297
|
+
queueMicrotask(() => this.events.emit("blocking", true));
|
|
298
|
+
try {
|
|
299
|
+
return await fn();
|
|
300
|
+
}
|
|
301
|
+
finally {
|
|
302
|
+
this.blockingCount -= 1;
|
|
303
|
+
if (this.blockingCount === 0)
|
|
304
|
+
queueMicrotask(() => this.events.emit("blocking", false));
|
|
305
|
+
}
|
|
306
|
+
};
|
|
274
307
|
state = {
|
|
275
308
|
columns: this.columnsAsArray(),
|
|
276
309
|
currentWorkplace: undefined,
|
|
@@ -404,12 +437,12 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
404
437
|
return;
|
|
405
438
|
}
|
|
406
439
|
const WorkplaceLink = modelClassRequire("WorkplaceLink");
|
|
407
|
-
const currentWorkplaceCount = await WorkplaceLink
|
|
440
|
+
const currentWorkplaceCount = await this.withBlocking(() => WorkplaceLink
|
|
408
441
|
.ransack({
|
|
409
442
|
resource_type_eq: this.p.modelClass.modelClassData().name,
|
|
410
443
|
workplace_id_eq: this.s.currentWorkplace.id()
|
|
411
444
|
})
|
|
412
|
-
.count();
|
|
445
|
+
.count());
|
|
413
446
|
if (requestId !== this.currentWorkplaceCountRequestId)
|
|
414
447
|
return;
|
|
415
448
|
this.setState({ currentWorkplaceCount });
|
|
@@ -557,15 +590,15 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
557
590
|
PaginationComponent = Paginate;
|
|
558
591
|
}
|
|
559
592
|
}
|
|
560
|
-
const flatList = (_jsx(TableContext.Provider, { value: this.tt.tableContextValue, children: _jsx(FlatList, { data: models, dataSet: dataSets[`flatList-${className}-${this.s.tableSettingFullCacheKey}`] ||= {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
593
|
+
const flatList = (_jsx(TableContext.Provider, { value: this.tt.tableContextValue, children: _jsxs(View, { dataSet: dataSets.flatListWrapper ||= { class: "api-maker--table--flat-list-wrapper" }, style: styles.flatListWrapper ||= { position: "relative" }, children: [_jsx(FlatList, { data: models, dataSet: dataSets[`flatList-${className}-${this.s.tableSettingFullCacheKey}`] ||= {
|
|
594
|
+
class: classNames("api-maker--table", className),
|
|
595
|
+
cacheKey: this.s.tableSettingFullCacheKey,
|
|
596
|
+
lastUpdate: this.s.lastUpdate
|
|
597
|
+
}, extraData: this.s.lastUpdate, keyExtractor: this.tt.keyExtrator, ListHeaderComponent: ListHeaderComponent, renderItem: this.tt.renderItem, showsHorizontalScrollIndicator: true, style: styles[`flatList-${styleUI}`] ||= {
|
|
598
|
+
overflowX: "auto",
|
|
599
|
+
border: styleUI ? "1px solid #dbdbdb" : undefined,
|
|
600
|
+
borderRadius: styleUI ? 5 : undefined
|
|
601
|
+
}, ...restProps }), _jsx(BlockingOverlay, { events: this.events })] }) }));
|
|
569
602
|
return (_jsxs(_Fragment, { children: [filterContent && filterCard &&
|
|
570
603
|
_jsx(Card, { className: "live-table--filter-card mb-4", children: this.filterForm() }), filterContent && !filterCard &&
|
|
571
604
|
this.filterForm(), card &&
|
|
@@ -921,4 +954,4 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
921
954
|
};
|
|
922
955
|
submitFilterDebounce = debounce(this.tt.submitFilter);
|
|
923
956
|
}));
|
|
924
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL3RhYmxlLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVGQUF1RjtBQUN2RiwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxLQUFLLEVBQUUsRUFBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDaEUsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQTtBQUMvQixPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFBO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDNUIsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxjQUFjLENB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SUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUE7WUFDekQsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTFELFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBRUQsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV4RCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUE7SUFFRCxvQkFBb0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtDQUN0RCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgYXJyb3ctYm9keS1zdHlsZSwgaW1wb3J0L25vLW5hbWVkLWFzLWRlZmF1bHQsIGltcG9ydC9uby11bnJlc29sdmVkICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXR1cm4tYXNzaWduLCBuby11bnVzZWQtdmFycywgcmVhY3QvanN4LW1heC1kZXB0aCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW9uZS1leHByZXNzaW9uLXBlci1saW5lLCByZWFjdC9qc3gtc29ydC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvc29ydC1wcm9wLXR5cGVzLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7ZGlnLCBkaWdnLCBkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUGxhdGZvcm0sIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQ2FyZCBmcm9tIFwiLi4vYm9vdHN0cmFwL2NhcmRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSBcIi4uL2NvbGxlY3Rpb24uanNcIlxuaW1wb3J0IGNvbHVtblZpc2libGUgZnJvbSBcIi4vY29sdW1uLXZpc2libGUuanNcIlxuaW1wb3J0IGRlYm91bmNlIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgRHJhZ2dhYmxlU29ydCBmcm9tIFwiLi4vZHJhZ2dhYmxlLXNvcnQvaW5kZXhcIlxuaW1wb3J0IHtFdmVudEVtaXR0ZXJ9IGZyb20gXCJldmVudGVtaXR0ZXIzXCJcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuL2ZpbHRlcnMvaW5kZXhcIlxuaW1wb3J0IEZsYXRMaXN0IGZyb20gXCIuL2NvbXBvbmVudHMvZmxhdC1saXN0XCJcbmltcG9ydCB7Rm9ybX0gZnJvbSBcIi4uL2Zvcm1cIlxuaW1wb3J0IEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL2hlYWRlclwiXG5pbXBvcnQgSGVhZGVyQ29sdW1uIGZyb20gXCIuL2hlYWRlci1jb2x1bW5cIlxuaW1wb3J0IEhlYWRlclNlbGVjdCBmcm9tIFwiLi9oZWFkZXItc2VsZWN0XCJcbmltcG9ydCBJY29uIGZyb20gXCIuLi91dGlscy9pY29uXCJcbmltcG9ydCB7aW5jb3Jwb3JhdGV9IGZyb20gXCJpbmNvcnBvcmF0b3JcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4uL21vZGVsLWNsYXNzLXJlcXVpcmUuanNcIlxuaW1wb3J0IE1vZGVsUm93IGZyb20gXCIuL21vZGVsLXJvd1wiXG5pbXBvcnQgUGFnaW5hdGUgZnJvbSBcIi4uL2Jvb3RzdHJhcC9wYWdpbmF0ZVwiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi9wYXJhbXMuanNcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUm93IGZyb20gXCIuL2NvbXBvbmVudHMvcm93XCJcbmltcG9ydCBzZWxlY3RDYWxjdWxhdG9yIGZyb20gXCIuL3NlbGVjdC1jYWxjdWxhdG9yLmpzXCJcbmltcG9ydCBTZWxlY3QgZnJvbSBcIi4uL2lucHV0cy9zZWxlY3RcIlxuaW1wb3J0IFNldHRpbmdzIGZyb20gXCIuL3NldHRpbmdzL2luZGV4XCJcbmltcG9ydCB7U2hhcGVDb21wb25lbnQsIHNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvc2hhcGUtY29tcG9uZW50LmpzXCJcbmltcG9ydCBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCBmcm9tIFwiLi9zaG91bGQtcmVuZGVyLWxvYWRpbmctY29udGVudC5qc1wiXG5pbXBvcnQgVGFibGVTZXR0aW5ncyBmcm9tIFwiLi90YWJsZS1zZXR0aW5ncy5qc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdW5pcXVuaXplIGZyb20gXCJ1bmlxdW5pemVcIlxuaW1wb3J0IHt1c2VCcmVha3BvaW50fSBmcm9tIFwicmVzcG9uc2l2ZS1icmVha3BvaW50c1wiXG5pbXBvcnQgdXNlQ29sbGVjdGlvbiBmcm9tIFwiLi4vdXNlLWNvbGxlY3Rpb24uanNcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvYnVpbGQvc3JjL3VzZS1pMThuLmpzXCJcbmltcG9ydCB1c2VFdmVudEVtaXR0ZXIgZnJvbSBcInlhLXVzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VNb2RlbEV2ZW50IGZyb20gXCIuLi91c2UtbW9kZWwtZXZlbnQuanNcIlxuaW1wb3J0IHVzZVF1ZXJ5UGFyYW1zIGZyb20gXCJvbi1sb2NhdGlvbi1jaGFuZ2VkL2J1aWxkL3VzZS1xdWVyeS1wYXJhbXMuanNcIlxuaW1wb3J0IFdpZHRocyBmcm9tIFwiLi93aWR0aHNcIlxuaW1wb3J0IFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IGZyb20gXCIuL3dvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveFwiXG5cbi8qKlxuICogVGFibGUgY29tcG9uZW50IHdpdGggc29ydGFibGUsIHJlc2l6YWJsZSBjb2x1bW5zIGFuZCBvcHRpb25hbCBmaWx0ZXJzLlxuICovXG5jb25zdCBkYXRhU2V0cyA9IHt9XG5jb25zdCBwYWdpbmF0aW9uT3B0aW9ucyA9IFszMCwgNjAsIDkwLCBbXCJBbGxcIiwgXCJhbGxcIl1dXG5jb25zdCBzdHlsZXMgPSB7fVxuY29uc3QgVGFibGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh1bmRlZmluZWQpXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vcmVzdWx0LmpzXCIpLmRlZmF1bHR9IFRhYmxlUmVzdWx0ICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL2NvbGxlY3Rpb24uanNcIikuUXVlcnlQYXJhbVZhbHVlTWFwfSBUYWJsZVF1ZXJ5UGFyYW1zICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3VzZS1jb2xsZWN0aW9uLmpzXCIpLlVzZUNvbGxlY3Rpb25RdWVyeU1ldGhvZH0gVGFibGVRdWVyeU1ldGhvZCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL3dpZHRoc1wiKS5kZWZhdWx0fSBUYWJsZVdpZHRocyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge1xuICogICBpZCgpOiBudW1iZXIgfCBzdHJpbmcsXG4gKiAgIG1vZGVsQ2xhc3NEYXRhKCk6IHtuYW1lOiBzdHJpbmd9LFxuICogICBjYWNoZUtleSgpOiBzdHJpbmcsXG4gKiAgIGNhbihuYW1lOiBzdHJpbmcpOiBib29sZWFuLFxuICogICBkZXN0cm95KCk6IFByb21pc2U8dm9pZD5cbiAqIH19IFRhYmxlTW9kZWxcbiAqL1xuLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nLCByZXNvdXJjZV9uYW1lOiBzdHJpbmd9fSBUYWJsZVJlbGF0aW9uc2hpcCAqL1xuLyoqIEB0eXBlZGVmIHt7Y29sbGVjdGlvbktleTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHBhcmFtS2V5OiBzdHJpbmcsIHJlbGF0aW9uc2hpcHM6IFRhYmxlUmVsYXRpb25zaGlwW119fSBUYWJsZU1vZGVsQ2xhc3NEYXRhICovXG4vKiogQHR5cGVkZWYge3todW1hbihhcmdzOiB7Y291bnQ6IG51bWJlcn0pOiBzdHJpbmd9fSBIdW1hbk1vZGVsTmFtZSAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBoYXNBdHRyaWJ1dGUobmFtZTogc3RyaW5nKTogYm9vbGVhbixcbiAqICAgaHVtYW5BdHRyaWJ1dGVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyxcbiAqICAgbW9kZWxDbGFzc0RhdGEoKTogVGFibGVNb2RlbENsYXNzRGF0YSxcbiAqICAgbW9kZWxOYW1lKCk6IEh1bWFuTW9kZWxOYW1lLFxuICogICBwcmltYXJ5S2V5KCk6IHN0cmluZ1xuICogfX0gVGFibGVNb2RlbENsYXNzXG4gKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge2lkKCk6IG51bWJlciB8IHN0cmluZ319IEN1cnJlbnRVc2VyTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7QmFzZU1vZGVsICYge2lkKCk6IG51bWJlciB8IHN0cmluZ319IFdvcmtwbGFjZU1vZGVsICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGF0dHJpYnV0ZT86IHN0cmluZyxcbiAqICAgY2xhc3NOYW1lPzogc3RyaW5nLFxuICogICBkZWZhdWx0VmlzaWJsZT86IGJvb2xlYW4sXG4gKiAgIGlkZW50aWZpZXI/OiBzdHJpbmcsXG4gKiAgIGxhYmVsPzogc3RyaW5nLFxuICogICBwYXRoPzogc3RyaW5nW10sXG4gKiAgIHNvcnRLZXk/OiBzdHJpbmdcbiAqIH19IFRhYmxlQ29sdW1uRGVmaW5pdGlvblxuICovXG4vKipcbiAqIEB0eXBlZGVmIHt7XG4gKiAgIGZ1bGxDYWNoZUtleSgpOiBzdHJpbmcsXG4gKiAgIGlkZW50aWZpZXIoKTogc3RyaW5nLFxuICogICBwb3NpdGlvbigpOiBudW1iZXIsXG4gKiAgIHNvcnRLZXkoKTogc3RyaW5nLFxuICogICB2aXNpYmxlKCk6IGJvb2xlYW4gfCBudWxsLFxuICogICB1cGRhdGUoYXJnczoge3Zpc2libGU/OiBib29sZWFuLCB3aWR0aD86IG51bWJlcn0pOiBQcm9taXNlPHZvaWQ+XG4gKiB9fSBUYWJsZVNldHRpbmdDb2x1bW5cbiAqL1xuLyoqIEB0eXBlZGVmIHt7ZnVsbENhY2hlS2V5KCk6IHN0cmluZ319IFRhYmxlU2V0dGluZ1JlY29yZCAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBhbmltYXRlZFBvc2l0aW9uPzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlWFksXG4gKiAgIGFuaW1hdGVkV2lkdGg/OiBpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuQW5pbWF0ZWQuVmFsdWUsXG4gKiAgIGFuaW1hdGVkWkluZGV4PzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlLFxuICogICBjb2x1bW46IFRhYmxlQ29sdW1uRGVmaW5pdGlvbixcbiAqICAgdGFibGVTZXR0aW5nQ29sdW1uOiBUYWJsZVNldHRpbmdDb2x1bW4sXG4gKiAgIHdpZHRoPzogbnVtYmVyXG4gKiB9fSBQcmVwYXJlZENvbHVtblxuICovXG4vKiogQHR5cGVkZWYge3thc09iamVjdCgpOiBUYWJsZVF1ZXJ5UGFyYW1zfX0gVGFibGVGaWx0ZXJGb3JtU3RhdGUgKi9cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgQmFzZU1vZGVsIHwgc3RyaW5nPn0gVGFibGVNb2RlbENhbGxiYWNrQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7bW9kZWxzPzogVGFibGVNb2RlbFtdLCBxUGFyYW1zPzogVGFibGVRdWVyeVBhcmFtcywgcXVlcnk/OiBDb2xsZWN0aW9uLCByZXN1bHQ/OiBUYWJsZVJlc3VsdH19IFRhYmxlUmVuZGVyQXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7b25GaWx0ZXJDaGFuZ2VkOiAoKSA9PiB2b2lkLCBvbkZpbHRlckNoYW5nZWRXaXRoRGVsYXk6ICgpID0+IHZvaWQsIHFQYXJhbXM6IFRhYmxlUXVlcnlQYXJhbXMsIHF1ZXJ5UU5hbWU6IHN0cmluZ319IEZpbHRlckNvbnRlbnRBcmdzICovXG4vKiogQHR5cGVkZWYge3ttb2RlbHM6IFRhYmxlTW9kZWxbXSwgcVBhcmFtczogVGFibGVRdWVyeVBhcmFtcywgcXVlcnk6IENvbGxlY3Rpb24sIHJlc3VsdDogVGFibGVSZXN1bHR9fSBPbk1vZGVsc0xvYWRlZEFyZ3MgKi9cblxuLyoqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBuZXZlcj59IEhlYWRlclByb3BzICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IEhlYWRlclN0YXRlXG4gKiBAcHJvcGVydHkge0RhdGV9IGxhc3RVcGRhdGVcbiAqL1xuY29uc3QgTGlzdEhlYWRlckNvbXBvbmVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8SGVhZGVyUHJvcHMsIEhlYWRlclN0YXRlPn0gKi8gY2xhc3MgTGlzdEhlYWRlckNvbXBvbmVudCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgbGFzdFVwZGF0ZTogbmV3IERhdGUoKVxuICB9XG5cbiAgc2V0dXAoKSB7fVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7bWRVcH0gPSB1c2VCcmVha3BvaW50KClcbiAgICBjb25zdCB0YWJsZUNvbnRleHRWYWx1ZSA9IHVzZUNvbnRleHQoVGFibGVDb250ZXh0KVxuICAgIGNvbnN0IHRhYmxlID0gdGFibGVDb250ZXh0VmFsdWUudGFibGVcbiAgICBjb25zdCB7Y29sbGVjdGlvbiwgZXZlbnRzLCBxdWVyeVdpdGhvdXRQYWdpbmF0aW9uLCB0fSA9IHRhYmxlLnR0XG4gICAgY29uc3Qge3F1ZXJ5fSA9IGRpZ3MoY29sbGVjdGlvbiwgXCJxdWVyeVwiKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKGV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdyBzdHlsZT17dGFibGUuc3R5bGVGb3JSb3dIZWFkZXIoKX0gdGVzdElEPVwiYXBpLW1ha2VyL3RhYmxlL2hlYWRlci1yb3dcIj5cbiAgICAgICAge3RhYmxlLnAud29ya3BsYWNlICYmIHRhYmxlLnMuY3VycmVudFdvcmtwbGFjZSAmJlxuICAgICAgICAgIDxIZWFkZXIgc3R5bGU9e3RhYmxlLnN0eWxlRm9ySGVhZGVyKHtzdHlsZToge3dpZHRoOiBtZFVwID8gNDEgOiB1bmRlZmluZWR9fSl9PlxuICAgICAgICAgICAgPFdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94XG4gICAgICAgICAgICAgIGN1cnJlbnRXb3JrcGxhY2U9e3RhYmxlLnMuY3VycmVudFdvcmtwbGFjZX1cbiAgICAgICAgICAgICAgcXVlcnk9e3F1ZXJ5V2l0aG91dFBhZ2luYXRpb259XG4gICAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMud29ya2VyUGxndWluc0NoZWNrQWxsQ2hlY2tib3hTdHlsZSB8fD0ge21hcmdpbkhvcml6b250YWw6IFwiYXV0b1wifX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWxlY3RBbGxGb3VuZFRleHRTdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAgICB7dChcIi5zZWxlY3RfYWxsX2ZvdW5kXCIsIHtkZWZhdWx0VmFsdWU6IFwiU2VsZWN0IGFsbCBmb3VuZFwifSl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9fSl9PlxuICAgICAgICAgICAgPEhlYWRlclNlbGVjdCBwcmVwYXJlZENvbHVtbnM9e3RhYmxlLnMucHJlcGFyZWRDb2x1bW5zfSBxdWVyeT17cXVlcnl9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7bWRVcCAmJlxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7dGFibGUuaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucygpfVxuICAgICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0gLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgfVxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2xhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxufSkpXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYWJpbGl0aWVzXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVNb2RlbENhbGxiYWNrQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbYWN0aW9uc0NvbnRlbnRdXG4gKiBAcHJvcGVydHkge3twdXNoPzogKHBhdGg6IHN0cmluZykgPT4gdm9pZH19IFthcHBIaXN0b3J5XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbY2FyZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtDb2xsZWN0aW9ufSBbY29sbGVjdGlvbl1cbiAqIEBwcm9wZXJ0eSB7VGFibGVDb2x1bW5EZWZpbml0aW9uW10gfCAoKCkgPT4gVGFibGVDb2x1bW5EZWZpbml0aW9uW10pfSBbY29sdW1uc11cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlUmVuZGVyQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbY29udHJvbHNdXG4gKiBAcHJvcGVydHkge0N1cnJlbnRVc2VyTW9kZWwgfCBudWxsfSBbY3VycmVudFVzZXJdXG4gKiBAcHJvcGVydHkgeygodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpID0+IHN0cmluZykgfCBzdHJpbmd9IFtkZWZhdWx0RGF0ZUZvcm1hdE5hbWVdXG4gKiBAcHJvcGVydHkgeygodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpID0+IHN0cmluZykgfCBzdHJpbmd9IFtkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lXVxuICogQHByb3BlcnR5IHtUYWJsZVF1ZXJ5UGFyYW1zfSBbZGVmYXVsdFBhcmFtc11cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Rlc3Ryb3lFbmFibGVkXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXN0cm95TWVzc2FnZV1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlN0eWxlUHJvcDxpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuVmlld1N0eWxlPn0gW2RyYWdnZWRIZWFkZXJTdHlsZV1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlTW9kZWxDYWxsYmFja0FyZ3MpID0+IHN0cmluZ30gW2VkaXRNb2RlbFBhdGhdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtmaWx0ZXJDYXJkXVxuICogQHByb3BlcnR5IHsoYXJnczogRmlsdGVyQ29udGVudEFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW2ZpbHRlckNvbnRlbnRdXG4gKiBAcHJvcGVydHkge251bWJlciB8IHN0cmluZyB8IHN0cmluZ1tdfSBbZmlsdGVyU3VibWl0TGFiZWxdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbZ3JvdXBCeV1cbiAqIEBwcm9wZXJ0eSB7KChhcmdzOiBUYWJsZVJlbmRlckFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZSkgfCBzdHJpbmd9IFtoZWFkZXJdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lkZW50aWZpZXJdXG4gKiBAcHJvcGVydHkge1RhYmxlTW9kZWxDbGFzc30gbW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtub1JlY29yZHNBdmFpbGFibGVDb250ZW50XVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtub1JlY29yZHNGb3VuZENvbnRlbnRdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBPbk1vZGVsc0xvYWRlZEFyZ3MpID0+IHZvaWR9IFtvbk1vZGVsc0xvYWRlZF1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtyZXN1bHQ6IFRhYmxlUmVzdWx0fSkgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbcGFnaW5hdGVDb250ZW50XVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdFwiKS5Db21wb25lbnRUeXBlPHtyZXN1bHQ6IFRhYmxlUmVzdWx0fT59IFtwYWdpbmF0aW9uQ29tcG9uZW50XVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW3ByZWxvYWRzXVxuICogQHByb3BlcnR5IHtUYWJsZVF1ZXJ5TWV0aG9kfSBbcXVlcnlNZXRob2RdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3F1ZXJ5TmFtZV1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbc2VsZWN0XVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RDb2x1bW5zXVxuICogQHByb3BlcnR5IHt7Y29udGFpbmVyPzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlN0eWxlUHJvcDxpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuVmlld1N0eWxlPn19IFtzdHlsZXNdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtzdHlsZVVJXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVNb2RlbENhbGxiYWNrQXJncykgPT4gc3RyaW5nfSBbdmlld01vZGVsUGF0aF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3dvcmtwbGFjZV1cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTdGF0ZVxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbltdfSBjb2x1bW5zXG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW10gfCBudWxsfSBjb2x1bW5zVG9TaG93XG4gKiBAcHJvcGVydHkge1dvcmtwbGFjZU1vZGVsIHwgdW5kZWZpbmVkfSBjdXJyZW50V29ya3BsYWNlXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGN1cnJlbnRXb3JrcGxhY2VDb3VudFxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbiB8IG51bGx9IGRyYWdnZWRDb2x1bW5cbiAqIEBwcm9wZXJ0eSB7VGFibGVGaWx0ZXJGb3JtU3RhdGUgfCBudWxsfSBmaWx0ZXJGb3JtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtEYXRlfSBsYXN0VXBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBwcmVsb2FkXG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW10gfCB1bmRlZmluZWR9IHByZXBhcmVkQ29sdW1uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5TmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UGFnZU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVFOYW1lXG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5U05hbWVcbiAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlc2l6aW5nXG4gICogQHByb3BlcnR5IHtib29sZWFufSBzaG93RmlsdGVyc1xuICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2hvd1NldHRpbmdzXG4gKiBAcHJvcGVydHkge1RhYmxlU2V0dGluZ1JlY29yZCB8IHVuZGVmaW5lZH0gdGFibGVTZXR0aW5nXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRhYmxlU2V0dGluZ0xvYWRlZFxuICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IHdpZHRoXG4gKiBAcHJvcGVydHkge1RhYmxlV2lkdGhzIHwgbnVsbH0gd2lkdGhzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJUYWJsZSBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKi9cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjYXJkOiB0cnVlLFxuICAgIGN1cnJlbnRVc2VyOiBudWxsLFxuICAgIGRlc3Ryb3lFbmFibGVkOiB0cnVlLFxuICAgIGRyYWdnZWRIZWFkZXJTdHlsZTogdW5kZWZpbmVkLFxuICAgIGZpbHRlckNhcmQ6IHRydWUsXG4gICAgZmlsdGVyU3VibWl0QnV0dG9uOiB0cnVlLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICBwcmVsb2FkczogW10sXG4gICAgc2VsZWN0OiB7fSxcbiAgICBzdHlsZVVJOiB0cnVlLFxuICAgIHdvcmtwbGFjZTogZmFsc2VcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYWJpbGl0aWVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGFjdGlvbnNDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhcHBIaXN0b3J5OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNhcmQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY29udHJvbHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGN1cnJlbnRVc2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVzdHJveUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRlc3Ryb3lNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRyYWdnZWRIZWFkZXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBlZGl0TW9kZWxQYXRoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJDYXJkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBmaWx0ZXJDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJTdWJtaXRMYWJlbDogUHJvcFR5cGVzLmFueSxcbiAgICBncm91cEJ5OiBQcm9wVHlwZXMuYXJyYXksXG4gICAgaGVhZGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGlkZW50aWZpZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWxDbGFzczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uTW9kZWxzTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdpbmF0ZUNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhZ2luYXRpb25Db21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBwcmVsb2FkczogUHJvcFR5cGVzLmFycmF5LFxuICAgIHF1ZXJ5TWV0aG9kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNlbGVjdENvbHVtbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHN0eWxlVUk6IFByb3BUeXBlcy5ib29sLFxuICAgIHZpZXdNb2RlbFBhdGg6IFByb3BUeXBlcy5mdW5jLFxuICAgIHdvcmtwbGFjZTogUHJvcFR5cGVzLmJvb2xcbiAgfVxuXG4gIGRyYWdnYWJsZVNvcnRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIGN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkID0gMFxuICBjdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQgPSAwXG4gIHRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgPSAwXG4gIHRhYmxlU2V0dGluZ3MgPSBudWxsXG4gIHN0YXRlID0ge1xuICAgIGNvbHVtbnM6IHRoaXMuY29sdW1uc0FzQXJyYXkoKSxcbiAgICBjdXJyZW50V29ya3BsYWNlOiB1bmRlZmluZWQsXG4gICAgY3VycmVudFdvcmtwbGFjZUNvdW50OiBudWxsLFxuICAgIGZpbHRlckZvcm06IG51bGwsXG4gICAgY29sdW1uc1RvU2hvdzogbnVsbCxcbiAgICBkcmFnZ2VkQ29sdW1uOiBudWxsLFxuICAgIGlkZW50aWZpZXI6IHRoaXMucHJvcHMuaWRlbnRpZmllciB8fCBgJHtkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX0tZGVmYXVsdGAsXG4gICAgbGFzdFVwZGF0ZTogbmV3IERhdGUoKSxcbiAgICBwcmVsb2FkOiB1bmRlZmluZWQsXG4gICAgcHJlcGFyZWRDb2x1bW5zOiB1bmRlZmluZWQsXG4gICAgcXVlcnlOYW1lOiB0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKSxcbiAgICBxdWVyeVFOYW1lOiBgJHt0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX1fcWAsXG4gICAgcXVlcnlQYWdlTmFtZTogYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3BhZ2VgLFxuICAgIHF1ZXJ5U05hbWU6IGAke3RoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfV9zYCxcbiAgICByZXNpemluZzogZmFsc2UsXG4gICAgc2hvd0ZpbHRlcnM6IEJvb2xlYW4oUGFyYW1zLnBhcnNlKClbYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3NgXSksXG4gICAgc2hvd1NldHRpbmdzOiBmYWxzZSxcbiAgICB0YWJsZVNldHRpbmc6IHVuZGVmaW5lZCxcbiAgICB0YWJsZVNldHRpbmdMb2FkZWQ6IGZhbHNlLFxuICAgIHRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleTogdW5kZWZpbmVkLFxuICAgIHdpZHRoOiB1bmRlZmluZWQsXG4gICAgd2lkdGhzOiBudWxsXG4gIH1cblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7dH0gPSB1c2VJMThuKHtuYW1lc3BhY2U6IFwianMuYXBpX21ha2VyLnRhYmxlXCJ9KVxuICAgIGNvbnN0IHtuYW1lOiBicmVha3BvaW50LCBtZFVwfSA9IHVzZUJyZWFrcG9pbnQoKVxuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gdXNlUXVlcnlQYXJhbXMoKVxuXG4gICAgdGhpcy5icmVha3BvaW50ID0gYnJlYWtwb2ludFxuICAgIHRoaXMuZmlsdGVyRm9ybVJlZiA9IHVzZVJlZih1bmRlZmluZWQpXG4gICAgdGhpcy5tZFVwID0gbWRVcFxuICAgIHRoaXMudCA9IHRcblxuICAgIGNvbnN0IGNvbGxlY3Rpb25LZXkgPSBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKVxuICAgIGxldCBxdWVyeU5hbWUgPSB0aGlzLnByb3BzLnF1ZXJ5TmFtZVxuXG4gICAgaWYgKCFxdWVyeU5hbWUpIHF1ZXJ5TmFtZSA9IGNvbGxlY3Rpb25LZXlcblxuICAgIGNvbnN0IHF1ZXJ5U05hbWUgPSBgJHtxdWVyeU5hbWV9X3NgXG5cbiAgICBpZiAodGhpcy5zLnF1ZXJ5TmFtZSAhPSBxdWVyeU5hbWUgfHwgdGhpcy5zLnF1ZXJ5U05hbWUgIT0gcXVlcnlTTmFtZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgICAgcXVlcnlRTmFtZTogYCR7cXVlcnlOYW1lfV9xYCxcbiAgICAgICAgcXVlcnlQYWdlTmFtZTogYCR7cXVlcnlOYW1lfV9wYWdlYCxcbiAgICAgICAgcXVlcnlTTmFtZSxcbiAgICAgICAgc2hvd0ZpbHRlcnM6IEJvb2xlYW4ocXVlcnlQYXJhbXNbcXVlcnlTTmFtZV0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMudGFibGVDb250ZXh0VmFsdWUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgY2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXksXG4gICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlLFxuICAgICAgICByZXNpemluZzogdGhpcy5zLnJlc2l6aW5nLFxuICAgICAgICB0YWJsZTogdGhpc1xuICAgICAgfSksXG4gICAgICBbdGhpcy5zLmxhc3RVcGRhdGUsIHRoaXMucy5yZXNpemluZywgdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleV1cbiAgICApXG5cbiAgICAvLyBUYWJsZSBib290c3RyYXBwaW5nIHNob3VsZCBzdGFydCBhZnRlciBtb3VudCBzbyBmYXN0IGFzeW5jIGNvbXBsZXRpb25zIGNhbm5vdCBsYW5kIGJlZm9yZSBTaGFwZUNvbXBvbmVudCBpcyByZWFkeS5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMud29ya3BsYWNlKSB7XG4gICAgICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2UoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkICs9IDFcbiAgICAgIH1cbiAgICB9LCBbdGhpcy5wLmN1cnJlbnRVc2VyPy5pZCgpLCB0aGlzLnAubW9kZWxDbGFzc10pXG5cbiAgICAvLyBMb2FkIHRhYmxlIHNldHRpbmdzIGFmdGVyIG1vdW50IGZvciB0aGUgc2FtZSByZWFzb24gYXMgY29sbGVjdGlvbi9tb2RlbCBob29rczogYXZvaWQgcHJlLW1vdW50IHN0YXRlIHdyaXRlcy5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgLy8gQWx3YXlzIGJvb3RzdHJhcCB0YWJsZSBzZXR0aW5ncyBmcm9tIHRoZSBtb3VudGVkIGVmZmVjdCBzbyBkaXNjYXJkZWQgcHJlLW1vdW50IHJ1bnMgY2Fubm90IHN0cmFuZCB0aGUgdGFibGUuXG4gICAgICB0aGlzLmxvYWRUYWJsZVNldHRpbmcoKVxuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCksIHRoaXMucC5tb2RlbENsYXNzXSlcblxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2NyZWF0ZWRcIiwgdGhpcy50dC5vbkxpbmtzQ3JlYXRlZClcbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucy5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19kZXN0cm95ZWRcIiwgdGhpcy50dC5vbkxpbmtzRGVzdHJveWVkKVxuXG4gICAgbGV0IGNvbGxlY3Rpb25SZWFkeSA9IHRydWVcbiAgICBsZXQgc2VsZWN0XG5cbiAgICBpZiAoIXRoaXMucy5wcmVwYXJlZENvbHVtbnMpIHtcbiAgICAgIGNvbGxlY3Rpb25SZWFkeSA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKGNvbGxlY3Rpb25SZWFkeSkge1xuICAgICAgc2VsZWN0ID0gc2VsZWN0Q2FsY3VsYXRvcih7XG4gICAgICAgIHRhYmxlOiB7XG4gICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgIG1vZGVsQ2xhc3M6IHRoaXMucC5tb2RlbENsYXNzLFxuICAgICAgICAgICAgc2VsZWN0OiB0aGlzLnAuc2VsZWN0XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdGF0ZToge1xuICAgICAgICAgICAgcHJlcGFyZWRDb2x1bW5zOiB0aGlzLnMucHJlcGFyZWRDb2x1bW5zIHx8IFtdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMuY29sbGVjdGlvbiA9IHVzZUNvbGxlY3Rpb24oe1xuICAgICAgYWJpbGl0aWVzOiB0aGlzLmFiaWxpdGllc1RvTG9hZCgpLFxuICAgICAgZGVmYXVsdFBhcmFtczogdGhpcy5wcm9wcy5kZWZhdWx0UGFyYW1zLFxuICAgICAgY29sbGVjdGlvbjogdGhpcy5wcm9wcy5jb2xsZWN0aW9uLFxuICAgICAgZ3JvdXBCeTogdGhpcy5wcm9wcy5ncm91cEJ5LFxuICAgICAgaWZDb25kaXRpb246IGNvbGxlY3Rpb25SZWFkeSxcbiAgICAgIG1vZGVsQ2xhc3M6IHRoaXMucHJvcHMubW9kZWxDbGFzcyxcbiAgICAgIG9uTW9kZWxzTG9hZGVkOiB0aGlzLnByb3BzLm9uTW9kZWxzTG9hZGVkLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudDogdGhpcy5wcm9wcy5ub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIHBhZ2luYXRpb246IHRydWUsXG4gICAgICBwcmVsb2FkczogdGhpcy5zLnByZWxvYWQsXG4gICAgICBxdWVyeU1ldGhvZDogdGhpcy5wcm9wcy5xdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnM6IHRoaXMucHJvcHMuc2VsZWN0Q29sdW1uc1xuICAgIH0pXG4gICAgdGhpcy5xdWVyeVdpdGhvdXRQYWdpbmF0aW9uID0gdXNlTWVtbyhcbiAgICAgICgpID0+IHRoaXMuY29sbGVjdGlvbj8ucXVlcnk/LmNsb25lKCk/LmV4Y2VwdChcInBhZ2VcIiksXG4gICAgICBbdGhpcy5jb2xsZWN0aW9uLnF1ZXJ5XVxuICAgIClcblxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnU3RhcnRcIiwgdGhpcy50dC5vbkRyYWdTdGFydClcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5kcmFnZ2FibGVTb3J0RXZlbnRzLCBcIm9uRHJhZ0VuZEFuaW1hdGlvblwiLCB0aGlzLnR0Lm9uRHJhZ0VuZEFuaW1hdGlvbilcbiAgICB1c2VFdmVudEVtaXR0ZXIodGhpcy50dC5ldmVudHMsIFwiY29sdW1uVmlzaWJpbGl0eVVwZGF0ZWRcIiwgdGhpcy50dC5vbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2NvbHVtbnNUb1Nob3c6IHRoaXMuZ2V0Q29sdW1uc1RvU2hvdyh0aGlzLnMuY29sdW1ucyksIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxuICBvbkRyYWdTdGFydCA9ICh7aXRlbX0pID0+IGl0ZW0uYW5pbWF0ZWRaSW5kZXguc2V0VmFsdWUoOTk5OSlcbiAgb25EcmFnRW5kQW5pbWF0aW9uID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSgwKVxuXG4gIGFzeW5jIGxvYWRDdXJyZW50V29ya3BsYWNlKCkge1xuICAgIC8vIE9ubHkgdGhlIGxhdGVzdCB3b3JrcGxhY2UgYm9vdHN0cmFwIHJlcXVlc3QgbWF5IHVwZGF0ZSB0YWJsZSBzdGF0ZS5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkICsgMVxuXG4gICAgdGhpcy5jdXJyZW50V29ya3BsYWNlTG9hZFJlcXVlc3RJZCA9IHJlcXVlc3RJZFxuICAgIGNvbnN0IFdvcmtwbGFjZSA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgV29ya3BsYWNlLmN1cnJlbnQoKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2UgPSBkaWcocmVzdWx0LCBcImN1cnJlbnRcIiwgMClcblxuICAgIGlmIChyZXF1ZXN0SWQgIT0gdGhpcy5jdXJyZW50V29ya3BsYWNlTG9hZFJlcXVlc3RJZCkgcmV0dXJuXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50V29ya3BsYWNlfSlcbiAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKVxuICB9XG5cbiAgYXN5bmMgbG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpIHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK3RoaXMuY3VycmVudFdvcmtwbGFjZUNvdW50UmVxdWVzdElkXG5cbiAgICBpZiAoIXRoaXMucy5jdXJyZW50V29ya3BsYWNlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50V29ya3BsYWNlQ291bnQ6IDB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgV29ya3BsYWNlTGluayA9IG1vZGVsQ2xhc3NSZXF1aXJlKFwiV29ya3BsYWNlTGlua1wiKVxuICAgIGNvbnN0IGN1cnJlbnRXb3JrcGxhY2VDb3VudCA9IGF3YWl0IFdvcmtwbGFjZUxpbmtcbiAgICAgIC5yYW5zYWNrKHtcbiAgICAgICAgcmVzb3VyY2VfdHlwZV9lcTogdGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lLFxuICAgICAgICB3b3JrcGxhY2VfaWRfZXE6IHRoaXMucy5jdXJyZW50V29ya3BsYWNlLmlkKClcbiAgICAgIH0pXG4gICAgICAuY291bnQoKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPT0gdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFdvcmtwbGFjZUNvdW50fSlcbiAgfVxuXG4gIGdldENvbHVtbnNUb1Nob3coY29sdW1ucykge1xuICAgIHJldHVybiBjb2x1bW5zXG4gICAgICAuZmlsdGVyKCh7Y29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW59KSA9PiBjb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1uKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpIC0gYi50YWJsZVNldHRpbmdDb2x1bW4ucG9zaXRpb24oKSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWJsZVNldHRpbmcoKSB7XG4gICAgLy8gSWdub3JlIGxhdGUgdGFibGUtc2V0dGluZyByZXNwb25zZXMgYWZ0ZXIgbmF2aWdhdGlvbiBvciByZW1vdW50cy5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgKyAxXG5cbiAgICB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgPSByZXF1ZXN0SWRcbiAgICB0aGlzLnRhYmxlU2V0dGluZ3MgPSBuZXcgVGFibGVTZXR0aW5ncyh7XG4gICAgICB0YWJsZTogLyoqIEB0eXBlIHt7cHJvcHM6IHtjdXJyZW50VXNlcj86IEN1cnJlbnRVc2VyTW9kZWwgfCBudWxsfSwgc3RhdGU6IHtpZGVudGlmaWVyOiBzdHJpbmd9LCBjb2x1bW5zQXNBcnJheSgpOiBUYWJsZUNvbHVtbkRlZmluaXRpb25bXX19ICovICh0aGlzKVxuICAgIH0pXG4gICAgY29uc3QgdGFibGVTZXR0aW5nID0gYXdhaXQgdGhpcy50YWJsZVNldHRpbmdzLmxvYWRFeGlzdGluZ09yQ3JlYXRlVGFibGVTZXR0aW5ncygpXG5cbiAgICBpZiAoIXRhYmxlU2V0dGluZykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFibGVTZXR0aW5nIHJldHVybmVkIGJ5IHRhYmxlU2V0dGluZ3MubG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzKClcIilcblxuICAgIGlmIChyZXF1ZXN0SWQgIT0gdGhpcy50YWJsZVNldHRpbmdMb2FkUmVxdWVzdElkKSByZXR1cm5cblxuICAgIGNvbnN0IHtjb2x1bW5zLCBwcmVsb2FkfSA9IHRoaXMudGFibGVTZXR0aW5ncy5wcmVwYXJlZENvbHVtbnModGFibGVTZXR0aW5nKVxuICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnNcbiAgICBjb25zdCB3aWR0aHMgPSBuZXcgV2lkdGhzKHtjb2x1bW5zLCB0YWJsZTogdGhpcywgd2lkdGh9KVxuICAgIGNvbnN0IGNvbHVtbnNUb1Nob3cgPSB0aGlzLmdldENvbHVtbnNUb1Nob3coY29sdW1ucylcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbnNUb1Nob3csXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IGNvbHVtbnMsXG4gICAgICBwcmVsb2FkOiB0aGlzLm1lcmdlZFByZWxvYWRzKHByZWxvYWQpLFxuICAgICAgdGFibGVTZXR0aW5nLFxuICAgICAgdGFibGVTZXR0aW5nTG9hZGVkOiB0cnVlLFxuICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB0YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCksXG4gICAgICB3aWR0aHNcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHt0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCl9KVxuXG4gIGNvbHVtbnNBc0FycmF5KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5jb2x1bW5zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1ucygpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1uc1xuICB9XG5cbiAgbWVyZ2VkUHJlbG9hZHMocHJlbG9hZCkge1xuICAgIGNvbnN0IHtwcmVsb2Fkc30gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1lcmdlZFByZWxvYWRzID0gW11cblxuICAgIGlmIChwcmVsb2FkcykgbWVyZ2VkUHJlbG9hZHMgPSBtZXJnZWRQcmVsb2Fkcy5jb25jYXQocHJlbG9hZHMpXG4gICAgaWYgKHByZWxvYWQpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWQpXG5cbiAgICByZXR1cm4gdW5pcXVuaXplKG1lcmdlZFByZWxvYWRzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzLCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LCBub1JlY29yZHNGb3VuZENvbnRlbnR9ID0gdGhpcy5wXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGN1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlOYW1lLCBxdWVyeVNOYW1lLCBzaG93RmlsdGVyc30gPSB0aGlzLnNcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbHMsXG4gICAgICBvdmVyYWxsQ291bnQsXG4gICAgICBxUGFyYW1zLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAgICB9ID0gZGlncyhcbiAgICAgIHRoaXMuY29sbGVjdGlvbixcbiAgICAgIFwibW9kZWxzXCIsXG4gICAgICBcIm92ZXJhbGxDb3VudFwiLFxuICAgICAgXCJxUGFyYW1zXCIsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInJlc3VsdFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgICApXG4gICAgY29uc3Qgc2FmZVFQYXJhbXMgPSBxUGFyYW1zIHx8IHt9XG5cbiAgICBpZiAoY29sbGVjdGlvbiAmJiBjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUgIT0gbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZGVsIGNsYXNzIGZyb20gY29sbGVjdGlvbiAnJHtjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9JyBgICtcbiAgICAgICAgYGRpZG4ndCBtYXRjaCBtb2RlbCBjbGFzcyBvbiB0YWJsZTogJyR7bW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9J2BcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgPSBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdFxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXdcbiAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYHJvb3RWaWV3LSR7dGhpcy5jbGFzc05hbWUoKX1gXSB8fD0ge2NsYXNzOiB0aGlzLmNsYXNzTmFtZSgpfX1cbiAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25Db250YWluZXJMYXlvdXR9XG4gICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlcz8uY29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tbm8tcmVjb3Jkcy1mb3VuZC1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzRm91bmRDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd0ZpbHRlcnMgJiZcbiAgICAgICAgICA8RmlsdGVycyBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9IG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9IHF1ZXJ5TmFtZT17cXVlcnlOYW1lfSBxdWVyeVNOYW1lPXtxdWVyeVNOYW1lfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgJiZcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICAgICAgfVxuICAgICAgICB7IXNob3VsZFNob3dMb2FkaW5nQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGhlYWRlciB0aXRsZSBvciBjdXN0b20gaGVhZGVyIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSBbYXJncy5tb2RlbHNdXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3MucXVlcnldXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5yZXN1bHRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd8UmVhY3QuUmVhY3ROb2RlfVxuICAgKi9cbiAgdGFibGVIZWFkZXJDb250ZW50ICh7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IHt9KSB7XG4gICAgY29uc3Qge2hlYWRlciwgbW9kZWxDbGFzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodHlwZW9mIGhlYWRlciA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgfSBlbHNlIGlmIChoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICB9XG5cbiAgbG9hZGluZ0NvbnRlbnQgKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KSB7XG4gICAgY29uc3Qge1xuICAgICAgYWJpbGl0aWVzLFxuICAgICAgYWN0aW9uc0NvbnRlbnQsXG4gICAgICBhcHBIaXN0b3J5LFxuICAgICAgY2FyZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBjb2x1bW5zLFxuICAgICAgY29udHJvbHMsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0UGFyYW1zLFxuICAgICAgZGVzdHJveUVuYWJsZWQsXG4gICAgICBkZXN0cm95TWVzc2FnZSxcbiAgICAgIGVkaXRNb2RlbFBhdGgsXG4gICAgICBmaWx0ZXJDYXJkLFxuICAgICAgZmlsdGVyQ29udGVudCxcbiAgICAgIGZpbHRlclN1Ym1pdEJ1dHRvbixcbiAgICAgIGZpbHRlclN1Ym1pdExhYmVsLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIGhlYWRlcixcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgICAgcGFnaW5hdGVDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIHByZWxvYWRzLFxuICAgICAgcXVlcnlNZXRob2QsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBzZWxlY3QsXG4gICAgICBzZWxlY3RDb2x1bW5zLFxuICAgICAgc3R5bGVVSSxcbiAgICAgIHZpZXdNb2RlbFBhdGgsXG4gICAgICB3b3JrcGxhY2UsXG4gICAgICAuLi5yZXN0UHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgbG9hZGluZ0NvbnRlbnQgPSAoXG4gICAgICA8VmlldyBkYXRhU2V0PXtkYXRhU2V0cy5sb2FkaW5nIHx8PSB7Y2xhc3M6IFwiYXBpLW1ha2VyLS10YWJsZS0tbG9hZGluZ1wifX0+XG4gICAgICAgIDxUZXh0Pnt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RpdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICApXG5cbiAgICBpZiAoIWNhcmQpIHJldHVybiBsb2FkaW5nQ29udGVudFxuXG4gICAgY29uc3Qgc2FmZU1vZGVscyA9IG1vZGVscyB8fCBbXVxuICAgIGNvbnN0IHNhZmVBcmdzID0ge21vZGVsczogc2FmZU1vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q2FyZFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaXZlLXRhYmxlLS10YWJsZS1jYXJkXCIsIFwibWItNFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKHNhZmVBcmdzKX1cbiAgICAgICAgaGVhZGVyPXt0aGlzLnRhYmxlSGVhZGVyQ29udGVudChzYWZlQXJncyl9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nQ29udGVudH1cbiAgICAgIDwvQ2FyZD5cbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi9cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBiZXR3ZWVuIGNhcmQvdGFibGUgcmVuZGVyaW5nIG9uY2UgZGF0YSBpcyByZWFkeS5cbiAgICogQHJldHVybnMge1JlYWN0LlJlYWN0Tm9kZX1cbiAgICovXG4gIGNhcmRPclRhYmxlICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhYmlsaXRpZXMsXG4gICAgICBhY3Rpb25zQ29udGVudCxcbiAgICAgIGFwcEhpc3RvcnksXG4gICAgICBjYXJkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb250cm9scyxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgZGVmYXVsdERhdGVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgICBkZXN0cm95RW5hYmxlZCxcbiAgICAgIGRlc3Ryb3lNZXNzYWdlLFxuICAgICAgZWRpdE1vZGVsUGF0aCxcbiAgICAgIGZpbHRlckNhcmQsXG4gICAgICBmaWx0ZXJDb250ZW50LFxuICAgICAgZmlsdGVyU3VibWl0QnV0dG9uLFxuICAgICAgZmlsdGVyU3VibWl0TGFiZWwsXG4gICAgICBncm91cEJ5LFxuICAgICAgaGVhZGVyLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgICBwYWdpbmF0ZUNvbnRlbnQsXG4gICAgICBwYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgcHJlbG9hZHMsXG4gICAgICBxdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnMsXG4gICAgICBzdHlsZVVJLFxuICAgICAgdmlld01vZGVsUGF0aCxcbiAgICAgIHdvcmtwbGFjZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBzYWZlUVBhcmFtcyA9IHFQYXJhbXMgfHwge31cblxuICAgIGNvbnN0IGhlYWRlckNvbnRlbnQgPSB0aGlzLnRhYmxlSGVhZGVyQ29udGVudCh7bW9kZWxzLCBxUGFyYW1zOiBzYWZlUVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgbGV0IFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3QgPSAoXG4gICAgICA8VGFibGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnR0LnRhYmxlQ29udGV4dFZhbHVlfT5cbiAgICAgICAgPEZsYXRMaXN0XG4gICAgICAgICAgZGF0YT17bW9kZWxzfVxuICAgICAgICAgIGRhdGFTZXQ9e2RhdGFTZXRzW2BmbGF0TGlzdC0ke2NsYXNzTmFtZX0tJHt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fWBdIHx8PSB7XG4gICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgIGNhY2hlS2V5OiB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5LFxuICAgICAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGVcbiAgICAgICAgICB9fVxuICAgICAgICAgIGV4dHJhRGF0YT17dGhpcy5zLmxhc3RVcGRhdGV9XG4gICAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmtleUV4dHJhdG9yfVxuICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgcmVuZGVySXRlbT17dGhpcy50dC5yZW5kZXJJdGVtfVxuICAgICAgICAgIHNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvclxuICAgICAgICAgIHN0eWxlPXtzdHlsZXNbYGZsYXRMaXN0LSR7c3R5bGVVSX1gXSB8fD0ge1xuICAgICAgICAgICAgb3ZlcmZsb3dYOiBcImF1dG9cIixcbiAgICAgICAgICAgIGJvcmRlcjogc3R5bGVVSSA/IFwiMXB4IHNvbGlkICNkYmRiZGJcIiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGJvcmRlclJhZGl1czogc3R5bGVVSSA/IDUgOiB1bmRlZmluZWRcbiAgICAgICAgICB9fVxuICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIC8vIElmIHRhYmxlIHNldHRpbmdzIGxvYWRlZCBiZWZvcmUgUk4td2ViIHByb2R1Y2VkIGEgbGF5b3V0IHdpZHRoLCByZWNvbXB1dGUgb25jZSB3aXRoIHRoZSByZWFsIHdpZHRoLlxuICAgIGlmICh3aWR0aHM/LnVzZWRGYWxsYmFja1dpZHRoKSB7XG4gICAgICB3aWR0aHMudXBkYXRlVGFibGVXaWR0aCh3aWR0aClcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2xhc3RVcGRhdGU6IG5ldyBEYXRlKCksIHdpZHRofSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSlcbiAgICBpZiAod2lkdGhzKSB3aWR0aHMudGFibGVXaWR0aCA9IHdpZHRoXG4gIH1cblxuICBvbkxpbmtzQ3JlYXRlZCA9ICh7YXJnc30pID0+IHtcbiAgICBpZiAoYXJncy5yZXNvdXJjZV90eXBlcz8uaW5jbHVkZXModGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lKSkge1xuICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KClcbiAgICB9XG4gIH1cblxuICBvbkxpbmtzRGVzdHJveWVkID0gKHthcmdzfSkgPT4ge1xuICAgIGlmIChhcmdzLnJlc291cmNlX3R5cGVzPy5pbmNsdWRlcyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpKSB7XG4gICAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKVxuICAgIH1cbiAgfVxuXG4gIGtleUV4dHJhdG9yID0gKG1vZGVsKSA9PiBgJHt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fS0ke21vZGVsLmlkKCl9YFxuXG4gIGZpbHRlckZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3Qge2ZpbHRlckZvcm1SZWYsIHN1Ym1pdEZpbHRlciwgc3VibWl0RmlsdGVyRGVib3VuY2V9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtmaWx0ZXJDb250ZW50LCBmaWx0ZXJTdWJtaXRCdXR0b259ID0gdGhpcy5wXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3Qge2ZpbHRlclN1Ym1pdExhYmVsfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBhY3R1YWxRUGFyYW1zID0gZGlnZyh0aGlzLmNvbGxlY3Rpb24sIFwicVBhcmFtc1wiKSB8fCB7fVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIGZvcm1SZWY9e2ZpbHRlckZvcm1SZWZ9XG4gICAgICAgIGh0bWxGb3JtUHJvcHM9e3N0eWxlcy5maWx0ZXJGb3JtSHRtbFByb3BzIHx8PSB7Y2xhc3NOYW1lOiBcImxpdmUtdGFibGUtLWZpbHRlci1mb3JtXCJ9fVxuICAgICAgICBvblN1Ym1pdD17dGhpcy50dC5vbkZpbHRlckZvcm1TdWJtaXR9XG4gICAgICAgIHNldEZvcm09ey8qKiBAdHlwZSB7e2ZpbHRlckZvcm0odmFsdWU6IFRhYmxlRmlsdGVyRm9ybVN0YXRlKTogdm9pZH19ICovICh0aGlzLnNldFN0YXRlcykuZmlsdGVyRm9ybX1cbiAgICAgICAgdXNlSHRtbEZvcm1cbiAgICAgID5cbiAgICAgICAge1wic1wiIGluIGFjdHVhbFFQYXJhbXMgJiZcbiAgICAgICAgICA8aW5wdXQgbmFtZT1cInNcIiB0eXBlPVwiaGlkZGVuXCIgdmFsdWU9e2FjdHVhbFFQYXJhbXMuc30gLz5cbiAgICAgICAgfVxuICAgICAgICB7ZmlsdGVyQ29udGVudCh7XG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkOiBzdWJtaXRGaWx0ZXIsXG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5OiBzdWJtaXRGaWx0ZXJEZWJvdW5jZSxcbiAgICAgICAgICBxUGFyYW1zOiBhY3R1YWxRUGFyYW1zLFxuICAgICAgICAgIHF1ZXJ5UU5hbWVcbiAgICAgICAgfSl9XG4gICAgICAgIHtmaWx0ZXJTdWJtaXRCdXR0b24gJiZcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBsaXZlLXRhYmxlLS1zdWJtaXQtZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuZmlsdGVyU3VibWl0QnV0dG9uIHx8PSB7bWFyZ2luVG9wOiBcIjhweFwifX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJTdWJtaXRMYWJlbCB8fCB0aGlzLnR0LnQoXCIuZmlsdGVyXCIsIHtkZWZhdWx0VmFsdWU6IFwiRmlsdGVyXCJ9KX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgb25GaWx0ZXJDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93RmlsdGVyczogIXRoaXMucy5zaG93RmlsdGVyc30pXG4gIH1cblxuICBvblBlclBhZ2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCB7cXVlcnlOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IG5ld1BlclBhZ2VWYWx1ZSA9IGRpZ2coZSwgXCJ0YXJnZXRcIiwgXCJ2YWx1ZVwiKVxuICAgIGNvbnN0IHBlcktleSA9IGAke3F1ZXJ5TmFtZX1fcGVyYFxuICAgIGNvbnN0IHBhcmFtc0NoYW5nZSA9IHt9XG5cbiAgICBwYXJhbXNDaGFuZ2VbcGVyS2V5XSA9IG5ld1BlclBhZ2VWYWx1ZVxuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhwYXJhbXNDaGFuZ2UpXG4gIH1cblxuICByZW5kZXJJdGVtID0gKHtpbmRleCwgaXRlbTogbW9kZWx9KSA9PiB7XG4gICAgaWYgKCF0aGlzLnMudGFibGVTZXR0aW5nTG9hZGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RvdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kZWxSb3dcbiAgICAgICAgY2FjaGVLZXk9e21vZGVsLmNhY2hlS2V5KCl9XG4gICAgICAgIGNvbHVtbnM9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBjb2x1bW5XaWR0aHM9e3RoaXMuY29sdW1uV2lkdGhzKCl9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5ldmVudHN9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAga2V5PXttb2RlbC5pZCgpfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk9e3RoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXl9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBkYXRhIGNvbHVtbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MuY29sdW1uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmNvbHVtbkluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5ldmVuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnN0eWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yQ29sdW1uID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBldmVuLCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7c3R5bGVVSX0gPSB0aGlzLnBcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGlmIChzdHlsZVVJKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRTdHlsZSwge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGV2ZW4gPyBcIiNmNWY1ZjVcIiA6IFwiI2ZmZlwiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IFwiYWN0aW9uc1wiKSB7XG4gICAgICBkZWZhdWx0U3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCJcbiAgICAgIGRlZmF1bHRTdHlsZS5hbGlnbkl0ZW1zID0gXCJjZW50ZXJcIlxuXG4gICAgICBpZiAodGhpcy50dC5tZFVwKSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5MZWZ0ID0gXCJhdXRvXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5SaWdodCA9IFwiYXV0b1wiXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnR0Lm1kVXAgJiYgc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBoZWFkZXIgY29sdW1uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy5jb2x1bW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuY29sdW1uSW5kZXhcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3Muc3R5bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXIgPSAoe2NvbHVtbiwgY29sdW1uSW5kZXgsIHN0eWxlLCB0eXBlfSkgPT4ge1xuICAgIGNvbnN0IHttZFVwfSA9IHRoaXMudHRcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGBoZWFkZXJTdHlsZS0ke3R5cGUgfHwgXCJkZWZhdWx0XCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiA4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSAhPSBcImFjdGlvbnNcIiAmJiBtZFVwICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkZWZhdWx0U3R5bGUsIHN0eWxlKVxuICAgICAgfSxcbiAgICAgIFttZFVwLCB0aGlzLnAuc3R5bGVVSSwgdHlwZSwgc3R5bGVdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBib2xkIGhlYWRlciB0ZXh0IHN0eWxlLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXJUZXh0ID0gKCkgPT4ge1xuICAgIHJldHVybiBzdHlsZXMuaGVhZGVyVGV4dFN0eWxlIHx8PSB7Zm9udFdlaWdodDogXCJib2xkXCJ9XG4gIH1cblxuICAvKipcbiAgICogU3R5bGUgZm9yIGEgdGFibGUgcm93IHdyYXBwZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5ldmVuXVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JSb3cgPSAoe2V2ZW59ID0ge30pID0+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGByb3dTdHlsZS0ke2V2ZW4gPyBcImV2ZW5cIiA6IFwib2RkXCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW4gJiYgdGhpcy5wLnN0eWxlVUkpIHtcbiAgICAgICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gICAgICB9LFxuICAgICAgW2V2ZW4sIHRoaXMucC5zdHlsZVVJXVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHlsZSBmb3IgdGhlIGhlYWRlciByb3cgd3JhcHBlci5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yUm93SGVhZGVyID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgXCJyb3dIZWFkZXJTdHlsZVwiLFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGFibGVSZW5kZXJBcmdzfSBbYXJnc11cbiAgICogQHJldHVybnMge2ltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX1cbiAgICovXG4gIHRhYmxlQ29udHJvbHMoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSB7fSkge1xuICAgIGNvbnN0IHtjb250cm9sc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3Nob3dTZXR0aW5nc30gPSB0aGlzLnNcbiAgICBjb25zdCBjb2xsZWN0aW9uQXJncyA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuICAgIGNvbnN0IGFjdHVhbE1vZGVscyA9IG1vZGVscyA/PyBjb2xsZWN0aW9uQXJncy5tb2RlbHMgPz8gW11cbiAgICBjb25zdCBhY3R1YWxRUGFyYW1zID0gcVBhcmFtcyA/PyBjb2xsZWN0aW9uQXJncy5xUGFyYW1zXG4gICAgY29uc3QgYWN0dWFsUXVlcnkgPSBxdWVyeSA/PyBjb2xsZWN0aW9uQXJncy5xdWVyeVxuICAgIGNvbnN0IGFjdHVhbFJlc3VsdCA9IHJlc3VsdCA/PyBjb2xsZWN0aW9uQXJncy5yZXN1bHRcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlQ29udHJvbHNSb290VmlldyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAge2NvbnRyb2xzICYmIGNvbnRyb2xzKHttb2RlbHM6IGFjdHVhbE1vZGVscywgcVBhcmFtczogYWN0dWFsUVBhcmFtcywgcXVlcnk6IGFjdHVhbFF1ZXJ5LCByZXN1bHQ6IGFjdHVhbFJlc3VsdH0pfVxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17ZGF0YVNldHMuZmlsdGVyQnV0dG9uIHx8PSB7Y2xhc3M6IFwiZmlsdGVyLWJ1dHRvblwifX1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRmlsdGVyQ2xpY2tlZH1cbiAgICAgICAgICB0ZXN0SUQ9XCJmaWx0ZXJCdXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPEljb24gbmFtZT1cInNlYXJjaFwiIHNpemU9ezIwfSAvPlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAge3Nob3dTZXR0aW5ncyAmJlxuICAgICAgICAgICAgPFNldHRpbmdzIG9uUmVxdWVzdENsb3NlPXt0aGlzLnR0Lm9uUmVxdWVzdENsb3NlU2V0dGluZ3N9IHRhYmxlPXt0aGlzfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25TZXR0aW5nc0NsaWNrZWR9IHRlc3RJRD1cInNldHRpbmdzLWJ1dHRvblwiPlxuICAgICAgICAgICAgPEljb24gbmFtZT1cImdlYXJcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIHRhYmxlRm9vdGVyKCkge1xuICAgIGNvbnN0IHtyZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwicmVzdWx0XCIpXG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXN1bHQuY3VycmVudFBhZ2UoKVxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudCgpXG4gICAgY29uc3QgcGVyUGFnZSA9IHJlc3VsdC5wZXJQYWdlKClcbiAgICBjb25zdCB0byA9IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGVyUGFnZSwgdG90YWxDb3VudClcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBcIlNob3dpbmcgJXtmcm9tfSB0byAle3RvfSBvdXQgb2YgJXt0b3RhbF9jb3VudH0gdG90YWwuXCJcbiAgICBsZXQgZnJvbSA9ICgoY3VycmVudFBhZ2UgLSAxKSAqIHBlclBhZ2UpICsgMVxuXG4gICAgaWYgKHRvID09PSAwKSBmcm9tID0gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudGFibGVGb290ZXJSb290Vmlld1N0eWxlIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIiwganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgIDxWaWV3IGRhdGFTZXQ9e2RhdGFTZXRzLnNob3dpbmdDb3VudHMgfHw9IHtjbGFzczogXCJzaG93aW5nLWNvdW50c1wifX0gc3R5bGU9e3N0eWxlcy5zaG93aW5nQ291bnRzIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIn19PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3RoaXMudHQudChcIi5zaG93aW5nX2Zyb21fdG9fb3V0X29mX3RvdGFsXCIsIHtkZWZhdWx0VmFsdWUsIGZyb20sIHRvLCB0b3RhbF9jb3VudDogdG90YWxDb3VudH0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB7dGhpcy5wLndvcmtwbGFjZSAmJiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50ICE9PSBudWxsICYmXG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnhTZWxlY3RlZFRleHRTdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAge3RoaXMudHQudChcIi54X3NlbGVjdGVkXCIsIHtkZWZhdWx0VmFsdWU6IFwiJXtzZWxlY3RlZH0gc2VsZWN0ZWQuXCIsIHNlbGVjdGVkOiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50fSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBlci1wYWdlLXNlbGVjdFwiXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3BlclBhZ2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vblBlclBhZ2VDaGFuZ2VkfVxuICAgICAgICAgICAgb3B0aW9ucz17cGFnaW5hdGlvbk9wdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGNsYXNzTmFtZSgpIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW1wiYXBpLW1ha2VyLS10YWJsZVwiXVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5wcm9wcy5jbGFzc05hbWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTmFtZXMuam9pbihcIiBcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBwZXItY29sdW1uIHByb3BzIGZvciB0YWJsZSBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGNvbHVtblByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICAgICAgcHJvcHMuc3R5bGUudGV4dEFsaWduID0gXCJyaWdodFwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLnRleHRDZW50ZXIsIGNvbHVtbi50ZXh0UmlnaHRdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHBlci1jb2x1bW4gcHJvcHMgZm9yIGhlYWRlciBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgaGVhZGVyUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGhlYWRlclByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJjZW50ZXJcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50ZXh0UmlnaHQpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgfSxcbiAgICAgIFtjb2x1bW4udGV4dENlbnRlciwgY29sdW1uLnRleHRSaWdodF1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQ29sdW1uIHdpZHRocyBrZXllZCBieSBpZGVudGlmaWVyIGZvciB0YWJsZSByb3dzLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uV2lkdGhzKCkge1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLnMucHJlcGFyZWRDb2x1bW5zKSB7XG4gICAgICBjb2x1bW5XaWR0aHNbY29sdW1uLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCldID0gY29sdW1uLndpZHRoXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbHVtbldpZHRoc1xuICB9XG5cbiAgaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyYWdnYWJsZVNvcnRcbiAgICAgICAgYWN0aXZlSXRlbVN0eWxlPXt0aGlzLnR0LmRyYWdnZWRIZWFkZXJTdHlsZSgpfVxuICAgICAgICBkYXRhPXt0aGlzLnMuY29sdW1uc1RvU2hvd31cbiAgICAgICAgZXZlbnRzPXt0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHN9XG4gICAgICAgIGhvcml6b250YWxcbiAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmRyYWdMaXN0a2V5RXh0cmFjdG9yfVxuICAgICAgICBvbkl0ZW1Nb3ZlZD17dGhpcy50dC5vbkl0ZW1Nb3ZlZH1cbiAgICAgICAgb25SZW9yZGVyZWQ9e3RoaXMudHQub25SZW9yZGVyZWR9XG4gICAgICAgIHJlbmRlckl0ZW09e3RoaXMudHQuZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudH1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgZHJhZ0xpc3RDYWNoZUtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBgJHtpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9LSR7dGhpcy5zLnJlc2l6aW5nfWBcbiAgZHJhZ0xpc3RrZXlFeHRyYWN0b3IgPSAoaXRlbSkgPT4gaXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXG5cbiAgb25JdGVtTW92ZWQgPSAoe2FuaW1hdGlvbkFyZ3MsIGl0ZW1JbmRleCwgeCwgeX0pID0+IHtcbiAgICBjb25zdCBhbmltYXRlZFBvc2l0aW9uID0gZGlnZyh0aGlzLCBcInNcIiwgXCJjb2x1bW5zVG9TaG93XCIsIGl0ZW1JbmRleCwgXCJhbmltYXRlZFBvc2l0aW9uXCIpXG5cbiAgICBpZiAoYW5pbWF0aW9uQXJncykge1xuICAgICAgQW5pbWF0ZWQudGltaW5nKGFuaW1hdGVkUG9zaXRpb24sIGFuaW1hdGlvbkFyZ3MpLnN0YXJ0KClcbiAgICB9IGVsc2Uge1xuICAgICAgYW5pbWF0ZWRQb3NpdGlvbi5zZXRWYWx1ZSh7eCwgeX0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3QgdGhlIG5ldyBjb2x1bW4gb3JkZXJpbmcuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLmZyb21JdGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnRvSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MudG9Qb3NpdGlvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIG9uUmVvcmRlcmVkID0gYXN5bmMgKHtmcm9tSXRlbSwgZnJvbVBvc2l0aW9uLCB0b0l0ZW0sIHRvUG9zaXRpb259KSA9PiB7XG4gICAgaWYgKGZyb21Qb3NpdGlvbiA9PSB0b1Bvc2l0aW9uKSByZXR1cm4gLy8gT25seSBkbyByZXF1ZXN0cyBhbmQgcXVlcmllcyBpZiBjaGFuZ2VkXG5cbiAgICBjb25zdCBUYWJsZVNldHRpbmdDb2x1bW4gPSBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uY29uc3RydWN0b3JcbiAgICBjb25zdCB0b0NvbHVtbiA9IGF3YWl0IFRhYmxlU2V0dGluZ0NvbHVtbi5maW5kKHRvSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWQoKSkgLy8gTmVlZCB0byBsb2FkIGxhdGVzdCBwb3NpdGlvbiBiZWNhdXNlIEFjdHNBc0xpc3QgbWlnaHQgaGF2ZSBjaGFuZ2VkIGl0XG5cbiAgICBhd2FpdCBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4udXBkYXRlKHtwb3NpdGlvbjogdG9Db2x1bW4ucG9zaXRpb24oKX0pXG4gIH1cblxuICBkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50ID0gKHtpc0FjdGl2ZSwgaXRlbSwgdG91Y2hQcm9wc30pID0+IHtcbiAgICBjb25zdCB7YW5pbWF0ZWRXaWR0aCwgYW5pbWF0ZWRaSW5kZXgsIGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSA9IGl0ZW1cblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQ29sdW1uXG4gICAgICAgIGFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGtleT17dGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX1cbiAgICAgICAgcmVzaXppbmc9e3RoaXMucy5yZXNpemluZ31cbiAgICAgICAgdGFibGU9e3RoaXN9XG4gICAgICAgIHRhYmxlU2V0dGluZ0NvbHVtbj17dGFibGVTZXR0aW5nQ29sdW1ufVxuICAgICAgICB0b3VjaFByb3BzPXt0b3VjaFByb3BzfVxuICAgICAgICB3aWR0aHM9e3RoaXMucy53aWR0aHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGhlYWRlckNsYXNzTmFtZUZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW11cblxuICAgIGlmIChjb2x1bW4uY29tbW9uUHJvcHMgJiYgY29sdW1uLmNvbW1vblByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpXG4gICAgaWYgKGNvbHVtbi5oZWFkZXJQcm9wcyAmJiBjb2x1bW4uaGVhZGVyUHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWVzLnB1c2goY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSlcblxuICAgIHJldHVybiBjbGFzc05hbWVzXG4gIH1cblxuICBoZWFkZXJMYWJlbEZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCB7bW9kZWxDbGFzc30gPSB0aGlzLnBcblxuICAgIGlmIChcImxhYmVsXCIgaW4gY29sdW1uKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbHVtbi5sYWJlbCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1uLmxhYmVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuXG4gICAgLy8gQ2FsY3VsYXRlIGN1cnJlbnQgbW9kZWwgY2xhc3MgdGhyb3VnaCBwYXRoXG4gICAgaWYgKGNvbHVtbi5wYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIGNvbHVtbi5wYXRoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBkaWdnKGN1cnJlbnRNb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwicmVsYXRpb25zaGlwc1wiKVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBzLmZpbmQoKHJlbGF0aW9uc2hpcEluQXJyYXkpID0+IHJlbGF0aW9uc2hpcEluQXJyYXkubmFtZSA9PSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGF0aFBhcnQpKVxuXG4gICAgICAgIGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUoZGlnZyhyZWxhdGlvbnNoaXAsIFwicmVzb3VyY2VfbmFtZVwiKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZSkgcmV0dXJuIGN1cnJlbnRNb2RlbENsYXNzLmh1bWFuQXR0cmlidXRlTmFtZShjb2x1bW4uYXR0cmlidXRlKVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ2xhYmVsJyBvciAnYXR0cmlidXRlJyB3YXMgZ2l2ZW5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlIHN0eWxpbmcgZm9yIGEgZHJhZ2dlZCBoZWFkZXIgaXRlbS5cbiAgICogQHJldHVybnMge29iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBkcmFnZ2VkSGVhZGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGVcbiAgICBpZiAodGhpcy5wLnN0eWxlVUkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiBzdHlsZXMuZHJhZ2dlZEhlYWRlclN0eWxlVHJhbnNwYXJlbnQgfHw9IHtiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIn1cbiAgfVxuXG4gIG9uRmlsdGVyRm9ybVN1Ym1pdCA9ICgpID0+IHRoaXMuc3VibWl0RmlsdGVyKClcbiAgb25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogZmFsc2V9KVxuXG4gIG9uU2V0dGluZ3NDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogIXRoaXMucy5zaG93U2V0dGluZ3N9KVxuICB9XG5cbiAgc3VibWl0RmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHthcHBIaXN0b3J5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlRTmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBjaGFuZ2VQYXJhbXNQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHFQYXJhbXMgPSB0aGlzLnMuZmlsdGVyRm9ybS5hc09iamVjdCgpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgY29uc3QgZmlsdGVyRm9ybSA9IGRpZ2codGhpcy50dC5maWx0ZXJGb3JtUmVmLCBcImN1cnJlbnRcIilcbiAgICAgIGNvbnN0IG5hdnRpdmVGb3JtUGFyYW1zID0gUGFyYW1zLnNlcmlhbGl6ZUZvcm0oZmlsdGVyRm9ybSlcblxuICAgICAgaW5jb3Jwb3JhdGUocVBhcmFtcywgbmF2dGl2ZUZvcm1QYXJhbXMpXG4gICAgfVxuXG4gICAgY2hhbmdlUGFyYW1zUGFyYW1zW3F1ZXJ5UU5hbWVdID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoY2hhbmdlUGFyYW1zUGFyYW1zLCB7YXBwSGlzdG9yeX0pXG4gIH1cblxuICBzdWJtaXRGaWx0ZXJEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMudHQuc3VibWl0RmlsdGVyKVxufSkpXG4iXX0=
|
|
957
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInRhYmxlL3RhYmxlLmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsWUFBWTtBQUNaLHVGQUF1RjtBQUN2RiwwRUFBMEU7QUFDMUUsNEVBQTRFO0FBQzVFLHdEQUF3RDtBQUN4RCxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDekMsT0FBTyxLQUFLLEVBQUUsRUFBQyxhQUFhLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDaEUsT0FBTyxlQUFlLE1BQU0sb0JBQW9CLENBQUE7QUFDaEQsT0FBTyxJQUFJLE1BQU0sbUJBQW1CLENBQUE7QUFDcEMsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sYUFBYSxNQUFNLHFCQUFxQixDQUFBO0FBQy9DLE9BQU8sUUFBUSxNQUFNLFVBQVUsQ0FBQTtBQUMvQixPQUFPLGFBQWEsTUFBTSx5QkFBeUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sT0FBTyxNQUFNLGlCQUFpQixDQUFBO0FBQ3JDLE9BQU8sUUFBUSxNQUFNLHdCQUF3QixDQUFBO0FBQzdDLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxTQUFTLENBQUE7QUFDNUIsT0FBTyxNQUFNLE1BQU0scUJBQXFCLENBQUE7QUFDeEMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxJQUFJLE1BQU0sZUFBZSxDQUFBO0FBQ2hD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TUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBRTFELFdBQVcsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBRUQsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUV4RCxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQTtJQUN2RCxDQUFDLENBQUE7SUFFRCxvQkFBb0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQTtDQUN0RCxDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgYXJyb3ctYm9keS1zdHlsZSwgaW1wb3J0L25vLW5hbWVkLWFzLWRlZmF1bHQsIGltcG9ydC9uby11bnJlc29sdmVkICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXR1cm4tYXNzaWduLCBuby11bnVzZWQtdmFycywgcmVhY3QvanN4LW1heC1kZXB0aCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW9uZS1leHByZXNzaW9uLXBlci1saW5lLCByZWFjdC9qc3gtc29ydC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvc29ydC1wcm9wLXR5cGVzLCBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7ZGlnLCBkaWdnLCBkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBSZWFjdCwge2NyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtBbmltYXRlZCwgUGxhdGZvcm0sIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgQmxvY2tpbmdPdmVybGF5IGZyb20gXCIuL2Jsb2NraW5nLW92ZXJsYXlcIlxuaW1wb3J0IENhcmQgZnJvbSBcIi4uL2Jvb3RzdHJhcC9jYXJkXCJcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gXCJjbGFzc25hbWVzXCJcbmltcG9ydCBDb2xsZWN0aW9uIGZyb20gXCIuLi9jb2xsZWN0aW9uLmpzXCJcbmltcG9ydCBjb2x1bW5WaXNpYmxlIGZyb20gXCIuL2NvbHVtbi12aXNpYmxlLmpzXCJcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiZGVib3VuY2VcIlxuaW1wb3J0IERyYWdnYWJsZVNvcnQgZnJvbSBcIi4uL2RyYWdnYWJsZS1zb3J0L2luZGV4XCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi9maWx0ZXJzL2luZGV4XCJcbmltcG9ydCBGbGF0TGlzdCBmcm9tIFwiLi9jb21wb25lbnRzL2ZsYXQtbGlzdFwiXG5pbXBvcnQge0Zvcm19IGZyb20gXCIuLi9mb3JtXCJcbmltcG9ydCBIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9oZWFkZXJcIlxuaW1wb3J0IEhlYWRlckNvbHVtbiBmcm9tIFwiLi9oZWFkZXItY29sdW1uXCJcbmltcG9ydCBIZWFkZXJTZWxlY3QgZnJvbSBcIi4vaGVhZGVyLXNlbGVjdFwiXG5pbXBvcnQgSWNvbiBmcm9tIFwiLi4vdXRpbHMvaWNvblwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuLi9tb2RlbC1jbGFzcy1yZXF1aXJlLmpzXCJcbmltcG9ydCBNb2RlbFJvdyBmcm9tIFwiLi9tb2RlbC1yb3dcIlxuaW1wb3J0IFBhZ2luYXRlIGZyb20gXCIuLi9ib290c3RyYXAvcGFnaW5hdGVcIlxuaW1wb3J0IFBhcmFtcyBmcm9tIFwiLi4vcGFyYW1zLmpzXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFJvdyBmcm9tIFwiLi9jb21wb25lbnRzL3Jvd1wiXG5pbXBvcnQgc2VsZWN0Q2FsY3VsYXRvciBmcm9tIFwiLi9zZWxlY3QtY2FsY3VsYXRvci5qc1wiXG5pbXBvcnQgU2VsZWN0IGZyb20gXCIuLi9pbnB1dHMvc2VsZWN0XCJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5ncy9pbmRleFwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgc2hvdWxkUmVuZGVyTG9hZGluZ0NvbnRlbnQgZnJvbSBcIi4vc2hvdWxkLXJlbmRlci1sb2FkaW5nLWNvbnRlbnQuanNcIlxuaW1wb3J0IFRhYmxlU2V0dGluZ3MgZnJvbSBcIi4vdGFibGUtc2V0dGluZ3MuanNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHVuaXF1bml6ZSBmcm9tIFwidW5pcXVuaXplXCJcbmltcG9ydCB7dXNlQnJlYWtwb2ludH0gZnJvbSBcInJlc3BvbnNpdmUtYnJlYWtwb2ludHNcIlxuaW1wb3J0IHVzZUNvbGxlY3Rpb24gZnJvbSBcIi4uL3VzZS1jb2xsZWN0aW9uLmpzXCJcbmltcG9ydCB1c2VJMThuIGZyb20gXCJpMThuLW9uLXN0ZXJvaWRzL2J1aWxkL3NyYy91c2UtaTE4bi5qc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCJ5YS11c2UtZXZlbnQtZW1pdHRlclwiXG5pbXBvcnQgdXNlTW9kZWxFdmVudCBmcm9tIFwiLi4vdXNlLW1vZGVsLWV2ZW50LmpzXCJcbmltcG9ydCB1c2VRdWVyeVBhcmFtcyBmcm9tIFwib24tbG9jYXRpb24tY2hhbmdlZC9idWlsZC91c2UtcXVlcnktcGFyYW1zLmpzXCJcbmltcG9ydCBXaWR0aHMgZnJvbSBcIi4vd2lkdGhzXCJcbmltcG9ydCBXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveCBmcm9tIFwiLi93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIlxuXG4vKipcbiAqIFRhYmxlIGNvbXBvbmVudCB3aXRoIHNvcnRhYmxlLCByZXNpemFibGUgY29sdW1ucyBhbmQgb3B0aW9uYWwgZmlsdGVycy5cbiAqL1xuY29uc3QgZGF0YVNldHMgPSB7fVxuY29uc3QgcGFnaW5hdGlvbk9wdGlvbnMgPSBbMzAsIDYwLCA5MCwgW1wiQWxsXCIsIFwiYWxsXCJdXVxuY29uc3Qgc3R5bGVzID0ge31cbmNvbnN0IFRhYmxlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKVxuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL2Jhc2UtbW9kZWwuanNcIikuZGVmYXVsdH0gQmFzZU1vZGVsICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4uL3Jlc3VsdC5qc1wiKS5kZWZhdWx0fSBUYWJsZVJlc3VsdCAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9jb2xsZWN0aW9uLmpzXCIpLlF1ZXJ5UGFyYW1WYWx1ZU1hcH0gVGFibGVRdWVyeVBhcmFtcyAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi91c2UtY29sbGVjdGlvbi5qc1wiKS5Vc2VDb2xsZWN0aW9uUXVlcnlNZXRob2R9IFRhYmxlUXVlcnlNZXRob2QgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi93aWR0aHNcIikuZGVmYXVsdH0gVGFibGVXaWR0aHMgKi9cbi8qKlxuICogQHR5cGVkZWYge0Jhc2VNb2RlbCAmIHtcbiAqICAgaWQoKTogbnVtYmVyIHwgc3RyaW5nLFxuICogICBtb2RlbENsYXNzRGF0YSgpOiB7bmFtZTogc3RyaW5nfSxcbiAqICAgY2FjaGVLZXkoKTogc3RyaW5nLFxuICogICBjYW4obmFtZTogc3RyaW5nKTogYm9vbGVhbixcbiAqICAgZGVzdHJveSgpOiBQcm9taXNlPHZvaWQ+XG4gKiB9fSBUYWJsZU1vZGVsXG4gKi9cbi8qKiBAdHlwZWRlZiB7e25hbWU6IHN0cmluZywgcmVzb3VyY2VfbmFtZTogc3RyaW5nfX0gVGFibGVSZWxhdGlvbnNoaXAgKi9cbi8qKiBAdHlwZWRlZiB7e2NvbGxlY3Rpb25LZXk6IHN0cmluZywgbmFtZTogc3RyaW5nLCBwYXJhbUtleTogc3RyaW5nLCByZWxhdGlvbnNoaXBzOiBUYWJsZVJlbGF0aW9uc2hpcFtdfX0gVGFibGVNb2RlbENsYXNzRGF0YSAqL1xuLyoqIEB0eXBlZGVmIHt7aHVtYW4oYXJnczoge2NvdW50OiBudW1iZXJ9KTogc3RyaW5nfX0gSHVtYW5Nb2RlbE5hbWUgKi9cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgaGFzQXR0cmlidXRlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4sXG4gKiAgIGh1bWFuQXR0cmlidXRlTmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcsXG4gKiAgIG1vZGVsQ2xhc3NEYXRhKCk6IFRhYmxlTW9kZWxDbGFzc0RhdGEsXG4gKiAgIG1vZGVsTmFtZSgpOiBIdW1hbk1vZGVsTmFtZSxcbiAqICAgcHJpbWFyeUtleSgpOiBzdHJpbmdcbiAqIH19IFRhYmxlTW9kZWxDbGFzc1xuICovXG4vKiogQHR5cGVkZWYge0Jhc2VNb2RlbCAmIHtpZCgpOiBudW1iZXIgfCBzdHJpbmd9fSBDdXJyZW50VXNlck1vZGVsICovXG4vKiogQHR5cGVkZWYge0Jhc2VNb2RlbCAmIHtpZCgpOiBudW1iZXIgfCBzdHJpbmd9fSBXb3JrcGxhY2VNb2RlbCAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBhdHRyaWJ1dGU/OiBzdHJpbmcsXG4gKiAgIGNsYXNzTmFtZT86IHN0cmluZyxcbiAqICAgZGVmYXVsdFZpc2libGU/OiBib29sZWFuLFxuICogICBpZGVudGlmaWVyPzogc3RyaW5nLFxuICogICBsYWJlbD86IHN0cmluZyxcbiAqICAgcGF0aD86IHN0cmluZ1tdLFxuICogICBzb3J0S2V5Pzogc3RyaW5nXG4gKiB9fSBUYWJsZUNvbHVtbkRlZmluaXRpb25cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7e1xuICogICBmdWxsQ2FjaGVLZXkoKTogc3RyaW5nLFxuICogICBpZGVudGlmaWVyKCk6IHN0cmluZyxcbiAqICAgcG9zaXRpb24oKTogbnVtYmVyLFxuICogICBzb3J0S2V5KCk6IHN0cmluZyxcbiAqICAgdmlzaWJsZSgpOiBib29sZWFuIHwgbnVsbCxcbiAqICAgdXBkYXRlKGFyZ3M6IHt2aXNpYmxlPzogYm9vbGVhbiwgd2lkdGg/OiBudW1iZXJ9KTogUHJvbWlzZTx2b2lkPlxuICogfX0gVGFibGVTZXR0aW5nQ29sdW1uXG4gKi9cbi8qKiBAdHlwZWRlZiB7e2Z1bGxDYWNoZUtleSgpOiBzdHJpbmd9fSBUYWJsZVNldHRpbmdSZWNvcmQgKi9cbi8qKlxuICogQHR5cGVkZWYge3tcbiAqICAgYW5pbWF0ZWRQb3NpdGlvbj86IGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZVhZLFxuICogICBhbmltYXRlZFdpZHRoPzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLkFuaW1hdGVkLlZhbHVlLFxuICogICBhbmltYXRlZFpJbmRleD86IGltcG9ydChcInJlYWN0LW5hdGl2ZVwiKS5BbmltYXRlZC5WYWx1ZSxcbiAqICAgY29sdW1uOiBUYWJsZUNvbHVtbkRlZmluaXRpb24sXG4gKiAgIHRhYmxlU2V0dGluZ0NvbHVtbjogVGFibGVTZXR0aW5nQ29sdW1uLFxuICogICB3aWR0aD86IG51bWJlclxuICogfX0gUHJlcGFyZWRDb2x1bW5cbiAqL1xuLyoqIEB0eXBlZGVmIHt7YXNPYmplY3QoKTogVGFibGVRdWVyeVBhcmFtc319IFRhYmxlRmlsdGVyRm9ybVN0YXRlICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIEJhc2VNb2RlbCB8IHN0cmluZz59IFRhYmxlTW9kZWxDYWxsYmFja0FyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e21vZGVscz86IFRhYmxlTW9kZWxbXSwgcVBhcmFtcz86IFRhYmxlUXVlcnlQYXJhbXMsIHF1ZXJ5PzogQ29sbGVjdGlvbiwgcmVzdWx0PzogVGFibGVSZXN1bHR9fSBUYWJsZVJlbmRlckFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7e29uRmlsdGVyQ2hhbmdlZDogKCkgPT4gdm9pZCwgb25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5OiAoKSA9PiB2b2lkLCBxUGFyYW1zOiBUYWJsZVF1ZXJ5UGFyYW1zLCBxdWVyeVFOYW1lOiBzdHJpbmd9fSBGaWx0ZXJDb250ZW50QXJncyAqL1xuLyoqIEB0eXBlZGVmIHt7bW9kZWxzOiBUYWJsZU1vZGVsW10sIHFQYXJhbXM6IFRhYmxlUXVlcnlQYXJhbXMsIHF1ZXJ5OiBDb2xsZWN0aW9uLCByZXN1bHQ6IFRhYmxlUmVzdWx0fX0gT25Nb2RlbHNMb2FkZWRBcmdzICovXG5cbi8qKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgbmV2ZXI+fSBIZWFkZXJQcm9wcyAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBIZWFkZXJTdGF0ZVxuICogQHByb3BlcnR5IHtEYXRlfSBsYXN0VXBkYXRlXG4gKi9cbmNvbnN0IExpc3RIZWFkZXJDb21wb25lbnQgPSBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PEhlYWRlclByb3BzLCBIZWFkZXJTdGF0ZT59ICovIGNsYXNzIExpc3RIZWFkZXJDb21wb25lbnQgZXh0ZW5kcyBTaGFwZUNvbXBvbmVudCB7XG4gIHN0YXRlID0ge1xuICAgIGxhc3RVcGRhdGU6IG5ldyBEYXRlKClcbiAgfVxuXG4gIHNldHVwKCkge31cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge21kVXB9ID0gdXNlQnJlYWtwb2ludCgpXG4gICAgY29uc3QgdGFibGVDb250ZXh0VmFsdWUgPSB1c2VDb250ZXh0KFRhYmxlQ29udGV4dClcbiAgICBjb25zdCB0YWJsZSA9IHRhYmxlQ29udGV4dFZhbHVlLnRhYmxlXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGV2ZW50cywgcXVlcnlXaXRob3V0UGFnaW5hdGlvbiwgdH0gPSB0YWJsZS50dFxuICAgIGNvbnN0IHtxdWVyeX0gPSBkaWdzKGNvbGxlY3Rpb24sIFwicXVlcnlcIilcblxuICAgIHVzZUV2ZW50RW1pdHRlcihldmVudHMsIFwiY29sdW1uVmlzaWJpbGl0eVVwZGF0ZWRcIiwgdGhpcy50dC5vbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3cgc3R5bGU9e3RhYmxlLnN0eWxlRm9yUm93SGVhZGVyKCl9IHRlc3RJRD1cImFwaS1tYWtlci90YWJsZS9oZWFkZXItcm93XCI+XG4gICAgICAgIHt0YWJsZS5wLndvcmtwbGFjZSAmJiB0YWJsZS5zLmN1cnJlbnRXb3JrcGxhY2UgJiZcbiAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt3aWR0aDogbWRVcCA/IDQxIDogdW5kZWZpbmVkfX0pfT5cbiAgICAgICAgICAgIDxXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveFxuICAgICAgICAgICAgICBjdXJyZW50V29ya3BsYWNlPXt0YWJsZS5zLmN1cnJlbnRXb3JrcGxhY2V9XG4gICAgICAgICAgICAgIHF1ZXJ5PXtxdWVyeVdpdGhvdXRQYWdpbmF0aW9ufVxuICAgICAgICAgICAgICBzdHlsZT17c3R5bGVzLndvcmtlclBsZ3VpbnNDaGVja0FsbENoZWNrYm94U3R5bGUgfHw9IHttYXJnaW5Ib3Jpem9udGFsOiBcImF1dG9cIn19XG4gICAgICAgICAgICAgIHRhYmxlPXt0YWJsZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICAgICAgPFRleHQgc3R5bGU9e3N0eWxlcy5zZWxlY3RBbGxGb3VuZFRleHRTdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAgICB7dChcIi5zZWxlY3RfYWxsX2ZvdW5kXCIsIHtkZWZhdWx0VmFsdWU6IFwiU2VsZWN0IGFsbCBmb3VuZFwifSl9XG4gICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7IW1kVXAgJiZcbiAgICAgICAgICA8SGVhZGVyIHN0eWxlPXt0YWJsZS5zdHlsZUZvckhlYWRlcih7c3R5bGU6IHt9fSl9PlxuICAgICAgICAgICAgPEhlYWRlclNlbGVjdCBwcmVwYXJlZENvbHVtbnM9e3RhYmxlLnMucHJlcGFyZWRDb2x1bW5zfSBxdWVyeT17cXVlcnl9IHRhYmxlPXt0YWJsZX0gLz5cbiAgICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgfVxuICAgICAgICB7bWRVcCAmJlxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7dGFibGUuaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucygpfVxuICAgICAgICAgICAgPEhlYWRlciBzdHlsZT17dGFibGUuc3R5bGVGb3JIZWFkZXIoe3N0eWxlOiB7fSwgdHlwZTogXCJhY3Rpb25zXCJ9KX0gLz5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgfVxuICAgICAgPC9Sb3c+XG4gICAgKVxuICB9XG5cbiAgb25Db2x1bW5WaXNpYmlsaXR5VXBkYXRlZCA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe2xhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxufSkpXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gUHJvcHNcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbYWJpbGl0aWVzXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVNb2RlbENhbGxiYWNrQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbYWN0aW9uc0NvbnRlbnRdXG4gKiBAcHJvcGVydHkge3twdXNoPzogKHBhdGg6IHN0cmluZykgPT4gdm9pZH19IFthcHBIaXN0b3J5XVxuICogQHByb3BlcnR5IHtib29sZWFufSBbY2FyZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtDb2xsZWN0aW9ufSBbY29sbGVjdGlvbl1cbiAqIEBwcm9wZXJ0eSB7VGFibGVDb2x1bW5EZWZpbml0aW9uW10gfCAoKCkgPT4gVGFibGVDb2x1bW5EZWZpbml0aW9uW10pfSBbY29sdW1uc11cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlUmVuZGVyQXJncykgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbY29udHJvbHNdXG4gKiBAcHJvcGVydHkge0N1cnJlbnRVc2VyTW9kZWwgfCBudWxsfSBbY3VycmVudFVzZXJdXG4gKiBAcHJvcGVydHkgeygodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpID0+IHN0cmluZykgfCBzdHJpbmd9IFtkZWZhdWx0RGF0ZUZvcm1hdE5hbWVdXG4gKiBAcHJvcGVydHkgeygodmFsdWU6IERhdGUgfCBudW1iZXIgfCBzdHJpbmcpID0+IHN0cmluZykgfCBzdHJpbmd9IFtkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lXVxuICogQHByb3BlcnR5IHtUYWJsZVF1ZXJ5UGFyYW1zfSBbZGVmYXVsdFBhcmFtc11cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2Rlc3Ryb3lFbmFibGVkXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXN0cm95TWVzc2FnZV1cbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlN0eWxlUHJvcDxpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuVmlld1N0eWxlPn0gW2RyYWdnZWRIZWFkZXJTdHlsZV1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IFRhYmxlTW9kZWxDYWxsYmFja0FyZ3MpID0+IHN0cmluZ30gW2VkaXRNb2RlbFBhdGhdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtmaWx0ZXJDYXJkXVxuICogQHByb3BlcnR5IHsoYXJnczogRmlsdGVyQ29udGVudEFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX0gW2ZpbHRlckNvbnRlbnRdXG4gKiBAcHJvcGVydHkge251bWJlciB8IHN0cmluZyB8IHN0cmluZ1tdfSBbZmlsdGVyU3VibWl0TGFiZWxdXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbZ3JvdXBCeV1cbiAqIEBwcm9wZXJ0eSB7KChhcmdzOiBUYWJsZVJlbmRlckFyZ3MpID0+IGltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZSkgfCBzdHJpbmd9IFtoZWFkZXJdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2lkZW50aWZpZXJdXG4gKiBAcHJvcGVydHkge1RhYmxlTW9kZWxDbGFzc30gbW9kZWxDbGFzc1xuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtub1JlY29yZHNBdmFpbGFibGVDb250ZW50XVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVSZW5kZXJBcmdzKSA9PiBpbXBvcnQoXCJyZWFjdFwiKS5SZWFjdE5vZGV9IFtub1JlY29yZHNGb3VuZENvbnRlbnRdXG4gKiBAcHJvcGVydHkgeyhhcmdzOiBPbk1vZGVsc0xvYWRlZEFyZ3MpID0+IHZvaWR9IFtvbk1vZGVsc0xvYWRlZF1cbiAqIEBwcm9wZXJ0eSB7KGFyZ3M6IHtyZXN1bHQ6IFRhYmxlUmVzdWx0fSkgPT4gaW1wb3J0KFwicmVhY3RcIikuUmVhY3ROb2RlfSBbcGFnaW5hdGVDb250ZW50XVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCJyZWFjdFwiKS5Db21wb25lbnRUeXBlPHtyZXN1bHQ6IFRhYmxlUmVzdWx0fT59IFtwYWdpbmF0aW9uQ29tcG9uZW50XVxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gW3ByZWxvYWRzXVxuICogQHByb3BlcnR5IHtUYWJsZVF1ZXJ5TWV0aG9kfSBbcXVlcnlNZXRob2RdXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3F1ZXJ5TmFtZV1cbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgc3RyaW5nW10+fSBbc2VsZWN0XVxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT59IFtzZWxlY3RDb2x1bW5zXVxuICogQHByb3BlcnR5IHt7Y29udGFpbmVyPzogaW1wb3J0KFwicmVhY3QtbmF0aXZlXCIpLlN0eWxlUHJvcDxpbXBvcnQoXCJyZWFjdC1uYXRpdmVcIikuVmlld1N0eWxlPn19IFtzdHlsZXNdXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtzdHlsZVVJXVxuICogQHByb3BlcnR5IHsoYXJnczogVGFibGVNb2RlbENhbGxiYWNrQXJncykgPT4gc3RyaW5nfSBbdmlld01vZGVsUGF0aF1cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3dvcmtwbGFjZV1cbiAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBTdGF0ZVxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbltdfSBjb2x1bW5zXG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW10gfCBudWxsfSBjb2x1bW5zVG9TaG93XG4gKiBAcHJvcGVydHkge1dvcmtwbGFjZU1vZGVsIHwgdW5kZWZpbmVkfSBjdXJyZW50V29ya3BsYWNlXG4gKiBAcHJvcGVydHkge251bWJlciB8IG51bGx9IGN1cnJlbnRXb3JrcGxhY2VDb3VudFxuICogQHByb3BlcnR5IHtQcmVwYXJlZENvbHVtbiB8IG51bGx9IGRyYWdnZWRDb2x1bW5cbiAqIEBwcm9wZXJ0eSB7VGFibGVGaWx0ZXJGb3JtU3RhdGUgfCBudWxsfSBmaWx0ZXJGb3JtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtEYXRlfSBsYXN0VXBkYXRlXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdIHwgdW5kZWZpbmVkfSBwcmVsb2FkXG4gKiBAcHJvcGVydHkge1ByZXBhcmVkQ29sdW1uW10gfCB1bmRlZmluZWR9IHByZXBhcmVkQ29sdW1uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5TmFtZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5UGFnZU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBxdWVyeVFOYW1lXG4gICogQHByb3BlcnR5IHtzdHJpbmd9IHF1ZXJ5U05hbWVcbiAgKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlc2l6aW5nXG4gICogQHByb3BlcnR5IHtib29sZWFufSBzaG93RmlsdGVyc1xuICAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc2hvd1NldHRpbmdzXG4gKiBAcHJvcGVydHkge1RhYmxlU2V0dGluZ1JlY29yZCB8IHVuZGVmaW5lZH0gdGFibGVTZXR0aW5nXG4gKiBAcHJvcGVydHkge3N0cmluZyB8IHVuZGVmaW5lZH0gdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHRhYmxlU2V0dGluZ0xvYWRlZFxuICogQHByb3BlcnR5IHtudW1iZXIgfCB1bmRlZmluZWR9IHdpZHRoXG4gKiBAcHJvcGVydHkge1RhYmxlV2lkdGhzIHwgbnVsbH0gd2lkdGhzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJUYWJsZSBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKi9cbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjYXJkOiB0cnVlLFxuICAgIGN1cnJlbnRVc2VyOiBudWxsLFxuICAgIGRlc3Ryb3lFbmFibGVkOiB0cnVlLFxuICAgIGRyYWdnZWRIZWFkZXJTdHlsZTogdW5kZWZpbmVkLFxuICAgIGZpbHRlckNhcmQ6IHRydWUsXG4gICAgZmlsdGVyU3VibWl0QnV0dG9uOiB0cnVlLFxuICAgIG5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgICBwcmVsb2FkczogW10sXG4gICAgc2VsZWN0OiB7fSxcbiAgICBzdHlsZVVJOiB0cnVlLFxuICAgIHdvcmtwbGFjZTogZmFsc2VcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYWJpbGl0aWVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGFjdGlvbnNDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBhcHBIaXN0b3J5OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGNhcmQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBjb2x1bW5zOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jXSksXG4gICAgY29udHJvbHM6IFByb3BUeXBlcy5mdW5jLFxuICAgIGN1cnJlbnRVc2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBkZWZhdWx0RGF0ZVRpbWVGb3JtYXROYW1lOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGRlZmF1bHRQYXJhbXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVzdHJveUVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICAgIGRlc3Ryb3lNZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRyYWdnZWRIZWFkZXJTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBlZGl0TW9kZWxQYXRoOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJDYXJkOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBmaWx0ZXJDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBmaWx0ZXJTdWJtaXRMYWJlbDogUHJvcFR5cGVzLmFueSxcbiAgICBncm91cEJ5OiBQcm9wVHlwZXMuYXJyYXksXG4gICAgaGVhZGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGlkZW50aWZpZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWxDbGFzczogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uTW9kZWxzTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBwYWdpbmF0ZUNvbnRlbnQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBhZ2luYXRpb25Db21wb25lbnQ6IFByb3BUeXBlcy5lbGVtZW50VHlwZSxcbiAgICBwcmVsb2FkczogUHJvcFR5cGVzLmFycmF5LFxuICAgIHF1ZXJ5TWV0aG9kOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBxdWVyeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgc2VsZWN0OiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNlbGVjdENvbHVtbnM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgc3R5bGVzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHN0eWxlVUk6IFByb3BUeXBlcy5ib29sLFxuICAgIHZpZXdNb2RlbFBhdGg6IFByb3BUeXBlcy5mdW5jLFxuICAgIHdvcmtwbGFjZTogUHJvcFR5cGVzLmJvb2xcbiAgfVxuXG4gIGRyYWdnYWJsZVNvcnRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIGN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkID0gMFxuICBjdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQgPSAwXG4gIHRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgPSAwXG4gIHRhYmxlU2V0dGluZ3MgPSBudWxsXG4gIGJsb2NraW5nQ291bnQgPSAwXG5cbiAgLyoqXG4gICAqIFJ1bnMgdGhlIGdpdmVuIGFzeW5jIGZ1bmN0aW9uIHdoaWxlIHNob3dpbmcgdGhlIHRhYmxlJ3MgYmxvY2tpbmcgb3ZlcmxheSxcbiAgICogcHJldmVudGluZyB0aGUgdXNlciBmcm9tIHN0YXJ0aW5nIGEgc2Vjb25kIGhlYXZ5IGFjdGlvbiAoc2VsZWN0IGFsbCxcbiAgICogZGVzZWxlY3QgYWxsLCBwZXItcm93IGRlc3Ryb3ksIC4uLikgd2hpbGUgdGhlIGZpcnN0IGlzIGluIGZsaWdodC5cbiAgICpcbiAgICogUmUtZW50cmFudCDigJQgbmVzdGVkIG9yIG92ZXJsYXBwaW5nIGNhbGxzIGtlZXAgdGhlIG92ZXJsYXkgc2hvd24gdW50aWwgdGhlXG4gICAqIG91dGVybW9zdCBjYWxsIHJlc29sdmVzLlxuICAgKlxuICAgKiBFbWl0cyB0aGUgXCJibG9ja2luZ1wiIGV2ZW50cyB2aWEgYHF1ZXVlTWljcm90YXNrYCBzbyB0aGUgb3ZlcmxheSdzXG4gICAqIHN1YnNjcmlwdGlvbiBoYXMgY29tbWl0dGVkIGJlZm9yZSB0aGUgZmlyc3QgZXZlbnQgZmlyZXMg4oCUIG90aGVyd2lzZSBhXG4gICAqIGhlYXZ5IGFjdGlvbiBraWNrZWQgb2ZmIGZyb20gYSBzaWJsaW5nIGNvbXBvbmVudCdzIGBzZXR1cCgpYCAoZS5nLiB0aGVcbiAgICogY2hlY2stYWxsIGNoZWNrYm94J3MgaW5pdGlhbCBgdXBkYXRlQWxsQ2hlY2tlZGApIGNhbiBlbWl0IGJlZm9yZSB0aGVcbiAgICogb3ZlcmxheSBtb3VudHMsIGFuZCB0aGUgaW5pdGlhbCB0cmFuc2l0aW9uIHRvIGJsb2NraW5nIGlzIGxvc3QuXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUXG4gICAqIEBwYXJhbSB7KCkgPT4gUHJvbWlzZTxUPn0gZm5cbiAgICogQHJldHVybnMge1Byb21pc2U8VD59XG4gICAqL1xuICB3aXRoQmxvY2tpbmcgPSBhc3luYyAoZm4pID0+IHtcbiAgICB0aGlzLmJsb2NraW5nQ291bnQgKz0gMVxuICAgIGlmICh0aGlzLmJsb2NraW5nQ291bnQgPT09IDEpIHF1ZXVlTWljcm90YXNrKCgpID0+IHRoaXMuZXZlbnRzLmVtaXQoXCJibG9ja2luZ1wiLCB0cnVlKSlcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgZm4oKVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmJsb2NraW5nQ291bnQgLT0gMVxuICAgICAgaWYgKHRoaXMuYmxvY2tpbmdDb3VudCA9PT0gMCkgcXVldWVNaWNyb3Rhc2soKCkgPT4gdGhpcy5ldmVudHMuZW1pdChcImJsb2NraW5nXCIsIGZhbHNlKSlcbiAgICB9XG4gIH1cbiAgc3RhdGUgPSB7XG4gICAgY29sdW1uczogdGhpcy5jb2x1bW5zQXNBcnJheSgpLFxuICAgIGN1cnJlbnRXb3JrcGxhY2U6IHVuZGVmaW5lZCxcbiAgICBjdXJyZW50V29ya3BsYWNlQ291bnQ6IG51bGwsXG4gICAgZmlsdGVyRm9ybTogbnVsbCxcbiAgICBjb2x1bW5zVG9TaG93OiBudWxsLFxuICAgIGRyYWdnZWRDb2x1bW46IG51bGwsXG4gICAgaWRlbnRpZmllcjogdGhpcy5wcm9wcy5pZGVudGlmaWVyIHx8IGAke2RpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfS1kZWZhdWx0YCxcbiAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgIHByZWxvYWQ6IHVuZGVmaW5lZCxcbiAgICBwcmVwYXJlZENvbHVtbnM6IHVuZGVmaW5lZCxcbiAgICBxdWVyeU5hbWU6IHRoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpLFxuICAgIHF1ZXJ5UU5hbWU6IGAke3RoaXMucHJvcHMucXVlcnlOYW1lIHx8IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpfV9xYCxcbiAgICBxdWVyeVBhZ2VOYW1lOiBgJHt0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX1fcGFnZWAsXG4gICAgcXVlcnlTTmFtZTogYCR7dGhpcy5wcm9wcy5xdWVyeU5hbWUgfHwgZGlnZyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcImNvbGxlY3Rpb25LZXlcIil9X3NgLFxuICAgIHJlc2l6aW5nOiBmYWxzZSxcbiAgICBzaG93RmlsdGVyczogQm9vbGVhbihQYXJhbXMucGFyc2UoKVtgJHt0aGlzLnByb3BzLnF1ZXJ5TmFtZSB8fCBkaWdnKHRoaXMucC5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwiY29sbGVjdGlvbktleVwiKX1fc2BdKSxcbiAgICBzaG93U2V0dGluZ3M6IGZhbHNlLFxuICAgIHRhYmxlU2V0dGluZzogdW5kZWZpbmVkLFxuICAgIHRhYmxlU2V0dGluZ0xvYWRlZDogZmFsc2UsXG4gICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB1bmRlZmluZWQsXG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICB3aWR0aHM6IG51bGxcbiAgfVxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIudGFibGVcIn0pXG4gICAgY29uc3Qge25hbWU6IGJyZWFrcG9pbnQsIG1kVXB9ID0gdXNlQnJlYWtwb2ludCgpXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG5cbiAgICB0aGlzLmJyZWFrcG9pbnQgPSBicmVha3BvaW50XG4gICAgdGhpcy5maWx0ZXJGb3JtUmVmID0gdXNlUmVmKHVuZGVmaW5lZClcbiAgICB0aGlzLm1kVXAgPSBtZFVwXG4gICAgdGhpcy50ID0gdFxuXG4gICAgY29uc3QgY29sbGVjdGlvbktleSA9IGRpZ2codGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJjb2xsZWN0aW9uS2V5XCIpXG4gICAgbGV0IHF1ZXJ5TmFtZSA9IHRoaXMucHJvcHMucXVlcnlOYW1lXG5cbiAgICBpZiAoIXF1ZXJ5TmFtZSkgcXVlcnlOYW1lID0gY29sbGVjdGlvbktleVxuXG4gICAgY29uc3QgcXVlcnlTTmFtZSA9IGAke3F1ZXJ5TmFtZX1fc2BcblxuICAgIGlmICh0aGlzLnMucXVlcnlOYW1lICE9IHF1ZXJ5TmFtZSB8fCB0aGlzLnMucXVlcnlTTmFtZSAhPSBxdWVyeVNOYW1lKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgcXVlcnlOYW1lLFxuICAgICAgICBxdWVyeVFOYW1lOiBgJHtxdWVyeU5hbWV9X3FgLFxuICAgICAgICBxdWVyeVBhZ2VOYW1lOiBgJHtxdWVyeU5hbWV9X3BhZ2VgLFxuICAgICAgICBxdWVyeVNOYW1lLFxuICAgICAgICBzaG93RmlsdGVyczogQm9vbGVhbihxdWVyeVBhcmFtc1txdWVyeVNOYW1lXSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy50YWJsZUNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICBjYWNoZUtleTogdGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleSxcbiAgICAgICAgbGFzdFVwZGF0ZTogdGhpcy5zLmxhc3RVcGRhdGUsXG4gICAgICAgIHJlc2l6aW5nOiB0aGlzLnMucmVzaXppbmcsXG4gICAgICAgIHRhYmxlOiB0aGlzXG4gICAgICB9KSxcbiAgICAgIFt0aGlzLnMubGFzdFVwZGF0ZSwgdGhpcy5zLnJlc2l6aW5nLCB0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5XVxuICAgIClcblxuICAgIC8vIFRhYmxlIGJvb3RzdHJhcHBpbmcgc2hvdWxkIHN0YXJ0IGFmdGVyIG1vdW50IHNvIGZhc3QgYXN5bmMgY29tcGxldGlvbnMgY2Fubm90IGxhbmQgYmVmb3JlIFNoYXBlQ29tcG9uZW50IGlzIHJlYWR5LlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5wcm9wcy53b3JrcGxhY2UpIHtcbiAgICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZSgpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKz0gMVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnAuY3VycmVudFVzZXI/LmlkKCksIHRoaXMucC5tb2RlbENsYXNzXSlcblxuICAgIC8vIExvYWQgdGFibGUgc2V0dGluZ3MgYWZ0ZXIgbW91bnQgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBjb2xsZWN0aW9uL21vZGVsIGhvb2tzOiBhdm9pZCBwcmUtbW91bnQgc3RhdGUgd3JpdGVzLlxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAvLyBBbHdheXMgYm9vdHN0cmFwIHRhYmxlIHNldHRpbmdzIGZyb20gdGhlIG1vdW50ZWQgZWZmZWN0IHNvIGRpc2NhcmRlZCBwcmUtbW91bnQgcnVucyBjYW5ub3Qgc3RyYW5kIHRoZSB0YWJsZS5cbiAgICAgIHRoaXMubG9hZFRhYmxlU2V0dGluZygpXG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMudGFibGVTZXR0aW5nTG9hZFJlcXVlc3RJZCArPSAxXG4gICAgICB9XG4gICAgfSwgW3RoaXMucC5jdXJyZW50VXNlcj8uaWQoKSwgdGhpcy5wLm1vZGVsQ2xhc3NdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfY3JlYXRlZFwiLCB0aGlzLnR0Lm9uTGlua3NDcmVhdGVkKVxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG5cbiAgICBsZXQgY29sbGVjdGlvblJlYWR5ID0gdHJ1ZVxuICAgIGxldCBzZWxlY3RcblxuICAgIGlmICghdGhpcy5zLnByZXBhcmVkQ29sdW1ucykge1xuICAgICAgY29sbGVjdGlvblJlYWR5ID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoY29sbGVjdGlvblJlYWR5KSB7XG4gICAgICBzZWxlY3QgPSBzZWxlY3RDYWxjdWxhdG9yKHtcbiAgICAgICAgdGFibGU6IHtcbiAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgbW9kZWxDbGFzczogdGhpcy5wLm1vZGVsQ2xhc3MsXG4gICAgICAgICAgICBzZWxlY3Q6IHRoaXMucC5zZWxlY3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHN0YXRlOiB7XG4gICAgICAgICAgICBwcmVwYXJlZENvbHVtbnM6IHRoaXMucy5wcmVwYXJlZENvbHVtbnMgfHwgW11cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgdGhpcy5jb2xsZWN0aW9uID0gdXNlQ29sbGVjdGlvbih7XG4gICAgICBhYmlsaXRpZXM6IHRoaXMuYWJpbGl0aWVzVG9Mb2FkKCksXG4gICAgICBkZWZhdWx0UGFyYW1zOiB0aGlzLnByb3BzLmRlZmF1bHRQYXJhbXMsXG4gICAgICBjb2xsZWN0aW9uOiB0aGlzLnByb3BzLmNvbGxlY3Rpb24sXG4gICAgICBncm91cEJ5OiB0aGlzLnByb3BzLmdyb3VwQnksXG4gICAgICBpZkNvbmRpdGlvbjogY29sbGVjdGlvblJlYWR5LFxuICAgICAgbW9kZWxDbGFzczogdGhpcy5wcm9wcy5tb2RlbENsYXNzLFxuICAgICAgb25Nb2RlbHNMb2FkZWQ6IHRoaXMucHJvcHMub25Nb2RlbHNMb2FkZWQsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50OiB0aGlzLnByb3BzLm5vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQsXG4gICAgICBub1JlY29yZHNGb3VuZENvbnRlbnQ6IHRoaXMucHJvcHMubm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgIHByZWxvYWRzOiB0aGlzLnMucHJlbG9hZCxcbiAgICAgIHF1ZXJ5TWV0aG9kOiB0aGlzLnByb3BzLnF1ZXJ5TWV0aG9kLFxuICAgICAgcXVlcnlOYW1lLFxuICAgICAgc2VsZWN0LFxuICAgICAgc2VsZWN0Q29sdW1uczogdGhpcy5wcm9wcy5zZWxlY3RDb2x1bW5zXG4gICAgfSlcbiAgICB0aGlzLnF1ZXJ5V2l0aG91dFBhZ2luYXRpb24gPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gdGhpcy5jb2xsZWN0aW9uPy5xdWVyeT8uY2xvbmUoKT8uZXhjZXB0KFwicGFnZVwiKSxcbiAgICAgIFt0aGlzLmNvbGxlY3Rpb24ucXVlcnldXG4gICAgKVxuXG4gICAgdXNlRXZlbnRFbWl0dGVyKHRoaXMudHQuZHJhZ2dhYmxlU29ydEV2ZW50cywgXCJvbkRyYWdTdGFydFwiLCB0aGlzLnR0Lm9uRHJhZ1N0YXJ0KVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHMsIFwib25EcmFnRW5kQW5pbWF0aW9uXCIsIHRoaXMudHQub25EcmFnRW5kQW5pbWF0aW9uKVxuICAgIHVzZUV2ZW50RW1pdHRlcih0aGlzLnR0LmV2ZW50cywgXCJjb2x1bW5WaXNpYmlsaXR5VXBkYXRlZFwiLCB0aGlzLnR0Lm9uQ29sdW1uVmlzaWJpbGl0eVVwZGF0ZWQpXG4gIH1cblxuICBvbkNvbHVtblZpc2liaWxpdHlVcGRhdGVkID0gKCkgPT4gdGhpcy5zZXRTdGF0ZSh7Y29sdW1uc1RvU2hvdzogdGhpcy5nZXRDb2x1bW5zVG9TaG93KHRoaXMucy5jb2x1bW5zKSwgbGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG4gIG9uRHJhZ1N0YXJ0ID0gKHtpdGVtfSkgPT4gaXRlbS5hbmltYXRlZFpJbmRleC5zZXRWYWx1ZSg5OTk5KVxuICBvbkRyYWdFbmRBbmltYXRpb24gPSAoe2l0ZW19KSA9PiBpdGVtLmFuaW1hdGVkWkluZGV4LnNldFZhbHVlKDApXG5cbiAgYXN5bmMgbG9hZEN1cnJlbnRXb3JrcGxhY2UoKSB7XG4gICAgLy8gT25seSB0aGUgbGF0ZXN0IHdvcmtwbGFjZSBib290c3RyYXAgcmVxdWVzdCBtYXkgdXBkYXRlIHRhYmxlIHN0YXRlLlxuICAgIGNvbnN0IHJlcXVlc3RJZCA9IHRoaXMuY3VycmVudFdvcmtwbGFjZUxvYWRSZXF1ZXN0SWQgKyAxXG5cbiAgICB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkID0gcmVxdWVzdElkXG4gICAgY29uc3QgV29ya3BsYWNlID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VcIilcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBXb3JrcGxhY2UuY3VycmVudCgpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZSA9IGRpZyhyZXN1bHQsIFwiY3VycmVudFwiLCAwKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPSB0aGlzLmN1cnJlbnRXb3JrcGxhY2VMb2FkUmVxdWVzdElkKSByZXR1cm5cblxuICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRXb3JrcGxhY2V9KVxuICAgIHRoaXMubG9hZEN1cnJlbnRXb3JrcGxhY2VDb3VudCgpXG4gIH1cblxuICBhc3luYyBsb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KCkge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9ICsrdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWRcblxuICAgIGlmICghdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRXb3JrcGxhY2VDb3VudDogMH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBXb3JrcGxhY2VMaW5rID0gbW9kZWxDbGFzc1JlcXVpcmUoXCJXb3JrcGxhY2VMaW5rXCIpXG4gICAgY29uc3QgY3VycmVudFdvcmtwbGFjZUNvdW50ID0gYXdhaXQgdGhpcy53aXRoQmxvY2tpbmcoKCkgPT4gV29ya3BsYWNlTGlua1xuICAgICAgLnJhbnNhY2soe1xuICAgICAgICByZXNvdXJjZV90eXBlX2VxOiB0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUsXG4gICAgICAgIHdvcmtwbGFjZV9pZF9lcTogdGhpcy5zLmN1cnJlbnRXb3JrcGxhY2UuaWQoKVxuICAgICAgfSlcbiAgICAgIC5jb3VudCgpKVxuXG4gICAgaWYgKHJlcXVlc3RJZCAhPT0gdGhpcy5jdXJyZW50V29ya3BsYWNlQ291bnRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7Y3VycmVudFdvcmtwbGFjZUNvdW50fSlcbiAgfVxuXG4gIGdldENvbHVtbnNUb1Nob3coY29sdW1ucykge1xuICAgIHJldHVybiBjb2x1bW5zXG4gICAgICAuZmlsdGVyKCh7Y29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW59KSA9PiBjb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1uKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRhYmxlU2V0dGluZ0NvbHVtbi5wb3NpdGlvbigpIC0gYi50YWJsZVNldHRpbmdDb2x1bW4ucG9zaXRpb24oKSlcbiAgfVxuXG4gIGFzeW5jIGxvYWRUYWJsZVNldHRpbmcoKSB7XG4gICAgLy8gSWdub3JlIGxhdGUgdGFibGUtc2V0dGluZyByZXNwb25zZXMgYWZ0ZXIgbmF2aWdhdGlvbiBvciByZW1vdW50cy5cbiAgICBjb25zdCByZXF1ZXN0SWQgPSB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgKyAxXG5cbiAgICB0aGlzLnRhYmxlU2V0dGluZ0xvYWRSZXF1ZXN0SWQgPSByZXF1ZXN0SWRcbiAgICB0aGlzLnRhYmxlU2V0dGluZ3MgPSBuZXcgVGFibGVTZXR0aW5ncyh7XG4gICAgICB0YWJsZTogLyoqIEB0eXBlIHt7cHJvcHM6IHtjdXJyZW50VXNlcj86IEN1cnJlbnRVc2VyTW9kZWwgfCBudWxsfSwgc3RhdGU6IHtpZGVudGlmaWVyOiBzdHJpbmd9LCBjb2x1bW5zQXNBcnJheSgpOiBUYWJsZUNvbHVtbkRlZmluaXRpb25bXX19ICovICh0aGlzKVxuICAgIH0pXG4gICAgY29uc3QgdGFibGVTZXR0aW5nID0gYXdhaXQgdGhpcy50YWJsZVNldHRpbmdzLmxvYWRFeGlzdGluZ09yQ3JlYXRlVGFibGVTZXR0aW5ncygpXG5cbiAgICBpZiAoIXRhYmxlU2V0dGluZykgdGhyb3cgbmV3IEVycm9yKFwiTm8gdGFibGVTZXR0aW5nIHJldHVybmVkIGJ5IHRhYmxlU2V0dGluZ3MubG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzKClcIilcblxuICAgIGlmIChyZXF1ZXN0SWQgIT0gdGhpcy50YWJsZVNldHRpbmdMb2FkUmVxdWVzdElkKSByZXR1cm5cblxuICAgIGNvbnN0IHtjb2x1bW5zLCBwcmVsb2FkfSA9IHRoaXMudGFibGVTZXR0aW5ncy5wcmVwYXJlZENvbHVtbnModGFibGVTZXR0aW5nKVxuICAgIGNvbnN0IHt3aWR0aH0gPSB0aGlzLnNcbiAgICBjb25zdCB3aWR0aHMgPSBuZXcgV2lkdGhzKHtjb2x1bW5zLCB0YWJsZTogdGhpcywgd2lkdGh9KVxuICAgIGNvbnN0IGNvbHVtbnNUb1Nob3cgPSB0aGlzLmdldENvbHVtbnNUb1Nob3coY29sdW1ucylcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY29sdW1ucyxcbiAgICAgIGNvbHVtbnNUb1Nob3csXG4gICAgICBwcmVwYXJlZENvbHVtbnM6IGNvbHVtbnMsXG4gICAgICBwcmVsb2FkOiB0aGlzLm1lcmdlZFByZWxvYWRzKHByZWxvYWQpLFxuICAgICAgdGFibGVTZXR0aW5nLFxuICAgICAgdGFibGVTZXR0aW5nTG9hZGVkOiB0cnVlLFxuICAgICAgdGFibGVTZXR0aW5nRnVsbENhY2hlS2V5OiB0YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCksXG4gICAgICB3aWR0aHNcbiAgICB9KVxuICB9XG5cbiAgdXBkYXRlU2V0dGluZ3NGdWxsQ2FjaGVLZXkgPSAoKSA9PiB0aGlzLnNldFN0YXRlKHt0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmcuZnVsbENhY2hlS2V5KCl9KVxuXG4gIGNvbHVtbnNBc0FycmF5KCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5jb2x1bW5zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1ucygpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuY29sdW1uc1xuICB9XG5cbiAgbWVyZ2VkUHJlbG9hZHMocHJlbG9hZCkge1xuICAgIGNvbnN0IHtwcmVsb2Fkc30gPSB0aGlzLnByb3BzXG4gICAgbGV0IG1lcmdlZFByZWxvYWRzID0gW11cblxuICAgIGlmIChwcmVsb2FkcykgbWVyZ2VkUHJlbG9hZHMgPSBtZXJnZWRQcmVsb2Fkcy5jb25jYXQocHJlbG9hZHMpXG4gICAgaWYgKHByZWxvYWQpIG1lcmdlZFByZWxvYWRzID0gbWVyZ2VkUHJlbG9hZHMuY29uY2F0KHByZWxvYWQpXG5cbiAgICByZXR1cm4gdW5pcXVuaXplKG1lcmdlZFByZWxvYWRzKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHttb2RlbENsYXNzLCBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LCBub1JlY29yZHNGb3VuZENvbnRlbnR9ID0gdGhpcy5wXG4gICAgY29uc3Qge2NvbGxlY3Rpb24sIGN1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlOYW1lLCBxdWVyeVNOYW1lLCBzaG93RmlsdGVyc30gPSB0aGlzLnNcbiAgICBjb25zdCB7XG4gICAgICBtb2RlbHMsXG4gICAgICBvdmVyYWxsQ291bnQsXG4gICAgICBxUGFyYW1zLFxuICAgICAgcXVlcnksXG4gICAgICByZXN1bHQsXG4gICAgICBzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIHNob3dOb1JlY29yZHNGb3VuZENvbnRlbnRcbiAgICB9ID0gZGlncyhcbiAgICAgIHRoaXMuY29sbGVjdGlvbixcbiAgICAgIFwibW9kZWxzXCIsXG4gICAgICBcIm92ZXJhbGxDb3VudFwiLFxuICAgICAgXCJxUGFyYW1zXCIsXG4gICAgICBcInF1ZXJ5XCIsXG4gICAgICBcInJlc3VsdFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudFwiLFxuICAgICAgXCJzaG93Tm9SZWNvcmRzRm91bmRDb250ZW50XCJcbiAgICApXG4gICAgY29uc3Qgc2FmZVFQYXJhbXMgPSBxUGFyYW1zIHx8IHt9XG5cbiAgICBpZiAoY29sbGVjdGlvbiAmJiBjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUgIT0gbW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYE1vZGVsIGNsYXNzIGZyb20gY29sbGVjdGlvbiAnJHtjb2xsZWN0aW9uLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9JyBgICtcbiAgICAgICAgYGRpZG4ndCBtYXRjaCBtb2RlbCBjbGFzcyBvbiB0YWJsZTogJyR7bW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWV9J2BcbiAgICAgIClcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgPSBzaG91bGRSZW5kZXJMb2FkaW5nQ29udGVudCh7XG4gICAgICBtb2RlbHMsXG4gICAgICBxdWVyeSxcbiAgICAgIHJlc3VsdFxuICAgIH0pXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXdcbiAgICAgICAgZGF0YVNldD17ZGF0YVNldHNbYHJvb3RWaWV3LSR7dGhpcy5jbGFzc05hbWUoKX1gXSB8fD0ge2NsYXNzOiB0aGlzLmNsYXNzTmFtZSgpfX1cbiAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25Db250YWluZXJMYXlvdXR9XG4gICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlcz8uY29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7c2hvd05vUmVjb3Jkc0F2YWlsYWJsZUNvbnRlbnQgJiZcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLW5vLXJlY29yZHMtYXZhaWxhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIHtub1JlY29yZHNBdmFpbGFibGVDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd05vUmVjb3Jkc0ZvdW5kQ29udGVudCAmJlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibGl2ZS10YWJsZS0tbm8tcmVjb3Jkcy1mb3VuZC1jb250ZW50XCI+XG4gICAgICAgICAgICB7bm9SZWNvcmRzRm91bmRDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBvdmVyYWxsQ291bnR9KX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICB7c2hvd0ZpbHRlcnMgJiZcbiAgICAgICAgICA8RmlsdGVycyBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9IG1vZGVsQ2xhc3M9e21vZGVsQ2xhc3N9IHF1ZXJ5TmFtZT17cXVlcnlOYW1lfSBxdWVyeVNOYW1lPXtxdWVyeVNOYW1lfSAvPlxuICAgICAgICB9XG4gICAgICAgIHtzaG91bGRTaG93TG9hZGluZ0NvbnRlbnQgJiZcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb250ZW50KHttb2RlbHMsIHFQYXJhbXM6IHNhZmVRUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSlcbiAgICAgICAgfVxuICAgICAgICB7IXNob3VsZFNob3dMb2FkaW5nQ29udGVudCAmJlxuICAgICAgICAgIHRoaXMuY2FyZE9yVGFibGUoKVxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGhlYWRlciB0aXRsZSBvciBjdXN0b20gaGVhZGVyIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtBcnJheTxvYmplY3Q+fSBbYXJncy5tb2RlbHNdXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5xUGFyYW1zXVxuICAgKiBAcGFyYW0ge29iamVjdH0gW2FyZ3MucXVlcnldXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJncy5yZXN1bHRdXG4gICAqIEByZXR1cm5zIHtzdHJpbmd8UmVhY3QuUmVhY3ROb2RlfVxuICAgKi9cbiAgdGFibGVIZWFkZXJDb250ZW50ICh7bW9kZWxzLCBxUGFyYW1zLCBxdWVyeSwgcmVzdWx0fSA9IHt9KSB7XG4gICAgY29uc3Qge2hlYWRlciwgbW9kZWxDbGFzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodHlwZW9mIGhlYWRlciA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgfSBlbHNlIGlmIChoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXJcbiAgICB9XG5cbiAgICByZXR1cm4gbW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5odW1hbih7Y291bnQ6IDJ9KVxuICB9XG5cbiAgbG9hZGluZ0NvbnRlbnQgKHttb2RlbHMsIHFQYXJhbXMsIHF1ZXJ5LCByZXN1bHR9KSB7XG4gICAgY29uc3Qge1xuICAgICAgYWJpbGl0aWVzLFxuICAgICAgYWN0aW9uc0NvbnRlbnQsXG4gICAgICBhcHBIaXN0b3J5LFxuICAgICAgY2FyZCxcbiAgICAgIGNsYXNzTmFtZSxcbiAgICAgIGNvbGxlY3Rpb24sXG4gICAgICBjb2x1bW5zLFxuICAgICAgY29udHJvbHMsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIGRlZmF1bHREYXRlRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHREYXRlVGltZUZvcm1hdE5hbWUsXG4gICAgICBkZWZhdWx0UGFyYW1zLFxuICAgICAgZGVzdHJveUVuYWJsZWQsXG4gICAgICBkZXN0cm95TWVzc2FnZSxcbiAgICAgIGVkaXRNb2RlbFBhdGgsXG4gICAgICBmaWx0ZXJDYXJkLFxuICAgICAgZmlsdGVyQ29udGVudCxcbiAgICAgIGZpbHRlclN1Ym1pdEJ1dHRvbixcbiAgICAgIGZpbHRlclN1Ym1pdExhYmVsLFxuICAgICAgZ3JvdXBCeSxcbiAgICAgIGhlYWRlcixcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBtb2RlbENsYXNzLFxuICAgICAgbm9SZWNvcmRzQXZhaWxhYmxlQ29udGVudCxcbiAgICAgIG5vUmVjb3Jkc0ZvdW5kQ29udGVudCxcbiAgICAgIG9uTW9kZWxzTG9hZGVkLFxuICAgICAgcGFnaW5hdGVDb250ZW50LFxuICAgICAgcGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICAgIHByZWxvYWRzLFxuICAgICAgcXVlcnlNZXRob2QsXG4gICAgICBxdWVyeU5hbWUsXG4gICAgICBzZWxlY3QsXG4gICAgICBzZWxlY3RDb2x1bW5zLFxuICAgICAgc3R5bGVVSSxcbiAgICAgIHZpZXdNb2RlbFBhdGgsXG4gICAgICB3b3JrcGxhY2UsXG4gICAgICAuLi5yZXN0UHJvcHNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgY29uc3QgbG9hZGluZ0NvbnRlbnQgPSAoXG4gICAgICA8VmlldyBkYXRhU2V0PXtkYXRhU2V0cy5sb2FkaW5nIHx8PSB7Y2xhc3M6IFwiYXBpLW1ha2VyLS10YWJsZS0tbG9hZGluZ1wifX0+XG4gICAgICAgIDxUZXh0Pnt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RpdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICApXG5cbiAgICBpZiAoIWNhcmQpIHJldHVybiBsb2FkaW5nQ29udGVudFxuXG4gICAgY29uc3Qgc2FmZU1vZGVscyA9IG1vZGVscyB8fCBbXVxuICAgIGNvbnN0IHNhZmVBcmdzID0ge21vZGVsczogc2FmZU1vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Q2FyZFxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJsaXZlLXRhYmxlLS10YWJsZS1jYXJkXCIsIFwibWItNFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKHNhZmVBcmdzKX1cbiAgICAgICAgaGVhZGVyPXt0aGlzLnRhYmxlSGVhZGVyQ29udGVudChzYWZlQXJncyl9XG4gICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtsb2FkaW5nQ29udGVudH1cbiAgICAgIDwvQ2FyZD5cbiAgICApXG4gIH1cblxuICAvKiogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi9cbiAgYWJpbGl0aWVzVG9Mb2FkICgpIHtcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHN0cmluZ1tdPn0gKi8gKHt9KVxuICAgIGNvbnN0IHthYmlsaXRpZXMsIG1vZGVsQ2xhc3N9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IG93bkFiaWxpdGllcyA9IFtdXG5cbiAgICBpZiAodGhpcy5wcm9wcy5kZXN0cm95RW5hYmxlZCkgb3duQWJpbGl0aWVzLnB1c2goXCJkZXN0cm95XCIpXG4gICAgaWYgKHRoaXMucHJvcHMuZWRpdE1vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJlZGl0XCIpXG4gICAgaWYgKHRoaXMucHJvcHMudmlld01vZGVsUGF0aCkgb3duQWJpbGl0aWVzLnB1c2goXCJzaG93XCIpXG5cbiAgICBpZiAob3duQWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyhtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgICBhYmlsaXRpZXNUb0xvYWRbbW9kZWxDbGFzc05hbWVdID0gb3duQWJpbGl0aWVzXG4gICAgfVxuXG4gICAgaWYgKGFiaWxpdGllcykge1xuICAgICAgZm9yIChjb25zdCBtb2RlbE5hbWUgaW4gYWJpbGl0aWVzKSB7XG4gICAgICAgIGlmICghKG1vZGVsTmFtZSBpbiBhYmlsaXRpZXNUb0xvYWQpKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0gPSBbXVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5IG9mIGFiaWxpdGllc1ttb2RlbE5hbWVdKSB7XG4gICAgICAgICAgYWJpbGl0aWVzVG9Mb2FkW21vZGVsTmFtZV0ucHVzaChhYmlsaXR5KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiaWxpdGllc1RvTG9hZFxuICB9XG5cbiAgLyoqXG4gICAqIERlY2lkZSBiZXR3ZWVuIGNhcmQvdGFibGUgcmVuZGVyaW5nIG9uY2UgZGF0YSBpcyByZWFkeS5cbiAgICogQHJldHVybnMge1JlYWN0LlJlYWN0Tm9kZX1cbiAgICovXG4gIGNhcmRPclRhYmxlICgpIHtcbiAgICBjb25zdCB7XG4gICAgICBhYmlsaXRpZXMsXG4gICAgICBhY3Rpb25zQ29udGVudCxcbiAgICAgIGFwcEhpc3RvcnksXG4gICAgICBjYXJkLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sbGVjdGlvbixcbiAgICAgIGNvbHVtbnMsXG4gICAgICBjb250cm9scyxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgZGVmYXVsdERhdGVGb3JtYXROYW1lLFxuICAgICAgZGVmYXVsdERhdGVUaW1lRm9ybWF0TmFtZSxcbiAgICAgIGRlZmF1bHRQYXJhbXMsXG4gICAgICBkZXN0cm95RW5hYmxlZCxcbiAgICAgIGRlc3Ryb3lNZXNzYWdlLFxuICAgICAgZWRpdE1vZGVsUGF0aCxcbiAgICAgIGZpbHRlckNhcmQsXG4gICAgICBmaWx0ZXJDb250ZW50LFxuICAgICAgZmlsdGVyU3VibWl0QnV0dG9uLFxuICAgICAgZmlsdGVyU3VibWl0TGFiZWwsXG4gICAgICBncm91cEJ5LFxuICAgICAgaGVhZGVyLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIG1vZGVsQ2xhc3MsXG4gICAgICBub1JlY29yZHNBdmFpbGFibGVDb250ZW50LFxuICAgICAgbm9SZWNvcmRzRm91bmRDb250ZW50LFxuICAgICAgb25Nb2RlbHNMb2FkZWQsXG4gICAgICBwYWdpbmF0ZUNvbnRlbnQsXG4gICAgICBwYWdpbmF0aW9uQ29tcG9uZW50LFxuICAgICAgcHJlbG9hZHMsXG4gICAgICBxdWVyeU1ldGhvZCxcbiAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgIHNlbGVjdCxcbiAgICAgIHNlbGVjdENvbHVtbnMsXG4gICAgICBzdHlsZVVJLFxuICAgICAgdmlld01vZGVsUGF0aCxcbiAgICAgIHdvcmtwbGFjZSxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSBkaWdzKHRoaXMuY29sbGVjdGlvbiwgXCJtb2RlbHNcIiwgXCJxUGFyYW1zXCIsIFwicXVlcnlcIiwgXCJyZXN1bHRcIilcbiAgICBjb25zdCBzYWZlUVBhcmFtcyA9IHFQYXJhbXMgfHwge31cblxuICAgIGNvbnN0IGhlYWRlckNvbnRlbnQgPSB0aGlzLnRhYmxlSGVhZGVyQ29udGVudCh7bW9kZWxzLCBxUGFyYW1zOiBzYWZlUVBhcmFtcywgcXVlcnksIHJlc3VsdH0pXG4gICAgbGV0IFBhZ2luYXRpb25Db21wb25lbnRcblxuICAgIGlmICghcGFnaW5hdGVDb250ZW50KSB7XG4gICAgICBpZiAocGFnaW5hdGlvbkNvbXBvbmVudCkge1xuICAgICAgICBQYWdpbmF0aW9uQ29tcG9uZW50ID0gcGFnaW5hdGlvbkNvbXBvbmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUGFnaW5hdGlvbkNvbXBvbmVudCA9IFBhZ2luYXRlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmxhdExpc3QgPSAoXG4gICAgICA8VGFibGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt0aGlzLnR0LnRhYmxlQ29udGV4dFZhbHVlfT5cbiAgICAgICAgPFZpZXdcbiAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0cy5mbGF0TGlzdFdyYXBwZXIgfHw9IHtjbGFzczogXCJhcGktbWFrZXItLXRhYmxlLS1mbGF0LWxpc3Qtd3JhcHBlclwifX1cbiAgICAgICAgICBzdHlsZT17c3R5bGVzLmZsYXRMaXN0V3JhcHBlciB8fD0ge3Bvc2l0aW9uOiBcInJlbGF0aXZlXCJ9fVxuICAgICAgICA+XG4gICAgICAgICAgPEZsYXRMaXN0XG4gICAgICAgICAgICBkYXRhPXttb2RlbHN9XG4gICAgICAgICAgICBkYXRhU2V0PXtkYXRhU2V0c1tgZmxhdExpc3QtJHtjbGFzc05hbWV9LSR7dGhpcy5zLnRhYmxlU2V0dGluZ0Z1bGxDYWNoZUtleX1gXSB8fD0ge1xuICAgICAgICAgICAgICBjbGFzczogY2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGVcIiwgY2xhc3NOYW1lKSxcbiAgICAgICAgICAgICAgY2FjaGVLZXk6IHRoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXksXG4gICAgICAgICAgICAgIGxhc3RVcGRhdGU6IHRoaXMucy5sYXN0VXBkYXRlXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZXh0cmFEYXRhPXt0aGlzLnMubGFzdFVwZGF0ZX1cbiAgICAgICAgICAgIGtleUV4dHJhY3Rvcj17dGhpcy50dC5rZXlFeHRyYXRvcn1cbiAgICAgICAgICAgIExpc3RIZWFkZXJDb21wb25lbnQ9e0xpc3RIZWFkZXJDb21wb25lbnR9XG4gICAgICAgICAgICByZW5kZXJJdGVtPXt0aGlzLnR0LnJlbmRlckl0ZW19XG4gICAgICAgICAgICBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3JcbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZXNbYGZsYXRMaXN0LSR7c3R5bGVVSX1gXSB8fD0ge1xuICAgICAgICAgICAgICBvdmVyZmxvd1g6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICBib3JkZXI6IHN0eWxlVUkgPyBcIjFweCBzb2xpZCAjZGJkYmRiXCIgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIGJvcmRlclJhZGl1czogc3R5bGVVSSA/IDUgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEJsb2NraW5nT3ZlcmxheSBldmVudHM9e3RoaXMuZXZlbnRzfSAvPlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1RhYmxlQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgZmlsdGVyQ2FyZCAmJlxuICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cImxpdmUtdGFibGUtLWZpbHRlci1jYXJkIG1iLTRcIj5cbiAgICAgICAgICAgIHt0aGlzLmZpbHRlckZvcm0oKX1cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIH1cbiAgICAgICAge2ZpbHRlckNvbnRlbnQgJiYgIWZpbHRlckNhcmQgJiZcbiAgICAgICAgICB0aGlzLmZpbHRlckZvcm0oKVxuICAgICAgICB9XG4gICAgICAgIHtjYXJkICYmXG4gICAgICAgICAgPENhcmRcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImxpdmUtdGFibGUtLXRhYmxlLWNhcmRcIiwgXCJtYi00XCIsIGNsYXNzTmFtZSl9XG4gICAgICAgICAgICBjb250cm9scz17dGhpcy50YWJsZUNvbnRyb2xzKCl9XG4gICAgICAgICAgICBoZWFkZXI9e2hlYWRlckNvbnRlbnR9XG4gICAgICAgICAgICBmb290ZXI9e3RoaXMudGFibGVGb290ZXIoKX1cbiAgICAgICAgICAgIHsuLi5yZXN0UHJvcHN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2ZsYXRMaXN0fVxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgfVxuICAgICAgICB7IWNhcmQgJiYgZmxhdExpc3R9XG4gICAgICAgIHtyZXN1bHQgJiYgUGFnaW5hdGlvbkNvbXBvbmVudCAmJlxuICAgICAgICAgIDxQYWdpbmF0aW9uQ29tcG9uZW50IHJlc3VsdD17cmVzdWx0fSAvPlxuICAgICAgICB9XG4gICAgICAgIHtyZXN1bHQgJiYgcGFnaW5hdGVDb250ZW50ICYmXG4gICAgICAgICAgcGFnaW5hdGVDb250ZW50KHtyZXN1bHR9KVxuICAgICAgICB9XG4gICAgICA8Lz5cbiAgICApXG4gIH1cblxuICBvbkNvbnRhaW5lckxheW91dCA9IChlKSA9PiB7XG4gICAgY29uc3Qge3dpZHRofSA9IGUubmF0aXZlRXZlbnQubGF5b3V0XG4gICAgY29uc3Qge3dpZHRoc30gPSB0aGlzLnNcblxuICAgIC8vIElmIHRhYmxlIHNldHRpbmdzIGxvYWRlZCBiZWZvcmUgUk4td2ViIHByb2R1Y2VkIGEgbGF5b3V0IHdpZHRoLCByZWNvbXB1dGUgb25jZSB3aXRoIHRoZSByZWFsIHdpZHRoLlxuICAgIGlmICh3aWR0aHM/LnVzZWRGYWxsYmFja1dpZHRoKSB7XG4gICAgICB3aWR0aHMudXBkYXRlVGFibGVXaWR0aCh3aWR0aClcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2xhc3RVcGRhdGU6IG5ldyBEYXRlKCksIHdpZHRofSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe3dpZHRofSlcbiAgICBpZiAod2lkdGhzKSB3aWR0aHMudGFibGVXaWR0aCA9IHdpZHRoXG4gIH1cblxuICBvbkxpbmtzQ3JlYXRlZCA9ICh7YXJnc30pID0+IHtcbiAgICBpZiAoYXJncy5yZXNvdXJjZV90eXBlcz8uaW5jbHVkZXModGhpcy5wLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKS5uYW1lKSkge1xuICAgICAgdGhpcy5sb2FkQ3VycmVudFdvcmtwbGFjZUNvdW50KClcbiAgICB9XG4gIH1cblxuICBvbkxpbmtzRGVzdHJveWVkID0gKHthcmdzfSkgPT4ge1xuICAgIGlmIChhcmdzLnJlc291cmNlX3R5cGVzPy5pbmNsdWRlcyh0aGlzLnAubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUpKSB7XG4gICAgICB0aGlzLmxvYWRDdXJyZW50V29ya3BsYWNlQ291bnQoKVxuICAgIH1cbiAgfVxuXG4gIGtleUV4dHJhdG9yID0gKG1vZGVsKSA9PiBgJHt0aGlzLnMudGFibGVTZXR0aW5nRnVsbENhY2hlS2V5fS0ke21vZGVsLmlkKCl9YFxuXG4gIGZpbHRlckZvcm0gPSAoKSA9PiB7XG4gICAgY29uc3Qge2ZpbHRlckZvcm1SZWYsIHN1Ym1pdEZpbHRlciwgc3VibWl0RmlsdGVyRGVib3VuY2V9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtmaWx0ZXJDb250ZW50LCBmaWx0ZXJTdWJtaXRCdXR0b259ID0gdGhpcy5wXG4gICAgY29uc3Qge3F1ZXJ5UU5hbWV9ID0gdGhpcy5zXG4gICAgY29uc3Qge2ZpbHRlclN1Ym1pdExhYmVsfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBhY3R1YWxRUGFyYW1zID0gZGlnZyh0aGlzLmNvbGxlY3Rpb24sIFwicVBhcmFtc1wiKSB8fCB7fVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxGb3JtXG4gICAgICAgIGZvcm1SZWY9e2ZpbHRlckZvcm1SZWZ9XG4gICAgICAgIGh0bWxGb3JtUHJvcHM9e3N0eWxlcy5maWx0ZXJGb3JtSHRtbFByb3BzIHx8PSB7Y2xhc3NOYW1lOiBcImxpdmUtdGFibGUtLWZpbHRlci1mb3JtXCJ9fVxuICAgICAgICBvblN1Ym1pdD17dGhpcy50dC5vbkZpbHRlckZvcm1TdWJtaXR9XG4gICAgICAgIHNldEZvcm09ey8qKiBAdHlwZSB7e2ZpbHRlckZvcm0odmFsdWU6IFRhYmxlRmlsdGVyRm9ybVN0YXRlKTogdm9pZH19ICovICh0aGlzLnNldFN0YXRlcykuZmlsdGVyRm9ybX1cbiAgICAgICAgdXNlSHRtbEZvcm1cbiAgICAgID5cbiAgICAgICAge1wic1wiIGluIGFjdHVhbFFQYXJhbXMgJiZcbiAgICAgICAgICA8aW5wdXQgbmFtZT1cInNcIiB0eXBlPVwiaGlkZGVuXCIgdmFsdWU9e2FjdHVhbFFQYXJhbXMuc30gLz5cbiAgICAgICAgfVxuICAgICAgICB7ZmlsdGVyQ29udGVudCh7XG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkOiBzdWJtaXRGaWx0ZXIsXG4gICAgICAgICAgb25GaWx0ZXJDaGFuZ2VkV2l0aERlbGF5OiBzdWJtaXRGaWx0ZXJEZWJvdW5jZSxcbiAgICAgICAgICBxUGFyYW1zOiBhY3R1YWxRUGFyYW1zLFxuICAgICAgICAgIHF1ZXJ5UU5hbWVcbiAgICAgICAgfSl9XG4gICAgICAgIHtmaWx0ZXJTdWJtaXRCdXR0b24gJiZcbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJ0biBidG4tcHJpbWFyeSBsaXZlLXRhYmxlLS1zdWJtaXQtZmlsdGVyLWJ1dHRvblwiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIHN0eWxlPXtzdHlsZXMuZmlsdGVyU3VibWl0QnV0dG9uIHx8PSB7bWFyZ2luVG9wOiBcIjhweFwifX1cbiAgICAgICAgICAgIHZhbHVlPXtmaWx0ZXJTdWJtaXRMYWJlbCB8fCB0aGlzLnR0LnQoXCIuZmlsdGVyXCIsIHtkZWZhdWx0VmFsdWU6IFwiRmlsdGVyXCJ9KX1cbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L0Zvcm0+XG4gICAgKVxuICB9XG5cbiAgb25GaWx0ZXJDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLnNldFN0YXRlKHtzaG93RmlsdGVyczogIXRoaXMucy5zaG93RmlsdGVyc30pXG4gIH1cblxuICBvblBlclBhZ2VDaGFuZ2VkID0gKGUpID0+IHtcbiAgICBjb25zdCB7cXVlcnlOYW1lfSA9IHRoaXMuc1xuICAgIGNvbnN0IG5ld1BlclBhZ2VWYWx1ZSA9IGRpZ2coZSwgXCJ0YXJnZXRcIiwgXCJ2YWx1ZVwiKVxuICAgIGNvbnN0IHBlcktleSA9IGAke3F1ZXJ5TmFtZX1fcGVyYFxuICAgIGNvbnN0IHBhcmFtc0NoYW5nZSA9IHt9XG5cbiAgICBwYXJhbXNDaGFuZ2VbcGVyS2V5XSA9IG5ld1BlclBhZ2VWYWx1ZVxuXG4gICAgUGFyYW1zLmNoYW5nZVBhcmFtcyhwYXJhbXNDaGFuZ2UpXG4gIH1cblxuICByZW5kZXJJdGVtID0gKHtpbmRleCwgaXRlbTogbW9kZWx9KSA9PiB7XG4gICAgaWYgKCF0aGlzLnMudGFibGVTZXR0aW5nTG9hZGVkKSB7XG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0aGlzLnR0LnQoXCIubG9hZGluZ19kb3RfZG90X2RvdFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkxvYWRpbmcuLi5cIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kZWxSb3dcbiAgICAgICAgY2FjaGVLZXk9e21vZGVsLmNhY2hlS2V5KCl9XG4gICAgICAgIGNvbHVtbnM9e3RoaXMucy5jb2x1bW5zVG9TaG93fVxuICAgICAgICBjb2x1bW5XaWR0aHM9e3RoaXMuY29sdW1uV2lkdGhzKCl9XG4gICAgICAgIGV2ZW50cz17dGhpcy50dC5ldmVudHN9XG4gICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAga2V5PXttb2RlbC5pZCgpfVxuICAgICAgICBtb2RlbD17bW9kZWx9XG4gICAgICAgIHRhYmxlPXt0aGlzfVxuICAgICAgICB0YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXk9e3RoaXMucy50YWJsZVNldHRpbmdGdWxsQ2FjaGVLZXl9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBkYXRhIGNvbHVtbi5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3NcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MuY29sdW1uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBhcmdzLmNvbHVtbkluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXJncy5ldmVuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnN0eWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnR5cGVcbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yQ29sdW1uID0gKHtjb2x1bW4sIGNvbHVtbkluZGV4LCBldmVuLCBzdHlsZSwgdHlwZX0pID0+IHtcbiAgICBjb25zdCB7c3R5bGVVSX0gPSB0aGlzLnBcbiAgICBjb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgIHBhZGRpbmc6IDgsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH1cblxuICAgIGlmIChzdHlsZVVJKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRlZmF1bHRTdHlsZSwge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGV2ZW4gPyBcIiNmNWY1ZjVcIiA6IFwiI2ZmZlwiXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0eXBlID09IFwiYWN0aW9uc1wiKSB7XG4gICAgICBkZWZhdWx0U3R5bGUuZmxleERpcmVjdGlvbiA9IFwicm93XCJcbiAgICAgIGRlZmF1bHRTdHlsZS5hbGlnbkl0ZW1zID0gXCJjZW50ZXJcIlxuXG4gICAgICBpZiAodGhpcy50dC5tZFVwKSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5MZWZ0ID0gXCJhdXRvXCJcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlZmF1bHRTdHlsZS5tYXJnaW5SaWdodCA9IFwiYXV0b1wiXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnR0Lm1kVXAgJiYgc3R5bGVVSSkge1xuICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgfVxuXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAgZGVmYXVsdFN0eWxlLFxuICAgICAgc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gYWN0dWFsU3R5bGVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgYmFzZSBzdHlsZSBmb3IgYSBoZWFkZXIgY29sdW1uLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncy5jb2x1bW5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MuY29sdW1uSW5kZXhcbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3Muc3R5bGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudHlwZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXIgPSAoe2NvbHVtbiwgY29sdW1uSW5kZXgsIHN0eWxlLCB0eXBlfSkgPT4ge1xuICAgIGNvbnN0IHttZFVwfSA9IHRoaXMudHRcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGBoZWFkZXJTdHlsZS0ke3R5cGUgfHwgXCJkZWZhdWx0XCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFN0eWxlID0ge1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiA4XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSAhPSBcImFjdGlvbnNcIiAmJiBtZFVwICYmIHRoaXMucC5zdHlsZVVJKSB7XG4gICAgICAgICAgZGVmYXVsdFN0eWxlLmJvcmRlclJpZ2h0ID0gXCIxcHggc29saWQgI2RiZGJkYlwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihkZWZhdWx0U3R5bGUsIHN0eWxlKVxuICAgICAgfSxcbiAgICAgIFttZFVwLCB0aGlzLnAuc3R5bGVVSSwgdHlwZSwgc3R5bGVdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBib2xkIGhlYWRlciB0ZXh0IHN0eWxlLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JIZWFkZXJUZXh0ID0gKCkgPT4ge1xuICAgIHJldHVybiBzdHlsZXMuaGVhZGVyVGV4dFN0eWxlIHx8PSB7Zm9udFdlaWdodDogXCJib2xkXCJ9XG4gIH1cblxuICAvKipcbiAgICogU3R5bGUgZm9yIGEgdGFibGUgcm93IHdyYXBwZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBbYXJnc11cbiAgICogQHBhcmFtIHtib29sZWFufSBbYXJncy5ldmVuXVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3R5bGVGb3JSb3cgPSAoe2V2ZW59ID0ge30pID0+IHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcbiAgICAgIGByb3dTdHlsZS0ke2V2ZW4gPyBcImV2ZW5cIiA6IFwib2RkXCJ9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgYWN0dWFsU3R5bGUgPSB7XG4gICAgICAgICAgZmxleDogMSxcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcInN0cmV0Y2hcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW4gJiYgdGhpcy5wLnN0eWxlVUkpIHtcbiAgICAgICAgICBhY3R1YWxTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBcIiNmNWY1ZjVcIlxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFjdHVhbFN0eWxlXG4gICAgICB9LFxuICAgICAgW2V2ZW4sIHRoaXMucC5zdHlsZVVJXVxuICAgIClcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHlsZSBmb3IgdGhlIGhlYWRlciByb3cgd3JhcHBlci5cbiAgICogQHJldHVybnMge29iamVjdH1cbiAgICovXG4gIHN0eWxlRm9yUm93SGVhZGVyID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgXCJyb3dIZWFkZXJTdHlsZVwiLFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgZmxleDogMSxcbiAgICAgICAgYWxpZ25JdGVtczogXCJzdHJldGNoXCJcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGFibGVSZW5kZXJBcmdzfSBbYXJnc11cbiAgICogQHJldHVybnMge2ltcG9ydChcInJlYWN0XCIpLlJlYWN0Tm9kZX1cbiAgICovXG4gIHRhYmxlQ29udHJvbHMoe21vZGVscywgcVBhcmFtcywgcXVlcnksIHJlc3VsdH0gPSB7fSkge1xuICAgIGNvbnN0IHtjb250cm9sc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge3Nob3dTZXR0aW5nc30gPSB0aGlzLnNcbiAgICBjb25zdCBjb2xsZWN0aW9uQXJncyA9IGRpZ3ModGhpcy5jb2xsZWN0aW9uLCBcIm1vZGVsc1wiLCBcInFQYXJhbXNcIiwgXCJxdWVyeVwiLCBcInJlc3VsdFwiKVxuICAgIGNvbnN0IGFjdHVhbE1vZGVscyA9IG1vZGVscyA/PyBjb2xsZWN0aW9uQXJncy5tb2RlbHMgPz8gW11cbiAgICBjb25zdCBhY3R1YWxRUGFyYW1zID0gcVBhcmFtcyA/PyBjb2xsZWN0aW9uQXJncy5xUGFyYW1zXG4gICAgY29uc3QgYWN0dWFsUXVlcnkgPSBxdWVyeSA/PyBjb2xsZWN0aW9uQXJncy5xdWVyeVxuICAgIGNvbnN0IGFjdHVhbFJlc3VsdCA9IHJlc3VsdCA/PyBjb2xsZWN0aW9uQXJncy5yZXN1bHRcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnRhYmxlQ29udHJvbHNSb290VmlldyB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCJ9fT5cbiAgICAgICAge2NvbnRyb2xzICYmIGNvbnRyb2xzKHttb2RlbHM6IGFjdHVhbE1vZGVscywgcVBhcmFtczogYWN0dWFsUVBhcmFtcywgcXVlcnk6IGFjdHVhbFF1ZXJ5LCByZXN1bHQ6IGFjdHVhbFJlc3VsdH0pfVxuICAgICAgICA8UHJlc3NhYmxlXG4gICAgICAgICAgZGF0YVNldD17ZGF0YVNldHMuZmlsdGVyQnV0dG9uIHx8PSB7Y2xhc3M6IFwiZmlsdGVyLWJ1dHRvblwifX1cbiAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRmlsdGVyQ2xpY2tlZH1cbiAgICAgICAgICB0ZXN0SUQ9XCJmaWx0ZXJCdXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPEljb24gbmFtZT1cInNlYXJjaFwiIHNpemU9ezIwfSAvPlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAge3Nob3dTZXR0aW5ncyAmJlxuICAgICAgICAgICAgPFNldHRpbmdzIG9uUmVxdWVzdENsb3NlPXt0aGlzLnR0Lm9uUmVxdWVzdENsb3NlU2V0dGluZ3N9IHRhYmxlPXt0aGlzfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25TZXR0aW5nc0NsaWNrZWR9IHRlc3RJRD1cInNldHRpbmdzLWJ1dHRvblwiPlxuICAgICAgICAgICAgPEljb24gbmFtZT1cImdlYXJcIiBzaXplPXsyMH0gLz5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIHRhYmxlRm9vdGVyKCkge1xuICAgIGNvbnN0IHtyZXN1bHR9ID0gZGlncyh0aGlzLmNvbGxlY3Rpb24sIFwicmVzdWx0XCIpXG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXN1bHQuY3VycmVudFBhZ2UoKVxuICAgIGNvbnN0IHRvdGFsQ291bnQgPSByZXN1bHQudG90YWxDb3VudCgpXG4gICAgY29uc3QgcGVyUGFnZSA9IHJlc3VsdC5wZXJQYWdlKClcbiAgICBjb25zdCB0byA9IE1hdGgubWluKGN1cnJlbnRQYWdlICogcGVyUGFnZSwgdG90YWxDb3VudClcbiAgICBjb25zdCBkZWZhdWx0VmFsdWUgPSBcIlNob3dpbmcgJXtmcm9tfSB0byAle3RvfSBvdXQgb2YgJXt0b3RhbF9jb3VudH0gdG90YWwuXCJcbiAgICBsZXQgZnJvbSA9ICgoY3VycmVudFBhZ2UgLSAxKSAqIHBlclBhZ2UpICsgMVxuXG4gICAgaWYgKHRvID09PSAwKSBmcm9tID0gMFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudGFibGVGb290ZXJSb290Vmlld1N0eWxlIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIiwganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLCBtYXJnaW5Ub3A6IDEwfX0+XG4gICAgICAgIDxWaWV3IGRhdGFTZXQ9e2RhdGFTZXRzLnNob3dpbmdDb3VudHMgfHw9IHtjbGFzczogXCJzaG93aW5nLWNvdW50c1wifX0gc3R5bGU9e3N0eWxlcy5zaG93aW5nQ291bnRzIHx8PSB7ZmxleERpcmVjdGlvbjogXCJyb3dcIn19PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3RoaXMudHQudChcIi5zaG93aW5nX2Zyb21fdG9fb3V0X29mX3RvdGFsXCIsIHtkZWZhdWx0VmFsdWUsIGZyb20sIHRvLCB0b3RhbF9jb3VudDogdG90YWxDb3VudH0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICB7dGhpcy5wLndvcmtwbGFjZSAmJiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50ICE9PSBudWxsICYmXG4gICAgICAgICAgICA8VGV4dCBzdHlsZT17c3R5bGVzLnhTZWxlY3RlZFRleHRTdHlsZSB8fD0ge21hcmdpbkxlZnQ6IDN9fT5cbiAgICAgICAgICAgICAge3RoaXMudHQudChcIi54X3NlbGVjdGVkXCIsIHtkZWZhdWx0VmFsdWU6IFwiJXtzZWxlY3RlZH0gc2VsZWN0ZWQuXCIsIHNlbGVjdGVkOiB0aGlzLnMuY3VycmVudFdvcmtwbGFjZUNvdW50fSl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgfVxuICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDxWaWV3PlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cInBlci1wYWdlLXNlbGVjdFwiXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU9e3BlclBhZ2V9XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vblBlclBhZ2VDaGFuZ2VkfVxuICAgICAgICAgICAgb3B0aW9ucz17cGFnaW5hdGlvbk9wdGlvbnN9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGNsYXNzTmFtZSgpIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW1wiYXBpLW1ha2VyLS10YWJsZVwiXVxuXG4gICAgaWYgKHRoaXMucHJvcHMuY2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWVzLnB1c2godGhpcy5wcm9wcy5jbGFzc05hbWUpXG4gICAgfVxuXG4gICAgcmV0dXJuIGNsYXNzTmFtZXMuam9pbihcIiBcIilcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBwZXItY29sdW1uIHByb3BzIGZvciB0YWJsZSBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGNvbHVtblByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLnRleHRBbGlnbiA9IFwiY2VudGVyXCJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICAgICAgcHJvcHMuc3R5bGUgfHw9IHt9XG4gICAgICAgICAgcHJvcHMuc3R5bGUudGV4dEFsaWduID0gXCJyaWdodFwiXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcHNcbiAgICAgIH0sXG4gICAgICBbY29sdW1uLnRleHRDZW50ZXIsIGNvbHVtbi50ZXh0UmlnaHRdXG4gICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHBlci1jb2x1bW4gcHJvcHMgZm9yIGhlYWRlciBjZWxscy5cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbHVtblxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgaGVhZGVyUHJvcHMoY29sdW1uKSB7XG4gICAgbGV0IGNhY2hlS2V5ID0gXCJkZWZhdWx0XCJcblxuICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgY2FjaGVLZXkgPSBcImNlbnRlclwiXG4gICAgfSBlbHNlIGlmIChjb2x1bW4udGV4dFJpZ2h0KSB7XG4gICAgICBjYWNoZUtleSA9IFwicmlnaHRcIlxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmNhY2hlKFxuICAgICAgYGhlYWRlclByb3BzLSR7Y2FjaGVLZXl9YCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB7fVxuXG4gICAgICAgIGlmIChjb2x1bW4udGV4dENlbnRlcikge1xuICAgICAgICAgIHByb3BzLnN0eWxlIHx8PSB7fVxuICAgICAgICAgIHByb3BzLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gXCJjZW50ZXJcIlxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbi50ZXh0UmlnaHQpIHtcbiAgICAgICAgICBwcm9wcy5zdHlsZSB8fD0ge31cbiAgICAgICAgICBwcm9wcy5zdHlsZS5qdXN0aWZ5Q29udGVudCA9IFwiZW5kXCJcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9wc1xuICAgICAgfSxcbiAgICAgIFtjb2x1bW4udGV4dENlbnRlciwgY29sdW1uLnRleHRSaWdodF1cbiAgICApXG4gIH1cblxuICAvKipcbiAgICogQ29sdW1uIHdpZHRocyBrZXllZCBieSBpZGVudGlmaWVyIGZvciB0YWJsZSByb3dzLlxuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgY29sdW1uV2lkdGhzKCkge1xuICAgIGNvbnN0IGNvbHVtbldpZHRocyA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiB0aGlzLnMucHJlcGFyZWRDb2x1bW5zKSB7XG4gICAgICBjb2x1bW5XaWR0aHNbY29sdW1uLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCldID0gY29sdW1uLndpZHRoXG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbHVtbldpZHRoc1xuICB9XG5cbiAgaGVhZGVyc0NvbnRlbnRGcm9tQ29sdW1ucyA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPERyYWdnYWJsZVNvcnRcbiAgICAgICAgYWN0aXZlSXRlbVN0eWxlPXt0aGlzLnR0LmRyYWdnZWRIZWFkZXJTdHlsZSgpfVxuICAgICAgICBkYXRhPXt0aGlzLnMuY29sdW1uc1RvU2hvd31cbiAgICAgICAgZXZlbnRzPXt0aGlzLnR0LmRyYWdnYWJsZVNvcnRFdmVudHN9XG4gICAgICAgIGhvcml6b250YWxcbiAgICAgICAga2V5RXh0cmFjdG9yPXt0aGlzLnR0LmRyYWdMaXN0a2V5RXh0cmFjdG9yfVxuICAgICAgICBvbkl0ZW1Nb3ZlZD17dGhpcy50dC5vbkl0ZW1Nb3ZlZH1cbiAgICAgICAgb25SZW9yZGVyZWQ9e3RoaXMudHQub25SZW9yZGVyZWR9XG4gICAgICAgIHJlbmRlckl0ZW09e3RoaXMudHQuZHJhZ0xpc3RSZW5kZXJJdGVtQ29udGVudH1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgZHJhZ0xpc3RDYWNoZUtleUV4dHJhY3RvciA9IChpdGVtKSA9PiBgJHtpdGVtLnRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCl9LSR7dGhpcy5zLnJlc2l6aW5nfWBcbiAgZHJhZ0xpc3RrZXlFeHRyYWN0b3IgPSAoaXRlbSkgPT4gaXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpXG5cbiAgb25JdGVtTW92ZWQgPSAoe2FuaW1hdGlvbkFyZ3MsIGl0ZW1JbmRleCwgeCwgeX0pID0+IHtcbiAgICBjb25zdCBhbmltYXRlZFBvc2l0aW9uID0gZGlnZyh0aGlzLCBcInNcIiwgXCJjb2x1bW5zVG9TaG93XCIsIGl0ZW1JbmRleCwgXCJhbmltYXRlZFBvc2l0aW9uXCIpXG5cbiAgICBpZiAoYW5pbWF0aW9uQXJncykge1xuICAgICAgQW5pbWF0ZWQudGltaW5nKGFuaW1hdGVkUG9zaXRpb24sIGFuaW1hdGlvbkFyZ3MpLnN0YXJ0KClcbiAgICB9IGVsc2Uge1xuICAgICAgYW5pbWF0ZWRQb3NpdGlvbi5zZXRWYWx1ZSh7eCwgeX0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3QgdGhlIG5ldyBjb2x1bW4gb3JkZXJpbmcuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLmZyb21JdGVtXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzLnRvSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5mcm9tUG9zaXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MudG9Qb3NpdGlvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIG9uUmVvcmRlcmVkID0gYXN5bmMgKHtmcm9tSXRlbSwgZnJvbVBvc2l0aW9uLCB0b0l0ZW0sIHRvUG9zaXRpb259KSA9PiB7XG4gICAgaWYgKGZyb21Qb3NpdGlvbiA9PSB0b1Bvc2l0aW9uKSByZXR1cm4gLy8gT25seSBkbyByZXF1ZXN0cyBhbmQgcXVlcmllcyBpZiBjaGFuZ2VkXG5cbiAgICBjb25zdCBUYWJsZVNldHRpbmdDb2x1bW4gPSBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uY29uc3RydWN0b3JcbiAgICBjb25zdCB0b0NvbHVtbiA9IGF3YWl0IFRhYmxlU2V0dGluZ0NvbHVtbi5maW5kKHRvSXRlbS50YWJsZVNldHRpbmdDb2x1bW4uaWQoKSkgLy8gTmVlZCB0byBsb2FkIGxhdGVzdCBwb3NpdGlvbiBiZWNhdXNlIEFjdHNBc0xpc3QgbWlnaHQgaGF2ZSBjaGFuZ2VkIGl0XG5cbiAgICBhd2FpdCBmcm9tSXRlbS50YWJsZVNldHRpbmdDb2x1bW4udXBkYXRlKHtwb3NpdGlvbjogdG9Db2x1bW4ucG9zaXRpb24oKX0pXG4gIH1cblxuICBkcmFnTGlzdFJlbmRlckl0ZW1Db250ZW50ID0gKHtpc0FjdGl2ZSwgaXRlbSwgdG91Y2hQcm9wc30pID0+IHtcbiAgICBjb25zdCB7YW5pbWF0ZWRXaWR0aCwgYW5pbWF0ZWRaSW5kZXgsIGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSA9IGl0ZW1cblxuICAgIHJldHVybiAoXG4gICAgICA8SGVhZGVyQ29sdW1uXG4gICAgICAgIGFjdGl2ZT17aXNBY3RpdmV9XG4gICAgICAgIGFuaW1hdGVkV2lkdGg9e2FuaW1hdGVkV2lkdGh9XG4gICAgICAgIGFuaW1hdGVkWkluZGV4PXthbmltYXRlZFpJbmRleH1cbiAgICAgICAgY29sdW1uPXtjb2x1bW59XG4gICAgICAgIGtleT17dGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX1cbiAgICAgICAgcmVzaXppbmc9e3RoaXMucy5yZXNpemluZ31cbiAgICAgICAgdGFibGU9e3RoaXN9XG4gICAgICAgIHRhYmxlU2V0dGluZ0NvbHVtbj17dGFibGVTZXR0aW5nQ29sdW1ufVxuICAgICAgICB0b3VjaFByb3BzPXt0b3VjaFByb3BzfVxuICAgICAgICB3aWR0aHM9e3RoaXMucy53aWR0aHN9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIGhlYWRlckNsYXNzTmFtZUZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCBjbGFzc05hbWVzID0gW11cblxuICAgIGlmIChjb2x1bW4uY29tbW9uUHJvcHMgJiYgY29sdW1uLmNvbW1vblByb3BzLmNsYXNzTmFtZSkgY2xhc3NOYW1lcy5wdXNoKGNvbHVtbi5jb21tb25Qcm9wcy5jbGFzc05hbWUpXG4gICAgaWYgKGNvbHVtbi5oZWFkZXJQcm9wcyAmJiBjb2x1bW4uaGVhZGVyUHJvcHMuY2xhc3NOYW1lKSBjbGFzc05hbWVzLnB1c2goY29sdW1uLmhlYWRlclByb3BzLmNsYXNzTmFtZSlcblxuICAgIHJldHVybiBjbGFzc05hbWVzXG4gIH1cblxuICBoZWFkZXJMYWJlbEZvckNvbHVtbihjb2x1bW4pIHtcbiAgICBjb25zdCB7bW9kZWxDbGFzc30gPSB0aGlzLnBcblxuICAgIGlmIChcImxhYmVsXCIgaW4gY29sdW1uKSB7XG4gICAgICBpZiAodHlwZW9mIGNvbHVtbi5sYWJlbCA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbi5sYWJlbCgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29sdW1uLmxhYmVsXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuXG4gICAgLy8gQ2FsY3VsYXRlIGN1cnJlbnQgbW9kZWwgY2xhc3MgdGhyb3VnaCBwYXRoXG4gICAgaWYgKGNvbHVtbi5wYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIGNvbHVtbi5wYXRoKSB7XG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBkaWdnKGN1cnJlbnRNb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCksIFwicmVsYXRpb25zaGlwc1wiKVxuICAgICAgICBjb25zdCByZWxhdGlvbnNoaXAgPSByZWxhdGlvbnNoaXBzLmZpbmQoKHJlbGF0aW9uc2hpcEluQXJyYXkpID0+IHJlbGF0aW9uc2hpcEluQXJyYXkubmFtZSA9PSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGF0aFBhcnQpKVxuXG4gICAgICAgIGN1cnJlbnRNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUoZGlnZyhyZWxhdGlvbnNoaXAsIFwicmVzb3VyY2VfbmFtZVwiKSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29sdW1uLmF0dHJpYnV0ZSkgcmV0dXJuIGN1cnJlbnRNb2RlbENsYXNzLmh1bWFuQXR0cmlidXRlTmFtZShjb2x1bW4uYXR0cmlidXRlKVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gJ2xhYmVsJyBvciAnYXR0cmlidXRlJyB3YXMgZ2l2ZW5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm92aWRlIHN0eWxpbmcgZm9yIGEgZHJhZ2dlZCBoZWFkZXIgaXRlbS5cbiAgICogQHJldHVybnMge29iamVjdHx1bmRlZmluZWR9XG4gICAqL1xuICBkcmFnZ2VkSGVhZGVyU3R5bGUgPSAoKSA9PiB7XG4gICAgaWYgKHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGUgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucC5kcmFnZ2VkSGVhZGVyU3R5bGVcbiAgICBpZiAodGhpcy5wLnN0eWxlVUkpIHJldHVybiB1bmRlZmluZWRcblxuICAgIHJldHVybiBzdHlsZXMuZHJhZ2dlZEhlYWRlclN0eWxlVHJhbnNwYXJlbnQgfHw9IHtiYWNrZ3JvdW5kQ29sb3I6IFwidHJhbnNwYXJlbnRcIn1cbiAgfVxuXG4gIG9uRmlsdGVyRm9ybVN1Ym1pdCA9ICgpID0+IHRoaXMuc3VibWl0RmlsdGVyKClcbiAgb25SZXF1ZXN0Q2xvc2VTZXR0aW5ncyA9ICgpID0+IHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogZmFsc2V9KVxuXG4gIG9uU2V0dGluZ3NDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgIHRoaXMuc2V0U3RhdGUoe3Nob3dTZXR0aW5nczogIXRoaXMucy5zaG93U2V0dGluZ3N9KVxuICB9XG5cbiAgc3VibWl0RmlsdGVyID0gKCkgPT4ge1xuICAgIGNvbnN0IHthcHBIaXN0b3J5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7cXVlcnlRTmFtZX0gPSB0aGlzLnNcbiAgICBjb25zdCBjaGFuZ2VQYXJhbXNQYXJhbXMgPSB7fVxuICAgIGNvbnN0IHFQYXJhbXMgPSB0aGlzLnMuZmlsdGVyRm9ybS5hc09iamVjdCgpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgY29uc3QgZmlsdGVyRm9ybSA9IGRpZ2codGhpcy50dC5maWx0ZXJGb3JtUmVmLCBcImN1cnJlbnRcIilcbiAgICAgIGNvbnN0IG5hdnRpdmVGb3JtUGFyYW1zID0gUGFyYW1zLnNlcmlhbGl6ZUZvcm0oZmlsdGVyRm9ybSlcblxuICAgICAgaW5jb3Jwb3JhdGUocVBhcmFtcywgbmF2dGl2ZUZvcm1QYXJhbXMpXG4gICAgfVxuXG4gICAgY2hhbmdlUGFyYW1zUGFyYW1zW3F1ZXJ5UU5hbWVdID0gSlNPTi5zdHJpbmdpZnkocVBhcmFtcylcblxuICAgIFBhcmFtcy5jaGFuZ2VQYXJhbXMoY2hhbmdlUGFyYW1zUGFyYW1zLCB7YXBwSGlzdG9yeX0pXG4gIH1cblxuICBzdWJtaXRGaWx0ZXJEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMudHQuc3VibWl0RmlsdGVyKVxufSkpXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-plugins-check-all-checkbox.d.ts","sourceRoot":"/src/","sources":["table/worker-plugins-check-all-checkbox.jsx"],"names":[],"mappings":";;;cAcc,OAAO;gBACP,MAAM;mBACN,OAAO;;YAEP,MAAM;;4BAEN,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;;uBAkBrB,MAAM;;YAEN,MAAM;;;aAIN,OAAO;mBACP,OAAO;;
|
|
1
|
+
{"version":3,"file":"worker-plugins-check-all-checkbox.d.ts","sourceRoot":"/src/","sources":["table/worker-plugins-check-all-checkbox.jsx"],"names":[],"mappings":";;;cAcc,OAAO;gBACP,MAAM;mBACN,OAAO;;YAEP,MAAM;;4BAEN,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;;uBAkBrB,MAAM;;YAEN,MAAM;YACN,MAAM;;;aAIN,OAAO;mBACP,OAAO;;kBA5C2B,OAAO;uBAEhC,kBAAkB"}
|
|
@@ -34,6 +34,7 @@ const Checkbox = memo(shapeComponent(/** @augments {ShapeComponent<CheckboxProps
|
|
|
34
34
|
* @property {object} [currentWorkplace]
|
|
35
35
|
* @property {Collection} [query]
|
|
36
36
|
* @property {object} [style]
|
|
37
|
+
* @property {object} [table]
|
|
37
38
|
*/
|
|
38
39
|
/**
|
|
39
40
|
* @typedef {object} State
|
|
@@ -44,7 +45,8 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
44
45
|
static propTypes = propTypesExact({
|
|
45
46
|
currentWorkplace: PropTypes.object,
|
|
46
47
|
query: PropTypes.instanceOf(Collection),
|
|
47
|
-
style: PropTypes.object
|
|
48
|
+
style: PropTypes.object,
|
|
49
|
+
table: PropTypes.object
|
|
48
50
|
});
|
|
49
51
|
state = {
|
|
50
52
|
checked: false,
|
|
@@ -67,8 +69,9 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
67
69
|
}
|
|
68
70
|
async updateAllChecked() {
|
|
69
71
|
const requestId = ++this.updateAllCheckedRequestId;
|
|
70
|
-
const { query, currentWorkplace } = this.props;
|
|
71
|
-
const
|
|
72
|
+
const { query, currentWorkplace, table } = this.props;
|
|
73
|
+
const run = table?.withBlocking ?? ((fn) => fn());
|
|
74
|
+
const queryLinksStatusResult = await run(() => currentWorkplace.queryLinksStatus({ query }));
|
|
72
75
|
if (requestId !== this.updateAllCheckedRequestId)
|
|
73
76
|
return;
|
|
74
77
|
const allChecked = queryLinksStatusResult.all_checked;
|
|
@@ -86,14 +89,15 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
86
89
|
modelClassName = () => this.props.query.modelClass().modelClassData().name;
|
|
87
90
|
onCheckedChanged = async (e) => {
|
|
88
91
|
e.preventDefault();
|
|
89
|
-
const { currentWorkplace, query } = this.props;
|
|
92
|
+
const { currentWorkplace, query, table } = this.props;
|
|
90
93
|
const checkbox = e.target;
|
|
94
|
+
const run = table?.withBlocking ?? ((fn) => fn());
|
|
91
95
|
if (checkbox.checked) {
|
|
92
|
-
await currentWorkplace.addQuery({ query });
|
|
96
|
+
await run(() => currentWorkplace.addQuery({ query }));
|
|
93
97
|
this.setState({ checked: true, indeterminate: false });
|
|
94
98
|
}
|
|
95
99
|
else {
|
|
96
|
-
await currentWorkplace.removeQuery({ query });
|
|
100
|
+
await run(() => currentWorkplace.removeQuery({ query }));
|
|
97
101
|
this.setState({ checked: false, indeterminate: false });
|
|
98
102
|
}
|
|
99
103
|
};
|
|
@@ -108,4 +112,4 @@ export default memo(shapeComponent(/** @augments {ShapeComponent<Props, State>}
|
|
|
108
112
|
}
|
|
109
113
|
};
|
|
110
114
|
}));
|
|
111
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLXBsdWdpbnMtY2hlY2stYWxsLWNoZWNrYm94LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3guanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDdkQsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFBO0FBQzNFLE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFBO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCxxREFBcUQ7QUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywrREFBK0QsQ0FBQyxNQUFNLFFBQVMsU0FBUSxjQUFjO0lBQ3hJLE1BQU07UUFDSixNQUFNLEVBQUMsYUFBYSxFQUFFLEdBQUcsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFckMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNuRCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FDTCxnQkFBTyxHQUFHLEVBQUUsV0FBVyxF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QyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLXVucmVzb2x2ZWQsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tIFwiLi4vY29sbGVjdGlvbi5qc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3NpbXBsZU9iamVjdERpZmZlcmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL2RpZmYtdXRpbHMuanNcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudC5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ2hlY2tib3hQcm9wc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbY2hlY2tlZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtib29sZWFufSBpbmRldGVybWluYXRlXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBbb25DaGFuZ2VdXG4gKiBAcHJvcGVydHkge29iamVjdH0gW3N0eWxlXVxuICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gQ2hlY2tib3hTdGF0ZSAqL1xuY29uc3QgQ2hlY2tib3ggPSBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PENoZWNrYm94UHJvcHMsIENoZWNrYm94U3RhdGU+fSAqLyBjbGFzcyBDaGVja2JveCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpbmRldGVybWluYXRlLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGNoZWNrYm94UmVmID0gdXNlUmVmKHVuZGVmaW5lZClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjaGVja2JveFJlZi5jdXJyZW50LmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlXG4gICAgfSlcblxuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXQgcmVmPXtjaGVja2JveFJlZn0gdHlwZT1cImNoZWNrYm94XCIgey4uLnJlc3RQcm9wc30gLz5cbiAgICApXG4gIH1cbn0pKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFByb3BzXG4gKiBAcHJvcGVydHkge29iamVjdH0gW2N1cnJlbnRXb3JrcGxhY2VdXG4gKiBAcHJvcGVydHkge0NvbGxlY3Rpb259IFtxdWVyeV1cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbc3R5bGVdXG4gKi9cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gU3RhdGVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gY2hlY2tlZFxuICogQHByb3BlcnR5IHtib29sZWFufSBpbmRldGVybWluYXRlXG4gKi9cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoLyoqIEBhdWdtZW50cyB7U2hhcGVDb21wb25lbnQ8UHJvcHMsIFN0YXRlPn0gKi8gY2xhc3MgQXBpTWFrZXJUYWJsZVdvcmtlclBsdWdpbnNDaGVja0FsbENoZWNrYm94IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGN1cnJlbnRXb3JrcGxhY2U6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgcXVlcnk6IFByb3BUeXBlcy5pbnN0YW5jZU9mKENvbGxlY3Rpb24pLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pXG5cbiAgc3RhdGUgPSB7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgaW5kZXRlcm1pbmF0ZTogZmFsc2VcbiAgfVxuXG4gIHVwZGF0ZUFsbENoZWNrZWRSZXF1ZXN0SWQgPSAwXG5cbiAgc2V0dXAoKSB7XG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZUFsbENoZWNrZWQoKVxuICAgIH0sIFtdKVxuXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnByb3BzLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2NyZWF0ZWRcIiwgdGhpcy50dC5vbkxpbmtzQ3JlYXRlZClcbiAgICB1c2VNb2RlbEV2ZW50KHRoaXMucHJvcHMuY3VycmVudFdvcmtwbGFjZSwgXCJ3b3JrcGxhY2VfbGlua3NfZGVzdHJveWVkXCIsIHRoaXMudHQub25MaW5rc0Rlc3Ryb3llZClcbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMpIHtcbiAgICBjb25zdCBwcmV2aW91c1BhcmFtcyA9IHByZXZQcm9wcy5xdWVyeS5wYXJhbXMoKVxuICAgIGNvbnN0IGN1cnJlbnRQYXJhbXMgPSB0aGlzLnByb3BzLnF1ZXJ5LnBhcmFtcygpXG5cbiAgICBpZiAoc2ltcGxlT2JqZWN0RGlmZmVyZW50KHByZXZpb3VzUGFyYW1zLCBjdXJyZW50UGFyYW1zLCB0cnVlKSkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGRhdGVBbGxDaGVja2VkKCkge1xuICAgIGNvbnN0IHJlcXVlc3RJZCA9ICsrdGhpcy51cGRhdGVBbGxDaGVja2VkUmVxdWVzdElkXG4gICAgY29uc3Qge3F1ZXJ5LCBjdXJyZW50V29ya3BsYWNlfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBxdWVyeUxpbmtzU3RhdHVzUmVzdWx0ID0gYXdhaXQgY3VycmVudFdvcmtwbGFjZS5xdWVyeUxpbmtzU3RhdHVzKHtxdWVyeX0pXG5cbiAgICBpZiAocmVxdWVzdElkICE9PSB0aGlzLnVwZGF0ZUFsbENoZWNrZWRSZXF1ZXN0SWQpIHJldHVyblxuXG4gICAgY29uc3QgYWxsQ2hlY2tlZCA9IHF1ZXJ5TGlua3NTdGF0dXNSZXN1bHQuYWxsX2NoZWNrZWRcbiAgICBjb25zdCBzb21lQ2hlY2tlZCA9IHF1ZXJ5TGlua3NTdGF0dXNSZXN1bHQuc29tZV9jaGVja2VkXG5cbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGNoZWNrZWQ6IGFsbENoZWNrZWQsXG4gICAgICBpbmRldGVybWluYXRlOiBzb21lQ2hlY2tlZFxuICAgIH0pXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NsYXNzTmFtZSwgc3R5bGV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtjaGVja2VkLCBpbmRldGVybWluYXRlfSA9IHRoaXMuc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxDaGVja2JveFxuICAgICAgICBjaGVja2VkPXtjaGVja2VkfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJhcGktbWFrZXItLXRhYmxlLS13b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3hcIiwgY2xhc3NOYW1lKX1cbiAgICAgICAgaW5kZXRlcm1pbmF0ZT17aW5kZXRlcm1pbmF0ZX1cbiAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGVja2VkQ2hhbmdlZH1cbiAgICAgICAgc3R5bGU9e3N0eWxlfVxuICAgICAgLz5cbiAgICApXG4gIH1cblxuICBtb2RlbENsYXNzTmFtZSA9ICgpID0+IHRoaXMucHJvcHMucXVlcnkubW9kZWxDbGFzcygpLm1vZGVsQ2xhc3NEYXRhKCkubmFtZVxuXG4gIG9uQ2hlY2tlZENoYW5nZWQgPSBhc3luYyAoZSkgPT4ge1xuICAgIGUucHJldmVudERlZmF1bHQoKVxuXG4gICAgY29uc3Qge2N1cnJlbnRXb3JrcGxhY2UsIHF1ZXJ5fSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0XG5cbiAgICBpZiAoY2hlY2tib3guY2hlY2tlZCkge1xuICAgICAgYXdhaXQgY3VycmVudFdvcmtwbGFjZS5hZGRRdWVyeSh7cXVlcnl9KVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogdHJ1ZSwgaW5kZXRlcm1pbmF0ZTogZmFsc2V9KVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBjdXJyZW50V29ya3BsYWNlLnJlbW92ZVF1ZXJ5KHtxdWVyeX0pXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkOiBmYWxzZSwgaW5kZXRlcm1pbmF0ZTogZmFsc2V9KVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NDcmVhdGVkID0gKHthcmdzfSkgPT4ge1xuICAgIGlmIChhcmdzLnJlc291cmNlX3R5cGVzPy5pbmNsdWRlcyh0aGlzLm1vZGVsQ2xhc3NOYW1lKCkpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUFsbENoZWNrZWQoKVxuICAgIH1cbiAgfVxuXG4gIG9uTGlua3NEZXN0cm95ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MucmVzb3VyY2VfdHlwZXM/LmluY2x1ZGVzKHRoaXMubW9kZWxDbGFzc05hbWUoKSkpIHtcbiAgICAgIHRoaXMudXBkYXRlQWxsQ2hlY2tlZCgpXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLXBsdWdpbnMtY2hlY2stYWxsLWNoZWNrYm94LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ0YWJsZS93b3JrZXItcGx1Z2lucy1jaGVjay1hbGwtY2hlY2tib3guanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxZQUFZO0FBQ1osdURBQXVEO0FBQ3ZELE9BQU8sS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDdkQsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sVUFBVSxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFFLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pGLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHVDQUF1QyxDQUFBO0FBQzNFLE9BQU8sYUFBYSxNQUFNLHVCQUF1QixDQUFBO0FBRWpEOzs7Ozs7O0dBT0c7QUFDSCxxREFBcUQ7QUFDckQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywrREFBK0QsQ0FBQyxNQUFNLFFBQVMsU0FBUSxjQUFjO0lBQ3hJLE1BQU07UUFDSixNQUFNLEVBQUMsYUFBYSxFQUFFLEdBQUcsU0FBUyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFckMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQTtRQUNuRCxDQUFDLENBQUMsQ0FBQTtRQUVGLE9BQU8sQ0FDTCxnQkFBTyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBQyxVQUFVLEtBQUssU0FBUyxHQUFJLENBQzNELENBQUE7SUFDSCxDQUFDO0NBQ0YsQ0FBQyxDQUFDLENBQUE7QUFFSDs7Ozs7O0dBTUc7QUFDSDs7OztHQUlHO0FBQ0gsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLCtDQUErQyxDQUFDLE1BQU0sMENBQTJDLFNBQVEsY0FBYztJQUN4SixNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUNsQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFDdkMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3ZCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtLQUN4QixDQUFDLENBQUE7SUFFRixLQUFLLEdBQUc7UUFDTixPQUFPLEVBQUUsS0FBSztRQUNkLGFBQWEsRUFBRSxLQUFLO0tBQ3JCLENBQUE7SUFFRCx5QkFBeUIsR0FBRyxDQUFDLENBQUE7SUFFN0IsS0FBSztRQUNILE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDWCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN6QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFTixhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQzdGLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLDJCQUEyQixFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUNuRyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBUztRQUMxQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBQy9DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO1FBRS9DLElBQUkscUJBQXFCLENBQUMsY0FBYyxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9ELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGdCQUFnQjtRQUNwQixNQUFNLFNBQVMsR0FBRyxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQTtRQUNsRCxNQUFNLEVBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDbkQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUE7UUFFMUYsSUFBSSxTQUFTLEtBQUssSUFBSSxDQUFDLHlCQUF5QjtZQUFFLE9BQU07UUFFeEQsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFBO1FBQ3JELE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLFlBQVksQ0FBQTtRQUV2RCxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ1osT0FBTyxFQUFFLFVBQVU7WUFDbkIsYUFBYSxFQUFFLFdBQVc7U0FDM0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDckMsTUFBTSxFQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXZDLE9BQU8sQ0FDTCxLQUFDLFFBQVEsSUFDUCxPQUFPLEVBQUUsT0FBTyxFQUNoQixTQUFTLEVBQUUsVUFBVSxDQUFDLHFEQUFxRCxFQUFFLFNBQVMsQ0FBQyxFQUN2RixhQUFhLEVBQUUsYUFBYSxFQUM1QixRQUFRLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUMvQixLQUFLLEVBQUUsS0FBSyxHQUNaLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFBO0lBRTFFLGdCQUFnQixHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7UUFFbEIsTUFBTSxFQUFDLGdCQUFnQixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ25ELE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWpELElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQTtZQUNuRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN0RCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQTtZQUN0RCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQTtRQUN2RCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsY0FBYyxHQUFHLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFO1FBQzFCLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQTtRQUN6QixDQUFDO0lBQ0gsQ0FBQyxDQUFBO0lBRUQsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUU7UUFDNUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLXVucmVzb2x2ZWQsIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tIFwiY2xhc3NuYW1lc1wiXG5pbXBvcnQgQ29sbGVjdGlvbiBmcm9tIFwiLi4vY29sbGVjdGlvbi5qc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQge1NoYXBlQ29tcG9uZW50LCBzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3NpbXBsZU9iamVjdERpZmZlcmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL2RpZmYtdXRpbHMuanNcIlxuaW1wb3J0IHVzZU1vZGVsRXZlbnQgZnJvbSBcIi4uL3VzZS1tb2RlbC1ldmVudC5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gQ2hlY2tib3hQcm9wc1xuICogQHByb3BlcnR5IHtib29sZWFufSBbY2hlY2tlZF1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2xhc3NOYW1lXVxuICogQHByb3BlcnR5IHtib29sZWFufSBpbmRldGVybWluYXRlXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBbb25DaGFuZ2VdXG4gKiBAcHJvcGVydHkge29iamVjdH0gW3N0eWxlXVxuICovXG4vKiogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIG5ldmVyPn0gQ2hlY2tib3hTdGF0ZSAqL1xuY29uc3QgQ2hlY2tib3ggPSBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PENoZWNrYm94UHJvcHMsIENoZWNrYm94U3RhdGU+fSAqLyBjbGFzcyBDaGVja2JveCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtpbmRldGVybWluYXRlLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGNoZWNrYm94UmVmID0gdXNlUmVmKHVuZGVmaW5lZClcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjaGVja2JveFJlZi5jdXJyZW50LmluZGV0ZXJtaW5hdGUgPSBpbmRldGVybWluYXRlXG4gICAgfSlcblxuICAgIHJldHVybiAoXG4gICAgICA8aW5wdXQgcmVmPXtjaGVja2JveFJlZn0gdHlwZT1cImNoZWNrYm94XCIgey4uLnJlc3RQcm9wc30gLz5cbiAgICApXG4gIH1cbn0pKVxuXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFByb3BzXG4gKiBAcHJvcGVydHkge29iamVjdH0gW2N1cnJlbnRXb3JrcGxhY2VdXG4gKiBAcHJvcGVydHkge0NvbGxlY3Rpb259IFtxdWVyeV1cbiAqIEBwcm9wZXJ0eSB7b2JqZWN0fSBbc3R5bGVdXG4gKiBAcHJvcGVydHkge29iamVjdH0gW3RhYmxlXVxuICovXG4vKipcbiAqIEB0eXBlZGVmIHtvYmplY3R9IFN0YXRlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNoZWNrZWRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaW5kZXRlcm1pbmF0ZVxuICovXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KC8qKiBAYXVnbWVudHMge1NoYXBlQ29tcG9uZW50PFByb3BzLCBTdGF0ZT59ICovIGNsYXNzIEFwaU1ha2VyVGFibGVXb3JrZXJQbHVnaW5zQ2hlY2tBbGxDaGVja2JveCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjdXJyZW50V29ya3BsYWNlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHF1ZXJ5OiBQcm9wVHlwZXMuaW5zdGFuY2VPZihDb2xsZWN0aW9uKSxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB0YWJsZTogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHN0YXRlID0ge1xuICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlXG4gIH1cblxuICB1cGRhdGVBbGxDaGVja2VkUmVxdWVzdElkID0gMFxuXG4gIHNldHVwKCkge1xuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9LCBbXSlcblxuICAgIHVzZU1vZGVsRXZlbnQodGhpcy5wcm9wcy5jdXJyZW50V29ya3BsYWNlLCBcIndvcmtwbGFjZV9saW5rc19jcmVhdGVkXCIsIHRoaXMudHQub25MaW5rc0NyZWF0ZWQpXG4gICAgdXNlTW9kZWxFdmVudCh0aGlzLnByb3BzLmN1cnJlbnRXb3JrcGxhY2UsIFwid29ya3BsYWNlX2xpbmtzX2Rlc3Ryb3llZFwiLCB0aGlzLnR0Lm9uTGlua3NEZXN0cm95ZWQpXG4gIH1cblxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XG4gICAgY29uc3QgcHJldmlvdXNQYXJhbXMgPSBwcmV2UHJvcHMucXVlcnkucGFyYW1zKClcbiAgICBjb25zdCBjdXJyZW50UGFyYW1zID0gdGhpcy5wcm9wcy5xdWVyeS5wYXJhbXMoKVxuXG4gICAgaWYgKHNpbXBsZU9iamVjdERpZmZlcmVudChwcmV2aW91c1BhcmFtcywgY3VycmVudFBhcmFtcywgdHJ1ZSkpIHtcbiAgICAgIHRoaXMudXBkYXRlQWxsQ2hlY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlQWxsQ2hlY2tlZCgpIHtcbiAgICBjb25zdCByZXF1ZXN0SWQgPSArK3RoaXMudXBkYXRlQWxsQ2hlY2tlZFJlcXVlc3RJZFxuICAgIGNvbnN0IHtxdWVyeSwgY3VycmVudFdvcmtwbGFjZSwgdGFibGV9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHJ1biA9IHRhYmxlPy53aXRoQmxvY2tpbmcgPz8gKChmbikgPT4gZm4oKSlcbiAgICBjb25zdCBxdWVyeUxpbmtzU3RhdHVzUmVzdWx0ID0gYXdhaXQgcnVuKCgpID0+IGN1cnJlbnRXb3JrcGxhY2UucXVlcnlMaW5rc1N0YXR1cyh7cXVlcnl9KSlcblxuICAgIGlmIChyZXF1ZXN0SWQgIT09IHRoaXMudXBkYXRlQWxsQ2hlY2tlZFJlcXVlc3RJZCkgcmV0dXJuXG5cbiAgICBjb25zdCBhbGxDaGVja2VkID0gcXVlcnlMaW5rc1N0YXR1c1Jlc3VsdC5hbGxfY2hlY2tlZFxuICAgIGNvbnN0IHNvbWVDaGVja2VkID0gcXVlcnlMaW5rc1N0YXR1c1Jlc3VsdC5zb21lX2NoZWNrZWRcblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY2hlY2tlZDogYWxsQ2hlY2tlZCxcbiAgICAgIGluZGV0ZXJtaW5hdGU6IHNvbWVDaGVja2VkXG4gICAgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBzdHlsZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge2NoZWNrZWQsIGluZGV0ZXJtaW5hdGV9ID0gdGhpcy5zXG5cbiAgICByZXR1cm4gKFxuICAgICAgPENoZWNrYm94XG4gICAgICAgIGNoZWNrZWQ9e2NoZWNrZWR9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcImFwaS1tYWtlci0tdGFibGUtLXdvcmtlci1wbHVnaW5zLWNoZWNrLWFsbC1jaGVja2JveFwiLCBjbGFzc05hbWUpfVxuICAgICAgICBpbmRldGVybWluYXRlPXtpbmRldGVybWluYXRlfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5vbkNoZWNrZWRDaGFuZ2VkfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAvPlxuICAgIClcbiAgfVxuXG4gIG1vZGVsQ2xhc3NOYW1lID0gKCkgPT4gdGhpcy5wcm9wcy5xdWVyeS5tb2RlbENsYXNzKCkubW9kZWxDbGFzc0RhdGEoKS5uYW1lXG5cbiAgb25DaGVja2VkQ2hhbmdlZCA9IGFzeW5jIChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICBjb25zdCB7Y3VycmVudFdvcmtwbGFjZSwgcXVlcnksIHRhYmxlfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBjaGVja2JveCA9IGUudGFyZ2V0XG4gICAgY29uc3QgcnVuID0gdGFibGU/LndpdGhCbG9ja2luZyA/PyAoKGZuKSA9PiBmbigpKVxuXG4gICAgaWYgKGNoZWNrYm94LmNoZWNrZWQpIHtcbiAgICAgIGF3YWl0IHJ1bigoKSA9PiBjdXJyZW50V29ya3BsYWNlLmFkZFF1ZXJ5KHtxdWVyeX0pKVxuICAgICAgdGhpcy5zZXRTdGF0ZSh7Y2hlY2tlZDogdHJ1ZSwgaW5kZXRlcm1pbmF0ZTogZmFsc2V9KVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBydW4oKCkgPT4gY3VycmVudFdvcmtwbGFjZS5yZW1vdmVRdWVyeSh7cXVlcnl9KSlcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6IGZhbHNlLCBpbmRldGVybWluYXRlOiBmYWxzZX0pXG4gICAgfVxuICB9XG5cbiAgb25MaW5rc0NyZWF0ZWQgPSAoe2FyZ3N9KSA9PiB7XG4gICAgaWYgKGFyZ3MucmVzb3VyY2VfdHlwZXM/LmluY2x1ZGVzKHRoaXMubW9kZWxDbGFzc05hbWUoKSkpIHtcbiAgICAgIHRoaXMudXBkYXRlQWxsQ2hlY2tlZCgpXG4gICAgfVxuICB9XG5cbiAgb25MaW5rc0Rlc3Ryb3llZCA9ICh7YXJnc30pID0+IHtcbiAgICBpZiAoYXJncy5yZXNvdXJjZV90eXBlcz8uaW5jbHVkZXModGhpcy5tb2RlbENsYXNzTmFtZSgpKSkge1xuICAgICAgdGhpcy51cGRhdGVBbGxDaGVja2VkKClcbiAgICB9XG4gIH1cbn0pKVxuIl19
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaspernj/api-maker",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.2165",
|
|
5
5
|
"description": "My new module",
|
|
6
6
|
"files": [
|
|
7
7
|
"build/**"
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"react-native": "0.79.6",
|
|
97
97
|
"react-native-vector-icons": "^10.3.0",
|
|
98
98
|
"typescript": "~5.8.3",
|
|
99
|
-
"velocious": "^1.0.
|
|
99
|
+
"velocious": "^1.0.343"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
102
|
"expo": "*",
|