@projectcor/maia-components 2.31.1-1 → 2.31.1-2
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/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +8 -4
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +59 -0
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +27 -21
- package/lib/hooks/useChatManager/useChatManager.js +7 -6
- package/lib/hooks/useReasoningTrace/reasoningStore.js +54 -2
- package/lib/store/sessions/sessionStreamManager.js +17 -10
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
4
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
5
|
+
import { findLeadingNarration, hasActionStep, LEADING_NARRATION_INDEX, looksLikeIntermediateNarrationStream, narrationTextsRelated, placeLeadingNarrationFirst } from '../../components/atoms/ReasoningBlock/reasoningLeading';
|
|
5
6
|
import { mapReasoningStep, mapReasoningTrace } from '../../utils/reasoningMappers';
|
|
6
7
|
var EMPTY = {
|
|
7
8
|
id: null,
|
|
@@ -78,6 +79,14 @@ export var reasoningStore = {
|
|
|
78
79
|
var _payload$type;
|
|
79
80
|
var current = ensureStreaming(id);
|
|
80
81
|
var incoming = mapReasoningStep(payload);
|
|
82
|
+
var leading = findLeadingNarration(current.steps);
|
|
83
|
+
|
|
84
|
+
// Narración del back que es la misma que ya anclamos al inicio: no duplicar al final.
|
|
85
|
+
if (incoming.type === 'narration' && leading && narrationTextsRelated(leading.text, incoming.text)) {
|
|
86
|
+
narrationHandoffPending.add(id);
|
|
87
|
+
emitChange();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
81
90
|
var existing = current.steps.find(function (step) {
|
|
82
91
|
return step.i === incoming.i;
|
|
83
92
|
});
|
|
@@ -93,6 +102,46 @@ export var reasoningStore = {
|
|
|
93
102
|
}));
|
|
94
103
|
emitChange();
|
|
95
104
|
},
|
|
105
|
+
/**
|
|
106
|
+
* Tokens antes de la primera acción: se anclan como primer paso. Cuando llega
|
|
107
|
+
* un tool/handoff se congelan para no recogerse detrás de cada step nuevo.
|
|
108
|
+
*/
|
|
109
|
+
syncLiveNarration: function syncLiveNarration(id, text) {
|
|
110
|
+
var current = ensureStreaming(id);
|
|
111
|
+
if (hasActionStep(current.steps)) return;
|
|
112
|
+
var existing = findLeadingNarration(current.steps);
|
|
113
|
+
var trimmed = text.trim();
|
|
114
|
+
if (!trimmed || !looksLikeIntermediateNarrationStream(text)) {
|
|
115
|
+
if (!existing) return;
|
|
116
|
+
snapshots.set(id, _objectSpread(_objectSpread({}, current), {}, {
|
|
117
|
+
steps: current.steps.filter(function (step) {
|
|
118
|
+
return step.i !== LEADING_NARRATION_INDEX;
|
|
119
|
+
}),
|
|
120
|
+
phase: 'streaming'
|
|
121
|
+
}));
|
|
122
|
+
emitChange();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
var step = {
|
|
126
|
+
i: LEADING_NARRATION_INDEX,
|
|
127
|
+
type: 'narration',
|
|
128
|
+
text: text
|
|
129
|
+
};
|
|
130
|
+
snapshots.set(id, _objectSpread(_objectSpread({}, current), {}, {
|
|
131
|
+
steps: upsertStep(current.steps, step),
|
|
132
|
+
phase: 'streaming'
|
|
133
|
+
}));
|
|
134
|
+
emitChange();
|
|
135
|
+
},
|
|
136
|
+
/** El body todavía es solo la narración anclada: se puede limpiar como un answer_reset. */shouldClearStreamForLeading: function shouldClearStreamForLeading(id, accumulated) {
|
|
137
|
+
var current = snapshots.get(id);
|
|
138
|
+
if (!current || !hasActionStep(current.steps)) return false;
|
|
139
|
+
var leading = findLeadingNarration(current.steps);
|
|
140
|
+
if (!(leading !== null && leading !== void 0 && leading.text)) return false;
|
|
141
|
+
var acc = accumulated.trim();
|
|
142
|
+
var lead = leading.text.trim();
|
|
143
|
+
return acc === lead || lead.startsWith(acc);
|
|
144
|
+
},
|
|
96
145
|
/** Tras answer_reset: lo que sigue en el body es respuesta final, no narración en traza. */markAnswerReset: function markAnswerReset(id) {
|
|
97
146
|
if (!narrationHandoffPending["delete"](id)) return;
|
|
98
147
|
emitChange();
|
|
@@ -102,11 +151,14 @@ export var reasoningStore = {
|
|
|
102
151
|
},
|
|
103
152
|
finish: function finish(id, trace) {
|
|
104
153
|
narrationHandoffPending["delete"](id);
|
|
154
|
+
var live = snapshots.get(id);
|
|
105
155
|
var authoritative = mapReasoningTrace(trace);
|
|
106
156
|
if (authoritative) {
|
|
157
|
+
var _live$steps;
|
|
158
|
+
var _steps = placeLeadingNarrationFirst((_live$steps = live === null || live === void 0 ? void 0 : live.steps) !== null && _live$steps !== void 0 ? _live$steps : [], authoritative.steps);
|
|
107
159
|
snapshots.set(id, {
|
|
108
160
|
id: id,
|
|
109
|
-
steps:
|
|
161
|
+
steps: _steps,
|
|
110
162
|
summary: authoritative.summary,
|
|
111
163
|
phase: 'done'
|
|
112
164
|
});
|
|
@@ -167,4 +219,4 @@ export var reasoningStore = {
|
|
|
167
219
|
return EMPTY;
|
|
168
220
|
}
|
|
169
221
|
};
|
|
170
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBSZWFzb25pbmdTdGVwIiwibWFwUmVhc29uaW5nVHJhY2UiLCJFTVBUWSIsImlkIiwic3RlcHMiLCJzdW1tYXJ5IiwicGhhc2UiLCJzbmFwc2hvdHMiLCJNYXAiLCJuYXJyYXRpb25IYW5kb2ZmUGVuZGluZyIsIlNldCIsImxpc3RlbmVycyIsImVtaXRDaGFuZ2UiLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJ1cHNlcnRTdGVwIiwic3RlcCIsImF0IiwiZmluZEluZGV4IiwiY3VycmVudCIsImkiLCJjb25jYXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0IiwiYSIsImIiLCJuZXh0Iiwic2xpY2UiLCJlbnN1cmVTdHJlYW1pbmciLCJleGlzdGluZyIsImdldCIsImNyZWF0ZWQiLCJzZXQiLCJyZWFzb25pbmdTdG9yZSIsInN0YXJ0IiwiYXBwZW5kVGhpbmtpbmciLCJpbmRleCIsImRlbHRhIiwiX2V4aXN0aW5nJHRleHQiLCJmaW5kIiwidHlwZSIsIl9vYmplY3RTcHJlYWQiLCJ0ZXh0IiwiYXBwbHlTdGVwIiwicGF5bG9hZCIsIl9wYXlsb2FkJHR5cGUiLCJpbmNvbWluZyIsImFkZCIsIm1hcmtBbnN3ZXJSZXNldCIsImlzTmFycmF0aW9uSGFuZG9mZlBlbmRpbmciLCJoYXMiLCJmaW5pc2giLCJ0cmFjZSIsImF1dGhvcml0YXRpdmUiLCJtYXAiLCJzdGF0dXMiLCJjbGVhciIsInNpemUiLCJyZW1vdmUiLCJoYWRTbmFwc2hvdCIsImhhZEhhbmRvZmYiLCJyZW5hbWUiLCJmcm9tSWQiLCJ0b0lkIiwic3Vic2NyaWJlIiwiZ2V0U25hcHNob3QiLCJfc25hcHNob3RzJGdldCIsIm1lc3NhZ2VJZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImdldFNlcnZlclNuYXBzaG90Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZVJlYXNvbmluZ1RyYWNlL3JlYXNvbmluZ1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgUmVhc29uaW5nU3RlcCxcbiAgUmVhc29uaW5nU3RlcFBheWxvYWQsXG4gIFJlYXNvbmluZ1N1bW1hcnksXG4gIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCxcbn0gZnJvbSAnLi4vLi4vdHlwZXMvcmVhc29uaW5nJ1xuaW1wb3J0IHsgbWFwUmVhc29uaW5nU3RlcCwgbWFwUmVhc29uaW5nVHJhY2UgfSBmcm9tICcuLi8uLi91dGlscy9yZWFzb25pbmdNYXBwZXJzJ1xuXG5leHBvcnQgdHlwZSBSZWFzb25pbmdQaGFzZSA9ICdpZGxlJyB8ICdzdHJlYW1pbmcnIHwgJ2RvbmUnXG5cbmV4cG9ydCB0eXBlIFJlYXNvbmluZ1NuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nIHwgbnVsbFxuICBzdGVwczogUmVhc29uaW5nU3RlcFtdXG4gIHN1bW1hcnk6IFJlYXNvbmluZ1N1bW1hcnkgfCBudWxsXG4gIHBoYXNlOiBSZWFzb25pbmdQaGFzZVxufVxuXG5jb25zdCBFTVBUWTogUmVhc29uaW5nU25hcHNob3QgPSB7IGlkOiBudWxsLCBzdGVwczogW10sIHN1bW1hcnk6IG51bGwsIHBoYXNlOiAnaWRsZScgfVxuXG5jb25zdCBzbmFwc2hvdHMgPSBuZXcgTWFwPHN0cmluZywgUmVhc29uaW5nU25hcHNob3Q+KClcbi8qKiBFbnRyZSBgcmVhc29uaW5nX3N0ZXBgIG5hcnJhY2nDs24geSBlbCBgYW5zd2VyX3Jlc2V0YCBwb3N0ZXJpb3IuICovXG5jb25zdCBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZyA9IG5ldyBTZXQ8c3RyaW5nPigpXG5jb25zdCBsaXN0ZW5lcnMgPSBuZXcgU2V0PCgpID0+IHZvaWQ+KClcblxuY29uc3QgZW1pdENoYW5nZSA9ICgpID0+IHtcbiAgbGlzdGVuZXJzLmZvckVhY2gobGlzdGVuZXIgPT4ge1xuICAgIGxpc3RlbmVyKClcbiAgfSlcbn1cblxuY29uc3QgdXBzZXJ0U3RlcCA9IChzdGVwczogUmVhc29uaW5nU3RlcFtdLCBzdGVwOiBSZWFzb25pbmdTdGVwKTogUmVhc29uaW5nU3RlcFtdID0+IHtcbiAgY29uc3QgYXQgPSBzdGVwcy5maW5kSW5kZXgoY3VycmVudCA9PiBjdXJyZW50LmkgPT09IHN0ZXAuaSlcbiAgaWYgKGF0ID09PSAtMSkge1xuICAgIHJldHVybiBbLi4uc3RlcHMsIHN0ZXBdLnNvcnQoKGEsIGIpID0+IGEuaSAtIGIuaSlcbiAgfVxuICBjb25zdCBuZXh0ID0gc3RlcHMuc2xpY2UoKVxuICBuZXh0W2F0XSA9IHN0ZXBcbiAgcmV0dXJuIG5leHRcbn1cblxuY29uc3QgZW5zdXJlU3RyZWFtaW5nID0gKGlkOiBzdHJpbmcpOiBSZWFzb25pbmdTbmFwc2hvdCA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gc25hcHNob3RzLmdldChpZClcbiAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3RpbmdcbiAgY29uc3QgY3JlYXRlZDogUmVhc29uaW5nU25hcHNob3QgPSB7IGlkLCBzdGVwczogW10sIHN1bW1hcnk6IG51bGwsIHBoYXNlOiAnc3RyZWFtaW5nJyB9XG4gIHNuYXBzaG90cy5zZXQoaWQsIGNyZWF0ZWQpXG4gIHJldHVybiBjcmVhdGVkXG59XG5cbmV4cG9ydCBjb25zdCByZWFzb25pbmdTdG9yZSA9IHtcbiAgc3RhcnQoaWQ6IHN0cmluZykge1xuICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgaWQsIHN0ZXBzOiBbXSwgc3VtbWFyeTogbnVsbCwgcGhhc2U6ICdzdHJlYW1pbmcnIH0pXG4gICAgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuZGVsZXRlKGlkKVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIGFwcGVuZFRoaW5raW5nKGlkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGRlbHRhOiBzdHJpbmcpIHtcbiAgICBpZiAoIWRlbHRhKSByZXR1cm5cbiAgICBjb25zdCBjdXJyZW50ID0gZW5zdXJlU3RyZWFtaW5nKGlkKVxuICAgIGNvbnN0IGV4aXN0aW5nID0gY3VycmVudC5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5pID09PSBpbmRleClcbiAgICBjb25zdCBzdGVwOiBSZWFzb25pbmdTdGVwID1cbiAgICAgIGV4aXN0aW5nICYmIGV4aXN0aW5nLnR5cGUgPT09ICd0aGlua2luZydcbiAgICAgICAgPyB7IC4uLmV4aXN0aW5nLCB0ZXh0OiBgJHtleGlzdGluZy50ZXh0ID8/ICcnfSR7ZGVsdGF9YCB9XG4gICAgICAgIDogeyBpOiBpbmRleCwgdHlwZTogJ3RoaW5raW5nJywgdGV4dDogZGVsdGEgfVxuICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgLi4uY3VycmVudCwgc3RlcHM6IHVwc2VydFN0ZXAoY3VycmVudC5zdGVwcywgc3RlcCksIHBoYXNlOiAnc3RyZWFtaW5nJyB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIGFwcGx5U3RlcChpZDogc3RyaW5nLCBwYXlsb2FkOiBSZWFzb25pbmdTdGVwUGF5bG9hZCkge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBlbnN1cmVTdHJlYW1pbmcoaWQpXG4gICAgY29uc3QgaW5jb21pbmcgPSBtYXBSZWFzb25pbmdTdGVwKHBheWxvYWQpXG4gICAgY29uc3QgZXhpc3RpbmcgPSBjdXJyZW50LnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmkgPT09IGluY29taW5nLmkpXG4gICAgY29uc3Qgc3RlcCA9IGV4aXN0aW5nID8geyAuLi5leGlzdGluZywgLi4uaW5jb21pbmcsIHR5cGU6IHBheWxvYWQudHlwZSA/PyBleGlzdGluZy50eXBlIH0gOiBpbmNvbWluZ1xuICAgIGlmIChwYXlsb2FkLnR5cGUgPT09ICduYXJyYXRpb24nKSB7XG4gICAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5hZGQoaWQpXG4gICAgfVxuICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgLi4uY3VycmVudCwgc3RlcHM6IHVwc2VydFN0ZXAoY3VycmVudC5zdGVwcywgc3RlcCksIHBoYXNlOiAnc3RyZWFtaW5nJyB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIC8qKiBUcmFzIGFuc3dlcl9yZXNldDogbG8gcXVlIHNpZ3VlIGVuIGVsIGJvZHkgZXMgcmVzcHVlc3RhIGZpbmFsLCBubyBuYXJyYWNpw7NuIGVuIHRyYXphLiAqL1xuICBtYXJrQW5zd2VyUmVzZXQoaWQ6IHN0cmluZykge1xuICAgIGlmICghbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuZGVsZXRlKGlkKSkgcmV0dXJuXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgaXNOYXJyYXRpb25IYW5kb2ZmUGVuZGluZyhpZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLmhhcyhpZClcbiAgfSxcblxuICBmaW5pc2goaWQ6IHN0cmluZywgdHJhY2U6IFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5kZWxldGUoaWQpXG4gICAgY29uc3QgYXV0aG9yaXRhdGl2ZSA9IG1hcFJlYXNvbmluZ1RyYWNlKHRyYWNlKVxuICAgIGlmIChhdXRob3JpdGF0aXZlKSB7XG4gICAgICBzbmFwc2hvdHMuc2V0KGlkLCB7IGlkLCBzdGVwczogYXV0aG9yaXRhdGl2ZS5zdGVwcywgc3VtbWFyeTogYXV0aG9yaXRhdGl2ZS5zdW1tYXJ5LCBwaGFzZTogJ2RvbmUnIH0pXG4gICAgICBlbWl0Q2hhbmdlKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBjdXJyZW50ID0gc25hcHNob3RzLmdldChpZClcbiAgICBpZiAoIWN1cnJlbnQpIHJldHVyblxuICAgIGNvbnN0IHN0ZXBzID0gY3VycmVudC5zdGVwcy5tYXAoc3RlcCA9PiAoc3RlcC5zdGF0dXMgPT09ICdydW5uaW5nJyA/IHsgLi4uc3RlcCwgc3RhdHVzOiAnb2snIGFzIGNvbnN0IH0gOiBzdGVwKSlcbiAgICBzbmFwc2hvdHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIHN0ZXBzLCBzdW1tYXJ5OiBudWxsLCBwaGFzZTogJ2RvbmUnIH0pXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgY2xlYXIoKSB7XG4gICAgaWYgKHNuYXBzaG90cy5zaXplID09PSAwICYmIG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLnNpemUgPT09IDApIHJldHVyblxuICAgIHNuYXBzaG90cy5jbGVhcigpXG4gICAgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuY2xlYXIoKVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaGFkU25hcHNob3QgPSBzbmFwc2hvdHMuZGVsZXRlKGlkKVxuICAgIGNvbnN0IGhhZEhhbmRvZmYgPSBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5kZWxldGUoaWQpXG4gICAgaWYgKGhhZFNuYXBzaG90IHx8IGhhZEhhbmRvZmYpIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIHJlbmFtZShmcm9tSWQ6IHN0cmluZywgdG9JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY3VycmVudCA9IHNuYXBzaG90cy5nZXQoZnJvbUlkKVxuICAgIGlmICghY3VycmVudCkgcmV0dXJuXG4gICAgc25hcHNob3RzLmRlbGV0ZShmcm9tSWQpXG4gICAgc25hcHNob3RzLnNldCh0b0lkLCB7IC4uLmN1cnJlbnQsIGlkOiB0b0lkIH0pXG4gICAgaWYgKG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLmhhcyhmcm9tSWQpKSB7XG4gICAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5kZWxldGUoZnJvbUlkKVxuICAgICAgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuYWRkKHRvSWQpXG4gICAgfVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKCkgPT4gdm9pZCkge1xuICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGxpc3RlbmVycy5kZWxldGUobGlzdGVuZXIpXG4gICAgfVxuICB9LFxuXG4gIGdldFNuYXBzaG90KG1lc3NhZ2VJZCA9ICcnKTogUmVhc29uaW5nU25hcHNob3Qge1xuICAgIGlmICghbWVzc2FnZUlkKSByZXR1cm4gRU1QVFlcbiAgICByZXR1cm4gc25hcHNob3RzLmdldChtZXNzYWdlSWQpID8/IEVNUFRZXG4gIH0sXG5cbiAgZ2V0U2VydmVyU25hcHNob3QoKTogUmVhc29uaW5nU25hcHNob3Qge1xuICAgIHJldHVybiBFTVBUWVxuICB9LFxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBTUEsU0FBU0EsZ0JBQWdCLEVBQUVDLGlCQUFpQixRQUFRLDhCQUE4QjtBQVdsRixJQUFNQyxLQUF3QixHQUFHO0VBQUVDLEVBQUUsRUFBRSxJQUFJO0VBQUVDLEtBQUssRUFBRSxFQUFFO0VBQUVDLE9BQU8sRUFBRSxJQUFJO0VBQUVDLEtBQUssRUFBRTtBQUFPLENBQUM7QUFFdEYsSUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBNEIsQ0FBQztBQUN0RDtBQUNBLElBQU1DLHVCQUF1QixHQUFHLElBQUlDLEdBQUcsQ0FBUyxDQUFDO0FBQ2pELElBQU1DLFNBQVMsR0FBRyxJQUFJRCxHQUFHLENBQWEsQ0FBQztBQUV2QyxJQUFNRSxVQUFVLEdBQUcsU0FBYkEsVUFBVUEsQ0FBQSxFQUFTO0VBQ3ZCRCxTQUFTLENBQUNFLE9BQU8sQ0FBQyxVQUFBQyxRQUFRLEVBQUk7SUFDNUJBLFFBQVEsQ0FBQyxDQUFDO0VBQ1osQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFJWCxLQUFzQixFQUFFWSxJQUFtQixFQUFzQjtFQUNuRixJQUFNQyxFQUFFLEdBQUdiLEtBQUssQ0FBQ2MsU0FBUyxDQUFDLFVBQUFDLE9BQU87SUFBQSxPQUFJQSxPQUFPLENBQUNDLENBQUMsS0FBS0osSUFBSSxDQUFDSSxDQUFDO0VBQUEsRUFBQztFQUMzRCxJQUFJSCxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDYixPQUFPLEdBQUFJLE1BQUEsQ0FBQUMsa0JBQUEsQ0FBSWxCLEtBQUssSUFBRVksSUFBSSxHQUFFTyxJQUFJ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RUFFRDhDLE1BQU0sV0FBTkEsTUFBTUEsQ0FBQ3ZELEVBQVUsRUFBRTtJQUNqQixJQUFNd0QsV0FBVyxHQUFHcEQsU0FBUyxVQUFPLENBQUNKLEVBQUUsQ0FBQztJQUN4QyxJQUFNeUQsVUFBVSxHQUFHbkQsdUJBQXVCLFVBQU8sQ0FBQ04sRUFBRSxDQUFDO0lBQ3JELElBQUl3RCxXQUFXLElBQUlDLFVBQVUsRUFBRWhELFVBQVUsQ0FBQyxDQUFDO0VBQzdDLENBQUM7RUFFRGlELE1BQU0sV0FBTkEsTUFBTUEsQ0FBQ0MsTUFBYyxFQUFFQyxJQUFZLEVBQUU7SUFDbkMsSUFBTTVDLE9BQU8sR0FBR1osU0FBUyxDQUFDdUIsR0FBRyxDQUFDZ0MsTUFBTSxDQUFDO0lBQ3JDLElBQUksQ0FBQzNDLE9BQU8sRUFBRTtJQUNkWixTQUFTLFVBQU8sQ0FBQ3VELE1BQU0sQ0FBQztJQUN4QnZELFNBQVMsQ0FBQ3lCLEdBQUcsQ0FBQytCLElBQUksRUFBQXRCLGFBQUEsQ0FBQUEsYUFBQSxLQUFPdEIsT0FBTztNQUFFaEIsRUFBRSxFQUFFNEQ7SUFBSSxFQUFFLENBQUM7SUFDN0MsSUFBSXRELHVCQUF1QixDQUFDeUMsR0FBRyxDQUFDWSxNQUFNLENBQUMsRUFBRTtNQUN2Q3JELHVCQUF1QixVQUFPLENBQUNxRCxNQUFNLENBQUM7TUFDdENyRCx1QkFBdUIsQ0FBQ3NDLEdBQUcsQ0FBQ2dCLElBQUksQ0FBQztJQUNuQztJQUNBbkQsVUFBVSxDQUFDLENBQUM7RUFDZCxDQUFDO0VBRURvRCxTQUFTLFdBQVRBLFNBQVNBLENBQUNsRCxRQUFvQixFQUFFO0lBQzlCSCxTQUFTLENBQUNvQyxHQUFHLENBQUNqQyxRQUFRLENBQUM7SUFDdkIsT0FBTyxZQUFNO01BQ1hILFNBQVMsVUFBTyxDQUFDRyxRQUFRLENBQUM7SUFDNUIsQ0FBQztFQUNILENBQUM7RUFFRG1ELFdBQVcsV0FBWEEsV0FBV0EsQ0FBQSxFQUFvQztJQUFBLElBQUFDLGNBQUE7SUFBQSxJQUFuQ0MsU0FBUyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxFQUFFO0lBQ3hCLElBQUksQ0FBQ0QsU0FBUyxFQUFFLE9BQU9qRSxLQUFLO0lBQzVCLFFBQUFnRSxjQUFBLEdBQU8zRCxTQUFTLENBQUN1QixHQUFHLENBQUNxQyxTQUFTLENBQUMsY0FBQUQsY0FBQSxjQUFBQSxjQUFBLEdBQUloRSxLQUFLO0VBQzFDLENBQUM7RUFFRHFFLGlCQUFpQixXQUFqQkEsaUJBQWlCQSxDQUFBLEVBQXNCO0lBQ3JDLE9BQU9yRSxLQUFLO0VBQ2Q7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
222
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaW5kTGVhZGluZ05hcnJhdGlvbiIsImhhc0FjdGlvblN0ZXAiLCJMRUFESU5HX05BUlJBVElPTl9JTkRFWCIsImxvb2tzTGlrZUludGVybWVkaWF0ZU5hcnJhdGlvblN0cmVhbSIsIm5hcnJhdGlvblRleHRzUmVsYXRlZCIsInBsYWNlTGVhZGluZ05hcnJhdGlvbkZpcnN0IiwibWFwUmVhc29uaW5nU3RlcCIsIm1hcFJlYXNvbmluZ1RyYWNlIiwiRU1QVFkiLCJpZCIsInN0ZXBzIiwic3VtbWFyeSIsInBoYXNlIiwic25hcHNob3RzIiwiTWFwIiwibmFycmF0aW9uSGFuZG9mZlBlbmRpbmciLCJTZXQiLCJsaXN0ZW5lcnMiLCJlbWl0Q2hhbmdlIiwiZm9yRWFjaCIsImxpc3RlbmVyIiwidXBzZXJ0U3RlcCIsInN0ZXAiLCJhdCIsImZpbmRJbmRleCIsImN1cnJlbnQiLCJpIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImEiLCJiIiwibmV4dCIsInNsaWNlIiwiZW5zdXJlU3RyZWFtaW5nIiwiZXhpc3RpbmciLCJnZXQiLCJjcmVhdGVkIiwic2V0IiwicmVhc29uaW5nU3RvcmUiLCJzdGFydCIsImFwcGVuZFRoaW5raW5nIiwiaW5kZXgiLCJkZWx0YSIsIl9leGlzdGluZyR0ZXh0IiwiZmluZCIsInR5cGUiLCJfb2JqZWN0U3ByZWFkIiwidGV4dCIsImFwcGx5U3RlcCIsInBheWxvYWQiLCJfcGF5bG9hZCR0eXBlIiwiaW5jb21pbmciLCJsZWFkaW5nIiwiYWRkIiwic3luY0xpdmVOYXJyYXRpb24iLCJ0cmltbWVkIiwidHJpbSIsImZpbHRlciIsInNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyIsImFjY3VtdWxhdGVkIiwiYWNjIiwibGVhZCIsInN0YXJ0c1dpdGgiLCJtYXJrQW5zd2VyUmVzZXQiLCJpc05hcnJhdGlvbkhhbmRvZmZQZW5kaW5nIiwiaGFzIiwiZmluaXNoIiwidHJhY2UiLCJsaXZlIiwiYXV0aG9yaXRhdGl2ZSIsIl9saXZlJHN0ZXBzIiwibWFwIiwic3RhdHVzIiwiY2xlYXIiLCJzaXplIiwicmVtb3ZlIiwiaGFkU25hcHNob3QiLCJoYWRIYW5kb2ZmIiwicmVuYW1lIiwiZnJvbUlkIiwidG9JZCIsInN1YnNjcmliZSIsImdldFNuYXBzaG90IiwiX3NuYXBzaG90cyRnZXQiLCJtZXNzYWdlSWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJnZXRTZXJ2ZXJTbmFwc2hvdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VSZWFzb25pbmdUcmFjZS9yZWFzb25pbmdTdG9yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBmaW5kTGVhZGluZ05hcnJhdGlvbixcbiAgaGFzQWN0aW9uU3RlcCxcbiAgTEVBRElOR19OQVJSQVRJT05fSU5ERVgsXG4gIGxvb2tzTGlrZUludGVybWVkaWF0ZU5hcnJhdGlvblN0cmVhbSxcbiAgbmFycmF0aW9uVGV4dHNSZWxhdGVkLFxuICBwbGFjZUxlYWRpbmdOYXJyYXRpb25GaXJzdCxcbn0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9hdG9tcy9SZWFzb25pbmdCbG9jay9yZWFzb25pbmdMZWFkaW5nJ1xuaW1wb3J0IHR5cGUge1xuICBSZWFzb25pbmdTdGVwLFxuICBSZWFzb25pbmdTdGVwUGF5bG9hZCxcbiAgUmVhc29uaW5nU3VtbWFyeSxcbiAgUmVhc29uaW5nVHJhY2VQYXlsb2FkLFxufSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5pbXBvcnQgeyBtYXBSZWFzb25pbmdTdGVwLCBtYXBSZWFzb25pbmdUcmFjZSB9IGZyb20gJy4uLy4uL3V0aWxzL3JlYXNvbmluZ01hcHBlcnMnXG5cbmV4cG9ydCB0eXBlIFJlYXNvbmluZ1BoYXNlID0gJ2lkbGUnIHwgJ3N0cmVhbWluZycgfCAnZG9uZSdcblxuZXhwb3J0IHR5cGUgUmVhc29uaW5nU25hcHNob3QgPSB7XG4gIGlkOiBzdHJpbmcgfCBudWxsXG4gIHN0ZXBzOiBSZWFzb25pbmdTdGVwW11cbiAgc3VtbWFyeTogUmVhc29uaW5nU3VtbWFyeSB8IG51bGxcbiAgcGhhc2U6IFJlYXNvbmluZ1BoYXNlXG59XG5cbmNvbnN0IEVNUFRZOiBSZWFzb25pbmdTbmFwc2hvdCA9IHsgaWQ6IG51bGwsIHN0ZXBzOiBbXSwgc3VtbWFyeTogbnVsbCwgcGhhc2U6ICdpZGxlJyB9XG5cbmNvbnN0IHNuYXBzaG90cyA9IG5ldyBNYXA8c3RyaW5nLCBSZWFzb25pbmdTbmFwc2hvdD4oKVxuLyoqIEVudHJlIGByZWFzb25pbmdfc3RlcGAgbmFycmFjacOzbiB5IGVsIGBhbnN3ZXJfcmVzZXRgIHBvc3Rlcmlvci4gKi9cbmNvbnN0IG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nID0gbmV3IFNldDxzdHJpbmc+KClcbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKVxuXG5jb25zdCBlbWl0Q2hhbmdlID0gKCkgPT4ge1xuICBsaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgbGlzdGVuZXIoKVxuICB9KVxufVxuXG5jb25zdCB1cHNlcnRTdGVwID0gKHN0ZXBzOiBSZWFzb25pbmdTdGVwW10sIHN0ZXA6IFJlYXNvbmluZ1N0ZXApOiBSZWFzb25pbmdTdGVwW10gPT4ge1xuICBjb25zdCBhdCA9IHN0ZXBzLmZpbmRJbmRleChjdXJyZW50ID0+IGN1cnJlbnQuaSA9PT0gc3RlcC5pKVxuICBpZiAoYXQgPT09IC0xKSB7XG4gICAgcmV0dXJuIFsuLi5zdGVwcywgc3RlcF0uc29ydCgoYSwgYikgPT4gYS5pIC0gYi5pKVxuICB9XG4gIGNvbnN0IG5leHQgPSBzdGVwcy5zbGljZSgpXG4gIG5leHRbYXRdID0gc3RlcFxuICByZXR1cm4gbmV4dFxufVxuXG5jb25zdCBlbnN1cmVTdHJlYW1pbmcgPSAoaWQ6IHN0cmluZyk6IFJlYXNvbmluZ1NuYXBzaG90ID0+IHtcbiAgY29uc3QgZXhpc3RpbmcgPSBzbmFwc2hvdHMuZ2V0KGlkKVxuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZ1xuICBjb25zdCBjcmVhdGVkOiBSZWFzb25pbmdTbmFwc2hvdCA9IHsgaWQsIHN0ZXBzOiBbXSwgc3VtbWFyeTogbnVsbCwgcGhhc2U6ICdzdHJlYW1pbmcnIH1cbiAgc25hcHNob3RzLnNldChpZCwgY3JlYXRlZClcbiAgcmV0dXJuIGNyZWF0ZWRcbn1cblxuZXhwb3J0IGNvbnN0IHJlYXNvbmluZ1N0b3JlID0ge1xuICBzdGFydChpZDogc3RyaW5nKSB7XG4gICAgc25hcHNob3RzLnNldChpZCwgeyBpZCwgc3RlcHM6IFtdLCBzdW1tYXJ5OiBudWxsLCBwaGFzZTogJ3N0cmVhbWluZycgfSlcbiAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5kZWxldGUoaWQpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgYXBwZW5kVGhpbmtpbmcoaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlciwgZGVsdGE6IHN0cmluZykge1xuICAgIGlmICghZGVsdGEpIHJldHVyblxuICAgIGNvbnN0IGN1cnJlbnQgPSBlbnN1cmVTdHJlYW1pbmcoaWQpXG4gICAgY29uc3QgZXhpc3RpbmcgPSBjdXJyZW50LnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmkgPT09IGluZGV4KVxuICAgIGNvbnN0IHN0ZXA6IFJlYXNvbmluZ1N0ZXAgPVxuICAgICAgZXhpc3RpbmcgJiYgZXhpc3RpbmcudHlwZSA9PT0gJ3RoaW5raW5nJ1xuICAgICAgICA/IHsgLi4uZXhpc3RpbmcsIHRleHQ6IGAke2V4aXN0aW5nLnRleHQgPz8gJyd9JHtkZWx0YX1gIH1cbiAgICAgICAgOiB7IGk6IGluZGV4LCB0eXBlOiAndGhpbmtpbmcnLCB0ZXh0OiBkZWx0YSB9XG4gICAgc25hcHNob3RzLnNldChpZCwgeyAuLi5jdXJyZW50LCBzdGVwczogdXBzZXJ0U3RlcChjdXJyZW50LnN0ZXBzLCBzdGVwKSwgcGhhc2U6ICdzdHJlYW1pbmcnIH0pXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgYXBwbHlTdGVwKGlkOiBzdHJpbmcsIHBheWxvYWQ6IFJlYXNvbmluZ1N0ZXBQYXlsb2FkKSB7XG4gICAgY29uc3QgY3VycmVudCA9IGVuc3VyZVN0cmVhbWluZyhpZClcbiAgICBjb25zdCBpbmNvbWluZyA9IG1hcFJlYXNvbmluZ1N0ZXAocGF5bG9hZClcbiAgICBjb25zdCBsZWFkaW5nID0gZmluZExlYWRpbmdOYXJyYXRpb24oY3VycmVudC5zdGVwcylcblxuICAgIC8vIE5hcnJhY2nDs24gZGVsIGJhY2sgcXVlIGVzIGxhIG1pc21hIHF1ZSB5YSBhbmNsYW1vcyBhbCBpbmljaW86IG5vIGR1cGxpY2FyIGFsIGZpbmFsLlxuICAgIGlmIChpbmNvbWluZy50eXBlID09PSAnbmFycmF0aW9uJyAmJiBsZWFkaW5nICYmIG5hcnJhdGlvblRleHRzUmVsYXRlZChsZWFkaW5nLnRleHQsIGluY29taW5nLnRleHQpKSB7XG4gICAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5hZGQoaWQpXG4gICAgICBlbWl0Q2hhbmdlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gY3VycmVudC5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5pID09PSBpbmNvbWluZy5pKVxuICAgIGNvbnN0IHN0ZXAgPSBleGlzdGluZyA/IHsgLi4uZXhpc3RpbmcsIC4uLmluY29taW5nLCB0eXBlOiBwYXlsb2FkLnR5cGUgPz8gZXhpc3RpbmcudHlwZSB9IDogaW5jb21pbmdcbiAgICBpZiAocGF5bG9hZC50eXBlID09PSAnbmFycmF0aW9uJykge1xuICAgICAgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuYWRkKGlkKVxuICAgIH1cbiAgICBzbmFwc2hvdHMuc2V0KGlkLCB7IC4uLmN1cnJlbnQsIHN0ZXBzOiB1cHNlcnRTdGVwKGN1cnJlbnQuc3RlcHMsIHN0ZXApLCBwaGFzZTogJ3N0cmVhbWluZycgfSlcbiAgICBlbWl0Q2hhbmdlKClcbiAgfSxcblxuICAvKipcbiAgICogVG9rZW5zIGFudGVzIGRlIGxhIHByaW1lcmEgYWNjacOzbjogc2UgYW5jbGFuIGNvbW8gcHJpbWVyIHBhc28uIEN1YW5kbyBsbGVnYVxuICAgKiB1biB0b29sL2hhbmRvZmYgc2UgY29uZ2VsYW4gcGFyYSBubyByZWNvZ2Vyc2UgZGV0csOhcyBkZSBjYWRhIHN0ZXAgbnVldm8uXG4gICAqL1xuICBzeW5jTGl2ZU5hcnJhdGlvbihpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gZW5zdXJlU3RyZWFtaW5nKGlkKVxuICAgIGlmIChoYXNBY3Rpb25TdGVwKGN1cnJlbnQuc3RlcHMpKSByZXR1cm5cblxuICAgIGNvbnN0IGV4aXN0aW5nID0gZmluZExlYWRpbmdOYXJyYXRpb24oY3VycmVudC5zdGVwcylcbiAgICBjb25zdCB0cmltbWVkID0gdGV4dC50cmltKClcbiAgICBpZiAoIXRyaW1tZWQgfHwgIWxvb2tzTGlrZUludGVybWVkaWF0ZU5hcnJhdGlvblN0cmVhbSh0ZXh0KSkge1xuICAgICAgaWYgKCFleGlzdGluZykgcmV0dXJuXG4gICAgICBzbmFwc2hvdHMuc2V0KGlkLCB7XG4gICAgICAgIC4uLmN1cnJlbnQsXG4gICAgICAgIHN0ZXBzOiBjdXJyZW50LnN0ZXBzLmZpbHRlcihzdGVwID0+IHN0ZXAuaSAhPT0gTEVBRElOR19OQVJSQVRJT05fSU5ERVgpLFxuICAgICAgICBwaGFzZTogJ3N0cmVhbWluZycsXG4gICAgICB9KVxuICAgICAgZW1pdENoYW5nZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzdGVwOiBSZWFzb25pbmdTdGVwID0geyBpOiBMRUFESU5HX05BUlJBVElPTl9JTkRFWCwgdHlwZTogJ25hcnJhdGlvbicsIHRleHQgfVxuICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgLi4uY3VycmVudCwgc3RlcHM6IHVwc2VydFN0ZXAoY3VycmVudC5zdGVwcywgc3RlcCksIHBoYXNlOiAnc3RyZWFtaW5nJyB9KVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIC8qKiBFbCBib2R5IHRvZGF2w61hIGVzIHNvbG8gbGEgbmFycmFjacOzbiBhbmNsYWRhOiBzZSBwdWVkZSBsaW1waWFyIGNvbW8gdW4gYW5zd2VyX3Jlc2V0LiAqL1xuICBzaG91bGRDbGVhclN0cmVhbUZvckxlYWRpbmcoaWQ6IHN0cmluZywgYWNjdW11bGF0ZWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzbmFwc2hvdHMuZ2V0KGlkKVxuICAgIGlmICghY3VycmVudCB8fCAhaGFzQWN0aW9uU3RlcChjdXJyZW50LnN0ZXBzKSkgcmV0dXJuIGZhbHNlXG4gICAgY29uc3QgbGVhZGluZyA9IGZpbmRMZWFkaW5nTmFycmF0aW9uKGN1cnJlbnQuc3RlcHMpXG4gICAgaWYgKCFsZWFkaW5nPy50ZXh0KSByZXR1cm4gZmFsc2VcbiAgICBjb25zdCBhY2MgPSBhY2N1bXVsYXRlZC50cmltKClcbiAgICBjb25zdCBsZWFkID0gbGVhZGluZy50ZXh0LnRyaW0oKVxuICAgIHJldHVybiBhY2MgPT09IGxlYWQgfHwgbGVhZC5zdGFydHNXaXRoKGFjYylcbiAgfSxcblxuICAvKiogVHJhcyBhbnN3ZXJfcmVzZXQ6IGxvIHF1ZSBzaWd1ZSBlbiBlbCBib2R5IGVzIHJlc3B1ZXN0YSBmaW5hbCwgbm8gbmFycmFjacOzbiBlbiB0cmF6YS4gKi9cbiAgbWFya0Fuc3dlclJlc2V0KGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLmRlbGV0ZShpZCkpIHJldHVyblxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuXG4gIGlzTmFycmF0aW9uSGFuZG9mZlBlbmRpbmcoaWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5oYXMoaWQpXG4gIH0sXG5cbiAgZmluaXNoKGlkOiBzdHJpbmcsIHRyYWNlOiBSZWFzb25pbmdUcmFjZVBheWxvYWQgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuZGVsZXRlKGlkKVxuICAgIGNvbnN0IGxpdmUgPSBzbmFwc2hvdHMuZ2V0KGlkKVxuICAgIGNvbnN0IGF1dGhvcml0YXRpdmUgPSBtYXBSZWFzb25pbmdUcmFjZSh0cmFjZSlcbiAgICBpZiAoYXV0aG9yaXRhdGl2ZSkge1xuICAgICAgY29uc3Qgc3RlcHMgPSBwbGFjZUxlYWRpbmdOYXJyYXRpb25GaXJzdChsaXZlPy5zdGVwcyA/PyBbXSwgYXV0aG9yaXRhdGl2ZS5zdGVwcylcbiAgICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgaWQsIHN0ZXBzLCBzdW1tYXJ5OiBhdXRob3JpdGF0aXZlLnN1bW1hcnksIHBoYXNlOiAnZG9uZScgfSlcbiAgICAgIGVtaXRDaGFuZ2UoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnQgPSBzbmFwc2hvdHMuZ2V0KGlkKVxuICAgIGlmICghY3VycmVudCkgcmV0dXJuXG4gICAgY29uc3Qgc3RlcHMgPSBjdXJyZW50LnN0ZXBzLm1hcChzdGVwID0+IChzdGVwLnN0YXR1cyA9PT0gJ3J1bm5pbmcnID8geyAuLi5zdGVwLCBzdGF0dXM6ICdvaycgYXMgY29uc3QgfSA6IHN0ZXApKVxuICAgIHNuYXBzaG90cy5zZXQoaWQsIHsgLi4uY3VycmVudCwgc3RlcHMsIHN1bW1hcnk6IG51bGwsIHBoYXNlOiAnZG9uZScgfSlcbiAgICBlbWl0Q2hhbmdlKClcbiAgfSxcblxuICBjbGVhcigpIHtcbiAgICBpZiAoc25hcHNob3RzLnNpemUgPT09IDAgJiYgbmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuc2l6ZSA9PT0gMCkgcmV0dXJuXG4gICAgc25hcHNob3RzLmNsZWFyKClcbiAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5jbGVhcigpXG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgcmVtb3ZlKGlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBoYWRTbmFwc2hvdCA9IHNuYXBzaG90cy5kZWxldGUoaWQpXG4gICAgY29uc3QgaGFkSGFuZG9mZiA9IG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLmRlbGV0ZShpZClcbiAgICBpZiAoaGFkU25hcHNob3QgfHwgaGFkSGFuZG9mZikgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgcmVuYW1lKGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjdXJyZW50ID0gc25hcHNob3RzLmdldChmcm9tSWQpXG4gICAgaWYgKCFjdXJyZW50KSByZXR1cm5cbiAgICBzbmFwc2hvdHMuZGVsZXRlKGZyb21JZClcbiAgICBzbmFwc2hvdHMuc2V0KHRvSWQsIHsgLi4uY3VycmVudCwgaWQ6IHRvSWQgfSlcbiAgICBpZiAobmFycmF0aW9uSGFuZG9mZlBlbmRpbmcuaGFzKGZyb21JZCkpIHtcbiAgICAgIG5hcnJhdGlvbkhhbmRvZmZQZW5kaW5nLmRlbGV0ZShmcm9tSWQpXG4gICAgICBuYXJyYXRpb25IYW5kb2ZmUGVuZGluZy5hZGQodG9JZClcbiAgICB9XG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcilcbiAgICB9XG4gIH0sXG5cbiAgZ2V0U25hcHNob3QobWVzc2FnZUlkID0gJycpOiBSZWFzb25pbmdTbmFwc2hvdCB7XG4gICAgaWYgKCFtZXNzYWdlSWQpIHJldHVybiBFTVBUWVxuICAgIHJldHVybiBzbmFwc2hvdHMuZ2V0KG1lc3NhZ2VJZCkgPz8gRU1QVFlcbiAgfSxcblxuICBnZXRTZXJ2ZXJTbmFwc2hvdCgpOiBSZWFzb25pbmdTbmFwc2hvdCB7XG4gICAgcmV0dXJuIEVNUFRZXG4gIH0sXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUNFQSxvQkFBb0IsRUFDcEJDLGFBQWEsRUFDYkMsdUJBQXVCLEVBQ3ZCQyxvQ0FBb0MsRUFDcENDLHFCQUFxQixFQUNyQkMsMEJBQTBC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VUFBTyxDQUFDSixFQUFFLENBQUM7SUFDeEMsSUFBTXFFLFVBQVUsR0FBRy9ELHVCQUF1QixVQUFPLENBQUNOLEVBQUUsQ0FBQztJQUNyRCxJQUFJb0UsV0FBVyxJQUFJQyxVQUFVLEVBQUU1RCxVQUFVLENBQUMsQ0FBQztFQUM3QyxDQUFDO0VBRUQ2RCxNQUFNLFdBQU5BLE1BQU1BLENBQUNDLE1BQWMsRUFBRUMsSUFBWSxFQUFFO0lBQ25DLElBQU14RCxPQUFPLEdBQUdaLFNBQVMsQ0FBQ3VCLEdBQUcsQ0FBQzRDLE1BQU0sQ0FBQztJQUNyQyxJQUFJLENBQUN2RCxPQUFPLEVBQUU7SUFDZFosU0FBUyxVQUFPLENBQUNtRSxNQUFNLENBQUM7SUFDeEJuRSxTQUFTLENBQUN5QixHQUFHLENBQUMyQyxJQUFJLEVBQUFsQyxhQUFBLENBQUFBLGFBQUEsS0FBT3RCLE9BQU87TUFBRWhCLEVBQUUsRUFBRXdFO0lBQUksRUFBRSxDQUFDO0lBQzdDLElBQUlsRSx1QkFBdUIsQ0FBQ21ELEdBQUcsQ0FBQ2MsTUFBTSxDQUFDLEVBQUU7TUFDdkNqRSx1QkFBdUIsVUFBTyxDQUFDaUUsTUFBTSxDQUFDO01BQ3RDakUsdUJBQXVCLENBQUN1QyxHQUFHLENBQUMyQixJQUFJLENBQUM7SUFDbkM7SUFDQS9ELFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUVEZ0UsU0FBUyxXQUFUQSxTQUFTQSxDQUFDOUQsUUFBb0IsRUFBRTtJQUM5QkgsU0FBUyxDQUFDcUMsR0FBRyxDQUFDbEMsUUFBUSxDQUFDO0lBQ3ZCLE9BQU8sWUFBTTtNQUNYSCxTQUFTLFVBQU8sQ0FBQ0csUUFBUSxDQUFDO0lBQzVCLENBQUM7RUFDSCxDQUFDO0VBRUQrRCxXQUFXLFdBQVhBLFdBQVdBLENBQUEsRUFBb0M7SUFBQSxJQUFBQyxjQUFBO0lBQUEsSUFBbkNDLFNBQVMsR0FBQUMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsRUFBRTtJQUN4QixJQUFJLENBQUNELFNBQVMsRUFBRSxPQUFPN0UsS0FBSztJQUM1QixRQUFBNEUsY0FBQSxHQUFPdkUsU0FBUyxDQUFDdUIsR0FBRyxDQUFDaUQsU0FBUyxDQUFDLGNBQUFELGNBQUEsY0FBQUEsY0FBQSxHQUFJNUUsS0FBSztFQUMxQyxDQUFDO0VBRURpRixpQkFBaUIsV0FBakJBLGlCQUFpQkEsQ0FBQSxFQUFzQjtJQUNyQyxPQUFPakYsS0FBSztFQUNkO0FBQ0YsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -43,7 +43,7 @@ var getActiveStreamCount = function getActiveStreamCount() {
|
|
|
43
43
|
var parseSessionSSE = /*#__PURE__*/function () {
|
|
44
44
|
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(response, active, params) {
|
|
45
45
|
var _params$hitlExecution, _response$body, _data$error, _data$error2, _callbacks$onError, _data$error3, _data$error4;
|
|
46
|
-
var sessionId, placeholderId, callbacks, t, hitlExecutionContext, pendingContent, throttleTimer, flushToStores, emitThrottled, flushPending, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, data, thinkingDelta, stepTool, stepType, label, chunk, _chunk, _callbacks$onApproval, isPreApproved, _ref3, _t, _t2, _t3;
|
|
46
|
+
var sessionId, placeholderId, callbacks, t, hitlExecutionContext, pendingContent, throttleTimer, flushToStores, emitThrottled, flushPending, reader, decoder, buffer, accumulatedContent, hasStartedWriting, ensureWritingStarted, applyStreamChunk, clearStreamLikeAnswerReset, applyStreamComplete, _yield$reader$read, done, value, lines, _iterator, _step, line, _line$split, _line$split2, eventLine, dataLine, eventType, dataStr, data, thinkingDelta, stepTool, stepType, label, chunk, _chunk, _callbacks$onApproval, isPreApproved, _ref3, _t, _t2, _t3;
|
|
47
47
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
48
48
|
while (1) switch (_context.prev = _context.next) {
|
|
49
49
|
case 0:
|
|
@@ -105,8 +105,19 @@ var parseSessionSSE = /*#__PURE__*/function () {
|
|
|
105
105
|
applyStreamChunk = function applyStreamChunk(chunk) {
|
|
106
106
|
if (!chunk) return;
|
|
107
107
|
accumulatedContent = mergeStreamChunk(accumulatedContent, chunk);
|
|
108
|
+
reasoningStore.syncLiveNarration(placeholderId, accumulatedContent);
|
|
108
109
|
emitThrottled(accumulatedContent);
|
|
109
110
|
};
|
|
111
|
+
clearStreamLikeAnswerReset = function clearStreamLikeAnswerReset() {
|
|
112
|
+
if (throttleTimer != null) {
|
|
113
|
+
window.clearTimeout(throttleTimer);
|
|
114
|
+
throttleTimer = null;
|
|
115
|
+
}
|
|
116
|
+
pendingContent = null;
|
|
117
|
+
accumulatedContent = '';
|
|
118
|
+
flushToStores('');
|
|
119
|
+
reasoningStore.markAnswerReset(placeholderId);
|
|
120
|
+
};
|
|
110
121
|
applyStreamComplete = function applyStreamComplete(payload) {
|
|
111
122
|
var _payload$agent_id, _subagentRaw$resolved, _ref2, _callbacks$onFinishSt;
|
|
112
123
|
var finalContent = payload.content || accumulatedContent;
|
|
@@ -235,14 +246,7 @@ var parseSessionSSE = /*#__PURE__*/function () {
|
|
|
235
246
|
}
|
|
236
247
|
return _context.abrupt("continue", 23);
|
|
237
248
|
case 14:
|
|
238
|
-
|
|
239
|
-
window.clearTimeout(throttleTimer);
|
|
240
|
-
throttleTimer = null;
|
|
241
|
-
}
|
|
242
|
-
pendingContent = null;
|
|
243
|
-
accumulatedContent = '';
|
|
244
|
-
flushToStores('');
|
|
245
|
-
reasoningStore.markAnswerReset(placeholderId);
|
|
249
|
+
clearStreamLikeAnswerReset();
|
|
246
250
|
return _context.abrupt("continue", 23);
|
|
247
251
|
case 15:
|
|
248
252
|
stepTool = typeof data.tool === 'string' ? data.tool : '';
|
|
@@ -261,6 +265,9 @@ var parseSessionSSE = /*#__PURE__*/function () {
|
|
|
261
265
|
}
|
|
262
266
|
if (typeof data.i === 'number') {
|
|
263
267
|
reasoningStore.applyStep(placeholderId, data);
|
|
268
|
+
if (reasoningStore.shouldClearStreamForLeading(placeholderId, accumulatedContent)) {
|
|
269
|
+
clearStreamLikeAnswerReset();
|
|
270
|
+
}
|
|
264
271
|
}
|
|
265
272
|
return _context.abrupt("continue", 23);
|
|
266
273
|
case 16:
|
|
@@ -760,4 +767,4 @@ export var sessionStreamManager = {
|
|
|
760
767
|
});
|
|
761
768
|
}
|
|
762
769
|
};
|
|
763
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiYXBwbHlTdHJlYW1Db21wbGV0ZSIsIl95aWVsZCRyZWFkZXIkcmVhZCIsImRvbmUiLCJ2YWx1ZSIsImxpbmVzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJsaW5lIiwiX2xpbmUkc3BsaXQiLCJfbGluZSRzcGxpdDIiLCJldmVudExpbmUiLCJkYXRhTGluZSIsImV2ZW50VHlwZSIsImRhdGFTdHIiLCJkYXRhIiwidGhpbmtpbmdEZWx0YSIsInN0ZXBUb29sIiwic3RlcFR5cGUiLCJsYWJlbCIsImNodW5rIiwiX2NodW5rIiwiX2NhbGxiYWNrcyRvbkFwcHJvdmFsIiwiaXNQcmVBcHByb3ZlZCIsIl9yZWYzIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImdldCIsImNvbnRlbnQiLCJfY2FsbGJhY2tzJG9uU3RyZWFtVXAiLCJzZXRUZXh0Iiwib25TdHJlYW1VcGRhdGUiLCJjYWxsIiwid2luZG93Iiwic2V0VGltZW91dCIsInRvRW1pdCIsImNsZWFyVGltZW91dCIsImJvZHkiLCJnZXRSZWFkZXIiLCJFcnJvciIsIlRleHREZWNvZGVyIiwiX2NhbGxiYWNrcyRvblN0YXJ0V3JpIiwicGF0Y2hNZXRhIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwic2V0U3RhdHVzIiwic2V0QWN0aXZpdHkiLCJvblN0YXJ0V3JpdGluZyIsInBheWxvYWQiLCJfcGF5bG9hZCRhZ2VudF9pZCIsIl9zdWJhZ2VudFJhdyRyZXNvbHZlZCIsIl9yZWYyIiwiX2NhbGxiYWNrcyRvbkZpbmlzaFN0IiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwiYXR0YWNobWVudHMiLCJBcnJheSIsImlzQXJyYXkiLCJzdWdnZXN0aW9ucyIsInN1Z2dlc3RfcmVwbHkiLCJhZ2VudElkUmF3IiwiYWdlbnRfaWQiLCJhZ2VudElkIiwiY29tcGxldGVkQWdlbnRJZCIsIlN0cmluZyIsInRyaW0iLCJzdWJhZ2VudFJhdyIsInN1YmFnZW50IiwicmVzb2x2ZWRDb250ZXh0IiwicmVzb2x2ZWRfY29udGV4dCIsInJlYXNvbmluZyIsImZpbmlzaCIsImZpbmlzaFBheWxvYWQiLCJvbkZpbmlzaFN0cmVhbSIsImlzU3RvcHBlZCIsImNhbmNlbCIsImFicnVwdCIsInJlYWQiLCJzZW50IiwiZGVjb2RlIiwic3RyZWFtIiwic3BsaXQiLCJwb3AiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInMiLCJuIiwiX3NsaWNlZFRvQXJyYXkiLCJyZXBsYWNlIiwiSlNPTiIsInBhcnNlIiwiZGVsdGEiLCJpIiwiYXBwZW5kVGhpbmtpbmciLCJwaGFzZSIsIm1lc3NhZ2UiLCJtYXJrQW5zd2VyUmVzZXQiLCJ0b29sIiwidHlwZSIsInN0YXR1cyIsImFwcGx5U3RlcCIsIm5vZGUiLCJ1bmRlZmluZWQiLCJ0aHJlYWRfaWQiLCJtYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQiLCJhdXRvX2FwcHJvdmVkIiwiYXBwcm92YWxfc3RhdHVzIiwiY2xlYXIiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJwZW5kaW5nX2FjdGlvbnMiLCJsZW5ndGgiLCJjb25zb2xlIiwiZXJyb3IiLCJzZXRFcnJvciIsIm9uRXJyb3IiLCJ3YXJuIiwiZSIsImYiLCJzdG9wIiwiX3giLCJfeDIiLCJfeDMiLCJhcHBseSIsImFyZ3VtZW50cyIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwiaXNBY3RpdmUiLCJnZXRBY3RpdmVDb3VudCIsImdldEFjdGl2ZVNlc3Npb25JZHMiLCJmcm9tIiwia2V5cyIsInN0YXJ0U3RyZWFtIiwiX2NhbGxlZTIiLCJyZXF1ZXN0IiwiYWN0aXZpdHlPcHRpb25zIiwiYWdlbnROYW1lIiwiY29udHJvbGxlciIsIl9jYWxsYmFja3Mkb25FcnJvcjIiLCJfdDQiLCJfY29udGV4dDIiLCJzdGFydGVkIiwicmVhc29uIiwiQWJvcnRDb250cm9sbGVyIiwic2V0IiwiZW5zdXJlU2Vzc2lvbiIsIl9vYmplY3RTcHJlYWQiLCJzdGFydCIsIk9yY2hlc3RyYXRvciIsIm9yY2hlc3RyYXRvciIsInNpZ25hbCIsInN0YXJ0Q29udGludWVTdHJlYW0iLCJfY2FsbGVlMyIsIl9yZWY0IiwiY29udGludWVSZXF1ZXN0Iiwic3NlUGFyYW1zIiwiX2NhbGxiYWNrcyRvbkVycm9yMyIsIl90NSIsIl9jb250ZXh0MyIsImNvbnRpbnVlVGhyZWFkIiwib2siLCJjb25jYXQiLCJzdGFydFJldHJ5U3RyZWFtIiwiX2NhbGxlZTQiLCJyZXRyeVJlcXVlc3QiLCJkZXRhaWwiLCJfY2FsbGJhY2tzJG9uRXJyb3I0IiwiX3Q2IiwiX3Q3IiwiX2NvbnRleHQ0IiwicmV0cnlDb21wbGV0aW9uIiwianNvbiIsInN0b3BTdHJlYW0iLCJfY2FsbGJhY2tzJG9uU3RvcCIsImFib3J0IiwicGFydGlhbFRleHQiLCJnZXRTbmFwc2hvdCIsInRleHQiLCJvblN0b3AiLCJhYm9ydFNpbGVudGx5IiwiX3N0b3JlJGdldE1ldGEiLCJnZXRNZXRhIiwiYWJvcnRBbGwiLCJfdGhpcyIsImZvckVhY2giXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvblN0cmVhbU1hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWF3YWl0LWluLWxvb3AgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zdGFudC1jb25kaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQge1xuICBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHksXG4gIGdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UsXG4gIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlVG9vbEFjdGlvbkxhYmVsLFxufSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHR5cGUgeyBIaXRsRXhlY3V0aW9uQ29udGV4dCB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmVhbUFjdGl2aXR5TWVzc2FnZXMnXG5pbXBvcnQgeyBpc0NvbXBsZXRlTGlrZVNzZVBheWxvYWQsIG1lcmdlU3RyZWFtQ2h1bmsgfSBmcm9tICcuLi8uLi91dGlscy9zc2VTdHJlYW1Db250ZW50J1xuaW1wb3J0IHsgcmVhc29uaW5nU3RvcmUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VSZWFzb25pbmdUcmFjZSdcbmltcG9ydCB0eXBlIHsgUmVhc29uaW5nU3RlcFBheWxvYWQsIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB9IGZyb20gJy4uLy4uL3R5cGVzL3JlYXNvbmluZydcbmltcG9ydCB7IHNlc3Npb25TdHJlYW1pbmdUZXh0IH0gZnJvbSAnLi9zZXNzaW9uU3RyZWFtaW5nVGV4dCdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkIH0gZnJvbSAnLi9zZXNzaW9uTm90aWZpY2F0aW9ucydcbmltcG9ydCB7IHNlc3Npb25IaXRsQ29udGV4dCB9IGZyb20gJy4vc2Vzc2lvbkhpdGxDb250ZXh0J1xuaW1wb3J0IHR5cGUgeyBTZXNzaW9uRmluaXNoUGF5bG9hZCwgU2Vzc2lvblN0cmVhbUNhbGxiYWNrcywgU3RhcnRTdHJlYW1SZXN1bHQgfSBmcm9tICcuL3Nlc3Npb25zLnR5cGVzJ1xuXG50eXBlIE9yY2hlc3RyYXRvclJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5vcmNoZXN0cmF0b3I+WzBdXG50eXBlIENvbnRpbnVlVGhyZWFkUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkPlswXVxudHlwZSBSZXRyeUNvbXBsZXRpb25SZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3IucmV0cnlDb21wbGV0aW9uPlswXVxuXG4vKiogQ29tcGF0aWJsZSBjb24gZWwgYHRgIGRlIGkxOG5leHQgKHVzbyBkZSB1bmEgc29sYSBrZXkpLiAqL1xudHlwZSBUcmFuc2xhdGVGbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nXG5cbnR5cGUgU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICByZXF1ZXN0OiBPcmNoZXN0cmF0b3JSZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBhY3Rpdml0eU9wdGlvbnM/OiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuICBoaXRsRXhlY3V0aW9uQ29udGV4dD86IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbFxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMgPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIHBsYWNlaG9sZGVySWQ6IHN0cmluZ1xuICBjb250aW51ZVJlcXVlc3Q6IENvbnRpbnVlVGhyZWFkUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydFJldHJ5U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmV0cnlSZXF1ZXN0OiBSZXRyeUNvbXBsZXRpb25SZXF1ZXN0XG4gIGNhbGxiYWNrczogU2Vzc2lvblN0cmVhbUNhbGxiYWNrc1xuICB0OiBUcmFuc2xhdGVGblxuICBhY3Rpdml0eU9wdGlvbnM/OiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuICBhZ2VudElkPzogc3RyaW5nIHwgbnVtYmVyXG4gIGFnZW50TmFtZT86IHN0cmluZ1xufVxuXG50eXBlIEFjdGl2ZVN0cmVhbSA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgY29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyXG4gIGlzU3RvcHBlZDogYm9vbGVhblxufVxuXG4vKipcbiAqIE3DoXhpbW8gZGUgc2VzaW9uZXMgZ2VuZXJhbmRvIGVuIHBhcmFsZWxvLiBQcm90ZWdlIHJlZC9yZWN1cnNvcyBkZWwgY2xpZW50ZS5cbiAqIEFqdXN0YWJsZSBhIGZ1dHVybyB2w61hIGZsYWcgZGVsIGhvc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TID0gNFxuXG5jb25zdCBTVFJFQU1fVEhST1RUTEVfTVMgPSAxNlxuXG5jb25zdCBhY3RpdmVTdHJlYW1zID0gbmV3IE1hcDxzdHJpbmcsIEFjdGl2ZVN0cmVhbT4oKVxuXG5jb25zdCBzdG9yZSA9ICgpID0+IHVzZVNlc3Npb25zU3RvcmUuZ2V0U3RhdGUoKVxuXG5jb25zdCBpc1N0cmVhbUFjdGl2ZSA9IChzZXNzaW9uSWQ6IHN0cmluZyk6IGJvb2xlYW4gPT4gYWN0aXZlU3RyZWFtcy5oYXMoc2Vzc2lvbklkKVxuXG5jb25zdCBnZXRBY3RpdmVTdHJlYW1Db3VudCA9ICgpOiBudW1iZXIgPT4gYWN0aXZlU3RyZWFtcy5zaXplXG5cbmNvbnN0IHBhcnNlU2Vzc2lvblNTRSA9IGFzeW5jIChyZXNwb25zZTogUmVzcG9uc2UsIGFjdGl2ZTogQWN0aXZlU3RyZWFtLCBwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjYWxsYmFja3MsIHQgfSA9IHBhcmFtc1xuICBjb25zdCBoaXRsRXhlY3V0aW9uQ29udGV4dCA9IHBhcmFtcy5oaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZClcblxuICBsZXQgcGVuZGluZ0NvbnRlbnQ6IHN0cmluZyB8IG51bGwgPSBudWxsXG4gIGxldCB0aHJvdHRsZVRpbWVyOiBudW1iZXIgfCBudWxsID0gbnVsbFxuXG4gIGNvbnN0IGZsdXNoVG9TdG9yZXMgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc2V0VGV4dChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIGNvbnRlbnQpXG4gICAgY2FsbGJhY2tzLm9uU3RyZWFtVXBkYXRlPy4oY29udGVudClcbiAgfVxuXG4gIGNvbnN0IGVtaXRUaHJvdHRsZWQgPSAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgcGVuZGluZ0NvbnRlbnQgPSBjb250ZW50XG4gICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkgcmV0dXJuXG4gICAgdGhyb3R0bGVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgICBwZW5kaW5nQ29udGVudCA9IG51bGxcbiAgICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgICB9XG4gICAgfSwgU1RSRUFNX1RIUk9UVExFX01TKVxuICB9XG5cbiAgY29uc3QgZmx1c2hQZW5kaW5nID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIGlmIChwZW5kaW5nQ29udGVudCAhPSBudWxsKSB7XG4gICAgICBjb25zdCB0b0VtaXQgPSBwZW5kaW5nQ29udGVudFxuICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICBmbHVzaFRvU3RvcmVzKHRvRW1pdClcbiAgICB9XG4gIH1cblxuICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5Py5nZXRSZWFkZXIoKVxuICBpZiAoIXJlYWRlcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVhZGVyIGF2YWlsYWJsZScpXG4gIH1cblxuICBjb25zdCBkZWNvZGVyID0gbmV3IFRleHREZWNvZGVyKClcbiAgbGV0IGJ1ZmZlciA9ICcnXG4gIGxldCBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICBsZXQgaGFzU3RhcnRlZFdyaXRpbmcgPSBmYWxzZVxuXG4gIGNvbnN0IGVuc3VyZVdyaXRpbmdTdGFydGVkID0gKCkgPT4ge1xuICAgIGlmIChoYXNTdGFydGVkV3JpdGluZykgcmV0dXJuXG4gICAgaGFzU3RhcnRlZFdyaXRpbmcgPSB0cnVlXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSwgaXNXcml0aW5nOiB0cnVlIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnd3JpdGluZycpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSh0KSlcbiAgICBjYWxsYmFja3Mub25TdGFydFdyaXRpbmc/LigpXG4gIH1cblxuICBjb25zdCBhcHBseVN0cmVhbUNodW5rID0gKGNodW5rOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIWNodW5rKSByZXR1cm5cbiAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSBtZXJnZVN0cmVhbUNodW5rKGFjY3VtdWxhdGVkQ29udGVudCwgY2h1bmspXG4gICAgZW1pdFRocm90dGxlZChhY2N1bXVsYXRlZENvbnRlbnQpXG4gIH1cblxuICBjb25zdCBhcHBseVN0cmVhbUNvbXBsZXRlID0gKHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB7XG4gICAgY29uc3QgZmluYWxDb250ZW50ID0gKHBheWxvYWQuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgIGNvbnN0IHNvdXJjZXMgPSBwYXlsb2FkLnNvdXJjZXMgfHwgbnVsbFxuICAgIGNvbnN0IG1lbW9yeVNlc3Npb25JZCA9IChwYXlsb2FkLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICBjb25zdCBhdHRhY2htZW50cyA9IEFycmF5LmlzQXJyYXkocGF5bG9hZC5hdHRhY2htZW50cykgPyBwYXlsb2FkLmF0dGFjaG1lbnRzIDogbnVsbFxuICAgIGxldCBzdWdnZXN0aW9uczogc3RyaW5nW10gfCBudWxsID0gbnVsbFxuICAgIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdF9yZXBseSkpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0X3JlcGx5IGFzIHN0cmluZ1tdXG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHBheWxvYWQuc3VnZ2VzdGlvbnMpKSB7XG4gICAgICBzdWdnZXN0aW9ucyA9IHBheWxvYWQuc3VnZ2VzdGlvbnMgYXMgc3RyaW5nW11cbiAgICB9XG4gICAgY29uc3QgYWdlbnRJZFJhdyA9IHBheWxvYWQuYWdlbnRfaWQgPz8gcGF5bG9hZC5hZ2VudElkXG4gICAgY29uc3QgY29tcGxldGVkQWdlbnRJZCA9IGFnZW50SWRSYXcgIT0gbnVsbCAmJiBTdHJpbmcoYWdlbnRJZFJhdykudHJpbSgpICE9PSAnJyA/IFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgOiBudWxsXG4gICAgY29uc3Qgc3ViYWdlbnRSYXcgPSBwYXlsb2FkLnN1YmFnZW50IGFzIHsgcmVzb2x2ZWRfY29udGV4dD86IHVua25vd24gfSB8IG51bGwgfCB1bmRlZmluZWRcbiAgICBjb25zdCByZXNvbHZlZENvbnRleHQgPSBzdWJhZ2VudFJhdz8ucmVzb2x2ZWRfY29udGV4dCA/PyBudWxsXG4gICAgY29uc3QgcmVhc29uaW5nID0gKHBheWxvYWQucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGxcblxuICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCByZWFzb25pbmcpXG4gICAgZmx1c2hQZW5kaW5nKClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2NvbXBsZXRlJylcblxuICAgIGNvbnN0IGZpbmlzaFBheWxvYWQ6IFNlc3Npb25GaW5pc2hQYXlsb2FkID0ge1xuICAgICAgY29udGVudDogZmluYWxDb250ZW50LFxuICAgICAgc291cmNlcyxcbiAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIGF0dGFjaG1lbnRzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBjb21wbGV0ZWRBZ2VudElkLFxuICAgICAgcmVzb2x2ZWRDb250ZXh0LFxuICAgICAgcmVhc29uaW5nLFxuICAgIH1cbiAgICBjYWxsYmFja3Mub25GaW5pc2hTdHJlYW0/LihmaW5pc2hQYXlsb2FkKVxuXG4gICAgLy8gRWwgdGV4dG8gZW4gdml2byBOTyBzZSBsaW1waWEgYWPDoSBhIHByb3DDs3NpdG8uIEVsIHBsYWNlaG9sZGVyIHNlIHZhIGNvbiBlbFxuICAgIC8vIGBkcm9wYCBxdWUgaGFjZSBlbCBjb25zdW1pZG9yLCB5IGNvbiDDqWwgc3Ugc3VzY3JpcGNpw7NuOyB2YWNpYXJsbyBhbnRlcyBsb1xuICAgIC8vIGRlamFiYSBtb250YWRvIHkgc2luIHRleHRvIChhbHR1cmEgMCkgZHVyYW50ZSB+MjVtczogZWwgZmxpY2tlciBkZSBmaW4gZGVcbiAgICAvLyBzdHJlYW0uIE5vIGFsY2FuemEgY29uIGRpZmVyaXJsbywgcG9ycXVlIGVzdGUgY2xlYXIgdmlhamEgZW4gU3luY0xhbmVcbiAgICAvLyAoc3RvcmUgZXh0ZXJubykgeSBlbCBzd2FwIGRlIG1lbnNhamVzIGVuIERlZmF1bHRMYW5lLCBhc8OtIHF1ZSBzaWVtcHJlIHNlXG4gICAgLy8gY3VlbGEgZW4gZWwgbWVkaW8uIEVsIHNsb3Qgc2UgbGliZXJhIGVuIGVsIHByw7N4aW1vIGBzdGFydCgpYCBkZSBsYSBzZXNpw7NuLFxuICAgIC8vIHkgZW4gc3RvcC9lcnJvci9hcHByb3ZhbC9jYW1iaW8gZGUgc2VzacOzbiwgcXVlIHPDrSBsbGFtYW4gYGNsZWFyYC5cbiAgfVxuXG4gIHRyeSB7XG4gICAgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHJlYWRlci5jYW5jZWwoKVxuICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgICBpZiAoZG9uZSkgYnJlYWtcblxuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgICAgYnVmZmVyID0gbGluZXMucG9wKCkgfHwgJydcblxuICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgIGlmIChsaW5lLnRyaW0oKSA9PT0gJycpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgW2V2ZW50TGluZSwgZGF0YUxpbmVdID0gbGluZS5zcGxpdCgnXFxuJylcbiAgICAgICAgaWYgKCFldmVudExpbmUgfHwgIWRhdGFMaW5lKSBjb250aW51ZVxuXG4gICAgICAgIGNvbnN0IGV2ZW50VHlwZSA9IGV2ZW50TGluZS5yZXBsYWNlKCdldmVudDogJywgJycpLnRyaW0oKVxuICAgICAgICBjb25zdCBkYXRhU3RyID0gZGF0YUxpbmUucmVwbGFjZSgnZGF0YTogJywgJycpLnRyaW0oKVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVN0cilcblxuICAgICAgICAgIHN3aXRjaCAoZXZlbnRUeXBlKSB7XG4gICAgICAgICAgICBjYXNlICd0aGlua2luZyc6IHtcbiAgICAgICAgICAgICAgY29uc3QgdGhpbmtpbmdEZWx0YSA9IHR5cGVvZiBkYXRhLmRlbHRhID09PSAnc3RyaW5nJyA/IGRhdGEuZGVsdGEgOiAnJ1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuaSA9PT0gJ251bWJlcicgJiYgdGhpbmtpbmdEZWx0YSkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmFwcGVuZFRoaW5raW5nKHBsYWNlaG9sZGVySWQsIGRhdGEuaSwgdGhpbmtpbmdEZWx0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIWhhc1N0YXJ0ZWRXcml0aW5nKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgeyBwaGFzZTogJ3RoaW5raW5nJywgbWVzc2FnZTogZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSgwLCB0KSB9KVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEVsIGJhY2tlbmQgZGVzY2FydGEgbG8gZW1pdGlkbyB5IHJlaW5pY2lhIGxhIHJlc3B1ZXN0YSBkZXNkZSBjZXJvLlxuICAgICAgICAgICAgY2FzZSAnYW5zd2VyX3Jlc2V0JzpcbiAgICAgICAgICAgICAgaWYgKHRocm90dGxlVGltZXIgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgICAgICAgICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgICAgICAgICBhY2N1bXVsYXRlZENvbnRlbnQgPSAnJ1xuICAgICAgICAgICAgICBmbHVzaFRvU3RvcmVzKCcnKVxuICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5tYXJrQW5zd2VyUmVzZXQocGxhY2Vob2xkZXJJZClcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAncmVhc29uaW5nX3N0ZXAnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHN0ZXBUb29sID0gdHlwZW9mIGRhdGEudG9vbCA9PT0gJ3N0cmluZycgPyBkYXRhLnRvb2wgOiAnJ1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVHlwZSA9IHR5cGVvZiBkYXRhLnR5cGUgPT09ICdzdHJpbmcnID8gZGF0YS50eXBlIDogJydcbiAgICAgICAgICAgICAgaWYgKHN0ZXBUb29sICYmIHN0ZXBUeXBlICE9PSAnaGFuZG9mZicgJiYgZGF0YS5zdGF0dXMgPT09ICdydW5uaW5nJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbChzdGVwVG9vbCwgdCwgJ3ByZXNlbnQnKVxuICAgICAgICAgICAgICAgIGlmIChsYWJlbCkge1xuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEuaSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5hcHBseVN0ZXAocGxhY2Vob2xkZXJJZCwgZGF0YSBhcyBSZWFzb25pbmdTdGVwUGF5bG9hZClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICd0b2tlbic6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnY29udGVudCc6IHtcbiAgICAgICAgICAgICAgY29uc3QgY2h1bmsgPSB0eXBlb2YgZGF0YS5jb250ZW50ID09PSAnc3RyaW5nJyA/IGRhdGEuY29udGVudCA6ICcnXG4gICAgICAgICAgICAgIGVuc3VyZVdyaXRpbmdTdGFydGVkKClcbiAgICAgICAgICAgICAgYXBwbHlTdHJlYW1DaHVuayhjaHVuaylcbiAgICAgICAgICAgICAgaWYgKGlzQ29tcGxldGVMaWtlU3NlUGF5bG9hZChkYXRhKSkge1xuICAgICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdub2RlJzpcbiAgICAgICAgICAgICAgaWYgKGRhdGEubm9kZSA9PT0gJ2FnZW50X3RyYW5zZmVyJykge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5tZXNzYWdlICYmIHR5cGVvZiBkYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KFxuICAgICAgICAgICAgICAgICAgc2Vzc2lvbklkLFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICAgIGRhdGEubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgdCxcbiAgICAgICAgICAgICAgICAgICAgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZGF0YS50aHJlYWRfaWQgPT09ICdzdHJpbmcnID8gZGF0YS50aHJlYWRfaWQgOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnY29tcGxldGUnOlxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNvbXBsZXRlKGRhdGEpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ2FwcHJvdmFsX3JlcXVpcmVkJzoge1xuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICAvLyBQcmVhcHJvYmFkbyAoYXV0by1hcHByb3ZlIG8gZGV0ZWNjacOzbiBtYW51YWwpOiBlbCBzdHJlYW0gbm8gc2UgY29ydGEsXG4gICAgICAgICAgICAgIC8vIHNpZ3VlIGVqZWN1dGFuZG8gbGFzIGFjY2lvbmVzIHNpbiBlc3BlcmFyIGRlY2lzacOzbiBkZWwgdXN1YXJpby5cbiAgICAgICAgICAgICAgY29uc3QgaXNQcmVBcHByb3ZlZCA9XG4gICAgICAgICAgICAgICAgZGF0YS5tYW51YWxfYXBwcm92YWxfZGV0ZWN0ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmF1dG9fYXBwcm92ZWQgPT09IHRydWUgfHxcbiAgICAgICAgICAgICAgICBkYXRhLmFwcHJvdmFsX3N0YXR1cyA9PT0gJ2FwcHJvdmVkJ1xuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBpZiAoIWlzUHJlQXBwcm92ZWQpIHtcbiAgICAgICAgICAgICAgICByZWFzb25pbmdTdG9yZS5maW5pc2gocGxhY2Vob2xkZXJJZCwgKGRhdGEucmVhc29uaW5nIGFzIFJlYXNvbmluZ1RyYWNlUGF5bG9hZCB8IG51bGwpID8/IG51bGwpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnYXdhaXRpbmdfYXBwcm92YWwnKVxuICAgICAgICAgICAgICBjYWxsYmFja3Mub25BcHByb3ZhbFJlcXVpcmVkPy4oZGF0YSBhcyBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICAgICAgICAgICAgaWYgKGlzUHJlQXBwcm92ZWQgJiYgQXJyYXkuaXNBcnJheShkYXRhLnBlbmRpbmdfYWN0aW9ucykgJiYgZGF0YS5wZW5kaW5nX2FjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHVuZGVmaW5lZCkpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdTU0UgRXJyb3I6JywgZGF0YS5lcnJvcilcbiAgICAgICAgICAgICAgZmx1c2hQZW5kaW5nKClcbiAgICAgICAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgc3RvcmUoKS5zZXRFcnJvcihzZXNzaW9uSWQsIHsgdHlwZTogZGF0YS5lcnJvcj8udHlwZSwgbWVzc2FnZTogZGF0YS5lcnJvcj8ubWVzc2FnZSB9KVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oZGF0YS5lcnJvcj8udHlwZSwgZGF0YS5lcnJvcj8ubWVzc2FnZSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdVbmtub3duIFNTRSBldmVudCB0eXBlOicsIGV2ZW50VHlwZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgZmx1c2hQZW5kaW5nKClcbiAgfVxufVxuXG4vKipcbiAqIE1hbmFnZXIgc2luZ2xldG9uIChtb2R1bGUtbGV2ZWwpIHF1ZSBjb3JyZSBOIHN0cmVhbXMgZGVsIG9yY2hlc3RyYXRvciBlblxuICogcGFyYWxlbG8sIHVubyBwb3IgYHNlc3Npb25JZGAuIFNvYnJldml2ZSBhIGNhbWJpb3MgZGUgdmlzdGEgeSBhbCBjaWVycmUgZGVsXG4gKiBtb2RhbDogbG9zIHN0cmVhbXMgc29sbyBzZSBjYW5jZWxhbiBjb24gc3RvcCBleHBsw61jaXRvIGRlbCB1c3VhcmlvIG8gYWxcbiAqIGNvbXBsZXRhci9lcnJvcmFyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vzc2lvblN0cmVhbU1hbmFnZXIgPSB7XG4gIGlzQWN0aXZlOiBpc1N0cmVhbUFjdGl2ZSxcbiAgZ2V0QWN0aXZlQ291bnQ6IGdldEFjdGl2ZVN0cmVhbUNvdW50LFxuICBnZXRBY3RpdmVTZXNzaW9uSWRzOiAoKTogc3RyaW5nW10gPT4gQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSksXG5cbiAgYXN5bmMgc3RhcnRTdHJlYW0ocGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCByZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICByZWFzb25pbmdTdG9yZS5zdGFydChwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLm9yY2hlc3RyYXRvcihyZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBwYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRlZDogdHJ1ZSB9XG4gIH0sXG5cbiAgLyoqIFJlc3VtZSBISVRMIChgY29udGludWUtdGhyZWFkYCkga2V5ZWQgcG9yIHNlc3Npb25JZCDigJQgbWlzbW8gbW90b3IgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRDb250aW51ZVN0cmVhbShwYXJhbXM6IFN0YXJ0Q29udGludWVTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY29udGludWVSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGhpdGxFeGVjdXRpb25Db250ZXh0LCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBpZiAoaGl0bEV4ZWN1dGlvbkNvbnRleHQpIHtcbiAgICAgIHNlc3Npb25IaXRsQ29udGV4dC5zZXQoc2Vzc2lvbklkLCBoaXRsRXhlY3V0aW9uQ29udGV4dClcbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICBzZXNzaW9uSWQsXG4gICAgICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSh0LCBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCkgPz8gdW5kZWZpbmVkKVxuICAgIClcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dDogaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZChjb250aW51ZVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvbnRpbnVlLXRocmVhZCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVnZW5lcmEgbGEgcmVzcHVlc3RhIGRlIHVuIHR1cm5vIChgcmV0cnlfY29tcGxldGlvbmApIOKAlCBtaXNtbyBtb3RvciBTU0UgcXVlIG9yY2hlc3RyYXRvci4gKi9cbiAgYXN5bmMgc3RhcnRSZXRyeVN0cmVhbShwYXJhbXM6IFN0YXJ0UmV0cnlTdHJlYW1QYXJhbXMpOiBQcm9taXNlPFN0YXJ0U3RyZWFtUmVzdWx0PiB7XG4gICAgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCgpXG5cbiAgICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgcmV0cnlSZXF1ZXN0LCBjYWxsYmFja3MsIHQsIGFjdGl2aXR5T3B0aW9ucywgYWdlbnRJZCwgYWdlbnROYW1lIH0gPSBwYXJhbXNcblxuICAgIGlmIChpc1N0cmVhbUFjdGl2ZShzZXNzaW9uSWQpKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnYWxyZWFkeV9hY3RpdmUnIH1cbiAgICB9XG4gICAgaWYgKGdldEFjdGl2ZVN0cmVhbUNvdW50KCkgPj0gTUFYX0NPTkNVUlJFTlRfU1RSRUFNUykge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2xpbWl0JyB9XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuICAgIGNvbnN0IGFjdGl2ZTogQWN0aXZlU3RyZWFtID0geyBzZXNzaW9uSWQsIGNvbnRyb2xsZXIsIGlzU3RvcHBlZDogZmFsc2UgfVxuICAgIGFjdGl2ZVN0cmVhbXMuc2V0KHNlc3Npb25JZCwgYWN0aXZlKVxuXG4gICAgc3RvcmUoKS5lbnN1cmVTZXNzaW9uKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHtcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICBlcnJvcjogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdHJ1ZSxcbiAgICAgIGlzV3JpdGluZzogZmFsc2UsXG4gICAgICAuLi4oYWdlbnRJZCAhPSBudWxsID8geyBhZ2VudElkIH0gOiB7fSksXG4gICAgICAuLi4oYWdlbnROYW1lICE9IG51bGwgPyB7IGFnZW50TmFtZSB9IDoge30pLFxuICAgIH0pXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnN0YXJ0KHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZClcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHQsIGFjdGl2aXR5T3B0aW9ucyA/PyB7fSkpXG5cbiAgICBjb25zdCBzc2VQYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICAgICAgc2Vzc2lvbklkLFxuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIHJlcXVlc3Q6IHt9IGFzIE9yY2hlc3RyYXRvclJlcXVlc3QsXG4gICAgICBjYWxsYmFja3MsXG4gICAgICB0LFxuICAgICAgYWN0aXZpdHlPcHRpb25zLFxuICAgICAgYWdlbnRJZCxcbiAgICAgIGFnZW50TmFtZSxcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtYWlhLk9yY2hlc3RyYXRvci5yZXRyeUNvbXBsZXRpb24ocmV0cnlSZXF1ZXN0LCBjb250cm9sbGVyLnNpZ25hbClcbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgbGV0IGRldGFpbDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyB7IGRldGFpbD86IHN0cmluZyB9XG4gICAgICAgICAgICBkZXRhaWwgPSB0eXBlb2YgZGF0YS5kZXRhaWwgPT09ICdzdHJpbmcnID8gZGF0YS5kZXRhaWwgOiB1bmRlZmluZWRcbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIGRldGFpbCA9IHVuZGVmaW5lZFxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZGV0YWlsID09PSAnVHVybiBub3QgZm91bmQnKSB7XG4gICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSwgcGxhY2Vob2xkZXJJZDogbnVsbCB9KVxuICAgICAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAgICAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICd0dXJuX25vdF9mb3VuZCcgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJldHJ5X2NvbXBsZXRpb24gZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c31gKVxuICAgICAgfVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHNzZVBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogQ2FuY2VsYWNpw7NuIGV4cGzDrWNpdGEgZGVsIHVzdWFyaW8gKG1lbnNhamUgXCJjYW5jZWxhZG9cIikuICovXG4gIHN0b3BTdHJlYW0oc2Vzc2lvbklkOiBzdHJpbmcsIGNhbGxiYWNrcz86IFNlc3Npb25TdHJlYW1DYWxsYmFja3MpIHtcbiAgICBjb25zdCBhY3RpdmUgPSBhY3RpdmVTdHJlYW1zLmdldChzZXNzaW9uSWQpXG4gICAgaWYgKCFhY3RpdmUpIHJldHVyblxuICAgIGFjdGl2ZS5pc1N0b3BwZWQgPSB0cnVlXG4gICAgYWN0aXZlLmNvbnRyb2xsZXIuYWJvcnQoKVxuICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICAvLyBFbCBwYXJjaWFsIHNlIHJlc2NhdGEgYW50ZXMgZGUgbGltcGlhcjogZWwgYmFja2VuZCBsbyBwZXJzaXN0ZSwgcGVybyBzaSBubyBsb1xuICAgIC8vIHBhc2Ftb3MgYWwgY2FsbGJhY2sgZGVzYXBhcmVjZSBkZSBwYW50YWxsYSBoYXN0YSBlbCBwcsOzeGltbyBmZXRjaCBkZSBsYSBzZXNpw7NuLlxuICAgIGNvbnN0IHBhcnRpYWxUZXh0ID0gc2Vzc2lvblN0cmVhbWluZ1RleHQuZ2V0U25hcHNob3Qoc2Vzc2lvbklkKS50ZXh0XG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY2FuY2VsbGVkJylcbiAgICBjYWxsYmFja3M/Lm9uU3RvcD8uKHBhcnRpYWxUZXh0KVxuICB9LFxuXG4gIC8qKiBBYm9ydGEgc2luIG1hcmNhciBcImNhbmNlbGFkb1wiICh1c28gaW50ZXJubyAvIGxpbXBpZXphKS4gKi9cbiAgYWJvcnRTaWxlbnRseShzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgIGlmIChzdG9yZSgpLmdldE1ldGEoc2Vzc2lvbklkKT8uc3RhdHVzICE9PSAnY29tcGxldGUnKSB7XG4gICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdpZGxlJylcbiAgICB9XG4gIH0sXG5cbiAgYWJvcnRBbGwoKSB7XG4gICAgQXJyYXkuZnJvbShhY3RpdmVTdHJlYW1zLmtleXMoKSkuZm9yRWFjaChzZXNzaW9uSWQgPT4gdGhpcy5hYm9ydFNpbGVudGx5KHNlc3Npb25JZCkpXG4gIH0sXG59XG4iXSwibWFwcGlu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
|
|
770
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYWlhIiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSIsImdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwiaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkIiwibWVyZ2VTdHJlYW1DaHVuayIsInJlYXNvbmluZ1N0b3JlIiwic2Vzc2lvblN0cmVhbWluZ1RleHQiLCJ1c2VTZXNzaW9uc1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInNlc3Npb25IaXRsQ29udGV4dCIsIk1BWF9DT05DVVJSRU5UX1NUUkVBTVMiLCJTVFJFQU1fVEhST1RUTEVfTVMiLCJhY3RpdmVTdHJlYW1zIiwiTWFwIiwic3RvcmUiLCJnZXRTdGF0ZSIsImlzU3RyZWFtQWN0aXZlIiwic2Vzc2lvbklkIiwiaGFzIiwiZ2V0QWN0aXZlU3RyZWFtQ291bnQiLCJzaXplIiwicGFyc2VTZXNzaW9uU1NFIiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwicmVzcG9uc2UiLCJhY3RpdmUiLCJwYXJhbXMiLCJfcGFyYW1zJGhpdGxFeGVjdXRpb24iLCJfcmVzcG9uc2UkYm9keSIsIl9kYXRhJGVycm9yIiwiX2RhdGEkZXJyb3IyIiwiX2NhbGxiYWNrcyRvbkVycm9yIiwiX2RhdGEkZXJyb3IzIiwiX2RhdGEkZXJyb3I0IiwicGxhY2Vob2xkZXJJZCIsImNhbGxiYWNrcyIsInQiLCJoaXRsRXhlY3V0aW9uQ29udGV4dCIsInBlbmRpbmdDb250ZW50IiwidGhyb3R0bGVUaW1lciIsImZsdXNoVG9TdG9yZXMiLCJlbWl0VGhyb3R0bGVkIiwiZmx1c2hQZW5kaW5nIiwicmVhZGVyIiwiZGVjb2RlciIsImJ1ZmZlciIsImFjY3VtdWxhdGVkQ29udGVudCIsImhhc1N0YXJ0ZWRXcml0aW5nIiwiZW5zdXJlV3JpdGluZ1N0YXJ0ZWQiLCJhcHBseVN0cmVhbUNodW5rIiwiY2xlYXJTdHJlYW1MaWtlQW5zd2VyUmVzZXQiLCJhcHBseVN0cmVhbUNvbXBsZXRlIiwiX3lpZWxkJHJlYWRlciRyZWFkIiwiZG9uZSIsInZhbHVlIiwibGluZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImxpbmUiLCJfbGluZSRzcGxpdCIsIl9saW5lJHNwbGl0MiIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwiZGF0YVN0ciIsImRhdGEiLCJ0aGlua2luZ0RlbHRhIiwic3RlcFRvb2wiLCJzdGVwVHlwZSIsImxhYmVsIiwiY2h1bmsiLCJfY2h1bmsiLCJfY2FsbGJhY2tzJG9uQXBwcm92YWwiLCJpc1ByZUFwcHJvdmVkIiwiX3JlZjMiLCJfdCIsIl90MiIsIl90MyIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwiZ2V0IiwiY29udGVudCIsIl9jYWxsYmFja3Mkb25TdHJlYW1VcCIsInNldFRleHQiLCJvblN0cmVhbVVwZGF0ZSIsImNhbGwiLCJ3aW5kb3ciLCJzZXRUaW1lb3V0IiwidG9FbWl0IiwiY2xlYXJUaW1lb3V0IiwiYm9keSIsImdldFJlYWRlciIsIkVycm9yIiwiVGV4dERlY29kZXIiLCJfY2FsbGJhY2tzJG9uU3RhcnRXcmkiLCJwYXRjaE1ldGEiLCJpc0xvYWRpbmciLCJpc1dyaXRpbmciLCJzZXRTdGF0dXMiLCJzZXRBY3Rpdml0eSIsIm9uU3RhcnRXcml0aW5nIiwic3luY0xpdmVOYXJyYXRpb24iLCJtYXJrQW5zd2VyUmVzZXQiLCJwYXlsb2FkIiwiX3BheWxvYWQkYWdlbnRfaWQiLCJfc3ViYWdlbnRSYXckcmVzb2x2ZWQiLCJfcmVmMiIsIl9jYWxsYmFja3Mkb25GaW5pc2hTdCIsImZpbmFsQ29udGVudCIsInNvdXJjZXMiLCJtZW1vcnlTZXNzaW9uSWQiLCJtZW1vcnlfc2Vzc2lvbl9pZCIsImF0dGFjaG1lbnRzIiwiQXJyYXkiLCJpc0FycmF5Iiwic3VnZ2VzdGlvbnMiLCJzdWdnZXN0X3JlcGx5IiwiYWdlbnRJZFJhdyIsImFnZW50X2lkIiwiYWdlbnRJZCIsImNvbXBsZXRlZEFnZW50SWQiLCJTdHJpbmciLCJ0cmltIiwic3ViYWdlbnRSYXciLCJzdWJhZ2VudCIsInJlc29sdmVkQ29udGV4dCIsInJlc29sdmVkX2NvbnRleHQiLCJyZWFzb25pbmciLCJmaW5pc2giLCJmaW5pc2hQYXlsb2FkIiwib25GaW5pc2hTdHJlYW0iLCJpc1N0b3BwZWQiLCJjYW5jZWwiLCJhYnJ1cHQiLCJyZWFkIiwic2VudCIsImRlY29kZSIsInN0cmVhbSIsInNwbGl0IiwicG9wIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJzIiwibiIsIl9zbGljZWRUb0FycmF5IiwicmVwbGFjZSIsIkpTT04iLCJwYXJzZSIsImRlbHRhIiwiaSIsImFwcGVuZFRoaW5raW5nIiwicGhhc2UiLCJtZXNzYWdlIiwidG9vbCIsInR5cGUiLCJzdGF0dXMiLCJhcHBseVN0ZXAiLCJzaG91bGRDbGVhclN0cmVhbUZvckxlYWRpbmciLCJub2RlIiwidW5kZWZpbmVkIiwidGhyZWFkX2lkIiwibWFudWFsX2FwcHJvdmFsX2RldGVjdGVkIiwiYXV0b19hcHByb3ZlZCIsImFwcHJvdmFsX3N0YXR1cyIsImNsZWFyIiwib25BcHByb3ZhbFJlcXVpcmVkIiwicGVuZGluZ19hY3Rpb25zIiwibGVuZ3RoIiwiY29uc29sZSIsImVycm9yIiwic2V0RXJyb3IiLCJvbkVycm9yIiwid2FybiIsImUiLCJmIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJzZXNzaW9uU3RyZWFtTWFuYWdlciIsImlzQWN0aXZlIiwiZ2V0QWN0aXZlQ291bnQiLCJnZXRBY3RpdmVTZXNzaW9uSWRzIiwiZnJvbSIsImtleXMiLCJzdGFydFN0cmVhbSIsIl9jYWxsZWUyIiwicmVxdWVzdCIsImFjdGl2aXR5T3B0aW9ucyIsImFnZW50TmFtZSIsImNvbnRyb2xsZXIiLCJfY2FsbGJhY2tzJG9uRXJyb3IyIiwiX3Q0IiwiX2NvbnRleHQyIiwic3RhcnRlZCIsInJlYXNvbiIsIkFib3J0Q29udHJvbGxlciIsInNldCIsImVuc3VyZVNlc3Npb24iLCJfb2JqZWN0U3ByZWFkIiwic3RhcnQiLCJPcmNoZXN0cmF0b3IiLCJvcmNoZXN0cmF0b3IiLCJzaWduYWwiLCJzdGFydENvbnRpbnVlU3RyZWFtIiwiX2NhbGxlZTMiLCJfcmVmNCIsImNvbnRpbnVlUmVxdWVzdCIsInNzZVBhcmFtcyIsIl9jYWxsYmFja3Mkb25FcnJvcjMiLCJfdDUiLCJfY29udGV4dDMiLCJjb250aW51ZVRocmVhZCIsIm9rIiwiY29uY2F0Iiwic3RhcnRSZXRyeVN0cmVhbSIsIl9jYWxsZWU0IiwicmV0cnlSZXF1ZXN0IiwiZGV0YWlsIiwiX2NhbGxiYWNrcyRvbkVycm9yNCIsIl90NiIsIl90NyIsIl9jb250ZXh0NCIsInJldHJ5Q29tcGxldGlvbiIsImpzb24iLCJzdG9wU3RyZWFtIiwiX2NhbGxiYWNrcyRvblN0b3AiLCJhYm9ydCIsInBhcnRpYWxUZXh0IiwiZ2V0U25hcHNob3QiLCJ0ZXh0Iiwib25TdG9wIiwiYWJvcnRTaWxlbnRseSIsIl9zdG9yZSRnZXRNZXRhIiwiZ2V0TWV0YSIsImFib3J0QWxsIiwiX3RoaXMiLCJmb3JFYWNoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc3RhbnQtY29uZGl0aW9uICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHR5cGUgeyBBcHByb3ZhbFJlcXVlc3QgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHtcbiAgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5LFxuICBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlLFxuICBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHksXG4gIHJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5LFxuICByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSxcbiAgcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcydcbmltcG9ydCB0eXBlIHsgSGl0bEV4ZWN1dGlvbkNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzJ1xuaW1wb3J0IHsgaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkLCBtZXJnZVN0cmVhbUNodW5rIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3NlU3RyZWFtQ29udGVudCdcbmltcG9ydCB7IHJlYXNvbmluZ1N0b3JlIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlUmVhc29uaW5nVHJhY2UnXG5pbXBvcnQgdHlwZSB7IFJlYXNvbmluZ1N0ZXBQYXlsb2FkLCBSZWFzb25pbmdUcmFjZVBheWxvYWQgfSBmcm9tICcuLi8uLi90eXBlcy9yZWFzb25pbmcnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtaW5nVGV4dCB9IGZyb20gJy4vc2Vzc2lvblN0cmVhbWluZ1RleHQnXG5pbXBvcnQgeyB1c2VTZXNzaW9uc1N0b3JlIH0gZnJvbSAnLi91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4vc2Vzc2lvbk5vdGlmaWNhdGlvbnMnXG5pbXBvcnQgeyBzZXNzaW9uSGl0bENvbnRleHQgfSBmcm9tICcuL3Nlc3Npb25IaXRsQ29udGV4dCdcbmltcG9ydCB0eXBlIHsgU2Vzc2lvbkZpbmlzaFBheWxvYWQsIFNlc3Npb25TdHJlYW1DYWxsYmFja3MsIFN0YXJ0U3RyZWFtUmVzdWx0IH0gZnJvbSAnLi9zZXNzaW9ucy50eXBlcydcblxudHlwZSBPcmNoZXN0cmF0b3JSZXF1ZXN0ID0gUGFyYW1ldGVyczx0eXBlb2YgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yPlswXVxudHlwZSBDb250aW51ZVRocmVhZFJlcXVlc3QgPSBQYXJhbWV0ZXJzPHR5cGVvZiBtYWlhLk9yY2hlc3RyYXRvci5jb250aW51ZVRocmVhZD5bMF1cbnR5cGUgUmV0cnlDb21wbGV0aW9uUmVxdWVzdCA9IFBhcmFtZXRlcnM8dHlwZW9mIG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbj5bMF1cblxuLyoqIENvbXBhdGlibGUgY29uIGVsIGB0YCBkZSBpMThuZXh0ICh1c28gZGUgdW5hIHNvbGEga2V5KS4gKi9cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG50eXBlIFN0YXJ0U3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgcmVxdWVzdDogT3JjaGVzdHJhdG9yUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgaGl0bEV4ZWN1dGlvbkNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBTdGFydENvbnRpbnVlU3RyZWFtUGFyYW1zID0ge1xuICBzZXNzaW9uSWQ6IHN0cmluZ1xuICBwbGFjZWhvbGRlcklkOiBzdHJpbmdcbiAgY29udGludWVSZXF1ZXN0OiBDb250aW51ZVRocmVhZFJlcXVlc3RcbiAgY2FsbGJhY2tzOiBTZXNzaW9uU3RyZWFtQ2FsbGJhY2tzXG4gIHQ6IFRyYW5zbGF0ZUZuXG4gIGhpdGxFeGVjdXRpb25Db250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4gIGFnZW50SWQ/OiBzdHJpbmcgfCBudW1iZXJcbiAgYWdlbnROYW1lPzogc3RyaW5nXG59XG5cbnR5cGUgU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyA9IHtcbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgcGxhY2Vob2xkZXJJZDogc3RyaW5nXG4gIHJldHJ5UmVxdWVzdDogUmV0cnlDb21wbGV0aW9uUmVxdWVzdFxuICBjYWxsYmFja3M6IFNlc3Npb25TdHJlYW1DYWxsYmFja3NcbiAgdDogVHJhbnNsYXRlRm5cbiAgYWN0aXZpdHlPcHRpb25zPzoge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBoYXNBdHRhY2htZW50cz86IGJvb2xlYW5cbiAgICBhdHRhY2htZW50c0NvdW50PzogbnVtYmVyXG4gIH1cbiAgYWdlbnRJZD86IHN0cmluZyB8IG51bWJlclxuICBhZ2VudE5hbWU/OiBzdHJpbmdcbn1cblxudHlwZSBBY3RpdmVTdHJlYW0gPSB7XG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIGNvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuICBpc1N0b3BwZWQ6IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBNw6F4aW1vIGRlIHNlc2lvbmVzIGdlbmVyYW5kbyBlbiBwYXJhbGVsby4gUHJvdGVnZSByZWQvcmVjdXJzb3MgZGVsIGNsaWVudGUuXG4gKiBBanVzdGFibGUgYSBmdXR1cm8gdsOtYSBmbGFnIGRlbCBob3N0LlxuICovXG5leHBvcnQgY29uc3QgTUFYX0NPTkNVUlJFTlRfU1RSRUFNUyA9IDRcblxuY29uc3QgU1RSRUFNX1RIUk9UVExFX01TID0gMTZcblxuY29uc3QgYWN0aXZlU3RyZWFtcyA9IG5ldyBNYXA8c3RyaW5nLCBBY3RpdmVTdHJlYW0+KClcblxuY29uc3Qgc3RvcmUgPSAoKSA9PiB1c2VTZXNzaW9uc1N0b3JlLmdldFN0YXRlKClcblxuY29uc3QgaXNTdHJlYW1BY3RpdmUgPSAoc2Vzc2lvbklkOiBzdHJpbmcpOiBib29sZWFuID0+IGFjdGl2ZVN0cmVhbXMuaGFzKHNlc3Npb25JZClcblxuY29uc3QgZ2V0QWN0aXZlU3RyZWFtQ291bnQgPSAoKTogbnVtYmVyID0+IGFjdGl2ZVN0cmVhbXMuc2l6ZVxuXG5jb25zdCBwYXJzZVNlc3Npb25TU0UgPSBhc3luYyAocmVzcG9uc2U6IFJlc3BvbnNlLCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSwgcGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IHNlc3Npb25JZCwgcGxhY2Vob2xkZXJJZCwgY2FsbGJhY2tzLCB0IH0gPSBwYXJhbXNcbiAgY29uc3QgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPSBwYXJhbXMuaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gc2Vzc2lvbkhpdGxDb250ZXh0LmdldChzZXNzaW9uSWQpXG5cbiAgbGV0IHBlbmRpbmdDb250ZW50OiBzdHJpbmcgfCBudWxsID0gbnVsbFxuICBsZXQgdGhyb3R0bGVUaW1lcjogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICBjb25zdCBmbHVzaFRvU3RvcmVzID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LnNldFRleHQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250ZW50KVxuICAgIGNhbGxiYWNrcy5vblN0cmVhbVVwZGF0ZT8uKGNvbnRlbnQpXG4gIH1cblxuICBjb25zdCBlbWl0VGhyb3R0bGVkID0gKGNvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgIHBlbmRpbmdDb250ZW50ID0gY29udGVudFxuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHJldHVyblxuICAgIHRocm90dGxlVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgICAgaWYgKHBlbmRpbmdDb250ZW50ICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgICAgcGVuZGluZ0NvbnRlbnQgPSBudWxsXG4gICAgICAgIGZsdXNoVG9TdG9yZXModG9FbWl0KVxuICAgICAgfVxuICAgIH0sIFNUUkVBTV9USFJPVFRMRV9NUylcbiAgfVxuXG4gIGNvbnN0IGZsdXNoUGVuZGluZyA9ICgpID0+IHtcbiAgICBpZiAodGhyb3R0bGVUaW1lciAhPSBudWxsKSB7XG4gICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRocm90dGxlVGltZXIpXG4gICAgICB0aHJvdHRsZVRpbWVyID0gbnVsbFxuICAgIH1cbiAgICBpZiAocGVuZGluZ0NvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdG9FbWl0ID0gcGVuZGluZ0NvbnRlbnRcbiAgICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgICAgZmx1c2hUb1N0b3Jlcyh0b0VtaXQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGhhc1N0YXJ0ZWRXcml0aW5nID0gZmFsc2VcblxuICBjb25zdCBlbnN1cmVXcml0aW5nU3RhcnRlZCA9ICgpID0+IHtcbiAgICBpZiAoaGFzU3RhcnRlZFdyaXRpbmcpIHJldHVyblxuICAgIGhhc1N0YXJ0ZWRXcml0aW5nID0gdHJ1ZVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUsIGlzV3JpdGluZzogdHJ1ZSB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3dyaXRpbmcnKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkodCkpXG4gICAgY2FsbGJhY2tzLm9uU3RhcnRXcml0aW5nPy4oKVxuICB9XG5cbiAgY29uc3QgYXBwbHlTdHJlYW1DaHVuayA9IChjaHVuazogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFjaHVuaykgcmV0dXJuXG4gICAgYWNjdW11bGF0ZWRDb250ZW50ID0gbWVyZ2VTdHJlYW1DaHVuayhhY2N1bXVsYXRlZENvbnRlbnQsIGNodW5rKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN5bmNMaXZlTmFycmF0aW9uKHBsYWNlaG9sZGVySWQsIGFjY3VtdWxhdGVkQ29udGVudClcbiAgICBlbWl0VGhyb3R0bGVkKGFjY3VtdWxhdGVkQ29udGVudClcbiAgfVxuXG4gIGNvbnN0IGNsZWFyU3RyZWFtTGlrZUFuc3dlclJlc2V0ID0gKCkgPT4ge1xuICAgIGlmICh0aHJvdHRsZVRpbWVyICE9IG51bGwpIHtcbiAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhyb3R0bGVUaW1lcilcbiAgICAgIHRocm90dGxlVGltZXIgPSBudWxsXG4gICAgfVxuICAgIHBlbmRpbmdDb250ZW50ID0gbnVsbFxuICAgIGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gICAgZmx1c2hUb1N0b3JlcygnJylcbiAgICByZWFzb25pbmdTdG9yZS5tYXJrQW5zd2VyUmVzZXQocGxhY2Vob2xkZXJJZClcbiAgfVxuXG4gIGNvbnN0IGFwcGx5U3RyZWFtQ29tcGxldGUgPSAocGF5bG9hZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHtcbiAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAocGF5bG9hZC5jb250ZW50IGFzIHN0cmluZykgfHwgYWNjdW11bGF0ZWRDb250ZW50XG4gICAgY29uc3Qgc291cmNlcyA9IHBheWxvYWQuc291cmNlcyB8fCBudWxsXG4gICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKHBheWxvYWQubWVtb3J5X3Nlc3Npb25faWQgYXMgc3RyaW5nKSB8fCAnJ1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShwYXlsb2FkLmF0dGFjaG1lbnRzKSA/IHBheWxvYWQuYXR0YWNobWVudHMgOiBudWxsXG4gICAgbGV0IHN1Z2dlc3Rpb25zOiBzdHJpbmdbXSB8IG51bGwgPSBudWxsXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0X3JlcGx5KSkge1xuICAgICAgc3VnZ2VzdGlvbnMgPSBwYXlsb2FkLnN1Z2dlc3RfcmVwbHkgYXMgc3RyaW5nW11cbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocGF5bG9hZC5zdWdnZXN0aW9ucykpIHtcbiAgICAgIHN1Z2dlc3Rpb25zID0gcGF5bG9hZC5zdWdnZXN0aW9ucyBhcyBzdHJpbmdbXVxuICAgIH1cbiAgICBjb25zdCBhZ2VudElkUmF3ID0gcGF5bG9hZC5hZ2VudF9pZCA/PyBwYXlsb2FkLmFnZW50SWRcbiAgICBjb25zdCBjb21wbGV0ZWRBZ2VudElkID0gYWdlbnRJZFJhdyAhPSBudWxsICYmIFN0cmluZyhhZ2VudElkUmF3KS50cmltKCkgIT09ICcnID8gU3RyaW5nKGFnZW50SWRSYXcpLnRyaW0oKSA6IG51bGxcbiAgICBjb25zdCBzdWJhZ2VudFJhdyA9IHBheWxvYWQuc3ViYWdlbnQgYXMgeyByZXNvbHZlZF9jb250ZXh0PzogdW5rbm93biB9IHwgbnVsbCB8IHVuZGVmaW5lZFxuICAgIGNvbnN0IHJlc29sdmVkQ29udGV4dCA9IHN1YmFnZW50UmF3Py5yZXNvbHZlZF9jb250ZXh0ID8/IG51bGxcbiAgICBjb25zdCByZWFzb25pbmcgPSAocGF5bG9hZC5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbFxuXG4gICAgcmVhc29uaW5nU3RvcmUuZmluaXNoKHBsYWNlaG9sZGVySWQsIHJlYXNvbmluZylcbiAgICBmbHVzaFBlbmRpbmcoKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnY29tcGxldGUnKVxuXG4gICAgY29uc3QgZmluaXNoUGF5bG9hZDogU2Vzc2lvbkZpbmlzaFBheWxvYWQgPSB7XG4gICAgICBjb250ZW50OiBmaW5hbENvbnRlbnQsXG4gICAgICBzb3VyY2VzLFxuICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgYXR0YWNobWVudHMsXG4gICAgICBzdWdnZXN0aW9ucyxcbiAgICAgIGNvbXBsZXRlZEFnZW50SWQsXG4gICAgICByZXNvbHZlZENvbnRleHQsXG4gICAgICByZWFzb25pbmcsXG4gICAgfVxuICAgIGNhbGxiYWNrcy5vbkZpbmlzaFN0cmVhbT8uKGZpbmlzaFBheWxvYWQpXG5cbiAgICAvLyBFbCB0ZXh0byBlbiB2aXZvIE5PIHNlIGxpbXBpYSBhY8OhIGEgcHJvcMOzc2l0by4gRWwgcGxhY2Vob2xkZXIgc2UgdmEgY29uIGVsXG4gICAgLy8gYGRyb3BgIHF1ZSBoYWNlIGVsIGNvbnN1bWlkb3IsIHkgY29uIMOpbCBzdSBzdXNjcmlwY2nDs247IHZhY2lhcmxvIGFudGVzIGxvXG4gICAgLy8gZGVqYWJhIG1vbnRhZG8geSBzaW4gdGV4dG8gKGFsdHVyYSAwKSBkdXJhbnRlIH4yNW1zOiBlbCBmbGlja2VyIGRlIGZpbiBkZVxuICAgIC8vIHN0cmVhbS4gTm8gYWxjYW56YSBjb24gZGlmZXJpcmxvLCBwb3JxdWUgZXN0ZSBjbGVhciB2aWFqYSBlbiBTeW5jTGFuZVxuICAgIC8vIChzdG9yZSBleHRlcm5vKSB5IGVsIHN3YXAgZGUgbWVuc2FqZXMgZW4gRGVmYXVsdExhbmUsIGFzw60gcXVlIHNpZW1wcmUgc2VcbiAgICAvLyBjdWVsYSBlbiBlbCBtZWRpby4gRWwgc2xvdCBzZSBsaWJlcmEgZW4gZWwgcHLDs3hpbW8gYHN0YXJ0KClgIGRlIGxhIHNlc2nDs24sXG4gICAgLy8geSBlbiBzdG9wL2Vycm9yL2FwcHJvdmFsL2NhbWJpbyBkZSBzZXNpw7NuLCBxdWUgc8OtIGxsYW1hbiBgY2xlYXJgLlxuICB9XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgaWYgKGFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgcmVhZGVyLmNhbmNlbCgpXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICAgIGlmIChkb25lKSBicmVha1xuXG4gICAgICBpZiAoYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICByZWFkZXIuY2FuY2VsKClcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoJ1xcblxcbicpXG4gICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKGxpbmUudHJpbSgpID09PSAnJykgY29udGludWVcblxuICAgICAgICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICAgICAgICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIGNvbnRpbnVlXG5cbiAgICAgICAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gICAgICAgIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuXG4gICAgICAgICAgc3dpdGNoIChldmVudFR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ3RoaW5raW5nJzoge1xuICAgICAgICAgICAgICBjb25zdCB0aGlua2luZ0RlbHRhID0gdHlwZW9mIGRhdGEuZGVsdGEgPT09ICdzdHJpbmcnID8gZGF0YS5kZWx0YSA6ICcnXG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgZGF0YS5pID09PSAnbnVtYmVyJyAmJiB0aGlua2luZ0RlbHRhKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwZW5kVGhpbmtpbmcocGxhY2Vob2xkZXJJZCwgZGF0YS5pLCB0aGlua2luZ0RlbHRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghaGFzU3RhcnRlZFdyaXRpbmcpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAndGhpbmtpbmcnLCBtZXNzYWdlOiBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlKDAsIHQpIH0pXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gRWwgYmFja2VuZCBkZXNjYXJ0YSBsbyBlbWl0aWRvIHkgcmVpbmljaWEgbGEgcmVzcHVlc3RhIGRlc2RlIGNlcm8uXG4gICAgICAgICAgICBjYXNlICdhbnN3ZXJfcmVzZXQnOlxuICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgICAgIGNhc2UgJ3JlYXNvbmluZ19zdGVwJzoge1xuICAgICAgICAgICAgICBjb25zdCBzdGVwVG9vbCA9IHR5cGVvZiBkYXRhLnRvb2wgPT09ICdzdHJpbmcnID8gZGF0YS50b29sIDogJydcbiAgICAgICAgICAgICAgY29uc3Qgc3RlcFR5cGUgPSB0eXBlb2YgZGF0YS50eXBlID09PSAnc3RyaW5nJyA/IGRhdGEudHlwZSA6ICcnXG4gICAgICAgICAgICAgIGlmIChzdGVwVG9vbCAmJiBzdGVwVHlwZSAhPT0gJ2hhbmRvZmYnICYmIGRhdGEuc3RhdHVzID09PSAncnVubmluZycpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbCA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwoc3RlcFRvb2wsIHQsICdwcmVzZW50JylcbiAgICAgICAgICAgICAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IHRydWUgfSlcbiAgICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkYXRhLmkgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmVhc29uaW5nU3RvcmUuYXBwbHlTdGVwKHBsYWNlaG9sZGVySWQsIGRhdGEgYXMgUmVhc29uaW5nU3RlcFBheWxvYWQpXG4gICAgICAgICAgICAgICAgaWYgKHJlYXNvbmluZ1N0b3JlLnNob3VsZENsZWFyU3RyZWFtRm9yTGVhZGluZyhwbGFjZWhvbGRlcklkLCBhY2N1bXVsYXRlZENvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICBjbGVhclN0cmVhbUxpa2VBbnN3ZXJSZXNldCgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ3Rva2VuJzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdjb250ZW50Jzoge1xuICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IHR5cGVvZiBkYXRhLmNvbnRlbnQgPT09ICdzdHJpbmcnID8gZGF0YS5jb250ZW50IDogJydcbiAgICAgICAgICAgICAgZW5zdXJlV3JpdGluZ1N0YXJ0ZWQoKVxuICAgICAgICAgICAgICBhcHBseVN0cmVhbUNodW5rKGNodW5rKVxuICAgICAgICAgICAgICBpZiAoaXNDb21wbGV0ZUxpa2VTc2VQYXlsb2FkKGRhdGEpKSB7XG4gICAgICAgICAgICAgICAgYXBwbHlTdHJlYW1Db21wbGV0ZShkYXRhKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgJ25vZGUnOlxuICAgICAgICAgICAgICBpZiAoZGF0YS5ub2RlID09PSAnYWdlbnRfdHJhbnNmZXInKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLm1lc3NhZ2UgJiYgdHlwZW9mIGRhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiB0cnVlIH0pXG4gICAgICAgICAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAndGhpbmtpbmcnKVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoXG4gICAgICAgICAgICAgICAgICBzZXNzaW9uSWQsXG4gICAgICAgICAgICAgICAgICByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eShcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5tZXNzYWdlLFxuICAgICAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgICAgICBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBkYXRhLnRocmVhZF9pZCA9PT0gJ3N0cmluZycgPyBkYXRhLnRocmVhZF9pZCA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBjYXNlICdjb21wbGV0ZSc6XG4gICAgICAgICAgICAgIGFwcGx5U3RyZWFtQ29tcGxldGUoZGF0YSlcbiAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgY2FzZSAnYXBwcm92YWxfcmVxdWlyZWQnOiB7XG4gICAgICAgICAgICAgIGZsdXNoUGVuZGluZygpXG4gICAgICAgICAgICAgIC8vIFByZWFwcm9iYWRvIChhdXRvLWFwcHJvdmUgbyBkZXRlY2Npw7NuIG1hbnVhbCk6IGVsIHN0cmVhbSBubyBzZSBjb3J0YSxcbiAgICAgICAgICAgICAgLy8gc2lndWUgZWplY3V0YW5kbyBsYXMgYWNjaW9uZXMgc2luIGVzcGVyYXIgZGVjaXNpw7NuIGRlbCB1c3VhcmlvLlxuICAgICAgICAgICAgICBjb25zdCBpc1ByZUFwcHJvdmVkID1cbiAgICAgICAgICAgICAgICBkYXRhLm1hbnVhbF9hcHByb3ZhbF9kZXRlY3RlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXV0b19hcHByb3ZlZCA9PT0gdHJ1ZSB8fFxuICAgICAgICAgICAgICAgIGRhdGEuYXBwcm92YWxfc3RhdHVzID09PSAnYXBwcm92ZWQnXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIGlmICghaXNQcmVBcHByb3ZlZCkge1xuICAgICAgICAgICAgICAgIHJlYXNvbmluZ1N0b3JlLmZpbmlzaChwbGFjZWhvbGRlcklkLCAoZGF0YS5yZWFzb25pbmcgYXMgUmVhc29uaW5nVHJhY2VQYXlsb2FkIHwgbnVsbCkgPz8gbnVsbClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdhd2FpdGluZ19hcHByb3ZhbCcpXG4gICAgICAgICAgICAgIGNhbGxiYWNrcy5vbkFwcHJvdmFsUmVxdWlyZWQ/LihkYXRhIGFzIEFwcHJvdmFsUmVxdWVzdCwgYWNjdW11bGF0ZWRDb250ZW50KVxuICAgICAgICAgICAgICBpZiAoaXNQcmVBcHByb3ZlZCAmJiBBcnJheS5pc0FycmF5KGRhdGEucGVuZGluZ19hY3Rpb25zKSAmJiBkYXRhLnBlbmRpbmdfYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogdHJ1ZSB9KVxuICAgICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICAgICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkodCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQgPz8gdW5kZWZpbmVkKSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBkYXRhLmVycm9yKVxuICAgICAgICAgICAgICBmbHVzaFBlbmRpbmcoKVxuICAgICAgICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICAgICAgICBzdG9yZSgpLnNldEVycm9yKHNlc3Npb25JZCwgeyB0eXBlOiBkYXRhLmVycm9yPy50eXBlLCBtZXNzYWdlOiBkYXRhLmVycm9yPy5tZXNzYWdlIH0pXG4gICAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LihkYXRhLmVycm9yPy50eXBlLCBkYXRhLmVycm9yPy5tZXNzYWdlKVxuICAgICAgICAgICAgICBicmVha1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ1Vua25vd24gU1NFIGV2ZW50IHR5cGU6JywgZXZlbnRUeXBlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBmbHVzaFBlbmRpbmcoKVxuICB9XG59XG5cbi8qKlxuICogTWFuYWdlciBzaW5nbGV0b24gKG1vZHVsZS1sZXZlbCkgcXVlIGNvcnJlIE4gc3RyZWFtcyBkZWwgb3JjaGVzdHJhdG9yIGVuXG4gKiBwYXJhbGVsbywgdW5vIHBvciBgc2Vzc2lvbklkYC4gU29icmV2aXZlIGEgY2FtYmlvcyBkZSB2aXN0YSB5IGFsIGNpZXJyZSBkZWxcbiAqIG1vZGFsOiBsb3Mgc3RyZWFtcyBzb2xvIHNlIGNhbmNlbGFuIGNvbiBzdG9wIGV4cGzDrWNpdG8gZGVsIHVzdWFyaW8gbyBhbFxuICogY29tcGxldGFyL2Vycm9yYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXNzaW9uU3RyZWFtTWFuYWdlciA9IHtcbiAgaXNBY3RpdmU6IGlzU3RyZWFtQWN0aXZlLFxuICBnZXRBY3RpdmVDb3VudDogZ2V0QWN0aXZlU3RyZWFtQ291bnQsXG4gIGdldEFjdGl2ZVNlc3Npb25JZHM6ICgpOiBzdHJpbmdbXSA9PiBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKSxcblxuICBhc3luYyBzdGFydFN0cmVhbShwYXJhbXM6IFN0YXJ0U3RyZWFtUGFyYW1zKTogUHJvbWlzZTxTdGFydFN0cmVhbVJlc3VsdD4ge1xuICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuXG4gICAgY29uc3QgeyBzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQsIHJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHJlYXNvbmluZ1N0b3JlLnN0YXJ0KHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eSh0LCBhY3Rpdml0eU9wdGlvbnMgPz8ge30pKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3Iub3JjaGVzdHJhdG9yKHJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgYXdhaXQgcGFyc2VTZXNzaW9uU1NFKHJlc3BvbnNlLCBhY3RpdmUsIHBhcmFtcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKCFhY3RpdmUuaXNTdG9wcGVkKSB7XG4gICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICAgICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2Vycm9yJylcbiAgICAgICAgY2FsbGJhY2tzLm9uRXJyb3I/LigpXG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGFjdGl2ZVN0cmVhbXMuZGVsZXRlKHNlc3Npb25JZClcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydGVkOiB0cnVlIH1cbiAgfSxcblxuICAvKiogUmVzdW1lIEhJVEwgKGBjb250aW51ZS10aHJlYWRgKSBrZXllZCBwb3Igc2Vzc2lvbklkIOKAlCBtaXNtbyBtb3RvciBxdWUgb3JjaGVzdHJhdG9yLiAqL1xuICBhc3luYyBzdGFydENvbnRpbnVlU3RyZWFtKHBhcmFtczogU3RhcnRDb250aW51ZVN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCBjb250aW51ZVJlcXVlc3QsIGNhbGxiYWNrcywgdCwgaGl0bEV4ZWN1dGlvbkNvbnRleHQsIGFnZW50SWQsIGFnZW50TmFtZSB9ID0gcGFyYW1zXG5cbiAgICBpZiAoaXNTdHJlYW1BY3RpdmUoc2Vzc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ2FscmVhZHlfYWN0aXZlJyB9XG4gICAgfVxuICAgIGlmIChnZXRBY3RpdmVTdHJlYW1Db3VudCgpID49IE1BWF9DT05DVVJSRU5UX1NUUkVBTVMpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdsaW1pdCcgfVxuICAgIH1cblxuICAgIGlmIChoaXRsRXhlY3V0aW9uQ29udGV4dCkge1xuICAgICAgc2Vzc2lvbkhpdGxDb250ZXh0LnNldChzZXNzaW9uSWQsIGhpdGxFeGVjdXRpb25Db250ZXh0KVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKClcbiAgICBjb25zdCBhY3RpdmU6IEFjdGl2ZVN0cmVhbSA9IHsgc2Vzc2lvbklkLCBjb250cm9sbGVyLCBpc1N0b3BwZWQ6IGZhbHNlIH1cbiAgICBhY3RpdmVTdHJlYW1zLnNldChzZXNzaW9uSWQsIGFjdGl2ZSlcblxuICAgIHN0b3JlKCkuZW5zdXJlU2Vzc2lvbihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7XG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgZXJyb3I6IG51bGwsXG4gICAgICBpc0xvYWRpbmc6IHRydWUsXG4gICAgICBpc1dyaXRpbmc6IGZhbHNlLFxuICAgICAgLi4uKGFnZW50SWQgIT0gbnVsbCA/IHsgYWdlbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGFnZW50TmFtZSAhPSBudWxsID8geyBhZ2VudE5hbWUgfSA6IHt9KSxcbiAgICB9KVxuICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ3RoaW5raW5nJylcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5zdGFydChzZXNzaW9uSWQsIHBsYWNlaG9sZGVySWQpXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHJlc29sdmVJbml0aWFsSGl0bFN0cmVhbUFjdGl2aXR5KHQsIGhpdGxFeGVjdXRpb25Db250ZXh0ID8/IHNlc3Npb25IaXRsQ29udGV4dC5nZXQoc2Vzc2lvbklkKSA/PyB1bmRlZmluZWQpXG4gICAgKVxuXG4gICAgY29uc3Qgc3NlUGFyYW1zOiBTdGFydFN0cmVhbVBhcmFtcyA9IHtcbiAgICAgIHNlc3Npb25JZCxcbiAgICAgIHBsYWNlaG9sZGVySWQsXG4gICAgICByZXF1ZXN0OiB7fSBhcyBPcmNoZXN0cmF0b3JSZXF1ZXN0LFxuICAgICAgY2FsbGJhY2tzLFxuICAgICAgdCxcbiAgICAgIGhpdGxFeGVjdXRpb25Db250ZXh0OiBoaXRsRXhlY3V0aW9uQ29udGV4dCA/PyBzZXNzaW9uSGl0bENvbnRleHQuZ2V0KHNlc3Npb25JZCksXG4gICAgICBhZ2VudElkLFxuICAgICAgYWdlbnROYW1lLFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKGNvbnRpbnVlUmVxdWVzdCwgY29udHJvbGxlci5zaWduYWwpXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgY29udGludWUtdGhyZWFkIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YClcbiAgICAgIH1cbiAgICAgIGF3YWl0IHBhcnNlU2Vzc2lvblNTRShyZXNwb25zZSwgYWN0aXZlLCBzc2VQYXJhbXMpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghYWN0aXZlLmlzU3RvcHBlZCkge1xuICAgICAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBudWxsKVxuICAgICAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdlcnJvcicpXG4gICAgICAgIGNhbGxiYWNrcy5vbkVycm9yPy4oKVxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgICBzZXNzaW9uSGl0bENvbnRleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBSZWdlbmVyYSBsYSByZXNwdWVzdGEgZGUgdW4gdHVybm8gKGByZXRyeV9jb21wbGV0aW9uYCkg4oCUIG1pc21vIG1vdG9yIFNTRSBxdWUgb3JjaGVzdHJhdG9yLiAqL1xuICBhc3luYyBzdGFydFJldHJ5U3RyZWFtKHBhcmFtczogU3RhcnRSZXRyeVN0cmVhbVBhcmFtcyk6IFByb21pc2U8U3RhcnRTdHJlYW1SZXN1bHQ+IHtcbiAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcblxuICAgIGNvbnN0IHsgc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkLCByZXRyeVJlcXVlc3QsIGNhbGxiYWNrcywgdCwgYWN0aXZpdHlPcHRpb25zLCBhZ2VudElkLCBhZ2VudE5hbWUgfSA9IHBhcmFtc1xuXG4gICAgaWYgKGlzU3RyZWFtQWN0aXZlKHNlc3Npb25JZCkpIHtcbiAgICAgIHJldHVybiB7IHN0YXJ0ZWQ6IGZhbHNlLCByZWFzb246ICdhbHJlYWR5X2FjdGl2ZScgfVxuICAgIH1cbiAgICBpZiAoZ2V0QWN0aXZlU3RyZWFtQ291bnQoKSA+PSBNQVhfQ09OQ1VSUkVOVF9TVFJFQU1TKSB7XG4gICAgICByZXR1cm4geyBzdGFydGVkOiBmYWxzZSwgcmVhc29uOiAnbGltaXQnIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpXG4gICAgY29uc3QgYWN0aXZlOiBBY3RpdmVTdHJlYW0gPSB7IHNlc3Npb25JZCwgY29udHJvbGxlciwgaXNTdG9wcGVkOiBmYWxzZSB9XG4gICAgYWN0aXZlU3RyZWFtcy5zZXQoc2Vzc2lvbklkLCBhY3RpdmUpXG5cbiAgICBzdG9yZSgpLmVuc3VyZVNlc3Npb24oc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwge1xuICAgICAgcGxhY2Vob2xkZXJJZCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgICAgaXNMb2FkaW5nOiB0cnVlLFxuICAgICAgaXNXcml0aW5nOiBmYWxzZSxcbiAgICAgIC4uLihhZ2VudElkICE9IG51bGwgPyB7IGFnZW50SWQgfSA6IHt9KSxcbiAgICAgIC4uLihhZ2VudE5hbWUgIT0gbnVsbCA/IHsgYWdlbnROYW1lIH0gOiB7fSksXG4gICAgfSlcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICd0aGlua2luZycpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuc3RhcnQoc2Vzc2lvbklkLCBwbGFjZWhvbGRlcklkKVxuICAgIHN0b3JlKCkuc2V0QWN0aXZpdHkoc2Vzc2lvbklkLCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkodCwgYWN0aXZpdHlPcHRpb25zID8/IHt9KSlcblxuICAgIGNvbnN0IHNzZVBhcmFtczogU3RhcnRTdHJlYW1QYXJhbXMgPSB7XG4gICAgICBzZXNzaW9uSWQsXG4gICAgICBwbGFjZWhvbGRlcklkLFxuICAgICAgcmVxdWVzdDoge30gYXMgT3JjaGVzdHJhdG9yUmVxdWVzdCxcbiAgICAgIGNhbGxiYWNrcyxcbiAgICAgIHQsXG4gICAgICBhY3Rpdml0eU9wdGlvbnMsXG4gICAgICBhZ2VudElkLFxuICAgICAgYWdlbnROYW1lLFxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLnJldHJ5Q29tcGxldGlvbihyZXRyeVJlcXVlc3QsIGNvbnRyb2xsZXIuc2lnbmFsKVxuICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MDQpIHtcbiAgICAgICAgICBsZXQgZGV0YWlsOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGF0YSA9IChhd2FpdCByZXNwb25zZS5qc29uKCkpIGFzIHsgZGV0YWlsPzogc3RyaW5nIH1cbiAgICAgICAgICAgIGRldGFpbCA9IHR5cGVvZiBkYXRhLmRldGFpbCA9PT0gJ3N0cmluZycgPyBkYXRhLmRldGFpbCA6IHVuZGVmaW5lZFxuICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgZGV0YWlsID0gdW5kZWZpbmVkXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChkZXRhaWwgPT09ICdUdXJuIG5vdCBmb3VuZCcpIHtcbiAgICAgICAgICAgIHNlc3Npb25TdHJlYW1pbmdUZXh0LmNsZWFyKHNlc3Npb25JZClcbiAgICAgICAgICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlLCBwbGFjZWhvbGRlcklkOiBudWxsIH0pXG4gICAgICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2lkbGUnKVxuICAgICAgICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnRlZDogZmFsc2UsIHJlYXNvbjogJ3R1cm5fbm90X2ZvdW5kJyB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0cnlfY29tcGxldGlvbiBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzfWApXG4gICAgICB9XG4gICAgICBhd2FpdCBwYXJzZVNlc3Npb25TU0UocmVzcG9uc2UsIGFjdGl2ZSwgc3NlUGFyYW1zKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoIWFjdGl2ZS5pc1N0b3BwZWQpIHtcbiAgICAgICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgICAgICBzdG9yZSgpLnBhdGNoTWV0YShzZXNzaW9uSWQsIHsgaXNMb2FkaW5nOiBmYWxzZSwgaXNXcml0aW5nOiBmYWxzZSB9KVxuICAgICAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICAgICAgc3RvcmUoKS5zZXRTdGF0dXMoc2Vzc2lvbklkLCAnZXJyb3InKVxuICAgICAgICBjYWxsYmFja3Mub25FcnJvcj8uKClcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXJ0ZWQ6IHRydWUgfVxuICB9LFxuXG4gIC8qKiBDYW5jZWxhY2nDs24gZXhwbMOtY2l0YSBkZWwgdXN1YXJpbyAobWVuc2FqZSBcImNhbmNlbGFkb1wiKS4gKi9cbiAgc3RvcFN0cmVhbShzZXNzaW9uSWQ6IHN0cmluZywgY2FsbGJhY2tzPzogU2Vzc2lvblN0cmVhbUNhbGxiYWNrcykge1xuICAgIGNvbnN0IGFjdGl2ZSA9IGFjdGl2ZVN0cmVhbXMuZ2V0KHNlc3Npb25JZClcbiAgICBpZiAoIWFjdGl2ZSkgcmV0dXJuXG4gICAgYWN0aXZlLmlzU3RvcHBlZCA9IHRydWVcbiAgICBhY3RpdmUuY29udHJvbGxlci5hYm9ydCgpXG4gICAgYWN0aXZlU3RyZWFtcy5kZWxldGUoc2Vzc2lvbklkKVxuICAgIC8vIEVsIHBhcmNpYWwgc2UgcmVzY2F0YSBhbnRlcyBkZSBsaW1waWFyOiBlbCBiYWNrZW5kIGxvIHBlcnNpc3RlLCBwZXJvIHNpIG5vIGxvXG4gICAgLy8gcGFzYW1vcyBhbCBjYWxsYmFjayBkZXNhcGFyZWNlIGRlIHBhbnRhbGxhIGhhc3RhIGVsIHByw7N4aW1vIGZldGNoIGRlIGxhIHNlc2nDs24uXG4gICAgY29uc3QgcGFydGlhbFRleHQgPSBzZXNzaW9uU3RyZWFtaW5nVGV4dC5nZXRTbmFwc2hvdChzZXNzaW9uSWQpLnRleHRcbiAgICBzZXNzaW9uU3RyZWFtaW5nVGV4dC5jbGVhcihzZXNzaW9uSWQpXG4gICAgc3RvcmUoKS5wYXRjaE1ldGEoc2Vzc2lvbklkLCB7IGlzTG9hZGluZzogZmFsc2UsIGlzV3JpdGluZzogZmFsc2UgfSlcbiAgICBzdG9yZSgpLnNldEFjdGl2aXR5KHNlc3Npb25JZCwgbnVsbClcbiAgICBzdG9yZSgpLnNldFN0YXR1cyhzZXNzaW9uSWQsICdjYW5jZWxsZWQnKVxuICAgIGNhbGxiYWNrcz8ub25TdG9wPy4ocGFydGlhbFRleHQpXG4gIH0sXG5cbiAgLyoqIEFib3J0YSBzaW4gbWFyY2FyIFwiY2FuY2VsYWRvXCIgKHVzbyBpbnRlcm5vIC8gbGltcGllemEpLiAqL1xuICBhYm9ydFNpbGVudGx5KHNlc3Npb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aXZlID0gYWN0aXZlU3RyZWFtcy5nZXQoc2Vzc2lvbklkKVxuICAgIGlmICghYWN0aXZlKSByZXR1cm5cbiAgICBhY3RpdmUuaXNTdG9wcGVkID0gdHJ1ZVxuICAgIGFjdGl2ZS5jb250cm9sbGVyLmFib3J0KClcbiAgICBhY3RpdmVTdHJlYW1zLmRlbGV0ZShzZXNzaW9uSWQpXG4gICAgc2Vzc2lvblN0cmVhbWluZ1RleHQuY2xlYXIoc2Vzc2lvbklkKVxuICAgIHN0b3JlKCkucGF0Y2hNZXRhKHNlc3Npb25JZCwgeyBpc0xvYWRpbmc6IGZhbHNlLCBpc1dyaXRpbmc6IGZhbHNlIH0pXG4gICAgc3RvcmUoKS5zZXRBY3Rpdml0eShzZXNzaW9uSWQsIG51bGwpXG4gICAgaWYgKHN0b3JlKCkuZ2V0TWV0YShzZXNzaW9uSWQpPy5zdGF0dXMgIT09ICdjb21wbGV0ZScpIHtcbiAgICAgIHN0b3JlKCkuc2V0U3RhdHVzKHNlc3Npb25JZCwgJ2lkbGUnKVxuICAgIH1cbiAgfSxcblxuICBhYm9ydEFsbCgpIHtcbiAgICBBcnJheS5mcm9tKGFjdGl2ZVN0cmVhbXMua2V5cygpKS5mb3JFYWNoKHNlc3Npb25JZCA9PiB0aGlzLmFib3J0U2lsZW50bHkoc2Vzc2lvbklkKSlcbiAgfSxcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBT0EsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUNFQyx3QkFBd0IsRUFDeEJDLHlCQUF5QixFQUN6QkMsd0JBQXdCLEVBQ3hCQyw2QkFBNkIsRUFDN0JDLGdDQUFnQyxFQUNoQ0Msc0JBQXNCLFFBQ2pCLG9DQUFvQztBQUUzQyxTQUFTQyx3QkFBd0IsRUFBRUMsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQ3pGLFNBQVNDLGNBQWMsUUFBUSwrQkFBK0I7QUFFOUQsU0FBU0Msb0JBQW9CLFFBQVEsd0JBQXdCO0FBQzdELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUFTQyxxQ0FBcUMsUUFBUSx3QkFBd0I7QUFDOUUsU0FBU0Msa0JBQWtCLFFBQVEsc0JBQXNCOztBQU96RDs7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLHNCQUFzQixHQUFHLENBQUM7QUFFdkMsSUFBTUMsa0JBQWtCLEdBQUcsRUFBRTtBQUU3QixJQUFNQyxhQUFhLEdBQUcsSUFBSUMsR0FBRyxDQUF1QixDQUFDO0FBRXJELElBQU1DLEtBQUssR0FBRyxTQUFSQSxLQUFLQSxDQUFBO0VBQUEsT0FBU1AsZ0JBQWdC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
|