@adstore/templates 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resize-observer-e4b9a440.js +288 -0
- package/dist/style.css +1 -1627
- package/dist/templates.es.js +1934 -2713
- package/dist/templates.umd.js +5 -3595
- package/package.json +1 -1
package/dist/templates.umd.js
CHANGED
@@ -1,3595 +1,5 @@
|
|
1
|
-
(function(
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
|
6
|
-
var classnamesExports = {};
|
7
|
-
var classnames = {
|
8
|
-
get exports() {
|
9
|
-
return classnamesExports;
|
10
|
-
},
|
11
|
-
set exports(v2) {
|
12
|
-
classnamesExports = v2;
|
13
|
-
}
|
14
|
-
};
|
15
|
-
/*!
|
16
|
-
Copyright (c) 2018 Jed Watson.
|
17
|
-
Licensed under the MIT License (MIT), see
|
18
|
-
http://jedwatson.github.io/classnames
|
19
|
-
*/
|
20
|
-
(function(module2) {
|
21
|
-
(function() {
|
22
|
-
var hasOwn = {}.hasOwnProperty;
|
23
|
-
function classNames2() {
|
24
|
-
var classes = [];
|
25
|
-
for (var i2 = 0; i2 < arguments.length; i2++) {
|
26
|
-
var arg = arguments[i2];
|
27
|
-
if (!arg)
|
28
|
-
continue;
|
29
|
-
var argType = typeof arg;
|
30
|
-
if (argType === "string" || argType === "number") {
|
31
|
-
classes.push(arg);
|
32
|
-
} else if (Array.isArray(arg)) {
|
33
|
-
if (arg.length) {
|
34
|
-
var inner2 = classNames2.apply(null, arg);
|
35
|
-
if (inner2) {
|
36
|
-
classes.push(inner2);
|
37
|
-
}
|
38
|
-
}
|
39
|
-
} else if (argType === "object") {
|
40
|
-
if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes("[native code]")) {
|
41
|
-
classes.push(arg.toString());
|
42
|
-
continue;
|
43
|
-
}
|
44
|
-
for (var key in arg) {
|
45
|
-
if (hasOwn.call(arg, key) && arg[key]) {
|
46
|
-
classes.push(key);
|
47
|
-
}
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
51
|
-
return classes.join(" ");
|
52
|
-
}
|
53
|
-
if (module2.exports) {
|
54
|
-
classNames2.default = classNames2;
|
55
|
-
module2.exports = classNames2;
|
56
|
-
} else {
|
57
|
-
window.classNames = classNames2;
|
58
|
-
}
|
59
|
-
})();
|
60
|
-
})(classnames);
|
61
|
-
const classNames = classnamesExports;
|
62
|
-
var t, r, u, i, o$1 = 0, f = [], c = [], e = preact.options.__b, a = preact.options.__r, v = preact.options.diffed, l = preact.options.__c, m = preact.options.unmount;
|
63
|
-
function d(t2, u2) {
|
64
|
-
preact.options.__h && preact.options.__h(r, t2, o$1 || u2), o$1 = 0;
|
65
|
-
var i2 = r.__H || (r.__H = { __: [], __h: [] });
|
66
|
-
return t2 >= i2.__.length && i2.__.push({ __V: c }), i2.__[t2];
|
67
|
-
}
|
68
|
-
function h(n) {
|
69
|
-
return o$1 = 1, s(B$1, n);
|
70
|
-
}
|
71
|
-
function s(n, u2, i2) {
|
72
|
-
var o2 = d(t++, 2);
|
73
|
-
if (o2.t = n, !o2.__c && (o2.__ = [i2 ? i2(u2) : B$1(void 0, u2), function(n2) {
|
74
|
-
var t2 = o2.__N ? o2.__N[0] : o2.__[0], r2 = o2.t(t2, n2);
|
75
|
-
t2 !== r2 && (o2.__N = [r2, o2.__[1]], o2.__c.setState({}));
|
76
|
-
}], o2.__c = r, !r.u)) {
|
77
|
-
var f2 = function(n2, t2, r2) {
|
78
|
-
if (!o2.__c.__H)
|
79
|
-
return true;
|
80
|
-
var u3 = o2.__c.__H.__.filter(function(n3) {
|
81
|
-
return n3.__c;
|
82
|
-
});
|
83
|
-
if (u3.every(function(n3) {
|
84
|
-
return !n3.__N;
|
85
|
-
}))
|
86
|
-
return !c2 || c2.call(this, n2, t2, r2);
|
87
|
-
var i3 = false;
|
88
|
-
return u3.forEach(function(n3) {
|
89
|
-
if (n3.__N) {
|
90
|
-
var t3 = n3.__[0];
|
91
|
-
n3.__ = n3.__N, n3.__N = void 0, t3 !== n3.__[0] && (i3 = true);
|
92
|
-
}
|
93
|
-
}), !(!i3 && o2.__c.props === n2) && (!c2 || c2.call(this, n2, t2, r2));
|
94
|
-
};
|
95
|
-
r.u = true;
|
96
|
-
var c2 = r.shouldComponentUpdate, e2 = r.componentWillUpdate;
|
97
|
-
r.componentWillUpdate = function(n2, t2, r2) {
|
98
|
-
if (this.__e) {
|
99
|
-
var u3 = c2;
|
100
|
-
c2 = void 0, f2(n2, t2, r2), c2 = u3;
|
101
|
-
}
|
102
|
-
e2 && e2.call(this, n2, t2, r2);
|
103
|
-
}, r.shouldComponentUpdate = f2;
|
104
|
-
}
|
105
|
-
return o2.__N || o2.__;
|
106
|
-
}
|
107
|
-
function p(u2, i2) {
|
108
|
-
var o2 = d(t++, 3);
|
109
|
-
!preact.options.__s && z(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r.__H.__h.push(o2));
|
110
|
-
}
|
111
|
-
function y(u2, i2) {
|
112
|
-
var o2 = d(t++, 4);
|
113
|
-
!preact.options.__s && z(o2.__H, i2) && (o2.__ = u2, o2.i = i2, r.__h.push(o2));
|
114
|
-
}
|
115
|
-
function _$1(n) {
|
116
|
-
return o$1 = 5, F$1(function() {
|
117
|
-
return { current: n };
|
118
|
-
}, []);
|
119
|
-
}
|
120
|
-
function A(n, t2, r2) {
|
121
|
-
o$1 = 6, y(function() {
|
122
|
-
return "function" == typeof n ? (n(t2()), function() {
|
123
|
-
return n(null);
|
124
|
-
}) : n ? (n.current = t2(), function() {
|
125
|
-
return n.current = null;
|
126
|
-
}) : void 0;
|
127
|
-
}, null == r2 ? r2 : r2.concat(n));
|
128
|
-
}
|
129
|
-
function F$1(n, r2) {
|
130
|
-
var u2 = d(t++, 7);
|
131
|
-
return z(u2.__H, r2) ? (u2.__V = n(), u2.i = r2, u2.__h = n, u2.__V) : u2.__;
|
132
|
-
}
|
133
|
-
function q$1(n) {
|
134
|
-
var u2 = r.context[n.__c], i2 = d(t++, 9);
|
135
|
-
return i2.c = n, u2 ? (null == i2.__ && (i2.__ = true, u2.sub(r)), u2.props.value) : n.__;
|
136
|
-
}
|
137
|
-
function b() {
|
138
|
-
for (var t2; t2 = f.shift(); )
|
139
|
-
if (t2.__P && t2.__H)
|
140
|
-
try {
|
141
|
-
t2.__H.__h.forEach(k$1), t2.__H.__h.forEach(w$1), t2.__H.__h = [];
|
142
|
-
} catch (r2) {
|
143
|
-
t2.__H.__h = [], preact.options.__e(r2, t2.__v);
|
144
|
-
}
|
145
|
-
}
|
146
|
-
preact.options.__b = function(n) {
|
147
|
-
r = null, e && e(n);
|
148
|
-
}, preact.options.__r = function(n) {
|
149
|
-
a && a(n), t = 0;
|
150
|
-
var i2 = (r = n.__c).__H;
|
151
|
-
i2 && (u === r ? (i2.__h = [], r.__h = [], i2.__.forEach(function(n2) {
|
152
|
-
n2.__N && (n2.__ = n2.__N), n2.__V = c, n2.__N = n2.i = void 0;
|
153
|
-
})) : (i2.__h.forEach(k$1), i2.__h.forEach(w$1), i2.__h = [])), u = r;
|
154
|
-
}, preact.options.diffed = function(t2) {
|
155
|
-
v && v(t2);
|
156
|
-
var o2 = t2.__c;
|
157
|
-
o2 && o2.__H && (o2.__H.__h.length && (1 !== f.push(o2) && i === preact.options.requestAnimationFrame || ((i = preact.options.requestAnimationFrame) || j)(b)), o2.__H.__.forEach(function(n) {
|
158
|
-
n.i && (n.__H = n.i), n.__V !== c && (n.__ = n.__V), n.i = void 0, n.__V = c;
|
159
|
-
})), u = r = null;
|
160
|
-
}, preact.options.__c = function(t2, r2) {
|
161
|
-
r2.some(function(t3) {
|
162
|
-
try {
|
163
|
-
t3.__h.forEach(k$1), t3.__h = t3.__h.filter(function(n) {
|
164
|
-
return !n.__ || w$1(n);
|
165
|
-
});
|
166
|
-
} catch (u2) {
|
167
|
-
r2.some(function(n) {
|
168
|
-
n.__h && (n.__h = []);
|
169
|
-
}), r2 = [], preact.options.__e(u2, t3.__v);
|
170
|
-
}
|
171
|
-
}), l && l(t2, r2);
|
172
|
-
}, preact.options.unmount = function(t2) {
|
173
|
-
m && m(t2);
|
174
|
-
var r2, u2 = t2.__c;
|
175
|
-
u2 && u2.__H && (u2.__H.__.forEach(function(n) {
|
176
|
-
try {
|
177
|
-
k$1(n);
|
178
|
-
} catch (n2) {
|
179
|
-
r2 = n2;
|
180
|
-
}
|
181
|
-
}), u2.__H = void 0, r2 && preact.options.__e(r2, u2.__v));
|
182
|
-
};
|
183
|
-
var g$1 = "function" == typeof requestAnimationFrame;
|
184
|
-
function j(n) {
|
185
|
-
var t2, r2 = function() {
|
186
|
-
clearTimeout(u2), g$1 && cancelAnimationFrame(t2), setTimeout(n);
|
187
|
-
}, u2 = setTimeout(r2, 100);
|
188
|
-
g$1 && (t2 = requestAnimationFrame(r2));
|
189
|
-
}
|
190
|
-
function k$1(n) {
|
191
|
-
var t2 = r, u2 = n.__c;
|
192
|
-
"function" == typeof u2 && (n.__c = void 0, u2()), r = t2;
|
193
|
-
}
|
194
|
-
function w$1(n) {
|
195
|
-
var t2 = r;
|
196
|
-
n.__c = n.__(), r = t2;
|
197
|
-
}
|
198
|
-
function z(n, t2) {
|
199
|
-
return !n || n.length !== t2.length || t2.some(function(t3, r2) {
|
200
|
-
return t3 !== n[r2];
|
201
|
-
});
|
202
|
-
}
|
203
|
-
function B$1(n, t2) {
|
204
|
-
return "function" == typeof t2 ? t2(n) : t2;
|
205
|
-
}
|
206
|
-
function g(n, t2) {
|
207
|
-
for (var e2 in t2)
|
208
|
-
n[e2] = t2[e2];
|
209
|
-
return n;
|
210
|
-
}
|
211
|
-
function C(n, t2) {
|
212
|
-
for (var e2 in n)
|
213
|
-
if ("__source" !== e2 && !(e2 in t2))
|
214
|
-
return true;
|
215
|
-
for (var r2 in t2)
|
216
|
-
if ("__source" !== r2 && n[r2] !== t2[r2])
|
217
|
-
return true;
|
218
|
-
return false;
|
219
|
-
}
|
220
|
-
function w(n) {
|
221
|
-
this.props = n;
|
222
|
-
}
|
223
|
-
(w.prototype = new preact.Component()).isPureReactComponent = true, w.prototype.shouldComponentUpdate = function(n, t2) {
|
224
|
-
return C(this.props, n) || C(this.state, t2);
|
225
|
-
};
|
226
|
-
var R = preact.options.__b;
|
227
|
-
preact.options.__b = function(n) {
|
228
|
-
n.type && n.type.__f && n.ref && (n.props.ref = n.ref, n.ref = null), R && R(n);
|
229
|
-
};
|
230
|
-
var N = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.forward_ref") || 3911;
|
231
|
-
function k(n) {
|
232
|
-
function t2(t3) {
|
233
|
-
var e2 = g({}, t3);
|
234
|
-
return delete e2.ref, n(e2, t3.ref || null);
|
235
|
-
}
|
236
|
-
return t2.$$typeof = N, t2.render = t2, t2.prototype.isReactComponent = t2.__f = true, t2.displayName = "ForwardRef(" + (n.displayName || n.name) + ")", t2;
|
237
|
-
}
|
238
|
-
var T = preact.options.__e;
|
239
|
-
preact.options.__e = function(n, t2, e2, r2) {
|
240
|
-
if (n.then) {
|
241
|
-
for (var u2, o2 = t2; o2 = o2.__; )
|
242
|
-
if ((u2 = o2.__c) && u2.__c)
|
243
|
-
return null == t2.__e && (t2.__e = e2.__e, t2.__k = e2.__k), u2.__c(n, t2);
|
244
|
-
}
|
245
|
-
T(n, t2, e2, r2);
|
246
|
-
};
|
247
|
-
var I = preact.options.unmount;
|
248
|
-
function L(n, t2, e2) {
|
249
|
-
return n && (n.__c && n.__c.__H && (n.__c.__H.__.forEach(function(n2) {
|
250
|
-
"function" == typeof n2.__c && n2.__c();
|
251
|
-
}), n.__c.__H = null), null != (n = g({}, n)).__c && (n.__c.__P === e2 && (n.__c.__P = t2), n.__c = null), n.__k = n.__k && n.__k.map(function(n2) {
|
252
|
-
return L(n2, t2, e2);
|
253
|
-
})), n;
|
254
|
-
}
|
255
|
-
function U(n, t2, e2) {
|
256
|
-
return n && (n.__v = null, n.__k = n.__k && n.__k.map(function(n2) {
|
257
|
-
return U(n2, t2, e2);
|
258
|
-
}), n.__c && n.__c.__P === t2 && (n.__e && e2.insertBefore(n.__e, n.__d), n.__c.__e = true, n.__c.__P = e2)), n;
|
259
|
-
}
|
260
|
-
function D() {
|
261
|
-
this.__u = 0, this.t = null, this.__b = null;
|
262
|
-
}
|
263
|
-
function F(n) {
|
264
|
-
var t2 = n.__.__c;
|
265
|
-
return t2 && t2.__a && t2.__a(n);
|
266
|
-
}
|
267
|
-
function V() {
|
268
|
-
this.u = null, this.o = null;
|
269
|
-
}
|
270
|
-
preact.options.unmount = function(n) {
|
271
|
-
var t2 = n.__c;
|
272
|
-
t2 && t2.__R && t2.__R(), t2 && true === n.__h && (n.type = null), I && I(n);
|
273
|
-
}, (D.prototype = new preact.Component()).__c = function(n, t2) {
|
274
|
-
var e2 = t2.__c, r2 = this;
|
275
|
-
null == r2.t && (r2.t = []), r2.t.push(e2);
|
276
|
-
var u2 = F(r2.__v), o2 = false, i2 = function() {
|
277
|
-
o2 || (o2 = true, e2.__R = null, u2 ? u2(l2) : l2());
|
278
|
-
};
|
279
|
-
e2.__R = i2;
|
280
|
-
var l2 = function() {
|
281
|
-
if (!--r2.__u) {
|
282
|
-
if (r2.state.__a) {
|
283
|
-
var n2 = r2.state.__a;
|
284
|
-
r2.__v.__k[0] = U(n2, n2.__c.__P, n2.__c.__O);
|
285
|
-
}
|
286
|
-
var t3;
|
287
|
-
for (r2.setState({ __a: r2.__b = null }); t3 = r2.t.pop(); )
|
288
|
-
t3.forceUpdate();
|
289
|
-
}
|
290
|
-
}, c2 = true === t2.__h;
|
291
|
-
r2.__u++ || c2 || r2.setState({ __a: r2.__b = r2.__v.__k[0] }), n.then(i2, i2);
|
292
|
-
}, D.prototype.componentWillUnmount = function() {
|
293
|
-
this.t = [];
|
294
|
-
}, D.prototype.render = function(n, e2) {
|
295
|
-
if (this.__b) {
|
296
|
-
if (this.__v.__k) {
|
297
|
-
var r2 = document.createElement("div"), o2 = this.__v.__k[0].__c;
|
298
|
-
this.__v.__k[0] = L(this.__b, r2, o2.__O = o2.__P);
|
299
|
-
}
|
300
|
-
this.__b = null;
|
301
|
-
}
|
302
|
-
var i2 = e2.__a && preact.createElement(preact.Fragment, null, n.fallback);
|
303
|
-
return i2 && (i2.__h = null), [preact.createElement(preact.Fragment, null, e2.__a ? null : n.children), i2];
|
304
|
-
};
|
305
|
-
var W = function(n, t2, e2) {
|
306
|
-
if (++e2[1] === e2[0] && n.o.delete(t2), n.props.revealOrder && ("t" !== n.props.revealOrder[0] || !n.o.size))
|
307
|
-
for (e2 = n.u; e2; ) {
|
308
|
-
for (; e2.length > 3; )
|
309
|
-
e2.pop()();
|
310
|
-
if (e2[1] < e2[0])
|
311
|
-
break;
|
312
|
-
n.u = e2 = e2[2];
|
313
|
-
}
|
314
|
-
};
|
315
|
-
(V.prototype = new preact.Component()).__a = function(n) {
|
316
|
-
var t2 = this, e2 = F(t2.__v), r2 = t2.o.get(n);
|
317
|
-
return r2[0]++, function(u2) {
|
318
|
-
var o2 = function() {
|
319
|
-
t2.props.revealOrder ? (r2.push(u2), W(t2, n, r2)) : u2();
|
320
|
-
};
|
321
|
-
e2 ? e2(o2) : o2();
|
322
|
-
};
|
323
|
-
}, V.prototype.render = function(n) {
|
324
|
-
this.u = null, this.o = /* @__PURE__ */ new Map();
|
325
|
-
var t2 = preact.toChildArray(n.children);
|
326
|
-
n.revealOrder && "b" === n.revealOrder[0] && t2.reverse();
|
327
|
-
for (var e2 = t2.length; e2--; )
|
328
|
-
this.o.set(t2[e2], this.u = [1, 0, this.u]);
|
329
|
-
return n.children;
|
330
|
-
}, V.prototype.componentDidUpdate = V.prototype.componentDidMount = function() {
|
331
|
-
var n = this;
|
332
|
-
this.o.forEach(function(t2, e2) {
|
333
|
-
W(n, e2, t2);
|
334
|
-
});
|
335
|
-
};
|
336
|
-
var B = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103, H = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, Z = /^on(Ani|Tra|Tou|BeforeInp|Compo)/, Y = /[A-Z0-9]/g, $ = "undefined" != typeof document, q = function(n) {
|
337
|
-
return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n);
|
338
|
-
};
|
339
|
-
preact.Component.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t2) {
|
340
|
-
Object.defineProperty(preact.Component.prototype, t2, { configurable: true, get: function() {
|
341
|
-
return this["UNSAFE_" + t2];
|
342
|
-
}, set: function(n) {
|
343
|
-
Object.defineProperty(this, t2, { configurable: true, writable: true, value: n });
|
344
|
-
} });
|
345
|
-
});
|
346
|
-
var K = preact.options.event;
|
347
|
-
function Q() {
|
348
|
-
}
|
349
|
-
function X() {
|
350
|
-
return this.cancelBubble;
|
351
|
-
}
|
352
|
-
function nn() {
|
353
|
-
return this.defaultPrevented;
|
354
|
-
}
|
355
|
-
preact.options.event = function(n) {
|
356
|
-
return K && (n = K(n)), n.persist = Q, n.isPropagationStopped = X, n.isDefaultPrevented = nn, n.nativeEvent = n;
|
357
|
-
};
|
358
|
-
var en = { enumerable: false, configurable: true, get: function() {
|
359
|
-
return this.class;
|
360
|
-
} }, rn = preact.options.vnode;
|
361
|
-
preact.options.vnode = function(n) {
|
362
|
-
"string" == typeof n.type && function(n2) {
|
363
|
-
var t2 = n2.props, e2 = n2.type, u2 = {};
|
364
|
-
for (var o2 in t2) {
|
365
|
-
var i2 = t2[o2];
|
366
|
-
if (!("value" === o2 && "defaultValue" in t2 && null == i2 || $ && "children" === o2 && "noscript" === e2 || "class" === o2 || "className" === o2)) {
|
367
|
-
var l2 = o2.toLowerCase();
|
368
|
-
"defaultValue" === o2 && "value" in t2 && null == t2.value ? o2 = "value" : "download" === o2 && true === i2 ? i2 = "" : "ondoubleclick" === l2 ? o2 = "ondblclick" : "onchange" !== l2 || "input" !== e2 && "textarea" !== e2 || q(t2.type) ? "onfocus" === l2 ? o2 = "onfocusin" : "onblur" === l2 ? o2 = "onfocusout" : Z.test(o2) ? o2 = l2 : -1 === e2.indexOf("-") && H.test(o2) ? o2 = o2.replace(Y, "-$&").toLowerCase() : null === i2 && (i2 = void 0) : l2 = o2 = "oninput", "oninput" === l2 && u2[o2 = l2] && (o2 = "oninputCapture"), u2[o2] = i2;
|
369
|
-
}
|
370
|
-
}
|
371
|
-
"select" == e2 && u2.multiple && Array.isArray(u2.value) && (u2.value = preact.toChildArray(t2.children).forEach(function(n3) {
|
372
|
-
n3.props.selected = -1 != u2.value.indexOf(n3.props.value);
|
373
|
-
})), "select" == e2 && null != u2.defaultValue && (u2.value = preact.toChildArray(t2.children).forEach(function(n3) {
|
374
|
-
n3.props.selected = u2.multiple ? -1 != u2.defaultValue.indexOf(n3.props.value) : u2.defaultValue == n3.props.value;
|
375
|
-
})), t2.class && !t2.className ? (u2.class = t2.class, Object.defineProperty(u2, "className", en)) : (t2.className && !t2.class || t2.class && t2.className) && (u2.class = u2.className = t2.className), n2.props = u2;
|
376
|
-
}(n), n.$$typeof = B, rn && rn(n);
|
377
|
-
};
|
378
|
-
var un = preact.options.__r;
|
379
|
-
preact.options.__r = function(n) {
|
380
|
-
un && un(n), n.__c;
|
381
|
-
};
|
382
|
-
var on = preact.options.diffed;
|
383
|
-
preact.options.diffed = function(n) {
|
384
|
-
on && on(n);
|
385
|
-
var t2 = n.props, e2 = n.__e;
|
386
|
-
null != e2 && "textarea" === n.type && "value" in t2 && t2.value !== e2.value && (e2.value = null == t2.value ? "" : t2.value);
|
387
|
-
};
|
388
|
-
function listCacheClear$1() {
|
389
|
-
this.__data__ = [];
|
390
|
-
this.size = 0;
|
391
|
-
}
|
392
|
-
var _listCacheClear = listCacheClear$1;
|
393
|
-
function eq$4(value, other) {
|
394
|
-
return value === other || value !== value && other !== other;
|
395
|
-
}
|
396
|
-
var eq_1 = eq$4;
|
397
|
-
var eq$3 = eq_1;
|
398
|
-
function assocIndexOf$4(array, key) {
|
399
|
-
var length = array.length;
|
400
|
-
while (length--) {
|
401
|
-
if (eq$3(array[length][0], key)) {
|
402
|
-
return length;
|
403
|
-
}
|
404
|
-
}
|
405
|
-
return -1;
|
406
|
-
}
|
407
|
-
var _assocIndexOf = assocIndexOf$4;
|
408
|
-
var assocIndexOf$3 = _assocIndexOf;
|
409
|
-
var arrayProto = Array.prototype;
|
410
|
-
var splice = arrayProto.splice;
|
411
|
-
function listCacheDelete$1(key) {
|
412
|
-
var data = this.__data__, index2 = assocIndexOf$3(data, key);
|
413
|
-
if (index2 < 0) {
|
414
|
-
return false;
|
415
|
-
}
|
416
|
-
var lastIndex = data.length - 1;
|
417
|
-
if (index2 == lastIndex) {
|
418
|
-
data.pop();
|
419
|
-
} else {
|
420
|
-
splice.call(data, index2, 1);
|
421
|
-
}
|
422
|
-
--this.size;
|
423
|
-
return true;
|
424
|
-
}
|
425
|
-
var _listCacheDelete = listCacheDelete$1;
|
426
|
-
var assocIndexOf$2 = _assocIndexOf;
|
427
|
-
function listCacheGet$1(key) {
|
428
|
-
var data = this.__data__, index2 = assocIndexOf$2(data, key);
|
429
|
-
return index2 < 0 ? void 0 : data[index2][1];
|
430
|
-
}
|
431
|
-
var _listCacheGet = listCacheGet$1;
|
432
|
-
var assocIndexOf$1 = _assocIndexOf;
|
433
|
-
function listCacheHas$1(key) {
|
434
|
-
return assocIndexOf$1(this.__data__, key) > -1;
|
435
|
-
}
|
436
|
-
var _listCacheHas = listCacheHas$1;
|
437
|
-
var assocIndexOf = _assocIndexOf;
|
438
|
-
function listCacheSet$1(key, value) {
|
439
|
-
var data = this.__data__, index2 = assocIndexOf(data, key);
|
440
|
-
if (index2 < 0) {
|
441
|
-
++this.size;
|
442
|
-
data.push([key, value]);
|
443
|
-
} else {
|
444
|
-
data[index2][1] = value;
|
445
|
-
}
|
446
|
-
return this;
|
447
|
-
}
|
448
|
-
var _listCacheSet = listCacheSet$1;
|
449
|
-
var listCacheClear = _listCacheClear, listCacheDelete = _listCacheDelete, listCacheGet = _listCacheGet, listCacheHas = _listCacheHas, listCacheSet = _listCacheSet;
|
450
|
-
function ListCache$4(entries) {
|
451
|
-
var index2 = -1, length = entries == null ? 0 : entries.length;
|
452
|
-
this.clear();
|
453
|
-
while (++index2 < length) {
|
454
|
-
var entry = entries[index2];
|
455
|
-
this.set(entry[0], entry[1]);
|
456
|
-
}
|
457
|
-
}
|
458
|
-
ListCache$4.prototype.clear = listCacheClear;
|
459
|
-
ListCache$4.prototype["delete"] = listCacheDelete;
|
460
|
-
ListCache$4.prototype.get = listCacheGet;
|
461
|
-
ListCache$4.prototype.has = listCacheHas;
|
462
|
-
ListCache$4.prototype.set = listCacheSet;
|
463
|
-
var _ListCache = ListCache$4;
|
464
|
-
var ListCache$3 = _ListCache;
|
465
|
-
function stackClear$1() {
|
466
|
-
this.__data__ = new ListCache$3();
|
467
|
-
this.size = 0;
|
468
|
-
}
|
469
|
-
var _stackClear = stackClear$1;
|
470
|
-
function stackDelete$1(key) {
|
471
|
-
var data = this.__data__, result = data["delete"](key);
|
472
|
-
this.size = data.size;
|
473
|
-
return result;
|
474
|
-
}
|
475
|
-
var _stackDelete = stackDelete$1;
|
476
|
-
function stackGet$1(key) {
|
477
|
-
return this.__data__.get(key);
|
478
|
-
}
|
479
|
-
var _stackGet = stackGet$1;
|
480
|
-
function stackHas$1(key) {
|
481
|
-
return this.__data__.has(key);
|
482
|
-
}
|
483
|
-
var _stackHas = stackHas$1;
|
484
|
-
var freeGlobal$1 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
|
485
|
-
var _freeGlobal = freeGlobal$1;
|
486
|
-
var freeGlobal = _freeGlobal;
|
487
|
-
var freeSelf = typeof self == "object" && self && self.Object === Object && self;
|
488
|
-
var root$i = freeGlobal || freeSelf || Function("return this")();
|
489
|
-
var _root = root$i;
|
490
|
-
var root$h = _root;
|
491
|
-
var Symbol$3 = root$h.Symbol;
|
492
|
-
var _Symbol = Symbol$3;
|
493
|
-
var Symbol$2 = _Symbol;
|
494
|
-
var objectProto$a = Object.prototype;
|
495
|
-
var hasOwnProperty$8 = objectProto$a.hasOwnProperty;
|
496
|
-
var nativeObjectToString$1 = objectProto$a.toString;
|
497
|
-
var symToStringTag$1 = Symbol$2 ? Symbol$2.toStringTag : void 0;
|
498
|
-
function getRawTag$1(value) {
|
499
|
-
var isOwn = hasOwnProperty$8.call(value, symToStringTag$1), tag = value[symToStringTag$1];
|
500
|
-
try {
|
501
|
-
value[symToStringTag$1] = void 0;
|
502
|
-
var unmasked = true;
|
503
|
-
} catch (e2) {
|
504
|
-
}
|
505
|
-
var result = nativeObjectToString$1.call(value);
|
506
|
-
if (unmasked) {
|
507
|
-
if (isOwn) {
|
508
|
-
value[symToStringTag$1] = tag;
|
509
|
-
} else {
|
510
|
-
delete value[symToStringTag$1];
|
511
|
-
}
|
512
|
-
}
|
513
|
-
return result;
|
514
|
-
}
|
515
|
-
var _getRawTag = getRawTag$1;
|
516
|
-
var objectProto$9 = Object.prototype;
|
517
|
-
var nativeObjectToString = objectProto$9.toString;
|
518
|
-
function objectToString$1(value) {
|
519
|
-
return nativeObjectToString.call(value);
|
520
|
-
}
|
521
|
-
var _objectToString = objectToString$1;
|
522
|
-
var Symbol$1 = _Symbol, getRawTag = _getRawTag, objectToString = _objectToString;
|
523
|
-
var nullTag = "[object Null]", undefinedTag = "[object Undefined]";
|
524
|
-
var symToStringTag = Symbol$1 ? Symbol$1.toStringTag : void 0;
|
525
|
-
function baseGetTag$4(value) {
|
526
|
-
if (value == null) {
|
527
|
-
return value === void 0 ? undefinedTag : nullTag;
|
528
|
-
}
|
529
|
-
return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
|
530
|
-
}
|
531
|
-
var _baseGetTag = baseGetTag$4;
|
532
|
-
function isObject$7(value) {
|
533
|
-
var type = typeof value;
|
534
|
-
return value != null && (type == "object" || type == "function");
|
535
|
-
}
|
536
|
-
var isObject_1 = isObject$7;
|
537
|
-
var baseGetTag$3 = _baseGetTag, isObject$6 = isObject_1;
|
538
|
-
var asyncTag = "[object AsyncFunction]", funcTag$1 = "[object Function]", genTag = "[object GeneratorFunction]", proxyTag = "[object Proxy]";
|
539
|
-
function isFunction$3(value) {
|
540
|
-
if (!isObject$6(value)) {
|
541
|
-
return false;
|
542
|
-
}
|
543
|
-
var tag = baseGetTag$3(value);
|
544
|
-
return tag == funcTag$1 || tag == genTag || tag == asyncTag || tag == proxyTag;
|
545
|
-
}
|
546
|
-
var isFunction_1 = isFunction$3;
|
547
|
-
var root$g = _root;
|
548
|
-
var coreJsData$1 = root$g["__core-js_shared__"];
|
549
|
-
var _coreJsData = coreJsData$1;
|
550
|
-
var coreJsData = _coreJsData;
|
551
|
-
var maskSrcKey = function() {
|
552
|
-
var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
|
553
|
-
return uid ? "Symbol(src)_1." + uid : "";
|
554
|
-
}();
|
555
|
-
function isMasked$1(func) {
|
556
|
-
return !!maskSrcKey && maskSrcKey in func;
|
557
|
-
}
|
558
|
-
var _isMasked = isMasked$1;
|
559
|
-
var funcProto$2 = Function.prototype;
|
560
|
-
var funcToString$2 = funcProto$2.toString;
|
561
|
-
function toSource$1(func) {
|
562
|
-
if (func != null) {
|
563
|
-
try {
|
564
|
-
return funcToString$2.call(func);
|
565
|
-
} catch (e2) {
|
566
|
-
}
|
567
|
-
try {
|
568
|
-
return func + "";
|
569
|
-
} catch (e2) {
|
570
|
-
}
|
571
|
-
}
|
572
|
-
return "";
|
573
|
-
}
|
574
|
-
var _toSource = toSource$1;
|
575
|
-
var isFunction$2 = isFunction_1, isMasked = _isMasked, isObject$5 = isObject_1, toSource = _toSource;
|
576
|
-
var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
|
577
|
-
var reIsHostCtor = /^\[object .+?Constructor\]$/;
|
578
|
-
var funcProto$1 = Function.prototype, objectProto$8 = Object.prototype;
|
579
|
-
var funcToString$1 = funcProto$1.toString;
|
580
|
-
var hasOwnProperty$7 = objectProto$8.hasOwnProperty;
|
581
|
-
var reIsNative = RegExp(
|
582
|
-
"^" + funcToString$1.call(hasOwnProperty$7).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
|
583
|
-
);
|
584
|
-
function baseIsNative$1(value) {
|
585
|
-
if (!isObject$5(value) || isMasked(value)) {
|
586
|
-
return false;
|
587
|
-
}
|
588
|
-
var pattern = isFunction$2(value) ? reIsNative : reIsHostCtor;
|
589
|
-
return pattern.test(toSource(value));
|
590
|
-
}
|
591
|
-
var _baseIsNative = baseIsNative$1;
|
592
|
-
function getValue$1(object, key) {
|
593
|
-
return object == null ? void 0 : object[key];
|
594
|
-
}
|
595
|
-
var _getValue = getValue$1;
|
596
|
-
var baseIsNative = _baseIsNative, getValue = _getValue;
|
597
|
-
function getNative$3(object, key) {
|
598
|
-
var value = getValue(object, key);
|
599
|
-
return baseIsNative(value) ? value : void 0;
|
600
|
-
}
|
601
|
-
var _getNative = getNative$3;
|
602
|
-
var getNative$2 = _getNative, root$f = _root;
|
603
|
-
var Map$3 = getNative$2(root$f, "Map");
|
604
|
-
var _Map = Map$3;
|
605
|
-
var getNative$1 = _getNative;
|
606
|
-
var nativeCreate$4 = getNative$1(Object, "create");
|
607
|
-
var _nativeCreate = nativeCreate$4;
|
608
|
-
var nativeCreate$3 = _nativeCreate;
|
609
|
-
function hashClear$1() {
|
610
|
-
this.__data__ = nativeCreate$3 ? nativeCreate$3(null) : {};
|
611
|
-
this.size = 0;
|
612
|
-
}
|
613
|
-
var _hashClear = hashClear$1;
|
614
|
-
function hashDelete$1(key) {
|
615
|
-
var result = this.has(key) && delete this.__data__[key];
|
616
|
-
this.size -= result ? 1 : 0;
|
617
|
-
return result;
|
618
|
-
}
|
619
|
-
var _hashDelete = hashDelete$1;
|
620
|
-
var nativeCreate$2 = _nativeCreate;
|
621
|
-
var HASH_UNDEFINED$1 = "__lodash_hash_undefined__";
|
622
|
-
var objectProto$7 = Object.prototype;
|
623
|
-
var hasOwnProperty$6 = objectProto$7.hasOwnProperty;
|
624
|
-
function hashGet$1(key) {
|
625
|
-
var data = this.__data__;
|
626
|
-
if (nativeCreate$2) {
|
627
|
-
var result = data[key];
|
628
|
-
return result === HASH_UNDEFINED$1 ? void 0 : result;
|
629
|
-
}
|
630
|
-
return hasOwnProperty$6.call(data, key) ? data[key] : void 0;
|
631
|
-
}
|
632
|
-
var _hashGet = hashGet$1;
|
633
|
-
var nativeCreate$1 = _nativeCreate;
|
634
|
-
var objectProto$6 = Object.prototype;
|
635
|
-
var hasOwnProperty$5 = objectProto$6.hasOwnProperty;
|
636
|
-
function hashHas$1(key) {
|
637
|
-
var data = this.__data__;
|
638
|
-
return nativeCreate$1 ? data[key] !== void 0 : hasOwnProperty$5.call(data, key);
|
639
|
-
}
|
640
|
-
var _hashHas = hashHas$1;
|
641
|
-
var nativeCreate = _nativeCreate;
|
642
|
-
var HASH_UNDEFINED = "__lodash_hash_undefined__";
|
643
|
-
function hashSet$1(key, value) {
|
644
|
-
var data = this.__data__;
|
645
|
-
this.size += this.has(key) ? 0 : 1;
|
646
|
-
data[key] = nativeCreate && value === void 0 ? HASH_UNDEFINED : value;
|
647
|
-
return this;
|
648
|
-
}
|
649
|
-
var _hashSet = hashSet$1;
|
650
|
-
var hashClear = _hashClear, hashDelete = _hashDelete, hashGet = _hashGet, hashHas = _hashHas, hashSet = _hashSet;
|
651
|
-
function Hash$1(entries) {
|
652
|
-
var index2 = -1, length = entries == null ? 0 : entries.length;
|
653
|
-
this.clear();
|
654
|
-
while (++index2 < length) {
|
655
|
-
var entry = entries[index2];
|
656
|
-
this.set(entry[0], entry[1]);
|
657
|
-
}
|
658
|
-
}
|
659
|
-
Hash$1.prototype.clear = hashClear;
|
660
|
-
Hash$1.prototype["delete"] = hashDelete;
|
661
|
-
Hash$1.prototype.get = hashGet;
|
662
|
-
Hash$1.prototype.has = hashHas;
|
663
|
-
Hash$1.prototype.set = hashSet;
|
664
|
-
var _Hash = Hash$1;
|
665
|
-
var Hash = _Hash, ListCache$2 = _ListCache, Map$2 = _Map;
|
666
|
-
function mapCacheClear$1() {
|
667
|
-
this.size = 0;
|
668
|
-
this.__data__ = {
|
669
|
-
"hash": new Hash(),
|
670
|
-
"map": new (Map$2 || ListCache$2)(),
|
671
|
-
"string": new Hash()
|
672
|
-
};
|
673
|
-
}
|
674
|
-
var _mapCacheClear = mapCacheClear$1;
|
675
|
-
function isKeyable$1(value) {
|
676
|
-
var type = typeof value;
|
677
|
-
return type == "string" || type == "number" || type == "symbol" || type == "boolean" ? value !== "__proto__" : value === null;
|
678
|
-
}
|
679
|
-
var _isKeyable = isKeyable$1;
|
680
|
-
var isKeyable = _isKeyable;
|
681
|
-
function getMapData$4(map, key) {
|
682
|
-
var data = map.__data__;
|
683
|
-
return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
|
684
|
-
}
|
685
|
-
var _getMapData = getMapData$4;
|
686
|
-
var getMapData$3 = _getMapData;
|
687
|
-
function mapCacheDelete$1(key) {
|
688
|
-
var result = getMapData$3(this, key)["delete"](key);
|
689
|
-
this.size -= result ? 1 : 0;
|
690
|
-
return result;
|
691
|
-
}
|
692
|
-
var _mapCacheDelete = mapCacheDelete$1;
|
693
|
-
var getMapData$2 = _getMapData;
|
694
|
-
function mapCacheGet$1(key) {
|
695
|
-
return getMapData$2(this, key).get(key);
|
696
|
-
}
|
697
|
-
var _mapCacheGet = mapCacheGet$1;
|
698
|
-
var getMapData$1 = _getMapData;
|
699
|
-
function mapCacheHas$1(key) {
|
700
|
-
return getMapData$1(this, key).has(key);
|
701
|
-
}
|
702
|
-
var _mapCacheHas = mapCacheHas$1;
|
703
|
-
var getMapData = _getMapData;
|
704
|
-
function mapCacheSet$1(key, value) {
|
705
|
-
var data = getMapData(this, key), size2 = data.size;
|
706
|
-
data.set(key, value);
|
707
|
-
this.size += data.size == size2 ? 0 : 1;
|
708
|
-
return this;
|
709
|
-
}
|
710
|
-
var _mapCacheSet = mapCacheSet$1;
|
711
|
-
var mapCacheClear = _mapCacheClear, mapCacheDelete = _mapCacheDelete, mapCacheGet = _mapCacheGet, mapCacheHas = _mapCacheHas, mapCacheSet = _mapCacheSet;
|
712
|
-
function MapCache$1(entries) {
|
713
|
-
var index2 = -1, length = entries == null ? 0 : entries.length;
|
714
|
-
this.clear();
|
715
|
-
while (++index2 < length) {
|
716
|
-
var entry = entries[index2];
|
717
|
-
this.set(entry[0], entry[1]);
|
718
|
-
}
|
719
|
-
}
|
720
|
-
MapCache$1.prototype.clear = mapCacheClear;
|
721
|
-
MapCache$1.prototype["delete"] = mapCacheDelete;
|
722
|
-
MapCache$1.prototype.get = mapCacheGet;
|
723
|
-
MapCache$1.prototype.has = mapCacheHas;
|
724
|
-
MapCache$1.prototype.set = mapCacheSet;
|
725
|
-
var _MapCache = MapCache$1;
|
726
|
-
var ListCache$1 = _ListCache, Map$1 = _Map, MapCache = _MapCache;
|
727
|
-
var LARGE_ARRAY_SIZE = 200;
|
728
|
-
function stackSet$1(key, value) {
|
729
|
-
var data = this.__data__;
|
730
|
-
if (data instanceof ListCache$1) {
|
731
|
-
var pairs = data.__data__;
|
732
|
-
if (!Map$1 || pairs.length < LARGE_ARRAY_SIZE - 1) {
|
733
|
-
pairs.push([key, value]);
|
734
|
-
this.size = ++data.size;
|
735
|
-
return this;
|
736
|
-
}
|
737
|
-
data = this.__data__ = new MapCache(pairs);
|
738
|
-
}
|
739
|
-
data.set(key, value);
|
740
|
-
this.size = data.size;
|
741
|
-
return this;
|
742
|
-
}
|
743
|
-
var _stackSet = stackSet$1;
|
744
|
-
var ListCache = _ListCache, stackClear = _stackClear, stackDelete = _stackDelete, stackGet = _stackGet, stackHas = _stackHas, stackSet = _stackSet;
|
745
|
-
function Stack$1(entries) {
|
746
|
-
var data = this.__data__ = new ListCache(entries);
|
747
|
-
this.size = data.size;
|
748
|
-
}
|
749
|
-
Stack$1.prototype.clear = stackClear;
|
750
|
-
Stack$1.prototype["delete"] = stackDelete;
|
751
|
-
Stack$1.prototype.get = stackGet;
|
752
|
-
Stack$1.prototype.has = stackHas;
|
753
|
-
Stack$1.prototype.set = stackSet;
|
754
|
-
var _Stack = Stack$1;
|
755
|
-
var getNative = _getNative;
|
756
|
-
var defineProperty$2 = function() {
|
757
|
-
try {
|
758
|
-
var func = getNative(Object, "defineProperty");
|
759
|
-
func({}, "", {});
|
760
|
-
return func;
|
761
|
-
} catch (e2) {
|
762
|
-
}
|
763
|
-
}();
|
764
|
-
var _defineProperty = defineProperty$2;
|
765
|
-
var defineProperty$1 = _defineProperty;
|
766
|
-
function baseAssignValue$3(object, key, value) {
|
767
|
-
if (key == "__proto__" && defineProperty$1) {
|
768
|
-
defineProperty$1(object, key, {
|
769
|
-
"configurable": true,
|
770
|
-
"enumerable": true,
|
771
|
-
"value": value,
|
772
|
-
"writable": true
|
773
|
-
});
|
774
|
-
} else {
|
775
|
-
object[key] = value;
|
776
|
-
}
|
777
|
-
}
|
778
|
-
var _baseAssignValue = baseAssignValue$3;
|
779
|
-
var baseAssignValue$2 = _baseAssignValue, eq$2 = eq_1;
|
780
|
-
function assignMergeValue$2(object, key, value) {
|
781
|
-
if (value !== void 0 && !eq$2(object[key], value) || value === void 0 && !(key in object)) {
|
782
|
-
baseAssignValue$2(object, key, value);
|
783
|
-
}
|
784
|
-
}
|
785
|
-
var _assignMergeValue = assignMergeValue$2;
|
786
|
-
function createBaseFor$1(fromRight) {
|
787
|
-
return function(object, iteratee, keysFunc) {
|
788
|
-
var index2 = -1, iterable = Object(object), props = keysFunc(object), length = props.length;
|
789
|
-
while (length--) {
|
790
|
-
var key = props[fromRight ? length : ++index2];
|
791
|
-
if (iteratee(iterable[key], key, iterable) === false) {
|
792
|
-
break;
|
793
|
-
}
|
794
|
-
}
|
795
|
-
return object;
|
796
|
-
};
|
797
|
-
}
|
798
|
-
var _createBaseFor = createBaseFor$1;
|
799
|
-
var createBaseFor = _createBaseFor;
|
800
|
-
var baseFor$1 = createBaseFor();
|
801
|
-
var _baseFor = baseFor$1;
|
802
|
-
var _cloneBufferExports = {};
|
803
|
-
var _cloneBuffer = {
|
804
|
-
get exports() {
|
805
|
-
return _cloneBufferExports;
|
806
|
-
},
|
807
|
-
set exports(v2) {
|
808
|
-
_cloneBufferExports = v2;
|
809
|
-
}
|
810
|
-
};
|
811
|
-
(function(module2, exports3) {
|
812
|
-
var root2 = _root;
|
813
|
-
var freeExports = exports3 && !exports3.nodeType && exports3;
|
814
|
-
var freeModule = freeExports && true && module2 && !module2.nodeType && module2;
|
815
|
-
var moduleExports = freeModule && freeModule.exports === freeExports;
|
816
|
-
var Buffer = moduleExports ? root2.Buffer : void 0, allocUnsafe = Buffer ? Buffer.allocUnsafe : void 0;
|
817
|
-
function cloneBuffer2(buffer, isDeep) {
|
818
|
-
if (isDeep) {
|
819
|
-
return buffer.slice();
|
820
|
-
}
|
821
|
-
var length = buffer.length, result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);
|
822
|
-
buffer.copy(result);
|
823
|
-
return result;
|
824
|
-
}
|
825
|
-
module2.exports = cloneBuffer2;
|
826
|
-
})(_cloneBuffer, _cloneBufferExports);
|
827
|
-
var root$e = _root;
|
828
|
-
var Uint8Array$1 = root$e.Uint8Array;
|
829
|
-
var _Uint8Array = Uint8Array$1;
|
830
|
-
var Uint8Array = _Uint8Array;
|
831
|
-
function cloneArrayBuffer$1(arrayBuffer) {
|
832
|
-
var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
|
833
|
-
new Uint8Array(result).set(new Uint8Array(arrayBuffer));
|
834
|
-
return result;
|
835
|
-
}
|
836
|
-
var _cloneArrayBuffer = cloneArrayBuffer$1;
|
837
|
-
var cloneArrayBuffer = _cloneArrayBuffer;
|
838
|
-
function cloneTypedArray$1(typedArray, isDeep) {
|
839
|
-
var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
|
840
|
-
return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
|
841
|
-
}
|
842
|
-
var _cloneTypedArray = cloneTypedArray$1;
|
843
|
-
function copyArray$1(source, array) {
|
844
|
-
var index2 = -1, length = source.length;
|
845
|
-
array || (array = Array(length));
|
846
|
-
while (++index2 < length) {
|
847
|
-
array[index2] = source[index2];
|
848
|
-
}
|
849
|
-
return array;
|
850
|
-
}
|
851
|
-
var _copyArray = copyArray$1;
|
852
|
-
var isObject$4 = isObject_1;
|
853
|
-
var objectCreate = Object.create;
|
854
|
-
var baseCreate$1 = function() {
|
855
|
-
function object() {
|
856
|
-
}
|
857
|
-
return function(proto) {
|
858
|
-
if (!isObject$4(proto)) {
|
859
|
-
return {};
|
860
|
-
}
|
861
|
-
if (objectCreate) {
|
862
|
-
return objectCreate(proto);
|
863
|
-
}
|
864
|
-
object.prototype = proto;
|
865
|
-
var result = new object();
|
866
|
-
object.prototype = void 0;
|
867
|
-
return result;
|
868
|
-
};
|
869
|
-
}();
|
870
|
-
var _baseCreate = baseCreate$1;
|
871
|
-
function overArg$1(func, transform) {
|
872
|
-
return function(arg) {
|
873
|
-
return func(transform(arg));
|
874
|
-
};
|
875
|
-
}
|
876
|
-
var _overArg = overArg$1;
|
877
|
-
var overArg = _overArg;
|
878
|
-
var getPrototype$2 = overArg(Object.getPrototypeOf, Object);
|
879
|
-
var _getPrototype = getPrototype$2;
|
880
|
-
var objectProto$5 = Object.prototype;
|
881
|
-
function isPrototype$2(value) {
|
882
|
-
var Ctor = value && value.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto$5;
|
883
|
-
return value === proto;
|
884
|
-
}
|
885
|
-
var _isPrototype = isPrototype$2;
|
886
|
-
var baseCreate = _baseCreate, getPrototype$1 = _getPrototype, isPrototype$1 = _isPrototype;
|
887
|
-
function initCloneObject$1(object) {
|
888
|
-
return typeof object.constructor == "function" && !isPrototype$1(object) ? baseCreate(getPrototype$1(object)) : {};
|
889
|
-
}
|
890
|
-
var _initCloneObject = initCloneObject$1;
|
891
|
-
function isObjectLike$5(value) {
|
892
|
-
return value != null && typeof value == "object";
|
893
|
-
}
|
894
|
-
var isObjectLike_1 = isObjectLike$5;
|
895
|
-
var baseGetTag$2 = _baseGetTag, isObjectLike$4 = isObjectLike_1;
|
896
|
-
var argsTag$1 = "[object Arguments]";
|
897
|
-
function baseIsArguments$1(value) {
|
898
|
-
return isObjectLike$4(value) && baseGetTag$2(value) == argsTag$1;
|
899
|
-
}
|
900
|
-
var _baseIsArguments = baseIsArguments$1;
|
901
|
-
var baseIsArguments = _baseIsArguments, isObjectLike$3 = isObjectLike_1;
|
902
|
-
var objectProto$4 = Object.prototype;
|
903
|
-
var hasOwnProperty$4 = objectProto$4.hasOwnProperty;
|
904
|
-
var propertyIsEnumerable = objectProto$4.propertyIsEnumerable;
|
905
|
-
var isArguments$2 = baseIsArguments(function() {
|
906
|
-
return arguments;
|
907
|
-
}()) ? baseIsArguments : function(value) {
|
908
|
-
return isObjectLike$3(value) && hasOwnProperty$4.call(value, "callee") && !propertyIsEnumerable.call(value, "callee");
|
909
|
-
};
|
910
|
-
var isArguments_1 = isArguments$2;
|
911
|
-
var isArray$2 = Array.isArray;
|
912
|
-
var isArray_1 = isArray$2;
|
913
|
-
var MAX_SAFE_INTEGER$1 = 9007199254740991;
|
914
|
-
function isLength$2(value) {
|
915
|
-
return typeof value == "number" && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER$1;
|
916
|
-
}
|
917
|
-
var isLength_1 = isLength$2;
|
918
|
-
var isFunction$1 = isFunction_1, isLength$1 = isLength_1;
|
919
|
-
function isArrayLike$3(value) {
|
920
|
-
return value != null && isLength$1(value.length) && !isFunction$1(value);
|
921
|
-
}
|
922
|
-
var isArrayLike_1 = isArrayLike$3;
|
923
|
-
var isArrayLike$2 = isArrayLike_1, isObjectLike$2 = isObjectLike_1;
|
924
|
-
function isArrayLikeObject$1(value) {
|
925
|
-
return isObjectLike$2(value) && isArrayLike$2(value);
|
926
|
-
}
|
927
|
-
var isArrayLikeObject_1 = isArrayLikeObject$1;
|
928
|
-
var isBufferExports = {};
|
929
|
-
var isBuffer$2 = {
|
930
|
-
get exports() {
|
931
|
-
return isBufferExports;
|
932
|
-
},
|
933
|
-
set exports(v2) {
|
934
|
-
isBufferExports = v2;
|
935
|
-
}
|
936
|
-
};
|
937
|
-
function stubFalse() {
|
938
|
-
return false;
|
939
|
-
}
|
940
|
-
var stubFalse_1 = stubFalse;
|
941
|
-
(function(module2, exports3) {
|
942
|
-
var root2 = _root, stubFalse2 = stubFalse_1;
|
943
|
-
var freeExports = exports3 && !exports3.nodeType && exports3;
|
944
|
-
var freeModule = freeExports && true && module2 && !module2.nodeType && module2;
|
945
|
-
var moduleExports = freeModule && freeModule.exports === freeExports;
|
946
|
-
var Buffer = moduleExports ? root2.Buffer : void 0;
|
947
|
-
var nativeIsBuffer = Buffer ? Buffer.isBuffer : void 0;
|
948
|
-
var isBuffer2 = nativeIsBuffer || stubFalse2;
|
949
|
-
module2.exports = isBuffer2;
|
950
|
-
})(isBuffer$2, isBufferExports);
|
951
|
-
var baseGetTag$1 = _baseGetTag, getPrototype = _getPrototype, isObjectLike$1 = isObjectLike_1;
|
952
|
-
var objectTag$1 = "[object Object]";
|
953
|
-
var funcProto = Function.prototype, objectProto$3 = Object.prototype;
|
954
|
-
var funcToString = funcProto.toString;
|
955
|
-
var hasOwnProperty$3 = objectProto$3.hasOwnProperty;
|
956
|
-
var objectCtorString = funcToString.call(Object);
|
957
|
-
function isPlainObject$1(value) {
|
958
|
-
if (!isObjectLike$1(value) || baseGetTag$1(value) != objectTag$1) {
|
959
|
-
return false;
|
960
|
-
}
|
961
|
-
var proto = getPrototype(value);
|
962
|
-
if (proto === null) {
|
963
|
-
return true;
|
964
|
-
}
|
965
|
-
var Ctor = hasOwnProperty$3.call(proto, "constructor") && proto.constructor;
|
966
|
-
return typeof Ctor == "function" && Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString;
|
967
|
-
}
|
968
|
-
var isPlainObject_1 = isPlainObject$1;
|
969
|
-
var baseGetTag = _baseGetTag, isLength = isLength_1, isObjectLike = isObjectLike_1;
|
970
|
-
var argsTag = "[object Arguments]", arrayTag = "[object Array]", boolTag = "[object Boolean]", dateTag = "[object Date]", errorTag = "[object Error]", funcTag = "[object Function]", mapTag = "[object Map]", numberTag = "[object Number]", objectTag = "[object Object]", regexpTag = "[object RegExp]", setTag = "[object Set]", stringTag = "[object String]", weakMapTag = "[object WeakMap]";
|
971
|
-
var arrayBufferTag = "[object ArrayBuffer]", dataViewTag = "[object DataView]", float32Tag = "[object Float32Array]", float64Tag = "[object Float64Array]", int8Tag = "[object Int8Array]", int16Tag = "[object Int16Array]", int32Tag = "[object Int32Array]", uint8Tag = "[object Uint8Array]", uint8ClampedTag = "[object Uint8ClampedArray]", uint16Tag = "[object Uint16Array]", uint32Tag = "[object Uint32Array]";
|
972
|
-
var typedArrayTags = {};
|
973
|
-
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
|
974
|
-
typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
|
975
|
-
function baseIsTypedArray$1(value) {
|
976
|
-
return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
|
977
|
-
}
|
978
|
-
var _baseIsTypedArray = baseIsTypedArray$1;
|
979
|
-
function baseUnary$1(func) {
|
980
|
-
return function(value) {
|
981
|
-
return func(value);
|
982
|
-
};
|
983
|
-
}
|
984
|
-
var _baseUnary = baseUnary$1;
|
985
|
-
var _nodeUtilExports = {};
|
986
|
-
var _nodeUtil = {
|
987
|
-
get exports() {
|
988
|
-
return _nodeUtilExports;
|
989
|
-
},
|
990
|
-
set exports(v2) {
|
991
|
-
_nodeUtilExports = v2;
|
992
|
-
}
|
993
|
-
};
|
994
|
-
(function(module2, exports3) {
|
995
|
-
var freeGlobal2 = _freeGlobal;
|
996
|
-
var freeExports = exports3 && !exports3.nodeType && exports3;
|
997
|
-
var freeModule = freeExports && true && module2 && !module2.nodeType && module2;
|
998
|
-
var moduleExports = freeModule && freeModule.exports === freeExports;
|
999
|
-
var freeProcess = moduleExports && freeGlobal2.process;
|
1000
|
-
var nodeUtil2 = function() {
|
1001
|
-
try {
|
1002
|
-
var types = freeModule && freeModule.require && freeModule.require("util").types;
|
1003
|
-
if (types) {
|
1004
|
-
return types;
|
1005
|
-
}
|
1006
|
-
return freeProcess && freeProcess.binding && freeProcess.binding("util");
|
1007
|
-
} catch (e2) {
|
1008
|
-
}
|
1009
|
-
}();
|
1010
|
-
module2.exports = nodeUtil2;
|
1011
|
-
})(_nodeUtil, _nodeUtilExports);
|
1012
|
-
var baseIsTypedArray = _baseIsTypedArray, baseUnary = _baseUnary, nodeUtil = _nodeUtilExports;
|
1013
|
-
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
|
1014
|
-
var isTypedArray$2 = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
|
1015
|
-
var isTypedArray_1 = isTypedArray$2;
|
1016
|
-
function safeGet$2(object, key) {
|
1017
|
-
if (key === "constructor" && typeof object[key] === "function") {
|
1018
|
-
return;
|
1019
|
-
}
|
1020
|
-
if (key == "__proto__") {
|
1021
|
-
return;
|
1022
|
-
}
|
1023
|
-
return object[key];
|
1024
|
-
}
|
1025
|
-
var _safeGet = safeGet$2;
|
1026
|
-
var baseAssignValue$1 = _baseAssignValue, eq$1 = eq_1;
|
1027
|
-
var objectProto$2 = Object.prototype;
|
1028
|
-
var hasOwnProperty$2 = objectProto$2.hasOwnProperty;
|
1029
|
-
function assignValue$1(object, key, value) {
|
1030
|
-
var objValue = object[key];
|
1031
|
-
if (!(hasOwnProperty$2.call(object, key) && eq$1(objValue, value)) || value === void 0 && !(key in object)) {
|
1032
|
-
baseAssignValue$1(object, key, value);
|
1033
|
-
}
|
1034
|
-
}
|
1035
|
-
var _assignValue = assignValue$1;
|
1036
|
-
var assignValue = _assignValue, baseAssignValue = _baseAssignValue;
|
1037
|
-
function copyObject$1(source, props, object, customizer) {
|
1038
|
-
var isNew = !object;
|
1039
|
-
object || (object = {});
|
1040
|
-
var index2 = -1, length = props.length;
|
1041
|
-
while (++index2 < length) {
|
1042
|
-
var key = props[index2];
|
1043
|
-
var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
|
1044
|
-
if (newValue === void 0) {
|
1045
|
-
newValue = source[key];
|
1046
|
-
}
|
1047
|
-
if (isNew) {
|
1048
|
-
baseAssignValue(object, key, newValue);
|
1049
|
-
} else {
|
1050
|
-
assignValue(object, key, newValue);
|
1051
|
-
}
|
1052
|
-
}
|
1053
|
-
return object;
|
1054
|
-
}
|
1055
|
-
var _copyObject = copyObject$1;
|
1056
|
-
function baseTimes$1(n, iteratee) {
|
1057
|
-
var index2 = -1, result = Array(n);
|
1058
|
-
while (++index2 < n) {
|
1059
|
-
result[index2] = iteratee(index2);
|
1060
|
-
}
|
1061
|
-
return result;
|
1062
|
-
}
|
1063
|
-
var _baseTimes = baseTimes$1;
|
1064
|
-
var MAX_SAFE_INTEGER = 9007199254740991;
|
1065
|
-
var reIsUint = /^(?:0|[1-9]\d*)$/;
|
1066
|
-
function isIndex$2(value, length) {
|
1067
|
-
var type = typeof value;
|
1068
|
-
length = length == null ? MAX_SAFE_INTEGER : length;
|
1069
|
-
return !!length && (type == "number" || type != "symbol" && reIsUint.test(value)) && (value > -1 && value % 1 == 0 && value < length);
|
1070
|
-
}
|
1071
|
-
var _isIndex = isIndex$2;
|
1072
|
-
var baseTimes = _baseTimes, isArguments$1 = isArguments_1, isArray$1 = isArray_1, isBuffer$1 = isBufferExports, isIndex$1 = _isIndex, isTypedArray$1 = isTypedArray_1;
|
1073
|
-
var objectProto$1 = Object.prototype;
|
1074
|
-
var hasOwnProperty$1 = objectProto$1.hasOwnProperty;
|
1075
|
-
function arrayLikeKeys$1(value, inherited) {
|
1076
|
-
var isArr = isArray$1(value), isArg = !isArr && isArguments$1(value), isBuff = !isArr && !isArg && isBuffer$1(value), isType = !isArr && !isArg && !isBuff && isTypedArray$1(value), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value.length, String) : [], length = result.length;
|
1077
|
-
for (var key in value) {
|
1078
|
-
if ((inherited || hasOwnProperty$1.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
|
1079
|
-
(key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
|
1080
|
-
isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
|
1081
|
-
isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
|
1082
|
-
isIndex$1(key, length)))) {
|
1083
|
-
result.push(key);
|
1084
|
-
}
|
1085
|
-
}
|
1086
|
-
return result;
|
1087
|
-
}
|
1088
|
-
var _arrayLikeKeys = arrayLikeKeys$1;
|
1089
|
-
function nativeKeysIn$1(object) {
|
1090
|
-
var result = [];
|
1091
|
-
if (object != null) {
|
1092
|
-
for (var key in Object(object)) {
|
1093
|
-
result.push(key);
|
1094
|
-
}
|
1095
|
-
}
|
1096
|
-
return result;
|
1097
|
-
}
|
1098
|
-
var _nativeKeysIn = nativeKeysIn$1;
|
1099
|
-
var isObject$3 = isObject_1, isPrototype = _isPrototype, nativeKeysIn = _nativeKeysIn;
|
1100
|
-
var objectProto = Object.prototype;
|
1101
|
-
var hasOwnProperty = objectProto.hasOwnProperty;
|
1102
|
-
function baseKeysIn$1(object) {
|
1103
|
-
if (!isObject$3(object)) {
|
1104
|
-
return nativeKeysIn(object);
|
1105
|
-
}
|
1106
|
-
var isProto = isPrototype(object), result = [];
|
1107
|
-
for (var key in object) {
|
1108
|
-
if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
|
1109
|
-
result.push(key);
|
1110
|
-
}
|
1111
|
-
}
|
1112
|
-
return result;
|
1113
|
-
}
|
1114
|
-
var _baseKeysIn = baseKeysIn$1;
|
1115
|
-
var arrayLikeKeys = _arrayLikeKeys, baseKeysIn = _baseKeysIn, isArrayLike$1 = isArrayLike_1;
|
1116
|
-
function keysIn$2(object) {
|
1117
|
-
return isArrayLike$1(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
|
1118
|
-
}
|
1119
|
-
var keysIn_1 = keysIn$2;
|
1120
|
-
var copyObject = _copyObject, keysIn$1 = keysIn_1;
|
1121
|
-
function toPlainObject$1(value) {
|
1122
|
-
return copyObject(value, keysIn$1(value));
|
1123
|
-
}
|
1124
|
-
var toPlainObject_1 = toPlainObject$1;
|
1125
|
-
var assignMergeValue$1 = _assignMergeValue, cloneBuffer = _cloneBufferExports, cloneTypedArray = _cloneTypedArray, copyArray = _copyArray, initCloneObject = _initCloneObject, isArguments = isArguments_1, isArray = isArray_1, isArrayLikeObject = isArrayLikeObject_1, isBuffer = isBufferExports, isFunction = isFunction_1, isObject$2 = isObject_1, isPlainObject = isPlainObject_1, isTypedArray = isTypedArray_1, safeGet$1 = _safeGet, toPlainObject = toPlainObject_1;
|
1126
|
-
function baseMergeDeep$1(object, source, key, srcIndex, mergeFunc, customizer, stack) {
|
1127
|
-
var objValue = safeGet$1(object, key), srcValue = safeGet$1(source, key), stacked = stack.get(srcValue);
|
1128
|
-
if (stacked) {
|
1129
|
-
assignMergeValue$1(object, key, stacked);
|
1130
|
-
return;
|
1131
|
-
}
|
1132
|
-
var newValue = customizer ? customizer(objValue, srcValue, key + "", object, source, stack) : void 0;
|
1133
|
-
var isCommon = newValue === void 0;
|
1134
|
-
if (isCommon) {
|
1135
|
-
var isArr = isArray(srcValue), isBuff = !isArr && isBuffer(srcValue), isTyped = !isArr && !isBuff && isTypedArray(srcValue);
|
1136
|
-
newValue = srcValue;
|
1137
|
-
if (isArr || isBuff || isTyped) {
|
1138
|
-
if (isArray(objValue)) {
|
1139
|
-
newValue = objValue;
|
1140
|
-
} else if (isArrayLikeObject(objValue)) {
|
1141
|
-
newValue = copyArray(objValue);
|
1142
|
-
} else if (isBuff) {
|
1143
|
-
isCommon = false;
|
1144
|
-
newValue = cloneBuffer(srcValue, true);
|
1145
|
-
} else if (isTyped) {
|
1146
|
-
isCommon = false;
|
1147
|
-
newValue = cloneTypedArray(srcValue, true);
|
1148
|
-
} else {
|
1149
|
-
newValue = [];
|
1150
|
-
}
|
1151
|
-
} else if (isPlainObject(srcValue) || isArguments(srcValue)) {
|
1152
|
-
newValue = objValue;
|
1153
|
-
if (isArguments(objValue)) {
|
1154
|
-
newValue = toPlainObject(objValue);
|
1155
|
-
} else if (!isObject$2(objValue) || isFunction(objValue)) {
|
1156
|
-
newValue = initCloneObject(srcValue);
|
1157
|
-
}
|
1158
|
-
} else {
|
1159
|
-
isCommon = false;
|
1160
|
-
}
|
1161
|
-
}
|
1162
|
-
if (isCommon) {
|
1163
|
-
stack.set(srcValue, newValue);
|
1164
|
-
mergeFunc(newValue, srcValue, srcIndex, customizer, stack);
|
1165
|
-
stack["delete"](srcValue);
|
1166
|
-
}
|
1167
|
-
assignMergeValue$1(object, key, newValue);
|
1168
|
-
}
|
1169
|
-
var _baseMergeDeep = baseMergeDeep$1;
|
1170
|
-
var Stack = _Stack, assignMergeValue = _assignMergeValue, baseFor = _baseFor, baseMergeDeep = _baseMergeDeep, isObject$1 = isObject_1, keysIn = keysIn_1, safeGet = _safeGet;
|
1171
|
-
function baseMerge$1(object, source, srcIndex, customizer, stack) {
|
1172
|
-
if (object === source) {
|
1173
|
-
return;
|
1174
|
-
}
|
1175
|
-
baseFor(source, function(srcValue, key) {
|
1176
|
-
stack || (stack = new Stack());
|
1177
|
-
if (isObject$1(srcValue)) {
|
1178
|
-
baseMergeDeep(object, source, key, srcIndex, baseMerge$1, customizer, stack);
|
1179
|
-
} else {
|
1180
|
-
var newValue = customizer ? customizer(safeGet(object, key), srcValue, key + "", object, source, stack) : void 0;
|
1181
|
-
if (newValue === void 0) {
|
1182
|
-
newValue = srcValue;
|
1183
|
-
}
|
1184
|
-
assignMergeValue(object, key, newValue);
|
1185
|
-
}
|
1186
|
-
}, keysIn);
|
1187
|
-
}
|
1188
|
-
var _baseMerge = baseMerge$1;
|
1189
|
-
function identity$2(value) {
|
1190
|
-
return value;
|
1191
|
-
}
|
1192
|
-
var identity_1 = identity$2;
|
1193
|
-
function apply$1(func, thisArg, args) {
|
1194
|
-
switch (args.length) {
|
1195
|
-
case 0:
|
1196
|
-
return func.call(thisArg);
|
1197
|
-
case 1:
|
1198
|
-
return func.call(thisArg, args[0]);
|
1199
|
-
case 2:
|
1200
|
-
return func.call(thisArg, args[0], args[1]);
|
1201
|
-
case 3:
|
1202
|
-
return func.call(thisArg, args[0], args[1], args[2]);
|
1203
|
-
}
|
1204
|
-
return func.apply(thisArg, args);
|
1205
|
-
}
|
1206
|
-
var _apply = apply$1;
|
1207
|
-
var apply = _apply;
|
1208
|
-
var nativeMax = Math.max;
|
1209
|
-
function overRest$1(func, start, transform) {
|
1210
|
-
start = nativeMax(start === void 0 ? func.length - 1 : start, 0);
|
1211
|
-
return function() {
|
1212
|
-
var args = arguments, index2 = -1, length = nativeMax(args.length - start, 0), array = Array(length);
|
1213
|
-
while (++index2 < length) {
|
1214
|
-
array[index2] = args[start + index2];
|
1215
|
-
}
|
1216
|
-
index2 = -1;
|
1217
|
-
var otherArgs = Array(start + 1);
|
1218
|
-
while (++index2 < start) {
|
1219
|
-
otherArgs[index2] = args[index2];
|
1220
|
-
}
|
1221
|
-
otherArgs[start] = transform(array);
|
1222
|
-
return apply(func, this, otherArgs);
|
1223
|
-
};
|
1224
|
-
}
|
1225
|
-
var _overRest = overRest$1;
|
1226
|
-
function constant$1(value) {
|
1227
|
-
return function() {
|
1228
|
-
return value;
|
1229
|
-
};
|
1230
|
-
}
|
1231
|
-
var constant_1 = constant$1;
|
1232
|
-
var constant = constant_1, defineProperty = _defineProperty, identity$1 = identity_1;
|
1233
|
-
var baseSetToString$1 = !defineProperty ? identity$1 : function(func, string) {
|
1234
|
-
return defineProperty(func, "toString", {
|
1235
|
-
"configurable": true,
|
1236
|
-
"enumerable": false,
|
1237
|
-
"value": constant(string),
|
1238
|
-
"writable": true
|
1239
|
-
});
|
1240
|
-
};
|
1241
|
-
var _baseSetToString = baseSetToString$1;
|
1242
|
-
var HOT_COUNT = 800, HOT_SPAN = 16;
|
1243
|
-
var nativeNow = Date.now;
|
1244
|
-
function shortOut$1(func) {
|
1245
|
-
var count = 0, lastCalled = 0;
|
1246
|
-
return function() {
|
1247
|
-
var stamp = nativeNow(), remaining = HOT_SPAN - (stamp - lastCalled);
|
1248
|
-
lastCalled = stamp;
|
1249
|
-
if (remaining > 0) {
|
1250
|
-
if (++count >= HOT_COUNT) {
|
1251
|
-
return arguments[0];
|
1252
|
-
}
|
1253
|
-
} else {
|
1254
|
-
count = 0;
|
1255
|
-
}
|
1256
|
-
return func.apply(void 0, arguments);
|
1257
|
-
};
|
1258
|
-
}
|
1259
|
-
var _shortOut = shortOut$1;
|
1260
|
-
var baseSetToString = _baseSetToString, shortOut = _shortOut;
|
1261
|
-
var setToString$1 = shortOut(baseSetToString);
|
1262
|
-
var _setToString = setToString$1;
|
1263
|
-
var identity = identity_1, overRest = _overRest, setToString = _setToString;
|
1264
|
-
function baseRest$1(func, start) {
|
1265
|
-
return setToString(overRest(func, start, identity), func + "");
|
1266
|
-
}
|
1267
|
-
var _baseRest = baseRest$1;
|
1268
|
-
var eq = eq_1, isArrayLike = isArrayLike_1, isIndex = _isIndex, isObject = isObject_1;
|
1269
|
-
function isIterateeCall$1(value, index2, object) {
|
1270
|
-
if (!isObject(object)) {
|
1271
|
-
return false;
|
1272
|
-
}
|
1273
|
-
var type = typeof index2;
|
1274
|
-
if (type == "number" ? isArrayLike(object) && isIndex(index2, object.length) : type == "string" && index2 in object) {
|
1275
|
-
return eq(object[index2], value);
|
1276
|
-
}
|
1277
|
-
return false;
|
1278
|
-
}
|
1279
|
-
var _isIterateeCall = isIterateeCall$1;
|
1280
|
-
var baseRest = _baseRest, isIterateeCall = _isIterateeCall;
|
1281
|
-
function createAssigner$1(assigner) {
|
1282
|
-
return baseRest(function(object, sources) {
|
1283
|
-
var index2 = -1, length = sources.length, customizer = length > 1 ? sources[length - 1] : void 0, guard = length > 2 ? sources[2] : void 0;
|
1284
|
-
customizer = assigner.length > 3 && typeof customizer == "function" ? (length--, customizer) : void 0;
|
1285
|
-
if (guard && isIterateeCall(sources[0], sources[1], guard)) {
|
1286
|
-
customizer = length < 3 ? void 0 : customizer;
|
1287
|
-
length = 1;
|
1288
|
-
}
|
1289
|
-
object = Object(object);
|
1290
|
-
while (++index2 < length) {
|
1291
|
-
var source = sources[index2];
|
1292
|
-
if (source) {
|
1293
|
-
assigner(object, source, index2, customizer);
|
1294
|
-
}
|
1295
|
-
}
|
1296
|
-
return object;
|
1297
|
-
});
|
1298
|
-
}
|
1299
|
-
var _createAssigner = createAssigner$1;
|
1300
|
-
var baseMerge = _baseMerge, createAssigner = _createAssigner;
|
1301
|
-
createAssigner(function(object, source, srcIndex) {
|
1302
|
-
baseMerge(object, source, srcIndex);
|
1303
|
-
});
|
1304
|
-
const injectLink = (options) => {
|
1305
|
-
const head2 = document.getElementsByTagName("head")[0];
|
1306
|
-
const link = document.createElement("link");
|
1307
|
-
Object.entries(options).forEach(([key, value]) => link.setAttribute(key, value));
|
1308
|
-
head2.appendChild(link);
|
1309
|
-
};
|
1310
|
-
const iterator = (input, visitor, path) => {
|
1311
|
-
if (Array.isArray(input)) {
|
1312
|
-
return input.map((el, index2) => {
|
1313
|
-
const newPath = [path, index2].filter(isValue).join(".");
|
1314
|
-
return iterator(visitor(index2, el, newPath), visitor, newPath);
|
1315
|
-
});
|
1316
|
-
}
|
1317
|
-
if (typeof input === "object" && input) {
|
1318
|
-
return Object.entries(input).reduce((acc, [key, value]) => {
|
1319
|
-
const newPath = [path, key].filter(isValue).join(".");
|
1320
|
-
acc[key] = iterator(visitor(key, value, newPath), visitor, newPath);
|
1321
|
-
return acc;
|
1322
|
-
}, {});
|
1323
|
-
}
|
1324
|
-
return input;
|
1325
|
-
};
|
1326
|
-
const isEmptyValue = (value) => !value && (value === null || value === void 0);
|
1327
|
-
const isValue = (value) => !isEmptyValue(value);
|
1328
|
-
const noop = () => void 0;
|
1329
|
-
const pick = (obj, ...props) => {
|
1330
|
-
return props.reduce((result, prop) => {
|
1331
|
-
result[prop] = obj[prop];
|
1332
|
-
return result;
|
1333
|
-
}, {});
|
1334
|
-
};
|
1335
|
-
function omit(obj, ...props) {
|
1336
|
-
const result = {
|
1337
|
-
...obj
|
1338
|
-
};
|
1339
|
-
props.forEach((prop) => {
|
1340
|
-
delete result[prop];
|
1341
|
-
});
|
1342
|
-
return result;
|
1343
|
-
}
|
1344
|
-
const get = (obj, path, defValue) => {
|
1345
|
-
if (!path)
|
1346
|
-
return void 0;
|
1347
|
-
const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
|
1348
|
-
const result = pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj);
|
1349
|
-
return result === void 0 ? defValue : result;
|
1350
|
-
};
|
1351
|
-
const set = (obj, path, value) => {
|
1352
|
-
const pathArray = Array.isArray(path) ? path : path.match(/([^[.\]])+/g);
|
1353
|
-
return pathArray.reduce((acc, key, i2) => {
|
1354
|
-
if (acc[key] === void 0)
|
1355
|
-
acc[key] = {};
|
1356
|
-
if (i2 === pathArray.length - 1)
|
1357
|
-
acc[key] = value;
|
1358
|
-
return acc[key];
|
1359
|
-
}, obj);
|
1360
|
-
};
|
1361
|
-
const hexToRgb = (hex) => {
|
1362
|
-
const chars = hex.slice(1);
|
1363
|
-
if (chars.length === 3) {
|
1364
|
-
hex = chars.split("").map((val) => `${val}${val}`).join("");
|
1365
|
-
}
|
1366
|
-
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
1367
|
-
return result ? {
|
1368
|
-
r: parseInt(result[1], 16),
|
1369
|
-
g: parseInt(result[2], 16),
|
1370
|
-
b: parseInt(result[3], 16)
|
1371
|
-
} : void 0;
|
1372
|
-
};
|
1373
|
-
const isJsonSame = (...values) => {
|
1374
|
-
return values.map((value) => JSON.stringify(value)).every((val, _2, arr) => val === arr[0]);
|
1375
|
-
};
|
1376
|
-
const isValidTemplate = (data) => "id" in data && "root" in data;
|
1377
|
-
const rgbToRgba = (rgb, alpha = 1) => rgb.replace(")", `, ${alpha})`).replace("rgb", "rgba");
|
1378
|
-
const devices = ["desktop", "laptop", "tablet", "mobile"];
|
1379
|
-
const BREAKPOINTS = {
|
1380
|
-
mobile: 320,
|
1381
|
-
tablet: 768,
|
1382
|
-
laptop: 1024,
|
1383
|
-
desktop: 1920
|
1384
|
-
};
|
1385
|
-
const root$d = "_root_24bq9_1";
|
1386
|
-
const icon$1 = "_icon_24bq9_5";
|
1387
|
-
const iconTarget$1 = "_iconTarget_24bq9_17";
|
1388
|
-
const body$6 = "_body_24bq9_22";
|
1389
|
-
const bodyOpen$1 = "_bodyOpen_24bq9_30";
|
1390
|
-
const simpleGift_in = "_simpleGift_in_24bq9_1";
|
1391
|
-
const close$4 = "_close_24bq9_43";
|
1392
|
-
const arrow$1 = "_arrow_24bq9_57";
|
1393
|
-
const container$2 = "_container_24bq9_68";
|
1394
|
-
const inner$1 = "_inner_24bq9_74";
|
1395
|
-
const logo$6 = "_logo_24bq9_81";
|
1396
|
-
const text$4 = "_text_24bq9_88";
|
1397
|
-
const button$6 = "_button_24bq9_103";
|
1398
|
-
const buttonAnimated = "_buttonAnimated_24bq9_112";
|
1399
|
-
const increase$1 = "_increase_24bq9_1";
|
1400
|
-
const legalGap = "_legalGap_24bq9_116";
|
1401
|
-
const legalOpen$1 = "_legalOpen_24bq9_120";
|
1402
|
-
const legal$5 = "_legal_24bq9_116";
|
1403
|
-
const legalText$1 = "_legalText_24bq9_148";
|
1404
|
-
const legalButton$1 = "_legalButton_24bq9_166";
|
1405
|
-
const fadein$1 = "_fadein_24bq9_1";
|
1406
|
-
const pulse$1 = "_pulse_24bq9_1";
|
1407
|
-
const gradient$1 = "_gradient_24bq9_1";
|
1408
|
-
const wiggle$1 = "_wiggle_24bq9_1";
|
1409
|
-
const styles$d = {
|
1410
|
-
root: root$d,
|
1411
|
-
icon: icon$1,
|
1412
|
-
iconTarget: iconTarget$1,
|
1413
|
-
body: body$6,
|
1414
|
-
bodyOpen: bodyOpen$1,
|
1415
|
-
simpleGift_in,
|
1416
|
-
close: close$4,
|
1417
|
-
arrow: arrow$1,
|
1418
|
-
container: container$2,
|
1419
|
-
inner: inner$1,
|
1420
|
-
logo: logo$6,
|
1421
|
-
text: text$4,
|
1422
|
-
button: button$6,
|
1423
|
-
buttonAnimated,
|
1424
|
-
increase: increase$1,
|
1425
|
-
legalGap,
|
1426
|
-
legalOpen: legalOpen$1,
|
1427
|
-
legal: legal$5,
|
1428
|
-
legalText: legalText$1,
|
1429
|
-
legalButton: legalButton$1,
|
1430
|
-
fadein: fadein$1,
|
1431
|
-
pulse: pulse$1,
|
1432
|
-
gradient: gradient$1,
|
1433
|
-
wiggle: wiggle$1
|
1434
|
-
};
|
1435
|
-
const useGiftOpen = ({
|
1436
|
-
delay,
|
1437
|
-
onOpen,
|
1438
|
-
onAutoOpen
|
1439
|
-
}) => {
|
1440
|
-
const [isOpen, setIsOpen] = h(false);
|
1441
|
-
const timerRef = _$1(null);
|
1442
|
-
const clear = (timer) => {
|
1443
|
-
clearTimeout(timerRef.current);
|
1444
|
-
timerRef.current = null;
|
1445
|
-
};
|
1446
|
-
const onToggle = () => {
|
1447
|
-
clear(timerRef.current);
|
1448
|
-
setIsOpen((prev) => !prev);
|
1449
|
-
};
|
1450
|
-
p(() => {
|
1451
|
-
timerRef.current = setTimeout(() => {
|
1452
|
-
setIsOpen(true);
|
1453
|
-
onAutoOpen && onAutoOpen();
|
1454
|
-
}, delay || 1e3);
|
1455
|
-
return () => clear(timerRef.current);
|
1456
|
-
}, [delay]);
|
1457
|
-
p(() => {
|
1458
|
-
if (isOpen && !timerRef.current) {
|
1459
|
-
onOpen && onOpen();
|
1460
|
-
}
|
1461
|
-
}, [isOpen]);
|
1462
|
-
return {
|
1463
|
-
isOpen,
|
1464
|
-
onToggle
|
1465
|
-
};
|
1466
|
-
};
|
1467
|
-
var _ = 0;
|
1468
|
-
function o(o2, e2, n, t2, f2, l2) {
|
1469
|
-
var s2, u2, a2 = {};
|
1470
|
-
for (u2 in e2)
|
1471
|
-
"ref" == u2 ? s2 = e2[u2] : a2[u2] = e2[u2];
|
1472
|
-
var i2 = { type: o2, props: a2, key: n, ref: s2, __k: null, __: null, __b: 0, __e: null, __d: void 0, __c: null, __h: null, constructor: void 0, __v: --_, __source: f2, __self: l2 };
|
1473
|
-
if ("function" == typeof o2 && (s2 = o2.defaultProps))
|
1474
|
-
for (u2 in s2)
|
1475
|
-
void 0 === a2[u2] && (a2[u2] = s2[u2]);
|
1476
|
-
return preact.options.vnode && preact.options.vnode(i2), i2;
|
1477
|
-
}
|
1478
|
-
const State = preact.createContext();
|
1479
|
-
const StateContext = ({
|
1480
|
-
children,
|
1481
|
-
value
|
1482
|
-
}) => {
|
1483
|
-
return o(State.Provider, {
|
1484
|
-
value,
|
1485
|
-
children
|
1486
|
-
});
|
1487
|
-
};
|
1488
|
-
const render = (vNode) => async ({
|
1489
|
-
target,
|
1490
|
-
id,
|
1491
|
-
ref,
|
1492
|
-
state
|
1493
|
-
}) => {
|
1494
|
-
if (!("ResizeObserver" in window)) {
|
1495
|
-
const module2 = await Promise.resolve().then(() => resizeObserver);
|
1496
|
-
window.ResizeObserver = module2.ResizeObserver;
|
1497
|
-
}
|
1498
|
-
return preact.render(o(StateContext, {
|
1499
|
-
value: state,
|
1500
|
-
children: preact.cloneElement(vNode, {
|
1501
|
-
ref,
|
1502
|
-
id
|
1503
|
-
})
|
1504
|
-
}), target);
|
1505
|
-
};
|
1506
|
-
const useCurrentState = () => q$1(State);
|
1507
|
-
const isValidLayer = (state = {}) => typeof state === "object" && isValue(state) && devices.every((device) => device in state);
|
1508
|
-
const getRules = (state, device) => {
|
1509
|
-
if (!state)
|
1510
|
-
return state;
|
1511
|
-
return iterator(state, (_key, value) => {
|
1512
|
-
if (isValidLayer(value)) {
|
1513
|
-
const resultRules = value[device];
|
1514
|
-
if ("parent" in resultRules && isValue(resultRules.parent)) {
|
1515
|
-
return {
|
1516
|
-
...value[resultRules.parent],
|
1517
|
-
...omit(resultRules, "parent")
|
1518
|
-
};
|
1519
|
-
}
|
1520
|
-
return resultRules;
|
1521
|
-
}
|
1522
|
-
return value;
|
1523
|
-
});
|
1524
|
-
};
|
1525
|
-
const useGetRules = (state, device) => getRules(state, device);
|
1526
|
-
const useContainerDevice = ({
|
1527
|
-
id,
|
1528
|
-
targetRef,
|
1529
|
-
parentKey = "device-container",
|
1530
|
-
breakpoints = BREAKPOINTS
|
1531
|
-
}) => {
|
1532
|
-
const [device, setDevice] = h("desktop");
|
1533
|
-
const checkDevice = (parent) => {
|
1534
|
-
var _a;
|
1535
|
-
const parentWidth = parent.getBoundingClientRect().width || 0;
|
1536
|
-
const sortedBreakpoints = Object.entries({
|
1537
|
-
...breakpoints
|
1538
|
-
}).sort(([_1, valueA], [_2, valueB]) => valueA - valueB);
|
1539
|
-
const findDevice = ((_a = sortedBreakpoints.find(([_1, value], index2) => {
|
1540
|
-
const [_2, nextValue] = sortedBreakpoints[index2 + 1] || [];
|
1541
|
-
return parentWidth >= value && parentWidth < nextValue;
|
1542
|
-
})) == null ? void 0 : _a[0]) || "desktop";
|
1543
|
-
setDevice(findDevice);
|
1544
|
-
};
|
1545
|
-
y(() => {
|
1546
|
-
const parentElement = targetRef.current.closest(`[data-${parentKey}='${id}']`) || document.body;
|
1547
|
-
if (parentElement) {
|
1548
|
-
const resizeObserver2 = new ResizeObserver(() => checkDevice(parentElement));
|
1549
|
-
resizeObserver2.observe(parentElement);
|
1550
|
-
checkDevice(parentElement);
|
1551
|
-
}
|
1552
|
-
}, []);
|
1553
|
-
return device;
|
1554
|
-
};
|
1555
|
-
const wrapTo = (value, until) => `${value}${until}`;
|
1556
|
-
const toPx = (key) => key.startsWith("px_");
|
1557
|
-
const toPercent = (key) => key.startsWith("percent_");
|
1558
|
-
const formatRule = (key, value) => {
|
1559
|
-
let newKey = key;
|
1560
|
-
let newValue = value;
|
1561
|
-
if (toPx(newKey)) {
|
1562
|
-
newKey = newKey.replace("px_", "");
|
1563
|
-
newValue = wrapTo(value, "px");
|
1564
|
-
}
|
1565
|
-
if (toPercent(newKey)) {
|
1566
|
-
newKey = newKey.replace("percent_", "");
|
1567
|
-
newValue = wrapTo(value, "%");
|
1568
|
-
}
|
1569
|
-
return {
|
1570
|
-
key: newKey,
|
1571
|
-
value: newValue
|
1572
|
-
};
|
1573
|
-
};
|
1574
|
-
const DEFAULT_TO_PX = ["borderWidth", "borderLeftWidth", "borderRightWidth", "borderTopWidth", "borderBottomWidth", "minHeight", "minWidth", "maxWidth", "maxHeight", "fontSize", "height", "width", "letterSpacing", "fontSize", "left", "right", "top", "bottom", "marginTop", "marginBottom", "marginLeft", "marginRight", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight"];
|
1575
|
-
const parseRules = (rules, layer) => {
|
1576
|
-
const keys = Object.keys(rules);
|
1577
|
-
if (keys.includes("innerHTML") || keys.includes("innerText")) {
|
1578
|
-
console.warn(`Warning! InnerHTML and innerText is deprecated. Use "children" property.`, layer);
|
1579
|
-
}
|
1580
|
-
if (typeof rules !== "object") {
|
1581
|
-
return rules;
|
1582
|
-
}
|
1583
|
-
if ("typography" in rules && "accentTypography" in rules) {
|
1584
|
-
const typography = rules.typography;
|
1585
|
-
const accentTypography = rules.accentTypography;
|
1586
|
-
rules = {
|
1587
|
-
...rules,
|
1588
|
-
...typography,
|
1589
|
-
"--font-family": accentTypography.fontFamily,
|
1590
|
-
"--accent-color": accentTypography.color,
|
1591
|
-
"px_--accent-size": accentTypography.fontSize
|
1592
|
-
};
|
1593
|
-
}
|
1594
|
-
return Object.entries(rules).reduce((acc, [propKey, propValue]) => {
|
1595
|
-
if (DEFAULT_TO_PX.includes(propKey)) {
|
1596
|
-
propValue = wrapTo(propValue, "px");
|
1597
|
-
}
|
1598
|
-
const {
|
1599
|
-
key,
|
1600
|
-
value
|
1601
|
-
} = formatRule(propKey, propValue);
|
1602
|
-
acc[key] = value;
|
1603
|
-
if (key === "innerHTML") {
|
1604
|
-
acc.innerHTML = isValue(value) ? `${value}` : "";
|
1605
|
-
}
|
1606
|
-
if (key === "innerText") {
|
1607
|
-
acc.innerText = isValue(value) ? `${value}` : "";
|
1608
|
-
}
|
1609
|
-
if (key === "children") {
|
1610
|
-
acc.children = typeof value === "string" ? isValue(value) ? `${value}` : "" : value;
|
1611
|
-
}
|
1612
|
-
if (key === "innerHTML" || key === "innerText" || key === "children") {
|
1613
|
-
if (typeof value === "string" && value.length === 0) {
|
1614
|
-
acc.display = "none";
|
1615
|
-
} else if (isEmptyValue(value)) {
|
1616
|
-
acc.display = "none";
|
1617
|
-
}
|
1618
|
-
}
|
1619
|
-
if (key.includes("borderWidth")) {
|
1620
|
-
acc.borderStyle = "solid";
|
1621
|
-
}
|
1622
|
-
if (key === "corner") {
|
1623
|
-
acc.borderRadius = wrapTo(value, "px");
|
1624
|
-
}
|
1625
|
-
if (key === "backgroundFit") {
|
1626
|
-
acc.backgroundSize = value;
|
1627
|
-
}
|
1628
|
-
if (key === "backgroundImage" && isValue(value)) {
|
1629
|
-
acc.backgroundImage = `url(${value})`;
|
1630
|
-
acc.backgroundRepeat = "no-repeat";
|
1631
|
-
}
|
1632
|
-
if (key === "backgroundColorOpacity" && isValue(acc.backgroundColorOpacity) && isValue(acc.backgroundColor)) {
|
1633
|
-
const rgb = hexToRgb(acc.backgroundColor);
|
1634
|
-
if (rgb) {
|
1635
|
-
acc.backgroundColor = rgbToRgba(`rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`, +acc.backgroundColorOpacity / 100);
|
1636
|
-
}
|
1637
|
-
}
|
1638
|
-
if (key === "isBold") {
|
1639
|
-
acc.fontWeight = value ? "bold" : "initial";
|
1640
|
-
}
|
1641
|
-
if (key === "isItalic") {
|
1642
|
-
acc.fontStyle = value ? "italic" : "initial";
|
1643
|
-
}
|
1644
|
-
if (key === "isThrough") {
|
1645
|
-
acc.textDecoration = value ? "line-through" : "initial";
|
1646
|
-
}
|
1647
|
-
return acc;
|
1648
|
-
}, rules);
|
1649
|
-
};
|
1650
|
-
const isValidRule = (rule) => typeof rule === "object" && !Array.isArray(rule) && "parent" in rule;
|
1651
|
-
const useParseRules = (state) => Object.entries(state).reduce((acc, [layer, rule]) => {
|
1652
|
-
acc[layer] = isValidRule(rule) ? parseRules({
|
1653
|
-
...state[layer]
|
1654
|
-
}, layer) : rule;
|
1655
|
-
return acc;
|
1656
|
-
}, {});
|
1657
|
-
const DisplayText = ({
|
1658
|
-
children,
|
1659
|
-
...rest
|
1660
|
-
}) => {
|
1661
|
-
var _a;
|
1662
|
-
const formatValue = (_a = children == null ? void 0 : children.replace("script", "")) == null ? void 0 : _a.replace(/{{(.*?)}}/g, `<span>$1</span>`);
|
1663
|
-
return o("div", {
|
1664
|
-
...rest,
|
1665
|
-
dangerouslySetInnerHTML: {
|
1666
|
-
__html: formatValue
|
1667
|
-
}
|
1668
|
-
});
|
1669
|
-
};
|
1670
|
-
const useToggle = () => {
|
1671
|
-
const [isOpen, setIsOpen] = h(false);
|
1672
|
-
return [isOpen, () => setIsOpen((prev) => !prev)];
|
1673
|
-
};
|
1674
|
-
const CloseIcon = () => o("svg", {
|
1675
|
-
xmlns: "http://www.w3.org/2000/svg",
|
1676
|
-
width: "20",
|
1677
|
-
height: "20",
|
1678
|
-
viewBox: "0 0 24 24",
|
1679
|
-
children: o("path", {
|
1680
|
-
d: "M17.659 4.929a1 1 0 1 1 1.414 1.414L13.416 12l5.657 5.657a1 1 0 0 1-1.415 1.414l-5.656-5.657-5.657 5.657a1 1 0 0 1-1.414-1.414L10.587 12 4.931 6.343A1 1 0 1 1 6.345 4.93l5.657 5.657 5.656-5.657Z",
|
1681
|
-
fill: "currentColor"
|
1682
|
-
})
|
1683
|
-
});
|
1684
|
-
const GiftIcon = () => o("svg", {
|
1685
|
-
viewBox: "0 0 16 16",
|
1686
|
-
children: o("path", {
|
1687
|
-
fill: "currentColor",
|
1688
|
-
fillRule: "evenodd",
|
1689
|
-
d: "M2.13 8H7v7.31H3.22a1.09 1.09 0 01-1.09-1.09zM9 15.34h3.81a1.09 1.09 0 001.09-1.09V8H9zm5.8-9.94v1.19a.48.48 0 01-.48.48H1.71a.48.48 0 01-.48-.48V5.4c0-.596.484-1.08 1.08-1.08H5a2.48 2.48 0 01-1.47-1.65 1.62 1.62 0 01.26-1.4 1.57 1.57 0 011-.58c.11-.01.22-.01.33 0a2.5 2.5 0 012 1A9 9 0 018 3.22a10.38 10.38 0 01.91-1.54 2.49 2.49 0 011.93-1h.36c.369.065.702.26.94.55.31.407.414.936.28 1.43a2.48 2.48 0 01-1.45 1.64h2.77a1.08 1.08 0 011.03 1.1zM8.66 4a9.81 9.81 0 001.9-.55 1.52 1.52 0 00.88-1 .68.68 0 00-.1-.59.6.6 0 00-.34-.22.58.58 0 00-.18 0 1.52 1.52 0 00-1.17.63A9.06 9.06 0 008.66 4zm-3.32-.58A9.62 9.62 0 007.25 4a8.59 8.59 0 00-1-1.72 1.51 1.51 0 00-1.18-.63h-.13a.66.66 0 00-.39.22.66.66 0 00-.09.57c.13.443.453.804.88.98z"
|
1690
|
-
})
|
1691
|
-
});
|
1692
|
-
const animationsMap = (animations) => ({
|
1693
|
-
fade: `${animations.fade} 2s linear infinite`,
|
1694
|
-
pulse: `${animations.pulse} .3s linear 0s infinite alternate forwards`,
|
1695
|
-
wiggle: `${animations.wiggle} 2s linear infinite`,
|
1696
|
-
gradient: `${animations.gradient} 3s ease infinite`
|
1697
|
-
});
|
1698
|
-
const useGiftRules = (deviceState, animations) => {
|
1699
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
|
1700
|
-
const fullAnimations = animationsMap(animations);
|
1701
|
-
const rules = useParseRules(deviceState);
|
1702
|
-
const hasIcon = (_a = rules == null ? void 0 : rules.icon) == null ? void 0 : _a.hasIcon;
|
1703
|
-
const arrowRules = {
|
1704
|
-
left: `${+(((_b = deviceState == null ? void 0 : deviceState.container) == null ? void 0 : _b.left) || 0) * -1 + 8}px`,
|
1705
|
-
backgroundColor: (_c = rules == null ? void 0 : rules.container) == null ? void 0 : _c.backgroundColor,
|
1706
|
-
borderTopWidth: (_d = rules == null ? void 0 : rules.container) == null ? void 0 : _d.borderWidth,
|
1707
|
-
borderTopColor: (_e = rules == null ? void 0 : rules.container) == null ? void 0 : _e.borderColor,
|
1708
|
-
borderTopStyle: "solid",
|
1709
|
-
borderLeftWidth: (_f = rules == null ? void 0 : rules.container) == null ? void 0 : _f.borderWidth,
|
1710
|
-
borderLeftColor: (_g = rules == null ? void 0 : rules.container) == null ? void 0 : _g.borderColor,
|
1711
|
-
borderLeftStyle: "solid"
|
1712
|
-
};
|
1713
|
-
const bodyRules = {
|
1714
|
-
left: (_h = rules == null ? void 0 : rules.container) == null ? void 0 : _h.left
|
1715
|
-
};
|
1716
|
-
const allAnimations = (((_i = rules == null ? void 0 : rules.icon) == null ? void 0 : _i.animations) || []).map((animation) => fullAnimations[animation]).join(", ");
|
1717
|
-
const backgroundStyles = isValue((_j = rules == null ? void 0 : rules.icon) == null ? void 0 : _j.gradientColor) && ((_k = rules == null ? void 0 : rules.icon) == null ? void 0 : _k.animations.includes("gradient")) ? {
|
1718
|
-
background: `linear-gradient(-90deg, ${(_l = rules.icon) == null ? void 0 : _l.backgroundColor} 0%, ${(_m = rules == null ? void 0 : rules.icon) == null ? void 0 : _m.gradientColor} 100%) 0% 0% / 400% 400%`,
|
1719
|
-
backgroundSize: "400% 400%"
|
1720
|
-
} : rules == null ? void 0 : rules.icon;
|
1721
|
-
const iconRules = {
|
1722
|
-
...(rules == null ? void 0 : rules.icon) || {},
|
1723
|
-
animation: allAnimations,
|
1724
|
-
...backgroundStyles
|
1725
|
-
};
|
1726
|
-
return {
|
1727
|
-
hasIcon,
|
1728
|
-
arrowRules,
|
1729
|
-
bodyRules,
|
1730
|
-
iconRules
|
1731
|
-
};
|
1732
|
-
};
|
1733
|
-
const backgroundOptions = ["backgroundColor", "backgroundColorOpacity", "backgroundImage", "backgroundFit"];
|
1734
|
-
const borderOptions = ["borderWidth", "borderColor", "borderStyle"];
|
1735
|
-
const spacingOptions = ["marginTop", "marginBottom", "marginLeft", "marginRight", "paddingTop", "paddingBottom", "paddingLeft", "paddingRight"];
|
1736
|
-
const noopYaMetrika = (goal) => console.log(`Noop YaMektika reach goal: ${goal}`);
|
1737
|
-
const noopAdFox = (goal) => console.log(`Noop AdFox reach goal: ${goal}`);
|
1738
|
-
const useMetrics = (state, layerName = "root") => {
|
1739
|
-
const saveMetrics = _$1();
|
1740
|
-
const yaReachGoal = state.yaReachGoal || noopYaMetrika;
|
1741
|
-
const adfoxReachGoal = state.adfoxReachGoal || noopAdFox;
|
1742
|
-
const metrics = pick(state[layerName], "yaShow", "yaClick", "adfoxShow", "adfoxClick");
|
1743
|
-
p(() => {
|
1744
|
-
if (!isJsonSame(saveMetrics.current, metrics)) {
|
1745
|
-
if (metrics.yaShow) {
|
1746
|
-
yaReachGoal(metrics.yaShow);
|
1747
|
-
}
|
1748
|
-
if (metrics.adfoxShow) {
|
1749
|
-
adfoxReachGoal(metrics.adfoxShow);
|
1750
|
-
}
|
1751
|
-
}
|
1752
|
-
saveMetrics.current = metrics;
|
1753
|
-
}, [metrics]);
|
1754
|
-
return () => {
|
1755
|
-
if (metrics.yaClick) {
|
1756
|
-
yaReachGoal(metrics.yaClick);
|
1757
|
-
}
|
1758
|
-
if (metrics.adfoxClick) {
|
1759
|
-
adfoxReachGoal(metrics.adfoxClick);
|
1760
|
-
}
|
1761
|
-
};
|
1762
|
-
};
|
1763
|
-
const useExtractFonts = (state) => {
|
1764
|
-
const fonts = /* @__PURE__ */ new Set([]);
|
1765
|
-
iterator(state, (key, value) => {
|
1766
|
-
if (key === "fontFamily") {
|
1767
|
-
fonts.add(value);
|
1768
|
-
}
|
1769
|
-
return value;
|
1770
|
-
});
|
1771
|
-
const fontLinks = F$1(() => Array.from(fonts.values()).map((font) => ({
|
1772
|
-
rel: "stylesheet",
|
1773
|
-
href: `https://fonts.googleapis.com/css?family=${font}:300,400,500,700&display=swap`
|
1774
|
-
})), [fonts]);
|
1775
|
-
p(() => {
|
1776
|
-
fontLinks.forEach((link) => injectLink(link));
|
1777
|
-
}, [fontLinks]);
|
1778
|
-
};
|
1779
|
-
const useLifecycle = (state) => {
|
1780
|
-
const cycles = pick(state, "onMount", "onDestroy", "onClick");
|
1781
|
-
p(() => {
|
1782
|
-
(cycles.onMount || noop)();
|
1783
|
-
return cycles.onDestroy || noop;
|
1784
|
-
}, []);
|
1785
|
-
return cycles.onClick || noop;
|
1786
|
-
};
|
1787
|
-
const SimpleGift = k(({
|
1788
|
-
id
|
1789
|
-
}, _ref) => {
|
1790
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
1791
|
-
const rootRef = _$1(null);
|
1792
|
-
const [legalIsOpen, toggleLegalIsOpen] = useToggle();
|
1793
|
-
const state = useCurrentState();
|
1794
|
-
const device = useContainerDevice({
|
1795
|
-
targetRef: rootRef,
|
1796
|
-
id
|
1797
|
-
});
|
1798
|
-
const deviceState = useGetRules(state, device);
|
1799
|
-
const rules = useParseRules(deviceState);
|
1800
|
-
const onClickMetrics = useMetrics(deviceState);
|
1801
|
-
const {
|
1802
|
-
isOpen,
|
1803
|
-
onToggle
|
1804
|
-
} = useGiftOpen({
|
1805
|
-
delay: (_a = deviceState == null ? void 0 : deviceState.container) == null ? void 0 : _a.delay,
|
1806
|
-
...pick(deviceState, "onOpen", "onAutoOpen")
|
1807
|
-
});
|
1808
|
-
const {
|
1809
|
-
hasIcon,
|
1810
|
-
iconRules,
|
1811
|
-
bodyRules,
|
1812
|
-
arrowRules
|
1813
|
-
} = useGiftRules(deviceState, {
|
1814
|
-
fade: styles$d.fadein,
|
1815
|
-
pulse: styles$d.pulse,
|
1816
|
-
wiggle: styles$d.wiggle,
|
1817
|
-
gradient: styles$d.gradient
|
1818
|
-
});
|
1819
|
-
useExtractFonts(deviceState);
|
1820
|
-
const onClick = useLifecycle(deviceState);
|
1821
|
-
const legalBorder = legalIsOpen ? pick(rules.container, ...borderOptions) : {};
|
1822
|
-
return o("div", {
|
1823
|
-
className: classNames(styles$d.root, {
|
1824
|
-
[styles$d.legalOpen]: legalIsOpen
|
1825
|
-
}),
|
1826
|
-
ref: rootRef,
|
1827
|
-
children: [o("div", {
|
1828
|
-
className: styles$d.icon,
|
1829
|
-
style: iconRules,
|
1830
|
-
onClick: onToggle,
|
1831
|
-
children: hasIcon && o("div", {
|
1832
|
-
className: styles$d.iconTarget,
|
1833
|
-
children: o(GiftIcon, {})
|
1834
|
-
})
|
1835
|
-
}), o("div", {
|
1836
|
-
className: classNames(styles$d.body, {
|
1837
|
-
[styles$d.bodyOpen]: isOpen
|
1838
|
-
}),
|
1839
|
-
style: bodyRules,
|
1840
|
-
children: [o("div", {
|
1841
|
-
className: styles$d.arrow,
|
1842
|
-
style: arrowRules
|
1843
|
-
}), o("div", {
|
1844
|
-
className: styles$d.close,
|
1845
|
-
style: rules.close,
|
1846
|
-
onClick: onToggle,
|
1847
|
-
children: o(CloseIcon, {})
|
1848
|
-
}), o("div", {
|
1849
|
-
className: styles$d.container,
|
1850
|
-
style: rules.container,
|
1851
|
-
children: [o("a", {
|
1852
|
-
href: (_b = rules.root) == null ? void 0 : _b.offer,
|
1853
|
-
target: "_blank",
|
1854
|
-
rel: "nofollow noopener noreferrer",
|
1855
|
-
onClick: () => {
|
1856
|
-
onClick();
|
1857
|
-
onClickMetrics();
|
1858
|
-
},
|
1859
|
-
children: [o("div", {
|
1860
|
-
className: styles$d.inner,
|
1861
|
-
children: [o("div", {
|
1862
|
-
className: styles$d.logo,
|
1863
|
-
style: rules.logo
|
1864
|
-
}), o(DisplayText, {
|
1865
|
-
className: styles$d.text,
|
1866
|
-
style: rules.text,
|
1867
|
-
children: (_c = rules == null ? void 0 : rules.text) == null ? void 0 : _c.children
|
1868
|
-
})]
|
1869
|
-
}), o("div", {
|
1870
|
-
className: classNames(styles$d.button, {
|
1871
|
-
[styles$d.buttonAnimated]: rules.button.isAnimated
|
1872
|
-
}),
|
1873
|
-
style: rules.button,
|
1874
|
-
children: (_d = rules.button) == null ? void 0 : _d.children
|
1875
|
-
})]
|
1876
|
-
}), o("div", {
|
1877
|
-
className: styles$d.legalGap
|
1878
|
-
}), o("div", {
|
1879
|
-
className: styles$d.legal,
|
1880
|
-
style: {
|
1881
|
-
...rules.legal,
|
1882
|
-
...legalBorder
|
1883
|
-
},
|
1884
|
-
children: o("span", {
|
1885
|
-
className: styles$d.legalText,
|
1886
|
-
children: o("span", {
|
1887
|
-
children: [o("span", {
|
1888
|
-
children: (_e = rules == null ? void 0 : rules.legal) == null ? void 0 : _e.children
|
1889
|
-
}), o("span", {
|
1890
|
-
className: styles$d.legalButton,
|
1891
|
-
onClick: toggleLegalIsOpen,
|
1892
|
-
children: legalIsOpen ? (_f = rules == null ? void 0 : rules.legal) == null ? void 0 : _f.buttonOpenText : (_g = rules == null ? void 0 : rules.legal) == null ? void 0 : _g.buttonHideText
|
1893
|
-
})]
|
1894
|
-
})
|
1895
|
-
})
|
1896
|
-
})]
|
1897
|
-
})]
|
1898
|
-
})]
|
1899
|
-
});
|
1900
|
-
});
|
1901
|
-
const index$6 = render(o(SimpleGift, {}));
|
1902
|
-
const root$c = "_root_1hrqs_1";
|
1903
|
-
const icon = "_icon_1hrqs_5";
|
1904
|
-
const iconTarget = "_iconTarget_1hrqs_17";
|
1905
|
-
const body$5 = "_body_1hrqs_22";
|
1906
|
-
const desktop$8 = "_desktop_1hrqs_29";
|
1907
|
-
const tablet$3 = "_tablet_1hrqs_29";
|
1908
|
-
const laptop$4 = "_laptop_1hrqs_29";
|
1909
|
-
const bodyOpen = "_bodyOpen_1hrqs_33";
|
1910
|
-
const complexGift_in = "_complexGift_in_1hrqs_1";
|
1911
|
-
const arrow = "_arrow_1hrqs_46";
|
1912
|
-
const container$1 = "_container_1hrqs_56";
|
1913
|
-
const promotion$1 = "_promotion_1hrqs_61";
|
1914
|
-
const close$3 = "_close_1hrqs_69";
|
1915
|
-
const head$1 = "_head_1hrqs_83";
|
1916
|
-
const headIcon = "_headIcon_1hrqs_90";
|
1917
|
-
const headTitle = "_headTitle_1hrqs_96";
|
1918
|
-
const inner = "_inner_1hrqs_103";
|
1919
|
-
const fadein = "_fadein_1hrqs_1";
|
1920
|
-
const pulse = "_pulse_1hrqs_1";
|
1921
|
-
const gradient = "_gradient_1hrqs_1";
|
1922
|
-
const wiggle = "_wiggle_1hrqs_1";
|
1923
|
-
const styles$c = {
|
1924
|
-
root: root$c,
|
1925
|
-
icon,
|
1926
|
-
iconTarget,
|
1927
|
-
body: body$5,
|
1928
|
-
desktop: desktop$8,
|
1929
|
-
tablet: tablet$3,
|
1930
|
-
laptop: laptop$4,
|
1931
|
-
bodyOpen,
|
1932
|
-
complexGift_in,
|
1933
|
-
arrow,
|
1934
|
-
container: container$1,
|
1935
|
-
promotion: promotion$1,
|
1936
|
-
close: close$3,
|
1937
|
-
head: head$1,
|
1938
|
-
headIcon,
|
1939
|
-
headTitle,
|
1940
|
-
inner,
|
1941
|
-
fadein,
|
1942
|
-
pulse,
|
1943
|
-
gradient,
|
1944
|
-
wiggle
|
1945
|
-
};
|
1946
|
-
const root$b = "_root_tv8qf_1";
|
1947
|
-
const body$4 = "_body_tv8qf_30";
|
1948
|
-
const bodyInner = "_bodyInner_tv8qf_38";
|
1949
|
-
const line = "_line_tv8qf_43";
|
1950
|
-
const text$3 = "_text_tv8qf_53";
|
1951
|
-
const button$5 = "_button_tv8qf_69";
|
1952
|
-
const logo$5 = "_logo_tv8qf_81";
|
1953
|
-
const variant2$1 = "_variant2_tv8qf_87";
|
1954
|
-
const buttonText = "_buttonText_tv8qf_91";
|
1955
|
-
const legal$4 = "_legal_tv8qf_108";
|
1956
|
-
const styles$b = {
|
1957
|
-
root: root$b,
|
1958
|
-
body: body$4,
|
1959
|
-
bodyInner,
|
1960
|
-
line,
|
1961
|
-
text: text$3,
|
1962
|
-
button: button$5,
|
1963
|
-
logo: logo$5,
|
1964
|
-
variant2: variant2$1,
|
1965
|
-
buttonText,
|
1966
|
-
legal: legal$4
|
1967
|
-
};
|
1968
|
-
const BonusCard$1 = () => {
|
1969
|
-
var _a, _b, _c, _d, _e;
|
1970
|
-
const state = useCurrentState();
|
1971
|
-
const rules = useParseRules(state);
|
1972
|
-
const onClick = useMetrics(state);
|
1973
|
-
return o("a", {
|
1974
|
-
href: (_a = rules.root) == null ? void 0 : _a.offer,
|
1975
|
-
target: "_blank",
|
1976
|
-
rel: "nofollow noopener noreferrer",
|
1977
|
-
className: classNames(styles$b.root, {
|
1978
|
-
[styles$b.variant2]: ((_b = rules.root) == null ? void 0 : _b.variant) === "variant2"
|
1979
|
-
}),
|
1980
|
-
style: rules.root,
|
1981
|
-
onClick,
|
1982
|
-
children: [o("div", {
|
1983
|
-
className: styles$b.body,
|
1984
|
-
children: [o("div", {
|
1985
|
-
className: styles$b.line,
|
1986
|
-
style: rules.line
|
1987
|
-
}), o("div", {
|
1988
|
-
className: styles$b.bodyInner,
|
1989
|
-
children: [o("div", {
|
1990
|
-
className: styles$b.logo,
|
1991
|
-
style: rules.logo
|
1992
|
-
}), o("div", {
|
1993
|
-
className: styles$b.text,
|
1994
|
-
style: rules.text,
|
1995
|
-
children: o(DisplayText, {
|
1996
|
-
children: (_c = rules.text) == null ? void 0 : _c.children
|
1997
|
-
})
|
1998
|
-
})]
|
1999
|
-
}), o("div", {
|
2000
|
-
className: styles$b.button,
|
2001
|
-
style: rules.button,
|
2002
|
-
children: [o("div", {
|
2003
|
-
className: styles$b.logo,
|
2004
|
-
style: rules.logo
|
2005
|
-
}), o("div", {
|
2006
|
-
className: styles$b.buttonText,
|
2007
|
-
children: (_d = rules.button) == null ? void 0 : _d.children
|
2008
|
-
})]
|
2009
|
-
})]
|
2010
|
-
}), o("div", {
|
2011
|
-
className: styles$b.legal,
|
2012
|
-
style: rules.legal,
|
2013
|
-
children: (_e = rules.legal) == null ? void 0 : _e.children
|
2014
|
-
})]
|
2015
|
-
});
|
2016
|
-
};
|
2017
|
-
const ComplexGift = k(({
|
2018
|
-
id
|
2019
|
-
}, _ref) => {
|
2020
|
-
var _a, _b, _c, _d;
|
2021
|
-
const rootRef = _$1(null);
|
2022
|
-
const state = useCurrentState();
|
2023
|
-
const device = useContainerDevice({
|
2024
|
-
targetRef: rootRef,
|
2025
|
-
id
|
2026
|
-
});
|
2027
|
-
const deviceState = useGetRules(state, device);
|
2028
|
-
const {
|
2029
|
-
isOpen,
|
2030
|
-
onToggle
|
2031
|
-
} = useGiftOpen({
|
2032
|
-
delay: (_a = deviceState == null ? void 0 : deviceState.container) == null ? void 0 : _a.delay,
|
2033
|
-
...pick(deviceState, "onOpen", "onAutoOpen")
|
2034
|
-
});
|
2035
|
-
const rules = useParseRules(deviceState);
|
2036
|
-
const onClick = useLifecycle(deviceState);
|
2037
|
-
useExtractFonts(deviceState);
|
2038
|
-
const {
|
2039
|
-
hasIcon,
|
2040
|
-
iconRules,
|
2041
|
-
bodyRules,
|
2042
|
-
arrowRules
|
2043
|
-
} = useGiftRules(deviceState, {
|
2044
|
-
fade: styles$c.fadein,
|
2045
|
-
pulse: styles$c.pulse,
|
2046
|
-
wiggle: styles$c.wiggle,
|
2047
|
-
gradient: styles$c.gradient
|
2048
|
-
});
|
2049
|
-
const hasTitleIcon = (_b = rules == null ? void 0 : rules.title) == null ? void 0 : _b.hasIcon;
|
2050
|
-
return o("div", {
|
2051
|
-
ref: rootRef,
|
2052
|
-
className: classNames(styles$c.root, {
|
2053
|
-
[styles$c.desktop]: device === "desktop",
|
2054
|
-
[styles$c.laptop]: device === "laptop",
|
2055
|
-
[styles$c.tablet]: device === "tablet"
|
2056
|
-
}),
|
2057
|
-
children: [o("div", {
|
2058
|
-
className: styles$c.icon,
|
2059
|
-
style: iconRules,
|
2060
|
-
onClick: onToggle,
|
2061
|
-
children: hasIcon && o("div", {
|
2062
|
-
className: styles$c.iconTarget,
|
2063
|
-
children: o(GiftIcon, {})
|
2064
|
-
})
|
2065
|
-
}), o("div", {
|
2066
|
-
className: classNames(styles$c.body, {
|
2067
|
-
[styles$c.bodyOpen]: isOpen
|
2068
|
-
}),
|
2069
|
-
style: bodyRules,
|
2070
|
-
children: [o("div", {
|
2071
|
-
className: styles$c.arrow,
|
2072
|
-
style: arrowRules
|
2073
|
-
}), o("div", {
|
2074
|
-
className: styles$c.container,
|
2075
|
-
style: rules.container,
|
2076
|
-
children: [o("div", {
|
2077
|
-
className: styles$c.close,
|
2078
|
-
style: rules.close,
|
2079
|
-
onClick: onToggle,
|
2080
|
-
children: o(CloseIcon, {})
|
2081
|
-
}), o("div", {
|
2082
|
-
className: styles$c.promotion,
|
2083
|
-
style: rules.promotion,
|
2084
|
-
children: (_c = rules.promotion) == null ? void 0 : _c.children
|
2085
|
-
}), o("div", {
|
2086
|
-
className: styles$c.head,
|
2087
|
-
children: [hasTitleIcon && o("div", {
|
2088
|
-
className: styles$c.headIcon,
|
2089
|
-
style: pick(rules.title, "color"),
|
2090
|
-
children: o(GiftIcon, {})
|
2091
|
-
}), o("div", {
|
2092
|
-
className: styles$c.headTitle,
|
2093
|
-
style: rules.title,
|
2094
|
-
children: (_d = rules.title) == null ? void 0 : _d.children
|
2095
|
-
})]
|
2096
|
-
}), o("div", {
|
2097
|
-
className: styles$c.inner,
|
2098
|
-
onClick,
|
2099
|
-
children: (rules.children || []).map((child) => o(StateContext, {
|
2100
|
-
value: child,
|
2101
|
-
children: o(BonusCard$1, {})
|
2102
|
-
}))
|
2103
|
-
})]
|
2104
|
-
})]
|
2105
|
-
})]
|
2106
|
-
});
|
2107
|
-
});
|
2108
|
-
const index$5 = render(o(ComplexGift, {}));
|
2109
|
-
const root$a = "_root_15w5v_1";
|
2110
|
-
const content$3 = "_content_15w5v_11";
|
2111
|
-
const laptop$3 = "_laptop_15w5v_20";
|
2112
|
-
const tablet$2 = "_tablet_15w5v_24";
|
2113
|
-
const desktop$7 = "_desktop_15w5v_28";
|
2114
|
-
const wrapper$2 = "_wrapper_15w5v_32";
|
2115
|
-
const overlay$2 = "_overlay_15w5v_36";
|
2116
|
-
const close$2 = "_close_15w5v_42";
|
2117
|
-
const body$3 = "_body_15w5v_50";
|
2118
|
-
const logo$4 = "_logo_15w5v_62";
|
2119
|
-
const text$2 = "_text_15w5v_68";
|
2120
|
-
const button$4 = "_button_15w5v_72";
|
2121
|
-
const legal$3 = "_legal_15w5v_87";
|
2122
|
-
const styles$a = {
|
2123
|
-
root: root$a,
|
2124
|
-
content: content$3,
|
2125
|
-
laptop: laptop$3,
|
2126
|
-
tablet: tablet$2,
|
2127
|
-
desktop: desktop$7,
|
2128
|
-
wrapper: wrapper$2,
|
2129
|
-
overlay: overlay$2,
|
2130
|
-
close: close$2,
|
2131
|
-
body: body$3,
|
2132
|
-
logo: logo$4,
|
2133
|
-
text: text$2,
|
2134
|
-
button: button$4,
|
2135
|
-
legal: legal$3
|
2136
|
-
};
|
2137
|
-
const switchTextAlignToFlex = (textAlign) => textAlign ? {
|
2138
|
-
left: "flex-start",
|
2139
|
-
center: "center",
|
2140
|
-
right: "flex-end"
|
2141
|
-
}[textAlign] : textAlign;
|
2142
|
-
const root$9 = "_root_2ic16_1";
|
2143
|
-
const styles$9 = {
|
2144
|
-
root: root$9
|
2145
|
-
};
|
2146
|
-
const Line = () => {
|
2147
|
-
var _a;
|
2148
|
-
const state = useCurrentState();
|
2149
|
-
const rules = useParseRules(state);
|
2150
|
-
return o("div", {
|
2151
|
-
className: styles$9.root,
|
2152
|
-
style: rules.root,
|
2153
|
-
children: o(DisplayText, {
|
2154
|
-
children: (_a = rules == null ? void 0 : rules.root) == null ? void 0 : _a.children
|
2155
|
-
})
|
2156
|
-
});
|
2157
|
-
};
|
2158
|
-
const usePopup = (ref) => {
|
2159
|
-
const [isOpen, setIsOpen] = h(false);
|
2160
|
-
const show = () => setIsOpen(true);
|
2161
|
-
const hide = () => setIsOpen(false);
|
2162
|
-
A(ref, () => ({
|
2163
|
-
show,
|
2164
|
-
hide
|
2165
|
-
}));
|
2166
|
-
return {
|
2167
|
-
isOpen,
|
2168
|
-
show,
|
2169
|
-
hide
|
2170
|
-
};
|
2171
|
-
};
|
2172
|
-
const SimplePopup = k(({
|
2173
|
-
id
|
2174
|
-
}, ref) => {
|
2175
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
2176
|
-
const rootRef = _$1(null);
|
2177
|
-
const {
|
2178
|
-
isOpen,
|
2179
|
-
hide
|
2180
|
-
} = usePopup(ref);
|
2181
|
-
const device = useContainerDevice({
|
2182
|
-
targetRef: rootRef,
|
2183
|
-
id
|
2184
|
-
});
|
2185
|
-
const state = useCurrentState();
|
2186
|
-
const deviceState = useGetRules(state, device);
|
2187
|
-
const onClick = useMetrics(deviceState);
|
2188
|
-
set(deviceState, "button.percent_width", (_a = deviceState == null ? void 0 : deviceState.button) == null ? void 0 : _a.width);
|
2189
|
-
set(deviceState, "legal.percent_width", (_b = deviceState == null ? void 0 : deviceState.legal) == null ? void 0 : _b.width);
|
2190
|
-
const rules = useParseRules(deviceState);
|
2191
|
-
const bodyRules = {
|
2192
|
-
alignItems: switchTextAlignToFlex((_c = rules.root) == null ? void 0 : _c.align)
|
2193
|
-
};
|
2194
|
-
const buttonRules = {
|
2195
|
-
...rules == null ? void 0 : rules.button,
|
2196
|
-
justifyContent: switchTextAlignToFlex((_d = rules.root) == null ? void 0 : _d.textAlign)
|
2197
|
-
};
|
2198
|
-
const legalRules = {
|
2199
|
-
...rules == null ? void 0 : rules.legal,
|
2200
|
-
justifyContent: switchTextAlignToFlex((_e = rules.root) == null ? void 0 : _e.textAlign)
|
2201
|
-
};
|
2202
|
-
return o("div", {
|
2203
|
-
className: styles$a.root,
|
2204
|
-
ref: rootRef,
|
2205
|
-
style: {
|
2206
|
-
display: isOpen ? "flex" : "none"
|
2207
|
-
},
|
2208
|
-
children: [o("div", {
|
2209
|
-
className: styles$a.overlay,
|
2210
|
-
style: rules.overlay,
|
2211
|
-
onClick: hide
|
2212
|
-
}), o("div", {
|
2213
|
-
className: styles$a.wrapper,
|
2214
|
-
children: [o("div", {
|
2215
|
-
className: styles$a.close,
|
2216
|
-
style: {
|
2217
|
-
color: (_f = rules.close) == null ? void 0 : _f.backgroundColor
|
2218
|
-
},
|
2219
|
-
onClick: hide,
|
2220
|
-
children: o(CloseIcon, {})
|
2221
|
-
}), o("a", {
|
2222
|
-
href: (_g = rules.root) == null ? void 0 : _g.offer,
|
2223
|
-
target: "_blank",
|
2224
|
-
rel: "nofollow noopener noreferrer",
|
2225
|
-
className: classNames(styles$a.content, {
|
2226
|
-
[styles$a.desktop]: device === "desktop",
|
2227
|
-
[styles$a.tablet]: device === "tablet",
|
2228
|
-
[styles$a.laptop]: device === "laptop"
|
2229
|
-
}),
|
2230
|
-
style: rules.root,
|
2231
|
-
onClick,
|
2232
|
-
children: o("div", {
|
2233
|
-
className: styles$a.body,
|
2234
|
-
style: bodyRules,
|
2235
|
-
children: [o("div", {
|
2236
|
-
className: styles$a.logo,
|
2237
|
-
style: rules.logo
|
2238
|
-
}), o("div", {
|
2239
|
-
className: styles$a.text,
|
2240
|
-
children: ((rules == null ? void 0 : rules.children) || []).map((el) => o(StateContext, {
|
2241
|
-
value: el,
|
2242
|
-
children: o(Line, {})
|
2243
|
-
}))
|
2244
|
-
}), o("div", {
|
2245
|
-
className: styles$a.button,
|
2246
|
-
style: buttonRules,
|
2247
|
-
children: buttonRules == null ? void 0 : buttonRules.children
|
2248
|
-
}), o("div", {
|
2249
|
-
className: styles$a.legal,
|
2250
|
-
style: legalRules,
|
2251
|
-
children: legalRules == null ? void 0 : legalRules.children
|
2252
|
-
})]
|
2253
|
-
})
|
2254
|
-
})]
|
2255
|
-
})]
|
2256
|
-
});
|
2257
|
-
});
|
2258
|
-
const index$4 = render(o(SimplePopup, {}));
|
2259
|
-
const root$8 = "_root_1ifs0_1";
|
2260
|
-
const content$2 = "_content_1ifs0_5";
|
2261
|
-
const desktop$6 = "_desktop_1ifs0_18";
|
2262
|
-
const overlay$1 = "_overlay_1ifs0_23";
|
2263
|
-
const close$1 = "_close_1ifs0_29";
|
2264
|
-
const title$2 = "_title_1ifs0_36";
|
2265
|
-
const wrapper$1 = "_wrapper_1ifs0_51";
|
2266
|
-
const styles$8 = {
|
2267
|
-
root: root$8,
|
2268
|
-
content: content$2,
|
2269
|
-
desktop: desktop$6,
|
2270
|
-
overlay: overlay$1,
|
2271
|
-
close: close$1,
|
2272
|
-
title: title$2,
|
2273
|
-
wrapper: wrapper$1
|
2274
|
-
};
|
2275
|
-
const root$7 = "_root_1ska4_1";
|
2276
|
-
const desktop$5 = "_desktop_1ska4_10";
|
2277
|
-
const header = "_header_1ska4_15";
|
2278
|
-
const logo$3 = "_logo_1ska4_26";
|
2279
|
-
const container = "_container_1ska4_33";
|
2280
|
-
const body$2 = "_body_1ska4_44";
|
2281
|
-
const text$1 = "_text_1ska4_61";
|
2282
|
-
const button$3 = "_button_1ska4_84";
|
2283
|
-
const legal$2 = "_legal_1ska4_102";
|
2284
|
-
const styles$7 = {
|
2285
|
-
root: root$7,
|
2286
|
-
desktop: desktop$5,
|
2287
|
-
header,
|
2288
|
-
logo: logo$3,
|
2289
|
-
container,
|
2290
|
-
body: body$2,
|
2291
|
-
text: text$1,
|
2292
|
-
button: button$3,
|
2293
|
-
legal: legal$2
|
2294
|
-
};
|
2295
|
-
const Bonus$1 = () => {
|
2296
|
-
var _a, _b, _c, _d;
|
2297
|
-
const state = useCurrentState();
|
2298
|
-
const rules = useParseRules(state);
|
2299
|
-
const device = (state == null ? void 0 : state.device) || "desktop";
|
2300
|
-
const onClick = useMetrics(state);
|
2301
|
-
return o("a", {
|
2302
|
-
href: (_a = rules.root) == null ? void 0 : _a.offer,
|
2303
|
-
target: "_blank",
|
2304
|
-
rel: "nofollow noopener noreferrer",
|
2305
|
-
className: classNames(styles$7.root, {
|
2306
|
-
[styles$7.desktop]: device === "desktop"
|
2307
|
-
}),
|
2308
|
-
style: omit(rules.root, ...spacingOptions),
|
2309
|
-
onClick,
|
2310
|
-
children: [o("div", {
|
2311
|
-
className: styles$7.header,
|
2312
|
-
style: rules.header,
|
2313
|
-
children: o("div", {
|
2314
|
-
className: styles$7.logo,
|
2315
|
-
style: rules.logo
|
2316
|
-
})
|
2317
|
-
}), o("div", {
|
2318
|
-
className: styles$7.container,
|
2319
|
-
style: pick(rules.root, ...spacingOptions),
|
2320
|
-
children: [o("div", {
|
2321
|
-
className: styles$7.body,
|
2322
|
-
children: [o("div", {
|
2323
|
-
className: styles$7.logo
|
2324
|
-
}), o(DisplayText, {
|
2325
|
-
className: styles$7.text,
|
2326
|
-
style: rules.text,
|
2327
|
-
children: (_b = rules.text) == null ? void 0 : _b.children
|
2328
|
-
})]
|
2329
|
-
}), o("div", {
|
2330
|
-
children: [o("div", {
|
2331
|
-
className: styles$7.button,
|
2332
|
-
style: rules.button,
|
2333
|
-
children: (_c = rules.button) == null ? void 0 : _c.children
|
2334
|
-
}), o("div", {
|
2335
|
-
className: styles$7.legal,
|
2336
|
-
style: rules.legal,
|
2337
|
-
children: (_d = rules.legal) == null ? void 0 : _d.children
|
2338
|
-
})]
|
2339
|
-
})]
|
2340
|
-
})]
|
2341
|
-
});
|
2342
|
-
};
|
2343
|
-
const ComplexPopup = k(({
|
2344
|
-
id
|
2345
|
-
}, ref) => {
|
2346
|
-
var _a, _b;
|
2347
|
-
const rootRef = _$1(null);
|
2348
|
-
const {
|
2349
|
-
isOpen,
|
2350
|
-
hide
|
2351
|
-
} = usePopup(ref);
|
2352
|
-
const device = useContainerDevice({
|
2353
|
-
targetRef: rootRef,
|
2354
|
-
id
|
2355
|
-
});
|
2356
|
-
const state = useCurrentState();
|
2357
|
-
const deviceState = useGetRules(state, device);
|
2358
|
-
const rules = useParseRules(deviceState);
|
2359
|
-
useExtractFonts(deviceState);
|
2360
|
-
return o("div", {
|
2361
|
-
className: styles$8.root,
|
2362
|
-
style: {
|
2363
|
-
display: isOpen ? "flex" : "none"
|
2364
|
-
},
|
2365
|
-
children: [o("div", {
|
2366
|
-
className: styles$8.overlay,
|
2367
|
-
style: rules.overlay,
|
2368
|
-
onClick: hide
|
2369
|
-
}), o("div", {
|
2370
|
-
ref: rootRef,
|
2371
|
-
className: classNames(styles$8.content, {
|
2372
|
-
[styles$8.desktop]: device === "desktop"
|
2373
|
-
}),
|
2374
|
-
style: rules.root,
|
2375
|
-
children: [o("div", {
|
2376
|
-
className: styles$8.close,
|
2377
|
-
style: {
|
2378
|
-
color: (_a = rules.close) == null ? void 0 : _a.backgroundColor
|
2379
|
-
},
|
2380
|
-
onClick: hide,
|
2381
|
-
children: o(CloseIcon, {})
|
2382
|
-
}), o("div", {
|
2383
|
-
className: styles$8.title,
|
2384
|
-
style: rules.title,
|
2385
|
-
children: (_b = rules.title) == null ? void 0 : _b.children
|
2386
|
-
}), o("div", {
|
2387
|
-
className: styles$8.wrapper,
|
2388
|
-
children: (rules.children || []).map((child) => o(StateContext, {
|
2389
|
-
value: {
|
2390
|
-
...child,
|
2391
|
-
device
|
2392
|
-
},
|
2393
|
-
children: o(Bonus$1, {})
|
2394
|
-
}))
|
2395
|
-
})]
|
2396
|
-
})]
|
2397
|
-
});
|
2398
|
-
});
|
2399
|
-
const index$3 = render(o(ComplexPopup, {}));
|
2400
|
-
const root$6 = "_root_14xbh_1";
|
2401
|
-
const content$1 = "_content_14xbh_11";
|
2402
|
-
const close = "_close_14xbh_19";
|
2403
|
-
const overlay = "_overlay_14xbh_27";
|
2404
|
-
const body$1 = "_body_14xbh_33";
|
2405
|
-
const desktop$4 = "_desktop_14xbh_43";
|
2406
|
-
const laptop$2 = "_laptop_14xbh_48";
|
2407
|
-
const tablet$1 = "_tablet_14xbh_48";
|
2408
|
-
const head = "_head_14xbh_53";
|
2409
|
-
const title$1 = "_title_14xbh_63";
|
2410
|
-
const logo$2 = "_logo_14xbh_76";
|
2411
|
-
const wrapper = "_wrapper_14xbh_82";
|
2412
|
-
const text = "_text_14xbh_89";
|
2413
|
-
const button$2 = "_button_14xbh_104";
|
2414
|
-
const buttonHead = "_buttonHead_14xbh_119";
|
2415
|
-
const buttonTarget = "_buttonTarget_14xbh_138";
|
2416
|
-
const legal$1 = "_legal_14xbh_154";
|
2417
|
-
const styles$6 = {
|
2418
|
-
root: root$6,
|
2419
|
-
content: content$1,
|
2420
|
-
close,
|
2421
|
-
overlay,
|
2422
|
-
body: body$1,
|
2423
|
-
desktop: desktop$4,
|
2424
|
-
laptop: laptop$2,
|
2425
|
-
tablet: tablet$1,
|
2426
|
-
head,
|
2427
|
-
title: title$1,
|
2428
|
-
logo: logo$2,
|
2429
|
-
wrapper,
|
2430
|
-
text,
|
2431
|
-
button: button$2,
|
2432
|
-
buttonHead,
|
2433
|
-
buttonTarget,
|
2434
|
-
legal: legal$1
|
2435
|
-
};
|
2436
|
-
const root$5 = "_root_14sq5_1";
|
2437
|
-
const left$1 = "_left_14sq5_8";
|
2438
|
-
const desktop$3 = "_desktop_14sq5_15";
|
2439
|
-
const teams = "_teams_14sq5_19";
|
2440
|
-
const logo$1 = "_logo_14sq5_25";
|
2441
|
-
const league = "_league_14sq5_32";
|
2442
|
-
const name = "_name_14sq5_37";
|
2443
|
-
const right$1 = "_right_14sq5_43";
|
2444
|
-
const odd$1 = "_odd_14sq5_54";
|
2445
|
-
const oddLabel$1 = "_oddLabel_14sq5_67";
|
2446
|
-
const oddValue = "_oddValue_14sq5_76";
|
2447
|
-
const team$1 = "_team_14sq5_19";
|
2448
|
-
const teamLogo$1 = "_teamLogo_14sq5_100";
|
2449
|
-
const teamName$1 = "_teamName_14sq5_106";
|
2450
|
-
const styles$5 = {
|
2451
|
-
root: root$5,
|
2452
|
-
left: left$1,
|
2453
|
-
desktop: desktop$3,
|
2454
|
-
teams,
|
2455
|
-
logo: logo$1,
|
2456
|
-
league,
|
2457
|
-
name,
|
2458
|
-
right: right$1,
|
2459
|
-
odd: odd$1,
|
2460
|
-
oddLabel: oddLabel$1,
|
2461
|
-
oddValue,
|
2462
|
-
team: team$1,
|
2463
|
-
teamLogo: teamLogo$1,
|
2464
|
-
teamName: teamName$1
|
2465
|
-
};
|
2466
|
-
const Match = () => {
|
2467
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
2468
|
-
const state = useCurrentState();
|
2469
|
-
const rules = useParseRules(state);
|
2470
|
-
const device = (state == null ? void 0 : state.device) || "desktop";
|
2471
|
-
return o("div", {
|
2472
|
-
className: classNames(styles$5.root, {
|
2473
|
-
[styles$5.desktop]: device === "desktop"
|
2474
|
-
}),
|
2475
|
-
children: [o("div", {
|
2476
|
-
className: styles$5.left,
|
2477
|
-
children: [o("div", {
|
2478
|
-
className: styles$5.teams,
|
2479
|
-
children: [o("div", {
|
2480
|
-
className: styles$5.logo
|
2481
|
-
}), o("div", {
|
2482
|
-
className: styles$5.logo
|
2483
|
-
})]
|
2484
|
-
}), o("div", {
|
2485
|
-
className: styles$5.body,
|
2486
|
-
children: [o("div", {
|
2487
|
-
className: styles$5.league,
|
2488
|
-
style: rules.league,
|
2489
|
-
children: (_a = rules.league) == null ? void 0 : _a.children
|
2490
|
-
}), o("div", {
|
2491
|
-
className: styles$5.name,
|
2492
|
-
style: rules.teams,
|
2493
|
-
children: [(_b = rules.teams) == null ? void 0 : _b.teamA, " — ", (_c = rules.teams) == null ? void 0 : _c.teamB]
|
2494
|
-
})]
|
2495
|
-
})]
|
2496
|
-
}), o("div", {
|
2497
|
-
className: styles$5.right,
|
2498
|
-
children: [o("div", {
|
2499
|
-
className: styles$5.team,
|
2500
|
-
children: [o("div", {
|
2501
|
-
className: styles$5.teamLogo
|
2502
|
-
}), o("div", {
|
2503
|
-
className: styles$5.teamName,
|
2504
|
-
style: rules.teams,
|
2505
|
-
children: (_d = rules.teams) == null ? void 0 : _d.teamA
|
2506
|
-
})]
|
2507
|
-
}), o("div", {
|
2508
|
-
className: styles$5.odd,
|
2509
|
-
children: [o("div", {
|
2510
|
-
className: styles$5.oddLabel,
|
2511
|
-
style: rules.oddLabel,
|
2512
|
-
children: (_e = rules.oddLabel) == null ? void 0 : _e.children
|
2513
|
-
}), o("div", {
|
2514
|
-
className: styles$5.oddValue,
|
2515
|
-
style: rules.oddValue,
|
2516
|
-
children: (_f = rules.oddValue) == null ? void 0 : _f.children
|
2517
|
-
})]
|
2518
|
-
}), o("div", {
|
2519
|
-
className: styles$5.team,
|
2520
|
-
children: [o("div", {
|
2521
|
-
className: styles$5.teamLogo
|
2522
|
-
}), o("div", {
|
2523
|
-
className: styles$5.teamName,
|
2524
|
-
style: rules.teams,
|
2525
|
-
children: (_g = rules.teams) == null ? void 0 : _g.teamB
|
2526
|
-
})]
|
2527
|
-
})]
|
2528
|
-
})]
|
2529
|
-
});
|
2530
|
-
};
|
2531
|
-
const ExpressPopup = k(({
|
2532
|
-
id
|
2533
|
-
}, ref) => {
|
2534
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
|
2535
|
-
const rootRef = _$1(null);
|
2536
|
-
const {
|
2537
|
-
isOpen,
|
2538
|
-
hide
|
2539
|
-
} = usePopup(ref);
|
2540
|
-
const device = useContainerDevice({
|
2541
|
-
targetRef: rootRef,
|
2542
|
-
id
|
2543
|
-
});
|
2544
|
-
const state = useCurrentState();
|
2545
|
-
const deviceState = useGetRules(state, device);
|
2546
|
-
set(deviceState, "buttonWrapper.percent_width", (_a = deviceState == null ? void 0 : deviceState.buttonWrapper) == null ? void 0 : _a.width);
|
2547
|
-
set(deviceState, "legal.percent_width", (_b = deviceState == null ? void 0 : deviceState.legal) == null ? void 0 : _b.width);
|
2548
|
-
const rules = useParseRules(deviceState);
|
2549
|
-
const onClick = useMetrics(deviceState);
|
2550
|
-
useExtractFonts(deviceState);
|
2551
|
-
const bodyRules = {
|
2552
|
-
...rules.root,
|
2553
|
-
alignItems: switchTextAlignToFlex((_c = rules.root) == null ? void 0 : _c.align)
|
2554
|
-
};
|
2555
|
-
const contentRules = {
|
2556
|
-
...rules.content,
|
2557
|
-
alignItems: switchTextAlignToFlex((_d = rules.root) == null ? void 0 : _d.align)
|
2558
|
-
};
|
2559
|
-
const textRules = {
|
2560
|
-
...rules.text,
|
2561
|
-
textAlign: (_e = rules.root) == null ? void 0 : _e.align
|
2562
|
-
};
|
2563
|
-
const buttonRules = {
|
2564
|
-
...rules == null ? void 0 : rules.button,
|
2565
|
-
justifyContent: switchTextAlignToFlex((_f = rules.root) == null ? void 0 : _f.textAlign)
|
2566
|
-
};
|
2567
|
-
const legalRules = {
|
2568
|
-
...rules == null ? void 0 : rules.legal,
|
2569
|
-
justifyContent: switchTextAlignToFlex((_g = rules.root) == null ? void 0 : _g.textAlign)
|
2570
|
-
};
|
2571
|
-
return o("div", {
|
2572
|
-
className: styles$6.root,
|
2573
|
-
ref: rootRef,
|
2574
|
-
style: {
|
2575
|
-
display: isOpen ? "flex" : "none"
|
2576
|
-
},
|
2577
|
-
children: [o("div", {
|
2578
|
-
className: styles$6.overlay,
|
2579
|
-
style: rules.overlay,
|
2580
|
-
onClick: hide
|
2581
|
-
}), o("div", {
|
2582
|
-
className: classNames(styles$6.content, {
|
2583
|
-
[styles$6.desktop]: device === "desktop",
|
2584
|
-
[styles$6.laptop]: device === "laptop",
|
2585
|
-
[styles$6.tablet]: device === "tablet"
|
2586
|
-
}),
|
2587
|
-
children: [o("div", {
|
2588
|
-
className: styles$6.close,
|
2589
|
-
style: {
|
2590
|
-
color: (_h = rules.close) == null ? void 0 : _h.backgroundColor
|
2591
|
-
},
|
2592
|
-
onClick: hide,
|
2593
|
-
children: o(CloseIcon, {})
|
2594
|
-
}), o("a", {
|
2595
|
-
ref: rootRef,
|
2596
|
-
href: (_i = rules.root) == null ? void 0 : _i.offer,
|
2597
|
-
target: "_blank",
|
2598
|
-
rel: "nofollow noopener noreferrer",
|
2599
|
-
onClick,
|
2600
|
-
children: o("div", {
|
2601
|
-
className: styles$6.body,
|
2602
|
-
style: bodyRules,
|
2603
|
-
children: [o("div", {
|
2604
|
-
className: styles$6.head,
|
2605
|
-
children: [o("div", {
|
2606
|
-
className: styles$6.title,
|
2607
|
-
style: rules.title,
|
2608
|
-
children: (_j = rules.title) == null ? void 0 : _j.children
|
2609
|
-
}), o("div", {
|
2610
|
-
className: styles$6.logo,
|
2611
|
-
style: rules.logo
|
2612
|
-
})]
|
2613
|
-
}), o("div", {
|
2614
|
-
className: styles$6.wrapper,
|
2615
|
-
style: contentRules,
|
2616
|
-
children: (rules.children || []).map((child) => o(StateContext, {
|
2617
|
-
value: {
|
2618
|
-
...child,
|
2619
|
-
device
|
2620
|
-
},
|
2621
|
-
children: o(Match, {})
|
2622
|
-
}))
|
2623
|
-
}), o(DisplayText, {
|
2624
|
-
className: styles$6.text,
|
2625
|
-
style: textRules,
|
2626
|
-
children: (_k = rules.text) == null ? void 0 : _k.children
|
2627
|
-
}), o("div", {
|
2628
|
-
className: styles$6.button,
|
2629
|
-
style: rules.buttonWrapper,
|
2630
|
-
children: [o("div", {
|
2631
|
-
className: styles$6.buttonHead,
|
2632
|
-
style: rules.buttonHead,
|
2633
|
-
children: (_l = rules.buttonHead) == null ? void 0 : _l.children
|
2634
|
-
}), o("div", {
|
2635
|
-
className: styles$6.buttonTarget,
|
2636
|
-
style: buttonRules,
|
2637
|
-
children: (_m = rules.button) == null ? void 0 : _m.children
|
2638
|
-
})]
|
2639
|
-
}), o("div", {
|
2640
|
-
className: styles$6.legal,
|
2641
|
-
style: legalRules,
|
2642
|
-
children: (_n = rules.legal) == null ? void 0 : _n.children
|
2643
|
-
})]
|
2644
|
-
})
|
2645
|
-
})]
|
2646
|
-
})]
|
2647
|
-
});
|
2648
|
-
});
|
2649
|
-
const index$2 = render(o(ExpressPopup, {}));
|
2650
|
-
const root$4 = "_root_1slvw_1";
|
2651
|
-
const background$1 = "_background_1slvw_20";
|
2652
|
-
const body = "_body_1slvw_29";
|
2653
|
-
const bookmaker = "_bookmaker_1slvw_39";
|
2654
|
-
const button$1 = "_button_1slvw_46";
|
2655
|
-
const rowFirst = "_rowFirst_1slvw_60";
|
2656
|
-
const rowSecond = "_rowSecond_1slvw_66";
|
2657
|
-
const legal = "_legal_1slvw_72";
|
2658
|
-
const legalText = "_legalText_1slvw_88";
|
2659
|
-
const legalOpen = "_legalOpen_1slvw_98";
|
2660
|
-
const legalButton = "_legalButton_1slvw_103";
|
2661
|
-
const styles$4 = {
|
2662
|
-
root: root$4,
|
2663
|
-
background: background$1,
|
2664
|
-
body,
|
2665
|
-
bookmaker,
|
2666
|
-
button: button$1,
|
2667
|
-
rowFirst,
|
2668
|
-
rowSecond,
|
2669
|
-
legal,
|
2670
|
-
legalText,
|
2671
|
-
legalOpen,
|
2672
|
-
legalButton
|
2673
|
-
};
|
2674
|
-
const Bonus = () => {
|
2675
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
2676
|
-
const state = useCurrentState();
|
2677
|
-
const rules = useParseRules(state);
|
2678
|
-
const [isOpen, toggleIsOpen] = useToggle();
|
2679
|
-
const onClick = useMetrics(state);
|
2680
|
-
return o("div", {
|
2681
|
-
className: styles$4.root,
|
2682
|
-
style: rules.root,
|
2683
|
-
children: [o("div", {
|
2684
|
-
className: styles$4.background,
|
2685
|
-
style: rules.background
|
2686
|
-
}), o("a", {
|
2687
|
-
href: (_a = rules.root) == null ? void 0 : _a.offer,
|
2688
|
-
target: "_blank",
|
2689
|
-
rel: "nofollow noopener noreferrer",
|
2690
|
-
className: styles$4.body,
|
2691
|
-
onClick,
|
2692
|
-
children: [o("div", {
|
2693
|
-
children: [o("div", {
|
2694
|
-
className: styles$4.rowFirst,
|
2695
|
-
style: rules.rowFirst,
|
2696
|
-
children: (_b = rules.rowFirst) == null ? void 0 : _b.children
|
2697
|
-
}), o("div", {
|
2698
|
-
className: styles$4.rowSecond,
|
2699
|
-
style: rules.rowSecond,
|
2700
|
-
children: (_c = rules.rowSecond) == null ? void 0 : _c.children
|
2701
|
-
}), o("div", {
|
2702
|
-
className: styles$4.bookmaker,
|
2703
|
-
children: "winline"
|
2704
|
-
})]
|
2705
|
-
}), o("div", {
|
2706
|
-
className: styles$4.button,
|
2707
|
-
style: rules.button,
|
2708
|
-
children: (_d = rules.button) == null ? void 0 : _d.children
|
2709
|
-
})]
|
2710
|
-
}), o("div", {
|
2711
|
-
className: classNames(styles$4.legal, {
|
2712
|
-
[styles$4.legalOpen]: isOpen
|
2713
|
-
}),
|
2714
|
-
style: rules.legalInfo,
|
2715
|
-
children: o("span", {
|
2716
|
-
className: styles$4.legalText,
|
2717
|
-
children: [o("span", {
|
2718
|
-
children: (_e = rules.legalInfo) == null ? void 0 : _e.children
|
2719
|
-
}), o("span", {
|
2720
|
-
className: styles$4.legalButton,
|
2721
|
-
style: rules.legalInfoButton,
|
2722
|
-
onClick: toggleIsOpen,
|
2723
|
-
children: isOpen ? (_f = rules.legalInfoButton) == null ? void 0 : _f.openText : (_g = rules.legalInfoButton) == null ? void 0 : _g.closeText
|
2724
|
-
})]
|
2725
|
-
})
|
2726
|
-
})]
|
2727
|
-
});
|
2728
|
-
};
|
2729
|
-
const BonusCard = () => {
|
2730
|
-
const rootRef = _$1(null);
|
2731
|
-
const state = useCurrentState();
|
2732
|
-
const device = "desktop";
|
2733
|
-
const deviceState = useGetRules(state, device);
|
2734
|
-
const rules = useParseRules(deviceState);
|
2735
|
-
return o("div", {
|
2736
|
-
ref: rootRef,
|
2737
|
-
children: ((rules == null ? void 0 : rules.children) || []).map((child) => o(StateContext, {
|
2738
|
-
value: child,
|
2739
|
-
children: o(Bonus, {})
|
2740
|
-
}))
|
2741
|
-
});
|
2742
|
-
};
|
2743
|
-
const index$1 = render(o(BonusCard, {}));
|
2744
|
-
const root$3 = "_root_a3kem_1";
|
2745
|
-
const desktop$2 = "_desktop_a3kem_13";
|
2746
|
-
const laptop$1 = "_laptop_a3kem_14";
|
2747
|
-
const promotion = "_promotion_a3kem_18";
|
2748
|
-
const background = "_background_a3kem_34";
|
2749
|
-
const content = "_content_a3kem_43";
|
2750
|
-
const variant2 = "_variant2_a3kem_56";
|
2751
|
-
const logo = "_logo_a3kem_60";
|
2752
|
-
const left = "_left_a3kem_72";
|
2753
|
-
const center = "_center_a3kem_86";
|
2754
|
-
const slide = "_slide_a3kem_92";
|
2755
|
-
const slide_animated_default = "_slide_animated_default_a3kem_106";
|
2756
|
-
const right = "_right_a3kem_116";
|
2757
|
-
const buttonWrapper = "_buttonWrapper_a3kem_131";
|
2758
|
-
const button = "_button_a3kem_131";
|
2759
|
-
const button_animated = "_button_animated_a3kem_162";
|
2760
|
-
const increase = "_increase_a3kem_1";
|
2761
|
-
const styles$3 = {
|
2762
|
-
root: root$3,
|
2763
|
-
desktop: desktop$2,
|
2764
|
-
laptop: laptop$1,
|
2765
|
-
promotion,
|
2766
|
-
background,
|
2767
|
-
content,
|
2768
|
-
variant2,
|
2769
|
-
logo,
|
2770
|
-
left,
|
2771
|
-
center,
|
2772
|
-
slide,
|
2773
|
-
slide_animated_default,
|
2774
|
-
"fade-in-out": "_fade-in-out_a3kem_1",
|
2775
|
-
"slide_animated_bottom-top": "_slide_animated_bottom-top_a3kem_109",
|
2776
|
-
"fade-in-bottom-out-top": "_fade-in-bottom-out-top_a3kem_1",
|
2777
|
-
"slide_animated_top-bottom": "_slide_animated_top-bottom_a3kem_112",
|
2778
|
-
right,
|
2779
|
-
buttonWrapper,
|
2780
|
-
button,
|
2781
|
-
button_animated,
|
2782
|
-
increase,
|
2783
|
-
"fade-in-top-out-bottom": "_fade-in-top-out-bottom_a3kem_1"
|
2784
|
-
};
|
2785
|
-
const root$2 = "_root_1cgtj_1";
|
2786
|
-
const desktop$1 = "_desktop_1cgtj_19";
|
2787
|
-
const styles$2 = {
|
2788
|
-
root: root$2,
|
2789
|
-
desktop: desktop$1
|
2790
|
-
};
|
2791
|
-
const Text = () => {
|
2792
|
-
var _a;
|
2793
|
-
const state = useCurrentState();
|
2794
|
-
const rules = useParseRules(state);
|
2795
|
-
return o("div", {
|
2796
|
-
className: classNames(styles$2.root, {
|
2797
|
-
[styles$2.desktop]: (state == null ? void 0 : state.device) === "desktop"
|
2798
|
-
}),
|
2799
|
-
style: omit(rules.root, ...backgroundOptions),
|
2800
|
-
children: (_a = rules.root) == null ? void 0 : _a.children
|
2801
|
-
});
|
2802
|
-
};
|
2803
|
-
const root$1 = "_root_vjs41_1";
|
2804
|
-
const odd = "_odd_vjs41_7";
|
2805
|
-
const oddReverse = "_oddReverse_vjs41_14";
|
2806
|
-
const oddLabel = "_oddLabel_vjs41_18";
|
2807
|
-
const oddLogo = "_oddLogo_vjs41_30";
|
2808
|
-
const coef = "_coef_vjs41_36";
|
2809
|
-
const coefHead = "_coefHead_vjs41_42";
|
2810
|
-
const coefValue = "_coefValue_vjs41_47";
|
2811
|
-
const styles$1 = {
|
2812
|
-
root: root$1,
|
2813
|
-
odd,
|
2814
|
-
oddReverse,
|
2815
|
-
oddLabel,
|
2816
|
-
oddLogo,
|
2817
|
-
coef,
|
2818
|
-
coefHead,
|
2819
|
-
coefValue
|
2820
|
-
};
|
2821
|
-
const Matches = () => {
|
2822
|
-
var _a, _b, _c;
|
2823
|
-
const state = useCurrentState();
|
2824
|
-
const rules = useParseRules(state);
|
2825
|
-
const rootRules = omit(rules.root, ...backgroundOptions);
|
2826
|
-
return o("div", {
|
2827
|
-
className: styles$1.root,
|
2828
|
-
children: [o("div", {
|
2829
|
-
className: styles$1.odd,
|
2830
|
-
children: [o("div", {
|
2831
|
-
className: styles$1.oddLogo,
|
2832
|
-
style: rootRules
|
2833
|
-
}), o("div", {
|
2834
|
-
className: styles$1.oddLabel,
|
2835
|
-
style: rootRules,
|
2836
|
-
children: (_a = rules.root) == null ? void 0 : _a.valueOne
|
2837
|
-
})]
|
2838
|
-
}), o("div", {
|
2839
|
-
className: styles$1.coef,
|
2840
|
-
children: [o("div", {
|
2841
|
-
className: styles$1.coefHead,
|
2842
|
-
style: rules.coef,
|
2843
|
-
children: "X"
|
2844
|
-
}), o("div", {
|
2845
|
-
className: styles$1.coefValue,
|
2846
|
-
style: rootRules,
|
2847
|
-
children: (_b = rules.root) == null ? void 0 : _b.valueX
|
2848
|
-
})]
|
2849
|
-
}), o("div", {
|
2850
|
-
className: classNames(styles$1.odd, styles$1.oddReverse),
|
2851
|
-
children: [o("div", {
|
2852
|
-
className: styles$1.oddLogo,
|
2853
|
-
style: rootRules
|
2854
|
-
}), o("div", {
|
2855
|
-
className: styles$1.oddLabel,
|
2856
|
-
style: rootRules,
|
2857
|
-
children: (_c = rules.root) == null ? void 0 : _c.valueTwo
|
2858
|
-
})]
|
2859
|
-
})]
|
2860
|
-
});
|
2861
|
-
};
|
2862
|
-
const root = "_root_1va5h_1";
|
2863
|
-
const title = "_title_1va5h_8";
|
2864
|
-
const titleLabel = "_titleLabel_1va5h_12";
|
2865
|
-
const tablet = "_tablet_1va5h_16";
|
2866
|
-
const desktop = "_desktop_1va5h_19";
|
2867
|
-
const laptop = "_laptop_1va5h_19";
|
2868
|
-
const titleValue = "_titleValue_1va5h_23";
|
2869
|
-
const team = "_team_1va5h_34";
|
2870
|
-
const teamLogo = "_teamLogo_1va5h_44";
|
2871
|
-
const teamName = "_teamName_1va5h_72";
|
2872
|
-
const teamValue = "_teamValue_1va5h_84";
|
2873
|
-
const styles = {
|
2874
|
-
root,
|
2875
|
-
title,
|
2876
|
-
titleLabel,
|
2877
|
-
tablet,
|
2878
|
-
desktop,
|
2879
|
-
laptop,
|
2880
|
-
titleValue,
|
2881
|
-
team,
|
2882
|
-
teamLogo,
|
2883
|
-
teamName,
|
2884
|
-
teamValue
|
2885
|
-
};
|
2886
|
-
const MatchesOneTwo = () => {
|
2887
|
-
const state = useCurrentState();
|
2888
|
-
const rules = useParseRules(state);
|
2889
|
-
return o("div", {
|
2890
|
-
className: classNames(styles.root, {
|
2891
|
-
[styles.desktop]: (state == null ? void 0 : state.device) === "desktop",
|
2892
|
-
[styles.laptop]: (state == null ? void 0 : state.device) === "laptop",
|
2893
|
-
[styles.tablet]: (state == null ? void 0 : state.device) === "tablet"
|
2894
|
-
}),
|
2895
|
-
style: omit(rules.root, ...backgroundOptions),
|
2896
|
-
children: [o("div", {
|
2897
|
-
className: styles.title,
|
2898
|
-
children: [o("div", {
|
2899
|
-
className: styles.titleLabel,
|
2900
|
-
style: rules.titleLabel,
|
2901
|
-
children: rules.titleLabel.children
|
2902
|
-
}), o("div", {
|
2903
|
-
className: styles.titleValue,
|
2904
|
-
style: rules.titleValue,
|
2905
|
-
children: rules.titleValue.children
|
2906
|
-
})]
|
2907
|
-
}), o("div", {
|
2908
|
-
children: [o("div", {
|
2909
|
-
className: styles.team,
|
2910
|
-
children: [o("div", {
|
2911
|
-
className: styles.teamLogo,
|
2912
|
-
style: rules.logo
|
2913
|
-
}), o("div", {
|
2914
|
-
className: styles.teamName,
|
2915
|
-
style: rules.teamName,
|
2916
|
-
children: rules.team1Name.children
|
2917
|
-
}), o("div", {
|
2918
|
-
className: styles.teamValue,
|
2919
|
-
style: rules.value,
|
2920
|
-
children: rules.value1.children
|
2921
|
-
})]
|
2922
|
-
}), o("div", {
|
2923
|
-
className: styles.team,
|
2924
|
-
children: [o("div", {
|
2925
|
-
className: styles.teamLogo,
|
2926
|
-
style: rules.logo
|
2927
|
-
}), o("div", {
|
2928
|
-
className: styles.teamName,
|
2929
|
-
style: rules.teamName,
|
2930
|
-
children: rules.team2Name.children
|
2931
|
-
}), o("div", {
|
2932
|
-
className: styles.teamValue,
|
2933
|
-
style: rules.value,
|
2934
|
-
children: rules.value2.children
|
2935
|
-
})]
|
2936
|
-
})]
|
2937
|
-
})]
|
2938
|
-
});
|
2939
|
-
};
|
2940
|
-
const useAnimatedList = (slides = []) => {
|
2941
|
-
var _a;
|
2942
|
-
const itemsCount = slides.length;
|
2943
|
-
const [animatedIdx, setAnimatedIdx] = h(0);
|
2944
|
-
const animationDuration = (_a = slides[animatedIdx || 0]) == null ? void 0 : _a.animationDuration;
|
2945
|
-
p(() => {
|
2946
|
-
const goNext = () => {
|
2947
|
-
setAnimatedIdx((index2) => {
|
2948
|
-
if (index2 + 1 < itemsCount)
|
2949
|
-
return index2 + 1;
|
2950
|
-
return 0;
|
2951
|
-
});
|
2952
|
-
};
|
2953
|
-
const timeout = setTimeout(goNext, animationDuration);
|
2954
|
-
return () => clearTimeout(timeout);
|
2955
|
-
}, [setAnimatedIdx, itemsCount, animationDuration, animatedIdx]);
|
2956
|
-
return animatedIdx;
|
2957
|
-
};
|
2958
|
-
const DEFAULT_ANIMATION_SPEED = 3700;
|
2959
|
-
const WideCard = () => {
|
2960
|
-
var _a, _b, _c, _d, _e;
|
2961
|
-
const rootRef = _$1(null);
|
2962
|
-
const state = useCurrentState();
|
2963
|
-
const device = useContainerDevice({
|
2964
|
-
targetRef: rootRef
|
2965
|
-
});
|
2966
|
-
const deviceState = useGetRules(state, device);
|
2967
|
-
const rules = useParseRules(deviceState);
|
2968
|
-
const onClick = useMetrics(deviceState);
|
2969
|
-
const getChild = (name2) => ({
|
2970
|
-
text: o(Text, {}),
|
2971
|
-
matches: o(Matches, {}),
|
2972
|
-
matchesOneTwo: o(MatchesOneTwo, {})
|
2973
|
-
})[name2];
|
2974
|
-
const slidesList = (rules.children || []).filter(Boolean).map((slide2) => {
|
2975
|
-
var _a2, _b2;
|
2976
|
-
return {
|
2977
|
-
...slide2,
|
2978
|
-
animationName: (_a2 = slide2 == null ? void 0 : slide2.root) == null ? void 0 : _a2.animationName,
|
2979
|
-
animationDuration: ((_b2 = slide2 == null ? void 0 : slide2.root) == null ? void 0 : _b2.animationDuration) || DEFAULT_ANIMATION_SPEED
|
2980
|
-
};
|
2981
|
-
});
|
2982
|
-
const currentSlide = useAnimatedList(slidesList);
|
2983
|
-
const slideRules = useParseRules(slidesList[currentSlide] || {});
|
2984
|
-
const backgroundRules = ((_a = slideRules == null ? void 0 : slideRules.root) == null ? void 0 : _a.hasCustomBackground) ? pick((slideRules == null ? void 0 : slideRules.root) || {}, ...backgroundOptions) : pick(rules.background, ...backgroundOptions);
|
2985
|
-
return o("a", {
|
2986
|
-
ref: rootRef,
|
2987
|
-
href: (_b = rules.root) == null ? void 0 : _b.offer,
|
2988
|
-
target: "_blank",
|
2989
|
-
rel: "nofollow noopener noreferrer",
|
2990
|
-
className: classNames(styles$3.root, {
|
2991
|
-
[styles$3.desktop]: device === "desktop",
|
2992
|
-
[styles$3.laptop]: device === "laptop",
|
2993
|
-
[styles$3.tablet]: device === "tablet",
|
2994
|
-
[styles$3.variant2]: ((_c = rules.root) == null ? void 0 : _c.variant) === "variant2"
|
2995
|
-
}),
|
2996
|
-
style: rules.root,
|
2997
|
-
onClick,
|
2998
|
-
children: [o("div", {
|
2999
|
-
className: styles$3.background,
|
3000
|
-
style: backgroundRules
|
3001
|
-
}), o("div", {
|
3002
|
-
className: styles$3.promotion,
|
3003
|
-
style: rules.promotion,
|
3004
|
-
children: (_d = rules.promotion) == null ? void 0 : _d.children
|
3005
|
-
}), o("div", {
|
3006
|
-
className: styles$3.content,
|
3007
|
-
children: [o("div", {
|
3008
|
-
className: styles$3.left,
|
3009
|
-
children: o("div", {
|
3010
|
-
className: styles$3.logo,
|
3011
|
-
style: rules.logo
|
3012
|
-
})
|
3013
|
-
}), o("div", {
|
3014
|
-
className: styles$3.center,
|
3015
|
-
children: (rules.children || []).map((child, index2) => {
|
3016
|
-
var _a2, _b2;
|
3017
|
-
return o("div", {
|
3018
|
-
className: styles$3.slide,
|
3019
|
-
style: {
|
3020
|
-
animationName: currentSlide === index2 ? styles$3[((_a2 = child.root) == null ? void 0 : _a2.animationName) || "fade-in-out"] : "none",
|
3021
|
-
animationDuration: `${(_b2 = child.root) == null ? void 0 : _b2.animationDuration}ms`
|
3022
|
-
},
|
3023
|
-
children: o(StateContext, {
|
3024
|
-
value: {
|
3025
|
-
...child,
|
3026
|
-
device
|
3027
|
-
},
|
3028
|
-
children: getChild(child.name)
|
3029
|
-
})
|
3030
|
-
});
|
3031
|
-
})
|
3032
|
-
}), o("div", {
|
3033
|
-
className: styles$3.right,
|
3034
|
-
children: [o("div", {
|
3035
|
-
className: styles$3.logo,
|
3036
|
-
style: rules.logo
|
3037
|
-
}), o("div", {
|
3038
|
-
className: styles$3.buttonWrapper,
|
3039
|
-
children: o("div", {
|
3040
|
-
className: styles$3.button,
|
3041
|
-
style: rules.button,
|
3042
|
-
children: [o("div", {
|
3043
|
-
className: styles$3.logo,
|
3044
|
-
style: rules.logo
|
3045
|
-
}), (_e = rules.button) == null ? void 0 : _e.children]
|
3046
|
-
})
|
3047
|
-
})]
|
3048
|
-
})]
|
3049
|
-
})]
|
3050
|
-
});
|
3051
|
-
};
|
3052
|
-
const index = render(o(WideCard, {}));
|
3053
|
-
const modifyState = (state, layer, rule, value, devices$1 = devices) => {
|
3054
|
-
const newState = {
|
3055
|
-
...state
|
3056
|
-
};
|
3057
|
-
devices$1.forEach((device) => {
|
3058
|
-
newState[layer] = {
|
3059
|
-
...newState[layer],
|
3060
|
-
[device]: {
|
3061
|
-
...newState[layer][device],
|
3062
|
-
[rule]: typeof value === "function" ? value(get(newState, `${layer}.${device}.${rule}`)) : value
|
3063
|
-
}
|
3064
|
-
};
|
3065
|
-
});
|
3066
|
-
return newState;
|
3067
|
-
};
|
3068
|
-
var resizeObservers = [];
|
3069
|
-
var hasActiveObservations = function() {
|
3070
|
-
return resizeObservers.some(function(ro) {
|
3071
|
-
return ro.activeTargets.length > 0;
|
3072
|
-
});
|
3073
|
-
};
|
3074
|
-
var hasSkippedObservations = function() {
|
3075
|
-
return resizeObservers.some(function(ro) {
|
3076
|
-
return ro.skippedTargets.length > 0;
|
3077
|
-
});
|
3078
|
-
};
|
3079
|
-
var msg = "ResizeObserver loop completed with undelivered notifications.";
|
3080
|
-
var deliverResizeLoopError = function() {
|
3081
|
-
var event;
|
3082
|
-
if (typeof ErrorEvent === "function") {
|
3083
|
-
event = new ErrorEvent("error", {
|
3084
|
-
message: msg
|
3085
|
-
});
|
3086
|
-
} else {
|
3087
|
-
event = document.createEvent("Event");
|
3088
|
-
event.initEvent("error", false, false);
|
3089
|
-
event.message = msg;
|
3090
|
-
}
|
3091
|
-
window.dispatchEvent(event);
|
3092
|
-
};
|
3093
|
-
var ResizeObserverBoxOptions;
|
3094
|
-
(function(ResizeObserverBoxOptions2) {
|
3095
|
-
ResizeObserverBoxOptions2["BORDER_BOX"] = "border-box";
|
3096
|
-
ResizeObserverBoxOptions2["CONTENT_BOX"] = "content-box";
|
3097
|
-
ResizeObserverBoxOptions2["DEVICE_PIXEL_CONTENT_BOX"] = "device-pixel-content-box";
|
3098
|
-
})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));
|
3099
|
-
var freeze = function(obj) {
|
3100
|
-
return Object.freeze(obj);
|
3101
|
-
};
|
3102
|
-
var ResizeObserverSize = function() {
|
3103
|
-
function ResizeObserverSize2(inlineSize, blockSize) {
|
3104
|
-
this.inlineSize = inlineSize;
|
3105
|
-
this.blockSize = blockSize;
|
3106
|
-
freeze(this);
|
3107
|
-
}
|
3108
|
-
return ResizeObserverSize2;
|
3109
|
-
}();
|
3110
|
-
var DOMRectReadOnly = function() {
|
3111
|
-
function DOMRectReadOnly2(x, y2, width, height) {
|
3112
|
-
this.x = x;
|
3113
|
-
this.y = y2;
|
3114
|
-
this.width = width;
|
3115
|
-
this.height = height;
|
3116
|
-
this.top = this.y;
|
3117
|
-
this.left = this.x;
|
3118
|
-
this.bottom = this.top + this.height;
|
3119
|
-
this.right = this.left + this.width;
|
3120
|
-
return freeze(this);
|
3121
|
-
}
|
3122
|
-
DOMRectReadOnly2.prototype.toJSON = function() {
|
3123
|
-
var _a = this, x = _a.x, y2 = _a.y, top = _a.top, right2 = _a.right, bottom = _a.bottom, left2 = _a.left, width = _a.width, height = _a.height;
|
3124
|
-
return { x, y: y2, top, right: right2, bottom, left: left2, width, height };
|
3125
|
-
};
|
3126
|
-
DOMRectReadOnly2.fromRect = function(rectangle) {
|
3127
|
-
return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);
|
3128
|
-
};
|
3129
|
-
return DOMRectReadOnly2;
|
3130
|
-
}();
|
3131
|
-
var isSVG = function(target) {
|
3132
|
-
return target instanceof SVGElement && "getBBox" in target;
|
3133
|
-
};
|
3134
|
-
var isHidden = function(target) {
|
3135
|
-
if (isSVG(target)) {
|
3136
|
-
var _a = target.getBBox(), width = _a.width, height = _a.height;
|
3137
|
-
return !width && !height;
|
3138
|
-
}
|
3139
|
-
var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;
|
3140
|
-
return !(offsetWidth || offsetHeight || target.getClientRects().length);
|
3141
|
-
};
|
3142
|
-
var isElement = function(obj) {
|
3143
|
-
var _a;
|
3144
|
-
if (obj instanceof Element) {
|
3145
|
-
return true;
|
3146
|
-
}
|
3147
|
-
var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
|
3148
|
-
return !!(scope && obj instanceof scope.Element);
|
3149
|
-
};
|
3150
|
-
var isReplacedElement = function(target) {
|
3151
|
-
switch (target.tagName) {
|
3152
|
-
case "INPUT":
|
3153
|
-
if (target.type !== "image") {
|
3154
|
-
break;
|
3155
|
-
}
|
3156
|
-
case "VIDEO":
|
3157
|
-
case "AUDIO":
|
3158
|
-
case "EMBED":
|
3159
|
-
case "OBJECT":
|
3160
|
-
case "CANVAS":
|
3161
|
-
case "IFRAME":
|
3162
|
-
case "IMG":
|
3163
|
-
return true;
|
3164
|
-
}
|
3165
|
-
return false;
|
3166
|
-
};
|
3167
|
-
var global$1 = typeof window !== "undefined" ? window : {};
|
3168
|
-
var cache = /* @__PURE__ */ new WeakMap();
|
3169
|
-
var scrollRegexp = /auto|scroll/;
|
3170
|
-
var verticalRegexp = /^tb|vertical/;
|
3171
|
-
var IE = /msie|trident/i.test(global$1.navigator && global$1.navigator.userAgent);
|
3172
|
-
var parseDimension = function(pixel) {
|
3173
|
-
return parseFloat(pixel || "0");
|
3174
|
-
};
|
3175
|
-
var size = function(inlineSize, blockSize, switchSizes) {
|
3176
|
-
if (inlineSize === void 0) {
|
3177
|
-
inlineSize = 0;
|
3178
|
-
}
|
3179
|
-
if (blockSize === void 0) {
|
3180
|
-
blockSize = 0;
|
3181
|
-
}
|
3182
|
-
if (switchSizes === void 0) {
|
3183
|
-
switchSizes = false;
|
3184
|
-
}
|
3185
|
-
return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);
|
3186
|
-
};
|
3187
|
-
var zeroBoxes = freeze({
|
3188
|
-
devicePixelContentBoxSize: size(),
|
3189
|
-
borderBoxSize: size(),
|
3190
|
-
contentBoxSize: size(),
|
3191
|
-
contentRect: new DOMRectReadOnly(0, 0, 0, 0)
|
3192
|
-
});
|
3193
|
-
var calculateBoxSizes = function(target, forceRecalculation) {
|
3194
|
-
if (forceRecalculation === void 0) {
|
3195
|
-
forceRecalculation = false;
|
3196
|
-
}
|
3197
|
-
if (cache.has(target) && !forceRecalculation) {
|
3198
|
-
return cache.get(target);
|
3199
|
-
}
|
3200
|
-
if (isHidden(target)) {
|
3201
|
-
cache.set(target, zeroBoxes);
|
3202
|
-
return zeroBoxes;
|
3203
|
-
}
|
3204
|
-
var cs = getComputedStyle(target);
|
3205
|
-
var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();
|
3206
|
-
var removePadding = !IE && cs.boxSizing === "border-box";
|
3207
|
-
var switchSizes = verticalRegexp.test(cs.writingMode || "");
|
3208
|
-
var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || "");
|
3209
|
-
var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || "");
|
3210
|
-
var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);
|
3211
|
-
var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);
|
3212
|
-
var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);
|
3213
|
-
var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);
|
3214
|
-
var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);
|
3215
|
-
var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);
|
3216
|
-
var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);
|
3217
|
-
var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);
|
3218
|
-
var horizontalPadding = paddingLeft + paddingRight;
|
3219
|
-
var verticalPadding = paddingTop + paddingBottom;
|
3220
|
-
var horizontalBorderArea = borderLeft + borderRight;
|
3221
|
-
var verticalBorderArea = borderTop + borderBottom;
|
3222
|
-
var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;
|
3223
|
-
var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;
|
3224
|
-
var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;
|
3225
|
-
var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;
|
3226
|
-
var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;
|
3227
|
-
var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;
|
3228
|
-
var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;
|
3229
|
-
var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;
|
3230
|
-
var boxes = freeze({
|
3231
|
-
devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),
|
3232
|
-
borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),
|
3233
|
-
contentBoxSize: size(contentWidth, contentHeight, switchSizes),
|
3234
|
-
contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)
|
3235
|
-
});
|
3236
|
-
cache.set(target, boxes);
|
3237
|
-
return boxes;
|
3238
|
-
};
|
3239
|
-
var calculateBoxSize = function(target, observedBox, forceRecalculation) {
|
3240
|
-
var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;
|
3241
|
-
switch (observedBox) {
|
3242
|
-
case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:
|
3243
|
-
return devicePixelContentBoxSize;
|
3244
|
-
case ResizeObserverBoxOptions.BORDER_BOX:
|
3245
|
-
return borderBoxSize;
|
3246
|
-
default:
|
3247
|
-
return contentBoxSize;
|
3248
|
-
}
|
3249
|
-
};
|
3250
|
-
var ResizeObserverEntry = function() {
|
3251
|
-
function ResizeObserverEntry2(target) {
|
3252
|
-
var boxes = calculateBoxSizes(target);
|
3253
|
-
this.target = target;
|
3254
|
-
this.contentRect = boxes.contentRect;
|
3255
|
-
this.borderBoxSize = freeze([boxes.borderBoxSize]);
|
3256
|
-
this.contentBoxSize = freeze([boxes.contentBoxSize]);
|
3257
|
-
this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);
|
3258
|
-
}
|
3259
|
-
return ResizeObserverEntry2;
|
3260
|
-
}();
|
3261
|
-
var calculateDepthForNode = function(node) {
|
3262
|
-
if (isHidden(node)) {
|
3263
|
-
return Infinity;
|
3264
|
-
}
|
3265
|
-
var depth = 0;
|
3266
|
-
var parent = node.parentNode;
|
3267
|
-
while (parent) {
|
3268
|
-
depth += 1;
|
3269
|
-
parent = parent.parentNode;
|
3270
|
-
}
|
3271
|
-
return depth;
|
3272
|
-
};
|
3273
|
-
var broadcastActiveObservations = function() {
|
3274
|
-
var shallowestDepth = Infinity;
|
3275
|
-
var callbacks2 = [];
|
3276
|
-
resizeObservers.forEach(function processObserver(ro) {
|
3277
|
-
if (ro.activeTargets.length === 0) {
|
3278
|
-
return;
|
3279
|
-
}
|
3280
|
-
var entries = [];
|
3281
|
-
ro.activeTargets.forEach(function processTarget(ot) {
|
3282
|
-
var entry = new ResizeObserverEntry(ot.target);
|
3283
|
-
var targetDepth = calculateDepthForNode(ot.target);
|
3284
|
-
entries.push(entry);
|
3285
|
-
ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);
|
3286
|
-
if (targetDepth < shallowestDepth) {
|
3287
|
-
shallowestDepth = targetDepth;
|
3288
|
-
}
|
3289
|
-
});
|
3290
|
-
callbacks2.push(function resizeObserverCallback() {
|
3291
|
-
ro.callback.call(ro.observer, entries, ro.observer);
|
3292
|
-
});
|
3293
|
-
ro.activeTargets.splice(0, ro.activeTargets.length);
|
3294
|
-
});
|
3295
|
-
for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {
|
3296
|
-
var callback = callbacks_1[_i];
|
3297
|
-
callback();
|
3298
|
-
}
|
3299
|
-
return shallowestDepth;
|
3300
|
-
};
|
3301
|
-
var gatherActiveObservationsAtDepth = function(depth) {
|
3302
|
-
resizeObservers.forEach(function processObserver(ro) {
|
3303
|
-
ro.activeTargets.splice(0, ro.activeTargets.length);
|
3304
|
-
ro.skippedTargets.splice(0, ro.skippedTargets.length);
|
3305
|
-
ro.observationTargets.forEach(function processTarget(ot) {
|
3306
|
-
if (ot.isActive()) {
|
3307
|
-
if (calculateDepthForNode(ot.target) > depth) {
|
3308
|
-
ro.activeTargets.push(ot);
|
3309
|
-
} else {
|
3310
|
-
ro.skippedTargets.push(ot);
|
3311
|
-
}
|
3312
|
-
}
|
3313
|
-
});
|
3314
|
-
});
|
3315
|
-
};
|
3316
|
-
var process = function() {
|
3317
|
-
var depth = 0;
|
3318
|
-
gatherActiveObservationsAtDepth(depth);
|
3319
|
-
while (hasActiveObservations()) {
|
3320
|
-
depth = broadcastActiveObservations();
|
3321
|
-
gatherActiveObservationsAtDepth(depth);
|
3322
|
-
}
|
3323
|
-
if (hasSkippedObservations()) {
|
3324
|
-
deliverResizeLoopError();
|
3325
|
-
}
|
3326
|
-
return depth > 0;
|
3327
|
-
};
|
3328
|
-
var trigger;
|
3329
|
-
var callbacks = [];
|
3330
|
-
var notify = function() {
|
3331
|
-
return callbacks.splice(0).forEach(function(cb) {
|
3332
|
-
return cb();
|
3333
|
-
});
|
3334
|
-
};
|
3335
|
-
var queueMicroTask = function(callback) {
|
3336
|
-
if (!trigger) {
|
3337
|
-
var toggle_1 = 0;
|
3338
|
-
var el_1 = document.createTextNode("");
|
3339
|
-
var config = { characterData: true };
|
3340
|
-
new MutationObserver(function() {
|
3341
|
-
return notify();
|
3342
|
-
}).observe(el_1, config);
|
3343
|
-
trigger = function() {
|
3344
|
-
el_1.textContent = "".concat(toggle_1 ? toggle_1-- : toggle_1++);
|
3345
|
-
};
|
3346
|
-
}
|
3347
|
-
callbacks.push(callback);
|
3348
|
-
trigger();
|
3349
|
-
};
|
3350
|
-
var queueResizeObserver = function(cb) {
|
3351
|
-
queueMicroTask(function ResizeObserver2() {
|
3352
|
-
requestAnimationFrame(cb);
|
3353
|
-
});
|
3354
|
-
};
|
3355
|
-
var watching = 0;
|
3356
|
-
var isWatching = function() {
|
3357
|
-
return !!watching;
|
3358
|
-
};
|
3359
|
-
var CATCH_PERIOD = 250;
|
3360
|
-
var observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };
|
3361
|
-
var events = [
|
3362
|
-
"resize",
|
3363
|
-
"load",
|
3364
|
-
"transitionend",
|
3365
|
-
"animationend",
|
3366
|
-
"animationstart",
|
3367
|
-
"animationiteration",
|
3368
|
-
"keyup",
|
3369
|
-
"keydown",
|
3370
|
-
"mouseup",
|
3371
|
-
"mousedown",
|
3372
|
-
"mouseover",
|
3373
|
-
"mouseout",
|
3374
|
-
"blur",
|
3375
|
-
"focus"
|
3376
|
-
];
|
3377
|
-
var time = function(timeout) {
|
3378
|
-
if (timeout === void 0) {
|
3379
|
-
timeout = 0;
|
3380
|
-
}
|
3381
|
-
return Date.now() + timeout;
|
3382
|
-
};
|
3383
|
-
var scheduled = false;
|
3384
|
-
var Scheduler = function() {
|
3385
|
-
function Scheduler2() {
|
3386
|
-
var _this = this;
|
3387
|
-
this.stopped = true;
|
3388
|
-
this.listener = function() {
|
3389
|
-
return _this.schedule();
|
3390
|
-
};
|
3391
|
-
}
|
3392
|
-
Scheduler2.prototype.run = function(timeout) {
|
3393
|
-
var _this = this;
|
3394
|
-
if (timeout === void 0) {
|
3395
|
-
timeout = CATCH_PERIOD;
|
3396
|
-
}
|
3397
|
-
if (scheduled) {
|
3398
|
-
return;
|
3399
|
-
}
|
3400
|
-
scheduled = true;
|
3401
|
-
var until = time(timeout);
|
3402
|
-
queueResizeObserver(function() {
|
3403
|
-
var elementsHaveResized = false;
|
3404
|
-
try {
|
3405
|
-
elementsHaveResized = process();
|
3406
|
-
} finally {
|
3407
|
-
scheduled = false;
|
3408
|
-
timeout = until - time();
|
3409
|
-
if (!isWatching()) {
|
3410
|
-
return;
|
3411
|
-
}
|
3412
|
-
if (elementsHaveResized) {
|
3413
|
-
_this.run(1e3);
|
3414
|
-
} else if (timeout > 0) {
|
3415
|
-
_this.run(timeout);
|
3416
|
-
} else {
|
3417
|
-
_this.start();
|
3418
|
-
}
|
3419
|
-
}
|
3420
|
-
});
|
3421
|
-
};
|
3422
|
-
Scheduler2.prototype.schedule = function() {
|
3423
|
-
this.stop();
|
3424
|
-
this.run();
|
3425
|
-
};
|
3426
|
-
Scheduler2.prototype.observe = function() {
|
3427
|
-
var _this = this;
|
3428
|
-
var cb = function() {
|
3429
|
-
return _this.observer && _this.observer.observe(document.body, observerConfig);
|
3430
|
-
};
|
3431
|
-
document.body ? cb() : global$1.addEventListener("DOMContentLoaded", cb);
|
3432
|
-
};
|
3433
|
-
Scheduler2.prototype.start = function() {
|
3434
|
-
var _this = this;
|
3435
|
-
if (this.stopped) {
|
3436
|
-
this.stopped = false;
|
3437
|
-
this.observer = new MutationObserver(this.listener);
|
3438
|
-
this.observe();
|
3439
|
-
events.forEach(function(name2) {
|
3440
|
-
return global$1.addEventListener(name2, _this.listener, true);
|
3441
|
-
});
|
3442
|
-
}
|
3443
|
-
};
|
3444
|
-
Scheduler2.prototype.stop = function() {
|
3445
|
-
var _this = this;
|
3446
|
-
if (!this.stopped) {
|
3447
|
-
this.observer && this.observer.disconnect();
|
3448
|
-
events.forEach(function(name2) {
|
3449
|
-
return global$1.removeEventListener(name2, _this.listener, true);
|
3450
|
-
});
|
3451
|
-
this.stopped = true;
|
3452
|
-
}
|
3453
|
-
};
|
3454
|
-
return Scheduler2;
|
3455
|
-
}();
|
3456
|
-
var scheduler = new Scheduler();
|
3457
|
-
var updateCount = function(n) {
|
3458
|
-
!watching && n > 0 && scheduler.start();
|
3459
|
-
watching += n;
|
3460
|
-
!watching && scheduler.stop();
|
3461
|
-
};
|
3462
|
-
var skipNotifyOnElement = function(target) {
|
3463
|
-
return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === "inline";
|
3464
|
-
};
|
3465
|
-
var ResizeObservation = function() {
|
3466
|
-
function ResizeObservation2(target, observedBox) {
|
3467
|
-
this.target = target;
|
3468
|
-
this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;
|
3469
|
-
this.lastReportedSize = {
|
3470
|
-
inlineSize: 0,
|
3471
|
-
blockSize: 0
|
3472
|
-
};
|
3473
|
-
}
|
3474
|
-
ResizeObservation2.prototype.isActive = function() {
|
3475
|
-
var size2 = calculateBoxSize(this.target, this.observedBox, true);
|
3476
|
-
if (skipNotifyOnElement(this.target)) {
|
3477
|
-
this.lastReportedSize = size2;
|
3478
|
-
}
|
3479
|
-
if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {
|
3480
|
-
return true;
|
3481
|
-
}
|
3482
|
-
return false;
|
3483
|
-
};
|
3484
|
-
return ResizeObservation2;
|
3485
|
-
}();
|
3486
|
-
var ResizeObserverDetail = function() {
|
3487
|
-
function ResizeObserverDetail2(resizeObserver2, callback) {
|
3488
|
-
this.activeTargets = [];
|
3489
|
-
this.skippedTargets = [];
|
3490
|
-
this.observationTargets = [];
|
3491
|
-
this.observer = resizeObserver2;
|
3492
|
-
this.callback = callback;
|
3493
|
-
}
|
3494
|
-
return ResizeObserverDetail2;
|
3495
|
-
}();
|
3496
|
-
var observerMap = /* @__PURE__ */ new WeakMap();
|
3497
|
-
var getObservationIndex = function(observationTargets, target) {
|
3498
|
-
for (var i2 = 0; i2 < observationTargets.length; i2 += 1) {
|
3499
|
-
if (observationTargets[i2].target === target) {
|
3500
|
-
return i2;
|
3501
|
-
}
|
3502
|
-
}
|
3503
|
-
return -1;
|
3504
|
-
};
|
3505
|
-
var ResizeObserverController = function() {
|
3506
|
-
function ResizeObserverController2() {
|
3507
|
-
}
|
3508
|
-
ResizeObserverController2.connect = function(resizeObserver2, callback) {
|
3509
|
-
var detail = new ResizeObserverDetail(resizeObserver2, callback);
|
3510
|
-
observerMap.set(resizeObserver2, detail);
|
3511
|
-
};
|
3512
|
-
ResizeObserverController2.observe = function(resizeObserver2, target, options) {
|
3513
|
-
var detail = observerMap.get(resizeObserver2);
|
3514
|
-
var firstObservation = detail.observationTargets.length === 0;
|
3515
|
-
if (getObservationIndex(detail.observationTargets, target) < 0) {
|
3516
|
-
firstObservation && resizeObservers.push(detail);
|
3517
|
-
detail.observationTargets.push(new ResizeObservation(target, options && options.box));
|
3518
|
-
updateCount(1);
|
3519
|
-
scheduler.schedule();
|
3520
|
-
}
|
3521
|
-
};
|
3522
|
-
ResizeObserverController2.unobserve = function(resizeObserver2, target) {
|
3523
|
-
var detail = observerMap.get(resizeObserver2);
|
3524
|
-
var index2 = getObservationIndex(detail.observationTargets, target);
|
3525
|
-
var lastObservation = detail.observationTargets.length === 1;
|
3526
|
-
if (index2 >= 0) {
|
3527
|
-
lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);
|
3528
|
-
detail.observationTargets.splice(index2, 1);
|
3529
|
-
updateCount(-1);
|
3530
|
-
}
|
3531
|
-
};
|
3532
|
-
ResizeObserverController2.disconnect = function(resizeObserver2) {
|
3533
|
-
var _this = this;
|
3534
|
-
var detail = observerMap.get(resizeObserver2);
|
3535
|
-
detail.observationTargets.slice().forEach(function(ot) {
|
3536
|
-
return _this.unobserve(resizeObserver2, ot.target);
|
3537
|
-
});
|
3538
|
-
detail.activeTargets.splice(0, detail.activeTargets.length);
|
3539
|
-
};
|
3540
|
-
return ResizeObserverController2;
|
3541
|
-
}();
|
3542
|
-
var ResizeObserver$1 = function() {
|
3543
|
-
function ResizeObserver2(callback) {
|
3544
|
-
if (arguments.length === 0) {
|
3545
|
-
throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");
|
3546
|
-
}
|
3547
|
-
if (typeof callback !== "function") {
|
3548
|
-
throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");
|
3549
|
-
}
|
3550
|
-
ResizeObserverController.connect(this, callback);
|
3551
|
-
}
|
3552
|
-
ResizeObserver2.prototype.observe = function(target, options) {
|
3553
|
-
if (arguments.length === 0) {
|
3554
|
-
throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");
|
3555
|
-
}
|
3556
|
-
if (!isElement(target)) {
|
3557
|
-
throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");
|
3558
|
-
}
|
3559
|
-
ResizeObserverController.observe(this, target, options);
|
3560
|
-
};
|
3561
|
-
ResizeObserver2.prototype.unobserve = function(target) {
|
3562
|
-
if (arguments.length === 0) {
|
3563
|
-
throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");
|
3564
|
-
}
|
3565
|
-
if (!isElement(target)) {
|
3566
|
-
throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");
|
3567
|
-
}
|
3568
|
-
ResizeObserverController.unobserve(this, target);
|
3569
|
-
};
|
3570
|
-
ResizeObserver2.prototype.disconnect = function() {
|
3571
|
-
ResizeObserverController.disconnect(this);
|
3572
|
-
};
|
3573
|
-
ResizeObserver2.toString = function() {
|
3574
|
-
return "function ResizeObserver () { [polyfill code] }";
|
3575
|
-
};
|
3576
|
-
return ResizeObserver2;
|
3577
|
-
}();
|
3578
|
-
const resizeObserver = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
3579
|
-
__proto__: null,
|
3580
|
-
ResizeObserver: ResizeObserver$1,
|
3581
|
-
ResizeObserverEntry,
|
3582
|
-
ResizeObserverSize
|
3583
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
3584
|
-
exports2.BonusCard = index$1;
|
3585
|
-
exports2.ComplexGift = index$5;
|
3586
|
-
exports2.ComplexPopup = index$3;
|
3587
|
-
exports2.ExpressPopup = index$2;
|
3588
|
-
exports2.SimpleGift = index$6;
|
3589
|
-
exports2.SimplePopup = index$4;
|
3590
|
-
exports2.WideCard = index;
|
3591
|
-
exports2.isValidTemplate = isValidTemplate;
|
3592
|
-
exports2.modifyState = modifyState;
|
3593
|
-
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
3594
|
-
});
|
3595
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGVzLnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcHJlYWN0L2hvb2tzL2Rpc3QvaG9va3MubW9kdWxlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9jb21wYXQvZGlzdC9jb21wYXQubW9kdWxlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzb2NJbmRleE9mLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlRGVsZXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlR2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlSGFzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlU2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fTGlzdENhY2hlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tDbGVhci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrRGVsZXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tHZXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0hhcy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3ltYm9sLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0UmF3VGFnLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNGdW5jdGlvbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvcmVKc0RhdGEuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3RvU291cmNlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzTmF0aXZlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0VmFsdWUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXROYXRpdmUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXAuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVDcmVhdGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoQ2xlYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoRGVsZXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaEdldC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hIYXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoU2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlQ2xlYXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRNYXBEYXRhLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19NYXBDYWNoZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrU2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19kZWZpbmVQcm9wZXJ0eS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ25WYWx1ZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQnVmZmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fVWludDhBcnJheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVR5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlckFyZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lT2JqZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNBcmd1bWVudHMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJyYXlMaWtlT2JqZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzVHlwZWRBcnJheS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VVbmFyeS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1R5cGVkQXJyYXkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zYWZlR2V0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXNzaWduVmFsdWUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5TGlrZUtleXMuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19uYXRpdmVLZXlzSW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5c0luLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9rZXlzSW4uanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvUGxhaW5PYmplY3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWVyZ2VEZWVwLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pZGVudGl0eS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL2NvbnN0YW50LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVNldFRvU3RyaW5nLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2hvcnRPdXQuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb1N0cmluZy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZXN0LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJdGVyYXRlZUNhbGwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVBc3NpZ25lci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCIuLi8uLi91dGlscy9kb20udHMiLCIuLi8uLi91dGlscy9pdGVyYXRvci50cyIsIi4uLy4uL3V0aWxzL2luZGV4LnRzIiwiLi4vc3JjL2hvb2tzL3VzZUdpZnRPcGVuLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3ByZWFjdC9qc3gtcnVudGltZS9kaXN0L2pzeFJ1bnRpbWUubW9kdWxlLmpzIiwiLi4vc3JjL1N0YXRlQ29udGV4dC50c3giLCIuLi9zcmMvaGVscGVycy9yZW5kZXIudHN4IiwiLi4vc3JjL2hvb2tzL3VzZUN1cnJlbnRTdGF0ZS50cyIsIi4uL3NyYy9oZWxwZXJzL2dldERldmljZVN0YXRlLnRzIiwiLi4vc3JjL2hvb2tzL3VzZURldmljZVN0YXRlLnRzIiwiLi4vc3JjL2hvb2tzL3VzZUNvbnRhaW5lckRldmljZS50cyIsIi4uL3NyYy9oZWxwZXJzL3BhcnNlUnVsZXMudHMiLCIuLi9zcmMvaG9va3MvdXNlUGFyc2VSdWxlcy50cyIsIi4uL3NyYy9jb21wb25lbnRzL0Rpc3BsYXlUZXh0LnRzeCIsIi4uL3NyYy9ob29rcy91c2VUb2dnbGUudHMiLCIuLi9zcmMvY29tcG9uZW50cy9DbG9zZUljb24udHN4IiwiLi4vc3JjL2NvbXBvbmVudHMvR2lmdEljb24udHN4IiwiLi4vc3JjL2hvb2tzL3Byb21vcy91c2VHaWZ0UnVsZXMudHMiLCIuLi9zcmMvaGVscGVycy9jb25zdGFudHMudHMiLCIuLi9zcmMvaG9va3MvdXNlTWV0cmljcy50cyIsIi4uL3NyYy9ob29rcy91c2VFeHRyYWN0Rm9udHMudHMiLCIuLi9zcmMvaG9va3MvdXNlTGlmZWN5Y2xlLnRzIiwiLi4vc3JjL3Byb21vcy9TaW1wbGVHaWZ0L2luZGV4LnRzeCIsIi4uL3NyYy9wcm9tb3MvQ29tcGxleEdpZnQvY29tcG9uZW50cy9Cb251c0NhcmQvaW5kZXgudHN4IiwiLi4vc3JjL3Byb21vcy9Db21wbGV4R2lmdC9pbmRleC50c3giLCIuLi9zcmMvaGVscGVycy9zd2l0Y2hUZXh0QWxpZ25Ub0ZsZXgudHMiLCIuLi9zcmMvcHJvbW9zL1NpbXBsZVBvcHVwL2NvbXBvbmVudHMvbGluZS9pbmRleC50c3giLCIuLi9zcmMvaG9va3MvcHJvbW9zL3VzZVBvcHVwLnRzIiwiLi4vc3JjL3Byb21vcy9TaW1wbGVQb3B1cC9pbmRleC50c3giLCIuLi9zcmMvcHJvbW9zL0NvbXBsZXhQb3B1cC9jb21wb25lbnRzL0JvbnVzL2luZGV4LnRzeCIsIi4uL3NyYy9wcm9tb3MvQ29tcGxleFBvcHVwL2luZGV4LnRzeCIsIi4uL3NyYy9wcm9tb3MvRXhwcmVzc1BvcHVwL2NvbXBvbmVudHMvTWF0Y2gvaW5kZXgudHN4IiwiLi4vc3JjL3Byb21vcy9FeHByZXNzUG9wdXAvaW5kZXgudHN4IiwiLi4vc3JjL3Byb21vcy9Cb251c0NhcmQvY29tcG9uZW50cy9Cb251cy9pbmRleC50c3giLCIuLi9zcmMvcHJvbW9zL0JvbnVzQ2FyZC9pbmRleC50c3giLCIuLi9zcmMvcHJvbW9zL1dpZGVDYXJkL2NvbXBvbmVudHMvVGV4dC9pbmRleC50c3giLCIuLi9zcmMvcHJvbW9zL1dpZGVDYXJkL2NvbXBvbmVudHMvTWF0Y2hlcy9pbmRleC50c3giLCIuLi9zcmMvcHJvbW9zL1dpZGVDYXJkL2NvbXBvbmVudHMvTWF0Y2hlc09uZVR3by9pbmRleC50c3giLCIuLi9zcmMvaG9va3MvdXNlQW5pbWF0ZWRMaXN0LnRzIiwiLi4vc3JjL3Byb21vcy9XaWRlQ2FyZC9pbmRleC50c3giLCIuLi9zcmMvaGVscGVycy9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvcmVzaXplT2JzZXJ2ZXJzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9hbGdvcml0aG1zL2hhc0FjdGl2ZU9ic2VydmF0aW9ucy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvYWxnb3JpdGhtcy9oYXNTa2lwcGVkT2JzZXJ2YXRpb25zLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9hbGdvcml0aG1zL2RlbGl2ZXJSZXNpemVMb29wRXJyb3IuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvbGliL1Jlc2l6ZU9ic2VydmVyQm94T3B0aW9ucy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvZnJlZXplLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9SZXNpemVPYnNlcnZlclNpemUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvbGliL0RPTVJlY3RSZWFkT25seS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvZWxlbWVudC5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvZ2xvYmFsLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9hbGdvcml0aG1zL2NhbGN1bGF0ZUJveFNpemUuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvbGliL1Jlc2l6ZU9ic2VydmVyRW50cnkuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvbGliL2FsZ29yaXRobXMvY2FsY3VsYXRlRGVwdGhGb3JOb2RlLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9hbGdvcml0aG1zL2Jyb2FkY2FzdEFjdGl2ZU9ic2VydmF0aW9ucy5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvYWxnb3JpdGhtcy9nYXRoZXJBY3RpdmVPYnNlcnZhdGlvbnNBdERlcHRoLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi91dGlscy9wcm9jZXNzLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi91dGlscy9xdWV1ZU1pY3JvVGFzay5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvcXVldWVSZXNpemVPYnNlcnZlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvdXRpbHMvc2NoZWR1bGVyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BqdWdnbGUvcmVzaXplLW9ic2VydmVyL2xpYi9SZXNpemVPYnNlcnZhdGlvbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvUmVzaXplT2JzZXJ2ZXJEZXRhaWwuanMiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvQGp1Z2dsZS9yZXNpemUtb2JzZXJ2ZXIvbGliL1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9AanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlci9saWIvUmVzaXplT2JzZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG5cdENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuXHRMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuXHRodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXHR2YXIgbmF0aXZlQ29kZVN0cmluZyA9ICdbbmF0aXZlIGNvZGVdJztcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRpZiAoYXJnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHZhciBpbm5lciA9IGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdFx0XHRpZiAoaW5uZXIpIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGlmIChhcmcudG9TdHJpbmcgIT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgJiYgIWFyZy50b1N0cmluZy50b1N0cmluZygpLmluY2x1ZGVzKCdbbmF0aXZlIGNvZGVdJykpIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzLmpvaW4oJyAnKTtcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiIsImltcG9ydHtvcHRpb25zIGFzIG59ZnJvbVwicHJlYWN0XCI7dmFyIHQscix1LGksbz0wLGY9W10sYz1bXSxlPW4uX19iLGE9bi5fX3Isdj1uLmRpZmZlZCxsPW4uX19jLG09bi51bm1vdW50O2Z1bmN0aW9uIGQodCx1KXtuLl9faCYmbi5fX2gocix0LG98fHUpLG89MDt2YXIgaT1yLl9fSHx8KHIuX19IPXtfXzpbXSxfX2g6W119KTtyZXR1cm4gdD49aS5fXy5sZW5ndGgmJmkuX18ucHVzaCh7X19WOmN9KSxpLl9fW3RdfWZ1bmN0aW9uIGgobil7cmV0dXJuIG89MSxzKEIsbil9ZnVuY3Rpb24gcyhuLHUsaSl7dmFyIG89ZCh0KyssMik7aWYoby50PW4sIW8uX19jJiYoby5fXz1baT9pKHUpOkIodm9pZCAwLHUpLGZ1bmN0aW9uKG4pe3ZhciB0PW8uX19OP28uX19OWzBdOm8uX19bMF0scj1vLnQodCxuKTt0IT09ciYmKG8uX19OPVtyLG8uX19bMV1dLG8uX19jLnNldFN0YXRlKHt9KSl9XSxvLl9fYz1yLCFyLnUpKXt2YXIgZj1mdW5jdGlvbihuLHQscil7aWYoIW8uX19jLl9fSClyZXR1cm4hMDt2YXIgdT1vLl9fYy5fX0guX18uZmlsdGVyKGZ1bmN0aW9uKG4pe3JldHVybiBuLl9fY30pO2lmKHUuZXZlcnkoZnVuY3Rpb24obil7cmV0dXJuIW4uX19OfSkpcmV0dXJuIWN8fGMuY2FsbCh0aGlzLG4sdCxyKTt2YXIgaT0hMTtyZXR1cm4gdS5mb3JFYWNoKGZ1bmN0aW9uKG4pe2lmKG4uX19OKXt2YXIgdD1uLl9fWzBdO24uX189bi5fX04sbi5fX049dm9pZCAwLHQhPT1uLl9fWzBdJiYoaT0hMCl9fSksISghaSYmby5fX2MucHJvcHM9PT1uKSYmKCFjfHxjLmNhbGwodGhpcyxuLHQscikpfTtyLnU9ITA7dmFyIGM9ci5zaG91bGRDb21wb25lbnRVcGRhdGUsZT1yLmNvbXBvbmVudFdpbGxVcGRhdGU7ci5jb21wb25lbnRXaWxsVXBkYXRlPWZ1bmN0aW9uKG4sdCxyKXtpZih0aGlzLl9fZSl7dmFyIHU9YztjPXZvaWQgMCxmKG4sdCxyKSxjPXV9ZSYmZS5jYWxsKHRoaXMsbix0LHIpfSxyLnNob3VsZENvbXBvbmVudFVwZGF0ZT1mfXJldHVybiBvLl9fTnx8by5fX31mdW5jdGlvbiBwKHUsaSl7dmFyIG89ZCh0KyssMyk7IW4uX19zJiZ6KG8uX19ILGkpJiYoby5fXz11LG8uaT1pLHIuX19ILl9faC5wdXNoKG8pKX1mdW5jdGlvbiB5KHUsaSl7dmFyIG89ZCh0KyssNCk7IW4uX19zJiZ6KG8uX19ILGkpJiYoby5fXz11LG8uaT1pLHIuX19oLnB1c2gobykpfWZ1bmN0aW9uIF8obil7cmV0dXJuIG89NSxGKGZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bn19LFtdKX1mdW5jdGlvbiBBKG4sdCxyKXtvPTYseShmdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIG4/KG4odCgpKSxmdW5jdGlvbigpe3JldHVybiBuKG51bGwpfSk6bj8obi5jdXJyZW50PXQoKSxmdW5jdGlvbigpe3JldHVybiBuLmN1cnJlbnQ9bnVsbH0pOnZvaWQgMH0sbnVsbD09cj9yOnIuY29uY2F0KG4pKX1mdW5jdGlvbiBGKG4scil7dmFyIHU9ZCh0KyssNyk7cmV0dXJuIHoodS5fX0gscik/KHUuX19WPW4oKSx1Lmk9cix1Ll9faD1uLHUuX19WKTp1Ll9ffWZ1bmN0aW9uIFQobix0KXtyZXR1cm4gbz04LEYoZnVuY3Rpb24oKXtyZXR1cm4gbn0sdCl9ZnVuY3Rpb24gcShuKXt2YXIgdT1yLmNvbnRleHRbbi5fX2NdLGk9ZCh0KyssOSk7cmV0dXJuIGkuYz1uLHU/KG51bGw9PWkuX18mJihpLl9fPSEwLHUuc3ViKHIpKSx1LnByb3BzLnZhbHVlKTpuLl9ffWZ1bmN0aW9uIHgodCxyKXtuLnVzZURlYnVnVmFsdWUmJm4udXNlRGVidWdWYWx1ZShyP3IodCk6dCl9ZnVuY3Rpb24gUChuKXt2YXIgdT1kKHQrKywxMCksaT1oKCk7cmV0dXJuIHUuX189bixyLmNvbXBvbmVudERpZENhdGNofHwoci5jb21wb25lbnREaWRDYXRjaD1mdW5jdGlvbihuLHQpe3UuX18mJnUuX18obix0KSxpWzFdKG4pfSksW2lbMF0sZnVuY3Rpb24oKXtpWzFdKHZvaWQgMCl9XX1mdW5jdGlvbiBWKCl7dmFyIG49ZCh0KyssMTEpO2lmKCFuLl9fKXtmb3IodmFyIHU9ci5fX3Y7bnVsbCE9PXUmJiF1Ll9fbSYmbnVsbCE9PXUuX187KXU9dS5fXzt2YXIgaT11Ll9fbXx8KHUuX19tPVswLDBdKTtuLl9fPVwiUFwiK2lbMF0rXCItXCIraVsxXSsrfXJldHVybiBuLl9ffWZ1bmN0aW9uIGIoKXtmb3IodmFyIHQ7dD1mLnNoaWZ0KCk7KWlmKHQuX19QJiZ0Ll9fSCl0cnl7dC5fX0guX19oLmZvckVhY2goayksdC5fX0guX19oLmZvckVhY2godyksdC5fX0guX19oPVtdfWNhdGNoKHIpe3QuX19ILl9faD1bXSxuLl9fZShyLHQuX192KX19bi5fX2I9ZnVuY3Rpb24obil7cj1udWxsLGUmJmUobil9LG4uX19yPWZ1bmN0aW9uKG4pe2EmJmEobiksdD0wO3ZhciBpPShyPW4uX19jKS5fX0g7aSYmKHU9PT1yPyhpLl9faD1bXSxyLl9faD1bXSxpLl9fLmZvckVhY2goZnVuY3Rpb24obil7bi5fX04mJihuLl9fPW4uX19OKSxuLl9fVj1jLG4uX19OPW4uaT12b2lkIDB9KSk6KGkuX19oLmZvckVhY2goayksaS5fX2guZm9yRWFjaCh3KSxpLl9faD1bXSkpLHU9cn0sbi5kaWZmZWQ9ZnVuY3Rpb24odCl7diYmdih0KTt2YXIgbz10Ll9fYztvJiZvLl9fSCYmKG8uX19ILl9faC5sZW5ndGgmJigxIT09Zi5wdXNoKG8pJiZpPT09bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fCgoaT1uLnJlcXVlc3RBbmltYXRpb25GcmFtZSl8fGopKGIpKSxvLl9fSC5fXy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uaSYmKG4uX19IPW4uaSksbi5fX1YhPT1jJiYobi5fXz1uLl9fViksbi5pPXZvaWQgMCxuLl9fVj1jfSkpLHU9cj1udWxsfSxuLl9fYz1mdW5jdGlvbih0LHIpe3Iuc29tZShmdW5jdGlvbih0KXt0cnl7dC5fX2guZm9yRWFjaChrKSx0Ll9faD10Ll9faC5maWx0ZXIoZnVuY3Rpb24obil7cmV0dXJuIW4uX198fHcobil9KX1jYXRjaCh1KXtyLnNvbWUoZnVuY3Rpb24obil7bi5fX2gmJihuLl9faD1bXSl9KSxyPVtdLG4uX19lKHUsdC5fX3YpfX0pLGwmJmwodCxyKX0sbi51bm1vdW50PWZ1bmN0aW9uKHQpe20mJm0odCk7dmFyIHIsdT10Ll9fYzt1JiZ1Ll9fSCYmKHUuX19ILl9fLmZvckVhY2goZnVuY3Rpb24obil7dHJ5e2sobil9Y2F0Y2gobil7cj1ufX0pLHUuX19IPXZvaWQgMCxyJiZuLl9fZShyLHUuX192KSl9O3ZhciBnPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVlc3RBbmltYXRpb25GcmFtZTtmdW5jdGlvbiBqKG4pe3ZhciB0LHI9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodSksZyYmY2FuY2VsQW5pbWF0aW9uRnJhbWUodCksc2V0VGltZW91dChuKX0sdT1zZXRUaW1lb3V0KHIsMTAwKTtnJiYodD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUocikpfWZ1bmN0aW9uIGsobil7dmFyIHQ9cix1PW4uX19jO1wiZnVuY3Rpb25cIj09dHlwZW9mIHUmJihuLl9fYz12b2lkIDAsdSgpKSxyPXR9ZnVuY3Rpb24gdyhuKXt2YXIgdD1yO24uX19jPW4uX18oKSxyPXR9ZnVuY3Rpb24geihuLHQpe3JldHVybiFufHxuLmxlbmd0aCE9PXQubGVuZ3RofHx0LnNvbWUoZnVuY3Rpb24odCxyKXtyZXR1cm4gdCE9PW5bcl19KX1mdW5jdGlvbiBCKG4sdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD90KG4pOnR9ZXhwb3J0e1QgYXMgdXNlQ2FsbGJhY2sscSBhcyB1c2VDb250ZXh0LHggYXMgdXNlRGVidWdWYWx1ZSxwIGFzIHVzZUVmZmVjdCxQIGFzIHVzZUVycm9yQm91bmRhcnksViBhcyB1c2VJZCxBIGFzIHVzZUltcGVyYXRpdmVIYW5kbGUseSBhcyB1c2VMYXlvdXRFZmZlY3QsRiBhcyB1c2VNZW1vLHMgYXMgdXNlUmVkdWNlcixfIGFzIHVzZVJlZixoIGFzIHVzZVN0YXRlfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWhvb2tzLm1vZHVsZS5qcy5tYXBcbiIsImltcG9ydHtDb21wb25lbnQgYXMgbixjcmVhdGVFbGVtZW50IGFzIHQsb3B0aW9ucyBhcyBlLHRvQ2hpbGRBcnJheSBhcyByLEZyYWdtZW50IGFzIHUscmVuZGVyIGFzIG8saHlkcmF0ZSBhcyBpLGNyZWF0ZUNvbnRleHQgYXMgbCxjcmVhdGVSZWYgYXMgYyxjbG9uZUVsZW1lbnQgYXMgZn1mcm9tXCJwcmVhY3RcIjtleHBvcnR7Q29tcG9uZW50LEZyYWdtZW50LGNyZWF0ZUNvbnRleHQsY3JlYXRlRWxlbWVudCxjcmVhdGVSZWZ9ZnJvbVwicHJlYWN0XCI7aW1wb3J0e3VzZVN0YXRlIGFzIGEsdXNlSWQgYXMgcyx1c2VSZWR1Y2VyIGFzIGgsdXNlRWZmZWN0IGFzIHYsdXNlTGF5b3V0RWZmZWN0IGFzIGQsdXNlUmVmIGFzIHAsdXNlSW1wZXJhdGl2ZUhhbmRsZSBhcyBtLHVzZU1lbW8gYXMgeSx1c2VDYWxsYmFjayBhcyBfLHVzZUNvbnRleHQgYXMgYix1c2VEZWJ1Z1ZhbHVlIGFzIFN9ZnJvbVwicHJlYWN0L2hvb2tzXCI7ZXhwb3J0KmZyb21cInByZWFjdC9ob29rc1wiO2Z1bmN0aW9uIGcobix0KXtmb3IodmFyIGUgaW4gdCluW2VdPXRbZV07cmV0dXJuIG59ZnVuY3Rpb24gQyhuLHQpe2Zvcih2YXIgZSBpbiBuKWlmKFwiX19zb3VyY2VcIiE9PWUmJiEoZSBpbiB0KSlyZXR1cm4hMDtmb3IodmFyIHIgaW4gdClpZihcIl9fc291cmNlXCIhPT1yJiZuW3JdIT09dFtyXSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBFKG4sdCl7cmV0dXJuIG49PT10JiYoMCE9PW58fDEvbj09MS90KXx8biE9biYmdCE9dH1mdW5jdGlvbiB3KG4pe3RoaXMucHJvcHM9bn1mdW5jdGlvbiB4KG4sZSl7ZnVuY3Rpb24gcihuKXt2YXIgdD10aGlzLnByb3BzLnJlZixyPXQ9PW4ucmVmO3JldHVybiFyJiZ0JiYodC5jYWxsP3QobnVsbCk6dC5jdXJyZW50PW51bGwpLGU/IWUodGhpcy5wcm9wcyxuKXx8IXI6Qyh0aGlzLnByb3BzLG4pfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIHRoaXMuc2hvdWxkQ29tcG9uZW50VXBkYXRlPXIsdChuLGUpfXJldHVybiB1LmRpc3BsYXlOYW1lPVwiTWVtbyhcIisobi5kaXNwbGF5TmFtZXx8bi5uYW1lKStcIilcIix1LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PSEwLHUuX19mPSEwLHV9KHcucHJvdG90eXBlPW5ldyBuKS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMCx3LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24obix0KXtyZXR1cm4gQyh0aGlzLnByb3BzLG4pfHxDKHRoaXMuc3RhdGUsdCl9O3ZhciBSPWUuX19iO2UuX19iPWZ1bmN0aW9uKG4pe24udHlwZSYmbi50eXBlLl9fZiYmbi5yZWYmJihuLnByb3BzLnJlZj1uLnJlZixuLnJlZj1udWxsKSxSJiZSKG4pfTt2YXIgTj1cInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKFwicmVhY3QuZm9yd2FyZF9yZWZcIil8fDM5MTE7ZnVuY3Rpb24gayhuKXtmdW5jdGlvbiB0KHQpe3ZhciBlPWcoe30sdCk7cmV0dXJuIGRlbGV0ZSBlLnJlZixuKGUsdC5yZWZ8fG51bGwpfXJldHVybiB0LiQkdHlwZW9mPU4sdC5yZW5kZXI9dCx0LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXQuX19mPSEwLHQuZGlzcGxheU5hbWU9XCJGb3J3YXJkUmVmKFwiKyhuLmRpc3BsYXlOYW1lfHxuLm5hbWUpK1wiKVwiLHR9dmFyIEE9ZnVuY3Rpb24obix0KXtyZXR1cm4gbnVsbD09bj9udWxsOnIocihuKS5tYXAodCkpfSxPPXttYXA6QSxmb3JFYWNoOkEsY291bnQ6ZnVuY3Rpb24obil7cmV0dXJuIG4/cihuKS5sZW5ndGg6MH0sb25seTpmdW5jdGlvbihuKXt2YXIgdD1yKG4pO2lmKDEhPT10Lmxlbmd0aCl0aHJvd1wiQ2hpbGRyZW4ub25seVwiO3JldHVybiB0WzBdfSx0b0FycmF5OnJ9LFQ9ZS5fX2U7ZS5fX2U9ZnVuY3Rpb24obix0LGUscil7aWYobi50aGVuKWZvcih2YXIgdSxvPXQ7bz1vLl9fOylpZigodT1vLl9fYykmJnUuX19jKXJldHVybiBudWxsPT10Ll9fZSYmKHQuX19lPWUuX19lLHQuX19rPWUuX19rKSx1Ll9fYyhuLHQpO1Qobix0LGUscil9O3ZhciBJPWUudW5tb3VudDtmdW5jdGlvbiBMKG4sdCxlKXtyZXR1cm4gbiYmKG4uX19jJiZuLl9fYy5fX0gmJihuLl9fYy5fX0guX18uZm9yRWFjaChmdW5jdGlvbihuKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBuLl9fYyYmbi5fX2MoKX0pLG4uX19jLl9fSD1udWxsKSxudWxsIT0obj1nKHt9LG4pKS5fX2MmJihuLl9fYy5fX1A9PT1lJiYobi5fX2MuX19QPXQpLG4uX19jPW51bGwpLG4uX19rPW4uX19rJiZuLl9fay5tYXAoZnVuY3Rpb24obil7cmV0dXJuIEwobix0LGUpfSkpLG59ZnVuY3Rpb24gVShuLHQsZSl7cmV0dXJuIG4mJihuLl9fdj1udWxsLG4uX19rPW4uX19rJiZuLl9fay5tYXAoZnVuY3Rpb24obil7cmV0dXJuIFUobix0LGUpfSksbi5fX2MmJm4uX19jLl9fUD09PXQmJihuLl9fZSYmZS5pbnNlcnRCZWZvcmUobi5fX2Usbi5fX2QpLG4uX19jLl9fZT0hMCxuLl9fYy5fX1A9ZSkpLG59ZnVuY3Rpb24gRCgpe3RoaXMuX191PTAsdGhpcy50PW51bGwsdGhpcy5fX2I9bnVsbH1mdW5jdGlvbiBGKG4pe3ZhciB0PW4uX18uX19jO3JldHVybiB0JiZ0Ll9fYSYmdC5fX2Eobil9ZnVuY3Rpb24gTShuKXt2YXIgZSxyLHU7ZnVuY3Rpb24gbyhvKXtpZihlfHwoZT1uKCkpLnRoZW4oZnVuY3Rpb24obil7cj1uLmRlZmF1bHR8fG59LGZ1bmN0aW9uKG4pe3U9bn0pLHUpdGhyb3cgdTtpZighcil0aHJvdyBlO3JldHVybiB0KHIsbyl9cmV0dXJuIG8uZGlzcGxheU5hbWU9XCJMYXp5XCIsby5fX2Y9ITAsb31mdW5jdGlvbiBWKCl7dGhpcy51PW51bGwsdGhpcy5vPW51bGx9ZS51bm1vdW50PWZ1bmN0aW9uKG4pe3ZhciB0PW4uX19jO3QmJnQuX19SJiZ0Ll9fUigpLHQmJiEwPT09bi5fX2gmJihuLnR5cGU9bnVsbCksSSYmSShuKX0sKEQucHJvdG90eXBlPW5ldyBuKS5fX2M9ZnVuY3Rpb24obix0KXt2YXIgZT10Ll9fYyxyPXRoaXM7bnVsbD09ci50JiYoci50PVtdKSxyLnQucHVzaChlKTt2YXIgdT1GKHIuX192KSxvPSExLGk9ZnVuY3Rpb24oKXtvfHwobz0hMCxlLl9fUj1udWxsLHU/dShsKTpsKCkpfTtlLl9fUj1pO3ZhciBsPWZ1bmN0aW9uKCl7aWYoIS0tci5fX3Upe2lmKHIuc3RhdGUuX19hKXt2YXIgbj1yLnN0YXRlLl9fYTtyLl9fdi5fX2tbMF09VShuLG4uX19jLl9fUCxuLl9fYy5fX08pfXZhciB0O2ZvcihyLnNldFN0YXRlKHtfX2E6ci5fX2I9bnVsbH0pO3Q9ci50LnBvcCgpOyl0LmZvcmNlVXBkYXRlKCl9fSxjPSEwPT09dC5fX2g7ci5fX3UrK3x8Y3x8ci5zZXRTdGF0ZSh7X19hOnIuX19iPXIuX192Ll9fa1swXX0pLG4udGhlbihpLGkpfSxELnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5jdGlvbigpe3RoaXMudD1bXX0sRC5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKG4sZSl7aWYodGhpcy5fX2Ipe2lmKHRoaXMuX192Ll9fayl7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxvPXRoaXMuX192Ll9fa1swXS5fX2M7dGhpcy5fX3YuX19rWzBdPUwodGhpcy5fX2IscixvLl9fTz1vLl9fUCl9dGhpcy5fX2I9bnVsbH12YXIgaT1lLl9fYSYmdCh1LG51bGwsbi5mYWxsYmFjayk7cmV0dXJuIGkmJihpLl9faD1udWxsKSxbdCh1LG51bGwsZS5fX2E/bnVsbDpuLmNoaWxkcmVuKSxpXX07dmFyIFc9ZnVuY3Rpb24obix0LGUpe2lmKCsrZVsxXT09PWVbMF0mJm4uby5kZWxldGUodCksbi5wcm9wcy5yZXZlYWxPcmRlciYmKFwidFwiIT09bi5wcm9wcy5yZXZlYWxPcmRlclswXXx8IW4uby5zaXplKSlmb3IoZT1uLnU7ZTspe2Zvcig7ZS5sZW5ndGg+MzspZS5wb3AoKSgpO2lmKGVbMV08ZVswXSlicmVhaztuLnU9ZT1lWzJdfX07ZnVuY3Rpb24gUChuKXtyZXR1cm4gdGhpcy5nZXRDaGlsZENvbnRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gbi5jb250ZXh0fSxuLmNoaWxkcmVufWZ1bmN0aW9uIGoobil7dmFyIGU9dGhpcyxyPW4uaTtlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7byhudWxsLGUubCksZS5sPW51bGwsZS5pPW51bGx9LGUuaSYmZS5pIT09ciYmZS5jb21wb25lbnRXaWxsVW5tb3VudCgpLG4uX192PyhlLmx8fChlLmk9cixlLmw9e25vZGVUeXBlOjEscGFyZW50Tm9kZTpyLGNoaWxkTm9kZXM6W10sYXBwZW5kQ2hpbGQ6ZnVuY3Rpb24obil7dGhpcy5jaGlsZE5vZGVzLnB1c2gobiksZS5pLmFwcGVuZENoaWxkKG4pfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24obix0KXt0aGlzLmNoaWxkTm9kZXMucHVzaChuKSxlLmkuYXBwZW5kQ2hpbGQobil9LHJlbW92ZUNoaWxkOmZ1bmN0aW9uKG4pe3RoaXMuY2hpbGROb2Rlcy5zcGxpY2UodGhpcy5jaGlsZE5vZGVzLmluZGV4T2Yobik+Pj4xLDEpLGUuaS5yZW1vdmVDaGlsZChuKX19KSxvKHQoUCx7Y29udGV4dDplLmNvbnRleHR9LG4uX192KSxlLmwpKTplLmwmJmUuY29tcG9uZW50V2lsbFVubW91bnQoKX1mdW5jdGlvbiB6KG4sZSl7dmFyIHI9dChqLHtfX3Y6bixpOmV9KTtyZXR1cm4gci5jb250YWluZXJJbmZvPWUscn0oVi5wcm90b3R5cGU9bmV3IG4pLl9fYT1mdW5jdGlvbihuKXt2YXIgdD10aGlzLGU9Rih0Ll9fdikscj10Lm8uZ2V0KG4pO3JldHVybiByWzBdKyssZnVuY3Rpb24odSl7dmFyIG89ZnVuY3Rpb24oKXt0LnByb3BzLnJldmVhbE9yZGVyPyhyLnB1c2godSksVyh0LG4scikpOnUoKX07ZT9lKG8pOm8oKX19LFYucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihuKXt0aGlzLnU9bnVsbCx0aGlzLm89bmV3IE1hcDt2YXIgdD1yKG4uY2hpbGRyZW4pO24ucmV2ZWFsT3JkZXImJlwiYlwiPT09bi5yZXZlYWxPcmRlclswXSYmdC5yZXZlcnNlKCk7Zm9yKHZhciBlPXQubGVuZ3RoO2UtLTspdGhpcy5vLnNldCh0W2VdLHRoaXMudT1bMSwwLHRoaXMudV0pO3JldHVybiBuLmNoaWxkcmVufSxWLnByb3RvdHlwZS5jb21wb25lbnREaWRVcGRhdGU9Vi5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuby5mb3JFYWNoKGZ1bmN0aW9uKHQsZSl7VyhuLGUsdCl9KX07dmFyIEI9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmU3ltYm9sLmZvciYmU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIil8fDYwMTAzLEg9L14oPzphY2NlbnR8YWxpZ25tZW50fGFyYWJpY3xiYXNlbGluZXxjYXB8Y2xpcCg/IVBhdGhVKXxjb2xvcnxkb21pbmFudHxmaWxsfGZsb29kfGZvbnR8Z2x5cGgoPyFSKXxob3JpenxpbWFnZXxsZXR0ZXJ8bGlnaHRpbmd8bWFya2VyKD8hSHxXfFUpfG92ZXJsaW5lfHBhaW50fHBvaW50ZXJ8c2hhcGV8c3RvcHxzdHJpa2V0aHJvdWdofHN0cm9rZXx0ZXh0KD8hTCl8dHJhbnNmb3JtfHVuZGVybGluZXx1bmljb2RlfHVuaXRzfHZ8dmVjdG9yfHZlcnR8d29yZHx3cml0aW5nfHgoPyFDKSlbQS1aXS8sWj0vXm9uKEFuaXxUcmF8VG91fEJlZm9yZUlucHxDb21wbykvLFk9L1tBLVowLTldL2csJD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZG9jdW1lbnQscT1mdW5jdGlvbihuKXtyZXR1cm4oXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFN5bWJvbCYmXCJzeW1ib2xcIj09dHlwZW9mIFN5bWJvbCgpPy9maWx8Y2hlfHJhZC86L2ZpbHxjaGV8cmEvKS50ZXN0KG4pfTtmdW5jdGlvbiBHKG4sdCxlKXtyZXR1cm4gbnVsbD09dC5fX2smJih0LnRleHRDb250ZW50PVwiXCIpLG8obix0KSxcImZ1bmN0aW9uXCI9PXR5cGVvZiBlJiZlKCksbj9uLl9fYzpudWxsfWZ1bmN0aW9uIEoobix0LGUpe3JldHVybiBpKG4sdCksXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmZSgpLG4/bi5fX2M6bnVsbH1uLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LFtcImNvbXBvbmVudFdpbGxNb3VudFwiLFwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wc1wiLFwiY29tcG9uZW50V2lsbFVwZGF0ZVwiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe09iamVjdC5kZWZpbmVQcm9wZXJ0eShuLnByb3RvdHlwZSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbXCJVTlNBRkVfXCIrdF19LHNldDpmdW5jdGlvbihuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyx0LHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6bn0pfX0pfSk7dmFyIEs9ZS5ldmVudDtmdW5jdGlvbiBRKCl7fWZ1bmN0aW9uIFgoKXtyZXR1cm4gdGhpcy5jYW5jZWxCdWJibGV9ZnVuY3Rpb24gbm4oKXtyZXR1cm4gdGhpcy5kZWZhdWx0UHJldmVudGVkfWUuZXZlbnQ9ZnVuY3Rpb24obil7cmV0dXJuIEsmJihuPUsobikpLG4ucGVyc2lzdD1RLG4uaXNQcm9wYWdhdGlvblN0b3BwZWQ9WCxuLmlzRGVmYXVsdFByZXZlbnRlZD1ubixuLm5hdGl2ZUV2ZW50PW59O3ZhciB0bixlbj17ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xhc3N9fSxybj1lLnZub2RlO2Uudm5vZGU9ZnVuY3Rpb24obil7XCJzdHJpbmdcIj09dHlwZW9mIG4udHlwZSYmZnVuY3Rpb24obil7dmFyIHQ9bi5wcm9wcyxlPW4udHlwZSx1PXt9O2Zvcih2YXIgbyBpbiB0KXt2YXIgaT10W29dO2lmKCEoXCJ2YWx1ZVwiPT09byYmXCJkZWZhdWx0VmFsdWVcImluIHQmJm51bGw9PWl8fCQmJlwiY2hpbGRyZW5cIj09PW8mJlwibm9zY3JpcHRcIj09PWV8fFwiY2xhc3NcIj09PW98fFwiY2xhc3NOYW1lXCI9PT1vKSl7dmFyIGw9by50b0xvd2VyQ2FzZSgpO1wiZGVmYXVsdFZhbHVlXCI9PT1vJiZcInZhbHVlXCJpbiB0JiZudWxsPT10LnZhbHVlP289XCJ2YWx1ZVwiOlwiZG93bmxvYWRcIj09PW8mJiEwPT09aT9pPVwiXCI6XCJvbmRvdWJsZWNsaWNrXCI9PT1sP289XCJvbmRibGNsaWNrXCI6XCJvbmNoYW5nZVwiIT09bHx8XCJpbnB1dFwiIT09ZSYmXCJ0ZXh0YXJlYVwiIT09ZXx8cSh0LnR5cGUpP1wib25mb2N1c1wiPT09bD9vPVwib25mb2N1c2luXCI6XCJvbmJsdXJcIj09PWw/bz1cIm9uZm9jdXNvdXRcIjpaLnRlc3Qobyk/bz1sOi0xPT09ZS5pbmRleE9mKFwiLVwiKSYmSC50ZXN0KG8pP289by5yZXBsYWNlKFksXCItJCZcIikudG9Mb3dlckNhc2UoKTpudWxsPT09aSYmKGk9dm9pZCAwKTpsPW89XCJvbmlucHV0XCIsXCJvbmlucHV0XCI9PT1sJiZ1W289bF0mJihvPVwib25pbnB1dENhcHR1cmVcIiksdVtvXT1pfX1cInNlbGVjdFwiPT1lJiZ1Lm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHUudmFsdWUpJiYodS52YWx1ZT1yKHQuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24obil7bi5wcm9wcy5zZWxlY3RlZD0tMSE9dS52YWx1ZS5pbmRleE9mKG4ucHJvcHMudmFsdWUpfSkpLFwic2VsZWN0XCI9PWUmJm51bGwhPXUuZGVmYXVsdFZhbHVlJiYodS52YWx1ZT1yKHQuY2hpbGRyZW4pLmZvckVhY2goZnVuY3Rpb24obil7bi5wcm9wcy5zZWxlY3RlZD11Lm11bHRpcGxlPy0xIT11LmRlZmF1bHRWYWx1ZS5pbmRleE9mKG4ucHJvcHMudmFsdWUpOnUuZGVmYXVsdFZhbHVlPT1uLnByb3BzLnZhbHVlfSkpLHQuY2xhc3MmJiF0LmNsYXNzTmFtZT8odS5jbGFzcz10LmNsYXNzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh1LFwiY2xhc3NOYW1lXCIsZW4pKToodC5jbGFzc05hbWUmJiF0LmNsYXNzfHx0LmNsYXNzJiZ0LmNsYXNzTmFtZSkmJih1LmNsYXNzPXUuY2xhc3NOYW1lPXQuY2xhc3NOYW1lKSxuLnByb3BzPXV9KG4pLG4uJCR0eXBlb2Y9QixybiYmcm4obil9O3ZhciB1bj1lLl9fcjtlLl9fcj1mdW5jdGlvbihuKXt1biYmdW4obiksdG49bi5fX2N9O3ZhciBvbj1lLmRpZmZlZDtlLmRpZmZlZD1mdW5jdGlvbihuKXtvbiYmb24obik7dmFyIHQ9bi5wcm9wcyxlPW4uX19lO251bGwhPWUmJlwidGV4dGFyZWFcIj09PW4udHlwZSYmXCJ2YWx1ZVwiaW4gdCYmdC52YWx1ZSE9PWUudmFsdWUmJihlLnZhbHVlPW51bGw9PXQudmFsdWU/XCJcIjp0LnZhbHVlKSx0bj1udWxsfTt2YXIgbG49e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6e2N1cnJlbnQ6e3JlYWRDb250ZXh0OmZ1bmN0aW9uKG4pe3JldHVybiB0bi5fX25bbi5fX2NdLnByb3BzLnZhbHVlfX19fSxjbj1cIjE3LjAuMlwiO2Z1bmN0aW9uIGZuKG4pe3JldHVybiB0LmJpbmQobnVsbCxuKX1mdW5jdGlvbiBhbihuKXtyZXR1cm4hIW4mJm4uJCR0eXBlb2Y9PT1CfWZ1bmN0aW9uIHNuKG4pe3JldHVybiBhbihuKT9mLmFwcGx5KG51bGwsYXJndW1lbnRzKTpufWZ1bmN0aW9uIGhuKG4pe3JldHVybiEhbi5fX2smJihvKG51bGwsbiksITApfWZ1bmN0aW9uIHZuKG4pe3JldHVybiBuJiYobi5iYXNlfHwxPT09bi5ub2RlVHlwZSYmbil8fG51bGx9dmFyIGRuPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9LHBuPWZ1bmN0aW9uKG4sdCl7cmV0dXJuIG4odCl9LG1uPXU7ZnVuY3Rpb24geW4obil7bigpfWZ1bmN0aW9uIF9uKG4pe3JldHVybiBufWZ1bmN0aW9uIGJuKCl7cmV0dXJuWyExLHluXX12YXIgU249ZDtmdW5jdGlvbiBnbihuLHQpe3ZhciBlPXQoKSxyPWEoe2g6e19fOmUsdjp0fX0pLHU9clswXS5oLG89clsxXTtyZXR1cm4gZChmdW5jdGlvbigpe3UuX189ZSx1LnY9dCxFKHUuX18sdCgpKXx8byh7aDp1fSl9LFtuLGUsdF0pLHYoZnVuY3Rpb24oKXtyZXR1cm4gRSh1Ll9fLHUudigpKXx8byh7aDp1fSksbihmdW5jdGlvbigpe0UodS5fXyx1LnYoKSl8fG8oe2g6dX0pfSl9LFtuXSksZX12YXIgQ249e3VzZVN0YXRlOmEsdXNlSWQ6cyx1c2VSZWR1Y2VyOmgsdXNlRWZmZWN0OnYsdXNlTGF5b3V0RWZmZWN0OmQsdXNlSW5zZXJ0aW9uRWZmZWN0OlNuLHVzZVRyYW5zaXRpb246Ym4sdXNlRGVmZXJyZWRWYWx1ZTpfbix1c2VTeW5jRXh0ZXJuYWxTdG9yZTpnbixzdGFydFRyYW5zaXRpb246eW4sdXNlUmVmOnAsdXNlSW1wZXJhdGl2ZUhhbmRsZTptLHVzZU1lbW86eSx1c2VDYWxsYmFjazpfLHVzZUNvbnRleHQ6Yix1c2VEZWJ1Z1ZhbHVlOlMsdmVyc2lvbjpcIjE3LjAuMlwiLENoaWxkcmVuOk8scmVuZGVyOkcsaHlkcmF0ZTpKLHVubW91bnRDb21wb25lbnRBdE5vZGU6aG4sY3JlYXRlUG9ydGFsOnosY3JlYXRlRWxlbWVudDp0LGNyZWF0ZUNvbnRleHQ6bCxjcmVhdGVGYWN0b3J5OmZuLGNsb25lRWxlbWVudDpzbixjcmVhdGVSZWY6YyxGcmFnbWVudDp1LGlzVmFsaWRFbGVtZW50OmFuLGZpbmRET01Ob2RlOnZuLENvbXBvbmVudDpuLFB1cmVDb21wb25lbnQ6dyxtZW1vOngsZm9yd2FyZFJlZjprLGZsdXNoU3luYzpwbix1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczpkbixTdHJpY3RNb2RlOm1uLFN1c3BlbnNlOkQsU3VzcGVuc2VMaXN0OlYsbGF6eTpNLF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEOmxufTtleHBvcnR7TyBhcyBDaGlsZHJlbix3IGFzIFB1cmVDb21wb25lbnQsbW4gYXMgU3RyaWN0TW9kZSxEIGFzIFN1c3BlbnNlLFYgYXMgU3VzcGVuc2VMaXN0LGxuIGFzIF9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVELHNuIGFzIGNsb25lRWxlbWVudCxmbiBhcyBjcmVhdGVGYWN0b3J5LHogYXMgY3JlYXRlUG9ydGFsLENuIGFzIGRlZmF1bHQsdm4gYXMgZmluZERPTU5vZGUscG4gYXMgZmx1c2hTeW5jLGsgYXMgZm9yd2FyZFJlZixKIGFzIGh5ZHJhdGUsYW4gYXMgaXNWYWxpZEVsZW1lbnQsTSBhcyBsYXp5LHggYXMgbWVtbyxHIGFzIHJlbmRlcix5biBhcyBzdGFydFRyYW5zaXRpb24saG4gYXMgdW5tb3VudENvbXBvbmVudEF0Tm9kZSxkbiBhcyB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyxfbiBhcyB1c2VEZWZlcnJlZFZhbHVlLFNuIGFzIHVzZUluc2VydGlvbkVmZmVjdCxnbiBhcyB1c2VTeW5jRXh0ZXJuYWxTdG9yZSxibiBhcyB1c2VUcmFuc2l0aW9uLGNuIGFzIHZlcnNpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y29tcGF0Lm1vZHVsZS5qcy5tYXBcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBga2V5YCBpcyBmb3VuZCBpbiBgYXJyYXlgIG9mIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IGtleSBUaGUga2V5IHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBhc3NvY0luZGV4T2YoYXJyYXksIGtleSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICBpZiAoZXEoYXJyYXlbbGVuZ3RoXVswXSwga2V5KSkge1xuICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc29jSW5kZXhPZjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBsaXN0Q2FjaGVDbGVhciA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUNsZWFyJyksXG4gICAgbGlzdENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlRGVsZXRlJyksXG4gICAgbGlzdENhY2hlR2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlR2V0JyksXG4gICAgbGlzdENhY2hlSGFzID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlSGFzJyksXG4gICAgbGlzdENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbGlzdENhY2hlU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBsaXN0IGNhY2hlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gTGlzdENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYExpc3RDYWNoZWAuXG5MaXN0Q2FjaGUucHJvdG90eXBlLmNsZWFyID0gbGlzdENhY2hlQ2xlYXI7XG5MaXN0Q2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IGxpc3RDYWNoZURlbGV0ZTtcbkxpc3RDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbGlzdENhY2hlR2V0O1xuTGlzdENhY2hlLnByb3RvdHlwZS5oYXMgPSBsaXN0Q2FjaGVIYXM7XG5MaXN0Q2FjaGUucHJvdG90eXBlLnNldCA9IGxpc3RDYWNoZVNldDtcblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0Q2FjaGU7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgc3RhY2suXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqL1xuZnVuY3Rpb24gc3RhY2tDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGU7XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tDbGVhcjtcbiIsIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0RlbGV0ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgc3RhY2sgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrR2V0KGtleSkge1xuICByZXR1cm4gdGhpcy5fX2RhdGFfXy5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja0dldDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgc3RhY2sgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0hhcyhrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tIYXM7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxuICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlR2V0VGFnYCB3aGljaCBpZ25vcmVzIGBTeW1ib2wudG9TdHJpbmdUYWdgIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmF3VGFnKHZhbHVlKSB7XG4gIHZhciBpc093biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcbiAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcbiAgICB2YXIgdW5tYXNrZWQgPSB0cnVlO1xuICB9IGNhdGNoIChlKSB7fVxuXG4gIHZhciByZXN1bHQgPSBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgaWYgKHVubWFza2VkKSB7XG4gICAgaWYgKGlzT3duKSB7XG4gICAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB0YWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyB0aGVcbiAqIFtsYW5ndWFnZSB0eXBlXShodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtZWNtYXNjcmlwdC1sYW5ndWFnZS10eXBlcylcbiAqIG9mIGBPYmplY3RgLiAoZS5nLiBhcnJheXMsIGZ1bmN0aW9ucywgb2JqZWN0cywgcmVnZXhlcywgYG5ldyBOdW1iZXIoMClgLCBhbmQgYG5ldyBTdHJpbmcoJycpYClcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdCh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPYmplY3QodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmICh0eXBlID09ICdvYmplY3QnIHx8IHR5cGUgPT0gJ2Z1bmN0aW9uJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3Q7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBvdmVycmVhY2hpbmcgY29yZS1qcyBzaGltcy4gKi9cbnZhciBjb3JlSnNEYXRhID0gcm9vdFsnX19jb3JlLWpzX3NoYXJlZF9fJ107XG5cbm1vZHVsZS5leHBvcnRzID0gY29yZUpzRGF0YTtcbiIsInZhciBjb3JlSnNEYXRhID0gcmVxdWlyZSgnLi9fY29yZUpzRGF0YScpO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTWFza2VkO1xuIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqXG4gKiBDb252ZXJ0cyBgZnVuY2AgdG8gaXRzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc291cmNlIGNvZGUuXG4gKi9cbmZ1bmN0aW9uIHRvU291cmNlKGZ1bmMpIHtcbiAgaWYgKGZ1bmMgIT0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gZnVuY1RvU3RyaW5nLmNhbGwoZnVuYyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIChmdW5jICsgJycpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU291cmNlO1xuIiwidmFyIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc01hc2tlZCA9IHJlcXVpcmUoJy4vX2lzTWFza2VkJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKipcbiAqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGBcbiAqIFtzeW50YXggY2hhcmFjdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcGF0dGVybnMpLlxuICovXG52YXIgcmVSZWdFeHBDaGFyID0gL1tcXFxcXiQuKis/KClbXFxde318XS9nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaG9zdCBjb25zdHJ1Y3RvcnMgKFNhZmFyaSkuICovXG52YXIgcmVJc0hvc3RDdG9yID0gL15cXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXF0kLztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcbiAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBpZiBhIG1ldGhvZCBpcyBuYXRpdmUuICovXG52YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgK1xuICBmdW5jVG9TdHJpbmcuY2FsbChoYXNPd25Qcm9wZXJ0eSkucmVwbGFjZShyZVJlZ0V4cENoYXIsICdcXFxcJCYnKVxuICAucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCdcbik7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYXRpdmVgIHdpdGhvdXQgYmFkIHNoaW0gY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbmF0aXZlIGZ1bmN0aW9uLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmF0aXZlKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpIHx8IGlzTWFza2VkKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcGF0dGVybiA9IGlzRnVuY3Rpb24odmFsdWUpID8gcmVJc05hdGl2ZSA6IHJlSXNIb3N0Q3RvcjtcbiAgcmV0dXJuIHBhdHRlcm4udGVzdCh0b1NvdXJjZSh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hdGl2ZTtcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwidmFyIGJhc2VJc05hdGl2ZSA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hdGl2ZScpLFxuICAgIGdldFZhbHVlID0gcmVxdWlyZSgnLi9fZ2V0VmFsdWUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXRpdmUgZnVuY3Rpb24gYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgbWV0aG9kIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBmdW5jdGlvbiBpZiBpdCdzIG5hdGl2ZSwgZWxzZSBgdW5kZWZpbmVkYC5cbiAqL1xuZnVuY3Rpb24gZ2V0TmF0aXZlKG9iamVjdCwga2V5KSB7XG4gIHZhciB2YWx1ZSA9IGdldFZhbHVlKG9iamVjdCwga2V5KTtcbiAgcmV0dXJuIGJhc2VJc05hdGl2ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROYXRpdmU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIE1hcCA9IGdldE5hdGl2ZShyb290LCAnTWFwJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgbmF0aXZlQ3JlYXRlID0gZ2V0TmF0aXZlKE9iamVjdCwgJ2NyZWF0ZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUNyZWF0ZTtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqXG4gKiBSZW1vdmVzIGFsbCBrZXktdmFsdWUgZW50cmllcyBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIEhhc2hcbiAqL1xuZnVuY3Rpb24gaGFzaENsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gbmF0aXZlQ3JlYXRlID8gbmF0aXZlQ3JlYXRlKG51bGwpIDoge307XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaENsZWFyO1xuIiwiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoRGVsZXRlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCB0byBzdGFuZC1pbiBmb3IgYHVuZGVmaW5lZGAgaGFzaCB2YWx1ZXMuICovXG52YXIgSEFTSF9VTkRFRklORUQgPSAnX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogR2V0cyB0aGUgaGFzaCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBoYXNoR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChuYXRpdmVDcmVhdGUpIHtcbiAgICB2YXIgcmVzdWx0ID0gZGF0YVtrZXldO1xuICAgIHJldHVybiByZXN1bHQgPT09IEhBU0hfVU5ERUZJTkVEID8gdW5kZWZpbmVkIDogcmVzdWx0O1xuICB9XG4gIHJldHVybiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSkgPyBkYXRhW2tleV0gOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEdldDtcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBoYXNoIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNoSGFzKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIHJldHVybiBuYXRpdmVDcmVhdGUgPyAoZGF0YVtrZXldICE9PSB1bmRlZmluZWQpIDogaGFzT3duUHJvcGVydHkuY2FsbChkYXRhLCBrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hIYXM7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hTZXQ7XG4iLCJ2YXIgaGFzaENsZWFyID0gcmVxdWlyZSgnLi9faGFzaENsZWFyJyksXG4gICAgaGFzaERlbGV0ZSA9IHJlcXVpcmUoJy4vX2hhc2hEZWxldGUnKSxcbiAgICBoYXNoR2V0ID0gcmVxdWlyZSgnLi9faGFzaEdldCcpLFxuICAgIGhhc2hIYXMgPSByZXF1aXJlKCcuL19oYXNoSGFzJyksXG4gICAgaGFzaFNldCA9IHJlcXVpcmUoJy4vX2hhc2hTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgaGFzaCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIEhhc2goZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgSGFzaGAuXG5IYXNoLnByb3RvdHlwZS5jbGVhciA9IGhhc2hDbGVhcjtcbkhhc2gucHJvdG90eXBlWydkZWxldGUnXSA9IGhhc2hEZWxldGU7XG5IYXNoLnByb3RvdHlwZS5nZXQgPSBoYXNoR2V0O1xuSGFzaC5wcm90b3R5cGUuaGFzID0gaGFzaEhhcztcbkhhc2gucHJvdG90eXBlLnNldCA9IGhhc2hTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgaXNLZXlhYmxlID0gcmVxdWlyZSgnLi9faXNLZXlhYmxlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXBEYXRhO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZURlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IGdldE1hcERhdGEodGhpcywga2V5KVsnZGVsZXRlJ10oa2V5KTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlRGVsZXRlO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFwIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUdldChrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5nZXQoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUdldDtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcENhY2hlSGFzO1xuIiwidmFyIGdldE1hcERhdGEgPSByZXF1aXJlKCcuL19nZXRNYXBEYXRhJyk7XG5cbi8qKlxuICogU2V0cyB0aGUgbWFwIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIG1hcCBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IGdldE1hcERhdGEodGhpcywga2V5KSxcbiAgICAgIHNpemUgPSBkYXRhLnNpemU7XG5cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSArPSBkYXRhLnNpemUgPT0gc2l6ZSA/IDAgOiAxO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZVNldDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgTGlzdENhY2hlID0gcmVxdWlyZSgnLi9fTGlzdENhY2hlJyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdGFja1NldDtcbiIsInZhciBMaXN0Q2FjaGUgPSByZXF1aXJlKCcuL19MaXN0Q2FjaGUnKSxcbiAgICBzdGFja0NsZWFyID0gcmVxdWlyZSgnLi9fc3RhY2tDbGVhcicpLFxuICAgIHN0YWNrRGVsZXRlID0gcmVxdWlyZSgnLi9fc3RhY2tEZWxldGUnKSxcbiAgICBzdGFja0dldCA9IHJlcXVpcmUoJy4vX3N0YWNrR2V0JyksXG4gICAgc3RhY2tIYXMgPSByZXF1aXJlKCcuL19zdGFja0hhcycpLFxuICAgIHN0YWNrU2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgc3RhY2sgY2FjaGUgb2JqZWN0IHRvIHN0b3JlIGtleS12YWx1ZSBwYWlycy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gU3RhY2soZW50cmllcykge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlKGVudHJpZXMpO1xuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBTdGFja2AuXG5TdGFjay5wcm90b3R5cGUuY2xlYXIgPSBzdGFja0NsZWFyO1xuU3RhY2sucHJvdG90eXBlWydkZWxldGUnXSA9IHN0YWNrRGVsZXRlO1xuU3RhY2sucHJvdG90eXBlLmdldCA9IHN0YWNrR2V0O1xuU3RhY2sucHJvdG90eXBlLmhhcyA9IHN0YWNrSGFzO1xuU3RhY2sucHJvdG90eXBlLnNldCA9IHN0YWNrU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0YWNrO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2RlZmluZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnblZhbHVlO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgVWludDhBcnJheSA9IHJvb3QuVWludDhBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBVaW50OEFycmF5O1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weUFycmF5O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDcmVhdGU7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJnO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBiYXNlQ3JlYXRlID0gcmVxdWlyZSgnLi9fYmFzZUNyZWF0ZScpLFxuICAgIGdldFByb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2dldFByb3RvdHlwZScpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKTtcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVPYmplY3Qob2JqZWN0KSB7XG4gIHJldHVybiAodHlwZW9mIG9iamVjdC5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmICFpc1Byb3RvdHlwZShvYmplY3QpKVxuICAgID8gYmFzZUNyZWF0ZShnZXRQcm90b3R5cGUob2JqZWN0KSlcbiAgICA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZU9iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0TGlrZTtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcmd1bWVudHNgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGBhcmd1bWVudHNgIG9iamVjdCxcbiAqL1xuZnVuY3Rpb24gYmFzZUlzQXJndW1lbnRzKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFyZ3NUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzQXJndW1lbnRzO1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0xlbmd0aDtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBgZmFsc2VgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMy4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLnN0dWJGYWxzZSk7XG4gKiAvLyA9PiBbZmFsc2UsIGZhbHNlXVxuICovXG5mdW5jdGlvbiBzdHViRmFsc2UoKSB7XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHViRmFsc2U7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKSxcbiAgICBzdHViRmFsc2UgPSByZXF1aXJlKCcuL3N0dWJGYWxzZScpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNCdWZmZXI7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVjdCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQgaXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAocHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhhc093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNlb2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcbiIsInZhciBiYXNlR2V0VGFnID0gcmVxdWlyZSgnLi9fYmFzZUdldFRhZycpLFxuICAgIGlzTGVuZ3RoID0gcmVxdWlyZSgnLi9pc0xlbmd0aCcpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNUeXBlZEFycmF5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VVbmFyeTtcbiIsInZhciBmcmVlR2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgcHJvY2Vzc2AgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVQcm9jZXNzID0gbW9kdWxlRXhwb3J0cyAmJiBmcmVlR2xvYmFsLnByb2Nlc3M7XG5cbi8qKiBVc2VkIHRvIGFjY2VzcyBmYXN0ZXIgTm9kZS5qcyBoZWxwZXJzLiAqL1xudmFyIG5vZGVVdGlsID0gKGZ1bmN0aW9uKCkge1xuICB0cnkge1xuICAgIC8vIFVzZSBgdXRpbC50eXBlc2AgZm9yIE5vZGUuanMgMTArLlxuICAgIHZhciB0eXBlcyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5yZXF1aXJlICYmIGZyZWVNb2R1bGUucmVxdWlyZSgndXRpbCcpLnR5cGVzO1xuXG4gICAgaWYgKHR5cGVzKSB7XG4gICAgICByZXR1cm4gdHlwZXM7XG4gICAgfVxuXG4gICAgLy8gTGVnYWN5IGBwcm9jZXNzLmJpbmRpbmcoJ3V0aWwnKWAgZm9yIE5vZGUuanMgPCAxMC5cbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZyAmJiBmcmVlUHJvY2Vzcy5iaW5kaW5nKCd1dGlsJyk7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vZGVVdGlsO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblZhbHVlO1xuIiwidmFyIGFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduVmFsdWUnKSxcbiAgICBiYXNlQXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19iYXNlQXNzaWduVmFsdWUnKTtcblxuLyoqXG4gKiBDb3BpZXMgcHJvcGVydGllcyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzIHRvIGNvcHkuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdD17fV0gVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgdG8uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBjb3BpZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weU9iamVjdChzb3VyY2UsIHByb3BzLCBvYmplY3QsIGN1c3RvbWl6ZXIpIHtcbiAgdmFyIGlzTmV3ID0gIW9iamVjdDtcbiAgb2JqZWN0IHx8IChvYmplY3QgPSB7fSk7XG5cbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwcm9wcy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIga2V5ID0gcHJvcHNbaW5kZXhdO1xuXG4gICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgPyBjdXN0b21pemVyKG9iamVjdFtrZXldLCBzb3VyY2Vba2V5XSwga2V5LCBvYmplY3QsIHNvdXJjZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gc291cmNlW2tleV07XG4gICAgfVxuICAgIGlmIChpc05ldykge1xuICAgICAgYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFzc2lnblZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBvYmplY3Q7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weU9iamVjdDtcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVRpbWVzO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzSW5kZXg7XG4iLCJ2YXIgYmFzZVRpbWVzID0gcmVxdWlyZSgnLi9fYmFzZVRpbWVzJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIHRoZSBhcnJheS1saWtlIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtib29sZWFufSBpbmhlcml0ZWQgU3BlY2lmeSByZXR1cm5pbmcgaW5oZXJpdGVkIHByb3BlcnR5IG5hbWVzLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYXJyYXlMaWtlS2V5cyh2YWx1ZSwgaW5oZXJpdGVkKSB7XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpLFxuICAgICAgaXNBcmcgPSAhaXNBcnIgJiYgaXNBcmd1bWVudHModmFsdWUpLFxuICAgICAgaXNCdWZmID0gIWlzQXJyICYmICFpc0FyZyAmJiBpc0J1ZmZlcih2YWx1ZSksXG4gICAgICBpc1R5cGUgPSAhaXNBcnIgJiYgIWlzQXJnICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHZhbHVlKSxcbiAgICAgIHNraXBJbmRleGVzID0gaXNBcnIgfHwgaXNBcmcgfHwgaXNCdWZmIHx8IGlzVHlwZSxcbiAgICAgIHJlc3VsdCA9IHNraXBJbmRleGVzID8gYmFzZVRpbWVzKHZhbHVlLmxlbmd0aCwgU3RyaW5nKSA6IFtdLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBrZXkgaW4gdmFsdWUpIHtcbiAgICBpZiAoKGluaGVyaXRlZCB8fCBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5TGlrZUtleXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpLFxuICAgIG5hdGl2ZUtleXNJbiA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXNJbicpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNJbmAgd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5c0luKG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5c0luKG9iamVjdCk7XG4gIH1cbiAgdmFyIGlzUHJvdG8gPSBpc1Byb3RvdHlwZShvYmplY3QpLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmICghKGtleSA9PSAnY29uc3RydWN0b3InICYmIChpc1Byb3RvIHx8ICFoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzSW47XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsInZhciBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGNsb25lQnVmZmVyID0gcmVxdWlyZSgnLi9fY2xvbmVCdWZmZXInKSxcbiAgICBjbG9uZVR5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19jbG9uZVR5cGVkQXJyYXknKSxcbiAgICBjb3B5QXJyYXkgPSByZXF1aXJlKCcuL19jb3B5QXJyYXknKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL2lzUGxhaW5PYmplY3QnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0JyksXG4gICAgdG9QbGFpbk9iamVjdCA9IHJlcXVpcmUoJy4vdG9QbGFpbk9iamVjdCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZU1lcmdlYCBmb3IgYXJyYXlzIGFuZCBvYmplY3RzIHdoaWNoIHBlcmZvcm1zXG4gKiBkZWVwIG1lcmdlcyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBtZXJnZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIG1lcmdlLlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1lcmdlRnVuYyBUaGUgZnVuY3Rpb24gdG8gbWVyZ2UgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZURlZXAob2JqZWN0LCBzb3VyY2UsIGtleSwgc3JjSW5kZXgsIG1lcmdlRnVuYywgY3VzdG9taXplciwgc3RhY2spIHtcbiAgdmFyIG9ialZhbHVlID0gc2FmZUdldChvYmplY3QsIGtleSksXG4gICAgICBzcmNWYWx1ZSA9IHNhZmVHZXQoc291cmNlLCBrZXkpLFxuICAgICAgc3RhY2tlZCA9IHN0YWNrLmdldChzcmNWYWx1ZSk7XG5cbiAgaWYgKHN0YWNrZWQpIHtcbiAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBzdGFja2VkKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgID8gY3VzdG9taXplcihvYmpWYWx1ZSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICA6IHVuZGVmaW5lZDtcblxuICB2YXIgaXNDb21tb24gPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG4gIGlmIChpc0NvbW1vbikge1xuICAgIHZhciBpc0FyciA9IGlzQXJyYXkoc3JjVmFsdWUpLFxuICAgICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgaXNCdWZmZXIoc3JjVmFsdWUpLFxuICAgICAgICBpc1R5cGVkID0gIWlzQXJyICYmICFpc0J1ZmYgJiYgaXNUeXBlZEFycmF5KHNyY1ZhbHVlKTtcblxuICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgaWYgKGlzQXJyIHx8IGlzQnVmZiB8fCBpc1R5cGVkKSB7XG4gICAgICBpZiAoaXNBcnJheShvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBvYmpWYWx1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGlzQXJyYXlMaWtlT2JqZWN0KG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGNvcHlBcnJheShvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0J1ZmYpIHtcbiAgICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICAgICAgbmV3VmFsdWUgPSBjbG9uZUJ1ZmZlcihzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc1R5cGVkKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVUeXBlZEFycmF5KHNyY1ZhbHVlLCB0cnVlKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBuZXdWYWx1ZSA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIGlmIChpc1BsYWluT2JqZWN0KHNyY1ZhbHVlKSB8fCBpc0FyZ3VtZW50cyhzcmNWYWx1ZSkpIHtcbiAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICBpZiAoaXNBcmd1bWVudHMob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gdG9QbGFpbk9iamVjdChvYmpWYWx1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmICghaXNPYmplY3Qob2JqVmFsdWUpIHx8IGlzRnVuY3Rpb24ob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gaW5pdENsb25lT2JqZWN0KHNyY1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxuICBpZiAoaXNDb21tb24pIHtcbiAgICAvLyBSZWN1cnNpdmVseSBtZXJnZSBvYmplY3RzIGFuZCBhcnJheXMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBzdGFjay5zZXQoc3JjVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICBtZXJnZUZ1bmMobmV3VmFsdWUsIHNyY1ZhbHVlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spO1xuICAgIHN0YWNrWydkZWxldGUnXShzcmNWYWx1ZSk7XG4gIH1cbiAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNZXJnZURlZXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGFzc2lnbk1lcmdlVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25NZXJnZVZhbHVlJyksXG4gICAgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBiYXNlTWVyZ2VEZWVwID0gcmVxdWlyZSgnLi9fYmFzZU1lcmdlRGVlcCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyksXG4gICAgc2FmZUdldCA9IHJlcXVpcmUoJy4vX3NhZmVHZXQnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tZXJnZWAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtudW1iZXJ9IHNyY0luZGV4IFRoZSBpbmRleCBvZiBgc291cmNlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIG1lcmdlZCB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIHNvdXJjZSB2YWx1ZXMgYW5kIHRoZWlyIG1lcmdlZFxuICogIGNvdW50ZXJwYXJ0cy5cbiAqL1xuZnVuY3Rpb24gYmFzZU1lcmdlKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCwgY3VzdG9taXplciwgc3RhY2spIHtcbiAgaWYgKG9iamVjdCA9PT0gc291cmNlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGJhc2VGb3Ioc291cmNlLCBmdW5jdGlvbihzcmNWYWx1ZSwga2V5KSB7XG4gICAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgICBpZiAoaXNPYmplY3Qoc3JjVmFsdWUpKSB7XG4gICAgICBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBiYXNlTWVyZ2UsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICAgID8gY3VzdG9taXplcihzYWZlR2V0KG9iamVjdCwga2V5KSwgc3JjVmFsdWUsIChrZXkgKyAnJyksIG9iamVjdCwgc291cmNlLCBzdGFjaylcbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gc3JjVmFsdWU7XG4gICAgICB9XG4gICAgICBhc3NpZ25NZXJnZVZhbHVlKG9iamVjdCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgfVxuICB9LCBrZXlzSW4pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNZXJnZTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaWRlbnRpdHk7XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCJ2YXIgYXBwbHkgPSByZXF1aXJlKCcuL19hcHBseScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJSZXN0O1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBmcm9tIHRoZSBuZXcgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBjb25zdGFudCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBfLnRpbWVzKDIsIF8uY29uc3RhbnQoeyAnYSc6IDEgfSkpO1xuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHMpO1xuICogLy8gPT4gW3sgJ2EnOiAxIH0sIHsgJ2EnOiAxIH1dXG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0c1swXSA9PT0gb2JqZWN0c1sxXSk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGNvbnN0YW50KHZhbHVlKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29uc3RhbnQ7XG4iLCJ2YXIgY29uc3RhbnQgPSByZXF1aXJlKCcuL2NvbnN0YW50JyksXG4gICAgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAnd3JpdGFibGUnOiB0cnVlXG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0VG9TdHJpbmc7XG4iLCIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2hvcnRPdXQ7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpLFxuICAgIG92ZXJSZXN0ID0gcmVxdWlyZSgnLi9fb3ZlclJlc3QnKSxcbiAgICBzZXRUb1N0cmluZyA9IHJlcXVpcmUoJy4vX3NldFRvU3RyaW5nJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmVzdGAgd2hpY2ggZG9lc24ndCB2YWxpZGF0ZSBvciBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VSZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gIHJldHVybiBzZXRUb1N0cmluZyhvdmVyUmVzdChmdW5jLCBzdGFydCwgaWRlbnRpdHkpLCBmdW5jICsgJycpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VSZXN0O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBiYXNlUmVzdCA9IHJlcXVpcmUoJy4vX2Jhc2VSZXN0JyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUFzc2lnbmVyO1xuIiwidmFyIGJhc2VNZXJnZSA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZScpLFxuICAgIGNyZWF0ZUFzc2lnbmVyID0gcmVxdWlyZSgnLi9fY3JlYXRlQXNzaWduZXInKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbmAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgbWVyZ2VzIG93biBhbmRcbiAqIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIG9mIHNvdXJjZSBvYmplY3RzIGludG8gdGhlXG4gKiBkZXN0aW5hdGlvbiBvYmplY3QuIFNvdXJjZSBwcm9wZXJ0aWVzIHRoYXQgcmVzb2x2ZSB0byBgdW5kZWZpbmVkYCBhcmVcbiAqIHNraXBwZWQgaWYgYSBkZXN0aW5hdGlvbiB2YWx1ZSBleGlzdHMuIEFycmF5IGFuZCBwbGFpbiBvYmplY3QgcHJvcGVydGllc1xuICogYXJlIG1lcmdlZCByZWN1cnNpdmVseS4gT3RoZXIgb2JqZWN0cyBhbmQgdmFsdWUgdHlwZXMgYXJlIG92ZXJyaWRkZW4gYnlcbiAqIGFzc2lnbm1lbnQuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC4gU3Vic2VxdWVudFxuICogc291cmNlcyBvdmVyd3JpdGUgcHJvcGVydHkgYXNzaWdubWVudHMgb2YgcHJldmlvdXMgc291cmNlcy5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuNS4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0gey4uLk9iamVjdH0gW3NvdXJjZXNdIFRoZSBzb3VyY2Ugb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7XG4gKiAgICdhJzogW3sgJ2InOiAyIH0sIHsgJ2QnOiA0IH1dXG4gKiB9O1xuICpcbiAqIHZhciBvdGhlciA9IHtcbiAqICAgJ2EnOiBbeyAnYyc6IDMgfSwgeyAnZSc6IDUgfV1cbiAqIH07XG4gKlxuICogXy5tZXJnZShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IHsgJ2EnOiBbeyAnYic6IDIsICdjJzogMyB9LCB7ICdkJzogNCwgJ2UnOiA1IH1dIH1cbiAqL1xudmFyIG1lcmdlID0gY3JlYXRlQXNzaWduZXIoZnVuY3Rpb24ob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KSB7XG4gIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgpO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVyZ2U7XG4iLCJcbmludGVyZmFjZSBJbmplY3RMaW5rT3B0aW9ucyB7XG4gIHJlbDogc3RyaW5nXG4gIGhyZWY6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgaW5qZWN0TGluayA9KG9wdGlvbnM6IEluamVjdExpbmtPcHRpb25zKSA9PiB7XG4gIGNvbnN0IGhlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xuICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpXG5cbiAgT2JqZWN0LmVudHJpZXMob3B0aW9ucykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiBsaW5rLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKSlcblxuICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xufVxuIiwiaW1wb3J0IHsgQ2FsbGJhY2sgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IHsgaXNWYWx1ZSB9IGZyb20gXCIuL2luZGV4XCI7XG5cbnR5cGUgVmlzaXRvciA9IENhbGxiYWNrPFtQcm9wZXJ0eUtleSwgdW5rbm93biwgc3RyaW5nXT5cblxuZXhwb3J0IGNvbnN0IGl0ZXJhdG9yID0gKGlucHV0OiB1bmtub3duLCB2aXNpdG9yOiBWaXNpdG9yLCBwYXRoPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG5cbiAgICByZXR1cm4gaW5wdXQubWFwKChlbCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IG5ld1BhdGggPSBbcGF0aCwgaW5kZXhdLmZpbHRlcihpc1ZhbHVlKS5qb2luKCcuJylcbiAgICAgIHJldHVybiBpdGVyYXRvcih2aXNpdG9yKGluZGV4LCBlbCwgbmV3UGF0aCksIHZpc2l0b3IsIG5ld1BhdGgpXG4gICAgfSlcbiAgfVxuXG4gIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnICYmIGlucHV0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGlucHV0KS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBuZXdQYXRoID0gW3BhdGgsIGtleV0uZmlsdGVyKGlzVmFsdWUpLmpvaW4oJy4nKVxuICAgICAgYWNjW2tleV0gPSBpdGVyYXRvcih2aXNpdG9yKGtleSwgdmFsdWUsIG5ld1BhdGgpLCB2aXNpdG9yLCBuZXdQYXRoKVxuXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSwge30gYXMgYW55KVxuICB9XG5cbiAgcmV0dXJuIGlucHV0XG59XG4iLCJpbXBvcnQgeyBBbnlPYmplY3QgfSBmcm9tICcuL3R5cGVzJ1xuaW1wb3J0IGxvZGFzaE1lcmdlIGZyb20gJ2xvZGFzaC9tZXJnZSdcblxuZXhwb3J0IGNvbnN0IGlzRW1wdHlWYWx1ZSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIG51bGwgfCB1bmRlZmluZWQgPT5cbiAgIXZhbHVlICYmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuZXhwb3J0IGNvbnN0IGlzVmFsdWUgPSA8VD4odmFsdWU6IFQpOiB2YWx1ZSBpcyBFeGNsdWRlPFQsIG51bGwgfCB1bmRlZmluZWQ+ID0+ICFpc0VtcHR5VmFsdWUodmFsdWUpXG5leHBvcnQgY29uc3Qgbm9vcCA9ICgpID0+IHVuZGVmaW5lZFxuXG5leHBvcnQgY29uc3QgaXNQcmltaXRpdmUgPSAodmFsdWU6IHVua25vd24pOiBib29sZWFuID0+XG4gICh0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJykgfHwgdmFsdWUgPT09IG51bGxcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNvbnN0YW50cyA9IDxLIGV4dGVuZHMgc3RyaW5nPiguLi5jb25zdGFudHM6IEtbXSkgPT4ge1xuICByZXR1cm4gY29uc3RhbnRzLnJlZHVjZTx7IFtQIGluIEtdOiBQIH0+KChhY2MsIGNvbnN0YW50KSA9PiB7XG4gICAgYWNjW2NvbnN0YW50XSA9IGNvbnN0YW50XG4gICAgcmV0dXJuIGFjY1xuICB9LCB7fSBhcyB7IFtQIGluIEtdOiBQIH0pXG59XG5cbmV4cG9ydCBjb25zdCBwaWNrID0gPFRWYWx1ZSBleHRlbmRzIEFueU9iamVjdD4ob2JqOiBUVmFsdWUsIC4uLnByb3BzOiAoa2V5b2YgVFZhbHVlKVtdKSA9PiB7XG4gIHJldHVybiBwcm9wcy5yZWR1Y2UoKHJlc3VsdCwgcHJvcCkgPT4ge1xuICAgIHJlc3VsdFtwcm9wXSA9IG9ialtwcm9wXVxuICAgIHJldHVybiByZXN1bHRcbiAgfSwge30gYXMgYW55KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb21pdDxUIGV4dGVuZHMgQW55T2JqZWN0LCBQIGV4dGVuZHMgc3RyaW5nW10+KG9iajogVCwgLi4ucHJvcHM6IFApOiBPbWl0PFQsIFBbbnVtYmVyXT4ge1xuICBjb25zdCByZXN1bHQgPSB7IC4uLm9iaiB9XG4gIHByb3BzLmZvckVhY2gocHJvcCA9PiB7XG4gICAgZGVsZXRlIHJlc3VsdFtwcm9wXVxuICB9KVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBnZXQgPSAob2JqOiBBbnlPYmplY3QsIHBhdGg6IHN0cmluZywgZGVmVmFsdWU/OiB1bmtub3duKTogYW55ID0+IHtcbiAgaWYgKCFwYXRoKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHBhdGhBcnJheSA9IChBcnJheS5pc0FycmF5KHBhdGgpID8gcGF0aCA6IHBhdGgubWF0Y2goLyhbXlsuXFxdXSkrL2cpKSBhcyBzdHJpbmdbXVxuICBjb25zdCByZXN1bHQgPSBwYXRoQXJyYXkucmVkdWNlKChwcmV2T2JqOiBBbnlPYmplY3QsIGtleTogc3RyaW5nKSA9PiBwcmV2T2JqICYmIHByZXZPYmpba2V5XSwgb2JqKVxuICAvLyBJZiBmb3VuZCB2YWx1ZSBpcyB1bmRlZmluZWQgcmV0dXJuIGRlZmF1bHQgdmFsdWU7IG90aGVyd2lzZSByZXR1cm4gdGhlIHZhbHVlXG4gIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IGRlZlZhbHVlIDogcmVzdWx0XG59XG5cbmV4cG9ydCBjb25zdCBzZXQgPSAob2JqOiBBbnlPYmplY3QsIHBhdGg6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHtcbiAgY29uc3QgcGF0aEFycmF5ID0gKEFycmF5LmlzQXJyYXkocGF0aCkgPyBwYXRoIDogcGF0aC5tYXRjaCgvKFteWy5cXF1dKSsvZykpIGFzIHN0cmluZ1tdXG5cbiAgcmV0dXJuIHBhdGhBcnJheS5yZWR1Y2UoKGFjYywga2V5LCBpKSA9PiB7XG4gICAgaWYgKGFjY1trZXldID09PSB1bmRlZmluZWQpIGFjY1trZXldID0ge31cbiAgICBpZiAoaSA9PT0gcGF0aEFycmF5Lmxlbmd0aCAtIDEpIGFjY1trZXldID0gdmFsdWVcbiAgICByZXR1cm4gYWNjW2tleV1cbiAgfSwgb2JqKVxufVxuXG5leHBvcnQgY29uc3QgaGV4VG9SZ2IgPSAoaGV4OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgY2hhcnMgPSBoZXguc2xpY2UoMSlcblxuICBpZiAoY2hhcnMubGVuZ3RoID09PSAzKSB7XG4gICAgaGV4ID0gY2hhcnNcbiAgICAgIC5zcGxpdCgnJylcbiAgICAgIC5tYXAodmFsID0+IGAke3ZhbH0ke3ZhbH1gKVxuICAgICAgLmpvaW4oJycpXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSAvXiM/KFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkoW2EtZlxcZF17Mn0pJC9pLmV4ZWMoaGV4KVxuXG4gIHJldHVybiByZXN1bHRcbiAgICA/IHtcbiAgICAgICAgcjogcGFyc2VJbnQocmVzdWx0WzFdLCAxNiksXG4gICAgICAgIGc6IHBhcnNlSW50KHJlc3VsdFsyXSwgMTYpLFxuICAgICAgICBiOiBwYXJzZUludChyZXN1bHRbM10sIDE2KVxuICAgICAgfVxuICAgIDogdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCBpc0pzb25TYW1lID0gKC4uLnZhbHVlczogdW5rbm93bltdKSA9PiB7XG4gIHJldHVybiB2YWx1ZXMubWFwKHZhbHVlID0+IEpTT04uc3RyaW5naWZ5KHZhbHVlKSkuZXZlcnkoKHZhbCwgXywgYXJyKSA9PiB2YWwgPT09IGFyclswXSlcbn1cblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRUZW1wbGF0ZSA9IChkYXRhOiBBbnlPYmplY3QpID0+ICdpZCcgaW4gZGF0YSAmJiAncm9vdCcgaW4gZGF0YVxuXG5leHBvcnQgY29uc3QgcmdiVG9SZ2JhID0gKHJnYjogc3RyaW5nLCBhbHBoYSA9IDEpOiBzdHJpbmcgPT4gcmdiLnJlcGxhY2UoJyknLCBgLCAke2FscGhhfSlgKS5yZXBsYWNlKCdyZ2InLCAncmdiYScpXG5cbmV4cG9ydCBjb25zdCBtZXJnZSA9IGxvZGFzaE1lcmdlXG5cbmV4cG9ydCBjb25zdCBkZXZpY2VzID0gWydkZXNrdG9wJywgJ2xhcHRvcCcsICd0YWJsZXQnLCAnbW9iaWxlJ10gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IEJSRUFLUE9JTlRTID0ge1xuICBtb2JpbGU6IDMyMCxcbiAgdGFibGV0OiA3NjgsXG4gIGxhcHRvcDogMTAyNCxcbiAgZGVza3RvcDogMTkyMFxufSBhcyBjb25zdFxuXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJ1xuZXhwb3J0ICogZnJvbSAnLi9kb20nXG5leHBvcnQgKiBmcm9tICcuL2l0ZXJhdG9yJ1xuZXhwb3J0ICogZnJvbSAnLi9ldmVudEVtaXR0ZXInXG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdwcmVhY3QvY29tcGF0J1xuaW1wb3J0IHsgQ2FsbGJhY2sgfSBmcm9tICdAYWRzdG9yZS91dGlscydcblxuaW50ZXJmYWNlIE9wdGlvbnMge1xuICBkZWxheT86IG51bWJlclxuICBvbk9wZW4/OiBDYWxsYmFjayAvLyDQodGA0LDQsdCw0YLRi9Cy0LDQtdGCINC60L7Qs9C00LAg0L7RgtC60YDRi9C70Lgg0YDRg9C60LDQvNC4XG4gIG9uQXV0b09wZW4/OiBDYWxsYmFja1xufVxuXG5leHBvcnQgY29uc3QgdXNlR2lmdE9wZW4gPSAoeyBkZWxheSwgb25PcGVuLCBvbkF1dG9PcGVuIH06IE9wdGlvbnMpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0aW1lclJlZiA9IHVzZVJlZihudWxsKVxuXG4gIGNvbnN0IGNsZWFyID0gKHRpbWVyOiB1bmtub3duKSA9PiB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpXG4gICAgdGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IG9uVG9nZ2xlID0gKCkgPT4ge1xuICAgIGNsZWFyKHRpbWVyUmVmLmN1cnJlbnQpXG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldElzT3Blbih0cnVlKVxuICAgICAgb25BdXRvT3BlbiAmJiBvbkF1dG9PcGVuKClcbiAgICB9LCBkZWxheSB8fCAxMDAwKVxuXG4gICAgcmV0dXJuICgpID0+IGNsZWFyKHRpbWVyUmVmLmN1cnJlbnQpXG4gIH0sIFtkZWxheV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNPcGVuICYmICF0aW1lclJlZi5jdXJyZW50KSB7XG4gICAgICBvbk9wZW4gJiYgb25PcGVuKClcbiAgICB9XG4gIH0sIFtpc09wZW5dKVxuXG4gIHJldHVybiB7XG4gICAgaXNPcGVuLFxuICAgIG9uVG9nZ2xlXG4gIH1cbn1cbiIsImltcG9ydHtvcHRpb25zIGFzIHJ9ZnJvbVwicHJlYWN0XCI7ZXhwb3J0e0ZyYWdtZW50fWZyb21cInByZWFjdFwiO3ZhciBfPTA7ZnVuY3Rpb24gbyhvLGUsbix0LGYsbCl7dmFyIHMsdSxhPXt9O2Zvcih1IGluIGUpXCJyZWZcIj09dT9zPWVbdV06YVt1XT1lW3VdO3ZhciBpPXt0eXBlOm8scHJvcHM6YSxrZXk6bixyZWY6cyxfX2s6bnVsbCxfXzpudWxsLF9fYjowLF9fZTpudWxsLF9fZDp2b2lkIDAsX19jOm51bGwsX19oOm51bGwsY29uc3RydWN0b3I6dm9pZCAwLF9fdjotLV8sX19zb3VyY2U6ZixfX3NlbGY6bH07aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgbyYmKHM9by5kZWZhdWx0UHJvcHMpKWZvcih1IGluIHMpdm9pZCAwPT09YVt1XSYmKGFbdV09c1t1XSk7cmV0dXJuIHIudm5vZGUmJnIudm5vZGUoaSksaX1leHBvcnR7byBhcyBqc3gsbyBhcyBqc3hERVYsbyBhcyBqc3hzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWpzeFJ1bnRpbWUubW9kdWxlLmpzLm1hcFxuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gJ3ByZWFjdCdcblxuZXhwb3J0IGNvbnN0IFN0YXRlID0gY3JlYXRlQ29udGV4dCgpXG5cbmNvbnN0IFN0YXRlQ29udGV4dCA9ICh7IGNoaWxkcmVuLCB2YWx1ZSB9KSA9PiB7XG4gIHJldHVybiA8U3RhdGUuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9TdGF0ZS5Qcm92aWRlcj5cbn1cblxuZXhwb3J0IGRlZmF1bHQgU3RhdGVDb250ZXh0XG4iLCJpbXBvcnQgeyBDb21wb25lbnRDaGlsZCwgQ29udGFpbmVyTm9kZSwgcmVuZGVyIGFzIHByZWFjdFJlbmRlciwgY2xvbmVFbGVtZW50IH0gZnJvbSAncHJlYWN0J1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9TdGF0ZUNvbnRleHQnXG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgaWQ6IHN0cmluZ1xuICB0YXJnZXQ6IENvbnRhaW5lck5vZGVcbiAgc3RhdGU/OiB1bmtub3duXG4gIHJlZj86IHVua25vd25cbn1cblxuZXhwb3J0IGNvbnN0IHJlbmRlciA9XG4gICh2Tm9kZTogQ29tcG9uZW50Q2hpbGQpID0+XG4gIGFzeW5jICh7IHRhcmdldCwgaWQsIHJlZiwgc3RhdGUgfTogT3B0aW9ucykgPT4ge1xuICAgIGlmICghKCdSZXNpemVPYnNlcnZlcicgaW4gd2luZG93KSkge1xuICAgICAgY29uc3QgbW9kdWxlID0gYXdhaXQgaW1wb3J0KCdAanVnZ2xlL3Jlc2l6ZS1vYnNlcnZlcicpXG4gICAgICB3aW5kb3cuUmVzaXplT2JzZXJ2ZXIgPSBtb2R1bGUuUmVzaXplT2JzZXJ2ZXJcbiAgICB9XG5cbiAgICByZXR1cm4gcHJlYWN0UmVuZGVyKFxuICAgICAgPFN0YXRlQ29udGV4dCB2YWx1ZT17c3RhdGV9PntjbG9uZUVsZW1lbnQodk5vZGUsIHsgcmVmLCBpZCB9KX08L1N0YXRlQ29udGV4dD4sXG4gICAgICB0YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICApXG4gIH1cbiIsImltcG9ydCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicHJlYWN0L2NvbXBhdFwiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi4vU3RhdGVDb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VDdXJyZW50U3RhdGUgPSA8VFZhbHVlID0gdW5rbm93bj4oKSA9PiB1c2VDb250ZXh0PFRWYWx1ZT4oU3RhdGUpXG4iLCJpbXBvcnQgeyBBbnlPYmplY3QsIERldmljZSwgZGV2aWNlcywgRXh0cmFjdFJ1bGVzLCBpc1ZhbHVlLCBpdGVyYXRvciwgTGF5ZXIsIG1lcmdlLCBvbWl0LCBSdWxlIH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyBBbnlTdGF0ZSB9IGZyb20gJy4uL3Byb21vcy9TaW1wbGVHaWZ0L3R5cGVzJ1xuXG5jb25zdCBpc1ZhbGlkTGF5ZXIgPSAoc3RhdGU6IEFueU9iamVjdCA9IHt9KTogc3RhdGUgaXMgTGF5ZXIgPT5cbiAgdHlwZW9mIHN0YXRlID09PSAnb2JqZWN0JyAmJiBpc1ZhbHVlKHN0YXRlKSAmJiBkZXZpY2VzLmV2ZXJ5KGRldmljZSA9PiBkZXZpY2UgaW4gc3RhdGUpXG5cbmV4cG9ydCBjb25zdCBnZXRSdWxlcyA9IDxUU3RhdGUgZXh0ZW5kcyBBbnlTdGF0ZSwgVERldmljZSBleHRlbmRzIERldmljZSA9ICdkZXNrdG9wJz4oXG4gIHN0YXRlOiBUU3RhdGUsXG4gIGRldmljZTogVERldmljZVxuKTogRXh0cmFjdFJ1bGVzPFRTdGF0ZSwgVERldmljZT4gPT4ge1xuICBpZiAoIXN0YXRlKSByZXR1cm4gc3RhdGVcblxuICByZXR1cm4gaXRlcmF0b3Ioc3RhdGUsIChfa2V5LCB2YWx1ZTogYW55KSA9PiB7XG4gICAgaWYgKGlzVmFsaWRMYXllcih2YWx1ZSkpIHtcbiAgICAgIGNvbnN0IHJlc3VsdFJ1bGVzID0gdmFsdWVbZGV2aWNlXVxuICAgICAgaWYgKCdwYXJlbnQnIGluIHJlc3VsdFJ1bGVzICYmIGlzVmFsdWUocmVzdWx0UnVsZXMucGFyZW50KSkge1xuICAgICAgICByZXR1cm4geyAuLi52YWx1ZVtyZXN1bHRSdWxlcy5wYXJlbnRdLCAuLi5vbWl0KHJlc3VsdFJ1bGVzLCAncGFyZW50JykgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdFJ1bGVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlXG4gIH0pIGFzIEV4dHJhY3RSdWxlczxUU3RhdGUsIFREZXZpY2U+XG59XG4iLCJpbXBvcnQgeyBEZXZpY2UgfSBmcm9tICdAYWRzdG9yZS91dGlscydcbmltcG9ydCB7IGdldFJ1bGVzIH0gZnJvbSAnLi4vaGVscGVycy9nZXREZXZpY2VTdGF0ZSdcbmltcG9ydCB7IEFueVN0YXRlIH0gZnJvbSAnLi4vcHJvbW9zL1NpbXBsZUdpZnQvdHlwZXMnXG5cbmV4cG9ydCBjb25zdCB1c2VHZXRSdWxlcyA9IDxUU3RhdGUgZXh0ZW5kcyBBbnlTdGF0ZSwgVERldmljZSBleHRlbmRzIERldmljZT4oc3RhdGU6IFRTdGF0ZSwgZGV2aWNlOiBURGV2aWNlKSA9PlxuICBnZXRSdWxlczxUU3RhdGUsIFREZXZpY2U+KHN0YXRlLCBkZXZpY2UpXG4iLCJpbXBvcnQgeyBCUkVBS1BPSU5UUywgRGV2aWNlIH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCB7IE11dGFibGVSZWYgfSBmcm9tICdwcmVhY3QvaG9va3MnXG5cbmludGVyZmFjZSBPcHRpb25zIHtcbiAgaWQ6IHN0cmluZ1xuICB0YXJnZXRSZWY6IE11dGFibGVSZWY8SFRNTERpdkVsZW1lbnQ+XG4gIC8qKlxuICAgKiBQcm9tbyDQstGB0YLRgNCw0LjQstCw0LXRgtGB0Y8g0LIg0YDQsNC30L3Ri9C1IERPTSDQuCDQvNGLINC90LUg0LfQvdCw0LXQvCDRgNCw0LfQvNC10YAg0LrQsNC60L7Qs9C+INC60L7QvdGC0LXQudC90LXRgNCwXG4gICAqINGP0LLQu9GP0LXRgtGB0Y8g0L3Rg9C20L3Ri9C8LiDQndCw0L/RgNC40LzQtdGAIEdpZnQqINC30LDQvdC40LzQsNC10YIg0LLRgdC10LPQviAzMHB4LCDQuCDQvdC10L7QsdGF0L7QtNC40LzRi9C5INC60L7QvdGC0LXQudC90LXRgFxuICAgKiDQvNC+0LbQtdGCINC90LDRhdC+0LTQuNGC0YzRgdGPINCz0L7RgNCw0LfQtNC+INCy0YvRiNC1LlxuICAgKi9cbiAgcGFyZW50S2V5Pzogc3RyaW5nXG4gIGJyZWFrcG9pbnRzPzogdHlwZW9mIEJSRUFLUE9JTlRTXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDb250YWluZXJEZXZpY2UgPSAoe1xuICBpZCxcbiAgdGFyZ2V0UmVmLFxuICBwYXJlbnRLZXkgPSAnZGV2aWNlLWNvbnRhaW5lcicsXG4gIGJyZWFrcG9pbnRzID0gQlJFQUtQT0lOVFNcbn06IE9wdGlvbnMpID0+IHtcbiAgY29uc3QgW2RldmljZSwgc2V0RGV2aWNlXSA9IHVzZVN0YXRlPERldmljZT4oJ2Rlc2t0b3AnKVxuXG4gIGNvbnN0IGNoZWNrRGV2aWNlID0gKHBhcmVudDogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBwYXJlbnRXaWR0aCA9IHBhcmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCB8fCAwXG4gICAgY29uc3Qgc29ydGVkQnJlYWtwb2ludHMgPSBPYmplY3QuZW50cmllcyh7IC4uLmJyZWFrcG9pbnRzIH0pLnNvcnQoKFtfMSwgdmFsdWVBXSwgW18yLCB2YWx1ZUJdKSA9PiB2YWx1ZUEgLSB2YWx1ZUIpXG5cbiAgICBjb25zdCBmaW5kRGV2aWNlID1cbiAgICAgIChzb3J0ZWRCcmVha3BvaW50cy5maW5kKChbXzEsIHZhbHVlXSwgaW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgW18yLCBuZXh0VmFsdWVdID0gc29ydGVkQnJlYWtwb2ludHNbaW5kZXggKyAxXSB8fCBbXVxuXG4gICAgICAgIHJldHVybiBwYXJlbnRXaWR0aCA+PSB2YWx1ZSAmJiBwYXJlbnRXaWR0aCA8IG5leHRWYWx1ZVxuICAgICAgfSk/LlswXSBhcyBEZXZpY2UpIHx8ICdkZXNrdG9wJ1xuXG4gICAgc2V0RGV2aWNlKGZpbmREZXZpY2UpXG4gIH1cblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSB0YXJnZXRSZWYuY3VycmVudC5jbG9zZXN0KGBbZGF0YS0ke3BhcmVudEtleX09JyR7aWR9J11gKSB8fCBkb2N1bWVudC5ib2R5XG5cbiAgICBpZiAocGFyZW50RWxlbWVudCkge1xuICAgICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4gY2hlY2tEZXZpY2UocGFyZW50RWxlbWVudCkpXG4gICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKHBhcmVudEVsZW1lbnQpXG5cbiAgICAgIGNoZWNrRGV2aWNlKHBhcmVudEVsZW1lbnQpXG4gICAgfVxuICB9LCBbXSlcblxuICByZXR1cm4gZGV2aWNlXG59XG4iLCJpbXBvcnQgeyBBbnlPYmplY3QsIGRldmljZXMsIEZpdE9wdGlvbiwgaGV4VG9SZ2IsIGlzRW1wdHlWYWx1ZSwgaXNWYWx1ZSwgcmdiVG9SZ2JhIH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyBFbWl0dGVyVHlwZSB9IGZyb20gJ3NyYy9yZW5kZXJEcml2ZXInXG5pbXBvcnQgeyBpbmplY3RTdHlsZVJ1bGVzLCBTdHlsZVJ1bGVzIH0gZnJvbSAnc3JjL3V0aWxzL2luamVjdFN0eWxlUnVsZXMnXG5pbXBvcnQgeyBpc1ZhbGlkU3R5bGVLZXkgfSBmcm9tICcuL2lzVmFsaWRTdHlsZUtleSdcblxuLyoqXG4gKiDQn9C70LDQs9C40L0g0L/RgNC40LzQtdC90Y/QtdGCINC/0YDQsNCy0LjQu9CwOiDRgdGC0LjQu9C4LCBpbm5lclRleHQgLi4uXG4gKiDQldGB0LvQuCDQutC+0L3RgtC10L3RgtCwINC90LXRgiwg0YLQviDQndC+0LTQsCDRgdC60YDRi9Cy0LDQtdGC0YHRj1xuICovXG5cbnR5cGUgQ3VzdG9tU3R5bGVzID0gUGFydGlhbDxcbiAgT21pdDxTdHlsZVJ1bGVzLCAnYm9yZGVyV2lkdGgnIHwgJ21pbkhlaWdodCcgfCAnbWluV2lkdGgnIHwgJ2ZvbnRTaXplJz4gJiB7XG4gICAgbWluSGVpZ2h0OiBudW1iZXJcbiAgICBtaW5XaWR0aDogbnVtYmVyXG4gICAgZm9udFNpemU6IG51bWJlclxuICB9XG4+XG5cbmRlY2xhcmUgbW9kdWxlICdzcmMvcmVuZGVyRHJpdmVyJyB7XG4gIGludGVyZmFjZSBSZW5kZXJEcml2ZXJSdWxlIGV4dGVuZHMgQ3VzdG9tU3R5bGVzIHtcbiAgICBpbm5lckhUTUw/OiBzdHJpbmdcbiAgICBpbm5lclRleHQ/OiBzdHJpbmdcbiAgICBjb3JuZXI/OiBudW1iZXJcbiAgICBiYWNrZ3JvdW5kRml0PzogRml0T3B0aW9uXG4gICAgYmFja2dyb3VuZENvbG9yT3BhY2l0eT86IG51bWJlclxuICAgIGlzQm9sZD86IGJvb2xlYW5cbiAgICBpc0l0YWxpYz86IGJvb2xlYW5cbiAgICBpc1Rocm91Z2g/OiBib29sZWFuXG4gICAgJGF0dHJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPlxuICB9XG59XG5cbmNvbnN0IHdyYXBUbyA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCB1bnRpbDogJyUnIHwgJ3B4JykgPT4gYCR7dmFsdWV9JHt1bnRpbH1gXG5cbmNvbnN0IHRvUHggPSAoa2V5OiBzdHJpbmcpID0+IGtleS5zdGFydHNXaXRoKCdweF8nKVxuY29uc3QgdG9QZXJjZW50ID0gKGtleTogc3RyaW5nKSA9PiBrZXkuc3RhcnRzV2l0aCgncGVyY2VudF8nKVxuXG5jb25zdCBmb3JtYXRSdWxlID0gKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSA9PiB7XG4gIGxldCBuZXdLZXkgPSBrZXlcbiAgbGV0IG5ld1ZhbHVlID0gdmFsdWVcblxuICBpZiAodG9QeChuZXdLZXkpKSB7XG4gICAgbmV3S2V5ID0gbmV3S2V5LnJlcGxhY2UoJ3B4XycsICcnKVxuICAgIG5ld1ZhbHVlID0gd3JhcFRvKHZhbHVlLCAncHgnKVxuICB9XG4gIGlmICh0b1BlcmNlbnQobmV3S2V5KSkge1xuICAgIG5ld0tleSA9IG5ld0tleS5yZXBsYWNlKCdwZXJjZW50XycsICcnKVxuICAgIG5ld1ZhbHVlID0gd3JhcFRvKHZhbHVlLCAnJScpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGtleTogbmV3S2V5LFxuICAgIHZhbHVlOiBuZXdWYWx1ZVxuICB9XG59XG5cbmNvbnN0IERFRkFVTFRfVE9fUFggPSBbXG4gICdib3JkZXJXaWR0aCcsXG4gICdib3JkZXJMZWZ0V2lkdGgnLFxuICAnYm9yZGVyUmlnaHRXaWR0aCcsXG4gICdib3JkZXJUb3BXaWR0aCcsXG4gICdib3JkZXJCb3R0b21XaWR0aCcsXG4gICdtaW5IZWlnaHQnLFxuICAnbWluV2lkdGgnLFxuICAnbWF4V2lkdGgnLFxuICAnbWF4SGVpZ2h0JyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2hlaWdodCcsXG4gICd3aWR0aCcsXG4gICdsZXR0ZXJTcGFjaW5nJyxcbiAgJ2ZvbnRTaXplJyxcbiAgJ2xlZnQnLFxuICAncmlnaHQnLFxuICAndG9wJyxcbiAgJ2JvdHRvbScsXG4gICdtYXJnaW5Ub3AnLFxuICAnbWFyZ2luQm90dG9tJyxcbiAgJ21hcmdpbkxlZnQnLFxuICAnbWFyZ2luUmlnaHQnLFxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nQm90dG9tJyxcbiAgJ3BhZGRpbmdMZWZ0JyxcbiAgJ3BhZGRpbmdSaWdodCdcbl1cblxuZXhwb3J0IGNvbnN0IHBhcnNlUnVsZXMgPSAocnVsZXM6IEFueU9iamVjdCwgbGF5ZXI/OiBzdHJpbmcpID0+IHtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHJ1bGVzKVxuXG4gIGlmIChrZXlzLmluY2x1ZGVzKCdpbm5lckhUTUwnKSB8fCBrZXlzLmluY2x1ZGVzKCdpbm5lclRleHQnKSkge1xuICAgIGNvbnNvbGUud2FybihgV2FybmluZyEgSW5uZXJIVE1MIGFuZCBpbm5lclRleHQgaXMgZGVwcmVjYXRlZC4gVXNlIFwiY2hpbGRyZW5cIiBwcm9wZXJ0eS5gLCBsYXllcilcbiAgfVxuXG4gIGlmICh0eXBlb2YgcnVsZXMgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHJ1bGVzXG4gIH1cblxuICBpZiAoJ3R5cG9ncmFwaHknIGluIHJ1bGVzICYmICdhY2NlbnRUeXBvZ3JhcGh5JyBpbiBydWxlcykge1xuICAgIGNvbnN0IHR5cG9ncmFwaHkgPSBydWxlcy50eXBvZ3JhcGh5XG4gICAgY29uc3QgYWNjZW50VHlwb2dyYXBoeSA9IHJ1bGVzLmFjY2VudFR5cG9ncmFwaHlcblxuICAgIHJ1bGVzID0ge1xuICAgICAgLi4ucnVsZXMsXG4gICAgICAuLi50eXBvZ3JhcGh5LFxuICAgICAgJy0tZm9udC1mYW1pbHknOiBhY2NlbnRUeXBvZ3JhcGh5LmZvbnRGYW1pbHksXG4gICAgICAnLS1hY2NlbnQtY29sb3InOiBhY2NlbnRUeXBvZ3JhcGh5LmNvbG9yLFxuICAgICAgJ3B4Xy0tYWNjZW50LXNpemUnOiBhY2NlbnRUeXBvZ3JhcGh5LmZvbnRTaXplXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHJ1bGVzKS5yZWR1Y2UoKGFjYywgW3Byb3BLZXksIHByb3BWYWx1ZV0pID0+IHtcbiAgICBpZiAoREVGQVVMVF9UT19QWC5pbmNsdWRlcyhwcm9wS2V5KSkge1xuICAgICAgcHJvcFZhbHVlID0gd3JhcFRvKHByb3BWYWx1ZSwgJ3B4JylcbiAgICB9XG5cbiAgICBjb25zdCB7IGtleSwgdmFsdWUgfSA9IGZvcm1hdFJ1bGUocHJvcEtleSwgcHJvcFZhbHVlKVxuICAgIGFjY1trZXldID0gdmFsdWVcblxuICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnKSB7XG4gICAgICBhY2MuaW5uZXJIVE1MID0gaXNWYWx1ZSh2YWx1ZSkgPyBgJHt2YWx1ZX1gIDogJydcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnaW5uZXJUZXh0Jykge1xuICAgICAgYWNjLmlubmVyVGV4dCA9IGlzVmFsdWUodmFsdWUpID8gYCR7dmFsdWV9YCA6ICcnXG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ2NoaWxkcmVuJykge1xuICAgICAgYWNjLmNoaWxkcmVuID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IChpc1ZhbHVlKHZhbHVlKSA/IGAke3ZhbHVlfWAgOiAnJykgOiB2YWx1ZVxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdpbm5lckhUTUwnIHx8IGtleSA9PT0gJ2lubmVyVGV4dCcgfHwga2V5ID09PSAnY2hpbGRyZW4nKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgYWNjLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIH0gZWxzZSBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSkge1xuICAgICAgICBhY2MuZGlzcGxheSA9ICdub25lJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChrZXkuaW5jbHVkZXMoJ2JvcmRlcldpZHRoJykpIHtcbiAgICAgIGFjYy5ib3JkZXJTdHlsZSA9ICdzb2xpZCdcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnY29ybmVyJykge1xuICAgICAgYWNjLmJvcmRlclJhZGl1cyA9IHdyYXBUbyh2YWx1ZSwgJ3B4JylcbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnYmFja2dyb3VuZEZpdCcpIHtcbiAgICAgIGFjYy5iYWNrZ3JvdW5kU2l6ZSA9IHZhbHVlIGFzIEZpdE9wdGlvblxuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdiYWNrZ3JvdW5kSW1hZ2UnICYmIGlzVmFsdWUodmFsdWUpKSB7XG4gICAgICBhY2MuYmFja2dyb3VuZEltYWdlID0gYHVybCgke3ZhbHVlfSlgXG4gICAgICBhY2MuYmFja2dyb3VuZFJlcGVhdCA9ICduby1yZXBlYXQnXG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ2JhY2tncm91bmRDb2xvck9wYWNpdHknICYmIGlzVmFsdWUoYWNjLmJhY2tncm91bmRDb2xvck9wYWNpdHkpICYmIGlzVmFsdWUoYWNjLmJhY2tncm91bmRDb2xvcikpIHtcbiAgICAgIGNvbnN0IHJnYiA9IGhleFRvUmdiKGFjYy5iYWNrZ3JvdW5kQ29sb3IpXG4gICAgICBpZiAocmdiKSB7XG4gICAgICAgIGFjYy5iYWNrZ3JvdW5kQ29sb3IgPSByZ2JUb1JnYmEoYHJnYigke3JnYi5yfSwgJHtyZ2IuZ30sICR7cmdiLmJ9KWAsICthY2MuYmFja2dyb3VuZENvbG9yT3BhY2l0eSAvIDEwMClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoa2V5ID09PSAnaXNCb2xkJykge1xuICAgICAgYWNjLmZvbnRXZWlnaHQgPSB2YWx1ZSA/ICdib2xkJyA6ICdpbml0aWFsJ1xuICAgIH1cblxuICAgIGlmIChrZXkgPT09ICdpc0l0YWxpYycpIHtcbiAgICAgIGFjYy5mb250U3R5bGUgPSB2YWx1ZSA/ICdpdGFsaWMnIDogJ2luaXRpYWwnXG4gICAgfVxuXG4gICAgaWYgKGtleSA9PT0gJ2lzVGhyb3VnaCcpIHtcbiAgICAgIGFjYy50ZXh0RGVjb3JhdGlvbiA9IHZhbHVlID8gJ2xpbmUtdGhyb3VnaCcgOiAnaW5pdGlhbCdcbiAgICB9XG5cbiAgICByZXR1cm4gYWNjXG4gIH0sIHJ1bGVzKVxufVxuIiwiaW1wb3J0IHsgcGFyc2VSdWxlcyB9IGZyb20gJy4uL2hlbHBlcnMvcGFyc2VSdWxlcydcbmltcG9ydCB7IEFueU9iamVjdCB9IGZyb20gJ0BhZHN0b3JlL3V0aWxzJ1xuXG5jb25zdCBpc1ZhbGlkUnVsZSA9IChydWxlOiBBbnlPYmplY3QpID0+IHR5cGVvZiBydWxlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShydWxlKSAmJiAncGFyZW50JyBpbiBydWxlXG5cbmV4cG9ydCBjb25zdCB1c2VQYXJzZVJ1bGVzID0gKHN0YXRlOiB1bmtub3duKSA9PlxuICBPYmplY3QuZW50cmllcyhzdGF0ZSkucmVkdWNlKChhY2MsIFtsYXllciwgcnVsZV0pID0+IHtcbiAgICBhY2NbbGF5ZXJdID0gaXNWYWxpZFJ1bGUocnVsZSkgPyBwYXJzZVJ1bGVzKHsgLi4uc3RhdGVbbGF5ZXJdIH0sIGxheWVyKSA6IHJ1bGVcblxuICAgIHJldHVybiBhY2NcbiAgfSwge30pXG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNoaWxkcmVuOiBzdHJpbmdcbn1cblxuY29uc3QgRGlzcGxheVRleHQ6IEZDPFByb3BzPiA9ICh7IGNoaWxkcmVuLCAuLi5yZXN0IH0pID0+IHtcbiAgY29uc3QgZm9ybWF0VmFsdWUgPSBjaGlsZHJlbj8ucmVwbGFjZSgnc2NyaXB0JywgJycpPy5yZXBsYWNlKC97eyguKj8pfX0vZywgYDxzcGFuPiQxPC9zcGFuPmApXG5cbiAgcmV0dXJuIDxkaXYgey4uLnJlc3R9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogZm9ybWF0VmFsdWUgfX0gLz5cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzcGxheVRleHRcbiIsImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInByZWFjdC9jb21wYXRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRvZ2dsZSA9ICgpID0+IHtcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIHJldHVybiBbaXNPcGVuLCAoKSA9PiBzZXRJc09wZW4ocHJldiA9PiAhcHJldildXG59XG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5cbmNvbnN0IENsb3NlSWNvbjogRkMgPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMjAnIGhlaWdodD0nMjAnIHZpZXdCb3g9JzAgMCAyNCAyNCc+XG4gICAgPHBhdGhcbiAgICAgIGQ9J00xNy42NTkgNC45MjlhMSAxIDAgMSAxIDEuNDE0IDEuNDE0TDEzLjQxNiAxMmw1LjY1NyA1LjY1N2ExIDEgMCAwIDEtMS40MTUgMS40MTRsLTUuNjU2LTUuNjU3LTUuNjU3IDUuNjU3YTEgMSAwIDAgMS0xLjQxNC0xLjQxNEwxMC41ODcgMTIgNC45MzEgNi4zNDNBMSAxIDAgMSAxIDYuMzQ1IDQuOTNsNS42NTcgNS42NTcgNS42NTYtNS42NTdaJ1xuICAgICAgZmlsbD0nY3VycmVudENvbG9yJ1xuICAgID48L3BhdGg+XG4gIDwvc3ZnPlxuKVxuXG5leHBvcnQgZGVmYXVsdCBDbG9zZUljb25cbiIsImltcG9ydCB7IEZDIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcblxuY29uc3QgR2lmdEljb246IEZDID0gKCkgPT4gKFxuICA8c3ZnIHZpZXdCb3g9JzAgMCAxNiAxNic+XG4gICAgPHBhdGhcbiAgICAgIGZpbGw9J2N1cnJlbnRDb2xvcidcbiAgICAgIGZpbGxSdWxlPSdldmVub2RkJ1xuICAgICAgZD0nTTIuMTMgOEg3djcuMzFIMy4yMmExLjA5IDEuMDkgMCAwMS0xLjA5LTEuMDl6TTkgMTUuMzRoMy44MWExLjA5IDEuMDkgMCAwMDEuMDktMS4wOVY4SDl6bTUuOC05Ljk0djEuMTlhLjQ4LjQ4IDAgMDEtLjQ4LjQ4SDEuNzFhLjQ4LjQ4IDAgMDEtLjQ4LS40OFY1LjRjMC0uNTk2LjQ4NC0xLjA4IDEuMDgtMS4wOEg1YTIuNDggMi40OCAwIDAxLTEuNDctMS42NSAxLjYyIDEuNjIgMCAwMS4yNi0xLjQgMS41NyAxLjU3IDAgMDExLS41OGMuMTEtLjAxLjIyLS4wMS4zMyAwYTIuNSAyLjUgMCAwMTIgMUE5IDkgMCAwMTggMy4yMmExMC4zOCAxMC4zOCAwIDAxLjkxLTEuNTQgMi40OSAyLjQ5IDAgMDExLjkzLTFoLjM2Yy4zNjkuMDY1LjcwMi4yNi45NC41NS4zMS40MDcuNDE0LjkzNi4yOCAxLjQzYTIuNDggMi40OCAwIDAxLTEuNDUgMS42NGgyLjc3YTEuMDggMS4wOCAwIDAxMS4wMyAxLjF6TTguNjYgNGE5LjgxIDkuODEgMCAwMDEuOS0uNTUgMS41MiAxLjUyIDAgMDAuODgtMSAuNjguNjggMCAwMC0uMS0uNTkuNi42IDAgMDAtLjM0LS4yMi41OC41OCAwIDAwLS4xOCAwIDEuNTIgMS41MiAwIDAwLTEuMTcuNjNBOS4wNiA5LjA2IDAgMDA4LjY2IDR6bS0zLjMyLS41OEE5LjYyIDkuNjIgMCAwMDcuMjUgNGE4LjU5IDguNTkgMCAwMC0xLTEuNzIgMS41MSAxLjUxIDAgMDAtMS4xOC0uNjNoLS4xM2EuNjYuNjYgMCAwMC0uMzkuMjIuNjYuNjYgMCAwMC0uMDkuNTdjLjEzLjQ0My40NTMuODA0Ljg4Ljk4eidcbiAgICA+PC9wYXRoPlxuICA8L3N2Zz5cbilcblxuZXhwb3J0IGRlZmF1bHQgR2lmdEljb25cbiIsImltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICcuLi91c2VQYXJzZVJ1bGVzJ1xuaW1wb3J0IHsgaXNWYWx1ZSB9IGZyb20gJ0BhZHN0b3JlL3V0aWxzJ1xuXG50eXBlIEFuaW1hdGlvbk5hbWUgPSAnZmFkZScgfCAncHVsc2UnIHwgJ3dpZ2dsZScgfCAnZ3JhZGllbnQnXG5cbmNvbnN0IGFuaW1hdGlvbnNNYXAgPSAoYW5pbWF0aW9uczogUmVjb3JkPEFuaW1hdGlvbk5hbWUsIHN0cmluZz4pID0+ICh7XG4gIGZhZGU6IGAke2FuaW1hdGlvbnMuZmFkZX0gMnMgbGluZWFyIGluZmluaXRlYCxcbiAgcHVsc2U6IGAke2FuaW1hdGlvbnMucHVsc2V9IC4zcyBsaW5lYXIgMHMgaW5maW5pdGUgYWx0ZXJuYXRlIGZvcndhcmRzYCxcbiAgd2lnZ2xlOiBgJHthbmltYXRpb25zLndpZ2dsZX0gMnMgbGluZWFyIGluZmluaXRlYCxcbiAgZ3JhZGllbnQ6IGAke2FuaW1hdGlvbnMuZ3JhZGllbnR9IDNzIGVhc2UgaW5maW5pdGVgXG59KVxuXG5leHBvcnQgY29uc3QgdXNlR2lmdFJ1bGVzID0gKGRldmljZVN0YXRlOiB1bmtub3duLCBhbmltYXRpb25zOiBSZWNvcmQ8QW5pbWF0aW9uTmFtZSwgc3RyaW5nPikgPT4ge1xuICBjb25zdCBmdWxsQW5pbWF0aW9ucyA9IGFuaW1hdGlvbnNNYXAoYW5pbWF0aW9ucylcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKGRldmljZVN0YXRlKVxuICBjb25zdCBoYXNJY29uID0gcnVsZXM/Lmljb24/Lmhhc0ljb25cblxuICBjb25zdCBhcnJvd1J1bGVzID0ge1xuICAgIGxlZnQ6IGAkeysoZGV2aWNlU3RhdGU/LmNvbnRhaW5lcj8ubGVmdCB8fCAwKSAqIC0xICsgOH1weGAsXG4gICAgYmFja2dyb3VuZENvbG9yOiBydWxlcz8uY29udGFpbmVyPy5iYWNrZ3JvdW5kQ29sb3IsXG4gICAgYm9yZGVyVG9wV2lkdGg6IHJ1bGVzPy5jb250YWluZXI/LmJvcmRlcldpZHRoLFxuICAgIGJvcmRlclRvcENvbG9yOiBydWxlcz8uY29udGFpbmVyPy5ib3JkZXJDb2xvcixcbiAgICBib3JkZXJUb3BTdHlsZTogJ3NvbGlkJyxcbiAgICBib3JkZXJMZWZ0V2lkdGg6IHJ1bGVzPy5jb250YWluZXI/LmJvcmRlcldpZHRoLFxuICAgIGJvcmRlckxlZnRDb2xvcjogcnVsZXM/LmNvbnRhaW5lcj8uYm9yZGVyQ29sb3IsXG4gICAgYm9yZGVyTGVmdFN0eWxlOiAnc29saWQnXG4gIH1cblxuICBjb25zdCBib2R5UnVsZXMgPSB7XG4gICAgbGVmdDogcnVsZXM/LmNvbnRhaW5lcj8ubGVmdFxuICB9XG5cbiAgY29uc3QgYWxsQW5pbWF0aW9ucyA9IChydWxlcz8uaWNvbj8uYW5pbWF0aW9ucyB8fCBbXSlcbiAgICAubWFwKChhbmltYXRpb246IEFuaW1hdGlvbk5hbWUpID0+IGZ1bGxBbmltYXRpb25zW2FuaW1hdGlvbl0pXG4gICAgLmpvaW4oJywgJylcblxuICBjb25zdCBiYWNrZ3JvdW5kU3R5bGVzID1cbiAgICBpc1ZhbHVlKHJ1bGVzPy5pY29uPy5ncmFkaWVudENvbG9yKSAmJiBydWxlcz8uaWNvbj8uYW5pbWF0aW9ucy5pbmNsdWRlcygnZ3JhZGllbnQnKVxuICAgICAgPyB7XG4gICAgICAgICAgYmFja2dyb3VuZDogYGxpbmVhci1ncmFkaWVudCgtOTBkZWcsICR7cnVsZXMuaWNvbj8uYmFja2dyb3VuZENvbG9yfSAwJSwgJHtydWxlcz8uaWNvbj8uZ3JhZGllbnRDb2xvcn0gMTAwJSkgMCUgMCUgLyA0MDAlIDQwMCVgLFxuICAgICAgICAgIGJhY2tncm91bmRTaXplOiAnNDAwJSA0MDAlJ1xuICAgICAgICB9XG4gICAgICA6IHJ1bGVzPy5pY29uXG5cbiAgY29uc3QgaWNvblJ1bGVzID0ge1xuICAgIC4uLihydWxlcz8uaWNvbiB8fCB7fSksXG4gICAgYW5pbWF0aW9uOiBhbGxBbmltYXRpb25zLFxuICAgIC4uLmJhY2tncm91bmRTdHlsZXNcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGFzSWNvbixcbiAgICBhcnJvd1J1bGVzLFxuICAgIGJvZHlSdWxlcyxcbiAgICBpY29uUnVsZXNcbiAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IGJhY2tncm91bmRPcHRpb25zID0gWydiYWNrZ3JvdW5kQ29sb3InLCAnYmFja2dyb3VuZENvbG9yT3BhY2l0eScsICdiYWNrZ3JvdW5kSW1hZ2UnLCAnYmFja2dyb3VuZEZpdCddXG5leHBvcnQgY29uc3QgYm9yZGVyT3B0aW9ucyA9IFsnYm9yZGVyV2lkdGgnLCAnYm9yZGVyQ29sb3InLCAnYm9yZGVyU3R5bGUnXVxuXG5leHBvcnQgY29uc3Qgc3BhY2luZ09wdGlvbnMgPSBbXG4gICdtYXJnaW5Ub3AnLFxuICAnbWFyZ2luQm90dG9tJyxcbiAgJ21hcmdpbkxlZnQnLFxuICAnbWFyZ2luUmlnaHQnLFxuICAncGFkZGluZ1RvcCcsXG4gICdwYWRkaW5nQm90dG9tJyxcbiAgJ3BhZGRpbmdMZWZ0JyxcbiAgJ3BhZGRpbmdSaWdodCdcbl1cblxuXG5leHBvcnQgY29uc3Qgbm9vcFlhTWV0cmlrYSA9IChnb2FsOiBzdHJpbmcpID0+IGNvbnNvbGUubG9nKGBOb29wIFlhTWVrdGlrYSByZWFjaCBnb2FsOiAke2dvYWx9YClcbmV4cG9ydCBjb25zdCBub29wQWRGb3ggPSAoZ29hbDogc3RyaW5nKSA9PiBjb25zb2xlLmxvZyhgTm9vcCBBZEZveCByZWFjaCBnb2FsOiAke2dvYWx9YClcbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCB7IGlzSnNvblNhbWUsIHBpY2sgfSBmcm9tICdAYWRzdG9yZS91dGlscydcbmltcG9ydCB7IG5vb3BBZEZveCwgbm9vcFlhTWV0cmlrYSB9IGZyb20gXCJzcmMvaGVscGVycy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHVzZU1ldHJpY3MgPSAoc3RhdGU6IHVua25vd24sIGxheWVyTmFtZSA9ICdyb290JykgPT4ge1xuICBjb25zdCBzYXZlTWV0cmljcyA9IHVzZVJlZigpXG4gIGNvbnN0IHlhUmVhY2hHb2FsID0gc3RhdGUueWFSZWFjaEdvYWwgfHwgbm9vcFlhTWV0cmlrYVxuICBjb25zdCBhZGZveFJlYWNoR29hbCA9IHN0YXRlLmFkZm94UmVhY2hHb2FsIHx8IG5vb3BBZEZveFxuICBjb25zdCBtZXRyaWNzID0gcGljayhzdGF0ZVtsYXllck5hbWVdLCAneWFTaG93JywgJ3lhQ2xpY2snLCAnYWRmb3hTaG93JywgJ2FkZm94Q2xpY2snKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0pzb25TYW1lKHNhdmVNZXRyaWNzLmN1cnJlbnQsIG1ldHJpY3MpKSB7XG4gICAgICBpZiAobWV0cmljcy55YVNob3cpIHtcbiAgICAgICAgeWFSZWFjaEdvYWwobWV0cmljcy55YVNob3cpXG4gICAgICB9XG4gICAgICBpZiAobWV0cmljcy5hZGZveFNob3cpIHtcbiAgICAgICAgYWRmb3hSZWFjaEdvYWwobWV0cmljcy5hZGZveFNob3cpXG4gICAgICB9XG4gICAgfVxuICAgIHNhdmVNZXRyaWNzLmN1cnJlbnQgPSBtZXRyaWNzXG4gIH0sIFttZXRyaWNzXSlcblxuICByZXR1cm4gKCkgPT4ge1xuICAgIGlmIChtZXRyaWNzLnlhQ2xpY2spIHtcbiAgICAgIHlhUmVhY2hHb2FsKG1ldHJpY3MueWFDbGljaylcbiAgICB9XG4gICAgaWYgKG1ldHJpY3MuYWRmb3hDbGljaykge1xuICAgICAgYWRmb3hSZWFjaEdvYWwobWV0cmljcy5hZGZveENsaWNrKVxuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgaW5qZWN0TGluaywgaXRlcmF0b3IgfSBmcm9tIFwiQGFkc3RvcmUvdXRpbHNcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Eb3dubG9hZC9wcmVhY3QtaGVsbWV0L2lzc3Vlcy8zNFxuXG5leHBvcnQgY29uc3QgdXNlRXh0cmFjdEZvbnRzID0gKHN0YXRlOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IGZvbnRzID0gbmV3IFNldChbXSlcblxuICBpdGVyYXRvcihzdGF0ZSwgKGtleSwgdmFsdWUpID0+IHtcbiAgICBpZiAoa2V5ID09PSAnZm9udEZhbWlseScpIHtcbiAgICAgIGZvbnRzLmFkZCh2YWx1ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfSlcblxuICBjb25zdCBmb250TGlua3MgPSB1c2VNZW1vKCgpID0+IEFycmF5LmZyb20oZm9udHMudmFsdWVzKCkpLm1hcChmb250ID0+ICh7XG4gICAgcmVsOiAnc3R5bGVzaGVldCcsXG4gICAgaHJlZjogYGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT0ke2ZvbnR9OjMwMCw0MDAsNTAwLDcwMCZkaXNwbGF5PXN3YXBgXG4gIH0pKSwgW2ZvbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZvbnRMaW5rcy5mb3JFYWNoKChsaW5rKSA9PiBpbmplY3RMaW5rKGxpbmspKVxuICB9LCBbZm9udExpbmtzXSlcbn1cbiIsImltcG9ydCB7IG5vb3AsIHBpY2sgfSBmcm9tIFwiQGFkc3RvcmUvdXRpbHNcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJwcmVhY3QvY29tcGF0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VMaWZlY3ljbGUgPSAoc3RhdGU6IHVua25vd24pID0+IHtcbiAgY29uc3QgY3ljbGVzID0gcGljayhzdGF0ZSwgJ29uTW91bnQnLCAnb25EZXN0cm95JywgJ29uQ2xpY2snKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgKGN5Y2xlcy5vbk1vdW50IHx8IG5vb3ApKClcblxuICAgIHJldHVybiBjeWNsZXMub25EZXN0cm95IHx8IG5vb3BcbiAgfSwgW10pXG5cbiAgcmV0dXJuIGN5Y2xlcy5vbkNsaWNrIHx8IG5vb3Bcbn1cbiIsImltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgeyBGQywgZm9yd2FyZFJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlUmVmIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCB7IHBpY2sgfSBmcm9tICdAYWRzdG9yZS91dGlscydcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgeyB1c2VHaWZ0T3BlbiB9IGZyb20gJ3NyYy9ob29rcy91c2VHaWZ0T3BlbidcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3NyYy9oZWxwZXJzL3JlbmRlcidcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VHZXRSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VEZXZpY2VTdGF0ZSdcbmltcG9ydCB7IHVzZUNvbnRhaW5lckRldmljZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDb250YWluZXJEZXZpY2UnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgRGlzcGxheVRleHQgZnJvbSAnc3JjL2NvbXBvbmVudHMvRGlzcGxheVRleHQnXG5pbXBvcnQgeyB1c2VUb2dnbGUgfSBmcm9tICdzcmMvaG9va3MvdXNlVG9nZ2xlJ1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tICdzcmMvY29tcG9uZW50cy9DbG9zZUljb24nXG5pbXBvcnQgR2lmdEljb24gZnJvbSAnc3JjL2NvbXBvbmVudHMvR2lmdEljb24nXG5pbXBvcnQgeyB1c2VHaWZ0UnVsZXMgfSBmcm9tICdzcmMvaG9va3MvcHJvbW9zL3VzZUdpZnRSdWxlcydcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IHVzZU1ldHJpY3MgfSBmcm9tICdzcmMvaG9va3MvdXNlTWV0cmljcydcbmltcG9ydCB7IHVzZUV4dHJhY3RGb250cyB9IGZyb20gJ3NyYy9ob29rcy91c2VFeHRyYWN0Rm9udHMnXG5pbXBvcnQgeyBib3JkZXJPcHRpb25zIH0gZnJvbSAnc3JjL2hlbHBlcnMvY29uc3RhbnRzJ1xuaW1wb3J0IHsgdXNlTGlmZWN5Y2xlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUxpZmVjeWNsZSdcblxuY29uc3QgU2ltcGxlR2lmdDogRkM8U3RhdGU+ID0gZm9yd2FyZFJlZigoeyBpZCB9LCBfcmVmKSA9PiB7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgW2xlZ2FsSXNPcGVuLCB0b2dnbGVMZWdhbElzT3Blbl0gPSB1c2VUb2dnbGUoKVxuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZTxTdGF0ZT4oKVxuICBjb25zdCBkZXZpY2UgPSB1c2VDb250YWluZXJEZXZpY2UoeyB0YXJnZXRSZWY6IHJvb3RSZWYsIGlkIH0pXG4gIGNvbnN0IGRldmljZVN0YXRlID0gdXNlR2V0UnVsZXMoc3RhdGUsIGRldmljZSlcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKGRldmljZVN0YXRlKVxuICBjb25zdCBvbkNsaWNrTWV0cmljcyA9IHVzZU1ldHJpY3MoZGV2aWNlU3RhdGUpXG4gIGNvbnN0IHsgaXNPcGVuLCBvblRvZ2dsZSB9ID0gdXNlR2lmdE9wZW4oe1xuICAgIGRlbGF5OiBkZXZpY2VTdGF0ZT8uY29udGFpbmVyPy5kZWxheSxcbiAgICAuLi5waWNrKGRldmljZVN0YXRlLCAnb25PcGVuJywgJ29uQXV0b09wZW4nKVxuICB9KVxuICBjb25zdCB7IGhhc0ljb24sIGljb25SdWxlcywgYm9keVJ1bGVzLCBhcnJvd1J1bGVzIH0gPSB1c2VHaWZ0UnVsZXMoZGV2aWNlU3RhdGUsIHtcbiAgICBmYWRlOiBzdHlsZXMuZmFkZWluLFxuICAgIHB1bHNlOiBzdHlsZXMucHVsc2UsXG4gICAgd2lnZ2xlOiBzdHlsZXMud2lnZ2xlLFxuICAgIGdyYWRpZW50OiBzdHlsZXMuZ3JhZGllbnRcbiAgfSlcbiAgdXNlRXh0cmFjdEZvbnRzKGRldmljZVN0YXRlKVxuICBjb25zdCBvbkNsaWNrID0gdXNlTGlmZWN5Y2xlKGRldmljZVN0YXRlKVxuICBjb25zdCBsZWdhbEJvcmRlciA9IGxlZ2FsSXNPcGVuID8gcGljayhydWxlcy5jb250YWluZXIsIC4uLmJvcmRlck9wdGlvbnMpIDoge31cblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMucm9vdCwge1xuICAgICAgICBbc3R5bGVzLmxlZ2FsT3Blbl06IGxlZ2FsSXNPcGVuXG4gICAgICB9KX1cbiAgICAgIHJlZj17cm9vdFJlZn1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmljb259IHN0eWxlPXtpY29uUnVsZXN9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAge2hhc0ljb24gJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaWNvblRhcmdldH0+XG4gICAgICAgICAgICA8R2lmdEljb24gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmJvZHksIHsgW3N0eWxlcy5ib2R5T3Blbl06IGlzT3BlbiB9KX0gc3R5bGU9e2JvZHlSdWxlc30+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYXJyb3d9IHN0eWxlPXthcnJvd1J1bGVzfSAvPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlfSBzdHlsZT17cnVsZXMuY2xvc2V9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmNvbnRhaW5lcn0gc3R5bGU9e3J1bGVzLmNvbnRhaW5lcn0+XG4gICAgICAgICAgPGFcbiAgICAgICAgICAgIGhyZWY9e3J1bGVzLnJvb3Q/Lm9mZmVyfVxuICAgICAgICAgICAgdGFyZ2V0PSdfYmxhbmsnXG4gICAgICAgICAgICByZWw9J25vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIG9uQ2xpY2soKVxuICAgICAgICAgICAgICBvbkNsaWNrTWV0cmljcygpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaW5uZXJ9PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxvZ299IHN0eWxlPXtydWxlcy5sb2dvfSAvPlxuICAgICAgICAgICAgICA8RGlzcGxheVRleHQgY2xhc3NOYW1lPXtzdHlsZXMudGV4dH0gc3R5bGU9e3J1bGVzLnRleHR9PlxuICAgICAgICAgICAgICAgIHtydWxlcz8udGV4dD8uY2hpbGRyZW59XG4gICAgICAgICAgICAgIDwvRGlzcGxheVRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5idXR0b24sIHtcbiAgICAgICAgICAgICAgICBbc3R5bGVzLmJ1dHRvbkFuaW1hdGVkXTogcnVsZXMuYnV0dG9uLmlzQW5pbWF0ZWRcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgIHN0eWxlPXtydWxlcy5idXR0b259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtydWxlcy5idXR0b24/LmNoaWxkcmVufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubGVnYWxHYXB9IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5sZWdhbH0gc3R5bGU9e3sgLi4ucnVsZXMubGVnYWwsIC4uLmxlZ2FsQm9yZGVyIH19PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMubGVnYWxUZXh0fT5cbiAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3J1bGVzPy5sZWdhbD8uY2hpbGRyZW59PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmxlZ2FsQnV0dG9ufSBvbkNsaWNrPXt0b2dnbGVMZWdhbElzT3Blbn0+XG4gICAgICAgICAgICAgICAgICB7bGVnYWxJc09wZW4gPyBydWxlcz8ubGVnYWw/LmJ1dHRvbk9wZW5UZXh0IDogcnVsZXM/LmxlZ2FsPy5idXR0b25IaWRlVGV4dH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufSlcblxuZXhwb3J0IGRlZmF1bHQgcmVuZGVyKDxTaW1wbGVHaWZ0IC8+KVxuIiwiaW1wb3J0IHsgRkMgfSBmcm9tICdwcmVhY3QvY29tcGF0J1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgeyB1c2VDdXJyZW50U3RhdGUgfSBmcm9tICdzcmMvaG9va3MvdXNlQ3VycmVudFN0YXRlJ1xuaW1wb3J0IHsgdXNlUGFyc2VSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VQYXJzZVJ1bGVzJ1xuaW1wb3J0IERpc3BsYXlUZXh0IGZyb20gJ3NyYy9jb21wb25lbnRzL0Rpc3BsYXlUZXh0J1xuaW1wb3J0IHsgdXNlTWV0cmljcyB9IGZyb20gJ3NyYy9ob29rcy91c2VNZXRyaWNzJ1xuXG5jb25zdCBCb251c0NhcmQ6IEZDID0gKCkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhzdGF0ZSlcbiAgY29uc3Qgb25DbGljayA9IHVzZU1ldHJpY3Moc3RhdGUpXG5cbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgaHJlZj17cnVsZXMucm9vdD8ub2ZmZXJ9XG4gICAgICB0YXJnZXQ9J19ibGFuaydcbiAgICAgIHJlbD0nbm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlcidcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMucm9vdCwge1xuICAgICAgICBbc3R5bGVzLnZhcmlhbnQyXTogcnVsZXMucm9vdD8udmFyaWFudCA9PT0gJ3ZhcmlhbnQyJ1xuICAgICAgfSl9XG4gICAgICBzdHlsZT17cnVsZXMucm9vdH1cbiAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5saW5lfSBzdHlsZT17cnVsZXMubGluZX0gLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5ib2R5SW5uZXJ9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30gc3R5bGU9e3J1bGVzLmxvZ299IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZXh0fSBzdHlsZT17cnVsZXMudGV4dH0+XG4gICAgICAgICAgICA8RGlzcGxheVRleHQ+e3J1bGVzLnRleHQ/LmNoaWxkcmVufTwvRGlzcGxheVRleHQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYnV0dG9ufSBzdHlsZT17cnVsZXMuYnV0dG9ufT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxvZ299IHN0eWxlPXtydWxlcy5sb2dvfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYnV0dG9uVGV4dH0+e3J1bGVzLmJ1dHRvbj8uY2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxlZ2FsfSBzdHlsZT17cnVsZXMubGVnYWx9PlxuICAgICAgICB7cnVsZXMubGVnYWw/LmNoaWxkcmVufVxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEJvbnVzQ2FyZFxuIiwiaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVJlZiB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgeyBwaWNrLCBzZXQgfSBmcm9tICdAYWRzdG9yZS91dGlscydcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgeyB1c2VHaWZ0T3BlbiB9IGZyb20gJ3NyYy9ob29rcy91c2VHaWZ0T3BlbidcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3NyYy9oZWxwZXJzL3JlbmRlcidcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VHZXRSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VEZXZpY2VTdGF0ZSdcbmltcG9ydCB7IHVzZUNvbnRhaW5lckRldmljZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDb250YWluZXJEZXZpY2UnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gJ3NyYy9jb21wb25lbnRzL0Nsb3NlSWNvbidcbmltcG9ydCBHaWZ0SWNvbiBmcm9tICdzcmMvY29tcG9uZW50cy9HaWZ0SWNvbidcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnc3JjL1N0YXRlQ29udGV4dCdcbmltcG9ydCBCb251c0NhcmQgZnJvbSAnLi9jb21wb25lbnRzL0JvbnVzQ2FyZCdcbmltcG9ydCB7IHVzZUV4dHJhY3RGb250cyB9IGZyb20gJ3NyYy9ob29rcy91c2VFeHRyYWN0Rm9udHMnXG5pbXBvcnQgeyB1c2VHaWZ0UnVsZXMgfSBmcm9tICdzcmMvaG9va3MvcHJvbW9zL3VzZUdpZnRSdWxlcydcbmltcG9ydCB7IHVzZUxpZmVjeWNsZSB9IGZyb20gJ3NyYy9ob29rcy91c2VMaWZlY3ljbGUnXG5cbmNvbnN0IENvbXBsZXhHaWZ0ID0gZm9yd2FyZFJlZigoeyBpZCB9LCBfcmVmKSA9PiB7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3Qgc3RhdGUgPSB1c2VDdXJyZW50U3RhdGUoKVxuICBjb25zdCBkZXZpY2UgPSB1c2VDb250YWluZXJEZXZpY2UoeyB0YXJnZXRSZWY6IHJvb3RSZWYsIGlkIH0pXG4gIGNvbnN0IGRldmljZVN0YXRlID0gdXNlR2V0UnVsZXMoc3RhdGUsIGRldmljZSlcbiAgY29uc3QgeyBpc09wZW4sIG9uVG9nZ2xlIH0gPSB1c2VHaWZ0T3Blbih7XG4gICAgZGVsYXk6IGRldmljZVN0YXRlPy5jb250YWluZXI/LmRlbGF5LFxuICAgIC4uLnBpY2soZGV2aWNlU3RhdGUsICdvbk9wZW4nLCAnb25BdXRvT3BlbicpXG4gIH0pXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhkZXZpY2VTdGF0ZSlcbiAgY29uc3Qgb25DbGljayA9IHVzZUxpZmVjeWNsZShkZXZpY2VTdGF0ZSlcbiAgdXNlRXh0cmFjdEZvbnRzKGRldmljZVN0YXRlKVxuICBjb25zdCB7IGhhc0ljb24sIGljb25SdWxlcywgYm9keVJ1bGVzLCBhcnJvd1J1bGVzIH0gPSB1c2VHaWZ0UnVsZXMoZGV2aWNlU3RhdGUsIHtcbiAgICBmYWRlOiBzdHlsZXMuZmFkZWluLFxuICAgIHB1bHNlOiBzdHlsZXMucHVsc2UsXG4gICAgd2lnZ2xlOiBzdHlsZXMud2lnZ2xlLFxuICAgIGdyYWRpZW50OiBzdHlsZXMuZ3JhZGllbnRcbiAgfSlcbiAgY29uc3QgaGFzVGl0bGVJY29uID0gcnVsZXM/LnRpdGxlPy5oYXNJY29uXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLnJvb3QsIHtcbiAgICAgICAgW3N0eWxlcy5kZXNrdG9wXTogZGV2aWNlID09PSAnZGVza3RvcCcsXG4gICAgICAgIFtzdHlsZXMubGFwdG9wXTogZGV2aWNlID09PSAnbGFwdG9wJyxcbiAgICAgICAgW3N0eWxlcy50YWJsZXRdOiBkZXZpY2UgPT09ICd0YWJsZXQnXG4gICAgICB9KX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmljb259IHN0eWxlPXtpY29uUnVsZXN9IG9uQ2xpY2s9e29uVG9nZ2xlfT5cbiAgICAgICAge2hhc0ljb24gJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaWNvblRhcmdldH0+XG4gICAgICAgICAgICA8R2lmdEljb24gLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmJvZHksIHtcbiAgICAgICAgICBbc3R5bGVzLmJvZHlPcGVuXTogaXNPcGVuXG4gICAgICAgIH0pfVxuICAgICAgICBzdHlsZT17Ym9keVJ1bGVzfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmFycm93fSBzdHlsZT17YXJyb3dSdWxlc30gLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250YWluZXJ9IHN0eWxlPXtydWxlcy5jb250YWluZXJ9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2V9IHN0eWxlPXtydWxlcy5jbG9zZX0gb25DbGljaz17b25Ub2dnbGV9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucHJvbW90aW9ufSBzdHlsZT17cnVsZXMucHJvbW90aW9ufT5cbiAgICAgICAgICAgIHtydWxlcy5wcm9tb3Rpb24/LmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZH0+XG4gICAgICAgICAgICB7aGFzVGl0bGVJY29uICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5oZWFkSWNvbn0gc3R5bGU9e3BpY2socnVsZXMudGl0bGUsICdjb2xvcicpfT5cbiAgICAgICAgICAgICAgICA8R2lmdEljb24gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5oZWFkVGl0bGV9IHN0eWxlPXtydWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgIHtydWxlcy50aXRsZT8uY2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaW5uZXJ9IG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgICAgICAgeyhydWxlcy5jaGlsZHJlbiB8fCBbXSkubWFwKGNoaWxkID0+IChcbiAgICAgICAgICAgICAgPFN0YXRlQ29udGV4dCB2YWx1ZT17Y2hpbGR9PlxuICAgICAgICAgICAgICAgIDxCb251c0NhcmQgLz5cbiAgICAgICAgICAgICAgPC9TdGF0ZUNvbnRleHQ+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufSlcblxuZXhwb3J0IGRlZmF1bHQgcmVuZGVyKDxDb21wbGV4R2lmdCAvPilcbiIsImV4cG9ydCBjb25zdCBzd2l0Y2hUZXh0QWxpZ25Ub0ZsZXggPSAodGV4dEFsaWduPzogc3RyaW5nKSA9PlxuICB0ZXh0QWxpZ24gPyB7IGxlZnQ6ICdmbGV4LXN0YXJ0JywgY2VudGVyOiAnY2VudGVyJywgcmlnaHQ6ICdmbGV4LWVuZCcgfVt0ZXh0QWxpZ25dIDogdGV4dEFsaWduXG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgeyB1c2VDdXJyZW50U3RhdGUgfSBmcm9tICdzcmMvaG9va3MvdXNlQ3VycmVudFN0YXRlJ1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5tb2R1bGUuc2NzcydcbmltcG9ydCBEaXNwbGF5VGV4dCBmcm9tICdzcmMvY29tcG9uZW50cy9EaXNwbGF5VGV4dCdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcblxuY29uc3QgTGluZTogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ3VycmVudFN0YXRlKClcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKHN0YXRlKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5yb290fSBzdHlsZT17cnVsZXMucm9vdH0+XG4gICAgICA8RGlzcGxheVRleHQ+e3J1bGVzPy5yb290Py5jaGlsZHJlbn08L0Rpc3BsYXlUZXh0PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IExpbmVcbiIsImltcG9ydCB7IHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZVN0YXRlIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcblxuZXhwb3J0IGNvbnN0IHVzZVBvcHVwID0gKHJlZjogdW5rbm93bikgPT4ge1xuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3Qgc2hvdyA9ICgpID0+IHNldElzT3Blbih0cnVlKVxuICBjb25zdCBoaWRlID0gKCkgPT4gc2V0SXNPcGVuKGZhbHNlKVxuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiAoe1xuICAgIHNob3csXG4gICAgaGlkZVxuICB9KSlcblxuICByZXR1cm4ge1xuICAgIGlzT3BlbixcbiAgICBzaG93LFxuICAgIGhpZGVcbiAgfVxufVxuIiwiaW1wb3J0IHsgRkMsIGZvcndhcmRSZWYsIHVzZVJlZiB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgcGljaywgc2V0IH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdzcmMvaGVscGVycy9yZW5kZXInXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJ1xuaW1wb3J0IHsgdXNlQ29udGFpbmVyRGV2aWNlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUNvbnRhaW5lckRldmljZSdcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VHZXRSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VEZXZpY2VTdGF0ZSdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnc3JjL1N0YXRlQ29udGV4dCdcbmltcG9ydCB7IHN3aXRjaFRleHRBbGlnblRvRmxleCB9IGZyb20gJ3NyYy9oZWxwZXJzL3N3aXRjaFRleHRBbGlnblRvRmxleCdcbmltcG9ydCBMaW5lIGZyb20gJy4vY29tcG9uZW50cy9saW5lJ1xuaW1wb3J0IHsgdXNlTWV0cmljcyB9IGZyb20gJ3NyYy9ob29rcy91c2VNZXRyaWNzJ1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tICdzcmMvY29tcG9uZW50cy9DbG9zZUljb24nXG5pbXBvcnQgeyB1c2VQb3B1cCB9IGZyb20gJ3NyYy9ob29rcy9wcm9tb3MvdXNlUG9wdXAnXG5cbmNvbnN0IFNpbXBsZVBvcHVwOiBGQyA9IGZvcndhcmRSZWYoKHsgaWQgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgeyBpc09wZW4sIGhpZGUgfSA9IHVzZVBvcHVwKHJlZilcbiAgY29uc3QgZGV2aWNlID0gdXNlQ29udGFpbmVyRGV2aWNlKHsgdGFyZ2V0UmVmOiByb290UmVmLCBpZCB9KVxuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IGRldmljZVN0YXRlID0gdXNlR2V0UnVsZXMoc3RhdGUsIGRldmljZSlcbiAgY29uc3Qgb25DbGljayA9IHVzZU1ldHJpY3MoZGV2aWNlU3RhdGUpXG5cbiAgc2V0KGRldmljZVN0YXRlLCAnYnV0dG9uLnBlcmNlbnRfd2lkdGgnLCBkZXZpY2VTdGF0ZT8uYnV0dG9uPy53aWR0aClcbiAgc2V0KGRldmljZVN0YXRlLCAnbGVnYWwucGVyY2VudF93aWR0aCcsIGRldmljZVN0YXRlPy5sZWdhbD8ud2lkdGgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhkZXZpY2VTdGF0ZSlcblxuICBjb25zdCBib2R5UnVsZXMgPSB7XG4gICAgYWxpZ25JdGVtczogc3dpdGNoVGV4dEFsaWduVG9GbGV4KHJ1bGVzLnJvb3Q/LmFsaWduKVxuICB9XG5cbiAgY29uc3QgYnV0dG9uUnVsZXMgPSB7XG4gICAgLi4ucnVsZXM/LmJ1dHRvbixcbiAgICBqdXN0aWZ5Q29udGVudDogc3dpdGNoVGV4dEFsaWduVG9GbGV4KHJ1bGVzLnJvb3Q/LnRleHRBbGlnbilcbiAgfVxuXG4gIGNvbnN0IGxlZ2FsUnVsZXMgPSB7XG4gICAgLi4ucnVsZXM/LmxlZ2FsLFxuICAgIGp1c3RpZnlDb250ZW50OiBzd2l0Y2hUZXh0QWxpZ25Ub0ZsZXgocnVsZXMucm9vdD8udGV4dEFsaWduKVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yb290fVxuICAgICAgcmVmPXtyb290UmVmfVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgZGlzcGxheTogaXNPcGVuID8gJ2ZsZXgnIDogJ25vbmUnXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX0gc3R5bGU9e3J1bGVzLm92ZXJsYXl9IG9uQ2xpY2s9e2hpZGV9IC8+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2V9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGNvbG9yOiBydWxlcy5jbG9zZT8uYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXtoaWRlfVxuICAgICAgICA+XG4gICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGFcbiAgICAgICAgICBocmVmPXtydWxlcy5yb290Py5vZmZlcn1cbiAgICAgICAgICB0YXJnZXQ9J19ibGFuaydcbiAgICAgICAgICByZWw9J25vZm9sbG93IG5vb3BlbmVyIG5vcmVmZXJyZXInXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5jb250ZW50LCB7XG4gICAgICAgICAgICBbc3R5bGVzLmRlc2t0b3BdOiBkZXZpY2UgPT09ICdkZXNrdG9wJyxcbiAgICAgICAgICAgIFtzdHlsZXMudGFibGV0XTogZGV2aWNlID09PSAndGFibGV0JyxcbiAgICAgICAgICAgIFtzdHlsZXMubGFwdG9wXTogZGV2aWNlID09PSAnbGFwdG9wJ1xuICAgICAgICAgIH0pfVxuICAgICAgICAgIHN0eWxlPXtydWxlcy5yb290fVxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9IHN0eWxlPXtib2R5UnVsZXN9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5sb2dvfSBzdHlsZT17cnVsZXMubG9nb30gLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGV4dH0+XG4gICAgICAgICAgICAgIHsocnVsZXM/LmNoaWxkcmVuIHx8IFtdKS5tYXAoZWwgPT4gKFxuICAgICAgICAgICAgICAgIDxTdGF0ZUNvbnRleHQgdmFsdWU9e2VsfT5cbiAgICAgICAgICAgICAgICAgIDxMaW5lIC8+XG4gICAgICAgICAgICAgICAgPC9TdGF0ZUNvbnRleHQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJ1dHRvbn0gc3R5bGU9e2J1dHRvblJ1bGVzfT5cbiAgICAgICAgICAgICAge2J1dHRvblJ1bGVzPy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5sZWdhbH0gc3R5bGU9e2xlZ2FsUnVsZXN9PlxuICAgICAgICAgICAgICB7bGVnYWxSdWxlcz8uY2hpbGRyZW59XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIClcbn0pXG5cbmV4cG9ydCBkZWZhdWx0IHJlbmRlcig8U2ltcGxlUG9wdXAgLz4pXG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgb21pdCwgcGljayB9IGZyb20gXCJAYWRzdG9yZS91dGlsc1wiO1xuaW1wb3J0IHsgdXNlQ3VycmVudFN0YXRlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUN1cnJlbnRTdGF0ZSdcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgRGlzcGxheVRleHQgZnJvbSAnc3JjL2NvbXBvbmVudHMvRGlzcGxheVRleHQnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgeyBzcGFjaW5nT3B0aW9ucyB9IGZyb20gXCJzcmMvaGVscGVycy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU1ldHJpY3MgfSBmcm9tIFwic3JjL2hvb2tzL3VzZU1ldHJpY3NcIjtcblxuY29uc3QgQm9udXM6IEZDID0gKCkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhzdGF0ZSlcbiAgY29uc3QgZGV2aWNlID0gc3RhdGU/LmRldmljZSB8fCAnZGVza3RvcCdcbiAgY29uc3Qgb25DbGljayA9IHVzZU1ldHJpY3Moc3RhdGUpXG5cblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICBocmVmPXtydWxlcy5yb290Py5vZmZlcn1cbiAgICAgIHRhcmdldD0nX2JsYW5rJ1xuICAgICAgcmVsPVwibm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLnJvb3QsIHtcbiAgICAgICAgW3N0eWxlcy5kZXNrdG9wXTogZGV2aWNlID09PSAnZGVza3RvcCdcbiAgICAgIH0pfVxuICAgICAgc3R5bGU9e29taXQocnVsZXMucm9vdCwgLi4uc3BhY2luZ09wdGlvbnMpfVxuICAgICAgb25DbGljaz17b25DbGlja31cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0gc3R5bGU9e3J1bGVzLmhlYWRlcn0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30gc3R5bGU9e3J1bGVzLmxvZ299IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY29udGFpbmVyfSBzdHlsZT17cGljayhydWxlcy5yb290LCAuLi5zcGFjaW5nT3B0aW9ucyl9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30+PC9kaXY+XG4gICAgICAgICAgPERpc3BsYXlUZXh0IGNsYXNzTmFtZT17c3R5bGVzLnRleHR9IHN0eWxlPXtydWxlcy50ZXh0fT5cbiAgICAgICAgICAgIHtydWxlcy50ZXh0Py5jaGlsZHJlbn1cbiAgICAgICAgICA8L0Rpc3BsYXlUZXh0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJ1dHRvbn0gc3R5bGU9e3J1bGVzLmJ1dHRvbn0+XG4gICAgICAgICAgICB7cnVsZXMuYnV0dG9uPy5jaGlsZHJlbn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxlZ2FsfSBzdHlsZT17cnVsZXMubGVnYWx9PlxuICAgICAgICAgICAge3J1bGVzLmxlZ2FsPy5jaGlsZHJlbn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2E+XG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQgQm9udXNcbiIsImltcG9ydCB7IEZDLCBmb3J3YXJkUmVmLCB1c2VSZWYgfSBmcm9tICdwcmVhY3QvY29tcGF0J1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3NyYy9oZWxwZXJzL3JlbmRlcidcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgeyB1c2VDb250YWluZXJEZXZpY2UgfSBmcm9tICdzcmMvaG9va3MvdXNlQ29udGFpbmVyRGV2aWNlJ1xuaW1wb3J0IHsgdXNlQ3VycmVudFN0YXRlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUN1cnJlbnRTdGF0ZSdcbmltcG9ydCB7IHVzZUdldFJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZURldmljZVN0YXRlJ1xuaW1wb3J0IHsgdXNlUGFyc2VSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VQYXJzZVJ1bGVzJ1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICdzcmMvU3RhdGVDb250ZXh0J1xuaW1wb3J0IEJvbnVzIGZyb20gJy4vY29tcG9uZW50cy9Cb251cydcbmltcG9ydCB7IHVzZUV4dHJhY3RGb250cyB9IGZyb20gJ3NyYy9ob29rcy91c2VFeHRyYWN0Rm9udHMnXG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gJ3NyYy9jb21wb25lbnRzL0Nsb3NlSWNvbidcbmltcG9ydCB7IHVzZVBvcHVwIH0gZnJvbSAnc3JjL2hvb2tzL3Byb21vcy91c2VQb3B1cCdcblxuY29uc3QgQ29tcGxleFBvcHVwOiBGQyA9IGZvcndhcmRSZWYoKHsgaWQgfSwgcmVmKSA9PiB7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3QgeyBpc09wZW4sIGhpZGUgfSA9IHVzZVBvcHVwKHJlZilcbiAgY29uc3QgZGV2aWNlID0gdXNlQ29udGFpbmVyRGV2aWNlKHsgdGFyZ2V0UmVmOiByb290UmVmLCBpZCB9KVxuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IGRldmljZVN0YXRlID0gdXNlR2V0UnVsZXMoc3RhdGUsIGRldmljZSlcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKGRldmljZVN0YXRlKVxuICB1c2VFeHRyYWN0Rm9udHMoZGV2aWNlU3RhdGUpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yb290fVxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgZGlzcGxheTogaXNPcGVuID8gJ2ZsZXgnIDogJ25vbmUnXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheX0gc3R5bGU9e3J1bGVzLm92ZXJsYXl9IG9uQ2xpY2s9e2hpZGV9IC8+XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cm9vdFJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5jb250ZW50LCB7XG4gICAgICAgICAgW3N0eWxlcy5kZXNrdG9wXTogZGV2aWNlID09PSAnZGVza3RvcCdcbiAgICAgICAgfSl9XG4gICAgICAgIHN0eWxlPXtydWxlcy5yb290fVxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2V9XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIGNvbG9yOiBydWxlcy5jbG9zZT8uYmFja2dyb3VuZENvbG9yXG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkNsaWNrPXtoaWRlfVxuICAgICAgICA+XG4gICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0gc3R5bGU9e3J1bGVzLnRpdGxlfT5cbiAgICAgICAgICB7cnVsZXMudGl0bGU/LmNoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgICAgICB7KHJ1bGVzLmNoaWxkcmVuIHx8IFtdKS5tYXAoY2hpbGQgPT4gKFxuICAgICAgICAgICAgPFN0YXRlQ29udGV4dCB2YWx1ZT17eyAuLi5jaGlsZCwgZGV2aWNlIH19PlxuICAgICAgICAgICAgICA8Qm9udXMgLz5cbiAgICAgICAgICAgIDwvU3RhdGVDb250ZXh0PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59KVxuXG5leHBvcnQgZGVmYXVsdCByZW5kZXIoPENvbXBsZXhQb3B1cCAvPilcbiIsImltcG9ydCB7IEZDIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgeyB1c2VDdXJyZW50U3RhdGUgfSBmcm9tICdzcmMvaG9va3MvdXNlQ3VycmVudFN0YXRlJ1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5tb2R1bGUuc2NzcydcbmltcG9ydCBEaXNwbGF5VGV4dCBmcm9tICdzcmMvY29tcG9uZW50cy9EaXNwbGF5VGV4dCdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcblxuY29uc3QgTWF0Y2g6IEZDID0gKCkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhzdGF0ZSlcbiAgY29uc3QgZGV2aWNlID0gc3RhdGU/LmRldmljZSB8fCAnZGVza3RvcCdcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5yb290LCB7XG4gICAgICBbc3R5bGVzLmRlc2t0b3BdOiBkZXZpY2UgPT09ICdkZXNrdG9wJ1xuICAgIH0pfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubGVmdH0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbXN9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30gLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxvZ299IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubGVhZ3VlfSBzdHlsZT17cnVsZXMubGVhZ3VlfT57cnVsZXMubGVhZ3VlPy5jaGlsZHJlbn08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm5hbWV9IHN0eWxlPXtydWxlcy50ZWFtc30+e3J1bGVzLnRlYW1zPy50ZWFtQX0g4oCUIHtydWxlcy50ZWFtcz8udGVhbUJ9PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJpZ2h0fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZWFtfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRlYW1Mb2dvfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbU5hbWV9IHN0eWxlPXtydWxlcy50ZWFtc30+e3J1bGVzLnRlYW1zPy50ZWFtQX08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vZGR9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub2RkTGFiZWx9IHN0eWxlPXtydWxlcy5vZGRMYWJlbH0+e3J1bGVzLm9kZExhYmVsPy5jaGlsZHJlbn08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9kZFZhbHVlfSBzdHlsZT17cnVsZXMub2RkVmFsdWV9PntydWxlcy5vZGRWYWx1ZT8uY2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZWFtTG9nb30vPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbU5hbWV9IHN0eWxlPXtydWxlcy50ZWFtc30+e3J1bGVzLnRlYW1zPy50ZWFtQn08L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXRjaFxuIiwiaW1wb3J0IHsgRkMsIGZvcndhcmRSZWYsIHVzZVJlZiB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgc2V0IH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdzcmMvaGVscGVycy9yZW5kZXInXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJ1xuaW1wb3J0IHsgdXNlQ29udGFpbmVyRGV2aWNlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUNvbnRhaW5lckRldmljZSdcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VHZXRSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VEZXZpY2VTdGF0ZSdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnc3JjL1N0YXRlQ29udGV4dCdcbmltcG9ydCBEaXNwbGF5VGV4dCBmcm9tICdzcmMvY29tcG9uZW50cy9EaXNwbGF5VGV4dCdcbmltcG9ydCB7IHN3aXRjaFRleHRBbGlnblRvRmxleCB9IGZyb20gJ3NyYy9oZWxwZXJzL3N3aXRjaFRleHRBbGlnblRvRmxleCdcbmltcG9ydCBNYXRjaCBmcm9tICcuL2NvbXBvbmVudHMvTWF0Y2gnXG5pbXBvcnQgeyB1c2VNZXRyaWNzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZU1ldHJpY3MnXG5pbXBvcnQgeyB1c2VFeHRyYWN0Rm9udHMgfSBmcm9tICdzcmMvaG9va3MvdXNlRXh0cmFjdEZvbnRzJ1xuaW1wb3J0IHsgdXNlUG9wdXAgfSBmcm9tICdzcmMvaG9va3MvcHJvbW9zL3VzZVBvcHVwJ1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tICdzcmMvY29tcG9uZW50cy9DbG9zZUljb24nXG5cbmNvbnN0IEV4cHJlc3NQb3B1cDogRkMgPSBmb3J3YXJkUmVmKCh7IGlkIH0sIHJlZikgPT4ge1xuICBjb25zdCByb290UmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IHsgaXNPcGVuLCBoaWRlIH0gPSB1c2VQb3B1cChyZWYpXG4gIGNvbnN0IGRldmljZSA9IHVzZUNvbnRhaW5lckRldmljZSh7IHRhcmdldFJlZjogcm9vdFJlZiwgaWQgfSlcbiAgY29uc3Qgc3RhdGUgPSB1c2VDdXJyZW50U3RhdGUoKVxuICBjb25zdCBkZXZpY2VTdGF0ZSA9IHVzZUdldFJ1bGVzKHN0YXRlLCBkZXZpY2UpXG4gIHNldChkZXZpY2VTdGF0ZSwgJ2J1dHRvbldyYXBwZXIucGVyY2VudF93aWR0aCcsIGRldmljZVN0YXRlPy5idXR0b25XcmFwcGVyPy53aWR0aClcbiAgc2V0KGRldmljZVN0YXRlLCAnbGVnYWwucGVyY2VudF93aWR0aCcsIGRldmljZVN0YXRlPy5sZWdhbD8ud2lkdGgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhkZXZpY2VTdGF0ZSlcbiAgY29uc3Qgb25DbGljayA9IHVzZU1ldHJpY3MoZGV2aWNlU3RhdGUpXG4gIHVzZUV4dHJhY3RGb250cyhkZXZpY2VTdGF0ZSlcblxuICBjb25zdCBib2R5UnVsZXMgPSB7XG4gICAgLi4ucnVsZXMucm9vdCxcbiAgICBhbGlnbkl0ZW1zOiBzd2l0Y2hUZXh0QWxpZ25Ub0ZsZXgocnVsZXMucm9vdD8uYWxpZ24pXG4gIH1cblxuICBjb25zdCBjb250ZW50UnVsZXMgPSB7XG4gICAgLi4ucnVsZXMuY29udGVudCxcbiAgICBhbGlnbkl0ZW1zOiBzd2l0Y2hUZXh0QWxpZ25Ub0ZsZXgocnVsZXMucm9vdD8uYWxpZ24pXG4gIH1cblxuICBjb25zdCB0ZXh0UnVsZXMgPSB7XG4gICAgLi4ucnVsZXMudGV4dCxcbiAgICB0ZXh0QWxpZ246IHJ1bGVzLnJvb3Q/LmFsaWduXG4gIH1cblxuICBjb25zdCBidXR0b25SdWxlcyA9IHtcbiAgICAuLi5ydWxlcz8uYnV0dG9uLFxuICAgIGp1c3RpZnlDb250ZW50OiBzd2l0Y2hUZXh0QWxpZ25Ub0ZsZXgocnVsZXMucm9vdD8udGV4dEFsaWduKVxuICB9XG5cbiAgY29uc3QgbGVnYWxSdWxlcyA9IHtcbiAgICAuLi5ydWxlcz8ubGVnYWwsXG4gICAganVzdGlmeUNvbnRlbnQ6IHN3aXRjaFRleHRBbGlnblRvRmxleChydWxlcy5yb290Py50ZXh0QWxpZ24pXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJvb3R9XG4gICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICBzdHlsZT17e1xuICAgICAgICBkaXNwbGF5OiBpc09wZW4gPyAnZmxleCcgOiAnbm9uZSdcbiAgICAgIH19XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vdmVybGF5fSBzdHlsZT17cnVsZXMub3ZlcmxheX0gb25DbGljaz17aGlkZX0gLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5jb250ZW50LCB7XG4gICAgICAgICAgW3N0eWxlcy5kZXNrdG9wXTogZGV2aWNlID09PSAnZGVza3RvcCcsXG4gICAgICAgICAgW3N0eWxlcy5sYXB0b3BdOiBkZXZpY2UgPT09ICdsYXB0b3AnLFxuICAgICAgICAgIFtzdHlsZXMudGFibGV0XTogZGV2aWNlID09PSAndGFibGV0J1xuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBjb2xvcjogcnVsZXMuY2xvc2U/LmJhY2tncm91bmRDb2xvclxuICAgICAgICAgIH19XG4gICAgICAgICAgb25DbGljaz17aGlkZX1cbiAgICAgICAgPlxuICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGEgcmVmPXtyb290UmVmfSBocmVmPXtydWxlcy5yb290Py5vZmZlcn0gdGFyZ2V0PSdfYmxhbmsnIHJlbD0nbm9mb2xsb3cgbm9vcGVuZXIgbm9yZWZlcnJlcicgb25DbGljaz17b25DbGlja30+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fSBzdHlsZT17Ym9keVJ1bGVzfT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZH0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9IHN0eWxlPXtydWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3J1bGVzLnRpdGxlPy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30gc3R5bGU9e3J1bGVzLmxvZ299IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0gc3R5bGU9e2NvbnRlbnRSdWxlc30+XG4gICAgICAgICAgICAgIHsocnVsZXMuY2hpbGRyZW4gfHwgW10pLm1hcChjaGlsZCA9PiAoXG4gICAgICAgICAgICAgICAgPFN0YXRlQ29udGV4dCB2YWx1ZT17eyAuLi5jaGlsZCwgZGV2aWNlIH19PlxuICAgICAgICAgICAgICAgICAgPE1hdGNoIC8+XG4gICAgICAgICAgICAgICAgPC9TdGF0ZUNvbnRleHQ+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxEaXNwbGF5VGV4dCBjbGFzc05hbWU9e3N0eWxlcy50ZXh0fSBzdHlsZT17dGV4dFJ1bGVzfT5cbiAgICAgICAgICAgICAge3J1bGVzLnRleHQ/LmNoaWxkcmVufVxuICAgICAgICAgICAgPC9EaXNwbGF5VGV4dD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYnV0dG9ufSBzdHlsZT17cnVsZXMuYnV0dG9uV3JhcHBlcn0+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYnV0dG9uSGVhZH0gc3R5bGU9e3J1bGVzLmJ1dHRvbkhlYWR9PlxuICAgICAgICAgICAgICAgIHtydWxlcy5idXR0b25IZWFkPy5jaGlsZHJlbn1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYnV0dG9uVGFyZ2V0fSBzdHlsZT17YnV0dG9uUnVsZXN9PlxuICAgICAgICAgICAgICAgIHtydWxlcy5idXR0b24/LmNoaWxkcmVufVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5sZWdhbH0gc3R5bGU9e2xlZ2FsUnVsZXN9PlxuICAgICAgICAgICAgICB7cnVsZXMubGVnYWw/LmNoaWxkcmVufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59KVxuXG5leHBvcnQgZGVmYXVsdCByZW5kZXIoPEV4cHJlc3NQb3B1cCAvPilcbiIsImltcG9ydCB7IEZDIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJ1xuaW1wb3J0IHsgdXNlQ3VycmVudFN0YXRlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUN1cnJlbnRTdGF0ZSdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcbmltcG9ydCB7IHVzZVRvZ2dsZSB9IGZyb20gJ3NyYy9ob29rcy91c2VUb2dnbGUnXG5pbXBvcnQgeyB1c2VNZXRyaWNzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZU1ldHJpY3MnXG5cbmNvbnN0IEJvbnVzOiBGQyA9ICgpID0+IHtcbiAgY29uc3Qgc3RhdGUgPSB1c2VDdXJyZW50U3RhdGUoKVxuICBjb25zdCBydWxlcyA9IHVzZVBhcnNlUnVsZXMoc3RhdGUpXG4gIGNvbnN0IFtpc09wZW4sIHRvZ2dsZUlzT3Blbl0gPSB1c2VUb2dnbGUoKVxuICBjb25zdCBvbkNsaWNrID0gdXNlTWV0cmljcyhzdGF0ZSlcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm9vdH0gc3R5bGU9e3J1bGVzLnJvb3R9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5iYWNrZ3JvdW5kfSBzdHlsZT17cnVsZXMuYmFja2dyb3VuZH0gLz5cbiAgICAgIDxhXG4gICAgICAgIGhyZWY9e3J1bGVzLnJvb3Q/Lm9mZmVyfVxuICAgICAgICB0YXJnZXQ9J19ibGFuaydcbiAgICAgICAgcmVsPSdub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyJ1xuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93Rmlyc3R9IHN0eWxlPXtydWxlcy5yb3dGaXJzdH0+XG4gICAgICAgICAgICB7cnVsZXMucm93Rmlyc3Q/LmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucm93U2Vjb25kfSBzdHlsZT17cnVsZXMucm93U2Vjb25kfT5cbiAgICAgICAgICAgIHtydWxlcy5yb3dTZWNvbmQ/LmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYm9va21ha2VyfT53aW5saW5lPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJ1dHRvbn0gc3R5bGU9e3J1bGVzLmJ1dHRvbn0+XG4gICAgICAgICAge3J1bGVzLmJ1dHRvbj8uY2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLmxlZ2FsLCB7XG4gICAgICAgICAgW3N0eWxlcy5sZWdhbE9wZW5dOiBpc09wZW5cbiAgICAgICAgfSl9XG4gICAgICAgIHN0eWxlPXtydWxlcy5sZWdhbEluZm99XG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmxlZ2FsVGV4dH0+XG4gICAgICAgICAgPHNwYW4+e3J1bGVzLmxlZ2FsSW5mbz8uY2hpbGRyZW59PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmxlZ2FsQnV0dG9ufSBzdHlsZT17cnVsZXMubGVnYWxJbmZvQnV0dG9ufSBvbkNsaWNrPXt0b2dnbGVJc09wZW59PlxuICAgICAgICAgICAge2lzT3BlbiA/IHJ1bGVzLmxlZ2FsSW5mb0J1dHRvbj8ub3BlblRleHQgOiBydWxlcy5sZWdhbEluZm9CdXR0b24/LmNsb3NlVGV4dH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IEJvbnVzXG4iLCJpbXBvcnQgeyBGQywgdXNlUmVmIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VHZXRSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VEZXZpY2VTdGF0ZSdcbmltcG9ydCB7IHVzZVBhcnNlUnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlUGFyc2VSdWxlcydcbmltcG9ydCBTdGF0ZUNvbnRleHQgZnJvbSAnc3JjL1N0YXRlQ29udGV4dCdcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3NyYy9oZWxwZXJzL3JlbmRlcidcbmltcG9ydCBCb251cyBmcm9tICcuL2NvbXBvbmVudHMvQm9udXMnXG5cbmNvbnN0IEJvbnVzQ2FyZDogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHJvb3RSZWYgPSB1c2VSZWYobnVsbClcbiAgY29uc3Qgc3RhdGUgPSB1c2VDdXJyZW50U3RhdGUoKVxuICBjb25zdCBkZXZpY2UgPSAnZGVza3RvcCdcbiAgY29uc3QgZGV2aWNlU3RhdGUgPSB1c2VHZXRSdWxlcyhzdGF0ZSwgZGV2aWNlKVxuICBjb25zdCBydWxlcyA9IHVzZVBhcnNlUnVsZXMoZGV2aWNlU3RhdGUpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHJlZj17cm9vdFJlZn0+XG4gICAgICB7KHJ1bGVzPy5jaGlsZHJlbiB8fCBbXSkubWFwKGNoaWxkID0+IChcbiAgICAgICAgPFN0YXRlQ29udGV4dCB2YWx1ZT17Y2hpbGR9PlxuICAgICAgICAgIDxCb251cyAvPlxuICAgICAgICA8L1N0YXRlQ29udGV4dD5cbiAgICAgICkpfVxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlbmRlcig8Qm9udXNDYXJkIC8+KVxuIiwiaW1wb3J0IHsgRkMgfSBmcm9tICdwcmVhY3QvY29tcGF0J1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IG9taXQgfSBmcm9tIFwiQGFkc3RvcmUvdXRpbHNcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMubW9kdWxlLnNjc3MnXG5pbXBvcnQgeyB1c2VDdXJyZW50U3RhdGUgfSBmcm9tICdzcmMvaG9va3MvdXNlQ3VycmVudFN0YXRlJ1xuaW1wb3J0IHsgdXNlUGFyc2VSdWxlcyB9IGZyb20gJ3NyYy9ob29rcy91c2VQYXJzZVJ1bGVzJ1xuaW1wb3J0IHsgYmFja2dyb3VuZE9wdGlvbnMgfSBmcm9tIFwic3JjL2hlbHBlcnMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRleHQ6IEZDID0gKCkgPT4ge1xuICBjb25zdCBzdGF0ZSA9IHVzZUN1cnJlbnRTdGF0ZSgpXG4gIGNvbnN0IHJ1bGVzID0gdXNlUGFyc2VSdWxlcyhzdGF0ZSlcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMucm9vdCwge1xuICAgICAgICBbc3R5bGVzLmRlc2t0b3BdOiBzdGF0ZT8uZGV2aWNlID09PSAnZGVza3RvcCdcbiAgICAgIH0pfVxuICAgICAgc3R5bGU9e29taXQocnVsZXMucm9vdCwgLi4uYmFja2dyb3VuZE9wdGlvbnMpfVxuICAgID5cbiAgICAgIHtydWxlcy5yb290Py5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBUZXh0XG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJAYWRzdG9yZS91dGlsc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5tb2R1bGUuc2NzcydcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgeyBiYWNrZ3JvdW5kT3B0aW9ucyB9IGZyb20gXCJzcmMvaGVscGVycy9jb25zdGFudHNcIjtcblxuY29uc3QgTWF0Y2hlczogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ3VycmVudFN0YXRlKClcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKHN0YXRlKVxuXG4gIGNvbnN0IHJvb3RSdWxlcyA9IG9taXQocnVsZXMucm9vdCwgLi4uYmFja2dyb3VuZE9wdGlvbnMpXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnJvb3R9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vZGR9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9kZExvZ299IHN0eWxlPXtyb290UnVsZXN9IC8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub2RkTGFiZWx9IHN0eWxlPXtyb290UnVsZXN9PntydWxlcy5yb290Py52YWx1ZU9uZX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb2VmfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb2VmSGVhZH0gc3R5bGU9e3J1bGVzLmNvZWZ9Plg8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb2VmVmFsdWV9IHN0eWxlPXtyb290UnVsZXN9PntydWxlcy5yb290Py52YWx1ZVh9PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5vZGQsIHN0eWxlcy5vZGRSZXZlcnNlKX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub2RkTG9nb30gc3R5bGU9e3Jvb3RSdWxlc30vPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9kZExhYmVsfSBzdHlsZT17cm9vdFJ1bGVzfT57cnVsZXMucm9vdD8udmFsdWVUd299PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXRjaGVzXG4iLCJpbXBvcnQgeyBGQyB9IGZyb20gJ3ByZWFjdC9jb21wYXQnXG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0IHsgb21pdCB9IGZyb20gXCJAYWRzdG9yZS91dGlsc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3N0eWxlcy5tb2R1bGUuc2NzcydcbmltcG9ydCB7IHVzZUN1cnJlbnRTdGF0ZSB9IGZyb20gJ3NyYy9ob29rcy91c2VDdXJyZW50U3RhdGUnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgeyBiYWNrZ3JvdW5kT3B0aW9ucyB9IGZyb20gXCJzcmMvaGVscGVycy9jb25zdGFudHNcIjtcblxuY29uc3QgTWF0Y2hlc09uZVR3bzogRkMgPSAoKSA9PiB7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ3VycmVudFN0YXRlKClcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKHN0YXRlKVxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5yb290LCB7XG4gICAgICAgIFtzdHlsZXMuZGVza3RvcF06IHN0YXRlPy5kZXZpY2UgPT09ICdkZXNrdG9wJyxcbiAgICAgICAgW3N0eWxlcy5sYXB0b3BdOiBzdGF0ZT8uZGV2aWNlID09PSAnbGFwdG9wJyxcbiAgICAgICAgW3N0eWxlcy50YWJsZXRdOiBzdGF0ZT8uZGV2aWNlID09PSAndGFibGV0J1xuICAgICAgfSl9XG4gICAgICBzdHlsZT17b21pdChydWxlcy5yb290LCAuLi5iYWNrZ3JvdW5kT3B0aW9ucyl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVMYWJlbH0gc3R5bGU9e3J1bGVzLnRpdGxlTGFiZWx9PlxuICAgICAgICAgIHtydWxlcy50aXRsZUxhYmVsLmNoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVZhbHVlfSBzdHlsZT17cnVsZXMudGl0bGVWYWx1ZX0+XG4gICAgICAgICAge3J1bGVzLnRpdGxlVmFsdWUuY2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRlYW19PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbUxvZ299IHN0eWxlPXtydWxlcy5sb2dvfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbU5hbWV9IHN0eWxlPXtydWxlcy50ZWFtTmFtZX0+XG4gICAgICAgICAgICB7cnVsZXMudGVhbTFOYW1lLmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbVZhbHVlfSBzdHlsZT17cnVsZXMudmFsdWV9PlxuICAgICAgICAgICAge3J1bGVzLnZhbHVlMS5jaGlsZHJlbn1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGVhbX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZWFtTG9nb30gc3R5bGU9e3J1bGVzLmxvZ299IC8+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZWFtTmFtZX0gc3R5bGU9e3J1bGVzLnRlYW1OYW1lfT5cbiAgICAgICAgICAgIHtydWxlcy50ZWFtMk5hbWUuY2hpbGRyZW59XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50ZWFtVmFsdWV9IHN0eWxlPXtydWxlcy52YWx1ZX0+XG4gICAgICAgICAgICB7cnVsZXMudmFsdWUyLmNoaWxkcmVufVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hdGNoZXNPbmVUd29cbiIsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicHJlYWN0L2NvbXBhdFwiO1xuXG5pbnRlcmZhY2UgU2xpZGUge1xuICBhbmltYXRpb25EdXJhdGlvbjogbnVtYmVyXG59XG5cbmNvbnN0IHVzZUFuaW1hdGVkTGlzdCA9IChzbGlkZXM6IFNsaWRlW10gPSBbXSkgPT4ge1xuICBjb25zdCBpdGVtc0NvdW50ID0gc2xpZGVzLmxlbmd0aFxuICBjb25zdCBbYW5pbWF0ZWRJZHgsIHNldEFuaW1hdGVkSWR4XSA9IHVzZVN0YXRlPG51bWJlcj4oMClcbiAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSBzbGlkZXNbYW5pbWF0ZWRJZHggfHwgMF0/LmFuaW1hdGlvbkR1cmF0aW9uXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBnb05leHQgPSAoKSA9PiB7XG4gICAgICBzZXRBbmltYXRlZElkeChpbmRleCA9PiB7XG4gICAgICAgIGlmIChpbmRleCArIDEgPCBpdGVtc0NvdW50KSByZXR1cm4gaW5kZXggKyAxXG4gICAgICAgIHJldHVybiAwXG4gICAgICB9KVxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KGdvTmV4dCwgYW5pbWF0aW9uRHVyYXRpb24pXG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXQpXG4gIH0sIFtzZXRBbmltYXRlZElkeCwgaXRlbXNDb3VudCwgYW5pbWF0aW9uRHVyYXRpb24sIGFuaW1hdGVkSWR4XSlcblxuICByZXR1cm4gYW5pbWF0ZWRJZHhcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQW5pbWF0ZWRMaXN0XG4iLCJpbXBvcnQgeyBGQywgdXNlUmVmIH0gZnJvbSAncHJlYWN0L2NvbXBhdCdcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnQGFkc3RvcmUvdXRpbHMnXG5pbXBvcnQgeyB1c2VDdXJyZW50U3RhdGUgfSBmcm9tICdzcmMvaG9va3MvdXNlQ3VycmVudFN0YXRlJ1xuaW1wb3J0IHsgdXNlR2V0UnVsZXMgfSBmcm9tICdzcmMvaG9va3MvdXNlRGV2aWNlU3RhdGUnXG5pbXBvcnQgeyB1c2VQYXJzZVJ1bGVzIH0gZnJvbSAnc3JjL2hvb2tzL3VzZVBhcnNlUnVsZXMnXG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJ3NyYy9TdGF0ZUNvbnRleHQnXG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdzcmMvaGVscGVycy9yZW5kZXInXG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLm1vZHVsZS5zY3NzJ1xuaW1wb3J0IFRleHQgZnJvbSAnLi9jb21wb25lbnRzL1RleHQnXG5pbXBvcnQgTWF0Y2hlcyBmcm9tICcuL2NvbXBvbmVudHMvTWF0Y2hlcydcbmltcG9ydCBNYXRjaGVzT25lVHdvIGZyb20gJy4vY29tcG9uZW50cy9NYXRjaGVzT25lVHdvJ1xuaW1wb3J0IHsgdXNlQ29udGFpbmVyRGV2aWNlIH0gZnJvbSAnc3JjL2hvb2tzL3VzZUNvbnRhaW5lckRldmljZSdcbmltcG9ydCB1c2VBbmltYXRlZExpc3QgZnJvbSAnc3JjL2hvb2tzL3VzZUFuaW1hdGVkTGlzdCdcbmltcG9ydCB7IHVzZU1ldHJpY3MgfSBmcm9tICdzcmMvaG9va3MvdXNlTWV0cmljcydcbmltcG9ydCB7IGJhY2tncm91bmRPcHRpb25zIH0gZnJvbSAnc3JjL2hlbHBlcnMvY29uc3RhbnRzJ1xuXG5jb25zdCBERUZBVUxUX0FOSU1BVElPTl9TUEVFRCA9IDM3MDBcblxuY29uc3QgV2lkZUNhcmQ6IEZDID0gKCkgPT4ge1xuICBjb25zdCByb290UmVmID0gdXNlUmVmKG51bGwpXG4gIGNvbnN0IHN0YXRlID0gdXNlQ3VycmVudFN0YXRlKClcbiAgY29uc3QgZGV2aWNlID0gdXNlQ29udGFpbmVyRGV2aWNlKHsgdGFyZ2V0UmVmOiByb290UmVmIH0pXG4gIGNvbnN0IGRldmljZVN0YXRlID0gdXNlR2V0UnVsZXMoc3RhdGUsIGRldmljZSlcbiAgY29uc3QgcnVsZXMgPSB1c2VQYXJzZVJ1bGVzKGRldmljZVN0YXRlKVxuICBjb25zdCBvbkNsaWNrID0gdXNlTWV0cmljcyhkZXZpY2VTdGF0ZSlcblxuICBjb25zdCBnZXRDaGlsZCA9IChuYW1lOiBzdHJpbmcpID0+XG4gICAgKHtcbiAgICAgIHRleHQ6IDxUZXh0IC8+LFxuICAgICAgbWF0Y2hlczogPE1hdGNoZXMgLz4sXG4gICAgICBtYXRjaGVzT25lVHdvOiA8TWF0Y2hlc09uZVR3byAvPlxuICAgIH1bbmFtZV0pXG5cbiAgY29uc3Qgc2xpZGVzTGlzdCA9IChydWxlcy5jaGlsZHJlbiB8fCBbXSkuZmlsdGVyKEJvb2xlYW4pLm1hcChzbGlkZSA9PiAoe1xuICAgIC4uLnNsaWRlLFxuICAgIGFuaW1hdGlvbk5hbWU6IHNsaWRlPy5yb290Py5hbmltYXRpb25OYW1lLFxuICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBzbGlkZT8ucm9vdD8uYW5pbWF0aW9uRHVyYXRpb24gfHwgREVGQVVMVF9BTklNQVRJT05fU1BFRURcbiAgfSkpXG5cbiAgY29uc3QgY3VycmVudFNsaWRlID0gdXNlQW5pbWF0ZWRMaXN0KHNsaWRlc0xpc3QpXG4gIGNvbnN0IHNsaWRlUnVsZXMgPSB1c2VQYXJzZVJ1bGVzKHNsaWRlc0xpc3RbY3VycmVudFNsaWRlXSB8fCB7fSlcblxuICBjb25zdCBiYWNrZ3JvdW5kUnVsZXMgPSBzbGlkZVJ1bGVzPy5yb290Py5oYXNDdXN0b21CYWNrZ3JvdW5kXG4gICAgPyBwaWNrKHNsaWRlUnVsZXM/LnJvb3QgfHwge30sIC4uLmJhY2tncm91bmRPcHRpb25zKVxuICAgIDogcGljayhydWxlcy5iYWNrZ3JvdW5kLCAuLi5iYWNrZ3JvdW5kT3B0aW9ucylcblxuICByZXR1cm4gKFxuICAgIDxhXG4gICAgICByZWY9e3Jvb3RSZWZ9XG4gICAgICBocmVmPXtydWxlcy5yb290Py5vZmZlcn1cbiAgICAgIHRhcmdldD0nX2JsYW5rJ1xuICAgICAgcmVsPSdub2ZvbGxvdyBub29wZW5lciBub3JlZmVycmVyJ1xuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy5yb290LCB7XG4gICAgICAgIFtzdHlsZXMuZGVza3RvcF06IGRldmljZSA9PT0gJ2Rlc2t0b3AnLFxuICAgICAgICBbc3R5bGVzLmxhcHRvcF06IGRldmljZSA9PT0gJ2xhcHRvcCcsXG4gICAgICAgIFtzdHlsZXMudGFibGV0XTogZGV2aWNlID09PSAndGFibGV0JyxcbiAgICAgICAgW3N0eWxlcy52YXJpYW50Ml06IHJ1bGVzLnJvb3Q/LnZhcmlhbnQgPT09ICd2YXJpYW50MidcbiAgICAgIH0pfVxuICAgICAgc3R5bGU9e3J1bGVzLnJvb3R9XG4gICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuYmFja2dyb3VuZH0gc3R5bGU9e2JhY2tncm91bmRSdWxlc30gLz5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucHJvbW90aW9ufSBzdHlsZT17cnVsZXMucHJvbW90aW9ufT5cbiAgICAgICAge3J1bGVzLnByb21vdGlvbj8uY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jb250ZW50fT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5sZWZ0fT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxvZ299IHN0eWxlPXtydWxlcy5sb2dvfSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5jZW50ZXJ9PlxuICAgICAgICAgIHsocnVsZXMuY2hpbGRyZW4gfHwgW10pLm1hcCgoY2hpbGQsIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNsaWRlfVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGFuaW1hdGlvbk5hbWU6IGN1cnJlbnRTbGlkZSA9PT0gaW5kZXggPyBzdHlsZXNbY2hpbGQucm9vdD8uYW5pbWF0aW9uTmFtZSB8fCAnZmFkZS1pbi1vdXQnXSA6ICdub25lJyxcbiAgICAgICAgICAgICAgICBhbmltYXRpb25EdXJhdGlvbjogYCR7Y2hpbGQucm9vdD8uYW5pbWF0aW9uRHVyYXRpb259bXNgXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGF0ZUNvbnRleHQgdmFsdWU9e3sgLi4uY2hpbGQsIGRldmljZSB9fT57Z2V0Q2hpbGQoY2hpbGQubmFtZSl9PC9TdGF0ZUNvbnRleHQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMucmlnaHR9PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMubG9nb30gc3R5bGU9e3J1bGVzLmxvZ299IC8+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5idXR0b259IHN0eWxlPXtydWxlcy5idXR0b259PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmxvZ299IHN0eWxlPXtydWxlcy5sb2dvfSAvPlxuICAgICAgICAgICAgICB7cnVsZXMuYnV0dG9uPy5jaGlsZHJlbn1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvYT5cbiAgKVxufVxuXG5leHBvcnQgZGVmYXVsdCByZW5kZXIoPFdpZGVDYXJkIC8+KVxuIiwiaW1wb3J0IHsgQ2FsbGJhY2ssIGRldmljZXMgYXMgZGV2aWNlc0xpc3QsIGdldCwgaXNWYWxpZFRlbXBsYXRlLCBzZXQgfSBmcm9tICdAYWRzdG9yZS91dGlscydcbmltcG9ydCB7IEFueVN0YXRlIH0gZnJvbSAnc3JjL3Byb21vcy9TaW1wbGVHaWZ0L3R5cGVzJ1xuXG5jb25zdCBtb2RpZnlTdGF0ZSA9IChcbiAgc3RhdGU6IEFueVN0YXRlLFxuICBsYXllcjogc3RyaW5nLFxuICBydWxlOiBzdHJpbmcsXG4gIHZhbHVlOiB1bmtub3duIHwgQ2FsbGJhY2s8W3ByZXZWYWx1ZTogdW5rbm93bl0+LFxuICBkZXZpY2VzID0gZGV2aWNlc0xpc3RcbikgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfVxuXG4gIGRldmljZXMuZm9yRWFjaChkZXZpY2UgPT4ge1xuICAgIG5ld1N0YXRlW2xheWVyXSA9IHtcbiAgICAgIC4uLm5ld1N0YXRlW2xheWVyXSxcbiAgICAgIFtkZXZpY2VdOiB7XG4gICAgICAgIC4uLm5ld1N0YXRlW2xheWVyXVtkZXZpY2VdLFxuICAgICAgICBbcnVsZV06IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKGdldChuZXdTdGF0ZSwgYCR7bGF5ZXJ9LiR7ZGV2aWNlfS4ke3J1bGV9YCkpIDogdmFsdWVcbiAgICAgIH1cbiAgICB9XG4gIH0pXG4gIHJldHVybiBuZXdTdGF0ZVxufVxuXG5leHBvcnQgeyBtb2RpZnlTdGF0ZSwgaXNWYWxpZFRlbXBsYXRlIH1cbiIsInZhciByZXNpemVPYnNlcnZlcnMgPSBbXTtcbmV4cG9ydCB7IHJlc2l6ZU9ic2VydmVycyB9O1xuIiwiaW1wb3J0IHsgcmVzaXplT2JzZXJ2ZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXplT2JzZXJ2ZXJzJztcbnZhciBoYXNBY3RpdmVPYnNlcnZhdGlvbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlc2l6ZU9ic2VydmVycy5zb21lKGZ1bmN0aW9uIChybykgeyByZXR1cm4gcm8uYWN0aXZlVGFyZ2V0cy5sZW5ndGggPiAwOyB9KTtcbn07XG5leHBvcnQgeyBoYXNBY3RpdmVPYnNlcnZhdGlvbnMgfTtcbiIsImltcG9ydCB7IHJlc2l6ZU9ic2VydmVycyB9IGZyb20gJy4uL3V0aWxzL3Jlc2l6ZU9ic2VydmVycyc7XG52YXIgaGFzU2tpcHBlZE9ic2VydmF0aW9ucyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmVzaXplT2JzZXJ2ZXJzLnNvbWUoZnVuY3Rpb24gKHJvKSB7IHJldHVybiByby5za2lwcGVkVGFyZ2V0cy5sZW5ndGggPiAwOyB9KTtcbn07XG5leHBvcnQgeyBoYXNTa2lwcGVkT2JzZXJ2YXRpb25zIH07XG4iLCJ2YXIgbXNnID0gJ1Jlc2l6ZU9ic2VydmVyIGxvb3AgY29tcGxldGVkIHdpdGggdW5kZWxpdmVyZWQgbm90aWZpY2F0aW9ucy4nO1xudmFyIGRlbGl2ZXJSZXNpemVMb29wRXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV2ZW50O1xuICAgIGlmICh0eXBlb2YgRXJyb3JFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBldmVudCA9IG5ldyBFcnJvckV2ZW50KCdlcnJvcicsIHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1zZ1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICAgIGV2ZW50LmluaXRFdmVudCgnZXJyb3InLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICBldmVudC5tZXNzYWdlID0gbXNnO1xuICAgIH1cbiAgICB3aW5kb3cuZGlzcGF0Y2hFdmVudChldmVudCk7XG59O1xuZXhwb3J0IHsgZGVsaXZlclJlc2l6ZUxvb3BFcnJvciB9O1xuIiwidmFyIFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucztcbihmdW5jdGlvbiAoUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zKSB7XG4gICAgUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zW1wiQk9SREVSX0JPWFwiXSA9IFwiYm9yZGVyLWJveFwiO1xuICAgIFJlc2l6ZU9ic2VydmVyQm94T3B0aW9uc1tcIkNPTlRFTlRfQk9YXCJdID0gXCJjb250ZW50LWJveFwiO1xuICAgIFJlc2l6ZU9ic2VydmVyQm94T3B0aW9uc1tcIkRFVklDRV9QSVhFTF9DT05URU5UX0JPWFwiXSA9IFwiZGV2aWNlLXBpeGVsLWNvbnRlbnQtYm94XCI7XG59KShSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfHwgKFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyA9IHt9KSk7XG5leHBvcnQgeyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfTtcbiIsImV4cG9ydCB2YXIgZnJlZXplID0gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmopOyB9O1xuIiwiaW1wb3J0IHsgZnJlZXplIH0gZnJvbSAnLi91dGlscy9mcmVlemUnO1xudmFyIFJlc2l6ZU9ic2VydmVyU2l6ZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJTaXplKGlubGluZVNpemUsIGJsb2NrU2l6ZSkge1xuICAgICAgICB0aGlzLmlubGluZVNpemUgPSBpbmxpbmVTaXplO1xuICAgICAgICB0aGlzLmJsb2NrU2l6ZSA9IGJsb2NrU2l6ZTtcbiAgICAgICAgZnJlZXplKHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJTaXplO1xufSgpKTtcbmV4cG9ydCB7IFJlc2l6ZU9ic2VydmVyU2l6ZSB9O1xuIiwiaW1wb3J0IHsgZnJlZXplIH0gZnJvbSAnLi91dGlscy9mcmVlemUnO1xudmFyIERPTVJlY3RSZWFkT25seSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRE9NUmVjdFJlYWRPbmx5KHgsIHksIHdpZHRoLCBoZWlnaHQpIHtcbiAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICAgICAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy50b3AgPSB0aGlzLnk7XG4gICAgICAgIHRoaXMubGVmdCA9IHRoaXMueDtcbiAgICAgICAgdGhpcy5ib3R0b20gPSB0aGlzLnRvcCArIHRoaXMuaGVpZ2h0O1xuICAgICAgICB0aGlzLnJpZ2h0ID0gdGhpcy5sZWZ0ICsgdGhpcy53aWR0aDtcbiAgICAgICAgcmV0dXJuIGZyZWV6ZSh0aGlzKTtcbiAgICB9XG4gICAgRE9NUmVjdFJlYWRPbmx5LnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueSwgdG9wID0gX2EudG9wLCByaWdodCA9IF9hLnJpZ2h0LCBib3R0b20gPSBfYS5ib3R0b20sIGxlZnQgPSBfYS5sZWZ0LCB3aWR0aCA9IF9hLndpZHRoLCBoZWlnaHQgPSBfYS5oZWlnaHQ7XG4gICAgICAgIHJldHVybiB7IHg6IHgsIHk6IHksIHRvcDogdG9wLCByaWdodDogcmlnaHQsIGJvdHRvbTogYm90dG9tLCBsZWZ0OiBsZWZ0LCB3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0IH07XG4gICAgfTtcbiAgICBET01SZWN0UmVhZE9ubHkuZnJvbVJlY3QgPSBmdW5jdGlvbiAocmVjdGFuZ2xlKSB7XG4gICAgICAgIHJldHVybiBuZXcgRE9NUmVjdFJlYWRPbmx5KHJlY3RhbmdsZS54LCByZWN0YW5nbGUueSwgcmVjdGFuZ2xlLndpZHRoLCByZWN0YW5nbGUuaGVpZ2h0KTtcbiAgICB9O1xuICAgIHJldHVybiBET01SZWN0UmVhZE9ubHk7XG59KCkpO1xuZXhwb3J0IHsgRE9NUmVjdFJlYWRPbmx5IH07XG4iLCJ2YXIgaXNTVkcgPSBmdW5jdGlvbiAodGFyZ2V0KSB7IHJldHVybiB0YXJnZXQgaW5zdGFuY2VvZiBTVkdFbGVtZW50ICYmICdnZXRCQm94JyBpbiB0YXJnZXQ7IH07XG52YXIgaXNIaWRkZW4gPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgaWYgKGlzU1ZHKHRhcmdldCkpIHtcbiAgICAgICAgdmFyIF9hID0gdGFyZ2V0LmdldEJCb3goKSwgd2lkdGggPSBfYS53aWR0aCwgaGVpZ2h0ID0gX2EuaGVpZ2h0O1xuICAgICAgICByZXR1cm4gIXdpZHRoICYmICFoZWlnaHQ7XG4gICAgfVxuICAgIHZhciBfYiA9IHRhcmdldCwgb2Zmc2V0V2lkdGggPSBfYi5vZmZzZXRXaWR0aCwgb2Zmc2V0SGVpZ2h0ID0gX2Iub2Zmc2V0SGVpZ2h0O1xuICAgIHJldHVybiAhKG9mZnNldFdpZHRoIHx8IG9mZnNldEhlaWdodCB8fCB0YXJnZXQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpO1xufTtcbnZhciBpc0VsZW1lbnQgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmIChvYmogaW5zdGFuY2VvZiBFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB2YXIgc2NvcGUgPSAoX2EgPSBvYmogPT09IG51bGwgfHwgb2JqID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvYmoub3duZXJEb2N1bWVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRlZmF1bHRWaWV3O1xuICAgIHJldHVybiAhIShzY29wZSAmJiBvYmogaW5zdGFuY2VvZiBzY29wZS5FbGVtZW50KTtcbn07XG52YXIgaXNSZXBsYWNlZEVsZW1lbnQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgc3dpdGNoICh0YXJnZXQudGFnTmFtZSkge1xuICAgICAgICBjYXNlICdJTlBVVCc6XG4gICAgICAgICAgICBpZiAodGFyZ2V0LnR5cGUgIT09ICdpbWFnZScpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnVklERU8nOlxuICAgICAgICBjYXNlICdBVURJTyc6XG4gICAgICAgIGNhc2UgJ0VNQkVEJzpcbiAgICAgICAgY2FzZSAnT0JKRUNUJzpcbiAgICAgICAgY2FzZSAnQ0FOVkFTJzpcbiAgICAgICAgY2FzZSAnSUZSQU1FJzpcbiAgICAgICAgY2FzZSAnSU1HJzpcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IHsgaXNTVkcsIGlzSGlkZGVuLCBpc0VsZW1lbnQsIGlzUmVwbGFjZWRFbGVtZW50IH07XG4iLCJleHBvcnQgdmFyIGdsb2JhbCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93IDoge307XG4iLCJpbXBvcnQgeyBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMgfSBmcm9tICcuLi9SZXNpemVPYnNlcnZlckJveE9wdGlvbnMnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTaXplIH0gZnJvbSAnLi4vUmVzaXplT2JzZXJ2ZXJTaXplJztcbmltcG9ydCB7IERPTVJlY3RSZWFkT25seSB9IGZyb20gJy4uL0RPTVJlY3RSZWFkT25seSc7XG5pbXBvcnQgeyBpc1NWRywgaXNIaWRkZW4gfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbmltcG9ydCB7IGZyZWV6ZSB9IGZyb20gJy4uL3V0aWxzL2ZyZWV6ZSc7XG5pbXBvcnQgeyBnbG9iYWwgfSBmcm9tICcuLi91dGlscy9nbG9iYWwnO1xudmFyIGNhY2hlID0gbmV3IFdlYWtNYXAoKTtcbnZhciBzY3JvbGxSZWdleHAgPSAvYXV0b3xzY3JvbGwvO1xudmFyIHZlcnRpY2FsUmVnZXhwID0gL150Ynx2ZXJ0aWNhbC87XG52YXIgSUUgPSAoL21zaWV8dHJpZGVudC9pKS50ZXN0KGdsb2JhbC5uYXZpZ2F0b3IgJiYgZ2xvYmFsLm5hdmlnYXRvci51c2VyQWdlbnQpO1xudmFyIHBhcnNlRGltZW5zaW9uID0gZnVuY3Rpb24gKHBpeGVsKSB7IHJldHVybiBwYXJzZUZsb2F0KHBpeGVsIHx8ICcwJyk7IH07XG52YXIgc2l6ZSA9IGZ1bmN0aW9uIChpbmxpbmVTaXplLCBibG9ja1NpemUsIHN3aXRjaFNpemVzKSB7XG4gICAgaWYgKGlubGluZVNpemUgPT09IHZvaWQgMCkgeyBpbmxpbmVTaXplID0gMDsgfVxuICAgIGlmIChibG9ja1NpemUgPT09IHZvaWQgMCkgeyBibG9ja1NpemUgPSAwOyB9XG4gICAgaWYgKHN3aXRjaFNpemVzID09PSB2b2lkIDApIHsgc3dpdGNoU2l6ZXMgPSBmYWxzZTsgfVxuICAgIHJldHVybiBuZXcgUmVzaXplT2JzZXJ2ZXJTaXplKChzd2l0Y2hTaXplcyA/IGJsb2NrU2l6ZSA6IGlubGluZVNpemUpIHx8IDAsIChzd2l0Y2hTaXplcyA/IGlubGluZVNpemUgOiBibG9ja1NpemUpIHx8IDApO1xufTtcbnZhciB6ZXJvQm94ZXMgPSBmcmVlemUoe1xuICAgIGRldmljZVBpeGVsQ29udGVudEJveFNpemU6IHNpemUoKSxcbiAgICBib3JkZXJCb3hTaXplOiBzaXplKCksXG4gICAgY29udGVudEJveFNpemU6IHNpemUoKSxcbiAgICBjb250ZW50UmVjdDogbmV3IERPTVJlY3RSZWFkT25seSgwLCAwLCAwLCAwKVxufSk7XG52YXIgY2FsY3VsYXRlQm94U2l6ZXMgPSBmdW5jdGlvbiAodGFyZ2V0LCBmb3JjZVJlY2FsY3VsYXRpb24pIHtcbiAgICBpZiAoZm9yY2VSZWNhbGN1bGF0aW9uID09PSB2b2lkIDApIHsgZm9yY2VSZWNhbGN1bGF0aW9uID0gZmFsc2U7IH1cbiAgICBpZiAoY2FjaGUuaGFzKHRhcmdldCkgJiYgIWZvcmNlUmVjYWxjdWxhdGlvbikge1xuICAgICAgICByZXR1cm4gY2FjaGUuZ2V0KHRhcmdldCk7XG4gICAgfVxuICAgIGlmIChpc0hpZGRlbih0YXJnZXQpKSB7XG4gICAgICAgIGNhY2hlLnNldCh0YXJnZXQsIHplcm9Cb3hlcyk7XG4gICAgICAgIHJldHVybiB6ZXJvQm94ZXM7XG4gICAgfVxuICAgIHZhciBjcyA9IGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KTtcbiAgICB2YXIgc3ZnID0gaXNTVkcodGFyZ2V0KSAmJiB0YXJnZXQub3duZXJTVkdFbGVtZW50ICYmIHRhcmdldC5nZXRCQm94KCk7XG4gICAgdmFyIHJlbW92ZVBhZGRpbmcgPSAhSUUgJiYgY3MuYm94U2l6aW5nID09PSAnYm9yZGVyLWJveCc7XG4gICAgdmFyIHN3aXRjaFNpemVzID0gdmVydGljYWxSZWdleHAudGVzdChjcy53cml0aW5nTW9kZSB8fCAnJyk7XG4gICAgdmFyIGNhblNjcm9sbFZlcnRpY2FsbHkgPSAhc3ZnICYmIHNjcm9sbFJlZ2V4cC50ZXN0KGNzLm92ZXJmbG93WSB8fCAnJyk7XG4gICAgdmFyIGNhblNjcm9sbEhvcml6b250YWxseSA9ICFzdmcgJiYgc2Nyb2xsUmVnZXhwLnRlc3QoY3Mub3ZlcmZsb3dYIHx8ICcnKTtcbiAgICB2YXIgcGFkZGluZ1RvcCA9IHN2ZyA/IDAgOiBwYXJzZURpbWVuc2lvbihjcy5wYWRkaW5nVG9wKTtcbiAgICB2YXIgcGFkZGluZ1JpZ2h0ID0gc3ZnID8gMCA6IHBhcnNlRGltZW5zaW9uKGNzLnBhZGRpbmdSaWdodCk7XG4gICAgdmFyIHBhZGRpbmdCb3R0b20gPSBzdmcgPyAwIDogcGFyc2VEaW1lbnNpb24oY3MucGFkZGluZ0JvdHRvbSk7XG4gICAgdmFyIHBhZGRpbmdMZWZ0ID0gc3ZnID8gMCA6IHBhcnNlRGltZW5zaW9uKGNzLnBhZGRpbmdMZWZ0KTtcbiAgICB2YXIgYm9yZGVyVG9wID0gc3ZnID8gMCA6IHBhcnNlRGltZW5zaW9uKGNzLmJvcmRlclRvcFdpZHRoKTtcbiAgICB2YXIgYm9yZGVyUmlnaHQgPSBzdmcgPyAwIDogcGFyc2VEaW1lbnNpb24oY3MuYm9yZGVyUmlnaHRXaWR0aCk7XG4gICAgdmFyIGJvcmRlckJvdHRvbSA9IHN2ZyA/IDAgOiBwYXJzZURpbWVuc2lvbihjcy5ib3JkZXJCb3R0b21XaWR0aCk7XG4gICAgdmFyIGJvcmRlckxlZnQgPSBzdmcgPyAwIDogcGFyc2VEaW1lbnNpb24oY3MuYm9yZGVyTGVmdFdpZHRoKTtcbiAgICB2YXIgaG9yaXpvbnRhbFBhZGRpbmcgPSBwYWRkaW5nTGVmdCArIHBhZGRpbmdSaWdodDtcbiAgICB2YXIgdmVydGljYWxQYWRkaW5nID0gcGFkZGluZ1RvcCArIHBhZGRpbmdCb3R0b207XG4gICAgdmFyIGhvcml6b250YWxCb3JkZXJBcmVhID0gYm9yZGVyTGVmdCArIGJvcmRlclJpZ2h0O1xuICAgIHZhciB2ZXJ0aWNhbEJvcmRlckFyZWEgPSBib3JkZXJUb3AgKyBib3JkZXJCb3R0b207XG4gICAgdmFyIGhvcml6b250YWxTY3JvbGxiYXJUaGlja25lc3MgPSAhY2FuU2Nyb2xsSG9yaXpvbnRhbGx5ID8gMCA6IHRhcmdldC5vZmZzZXRIZWlnaHQgLSB2ZXJ0aWNhbEJvcmRlckFyZWEgLSB0YXJnZXQuY2xpZW50SGVpZ2h0O1xuICAgIHZhciB2ZXJ0aWNhbFNjcm9sbGJhclRoaWNrbmVzcyA9ICFjYW5TY3JvbGxWZXJ0aWNhbGx5ID8gMCA6IHRhcmdldC5vZmZzZXRXaWR0aCAtIGhvcml6b250YWxCb3JkZXJBcmVhIC0gdGFyZ2V0LmNsaWVudFdpZHRoO1xuICAgIHZhciB3aWR0aFJlZHVjdGlvbiA9IHJlbW92ZVBhZGRpbmcgPyBob3Jpem9udGFsUGFkZGluZyArIGhvcml6b250YWxCb3JkZXJBcmVhIDogMDtcbiAgICB2YXIgaGVpZ2h0UmVkdWN0aW9uID0gcmVtb3ZlUGFkZGluZyA/IHZlcnRpY2FsUGFkZGluZyArIHZlcnRpY2FsQm9yZGVyQXJlYSA6IDA7XG4gICAgdmFyIGNvbnRlbnRXaWR0aCA9IHN2ZyA/IHN2Zy53aWR0aCA6IHBhcnNlRGltZW5zaW9uKGNzLndpZHRoKSAtIHdpZHRoUmVkdWN0aW9uIC0gdmVydGljYWxTY3JvbGxiYXJUaGlja25lc3M7XG4gICAgdmFyIGNvbnRlbnRIZWlnaHQgPSBzdmcgPyBzdmcuaGVpZ2h0IDogcGFyc2VEaW1lbnNpb24oY3MuaGVpZ2h0KSAtIGhlaWdodFJlZHVjdGlvbiAtIGhvcml6b250YWxTY3JvbGxiYXJUaGlja25lc3M7XG4gICAgdmFyIGJvcmRlckJveFdpZHRoID0gY29udGVudFdpZHRoICsgaG9yaXpvbnRhbFBhZGRpbmcgKyB2ZXJ0aWNhbFNjcm9sbGJhclRoaWNrbmVzcyArIGhvcml6b250YWxCb3JkZXJBcmVhO1xuICAgIHZhciBib3JkZXJCb3hIZWlnaHQgPSBjb250ZW50SGVpZ2h0ICsgdmVydGljYWxQYWRkaW5nICsgaG9yaXpvbnRhbFNjcm9sbGJhclRoaWNrbmVzcyArIHZlcnRpY2FsQm9yZGVyQXJlYTtcbiAgICB2YXIgYm94ZXMgPSBmcmVlemUoe1xuICAgICAgICBkZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplOiBzaXplKE1hdGgucm91bmQoY29udGVudFdpZHRoICogZGV2aWNlUGl4ZWxSYXRpbyksIE1hdGgucm91bmQoY29udGVudEhlaWdodCAqIGRldmljZVBpeGVsUmF0aW8pLCBzd2l0Y2hTaXplcyksXG4gICAgICAgIGJvcmRlckJveFNpemU6IHNpemUoYm9yZGVyQm94V2lkdGgsIGJvcmRlckJveEhlaWdodCwgc3dpdGNoU2l6ZXMpLFxuICAgICAgICBjb250ZW50Qm94U2l6ZTogc2l6ZShjb250ZW50V2lkdGgsIGNvbnRlbnRIZWlnaHQsIHN3aXRjaFNpemVzKSxcbiAgICAgICAgY29udGVudFJlY3Q6IG5ldyBET01SZWN0UmVhZE9ubHkocGFkZGluZ0xlZnQsIHBhZGRpbmdUb3AsIGNvbnRlbnRXaWR0aCwgY29udGVudEhlaWdodClcbiAgICB9KTtcbiAgICBjYWNoZS5zZXQodGFyZ2V0LCBib3hlcyk7XG4gICAgcmV0dXJuIGJveGVzO1xufTtcbnZhciBjYWxjdWxhdGVCb3hTaXplID0gZnVuY3Rpb24gKHRhcmdldCwgb2JzZXJ2ZWRCb3gsIGZvcmNlUmVjYWxjdWxhdGlvbikge1xuICAgIHZhciBfYSA9IGNhbGN1bGF0ZUJveFNpemVzKHRhcmdldCwgZm9yY2VSZWNhbGN1bGF0aW9uKSwgYm9yZGVyQm94U2l6ZSA9IF9hLmJvcmRlckJveFNpemUsIGNvbnRlbnRCb3hTaXplID0gX2EuY29udGVudEJveFNpemUsIGRldmljZVBpeGVsQ29udGVudEJveFNpemUgPSBfYS5kZXZpY2VQaXhlbENvbnRlbnRCb3hTaXplO1xuICAgIHN3aXRjaCAob2JzZXJ2ZWRCb3gpIHtcbiAgICAgICAgY2FzZSBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMuREVWSUNFX1BJWEVMX0NPTlRFTlRfQk9YOlxuICAgICAgICAgICAgcmV0dXJuIGRldmljZVBpeGVsQ29udGVudEJveFNpemU7XG4gICAgICAgIGNhc2UgUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zLkJPUkRFUl9CT1g6XG4gICAgICAgICAgICByZXR1cm4gYm9yZGVyQm94U2l6ZTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50Qm94U2l6ZTtcbiAgICB9XG59O1xuZXhwb3J0IHsgY2FsY3VsYXRlQm94U2l6ZSwgY2FsY3VsYXRlQm94U2l6ZXMgfTtcbiIsImltcG9ydCB7IGNhbGN1bGF0ZUJveFNpemVzIH0gZnJvbSAnLi9hbGdvcml0aG1zL2NhbGN1bGF0ZUJveFNpemUnO1xuaW1wb3J0IHsgZnJlZXplIH0gZnJvbSAnLi91dGlscy9mcmVlemUnO1xudmFyIFJlc2l6ZU9ic2VydmVyRW50cnkgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmVyRW50cnkodGFyZ2V0KSB7XG4gICAgICAgIHZhciBib3hlcyA9IGNhbGN1bGF0ZUJveFNpemVzKHRhcmdldCk7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICB0aGlzLmNvbnRlbnRSZWN0ID0gYm94ZXMuY29udGVudFJlY3Q7XG4gICAgICAgIHRoaXMuYm9yZGVyQm94U2l6ZSA9IGZyZWV6ZShbYm94ZXMuYm9yZGVyQm94U2l6ZV0pO1xuICAgICAgICB0aGlzLmNvbnRlbnRCb3hTaXplID0gZnJlZXplKFtib3hlcy5jb250ZW50Qm94U2l6ZV0pO1xuICAgICAgICB0aGlzLmRldmljZVBpeGVsQ29udGVudEJveFNpemUgPSBmcmVlemUoW2JveGVzLmRldmljZVBpeGVsQ29udGVudEJveFNpemVdKTtcbiAgICB9XG4gICAgcmV0dXJuIFJlc2l6ZU9ic2VydmVyRW50cnk7XG59KCkpO1xuZXhwb3J0IHsgUmVzaXplT2JzZXJ2ZXJFbnRyeSB9O1xuIiwiaW1wb3J0IHsgaXNIaWRkZW4gfSBmcm9tICcuLi91dGlscy9lbGVtZW50JztcbnZhciBjYWxjdWxhdGVEZXB0aEZvck5vZGUgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIGlmIChpc0hpZGRlbihub2RlKSkge1xuICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgfVxuICAgIHZhciBkZXB0aCA9IDA7XG4gICAgdmFyIHBhcmVudCA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB3aGlsZSAocGFyZW50KSB7XG4gICAgICAgIGRlcHRoICs9IDE7XG4gICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnROb2RlO1xuICAgIH1cbiAgICByZXR1cm4gZGVwdGg7XG59O1xuZXhwb3J0IHsgY2FsY3VsYXRlRGVwdGhGb3JOb2RlIH07XG4iLCJpbXBvcnQgeyByZXNpemVPYnNlcnZlcnMgfSBmcm9tICcuLi91dGlscy9yZXNpemVPYnNlcnZlcnMnO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJFbnRyeSB9IGZyb20gJy4uL1Jlc2l6ZU9ic2VydmVyRW50cnknO1xuaW1wb3J0IHsgY2FsY3VsYXRlRGVwdGhGb3JOb2RlIH0gZnJvbSAnLi9jYWxjdWxhdGVEZXB0aEZvck5vZGUnO1xuaW1wb3J0IHsgY2FsY3VsYXRlQm94U2l6ZSB9IGZyb20gJy4vY2FsY3VsYXRlQm94U2l6ZSc7XG52YXIgYnJvYWRjYXN0QWN0aXZlT2JzZXJ2YXRpb25zID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzaGFsbG93ZXN0RGVwdGggPSBJbmZpbml0eTtcbiAgICB2YXIgY2FsbGJhY2tzID0gW107XG4gICAgcmVzaXplT2JzZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gcHJvY2Vzc09ic2VydmVyKHJvKSB7XG4gICAgICAgIGlmIChyby5hY3RpdmVUYXJnZXRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBlbnRyaWVzID0gW107XG4gICAgICAgIHJvLmFjdGl2ZVRhcmdldHMuZm9yRWFjaChmdW5jdGlvbiBwcm9jZXNzVGFyZ2V0KG90KSB7XG4gICAgICAgICAgICB2YXIgZW50cnkgPSBuZXcgUmVzaXplT2JzZXJ2ZXJFbnRyeShvdC50YXJnZXQpO1xuICAgICAgICAgICAgdmFyIHRhcmdldERlcHRoID0gY2FsY3VsYXRlRGVwdGhGb3JOb2RlKG90LnRhcmdldCk7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgICAgICAgICAgb3QubGFzdFJlcG9ydGVkU2l6ZSA9IGNhbGN1bGF0ZUJveFNpemUob3QudGFyZ2V0LCBvdC5vYnNlcnZlZEJveCk7XG4gICAgICAgICAgICBpZiAodGFyZ2V0RGVwdGggPCBzaGFsbG93ZXN0RGVwdGgpIHtcbiAgICAgICAgICAgICAgICBzaGFsbG93ZXN0RGVwdGggPSB0YXJnZXREZXB0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uIHJlc2l6ZU9ic2VydmVyQ2FsbGJhY2soKSB7XG4gICAgICAgICAgICByby5jYWxsYmFjay5jYWxsKHJvLm9ic2VydmVyLCBlbnRyaWVzLCByby5vYnNlcnZlcik7XG4gICAgICAgIH0pO1xuICAgICAgICByby5hY3RpdmVUYXJnZXRzLnNwbGljZSgwLCByby5hY3RpdmVUYXJnZXRzLmxlbmd0aCk7XG4gICAgfSk7XG4gICAgZm9yICh2YXIgX2kgPSAwLCBjYWxsYmFja3NfMSA9IGNhbGxiYWNrczsgX2kgPCBjYWxsYmFja3NfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzXzFbX2ldO1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgICByZXR1cm4gc2hhbGxvd2VzdERlcHRoO1xufTtcbmV4cG9ydCB7IGJyb2FkY2FzdEFjdGl2ZU9ic2VydmF0aW9ucyB9O1xuIiwiaW1wb3J0IHsgcmVzaXplT2JzZXJ2ZXJzIH0gZnJvbSAnLi4vdXRpbHMvcmVzaXplT2JzZXJ2ZXJzJztcbmltcG9ydCB7IGNhbGN1bGF0ZURlcHRoRm9yTm9kZSB9IGZyb20gJy4vY2FsY3VsYXRlRGVwdGhGb3JOb2RlJztcbnZhciBnYXRoZXJBY3RpdmVPYnNlcnZhdGlvbnNBdERlcHRoID0gZnVuY3Rpb24gKGRlcHRoKSB7XG4gICAgcmVzaXplT2JzZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gcHJvY2Vzc09ic2VydmVyKHJvKSB7XG4gICAgICAgIHJvLmFjdGl2ZVRhcmdldHMuc3BsaWNlKDAsIHJvLmFjdGl2ZVRhcmdldHMubGVuZ3RoKTtcbiAgICAgICAgcm8uc2tpcHBlZFRhcmdldHMuc3BsaWNlKDAsIHJvLnNraXBwZWRUYXJnZXRzLmxlbmd0aCk7XG4gICAgICAgIHJvLm9ic2VydmF0aW9uVGFyZ2V0cy5mb3JFYWNoKGZ1bmN0aW9uIHByb2Nlc3NUYXJnZXQob3QpIHtcbiAgICAgICAgICAgIGlmIChvdC5pc0FjdGl2ZSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNhbGN1bGF0ZURlcHRoRm9yTm9kZShvdC50YXJnZXQpID4gZGVwdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgcm8uYWN0aXZlVGFyZ2V0cy5wdXNoKG90KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJvLnNraXBwZWRUYXJnZXRzLnB1c2gob3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuZXhwb3J0IHsgZ2F0aGVyQWN0aXZlT2JzZXJ2YXRpb25zQXREZXB0aCB9O1xuIiwiaW1wb3J0IHsgaGFzQWN0aXZlT2JzZXJ2YXRpb25zIH0gZnJvbSAnLi4vYWxnb3JpdGhtcy9oYXNBY3RpdmVPYnNlcnZhdGlvbnMnO1xuaW1wb3J0IHsgaGFzU2tpcHBlZE9ic2VydmF0aW9ucyB9IGZyb20gJy4uL2FsZ29yaXRobXMvaGFzU2tpcHBlZE9ic2VydmF0aW9ucyc7XG5pbXBvcnQgeyBkZWxpdmVyUmVzaXplTG9vcEVycm9yIH0gZnJvbSAnLi4vYWxnb3JpdGhtcy9kZWxpdmVyUmVzaXplTG9vcEVycm9yJztcbmltcG9ydCB7IGJyb2FkY2FzdEFjdGl2ZU9ic2VydmF0aW9ucyB9IGZyb20gJy4uL2FsZ29yaXRobXMvYnJvYWRjYXN0QWN0aXZlT2JzZXJ2YXRpb25zJztcbmltcG9ydCB7IGdhdGhlckFjdGl2ZU9ic2VydmF0aW9uc0F0RGVwdGggfSBmcm9tICcuLi9hbGdvcml0aG1zL2dhdGhlckFjdGl2ZU9ic2VydmF0aW9uc0F0RGVwdGgnO1xudmFyIHByb2Nlc3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGRlcHRoID0gMDtcbiAgICBnYXRoZXJBY3RpdmVPYnNlcnZhdGlvbnNBdERlcHRoKGRlcHRoKTtcbiAgICB3aGlsZSAoaGFzQWN0aXZlT2JzZXJ2YXRpb25zKCkpIHtcbiAgICAgICAgZGVwdGggPSBicm9hZGNhc3RBY3RpdmVPYnNlcnZhdGlvbnMoKTtcbiAgICAgICAgZ2F0aGVyQWN0aXZlT2JzZXJ2YXRpb25zQXREZXB0aChkZXB0aCk7XG4gICAgfVxuICAgIGlmIChoYXNTa2lwcGVkT2JzZXJ2YXRpb25zKCkpIHtcbiAgICAgICAgZGVsaXZlclJlc2l6ZUxvb3BFcnJvcigpO1xuICAgIH1cbiAgICByZXR1cm4gZGVwdGggPiAwO1xufTtcbmV4cG9ydCB7IHByb2Nlc3MgfTtcbiIsInZhciB0cmlnZ2VyO1xudmFyIGNhbGxiYWNrcyA9IFtdO1xudmFyIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGNhbGxiYWNrcy5zcGxpY2UoMCkuZm9yRWFjaChmdW5jdGlvbiAoY2IpIHsgcmV0dXJuIGNiKCk7IH0pOyB9O1xudmFyIHF1ZXVlTWljcm9UYXNrID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgaWYgKCF0cmlnZ2VyKSB7XG4gICAgICAgIHZhciB0b2dnbGVfMSA9IDA7XG4gICAgICAgIHZhciBlbF8xID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgICAgICB2YXIgY29uZmlnID0geyBjaGFyYWN0ZXJEYXRhOiB0cnVlIH07XG4gICAgICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5vdGlmeSgpOyB9KS5vYnNlcnZlKGVsXzEsIGNvbmZpZyk7XG4gICAgICAgIHRyaWdnZXIgPSBmdW5jdGlvbiAoKSB7IGVsXzEudGV4dENvbnRlbnQgPSBcIlwiLmNvbmNhdCh0b2dnbGVfMSA/IHRvZ2dsZV8xLS0gOiB0b2dnbGVfMSsrKTsgfTtcbiAgICB9XG4gICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgIHRyaWdnZXIoKTtcbn07XG5leHBvcnQgeyBxdWV1ZU1pY3JvVGFzayB9O1xuIiwiaW1wb3J0IHsgcXVldWVNaWNyb1Rhc2sgfSBmcm9tICcuL3F1ZXVlTWljcm9UYXNrJztcbnZhciBxdWV1ZVJlc2l6ZU9ic2VydmVyID0gZnVuY3Rpb24gKGNiKSB7XG4gICAgcXVldWVNaWNyb1Rhc2soZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXIoKSB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gICAgfSk7XG59O1xuZXhwb3J0IHsgcXVldWVSZXNpemVPYnNlcnZlciB9O1xuIiwiaW1wb3J0IHsgcHJvY2VzcyB9IGZyb20gJy4vcHJvY2Vzcyc7XG5pbXBvcnQgeyBnbG9iYWwgfSBmcm9tICcuL2dsb2JhbCc7XG5pbXBvcnQgeyBxdWV1ZVJlc2l6ZU9ic2VydmVyIH0gZnJvbSAnLi9xdWV1ZVJlc2l6ZU9ic2VydmVyJztcbnZhciB3YXRjaGluZyA9IDA7XG52YXIgaXNXYXRjaGluZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICEhd2F0Y2hpbmc7IH07XG52YXIgQ0FUQ0hfUEVSSU9EID0gMjUwO1xudmFyIG9ic2VydmVyQ29uZmlnID0geyBhdHRyaWJ1dGVzOiB0cnVlLCBjaGFyYWN0ZXJEYXRhOiB0cnVlLCBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfTtcbnZhciBldmVudHMgPSBbXG4gICAgJ3Jlc2l6ZScsXG4gICAgJ2xvYWQnLFxuICAgICd0cmFuc2l0aW9uZW5kJyxcbiAgICAnYW5pbWF0aW9uZW5kJyxcbiAgICAnYW5pbWF0aW9uc3RhcnQnLFxuICAgICdhbmltYXRpb25pdGVyYXRpb24nLFxuICAgICdrZXl1cCcsXG4gICAgJ2tleWRvd24nLFxuICAgICdtb3VzZXVwJyxcbiAgICAnbW91c2Vkb3duJyxcbiAgICAnbW91c2VvdmVyJyxcbiAgICAnbW91c2VvdXQnLFxuICAgICdibHVyJyxcbiAgICAnZm9jdXMnXG5dO1xudmFyIHRpbWUgPSBmdW5jdGlvbiAodGltZW91dCkge1xuICAgIGlmICh0aW1lb3V0ID09PSB2b2lkIDApIHsgdGltZW91dCA9IDA7IH1cbiAgICByZXR1cm4gRGF0ZS5ub3coKSArIHRpbWVvdXQ7XG59O1xudmFyIHNjaGVkdWxlZCA9IGZhbHNlO1xudmFyIFNjaGVkdWxlciA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU2NoZWR1bGVyKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB0aGlzLnN0b3BwZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxpc3RlbmVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX3RoaXMuc2NoZWR1bGUoKTsgfTtcbiAgICB9XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAodGltZW91dCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAodGltZW91dCA9PT0gdm9pZCAwKSB7IHRpbWVvdXQgPSBDQVRDSF9QRVJJT0Q7IH1cbiAgICAgICAgaWYgKHNjaGVkdWxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHNjaGVkdWxlZCA9IHRydWU7XG4gICAgICAgIHZhciB1bnRpbCA9IHRpbWUodGltZW91dCk7XG4gICAgICAgIHF1ZXVlUmVzaXplT2JzZXJ2ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVsZW1lbnRzSGF2ZVJlc2l6ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudHNIYXZlUmVzaXplZCA9IHByb2Nlc3MoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRpbWVvdXQgPSB1bnRpbCAtIHRpbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWlzV2F0Y2hpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50c0hhdmVSZXNpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLnJ1bigxMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodGltZW91dCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMucnVuKHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuc3RhcnQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zY2hlZHVsZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zdG9wKCk7XG4gICAgICAgIHRoaXMucnVuKCk7XG4gICAgfTtcbiAgICBTY2hlZHVsZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBjYiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF90aGlzLm9ic2VydmVyICYmIF90aGlzLm9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQuYm9keSwgb2JzZXJ2ZXJDb25maWcpOyB9O1xuICAgICAgICBkb2N1bWVudC5ib2R5ID8gY2IoKSA6IGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgY2IpO1xuICAgIH07XG4gICAgU2NoZWR1bGVyLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgICAgICAgdGhpcy5zdG9wcGVkID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5saXN0ZW5lcik7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmUoKTtcbiAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBfdGhpcy5saXN0ZW5lciwgdHJ1ZSk7IH0pO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTY2hlZHVsZXIucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5zdG9wcGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyICYmIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIGdsb2JhbC5yZW1vdmVFdmVudExpc3RlbmVyKG5hbWUsIF90aGlzLmxpc3RlbmVyLCB0cnVlKTsgfSk7XG4gICAgICAgICAgICB0aGlzLnN0b3BwZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gU2NoZWR1bGVyO1xufSgpKTtcbnZhciBzY2hlZHVsZXIgPSBuZXcgU2NoZWR1bGVyKCk7XG52YXIgdXBkYXRlQ291bnQgPSBmdW5jdGlvbiAobikge1xuICAgICF3YXRjaGluZyAmJiBuID4gMCAmJiBzY2hlZHVsZXIuc3RhcnQoKTtcbiAgICB3YXRjaGluZyArPSBuO1xuICAgICF3YXRjaGluZyAmJiBzY2hlZHVsZXIuc3RvcCgpO1xufTtcbmV4cG9ydCB7IHNjaGVkdWxlciwgdXBkYXRlQ291bnQgfTtcbiIsImltcG9ydCB7IFJlc2l6ZU9ic2VydmVyQm94T3B0aW9ucyB9IGZyb20gJy4vUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zJztcbmltcG9ydCB7IGNhbGN1bGF0ZUJveFNpemUgfSBmcm9tICcuL2FsZ29yaXRobXMvY2FsY3VsYXRlQm94U2l6ZSc7XG5pbXBvcnQgeyBpc1NWRywgaXNSZXBsYWNlZEVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL2VsZW1lbnQnO1xudmFyIHNraXBOb3RpZnlPbkVsZW1lbnQgPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgcmV0dXJuICFpc1NWRyh0YXJnZXQpXG4gICAgICAgICYmICFpc1JlcGxhY2VkRWxlbWVudCh0YXJnZXQpXG4gICAgICAgICYmIGdldENvbXB1dGVkU3R5bGUodGFyZ2V0KS5kaXNwbGF5ID09PSAnaW5saW5lJztcbn07XG52YXIgUmVzaXplT2JzZXJ2YXRpb24gPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFJlc2l6ZU9ic2VydmF0aW9uKHRhcmdldCwgb2JzZXJ2ZWRCb3gpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMub2JzZXJ2ZWRCb3ggPSBvYnNlcnZlZEJveCB8fCBSZXNpemVPYnNlcnZlckJveE9wdGlvbnMuQ09OVEVOVF9CT1g7XG4gICAgICAgIHRoaXMubGFzdFJlcG9ydGVkU2l6ZSA9IHtcbiAgICAgICAgICAgIGlubGluZVNpemU6IDAsXG4gICAgICAgICAgICBibG9ja1NpemU6IDBcbiAgICAgICAgfTtcbiAgICB9XG4gICAgUmVzaXplT2JzZXJ2YXRpb24ucHJvdG90eXBlLmlzQWN0aXZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgc2l6ZSA9IGNhbGN1bGF0ZUJveFNpemUodGhpcy50YXJnZXQsIHRoaXMub2JzZXJ2ZWRCb3gsIHRydWUpO1xuICAgICAgICBpZiAoc2tpcE5vdGlmeU9uRWxlbWVudCh0aGlzLnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFJlcG9ydGVkU2l6ZSA9IHNpemU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMubGFzdFJlcG9ydGVkU2l6ZS5pbmxpbmVTaXplICE9PSBzaXplLmlubGluZVNpemVcbiAgICAgICAgICAgIHx8IHRoaXMubGFzdFJlcG9ydGVkU2l6ZS5ibG9ja1NpemUgIT09IHNpemUuYmxvY2tTaXplKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2YXRpb247XG59KCkpO1xuZXhwb3J0IHsgUmVzaXplT2JzZXJ2YXRpb24gfTtcbiIsInZhciBSZXNpemVPYnNlcnZlckRldGFpbCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUmVzaXplT2JzZXJ2ZXJEZXRhaWwocmVzaXplT2JzZXJ2ZXIsIGNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlVGFyZ2V0cyA9IFtdO1xuICAgICAgICB0aGlzLnNraXBwZWRUYXJnZXRzID0gW107XG4gICAgICAgIHRoaXMub2JzZXJ2YXRpb25UYXJnZXRzID0gW107XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSByZXNpemVPYnNlcnZlcjtcbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIH1cbiAgICByZXR1cm4gUmVzaXplT2JzZXJ2ZXJEZXRhaWw7XG59KCkpO1xuZXhwb3J0IHsgUmVzaXplT2JzZXJ2ZXJEZXRhaWwgfTtcbiIsImltcG9ydCB7IHNjaGVkdWxlciwgdXBkYXRlQ291bnQgfSBmcm9tICcuL3V0aWxzL3NjaGVkdWxlcic7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZhdGlvbiB9IGZyb20gJy4vUmVzaXplT2JzZXJ2YXRpb24nO1xuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJEZXRhaWwgfSBmcm9tICcuL1Jlc2l6ZU9ic2VydmVyRGV0YWlsJztcbmltcG9ydCB7IHJlc2l6ZU9ic2VydmVycyB9IGZyb20gJy4vdXRpbHMvcmVzaXplT2JzZXJ2ZXJzJztcbnZhciBvYnNlcnZlck1hcCA9IG5ldyBXZWFrTWFwKCk7XG52YXIgZ2V0T2JzZXJ2YXRpb25JbmRleCA9IGZ1bmN0aW9uIChvYnNlcnZhdGlvblRhcmdldHMsIHRhcmdldCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2JzZXJ2YXRpb25UYXJnZXRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGlmIChvYnNlcnZhdGlvblRhcmdldHNbaV0udGFyZ2V0ID09PSB0YXJnZXQpIHtcbiAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiAtMTtcbn07XG52YXIgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIoKSB7XG4gICAgfVxuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5jb25uZWN0ID0gZnVuY3Rpb24gKHJlc2l6ZU9ic2VydmVyLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZGV0YWlsID0gbmV3IFJlc2l6ZU9ic2VydmVyRGV0YWlsKHJlc2l6ZU9ic2VydmVyLCBjYWxsYmFjayk7XG4gICAgICAgIG9ic2VydmVyTWFwLnNldChyZXNpemVPYnNlcnZlciwgZGV0YWlsKTtcbiAgICB9O1xuICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5vYnNlcnZlID0gZnVuY3Rpb24gKHJlc2l6ZU9ic2VydmVyLCB0YXJnZXQsIG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIGRldGFpbCA9IG9ic2VydmVyTWFwLmdldChyZXNpemVPYnNlcnZlcik7XG4gICAgICAgIHZhciBmaXJzdE9ic2VydmF0aW9uID0gZGV0YWlsLm9ic2VydmF0aW9uVGFyZ2V0cy5sZW5ndGggPT09IDA7XG4gICAgICAgIGlmIChnZXRPYnNlcnZhdGlvbkluZGV4KGRldGFpbC5vYnNlcnZhdGlvblRhcmdldHMsIHRhcmdldCkgPCAwKSB7XG4gICAgICAgICAgICBmaXJzdE9ic2VydmF0aW9uICYmIHJlc2l6ZU9ic2VydmVycy5wdXNoKGRldGFpbCk7XG4gICAgICAgICAgICBkZXRhaWwub2JzZXJ2YXRpb25UYXJnZXRzLnB1c2gobmV3IFJlc2l6ZU9ic2VydmF0aW9uKHRhcmdldCwgb3B0aW9ucyAmJiBvcHRpb25zLmJveCkpO1xuICAgICAgICAgICAgdXBkYXRlQ291bnQoMSk7XG4gICAgICAgICAgICBzY2hlZHVsZXIuc2NoZWR1bGUoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLnVub2JzZXJ2ZSA9IGZ1bmN0aW9uIChyZXNpemVPYnNlcnZlciwgdGFyZ2V0KSB7XG4gICAgICAgIHZhciBkZXRhaWwgPSBvYnNlcnZlck1hcC5nZXQocmVzaXplT2JzZXJ2ZXIpO1xuICAgICAgICB2YXIgaW5kZXggPSBnZXRPYnNlcnZhdGlvbkluZGV4KGRldGFpbC5vYnNlcnZhdGlvblRhcmdldHMsIHRhcmdldCk7XG4gICAgICAgIHZhciBsYXN0T2JzZXJ2YXRpb24gPSBkZXRhaWwub2JzZXJ2YXRpb25UYXJnZXRzLmxlbmd0aCA9PT0gMTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGxhc3RPYnNlcnZhdGlvbiAmJiByZXNpemVPYnNlcnZlcnMuc3BsaWNlKHJlc2l6ZU9ic2VydmVycy5pbmRleE9mKGRldGFpbCksIDEpO1xuICAgICAgICAgICAgZGV0YWlsLm9ic2VydmF0aW9uVGFyZ2V0cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdXBkYXRlQ291bnQoLTEpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIuZGlzY29ubmVjdCA9IGZ1bmN0aW9uIChyZXNpemVPYnNlcnZlcikge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZGV0YWlsID0gb2JzZXJ2ZXJNYXAuZ2V0KHJlc2l6ZU9ic2VydmVyKTtcbiAgICAgICAgZGV0YWlsLm9ic2VydmF0aW9uVGFyZ2V0cy5zbGljZSgpLmZvckVhY2goZnVuY3Rpb24gKG90KSB7IHJldHVybiBfdGhpcy51bm9ic2VydmUocmVzaXplT2JzZXJ2ZXIsIG90LnRhcmdldCk7IH0pO1xuICAgICAgICBkZXRhaWwuYWN0aXZlVGFyZ2V0cy5zcGxpY2UoMCwgZGV0YWlsLmFjdGl2ZVRhcmdldHMubGVuZ3RoKTtcbiAgICB9O1xuICAgIHJldHVybiBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXI7XG59KCkpO1xuZXhwb3J0IHsgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIH07XG4iLCJpbXBvcnQgeyBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIgfSBmcm9tICcuL1Jlc2l6ZU9ic2VydmVyQ29udHJvbGxlcic7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tICcuL3V0aWxzL2VsZW1lbnQnO1xudmFyIFJlc2l6ZU9ic2VydmVyID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBSZXNpemVPYnNlcnZlcihjYWxsYmFjaykge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Jlc2l6ZU9ic2VydmVyJzogMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzaXplT2JzZXJ2ZXInOiBUaGUgY2FsbGJhY2sgcHJvdmlkZWQgYXMgcGFyYW1ldGVyIDEgaXMgbm90IGEgZnVuY3Rpb24uXCIpO1xuICAgICAgICB9XG4gICAgICAgIFJlc2l6ZU9ic2VydmVyQ29udHJvbGxlci5jb25uZWN0KHRoaXMsIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgUmVzaXplT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0LCBvcHRpb25zKSB7XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRmFpbGVkIHRvIGV4ZWN1dGUgJ29ic2VydmUnIG9uICdSZXNpemVPYnNlcnZlcic6IDEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC5cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0VsZW1lbnQodGFyZ2V0KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkZhaWxlZCB0byBleGVjdXRlICdvYnNlcnZlJyBvbiAnUmVzaXplT2JzZXJ2ZXInOiBwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnRWxlbWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIub2JzZXJ2ZSh0aGlzLCB0YXJnZXQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgUmVzaXplT2JzZXJ2ZXIucHJvdG90eXBlLnVub2JzZXJ2ZSA9IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGYWlsZWQgdG8gZXhlY3V0ZSAndW5vYnNlcnZlJyBvbiAnUmVzaXplT2JzZXJ2ZXInOiAxIGFyZ3VtZW50IHJlcXVpcmVkLCBidXQgb25seSAwIHByZXNlbnQuXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFbGVtZW50KHRhcmdldCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJGYWlsZWQgdG8gZXhlY3V0ZSAndW5vYnNlcnZlJyBvbiAnUmVzaXplT2JzZXJ2ZXInOiBwYXJhbWV0ZXIgMSBpcyBub3Qgb2YgdHlwZSAnRWxlbWVudFwiKTtcbiAgICAgICAgfVxuICAgICAgICBSZXNpemVPYnNlcnZlckNvbnRyb2xsZXIudW5vYnNlcnZlKHRoaXMsIHRhcmdldCk7XG4gICAgfTtcbiAgICBSZXNpemVPYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyLmRpc2Nvbm5lY3QodGhpcyk7XG4gICAgfTtcbiAgICBSZXNpemVPYnNlcnZlci50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICdmdW5jdGlvbiBSZXNpemVPYnNlcnZlciAoKSB7IFtwb2x5ZmlsbCBjb2RlXSB9JztcbiAgICB9O1xuICAgIHJldHVybiBSZXNpemVPYnNlcnZlcjtcbn0oKSk7XG5leHBvcnQgeyBSZXNpemVPYnNlcnZlciB9O1xuIl0sIm5hbWVzIjpbImNsYXNzTmFtZXMiLCJpIiwiaW5uZXIiLCJtb2R1bGUiLCJvIiwibiIsInQiLCJ1IiwiQiIsInIiLCJmIiwiYyIsImUiLCJfIiwiRiIsInEiLCJrIiwidyIsImciLCJsIiwibGlzdENhY2hlQ2xlYXIiLCJlcSIsInJlcXVpcmUkJDAiLCJhc3NvY0luZGV4T2YiLCJsaXN0Q2FjaGVEZWxldGUiLCJpbmRleCIsImxpc3RDYWNoZUdldCIsImxpc3RDYWNoZUhhcyIsImxpc3RDYWNoZVNldCIsInJlcXVpcmUkJDEiLCJyZXF1aXJlJCQyIiwicmVxdWlyZSQkMyIsInJlcXVpcmUkJDQiLCJMaXN0Q2FjaGUiLCJzdGFja0NsZWFyIiwic3RhY2tEZWxldGUiLCJzdGFja0dldCIsInN0YWNrSGFzIiwiZnJlZUdsb2JhbCIsImdsb2JhbCIsInJvb3QiLCJTeW1ib2wiLCJvYmplY3RQcm90byIsImhhc093blByb3BlcnR5IiwibmF0aXZlT2JqZWN0VG9TdHJpbmciLCJzeW1Ub1N0cmluZ1RhZyIsImdldFJhd1RhZyIsIm9iamVjdFRvU3RyaW5nIiwiYmFzZUdldFRhZyIsImlzT2JqZWN0IiwiZnVuY1RhZyIsImlzRnVuY3Rpb24iLCJjb3JlSnNEYXRhIiwiaXNNYXNrZWQiLCJmdW5jUHJvdG8iLCJmdW5jVG9TdHJpbmciLCJ0b1NvdXJjZSIsImJhc2VJc05hdGl2ZSIsImdldFZhbHVlIiwiZ2V0TmF0aXZlIiwiTWFwIiwibmF0aXZlQ3JlYXRlIiwiaGFzaENsZWFyIiwiaGFzaERlbGV0ZSIsIkhBU0hfVU5ERUZJTkVEIiwiaGFzaEdldCIsImhhc2hIYXMiLCJoYXNoU2V0IiwiSGFzaCIsIm1hcENhY2hlQ2xlYXIiLCJpc0tleWFibGUiLCJnZXRNYXBEYXRhIiwibWFwQ2FjaGVEZWxldGUiLCJtYXBDYWNoZUdldCIsIm1hcENhY2hlSGFzIiwibWFwQ2FjaGVTZXQiLCJzaXplIiwiTWFwQ2FjaGUiLCJzdGFja1NldCIsInJlcXVpcmUkJDUiLCJTdGFjayIsImRlZmluZVByb3BlcnR5IiwiYmFzZUFzc2lnblZhbHVlIiwiYXNzaWduTWVyZ2VWYWx1ZSIsImNyZWF0ZUJhc2VGb3IiLCJiYXNlRm9yIiwiZXhwb3J0cyIsImNsb25lQnVmZmVyIiwiVWludDhBcnJheSIsImNsb25lQXJyYXlCdWZmZXIiLCJjbG9uZVR5cGVkQXJyYXkiLCJjb3B5QXJyYXkiLCJiYXNlQ3JlYXRlIiwib3ZlckFyZyIsImdldFByb3RvdHlwZSIsImlzUHJvdG90eXBlIiwiaW5pdENsb25lT2JqZWN0IiwiaXNPYmplY3RMaWtlIiwiYXJnc1RhZyIsImJhc2VJc0FyZ3VtZW50cyIsImlzQXJndW1lbnRzIiwiaXNBcnJheSIsIk1BWF9TQUZFX0lOVEVHRVIiLCJpc0xlbmd0aCIsImlzQXJyYXlMaWtlIiwiaXNBcnJheUxpa2VPYmplY3QiLCJzdHViRmFsc2UiLCJpc0J1ZmZlciIsIm9iamVjdFRhZyIsImlzUGxhaW5PYmplY3QiLCJiYXNlSXNUeXBlZEFycmF5IiwiYmFzZVVuYXJ5Iiwibm9kZVV0aWwiLCJpc1R5cGVkQXJyYXkiLCJzYWZlR2V0IiwiYXNzaWduVmFsdWUiLCJjb3B5T2JqZWN0IiwiYmFzZVRpbWVzIiwiaXNJbmRleCIsImFycmF5TGlrZUtleXMiLCJuYXRpdmVLZXlzSW4iLCJiYXNlS2V5c0luIiwia2V5c0luIiwidG9QbGFpbk9iamVjdCIsInJlcXVpcmUkJDYiLCJyZXF1aXJlJCQ3IiwicmVxdWlyZSQkOCIsInJlcXVpcmUkJDkiLCJyZXF1aXJlJCQxMCIsInJlcXVpcmUkJDExIiwicmVxdWlyZSQkMTIiLCJyZXF1aXJlJCQxMyIsInJlcXVpcmUkJDE0IiwiYmFzZU1lcmdlRGVlcCIsImJhc2VNZXJnZSIsImlkZW50aXR5IiwiYXBwbHkiLCJvdmVyUmVzdCIsImNvbnN0YW50IiwiYmFzZVNldFRvU3RyaW5nIiwic2hvcnRPdXQiLCJzZXRUb1N0cmluZyIsImJhc2VSZXN0IiwiaXNJdGVyYXRlZUNhbGwiLCJjcmVhdGVBc3NpZ25lciIsImluamVjdExpbmsiLCJvcHRpb25zIiwiaGVhZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJsaW5rIiwiY3JlYXRlRWxlbWVudCIsIk9iamVjdCIsImVudHJpZXMiLCJmb3JFYWNoIiwia2V5IiwidmFsdWUiLCJzZXRBdHRyaWJ1dGUiLCJhcHBlbmRDaGlsZCIsIml0ZXJhdG9yIiwiaW5wdXQiLCJ2aXNpdG9yIiwicGF0aCIsIkFycmF5IiwibWFwIiwiZWwiLCJuZXdQYXRoIiwiZmlsdGVyIiwiaXNWYWx1ZSIsImpvaW4iLCJyZWR1Y2UiLCJhY2MiLCJpc0VtcHR5VmFsdWUiLCJ1bmRlZmluZWQiLCJub29wIiwicGljayIsIm9iaiIsInByb3BzIiwicmVzdWx0IiwicHJvcCIsIm9taXQiLCJnZXQiLCJkZWZWYWx1ZSIsInBhdGhBcnJheSIsIm1hdGNoIiwicHJldk9iaiIsInNldCIsImxlbmd0aCIsImhleFRvUmdiIiwiaGV4IiwiY2hhcnMiLCJzbGljZSIsInNwbGl0IiwidmFsIiwiZXhlYyIsInBhcnNlSW50IiwiYiIsImlzSnNvblNhbWUiLCJ2YWx1ZXMiLCJKU09OIiwic3RyaW5naWZ5IiwiZXZlcnkiLCJhcnIiLCJpc1ZhbGlkVGVtcGxhdGUiLCJkYXRhIiwicmdiVG9SZ2JhIiwicmdiIiwiYWxwaGEiLCJyZXBsYWNlIiwiZGV2aWNlcyIsIkJSRUFLUE9JTlRTIiwibW9iaWxlIiwidGFibGV0IiwibGFwdG9wIiwiZGVza3RvcCIsInVzZUdpZnRPcGVuIiwiZGVsYXkiLCJvbk9wZW4iLCJvbkF1dG9PcGVuIiwiaXNPcGVuIiwic2V0SXNPcGVuIiwidXNlU3RhdGUiLCJ0aW1lclJlZiIsInVzZVJlZiIsImNsZWFyIiwidGltZXIiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50Iiwib25Ub2dnbGUiLCJwcmV2IiwidXNlRWZmZWN0Iiwic2V0VGltZW91dCIsInMiLCJhIiwiU3RhdGUiLCJjcmVhdGVDb250ZXh0IiwiU3RhdGVDb250ZXh0IiwiY2hpbGRyZW4iLCJfanN4IiwiUHJvdmlkZXIiLCJyZW5kZXIiLCJ2Tm9kZSIsInRhcmdldCIsImlkIiwicmVmIiwic3RhdGUiLCJ3aW5kb3ciLCJSZXNpemVPYnNlcnZlciIsInByZWFjdFJlbmRlciIsImNsb25lRWxlbWVudCIsInVzZUN1cnJlbnRTdGF0ZSIsInVzZUNvbnRleHQiLCJpc1ZhbGlkTGF5ZXIiLCJkZXZpY2UiLCJnZXRSdWxlcyIsIl9rZXkiLCJyZXN1bHRSdWxlcyIsInBhcmVudCIsInVzZUdldFJ1bGVzIiwidXNlQ29udGFpbmVyRGV2aWNlIiwidGFyZ2V0UmVmIiwicGFyZW50S2V5IiwiYnJlYWtwb2ludHMiLCJzZXREZXZpY2UiLCJjaGVja0RldmljZSIsInBhcmVudFdpZHRoIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJzb3J0ZWRCcmVha3BvaW50cyIsInNvcnQiLCJfMSIsInZhbHVlQSIsIl8yIiwidmFsdWVCIiwiZmluZERldmljZSIsImZpbmQiLCJuZXh0VmFsdWUiLCJ1c2VMYXlvdXRFZmZlY3QiLCJwYXJlbnRFbGVtZW50IiwiY2xvc2VzdCIsImJvZHkiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJ3cmFwVG8iLCJ1bnRpbCIsInRvUHgiLCJzdGFydHNXaXRoIiwidG9QZXJjZW50IiwiZm9ybWF0UnVsZSIsIm5ld0tleSIsIm5ld1ZhbHVlIiwiREVGQVVMVF9UT19QWCIsInBhcnNlUnVsZXMiLCJydWxlcyIsImxheWVyIiwia2V5cyIsImluY2x1ZGVzIiwid2FybiIsInR5cG9ncmFwaHkiLCJhY2NlbnRUeXBvZ3JhcGh5IiwiZm9udEZhbWlseSIsImNvbG9yIiwiZm9udFNpemUiLCJwcm9wS2V5IiwicHJvcFZhbHVlIiwiaW5uZXJIVE1MIiwiaW5uZXJUZXh0IiwiZGlzcGxheSIsImJvcmRlclN0eWxlIiwiYm9yZGVyUmFkaXVzIiwiYmFja2dyb3VuZFNpemUiLCJiYWNrZ3JvdW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZENvbG9yT3BhY2l0eSIsImJhY2tncm91bmRDb2xvciIsImZvbnRXZWlnaHQiLCJmb250U3R5bGUiLCJ0ZXh0RGVjb3JhdGlvbiIsImlzVmFsaWRSdWxlIiwicnVsZSIsInVzZVBhcnNlUnVsZXMiLCJEaXNwbGF5VGV4dCIsInJlc3QiLCJmb3JtYXRWYWx1ZSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwidXNlVG9nZ2xlIiwiQ2xvc2VJY29uIiwieG1sbnMiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZCIsImZpbGwiLCJHaWZ0SWNvbiIsImZpbGxSdWxlIiwiYW5pbWF0aW9uc01hcCIsImFuaW1hdGlvbnMiLCJmYWRlIiwicHVsc2UiLCJ3aWdnbGUiLCJncmFkaWVudCIsInVzZUdpZnRSdWxlcyIsImRldmljZVN0YXRlIiwiZnVsbEFuaW1hdGlvbnMiLCJoYXNJY29uIiwiaWNvbiIsImFycm93UnVsZXMiLCJsZWZ0IiwiY29udGFpbmVyIiwiYm9yZGVyVG9wV2lkdGgiLCJib3JkZXJXaWR0aCIsImJvcmRlclRvcENvbG9yIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlckxlZnRTdHlsZSIsImJvZHlSdWxlcyIsImFsbEFuaW1hdGlvbnMiLCJhbmltYXRpb24iLCJiYWNrZ3JvdW5kU3R5bGVzIiwiZ3JhZGllbnRDb2xvciIsImJhY2tncm91bmQiLCJpY29uUnVsZXMiLCJiYWNrZ3JvdW5kT3B0aW9ucyIsImJvcmRlck9wdGlvbnMiLCJzcGFjaW5nT3B0aW9ucyIsIm5vb3BZYU1ldHJpa2EiLCJnb2FsIiwiY29uc29sZSIsImxvZyIsIm5vb3BBZEZveCIsInVzZU1ldHJpY3MiLCJsYXllck5hbWUiLCJzYXZlTWV0cmljcyIsInlhUmVhY2hHb2FsIiwiYWRmb3hSZWFjaEdvYWwiLCJtZXRyaWNzIiwieWFTaG93IiwiYWRmb3hTaG93IiwieWFDbGljayIsImFkZm94Q2xpY2siLCJ1c2VFeHRyYWN0Rm9udHMiLCJmb250cyIsIlNldCIsImFkZCIsImZvbnRMaW5rcyIsInVzZU1lbW8iLCJmcm9tIiwiZm9udCIsInJlbCIsImhyZWYiLCJ1c2VMaWZlY3ljbGUiLCJjeWNsZXMiLCJvbk1vdW50Iiwib25EZXN0cm95Iiwib25DbGljayIsIlNpbXBsZUdpZnQiLCJmb3J3YXJkUmVmIiwiX3JlZiIsInJvb3RSZWYiLCJsZWdhbElzT3BlbiIsInRvZ2dsZUxlZ2FsSXNPcGVuIiwib25DbGlja01ldHJpY3MiLCJzdHlsZXMiLCJmYWRlaW4iLCJsZWdhbEJvcmRlciIsIl9qc3hzIiwiY2xhc3NOYW1lIiwibGVnYWxPcGVuIiwic3R5bGUiLCJpY29uVGFyZ2V0IiwiYm9keU9wZW4iLCJhcnJvdyIsImNsb3NlIiwib2ZmZXIiLCJsb2dvIiwidGV4dCIsImJ1dHRvbiIsImJ1dHRvbkFuaW1hdGVkIiwiaXNBbmltYXRlZCIsImxlZ2FsR2FwIiwibGVnYWwiLCJsZWdhbFRleHQiLCJsZWdhbEJ1dHRvbiIsImJ1dHRvbk9wZW5UZXh0IiwiYnV0dG9uSGlkZVRleHQiLCJCb251c0NhcmQiLCJ2YXJpYW50MiIsInZhcmlhbnQiLCJsaW5lIiwiYm9keUlubmVyIiwiYnV0dG9uVGV4dCIsIkNvbXBsZXhHaWZ0IiwiaGFzVGl0bGVJY29uIiwidGl0bGUiLCJwcm9tb3Rpb24iLCJoZWFkSWNvbiIsImhlYWRUaXRsZSIsImNoaWxkIiwic3dpdGNoVGV4dEFsaWduVG9GbGV4IiwidGV4dEFsaWduIiwiY2VudGVyIiwicmlnaHQiLCJMaW5lIiwidXNlUG9wdXAiLCJzaG93IiwiaGlkZSIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJTaW1wbGVQb3B1cCIsImFsaWduSXRlbXMiLCJhbGlnbiIsImJ1dHRvblJ1bGVzIiwianVzdGlmeUNvbnRlbnQiLCJsZWdhbFJ1bGVzIiwib3ZlcmxheSIsIndyYXBwZXIiLCJjb250ZW50IiwiQm9udXMiLCJoZWFkZXIiLCJDb21wbGV4UG9wdXAiLCJNYXRjaCIsInRlYW1zIiwibGVhZ3VlIiwibmFtZSIsInRlYW1BIiwidGVhbUIiLCJ0ZWFtIiwidGVhbUxvZ28iLCJ0ZWFtTmFtZSIsIm9kZCIsIm9kZExhYmVsIiwib2RkVmFsdWUiLCJFeHByZXNzUG9wdXAiLCJidXR0b25XcmFwcGVyIiwiY29udGVudFJ1bGVzIiwidGV4dFJ1bGVzIiwiYnV0dG9uSGVhZCIsImJ1dHRvblRhcmdldCIsInRvZ2dsZUlzT3BlbiIsInJvd0ZpcnN0Iiwicm93U2Vjb25kIiwiYm9va21ha2VyIiwibGVnYWxJbmZvIiwibGVnYWxJbmZvQnV0dG9uIiwib3BlblRleHQiLCJjbG9zZVRleHQiLCJUZXh0IiwiTWF0Y2hlcyIsInJvb3RSdWxlcyIsIm9kZExvZ28iLCJ2YWx1ZU9uZSIsImNvZWYiLCJjb2VmSGVhZCIsImNvZWZWYWx1ZSIsInZhbHVlWCIsIm9kZFJldmVyc2UiLCJ2YWx1ZVR3byIsIk1hdGNoZXNPbmVUd28iLCJ0aXRsZUxhYmVsIiwidGl0bGVWYWx1ZSIsInRlYW0xTmFtZSIsInRlYW1WYWx1ZSIsInZhbHVlMSIsInRlYW0yTmFtZSIsInZhbHVlMiIsInVzZUFuaW1hdGVkTGlzdCIsInNsaWRlcyIsIml0ZW1zQ291bnQiLCJhbmltYXRlZElkeCIsInNldEFuaW1hdGVkSWR4IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJnb05leHQiLCJ0aW1lb3V0IiwiREVGQVVMVF9BTklNQVRJT05fU1BFRUQiLCJXaWRlQ2FyZCIsImdldENoaWxkIiwibWF0Y2hlcyIsIm1hdGNoZXNPbmVUd28iLCJzbGlkZXNMaXN0IiwiQm9vbGVhbiIsInNsaWRlIiwiYW5pbWF0aW9uTmFtZSIsImN1cnJlbnRTbGlkZSIsInNsaWRlUnVsZXMiLCJiYWNrZ3JvdW5kUnVsZXMiLCJoYXNDdXN0b21CYWNrZ3JvdW5kIiwibW9kaWZ5U3RhdGUiLCJkZXZpY2VzTGlzdCIsIm5ld1N0YXRlIiwiUmVzaXplT2JzZXJ2ZXJCb3hPcHRpb25zIiwiUmVzaXplT2JzZXJ2ZXJTaXplIiwiRE9NUmVjdFJlYWRPbmx5IiwieSIsIlJlc2l6ZU9ic2VydmVyRW50cnkiLCJjYWxsYmFja3MiLCJTY2hlZHVsZXIiLCJSZXNpemVPYnNlcnZhdGlvbiIsIlJlc2l6ZU9ic2VydmVyRGV0YWlsIiwiUmVzaXplT2JzZXJ2ZXJDb250cm9sbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9BLEtBQUMsV0FBWTtBQUdaLFVBQUksU0FBUyxDQUFFLEVBQUM7QUFHaEIsZUFBU0EsY0FBYTtBQUNyQixZQUFJLFVBQVUsQ0FBQTtBQUVkLGlCQUFTQyxLQUFJLEdBQUdBLEtBQUksVUFBVSxRQUFRQSxNQUFLO0FBQzFDLGNBQUksTUFBTSxVQUFVQSxFQUFDO0FBQ3JCLGNBQUksQ0FBQztBQUFLO0FBRVYsY0FBSSxVQUFVLE9BQU87QUFFckIsY0FBSSxZQUFZLFlBQVksWUFBWSxVQUFVO0FBQ2pELG9CQUFRLEtBQUssR0FBRztBQUFBLFVBQ2hCLFdBQVUsTUFBTSxRQUFRLEdBQUcsR0FB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QWUsVUFBVSxVQUFVLFNBQVUsUUFBUSxTQUFTO0FBQzFELFVBQUksVUFBVSxXQUFXLEdBQUc7QUFDeEIsY0FBTSxJQUFJLFVBQVUsMkZBQTJGO0FBQUEsTUFDbEg7QUFDRCxVQUFJLENBQUMsVUFBVSxNQUFNLEdBQUc7QUFDcEIsY0FBTSxJQUFJLFVBQVUsc0ZBQXNGO0FBQUEsTUFDN0c7QUFDRCwrQkFBeUIsUUFBUSxNQUFNLFFBQVEsT0FBTztBQUFBLElBQzlEO0FBQ0ksSUFBQUEsZ0JBQWUsVUFBVSxZQUFZLFNBQVUsUUFBUTtBQUNuRCxVQUFJLFVBQVUsV0FBVyxHQUFHO0FBQ3hCLGNBQU0sSUFBSSxVQUFVLDZGQUE2RjtBQUFBLE1BQ3BIO0FBQ0QsVUFBSSxDQUFDLFVBQVUsTUFBTSxHQUFHO0FBQ3BCLGNBQU0sSUFBSSxVQUFVLHdGQUF3RjtBQUFBLE1BQy9HO0FBQ0QsK0JBQXlCLFVBQVUsTUFBTSxNQUFNO0FBQUEsSUFDdkQ7QUFDSSxJQUFBQSxnQkFBZSxVQUFVLGFBQWEsV0FBWTtBQUM5QywrQkFBeUIsV0FBVyxJQUFJO0FBQUEsSUFDaEQ7QUFDSSxJQUFBQSxnQkFBZSxXQUFXLFdBQVk7QUFDbEMsYUFBTztBQUFBLElBQ2Y7QUFDSSxXQUFPQTtBQUFBLEVBQ1g7Ozs7Ozs7Ozs7Ozs7Ozs7OzsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MCw4MSw4Miw4Myw4NCw4NSw4Niw4Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OCwxMDMsMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2Ml19
|
1
|
+
(function(R,_){typeof exports=="object"&&typeof module<"u"?_(exports,require("preact")):typeof define=="function"&&define.amd?define(["exports","preact"],_):(R=typeof globalThis<"u"?globalThis:R||self,_(R["@adstore/templates"]={},R.preact))})(this,function(R,_){"use strict";var Te=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ke={},Wo={get exports(){return Ke},set exports(e){Ke=e}};/*!
|
2
|
+
Copyright (c) 2018 Jed Watson.
|
3
|
+
Licensed under the MIT License (MIT), see
|
4
|
+
http://jedwatson.github.io/classnames
|
5
|
+
*/(function(e){(function(){var t={}.hasOwnProperty;function o(){for(var n=[],r=0;r<arguments.length;r++){var a=arguments[r];if(a){var c=typeof a;if(c==="string"||c==="number")n.push(a);else if(Array.isArray(a)){if(a.length){var l=o.apply(null,a);l&&n.push(l)}}else if(c==="object"){if(a.toString!==Object.prototype.toString&&!a.toString.toString().includes("[native code]")){n.push(a.toString());continue}for(var s in a)t.call(a,s)&&a[s]&&n.push(s)}}}return n.join(" ")}e.exports?(o.default=o,e.exports=o):window.classNames=o})()})(Wo);const A=Ke;var oe,b,Xe,_t,ue=0,ut=[],Ne=[],ft=_.options.__b,vt=_.options.__r,pt=_.options.diffed,ht=_.options.__c,gt=_.options.unmount;function fe(e,t){_.options.__h&&_.options.__h(b,e,ue||t),ue=0;var o=b.__H||(b.__H={__:[],__h:[]});return e>=o.__.length&&o.__.push({__V:Ne}),o.__[e]}function ve(e){return ue=1,Uo(wt,e)}function Uo(e,t,o){var n=fe(oe++,2);if(n.t=e,!n.__c&&(n.__=[o?o(t):wt(void 0,t),function(l){var s=n.__N?n.__N[0]:n.__[0],d=n.t(s,l);s!==d&&(n.__N=[d,n.__[1]],n.__c.setState({}))}],n.__c=b,!b.u)){var r=function(l,s,d){if(!n.__c.__H)return!0;var u=n.__c.__H.__.filter(function(v){return v.__c});if(u.every(function(v){return!v.__N}))return!a||a.call(this,l,s,d);var f=!1;return u.forEach(function(v){if(v.__N){var h=v.__[0];v.__=v.__N,v.__N=void 0,h!==v.__[0]&&(f=!0)}}),!(!f&&n.__c.props===l)&&(!a||a.call(this,l,s,d))};b.u=!0;var a=b.shouldComponentUpdate,c=b.componentWillUpdate;b.componentWillUpdate=function(l,s,d){if(this.__e){var u=a;a=void 0,r(l,s,d),a=u}c&&c.call(this,l,s,d)},b.shouldComponentUpdate=r}return n.__N||n.__}function ne(e,t){var o=fe(oe++,3);!_.options.__s&&Ye(o.__H,t)&&(o.__=e,o.i=t,b.__H.__h.push(o))}function bt(e,t){var o=fe(oe++,4);!_.options.__s&&Ye(o.__H,t)&&(o.__=e,o.i=t,b.__h.push(o))}function L(e){return ue=5,yt(function(){return{current:e}},[])}function mt(e,t,o){ue=6,bt(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},o==null?o:o.concat(e))}function yt(e,t){var o=fe(oe++,7);return Ye(o.__H,t)?(o.__V=e(),o.i=t,o.__h=e,o.__V):o.__}function Ko(e){var t=b.context[e.__c],o=fe(oe++,9);return o.c=e,t?(o.__==null&&(o.__=!0,t.sub(b)),t.props.value):e.__}function Xo(){for(var e;e=ut.shift();)if(e.__P&&e.__H)try{e.__H.__h.forEach(Ce),e.__H.__h.forEach(Je),e.__H.__h=[]}catch(t){e.__H.__h=[],_.options.__e(t,e.__v)}}_.options.__b=function(e){b=null,ft&&ft(e)},_.options.__r=function(e){vt&&vt(e),oe=0;var t=(b=e.__c).__H;t&&(Xe===b?(t.__h=[],b.__h=[],t.__.forEach(function(o){o.__N&&(o.__=o.__N),o.__V=Ne,o.__N=o.i=void 0})):(t.__h.forEach(Ce),t.__h.forEach(Je),t.__h=[])),Xe=b},_.options.diffed=function(e){pt&&pt(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(ut.push(t)!==1&&_t===_.options.requestAnimationFrame||((_t=_.options.requestAnimationFrame)||Jo)(Xo)),t.__H.__.forEach(function(o){o.i&&(o.__H=o.i),o.__V!==Ne&&(o.__=o.__V),o.i=void 0,o.__V=Ne})),Xe=b=null},_.options.__c=function(e,t){t.some(function(o){try{o.__h.forEach(Ce),o.__h=o.__h.filter(function(n){return!n.__||Je(n)})}catch(n){t.some(function(r){r.__h&&(r.__h=[])}),t=[],_.options.__e(n,o.__v)}}),ht&&ht(e,t)},_.options.unmount=function(e){gt&>(e);var t,o=e.__c;o&&o.__H&&(o.__H.__.forEach(function(n){try{Ce(n)}catch(r){t=r}}),o.__H=void 0,t&&_.options.__e(t,o.__v))};var $t=typeof requestAnimationFrame=="function";function Jo(e){var t,o=function(){clearTimeout(n),$t&&cancelAnimationFrame(t),setTimeout(e)},n=setTimeout(o,100);$t&&(t=requestAnimationFrame(o))}function Ce(e){var t=b,o=e.__c;typeof o=="function"&&(e.__c=void 0,o()),b=t}function Je(e){var t=b;e.__c=e.__(),b=t}function Ye(e,t){return!e||e.length!==t.length||t.some(function(o,n){return o!==e[n]})}function wt(e,t){return typeof t=="function"?t(e):t}function xt(e,t){for(var o in t)e[o]=t[o];return e}function Ot(e,t){for(var o in e)if(o!=="__source"&&!(o in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function kt(e){this.props=e}(kt.prototype=new _.Component).isPureReactComponent=!0,kt.prototype.shouldComponentUpdate=function(e,t){return Ot(this.props,e)||Ot(this.state,t)};var Tt=_.options.__b;_.options.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Tt&&Tt(e)};var Yo=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function pe(e){function t(o){var n=xt({},o);return delete n.ref,e(n,o.ref||null)}return t.$$typeof=Yo,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Zo=_.options.__e;_.options.__e=function(e,t,o,n){if(e.then){for(var r,a=t;a=a.__;)if((r=a.__c)&&r.__c)return t.__e==null&&(t.__e=o.__e,t.__k=o.__k),r.__c(e,t)}Zo(e,t,o,n)};var Nt=_.options.unmount;function Ct(e,t,o){return e&&(e.__c&&e.__c.__H&&(e.__c.__H.__.forEach(function(n){typeof n.__c=="function"&&n.__c()}),e.__c.__H=null),(e=xt({},e)).__c!=null&&(e.__c.__P===o&&(e.__c.__P=t),e.__c=null),e.__k=e.__k&&e.__k.map(function(n){return Ct(n,t,o)})),e}function St(e,t,o){return e&&(e.__v=null,e.__k=e.__k&&e.__k.map(function(n){return St(n,t,o)}),e.__c&&e.__c.__P===t&&(e.__e&&o.insertBefore(e.__e,e.__d),e.__c.__e=!0,e.__c.__P=o)),e}function Ze(){this.__u=0,this.t=null,this.__b=null}function At(e){var t=e.__.__c;return t&&t.__a&&t.__a(e)}function Se(){this.u=null,this.o=null}_.options.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Nt&&Nt(e)},(Ze.prototype=new _.Component).__c=function(e,t){var o=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(o);var r=At(n.__v),a=!1,c=function(){a||(a=!0,o.__R=null,r?r(l):l())};o.__R=c;var l=function(){if(!--n.__u){if(n.state.__a){var d=n.state.__a;n.__v.__k[0]=St(d,d.__c.__P,d.__c.__O)}var u;for(n.setState({__a:n.__b=null});u=n.t.pop();)u.forceUpdate()}},s=t.__h===!0;n.__u++||s||n.setState({__a:n.__b=n.__v.__k[0]}),e.then(c,c)},Ze.prototype.componentWillUnmount=function(){this.t=[]},Ze.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var o=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=Ct(this.__b,o,n.__O=n.__P)}this.__b=null}var r=t.__a&&_.createElement(_.Fragment,null,e.fallback);return r&&(r.__h=null),[_.createElement(_.Fragment,null,t.__a?null:e.children),r]};var Rt=function(e,t,o){if(++o[1]===o[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(o=e.u;o;){for(;o.length>3;)o.pop()();if(o[1]<o[0])break;e.u=o=o[2]}};(Se.prototype=new _.Component).__a=function(e){var t=this,o=At(t.__v),n=t.o.get(e);return n[0]++,function(r){var a=function(){t.props.revealOrder?(n.push(r),Rt(t,e,n)):r()};o?o(a):a()}},Se.prototype.render=function(e){this.u=null,this.o=new Map;var t=_.toChildArray(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var o=t.length;o--;)this.o.set(t[o],this.u=[1,0,this.u]);return e.children},Se.prototype.componentDidUpdate=Se.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,o){Rt(e,o,t)})};var Qo=typeof Symbol<"u"&&Symbol.for&&Symbol.for("react.element")||60103,en=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,tn=/^on(Ani|Tra|Tou|BeforeInp|Compo)/,on=/[A-Z0-9]/g,nn=typeof document<"u",rn=function(e){return(typeof Symbol<"u"&&typeof Symbol()=="symbol"?/fil|che|rad/:/fil|che|ra/).test(e)};_.Component.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(_.Component.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var jt=_.options.event;function an(){}function sn(){return this.cancelBubble}function cn(){return this.defaultPrevented}_.options.event=function(e){return jt&&(e=jt(e)),e.persist=an,e.isPropagationStopped=sn,e.isDefaultPrevented=cn,e.nativeEvent=e};var ln={enumerable:!1,configurable:!0,get:function(){return this.class}},Et=_.options.vnode;_.options.vnode=function(e){typeof e.type=="string"&&function(t){var o=t.props,n=t.type,r={};for(var a in o){var c=o[a];if(!(a==="value"&&"defaultValue"in o&&c==null||nn&&a==="children"&&n==="noscript"||a==="class"||a==="className")){var l=a.toLowerCase();a==="defaultValue"&&"value"in o&&o.value==null?a="value":a==="download"&&c===!0?c="":l==="ondoubleclick"?a="ondblclick":l!=="onchange"||n!=="input"&&n!=="textarea"||rn(o.type)?l==="onfocus"?a="onfocusin":l==="onblur"?a="onfocusout":tn.test(a)?a=l:n.indexOf("-")===-1&&en.test(a)?a=a.replace(on,"-$&").toLowerCase():c===null&&(c=void 0):l=a="oninput",l==="oninput"&&r[a=l]&&(a="oninputCapture"),r[a]=c}}n=="select"&&r.multiple&&Array.isArray(r.value)&&(r.value=_.toChildArray(o.children).forEach(function(s){s.props.selected=r.value.indexOf(s.props.value)!=-1})),n=="select"&&r.defaultValue!=null&&(r.value=_.toChildArray(o.children).forEach(function(s){s.props.selected=r.multiple?r.defaultValue.indexOf(s.props.value)!=-1:r.defaultValue==s.props.value})),o.class&&!o.className?(r.class=o.class,Object.defineProperty(r,"className",ln)):(o.className&&!o.class||o.class&&o.className)&&(r.class=r.className=o.className),t.props=r}(e),e.$$typeof=Qo,Et&&Et(e)};var It=_.options.__r;_.options.__r=function(e){It&&It(e),e.__c};var Pt=_.options.diffed;_.options.diffed=function(e){Pt&&Pt(e);var t=e.props,o=e.__e;o!=null&&e.type==="textarea"&&"value"in t&&t.value!==o.value&&(o.value=t.value==null?"":t.value)};function dn(){this.__data__=[],this.size=0}var _n=dn;function un(e,t){return e===t||e!==e&&t!==t}var Ae=un,fn=Ae;function vn(e,t){for(var o=e.length;o--;)if(fn(e[o][0],t))return o;return-1}var Re=vn,pn=Re,hn=Array.prototype,gn=hn.splice;function bn(e){var t=this.__data__,o=pn(t,e);if(o<0)return!1;var n=t.length-1;return o==n?t.pop():gn.call(t,o,1),--this.size,!0}var mn=bn,yn=Re;function $n(e){var t=this.__data__,o=yn(t,e);return o<0?void 0:t[o][1]}var wn=$n,xn=Re;function On(e){return xn(this.__data__,e)>-1}var kn=On,Tn=Re;function Nn(e,t){var o=this.__data__,n=Tn(o,e);return n<0?(++this.size,o.push([e,t])):o[n][1]=t,this}var Cn=Nn,Sn=_n,An=mn,Rn=wn,jn=kn,En=Cn;function re(e){var t=-1,o=e==null?0:e.length;for(this.clear();++t<o;){var n=e[t];this.set(n[0],n[1])}}re.prototype.clear=Sn,re.prototype.delete=An,re.prototype.get=Rn,re.prototype.has=jn,re.prototype.set=En;var je=re,In=je;function Pn(){this.__data__=new In,this.size=0}var Bn=Pn;function Ln(e){var t=this.__data__,o=t.delete(e);return this.size=t.size,o}var zn=Ln;function qn(e){return this.__data__.get(e)}var Hn=qn;function Mn(e){return this.__data__.has(e)}var Dn=Mn,Vn=typeof Te=="object"&&Te&&Te.Object===Object&&Te,Bt=Vn,Fn=Bt,Gn=typeof self=="object"&&self&&self.Object===Object&&self,Wn=Fn||Gn||Function("return this")(),ae=Wn,Un=ae,Kn=Un.Symbol,Lt=Kn,zt=Lt,qt=Object.prototype,Xn=qt.hasOwnProperty,Jn=qt.toString,he=zt?zt.toStringTag:void 0;function Yn(e){var t=Xn.call(e,he),o=e[he];try{e[he]=void 0;var n=!0}catch{}var r=Jn.call(e);return n&&(t?e[he]=o:delete e[he]),r}var Zn=Yn,Qn=Object.prototype,er=Qn.toString;function tr(e){return er.call(e)}var or=tr,Ht=Lt,nr=Zn,rr=or,ar="[object Null]",ir="[object Undefined]",Mt=Ht?Ht.toStringTag:void 0;function sr(e){return e==null?e===void 0?ir:ar:Mt&&Mt in Object(e)?nr(e):rr(e)}var Ee=sr;function cr(e){var t=typeof e;return e!=null&&(t=="object"||t=="function")}var W=cr,lr=Ee,dr=W,_r="[object AsyncFunction]",ur="[object Function]",fr="[object GeneratorFunction]",vr="[object Proxy]";function pr(e){if(!dr(e))return!1;var t=lr(e);return t==ur||t==fr||t==_r||t==vr}var Qe=pr,hr=ae,gr=hr["__core-js_shared__"],br=gr,et=br,Dt=function(){var e=/[^.]+$/.exec(et&&et.keys&&et.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function mr(e){return!!Dt&&Dt in e}var yr=mr,$r=Function.prototype,wr=$r.toString;function xr(e){if(e!=null){try{return wr.call(e)}catch{}try{return e+""}catch{}}return""}var Or=xr,kr=Qe,Tr=yr,Nr=W,Cr=Or,Sr=/[\\^$.*+?()[\]{}|]/g,Ar=/^\[object .+?Constructor\]$/,Rr=Function.prototype,jr=Object.prototype,Er=Rr.toString,Ir=jr.hasOwnProperty,Pr=RegExp("^"+Er.call(Ir).replace(Sr,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function Br(e){if(!Nr(e)||Tr(e))return!1;var t=kr(e)?Pr:Ar;return t.test(Cr(e))}var Lr=Br;function zr(e,t){return e==null?void 0:e[t]}var qr=zr,Hr=Lr,Mr=qr;function Dr(e,t){var o=Mr(e,t);return Hr(o)?o:void 0}var tt=Dr,Vr=tt,Fr=ae,Gr=Vr(Fr,"Map"),Vt=Gr,Wr=tt,Ur=Wr(Object,"create"),Ie=Ur,Ft=Ie;function Kr(){this.__data__=Ft?Ft(null):{},this.size=0}var Xr=Kr;function Jr(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var Yr=Jr,Zr=Ie,Qr="__lodash_hash_undefined__",ea=Object.prototype,ta=ea.hasOwnProperty;function oa(e){var t=this.__data__;if(Zr){var o=t[e];return o===Qr?void 0:o}return ta.call(t,e)?t[e]:void 0}var na=oa,ra=Ie,aa=Object.prototype,ia=aa.hasOwnProperty;function sa(e){var t=this.__data__;return ra?t[e]!==void 0:ia.call(t,e)}var ca=sa,la=Ie,da="__lodash_hash_undefined__";function _a(e,t){var o=this.__data__;return this.size+=this.has(e)?0:1,o[e]=la&&t===void 0?da:t,this}var ua=_a,fa=Xr,va=Yr,pa=na,ha=ca,ga=ua;function ie(e){var t=-1,o=e==null?0:e.length;for(this.clear();++t<o;){var n=e[t];this.set(n[0],n[1])}}ie.prototype.clear=fa,ie.prototype.delete=va,ie.prototype.get=pa,ie.prototype.has=ha,ie.prototype.set=ga;var ba=ie,Gt=ba,ma=je,ya=Vt;function $a(){this.size=0,this.__data__={hash:new Gt,map:new(ya||ma),string:new Gt}}var wa=$a;function xa(e){var t=typeof e;return t=="string"||t=="number"||t=="symbol"||t=="boolean"?e!=="__proto__":e===null}var Oa=xa,ka=Oa;function Ta(e,t){var o=e.__data__;return ka(t)?o[typeof t=="string"?"string":"hash"]:o.map}var Pe=Ta,Na=Pe;function Ca(e){var t=Na(this,e).delete(e);return this.size-=t?1:0,t}var Sa=Ca,Aa=Pe;function Ra(e){return Aa(this,e).get(e)}var ja=Ra,Ea=Pe;function Ia(e){return Ea(this,e).has(e)}var Pa=Ia,Ba=Pe;function La(e,t){var o=Ba(this,e),n=o.size;return o.set(e,t),this.size+=o.size==n?0:1,this}var za=La,qa=wa,Ha=Sa,Ma=ja,Da=Pa,Va=za;function se(e){var t=-1,o=e==null?0:e.length;for(this.clear();++t<o;){var n=e[t];this.set(n[0],n[1])}}se.prototype.clear=qa,se.prototype.delete=Ha,se.prototype.get=Ma,se.prototype.has=Da,se.prototype.set=Va;var Fa=se,Ga=je,Wa=Vt,Ua=Fa,Ka=200;function Xa(e,t){var o=this.__data__;if(o instanceof Ga){var n=o.__data__;if(!Wa||n.length<Ka-1)return n.push([e,t]),this.size=++o.size,this;o=this.__data__=new Ua(n)}return o.set(e,t),this.size=o.size,this}var Ja=Xa,Ya=je,Za=Bn,Qa=zn,ei=Hn,ti=Dn,oi=Ja;function ce(e){var t=this.__data__=new Ya(e);this.size=t.size}ce.prototype.clear=Za,ce.prototype.delete=Qa,ce.prototype.get=ei,ce.prototype.has=ti,ce.prototype.set=oi;var ni=ce,ri=tt,ai=function(){try{var e=ri(Object,"defineProperty");return e({},"",{}),e}catch{}}(),Wt=ai,Ut=Wt;function ii(e,t,o){t=="__proto__"&&Ut?Ut(e,t,{configurable:!0,enumerable:!0,value:o,writable:!0}):e[t]=o}var ot=ii,si=ot,ci=Ae;function li(e,t,o){(o!==void 0&&!ci(e[t],o)||o===void 0&&!(t in e))&&si(e,t,o)}var Kt=li;function di(e){return function(t,o,n){for(var r=-1,a=Object(t),c=n(t),l=c.length;l--;){var s=c[e?l:++r];if(o(a[s],s,a)===!1)break}return t}}var _i=di,ui=_i,fi=ui(),vi=fi,Be={},pi={get exports(){return Be},set exports(e){Be=e}};(function(e,t){var o=ae,n=t&&!t.nodeType&&t,r=n&&!0&&e&&!e.nodeType&&e,a=r&&r.exports===n,c=a?o.Buffer:void 0,l=c?c.allocUnsafe:void 0;function s(d,u){if(u)return d.slice();var f=d.length,v=l?l(f):new d.constructor(f);return d.copy(v),v}e.exports=s})(pi,Be);var hi=ae,gi=hi.Uint8Array,bi=gi,Xt=bi;function mi(e){var t=new e.constructor(e.byteLength);return new Xt(t).set(new Xt(e)),t}var yi=mi,$i=yi;function wi(e,t){var o=t?$i(e.buffer):e.buffer;return new e.constructor(o,e.byteOffset,e.length)}var xi=wi;function Oi(e,t){var o=-1,n=e.length;for(t||(t=Array(n));++o<n;)t[o]=e[o];return t}var ki=Oi,Ti=W,Jt=Object.create,Ni=function(){function e(){}return function(t){if(!Ti(t))return{};if(Jt)return Jt(t);e.prototype=t;var o=new e;return e.prototype=void 0,o}}(),Ci=Ni;function Si(e,t){return function(o){return e(t(o))}}var Ai=Si,Ri=Ai,ji=Ri(Object.getPrototypeOf,Object),Yt=ji,Ei=Object.prototype;function Ii(e){var t=e&&e.constructor,o=typeof t=="function"&&t.prototype||Ei;return e===o}var Zt=Ii,Pi=Ci,Bi=Yt,Li=Zt;function zi(e){return typeof e.constructor=="function"&&!Li(e)?Pi(Bi(e)):{}}var qi=zi;function Hi(e){return e!=null&&typeof e=="object"}var ge=Hi,Mi=Ee,Di=ge,Vi="[object Arguments]";function Fi(e){return Di(e)&&Mi(e)==Vi}var Gi=Fi,Qt=Gi,Wi=ge,eo=Object.prototype,Ui=eo.hasOwnProperty,Ki=eo.propertyIsEnumerable,Xi=Qt(function(){return arguments}())?Qt:function(e){return Wi(e)&&Ui.call(e,"callee")&&!Ki.call(e,"callee")},to=Xi,Ji=Array.isArray,oo=Ji,Yi=9007199254740991;function Zi(e){return typeof e=="number"&&e>-1&&e%1==0&&e<=Yi}var no=Zi,Qi=Qe,es=no;function ts(e){return e!=null&&es(e.length)&&!Qi(e)}var nt=ts,os=nt,ns=ge;function rs(e){return ns(e)&&os(e)}var as=rs,be={},is={get exports(){return be},set exports(e){be=e}};function ss(){return!1}var cs=ss;(function(e,t){var o=ae,n=cs,r=t&&!t.nodeType&&t,a=r&&!0&&e&&!e.nodeType&&e,c=a&&a.exports===r,l=c?o.Buffer:void 0,s=l?l.isBuffer:void 0,d=s||n;e.exports=d})(is,be);var ls=Ee,ds=Yt,_s=ge,us="[object Object]",fs=Function.prototype,vs=Object.prototype,ro=fs.toString,ps=vs.hasOwnProperty,hs=ro.call(Object);function gs(e){if(!_s(e)||ls(e)!=us)return!1;var t=ds(e);if(t===null)return!0;var o=ps.call(t,"constructor")&&t.constructor;return typeof o=="function"&&o instanceof o&&ro.call(o)==hs}var bs=gs,ms=Ee,ys=no,$s=ge,ws="[object Arguments]",xs="[object Array]",Os="[object Boolean]",ks="[object Date]",Ts="[object Error]",Ns="[object Function]",Cs="[object Map]",Ss="[object Number]",As="[object Object]",Rs="[object RegExp]",js="[object Set]",Es="[object String]",Is="[object WeakMap]",Ps="[object ArrayBuffer]",Bs="[object DataView]",Ls="[object Float32Array]",zs="[object Float64Array]",qs="[object Int8Array]",Hs="[object Int16Array]",Ms="[object Int32Array]",Ds="[object Uint8Array]",Vs="[object Uint8ClampedArray]",Fs="[object Uint16Array]",Gs="[object Uint32Array]",g={};g[Ls]=g[zs]=g[qs]=g[Hs]=g[Ms]=g[Ds]=g[Vs]=g[Fs]=g[Gs]=!0,g[ws]=g[xs]=g[Ps]=g[Os]=g[Bs]=g[ks]=g[Ts]=g[Ns]=g[Cs]=g[Ss]=g[As]=g[Rs]=g[js]=g[Es]=g[Is]=!1;function Ws(e){return $s(e)&&ys(e.length)&&!!g[ms(e)]}var Us=Ws;function Ks(e){return function(t){return e(t)}}var Xs=Ks,Le={},Js={get exports(){return Le},set exports(e){Le=e}};(function(e,t){var o=Bt,n=t&&!t.nodeType&&t,r=n&&!0&&e&&!e.nodeType&&e,a=r&&r.exports===n,c=a&&o.process,l=function(){try{var s=r&&r.require&&r.require("util").types;return s||c&&c.binding&&c.binding("util")}catch{}}();e.exports=l})(Js,Le);var Ys=Us,Zs=Xs,ao=Le,io=ao&&ao.isTypedArray,Qs=io?Zs(io):Ys,so=Qs;function ec(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}var co=ec,tc=ot,oc=Ae,nc=Object.prototype,rc=nc.hasOwnProperty;function ac(e,t,o){var n=e[t];(!(rc.call(e,t)&&oc(n,o))||o===void 0&&!(t in e))&&tc(e,t,o)}var ic=ac,sc=ic,cc=ot;function lc(e,t,o,n){var r=!o;o||(o={});for(var a=-1,c=t.length;++a<c;){var l=t[a],s=n?n(o[l],e[l],l,o,e):void 0;s===void 0&&(s=e[l]),r?cc(o,l,s):sc(o,l,s)}return o}var dc=lc;function _c(e,t){for(var o=-1,n=Array(e);++o<e;)n[o]=t(o);return n}var uc=_c,fc=9007199254740991,vc=/^(?:0|[1-9]\d*)$/;function pc(e,t){var o=typeof e;return t=t??fc,!!t&&(o=="number"||o!="symbol"&&vc.test(e))&&e>-1&&e%1==0&&e<t}var lo=pc,hc=uc,gc=to,bc=oo,mc=be,yc=lo,$c=so,wc=Object.prototype,xc=wc.hasOwnProperty;function Oc(e,t){var o=bc(e),n=!o&&gc(e),r=!o&&!n&&mc(e),a=!o&&!n&&!r&&$c(e),c=o||n||r||a,l=c?hc(e.length,String):[],s=l.length;for(var d in e)(t||xc.call(e,d))&&!(c&&(d=="length"||r&&(d=="offset"||d=="parent")||a&&(d=="buffer"||d=="byteLength"||d=="byteOffset")||yc(d,s)))&&l.push(d);return l}var kc=Oc;function Tc(e){var t=[];if(e!=null)for(var o in Object(e))t.push(o);return t}var Nc=Tc,Cc=W,Sc=Zt,Ac=Nc,Rc=Object.prototype,jc=Rc.hasOwnProperty;function Ec(e){if(!Cc(e))return Ac(e);var t=Sc(e),o=[];for(var n in e)n=="constructor"&&(t||!jc.call(e,n))||o.push(n);return o}var Ic=Ec,Pc=kc,Bc=Ic,Lc=nt;function zc(e){return Lc(e)?Pc(e,!0):Bc(e)}var _o=zc,qc=dc,Hc=_o;function Mc(e){return qc(e,Hc(e))}var Dc=Mc,uo=Kt,Vc=Be,Fc=xi,Gc=ki,Wc=qi,fo=to,vo=oo,Uc=as,Kc=be,Xc=Qe,Jc=W,Yc=bs,Zc=so,po=co,Qc=Dc;function el(e,t,o,n,r,a,c){var l=po(e,o),s=po(t,o),d=c.get(s);if(d){uo(e,o,d);return}var u=a?a(l,s,o+"",e,t,c):void 0,f=u===void 0;if(f){var v=vo(s),h=!v&&Kc(s),y=!v&&!h&&Zc(s);u=s,v||h||y?vo(l)?u=l:Uc(l)?u=Gc(l):h?(f=!1,u=Vc(s,!0)):y?(f=!1,u=Fc(s,!0)):u=[]:Yc(s)||fo(s)?(u=l,fo(l)?u=Qc(l):(!Jc(l)||Xc(l))&&(u=Wc(s))):f=!1}f&&(c.set(s,u),r(u,s,n,a,c),c.delete(s)),uo(e,o,u)}var tl=el,ol=ni,nl=Kt,rl=vi,al=tl,il=W,sl=_o,cl=co;function ho(e,t,o,n,r){e!==t&&rl(t,function(a,c){if(r||(r=new ol),il(a))al(e,t,c,o,ho,n,r);else{var l=n?n(cl(e,c),a,c+"",e,t,r):void 0;l===void 0&&(l=a),nl(e,c,l)}},sl)}var ll=ho;function dl(e){return e}var go=dl;function _l(e,t,o){switch(o.length){case 0:return e.call(t);case 1:return e.call(t,o[0]);case 2:return e.call(t,o[0],o[1]);case 3:return e.call(t,o[0],o[1],o[2])}return e.apply(t,o)}var ul=_l,fl=ul,bo=Math.max;function vl(e,t,o){return t=bo(t===void 0?e.length-1:t,0),function(){for(var n=arguments,r=-1,a=bo(n.length-t,0),c=Array(a);++r<a;)c[r]=n[t+r];r=-1;for(var l=Array(t+1);++r<t;)l[r]=n[r];return l[t]=o(c),fl(e,this,l)}}var pl=vl;function hl(e){return function(){return e}}var gl=hl,bl=gl,mo=Wt,ml=go,yl=mo?function(e,t){return mo(e,"toString",{configurable:!0,enumerable:!1,value:bl(t),writable:!0})}:ml,$l=yl,wl=800,xl=16,Ol=Date.now;function kl(e){var t=0,o=0;return function(){var n=Ol(),r=xl-(n-o);if(o=n,r>0){if(++t>=wl)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var Tl=kl,Nl=$l,Cl=Tl,Sl=Cl(Nl),Al=Sl,Rl=go,jl=pl,El=Al;function Il(e,t){return El(jl(e,t,Rl),e+"")}var Pl=Il,Bl=Ae,Ll=nt,zl=lo,ql=W;function Hl(e,t,o){if(!ql(o))return!1;var n=typeof t;return(n=="number"?Ll(o)&&zl(t,o.length):n=="string"&&t in o)?Bl(o[t],e):!1}var Ml=Hl,Dl=Pl,Vl=Ml;function Fl(e){return Dl(function(t,o){var n=-1,r=o.length,a=r>1?o[r-1]:void 0,c=r>2?o[2]:void 0;for(a=e.length>3&&typeof a=="function"?(r--,a):void 0,c&&Vl(o[0],o[1],c)&&(a=r<3?void 0:a,r=1),t=Object(t);++n<r;){var l=o[n];l&&e(t,l,n,a)}return t})}var Gl=Fl,Wl=ll,Ul=Gl;Ul(function(e,t,o){Wl(e,t,o)});const ze=(e,t,o)=>Array.isArray(e)?e.map((n,r)=>{const a=[o,r].filter(I).join(".");return ze(t(r,n,a),t,a)}):typeof e=="object"&&e?Object.entries(e).reduce((n,[r,a])=>{const c=[o,r].filter(I).join(".");return n[r]=ze(t(r,a,c),t,c),n},{}):e,Kl=e=>{const t=document.getElementsByTagName("head")[0],o=document.createElement("link");Object.entries(e).forEach(([n,r])=>o.setAttribute(n,r)),t.appendChild(o)},yo=()=>{let e={};return{on:(c,l)=>{c in e?e[c].push(l):e[c]=[l]},has:c=>c in e,get:c=>e[c],emit:(c,...l)=>c in e?e[c].map(s=>s(...l)).filter(Boolean):[],reset:()=>e={}}},$o=e=>!e&&e==null,I=e=>!$o(e),le=(e,...t)=>t.reduce((o,n)=>(o[n]=e[n],o),{});function me(e,...t){const o={...e};return t.forEach(n=>{delete o[n]}),o}const Xl=(e,t,o)=>{if(!t)return;const r=(Array.isArray(t)?t:t.match(/([^[.\]])+/g)).reduce((a,c)=>a&&a[c],e);return r===void 0?o:r},qe=(e,t,o)=>{const n=Array.isArray(t)?t:t.match(/([^[.\]])+/g);return n.reduce((r,a,c)=>(r[a]===void 0&&(r[a]={}),c===n.length-1&&(r[a]=o),r[a]),e)},Jl=e=>{const t=e.slice(1);t.length===3&&(e=t.split("").map(n=>`${n}${n}`).join(""));const o=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return o?{r:parseInt(o[1],16),g:parseInt(o[2],16),b:parseInt(o[3],16)}:void 0},Yl=(...e)=>e.map(t=>JSON.stringify(t)).every((t,o,n)=>t===n[0]),Zl=e=>"id"in e&&"root"in e,Ql=(e,t=1)=>e.replace(")",`, ${t})`).replace("rgb","rgba"),wo=["desktop","laptop","tablet","mobile"],ed={mobile:320,tablet:768,laptop:1024,desktop:1920},$={root:"_root_24bq9_1",icon:"_icon_24bq9_5",iconTarget:"_iconTarget_24bq9_17",body:"_body_24bq9_22",bodyOpen:"_bodyOpen_24bq9_30",simpleGift_in:"_simpleGift_in_24bq9_1",close:"_close_24bq9_43",arrow:"_arrow_24bq9_57",container:"_container_24bq9_68",inner:"_inner_24bq9_74",logo:"_logo_24bq9_81",text:"_text_24bq9_88",button:"_button_24bq9_103",buttonAnimated:"_buttonAnimated_24bq9_112",increase:"_increase_24bq9_1",legalGap:"_legalGap_24bq9_116",legalOpen:"_legalOpen_24bq9_120",legal:"_legal_24bq9_116",legalText:"_legalText_24bq9_148",legalButton:"_legalButton_24bq9_166",fadein:"_fadein_24bq9_1",pulse:"_pulse_24bq9_1",gradient:"_gradient_24bq9_1",wiggle:"_wiggle_24bq9_1"};var td=0;function i(e,t,o,n,r,a){var c,l,s={};for(l in t)l=="ref"?c=t[l]:s[l]=t[l];var d={type:e,props:s,key:o,ref:c,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:--td,__source:r,__self:a};if(typeof e=="function"&&(c=e.defaultProps))for(l in c)s[l]===void 0&&(s[l]=c[l]);return _.options.vnode&&_.options.vnode(d),d}const xo=_.createContext(),U=({children:e,value:t})=>i(xo.Provider,{value:t,children:e}),K=e=>async({target:t,id:o,ref:n,state:r})=>{if(!("ResizeObserver"in window)){const a=await Promise.resolve().then(()=>r_);window.ResizeObserver=a.ResizeObserver}return _.render(i(U,{value:r,children:_.cloneElement(e,{ref:n,id:o})}),t)},j=()=>Ko(xo),od=(e={})=>typeof e=="object"&&I(e)&&wo.every(t=>t in e),nd=(e,t)=>e&&ze(e,(o,n)=>{if(od(n)){const r=n[t];return"parent"in r&&I(r.parent)?{...n[r.parent],...me(r,"parent")}:r}return n}),X=(e,t)=>nd(e,t),de=({id:e,targetRef:t,parentKey:o="device-container",breakpoints:n=ed})=>{const[r,a]=ve("desktop"),c=l=>{var f;const s=l.getBoundingClientRect().width||0,d=Object.entries({...n}).sort(([v,h],[y,x])=>h-x),u=((f=d.find(([v,h],y)=>{const[x,p]=d[y+1]||[];return s>=h&&s<p}))==null?void 0:f[0])||"desktop";a(u)};return bt(()=>{const l=t.current.closest(`[data-${o}='${e}']`)||document.body;l&&(new ResizeObserver(()=>c(l)).observe(l),c(l))},[]),r},He=(e,t)=>`${e}${t}`,rd=e=>e.startsWith("px_"),ad=e=>e.startsWith("percent_"),id=(e,t)=>{let o=e,n=t;return rd(o)&&(o=o.replace("px_",""),n=He(t,"px")),ad(o)&&(o=o.replace("percent_",""),n=He(t,"%")),{key:o,value:n}},sd=["borderWidth","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","minHeight","minWidth","maxWidth","maxHeight","fontSize","height","width","letterSpacing","fontSize","left","right","top","bottom","marginTop","marginBottom","marginLeft","marginRight","paddingTop","paddingBottom","paddingLeft","paddingRight"],cd=(e,t)=>{const o=Object.keys(e);if((o.includes("innerHTML")||o.includes("innerText"))&&console.warn('Warning! InnerHTML and innerText is deprecated. Use "children" property.',t),typeof e!="object")return e;if("typography"in e&&"accentTypography"in e){const n=e.typography,r=e.accentTypography;e={...e,...n,"--font-family":r.fontFamily,"--accent-color":r.color,"px_--accent-size":r.fontSize}}return Object.entries(e).reduce((n,[r,a])=>{sd.includes(r)&&(a=He(a,"px"));const{key:c,value:l}=id(r,a);if(n[c]=l,c==="innerHTML"&&(n.innerHTML=I(l)?`${l}`:""),c==="innerText"&&(n.innerText=I(l)?`${l}`:""),c==="children"&&(n.children=typeof l=="string"?I(l)?`${l}`:"":l),(c==="innerHTML"||c==="innerText"||c==="children")&&(typeof l=="string"&&l.length===0||$o(l))&&(n.display="none"),c.includes("borderWidth")&&(n.borderStyle="solid"),c==="corner"&&(n.borderRadius=He(l,"px")),c==="backgroundFit"&&(n.backgroundSize=l),c==="backgroundImage"&&I(l)&&(n.backgroundImage=`url(${l})`,n.backgroundRepeat="no-repeat"),c==="backgroundColorOpacity"&&I(n.backgroundColorOpacity)&&I(n.backgroundColor)){const s=Jl(n.backgroundColor);s&&(n.backgroundColor=Ql(`rgb(${s.r}, ${s.g}, ${s.b})`,+n.backgroundColorOpacity/100))}return c==="isBold"&&(n.fontWeight=l?"bold":"initial"),c==="isItalic"&&(n.fontStyle=l?"italic":"initial"),c==="isThrough"&&(n.textDecoration=l?"line-through":"initial"),n},e)},ld=e=>typeof e=="object"&&!Array.isArray(e)&&"parent"in e,C=e=>I(e)?Object.entries(e).reduce((t,[o,n])=>(t[o]=ld(n)?cd({...e[o]},o):n,t),{}):e,ye=({children:e,...t})=>{var n;const o=(n=e==null?void 0:e.replace("script",""))==null?void 0:n.replace(/{{(.*?)}}/g,"<span>$1</span>");return i("div",{...t,dangerouslySetInnerHTML:{__html:o}})},Oo=()=>{const[e,t]=ve(!1);return[e,()=>t(o=>!o)]},$e=()=>i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",children:i("path",{d:"M17.659 4.929a1 1 0 1 1 1.414 1.414L13.416 12l5.657 5.657a1 1 0 0 1-1.415 1.414l-5.656-5.657-5.657 5.657a1 1 0 0 1-1.414-1.414L10.587 12 4.931 6.343A1 1 0 1 1 6.345 4.93l5.657 5.657 5.656-5.657Z",fill:"currentColor"})}),rt=()=>i("svg",{viewBox:"0 0 16 16",children:i("path",{fill:"currentColor",fillRule:"evenodd",d:"M2.13 8H7v7.31H3.22a1.09 1.09 0 01-1.09-1.09zM9 15.34h3.81a1.09 1.09 0 001.09-1.09V8H9zm5.8-9.94v1.19a.48.48 0 01-.48.48H1.71a.48.48 0 01-.48-.48V5.4c0-.596.484-1.08 1.08-1.08H5a2.48 2.48 0 01-1.47-1.65 1.62 1.62 0 01.26-1.4 1.57 1.57 0 011-.58c.11-.01.22-.01.33 0a2.5 2.5 0 012 1A9 9 0 018 3.22a10.38 10.38 0 01.91-1.54 2.49 2.49 0 011.93-1h.36c.369.065.702.26.94.55.31.407.414.936.28 1.43a2.48 2.48 0 01-1.45 1.64h2.77a1.08 1.08 0 011.03 1.1zM8.66 4a9.81 9.81 0 001.9-.55 1.52 1.52 0 00.88-1 .68.68 0 00-.1-.59.6.6 0 00-.34-.22.58.58 0 00-.18 0 1.52 1.52 0 00-1.17.63A9.06 9.06 0 008.66 4zm-3.32-.58A9.62 9.62 0 007.25 4a8.59 8.59 0 00-1-1.72 1.51 1.51 0 00-1.18-.63h-.13a.66.66 0 00-.39.22.66.66 0 00-.09.57c.13.443.453.804.88.98z"})}),dd=e=>({fade:`${e.fade} 2s linear infinite`,pulse:`${e.pulse} .3s linear 0s infinite alternate forwards`,wiggle:`${e.wiggle} 2s linear infinite`,gradient:`${e.gradient} 3s ease infinite`}),ko=(e,t)=>{var u,f,v,h,y,x,p,w,m,k,B,M,F;const o=dd(t),n=C(e),r=(u=n==null?void 0:n.icon)==null?void 0:u.hasIcon,a={left:`${+(((f=e==null?void 0:e.container)==null?void 0:f.left)||0)*-1+8}px`,backgroundColor:(v=n==null?void 0:n.container)==null?void 0:v.backgroundColor,borderTopWidth:(h=n==null?void 0:n.container)==null?void 0:h.borderWidth,borderTopColor:(y=n==null?void 0:n.container)==null?void 0:y.borderColor,borderTopStyle:"solid",borderLeftWidth:(x=n==null?void 0:n.container)==null?void 0:x.borderWidth,borderLeftColor:(p=n==null?void 0:n.container)==null?void 0:p.borderColor,borderLeftStyle:"solid"},c={left:(w=n==null?void 0:n.container)==null?void 0:w.left},l=(((m=n==null?void 0:n.icon)==null?void 0:m.animations)||[]).map(G=>o[G]).join(", "),s=I((k=n==null?void 0:n.icon)==null?void 0:k.gradientColor)&&((B=n==null?void 0:n.icon)!=null&&B.animations.includes("gradient"))?{background:`linear-gradient(-90deg, ${(M=n.icon)==null?void 0:M.backgroundColor} 0%, ${(F=n==null?void 0:n.icon)==null?void 0:F.gradientColor} 100%) 0% 0% / 400% 400%`,backgroundSize:"400% 400%"}:n==null?void 0:n.icon,d={...(n==null?void 0:n.icon)||{},animation:l,...s};return{hasIcon:r,arrowRules:a,bodyRules:c,iconRules:d}},Me=e=>{const t=new Set([]);ze(e,(n,r)=>(n==="fontFamily"&&t.add(r),r));const o=yt(()=>Array.from(t.values()).map(n=>({rel:"stylesheet",href:`https://fonts.googleapis.com/css?family=${n}:300,400,500,700&display=swap`})),[t]);ne(()=>{o.forEach(n=>Kl(n))},[o])},we=["backgroundColor","backgroundColorOpacity","backgroundImage","backgroundFit"],_d=["borderWidth","borderColor","borderStyle"],To=["marginTop","marginBottom","marginLeft","marginRight","paddingTop","paddingBottom","paddingLeft","paddingRight"],ud=e=>console.log(`Noop YaMektika reach goal: ${e}`),fd=e=>console.log(`Noop AdFox reach goal: ${e}`),vd=({delay:e,onOpen:t,onAutoOpen:o})=>{const[n,r]=ve(!1),a=L(null),c=s=>{clearTimeout(a.current),a.current=null},l=()=>{c(a.current),r(s=>!s)};return ne(()=>(a.current=setTimeout(()=>{r(!0),o&&o()},e||1e3),()=>c(a.current)),[e]),ne(()=>{n&&!a.current&&t&&t()},[n]),{isOpen:n,toggle:l}},No=({ref:e,openDelay:t})=>{const o=L(yo()),n=s=>o.current.on("open",s),r=s=>o.current.on("click",s),a=s=>o.current.on("autoOpen",s),{isOpen:c,toggle:l}=vd({delay:t,onOpen:()=>o.current.emit("open"),onAutoOpen:()=>o.current.emit("autoOpen")});return mt(e,()=>({onOpen:n,onClick:r,onAutoOpen:a})),{isOpen:c,toggle:l,click:()=>o.current.emit("click")}},pd=pe(({id:e},t)=>{var w,m,k,B,M,F,G;const o=L(null),[n,r]=Oo(),a=j(),c=de({targetRef:o,id:e}),l=X(a,c),s=C(l),{hasIcon:d,iconRules:u,bodyRules:f,arrowRules:v}=ko(l,{fade:$.fadein,pulse:$.pulse,wiggle:$.wiggle,gradient:$.gradient}),{isOpen:h,toggle:y,click:x}=No({ref:t,openDelay:(w=l==null?void 0:l.container)==null?void 0:w.delay});Me(l);const p=n?le(s.container,..._d):{};return i("div",{className:A($.root,{[$.legalOpen]:n}),ref:o,children:[i("div",{className:$.icon,style:u,onClick:y,children:d&&i("div",{className:$.iconTarget,children:i(rt,{})})}),i("div",{className:A($.body,{[$.bodyOpen]:h}),style:f,children:[i("div",{className:$.arrow,style:v}),i("div",{className:$.close,style:s==null?void 0:s.close,onClick:y,children:i($e,{})}),i("div",{className:$.container,style:s==null?void 0:s.container,children:[i("a",{href:(m=s==null?void 0:s.root)==null?void 0:m.offer,target:"_blank",rel:"nofollow noopener noreferrer",onClick:x,children:[i("div",{className:$.inner,children:[i("div",{className:$.logo,style:s==null?void 0:s.logo}),i(ye,{className:$.text,style:s==null?void 0:s.text,children:(k=s==null?void 0:s.text)==null?void 0:k.children})]}),i("div",{className:A($.button,{[$.buttonAnimated]:s==null?void 0:s.button.isAnimated}),style:s==null?void 0:s.button,children:(B=s==null?void 0:s.button)==null?void 0:B.children})]}),i("div",{className:$.legalGap}),i("div",{className:$.legal,style:{...s==null?void 0:s.legal,...p},children:i("span",{className:$.legalText,children:i("span",{children:[i("span",{children:(M=s==null?void 0:s.legal)==null?void 0:M.children}),i("span",{className:$.legalButton,onClick:r,children:n?(F=s==null?void 0:s.legal)==null?void 0:F.buttonOpenText:(G=s==null?void 0:s.legal)==null?void 0:G.buttonHideText})]})})})]})]})]})}),hd=K(i(pd,{})),O={root:"_root_1hrqs_1",icon:"_icon_1hrqs_5",iconTarget:"_iconTarget_1hrqs_17",body:"_body_1hrqs_22",desktop:"_desktop_1hrqs_29",tablet:"_tablet_1hrqs_29",laptop:"_laptop_1hrqs_29",bodyOpen:"_bodyOpen_1hrqs_33",complexGift_in:"_complexGift_in_1hrqs_1",arrow:"_arrow_1hrqs_46",container:"_container_1hrqs_56",promotion:"_promotion_1hrqs_61",close:"_close_1hrqs_69",head:"_head_1hrqs_83",headIcon:"_headIcon_1hrqs_90",headTitle:"_headTitle_1hrqs_96",inner:"_inner_1hrqs_103",fadein:"_fadein_1hrqs_1",pulse:"_pulse_1hrqs_1",gradient:"_gradient_1hrqs_1",wiggle:"_wiggle_1hrqs_1"},z={root:"_root_tv8qf_1",body:"_body_tv8qf_30",bodyInner:"_bodyInner_tv8qf_38",line:"_line_tv8qf_43",text:"_text_tv8qf_53",button:"_button_tv8qf_69",logo:"_logo_tv8qf_81",variant2:"_variant2_tv8qf_87",buttonText:"_buttonText_tv8qf_91",legal:"_legal_tv8qf_108"},at=(e,t="root")=>{const o=L(),n=(e==null?void 0:e.yaReachGoal)||ud,r=(e==null?void 0:e.adfoxReachGoal)||fd,a=I(e)?le(e[t],"yaShow","yaClick","adfoxShow","adfoxClick"):{};return ne(()=>{Yl(o.current,a)||(a.yaShow&&n(a.yaShow),a.adfoxShow&&r(a.adfoxShow)),o.current=a},[a]),()=>{a.yaClick&&n(a.yaClick),a.adfoxClick&&r(a.adfoxClick)}},gd=()=>{var n,r,a,c,l;const e=j(),t=C(e),o=at(e);return i("a",{href:(n=t.root)==null?void 0:n.offer,target:"_blank",rel:"nofollow noopener noreferrer",className:A(z.root,{[z.variant2]:((r=t.root)==null?void 0:r.variant)==="variant2"}),style:t.root,onClick:o,children:[i("div",{className:z.body,children:[i("div",{className:z.line,style:t.line}),i("div",{className:z.bodyInner,children:[i("div",{className:z.logo,style:t.logo}),i("div",{className:z.text,style:t.text,children:i(ye,{children:(a=t.text)==null?void 0:a.children})})]}),i("div",{className:z.button,style:t.button,children:[i("div",{className:z.logo,style:t.logo}),i("div",{className:z.buttonText,children:(c=t.button)==null?void 0:c.children})]})]}),i("div",{className:z.legal,style:t.legal,children:(l=t.legal)==null?void 0:l.children})]})},bd=pe(({id:e},t)=>{var x,p,w,m;const o=L(null),n=j(),r=de({targetRef:o,id:e}),a=X(n,r),c=C(a),{isOpen:l,click:s,toggle:d}=No({ref:t,openDelay:(x=a==null?void 0:a.container)==null?void 0:x.delay});Me(a);const{hasIcon:u,iconRules:f,bodyRules:v,arrowRules:h}=ko(a,{fade:O.fadein,pulse:O.pulse,wiggle:O.wiggle,gradient:O.gradient}),y=(p=c==null?void 0:c.title)==null?void 0:p.hasIcon;return i("div",{ref:o,className:A(O.root,{[O.desktop]:r==="desktop",[O.laptop]:r==="laptop",[O.tablet]:r==="tablet"}),children:[i("div",{className:O.icon,style:f,onClick:d,children:u&&i("div",{className:O.iconTarget,children:i(rt,{})})}),i("div",{className:A(O.body,{[O.bodyOpen]:l}),style:v,children:[i("div",{className:O.arrow,style:h}),i("div",{className:O.container,style:c.container,children:[i("div",{className:O.close,style:c.close,onClick:d,children:i($e,{})}),i("div",{className:O.promotion,style:c.promotion,children:(w=c.promotion)==null?void 0:w.children}),i("div",{className:O.head,children:[y&&i("div",{className:O.headIcon,style:le(c.title,"color"),children:i(rt,{})}),i("div",{className:O.headTitle,style:c.title,children:(m=c.title)==null?void 0:m.children})]}),i("div",{className:O.inner,onClick:s,children:(c.children||[]).map(k=>i(U,{value:k,children:i(gd,{})}))})]})]})]})}),md=K(i(bd,{})),P={root:"_root_15w5v_1",content:"_content_15w5v_11",laptop:"_laptop_15w5v_20",tablet:"_tablet_15w5v_24",desktop:"_desktop_15w5v_28",wrapper:"_wrapper_15w5v_32",overlay:"_overlay_15w5v_36",close:"_close_15w5v_42",body:"_body_15w5v_50",logo:"_logo_15w5v_62",text:"_text_15w5v_68",button:"_button_15w5v_72",legal:"_legal_15w5v_87"},J=e=>e&&{left:"flex-start",center:"center",right:"flex-end"}[e],yd={root:"_root_2ic16_1"},$d=()=>{var o;const e=j(),t=C(e);return i("div",{className:yd.root,style:t.root,children:i(ye,{children:(o=t==null?void 0:t.root)==null?void 0:o.children})})},it=e=>{const t=L(yo()),[o,n]=ve(!1),r=s=>t.current.on("visible",s),a=s=>t.current.on("click",s),c=()=>n(!0),l=()=>n(!1);return ne(()=>{t.current.emit("visible",o)},[o]),mt(e,()=>({onVisible:r,onClick:a,show:c,hide:l})),{isOpen:o,show:c,hide:l,click:()=>t.current.emit("click")}},wd=pe(({id:e},t)=>{var h,y,x,p,w,m,k;const o=L(null),{isOpen:n,hide:r,click:a}=it(t),c=de({targetRef:o,id:e}),l=j(),s=X(l,c);qe(s,"button.percent_width",(h=s==null?void 0:s.button)==null?void 0:h.width),qe(s,"legal.percent_width",(y=s==null?void 0:s.legal)==null?void 0:y.width);const d=C(s),u={alignItems:J((x=d.root)==null?void 0:x.align)},f={...d==null?void 0:d.button,justifyContent:J((p=d.root)==null?void 0:p.textAlign)},v={...d==null?void 0:d.legal,justifyContent:J((w=d.root)==null?void 0:w.textAlign)};return i("div",{className:P.root,ref:o,style:{display:n?"flex":"none"},children:[i("div",{className:P.overlay,style:d.overlay,onClick:r}),i("div",{className:P.wrapper,children:[i("div",{className:P.close,style:{color:(m=d.close)==null?void 0:m.backgroundColor},onClick:r,children:i($e,{})}),i("a",{href:(k=d.root)==null?void 0:k.offer,target:"_blank",rel:"nofollow noopener noreferrer",className:A(P.content,{[P.desktop]:c==="desktop",[P.tablet]:c==="tablet",[P.laptop]:c==="laptop"}),style:d.root,onClick:a,children:i("div",{className:P.body,style:u,children:[i("div",{className:P.logo,style:d.logo}),i("div",{className:P.text,children:((d==null?void 0:d.children)||[]).map(B=>i(U,{value:B,children:i($d,{})}))}),i("div",{className:P.button,style:f,children:f==null?void 0:f.children}),i("div",{className:P.legal,style:v,children:v==null?void 0:v.children})]})})]})]})}),xd=K(i(wd,{})),Y={root:"_root_1ifs0_1",content:"_content_1ifs0_5",desktop:"_desktop_1ifs0_18",overlay:"_overlay_1ifs0_23",close:"_close_1ifs0_29",title:"_title_1ifs0_36",wrapper:"_wrapper_1ifs0_51"},D={root:"_root_1ska4_1",desktop:"_desktop_1ska4_10",header:"_header_1ska4_15",logo:"_logo_1ska4_26",container:"_container_1ska4_33",body:"_body_1ska4_44",text:"_text_1ska4_61",button:"_button_1ska4_84",legal:"_legal_1ska4_102"},Od=({onClick:e})=>{var r,a,c,l;const t=j(),o=C(t),n=(t==null?void 0:t.device)||"desktop";return i("a",{href:(r=o.root)==null?void 0:r.offer,target:"_blank",rel:"nofollow noopener noreferrer",className:A(D.root,{[D.desktop]:n==="desktop"}),style:me(o.root,...To),onClick:e,children:[i("div",{className:D.header,style:o.header,children:i("div",{className:D.logo,style:o.logo})}),i("div",{className:D.container,style:le(o.root,...To),children:[i("div",{className:D.body,children:[i("div",{className:D.logo}),i(ye,{className:D.text,style:o.text,children:(a=o.text)==null?void 0:a.children})]}),i("div",{children:[i("div",{className:D.button,style:o.button,children:(c=o.button)==null?void 0:c.children}),i("div",{className:D.legal,style:o.legal,children:(l=o.legal)==null?void 0:l.children})]})]})]})},kd=pe(({id:e},t)=>{var u,f;const o=L(null),{isOpen:n,hide:r,click:a}=it(t),c=de({targetRef:o,id:e}),l=j(),s=X(l,c),d=C(s);return Me(s),i("div",{className:Y.root,style:{display:n?"flex":"none"},children:[i("div",{className:Y.overlay,style:d.overlay,onClick:r}),i("div",{ref:o,className:A(Y.content,{[Y.desktop]:c==="desktop"}),style:d.root,children:[i("div",{className:Y.close,style:{color:(u=d.close)==null?void 0:u.backgroundColor},onClick:r,children:i($e,{})}),i("div",{className:Y.title,style:d.title,children:(f=d.title)==null?void 0:f.children}),i("div",{className:Y.wrapper,children:(d.children||[]).map(v=>i(U,{value:{...v,device:c},children:i(Od,{onClick:a})}))})]})]})}),Td=K(i(kd,{})),S={root:"_root_14xbh_1",content:"_content_14xbh_11",close:"_close_14xbh_19",overlay:"_overlay_14xbh_27",body:"_body_14xbh_33",desktop:"_desktop_14xbh_43",laptop:"_laptop_14xbh_48",tablet:"_tablet_14xbh_48",head:"_head_14xbh_53",title:"_title_14xbh_63",logo:"_logo_14xbh_76",wrapper:"_wrapper_14xbh_82",text:"_text_14xbh_89",button:"_button_14xbh_104",buttonHead:"_buttonHead_14xbh_119",buttonTarget:"_buttonTarget_14xbh_138",legal:"_legal_14xbh_154"},T={root:"_root_14sq5_1",left:"_left_14sq5_8",desktop:"_desktop_14sq5_15",teams:"_teams_14sq5_19",logo:"_logo_14sq5_25",league:"_league_14sq5_32",name:"_name_14sq5_37",right:"_right_14sq5_43",odd:"_odd_14sq5_54",oddLabel:"_oddLabel_14sq5_67",oddValue:"_oddValue_14sq5_76",team:"_team_14sq5_19",teamLogo:"_teamLogo_14sq5_100",teamName:"_teamName_14sq5_106"},Nd=()=>{var n,r,a,c,l,s,d;const e=j(),t=C(e),o=(e==null?void 0:e.device)||"desktop";return i("div",{className:A(T.root,{[T.desktop]:o==="desktop"}),children:[i("div",{className:T.left,children:[i("div",{className:T.teams,children:[i("div",{className:T.logo}),i("div",{className:T.logo})]}),i("div",{className:T.body,children:[i("div",{className:T.league,style:t.league,children:(n=t.league)==null?void 0:n.children}),i("div",{className:T.name,style:t.teams,children:[(r=t.teams)==null?void 0:r.teamA," — ",(a=t.teams)==null?void 0:a.teamB]})]})]}),i("div",{className:T.right,children:[i("div",{className:T.team,children:[i("div",{className:T.teamLogo}),i("div",{className:T.teamName,style:t.teams,children:(c=t.teams)==null?void 0:c.teamA})]}),i("div",{className:T.odd,children:[i("div",{className:T.oddLabel,style:t.oddLabel,children:(l=t.oddLabel)==null?void 0:l.children}),i("div",{className:T.oddValue,style:t.oddValue,children:(s=t.oddValue)==null?void 0:s.children})]}),i("div",{className:T.team,children:[i("div",{className:T.teamLogo}),i("div",{className:T.teamName,style:t.teams,children:(d=t.teams)==null?void 0:d.teamB})]})]})]})},Cd=pe(({id:e},t)=>{var x,p,w,m,k,B,M,F,G,ee,te,We,Ue,ke;const o=L(null),{isOpen:n,hide:r,click:a}=it(t),c=de({targetRef:o,id:e}),l=j(),s=X(l,c);qe(s,"buttonWrapper.percent_width",(x=s==null?void 0:s.buttonWrapper)==null?void 0:x.width),qe(s,"legal.percent_width",(p=s==null?void 0:s.legal)==null?void 0:p.width);const d=C(s);Me(s);const u={...d.root,alignItems:J((w=d.root)==null?void 0:w.align)},f={...d.content,alignItems:J((m=d.root)==null?void 0:m.align)},v={...d.text,textAlign:(k=d.root)==null?void 0:k.align},h={...d==null?void 0:d.button,justifyContent:J((B=d.root)==null?void 0:B.textAlign)},y={...d==null?void 0:d.legal,justifyContent:J((M=d.root)==null?void 0:M.textAlign)};return i("div",{className:S.root,ref:o,style:{display:n?"flex":"none"},children:[i("div",{className:S.overlay,style:d.overlay,onClick:r}),i("div",{className:A(S.content,{[S.desktop]:c==="desktop",[S.laptop]:c==="laptop",[S.tablet]:c==="tablet"}),children:[i("div",{className:S.close,style:{color:(F=d.close)==null?void 0:F.backgroundColor},onClick:r,children:i($e,{})}),i("a",{ref:o,href:(G=d.root)==null?void 0:G.offer,target:"_blank",rel:"nofollow noopener noreferrer",onClick:a,children:i("div",{className:S.body,style:u,children:[i("div",{className:S.head,children:[i("div",{className:S.title,style:d.title,children:(ee=d.title)==null?void 0:ee.children}),i("div",{className:S.logo,style:d.logo})]}),i("div",{className:S.wrapper,style:f,children:(d.children||[]).map(a_=>i(U,{value:{...a_,device:c},children:i(Nd,{})}))}),i(ye,{className:S.text,style:v,children:(te=d.text)==null?void 0:te.children}),i("div",{className:S.button,style:d.buttonWrapper,children:[i("div",{className:S.buttonHead,style:d.buttonHead,children:(We=d.buttonHead)==null?void 0:We.children}),i("div",{className:S.buttonTarget,style:h,children:(Ue=d.button)==null?void 0:Ue.children})]}),i("div",{className:S.legal,style:y,children:(ke=d.legal)==null?void 0:ke.children})]})})]})]})}),Sd=K(i(Cd,{})),q={root:"_root_1slvw_1",background:"_background_1slvw_20",body:"_body_1slvw_29",bookmaker:"_bookmaker_1slvw_39",button:"_button_1slvw_46",rowFirst:"_rowFirst_1slvw_60",rowSecond:"_rowSecond_1slvw_66",legal:"_legal_1slvw_72",legalText:"_legalText_1slvw_88",legalOpen:"_legalOpen_1slvw_98",legalButton:"_legalButton_1slvw_103"},Ad=()=>{var a,c,l,s,d,u,f;const e=j(),t=C(e),[o,n]=Oo(),r=at(e);return i("div",{className:q.root,style:t.root,children:[i("div",{className:q.background,style:t.background}),i("a",{href:(a=t.root)==null?void 0:a.offer,target:"_blank",rel:"nofollow noopener noreferrer",className:q.body,onClick:r,children:[i("div",{children:[i("div",{className:q.rowFirst,style:t.rowFirst,children:(c=t.rowFirst)==null?void 0:c.children}),i("div",{className:q.rowSecond,style:t.rowSecond,children:(l=t.rowSecond)==null?void 0:l.children}),i("div",{className:q.bookmaker,children:"winline"})]}),i("div",{className:q.button,style:t.button,children:(s=t.button)==null?void 0:s.children})]}),i("div",{className:A(q.legal,{[q.legalOpen]:o}),style:t.legalInfo,children:i("span",{className:q.legalText,children:[i("span",{children:(d=t.legalInfo)==null?void 0:d.children}),i("span",{className:q.legalButton,style:t.legalInfoButton,onClick:n,children:o?(u=t.legalInfoButton)==null?void 0:u.openText:(f=t.legalInfoButton)==null?void 0:f.closeText})]})})]})},Rd=K(i(()=>{const e=L(null),t=j(),n=X(t,"desktop"),r=C(n);return i("div",{ref:e,children:((r==null?void 0:r.children)||[]).map(a=>i(U,{value:a,children:i(Ad,{})}))})},{})),N={root:"_root_a3kem_1",desktop:"_desktop_a3kem_13",laptop:"_laptop_a3kem_14",promotion:"_promotion_a3kem_18",background:"_background_a3kem_34",content:"_content_a3kem_43",variant2:"_variant2_a3kem_56",logo:"_logo_a3kem_60",left:"_left_a3kem_72",center:"_center_a3kem_86",slide:"_slide_a3kem_92",slide_animated_default:"_slide_animated_default_a3kem_106","fade-in-out":"_fade-in-out_a3kem_1","slide_animated_bottom-top":"_slide_animated_bottom-top_a3kem_109","fade-in-bottom-out-top":"_fade-in-bottom-out-top_a3kem_1","slide_animated_top-bottom":"_slide_animated_top-bottom_a3kem_112",right:"_right_a3kem_116",buttonWrapper:"_buttonWrapper_a3kem_131",button:"_button_a3kem_131",button_animated:"_button_animated_a3kem_162",increase:"_increase_a3kem_1","fade-in-top-out-bottom":"_fade-in-top-out-bottom_a3kem_1"},Co={root:"_root_1cgtj_1",desktop:"_desktop_1cgtj_19"},jd=()=>{var o;const e=j(),t=C(e);return i("div",{className:A(Co.root,{[Co.desktop]:(e==null?void 0:e.device)==="desktop"}),style:me(t.root,...we),children:(o=t.root)==null?void 0:o.children})},H={root:"_root_vjs41_1",odd:"_odd_vjs41_7",oddReverse:"_oddReverse_vjs41_14",oddLabel:"_oddLabel_vjs41_18",oddLogo:"_oddLogo_vjs41_30",coef:"_coef_vjs41_36",coefHead:"_coefHead_vjs41_42",coefValue:"_coefValue_vjs41_47"},Ed=()=>{var n,r,a;const e=j(),t=C(e),o=me(t.root,...we);return i("div",{className:H.root,children:[i("div",{className:H.odd,children:[i("div",{className:H.oddLogo,style:o}),i("div",{className:H.oddLabel,style:o,children:(n=t.root)==null?void 0:n.valueOne})]}),i("div",{className:H.coef,children:[i("div",{className:H.coefHead,style:t.coef,children:"X"}),i("div",{className:H.coefValue,style:o,children:(r=t.root)==null?void 0:r.valueX})]}),i("div",{className:A(H.odd,H.oddReverse),children:[i("div",{className:H.oddLogo,style:o}),i("div",{className:H.oddLabel,style:o,children:(a=t.root)==null?void 0:a.valueTwo})]})]})},E={root:"_root_1va5h_1",title:"_title_1va5h_8",titleLabel:"_titleLabel_1va5h_12",tablet:"_tablet_1va5h_16",desktop:"_desktop_1va5h_19",laptop:"_laptop_1va5h_19",titleValue:"_titleValue_1va5h_23",team:"_team_1va5h_34",teamLogo:"_teamLogo_1va5h_44",teamName:"_teamName_1va5h_72",teamValue:"_teamValue_1va5h_84"},Id=()=>{const e=j(),t=C(e);return i("div",{className:A(E.root,{[E.desktop]:(e==null?void 0:e.device)==="desktop",[E.laptop]:(e==null?void 0:e.device)==="laptop",[E.tablet]:(e==null?void 0:e.device)==="tablet"}),style:me(t.root,...we),children:[i("div",{className:E.title,children:[i("div",{className:E.titleLabel,style:t.titleLabel,children:t.titleLabel.children}),i("div",{className:E.titleValue,style:t.titleValue,children:t.titleValue.children})]}),i("div",{children:[i("div",{className:E.team,children:[i("div",{className:E.teamLogo,style:t.logo}),i("div",{className:E.teamName,style:t.teamName,children:t.team1Name.children}),i("div",{className:E.teamValue,style:t.value,children:t.value1.children})]}),i("div",{className:E.team,children:[i("div",{className:E.teamLogo,style:t.logo}),i("div",{className:E.teamName,style:t.teamName,children:t.team2Name.children}),i("div",{className:E.teamValue,style:t.value,children:t.value2.children})]})]})]})},Pd=(e=[])=>{var a;const t=e.length,[o,n]=ve(0),r=(a=e[o||0])==null?void 0:a.animationDuration;return ne(()=>{const l=setTimeout(()=>{n(s=>s+1<t?s+1:0)},r);return()=>clearTimeout(l)},[n,t,r,o]),o},Bd=3700,Ld=K(i(()=>{var f,v,h,y,x;const e=L(null),t=j(),o=de({targetRef:e}),n=X(t,o),r=C(n),a=at(n),c=p=>({text:i(jd,{}),matches:i(Ed,{}),matchesOneTwo:i(Id,{})})[p],l=(r.children||[]).filter(Boolean).map(p=>{var w,m;return{...p,animationName:(w=p==null?void 0:p.root)==null?void 0:w.animationName,animationDuration:((m=p==null?void 0:p.root)==null?void 0:m.animationDuration)||Bd}}),s=Pd(l),d=C(l[s]||{}),u=(f=d==null?void 0:d.root)!=null&&f.hasCustomBackground?le((d==null?void 0:d.root)||{},...we):le(r.background,...we);return i("a",{ref:e,href:(v=r.root)==null?void 0:v.offer,target:"_blank",rel:"nofollow noopener noreferrer",className:A(N.root,{[N.desktop]:o==="desktop",[N.laptop]:o==="laptop",[N.tablet]:o==="tablet",[N.variant2]:((h=r.root)==null?void 0:h.variant)==="variant2"}),style:r.root,onClick:a,children:[i("div",{className:N.background,style:u}),i("div",{className:N.promotion,style:r.promotion,children:(y=r.promotion)==null?void 0:y.children}),i("div",{className:N.content,children:[i("div",{className:N.left,children:i("div",{className:N.logo,style:r.logo})}),i("div",{className:N.center,children:(r.children||[]).map((p,w)=>{var m,k;return i("div",{className:N.slide,style:{animationName:s===w?N[((m=p.root)==null?void 0:m.animationName)||"fade-in-out"]:"none",animationDuration:`${(k=p.root)==null?void 0:k.animationDuration}ms`},children:i(U,{value:{...p,device:o},children:c(p.name)})})})}),i("div",{className:N.right,children:[i("div",{className:N.logo,style:r.logo}),i("div",{className:N.buttonWrapper,children:i("div",{className:N.button,style:r.button,children:[i("div",{className:N.logo,style:r.logo}),(x=r.button)==null?void 0:x.children]})})]})]})]})},{})),zd=(e,t,o,n,r=wo)=>{const a={...e};return r.forEach(c=>{a[t]={...a[t],[c]:{...a[t][c],[o]:typeof n=="function"?n(Xl(a,`${t}.${c}.${o}`)):n}}}),a};var Z=[],qd=function(){return Z.some(function(e){return e.activeTargets.length>0})},Hd=function(){return Z.some(function(e){return e.skippedTargets.length>0})},So="ResizeObserver loop completed with undelivered notifications.",Md=function(){var e;typeof ErrorEvent=="function"?e=new ErrorEvent("error",{message:So}):(e=document.createEvent("Event"),e.initEvent("error",!1,!1),e.message=So),window.dispatchEvent(e)},xe;(function(e){e.BORDER_BOX="border-box",e.CONTENT_BOX="content-box",e.DEVICE_PIXEL_CONTENT_BOX="device-pixel-content-box"})(xe||(xe={}));var Q=function(e){return Object.freeze(e)},Ao=function(){function e(t,o){this.inlineSize=t,this.blockSize=o,Q(this)}return e}(),Ro=function(){function e(t,o,n,r){return this.x=t,this.y=o,this.width=n,this.height=r,this.top=this.y,this.left=this.x,this.bottom=this.top+this.height,this.right=this.left+this.width,Q(this)}return e.prototype.toJSON=function(){var t=this,o=t.x,n=t.y,r=t.top,a=t.right,c=t.bottom,l=t.left,s=t.width,d=t.height;return{x:o,y:n,top:r,right:a,bottom:c,left:l,width:s,height:d}},e.fromRect=function(t){return new e(t.x,t.y,t.width,t.height)},e}(),st=function(e){return e instanceof SVGElement&&"getBBox"in e},jo=function(e){if(st(e)){var t=e.getBBox(),o=t.width,n=t.height;return!o&&!n}var r=e,a=r.offsetWidth,c=r.offsetHeight;return!(a||c||e.getClientRects().length)},Eo=function(e){var t;if(e instanceof Element)return!0;var o=(t=e==null?void 0:e.ownerDocument)===null||t===void 0?void 0:t.defaultView;return!!(o&&e instanceof o.Element)},Dd=function(e){switch(e.tagName){case"INPUT":if(e.type!=="image")break;case"VIDEO":case"AUDIO":case"EMBED":case"OBJECT":case"CANVAS":case"IFRAME":case"IMG":return!0}return!1},Oe=typeof window<"u"?window:{},De=new WeakMap,Io=/auto|scroll/,Vd=/^tb|vertical/,Fd=/msie|trident/i.test(Oe.navigator&&Oe.navigator.userAgent),V=function(e){return parseFloat(e||"0")},_e=function(e,t,o){return e===void 0&&(e=0),t===void 0&&(t=0),o===void 0&&(o=!1),new Ao((o?t:e)||0,(o?e:t)||0)},Po=Q({devicePixelContentBoxSize:_e(),borderBoxSize:_e(),contentBoxSize:_e(),contentRect:new Ro(0,0,0,0)}),Bo=function(e,t){if(t===void 0&&(t=!1),De.has(e)&&!t)return De.get(e);if(jo(e))return De.set(e,Po),Po;var o=getComputedStyle(e),n=st(e)&&e.ownerSVGElement&&e.getBBox(),r=!Fd&&o.boxSizing==="border-box",a=Vd.test(o.writingMode||""),c=!n&&Io.test(o.overflowY||""),l=!n&&Io.test(o.overflowX||""),s=n?0:V(o.paddingTop),d=n?0:V(o.paddingRight),u=n?0:V(o.paddingBottom),f=n?0:V(o.paddingLeft),v=n?0:V(o.borderTopWidth),h=n?0:V(o.borderRightWidth),y=n?0:V(o.borderBottomWidth),x=n?0:V(o.borderLeftWidth),p=f+d,w=s+u,m=x+h,k=v+y,B=l?e.offsetHeight-k-e.clientHeight:0,M=c?e.offsetWidth-m-e.clientWidth:0,F=r?p+m:0,G=r?w+k:0,ee=n?n.width:V(o.width)-F-M,te=n?n.height:V(o.height)-G-B,We=ee+p+M+m,Ue=te+w+B+k,ke=Q({devicePixelContentBoxSize:_e(Math.round(ee*devicePixelRatio),Math.round(te*devicePixelRatio),a),borderBoxSize:_e(We,Ue,a),contentBoxSize:_e(ee,te,a),contentRect:new Ro(f,s,ee,te)});return De.set(e,ke),ke},Lo=function(e,t,o){var n=Bo(e,o),r=n.borderBoxSize,a=n.contentBoxSize,c=n.devicePixelContentBoxSize;switch(t){case xe.DEVICE_PIXEL_CONTENT_BOX:return c;case xe.BORDER_BOX:return r;default:return a}},zo=function(){function e(t){var o=Bo(t);this.target=t,this.contentRect=o.contentRect,this.borderBoxSize=Q([o.borderBoxSize]),this.contentBoxSize=Q([o.contentBoxSize]),this.devicePixelContentBoxSize=Q([o.devicePixelContentBoxSize])}return e}(),qo=function(e){if(jo(e))return 1/0;for(var t=0,o=e.parentNode;o;)t+=1,o=o.parentNode;return t},Gd=function(){var e=1/0,t=[];Z.forEach(function(c){if(c.activeTargets.length!==0){var l=[];c.activeTargets.forEach(function(d){var u=new zo(d.target),f=qo(d.target);l.push(u),d.lastReportedSize=Lo(d.target,d.observedBox),f<e&&(e=f)}),t.push(function(){c.callback.call(c.observer,l,c.observer)}),c.activeTargets.splice(0,c.activeTargets.length)}});for(var o=0,n=t;o<n.length;o++){var r=n[o];r()}return e},Ho=function(e){Z.forEach(function(o){o.activeTargets.splice(0,o.activeTargets.length),o.skippedTargets.splice(0,o.skippedTargets.length),o.observationTargets.forEach(function(r){r.isActive()&&(qo(r.target)>e?o.activeTargets.push(r):o.skippedTargets.push(r))})})},Wd=function(){var e=0;for(Ho(e);qd();)e=Gd(),Ho(e);return Hd()&&Md(),e>0},ct,Mo=[],Ud=function(){return Mo.splice(0).forEach(function(e){return e()})},Kd=function(e){if(!ct){var t=0,o=document.createTextNode(""),n={characterData:!0};new MutationObserver(function(){return Ud()}).observe(o,n),ct=function(){o.textContent="".concat(t?t--:t++)}}Mo.push(e),ct()},Xd=function(e){Kd(function(){requestAnimationFrame(e)})},Ve=0,Jd=function(){return!!Ve},Yd=250,Zd={attributes:!0,characterData:!0,childList:!0,subtree:!0},Do=["resize","load","transitionend","animationend","animationstart","animationiteration","keyup","keydown","mouseup","mousedown","mouseover","mouseout","blur","focus"],Vo=function(e){return e===void 0&&(e=0),Date.now()+e},lt=!1,Qd=function(){function e(){var t=this;this.stopped=!0,this.listener=function(){return t.schedule()}}return e.prototype.run=function(t){var o=this;if(t===void 0&&(t=Yd),!lt){lt=!0;var n=Vo(t);Xd(function(){var r=!1;try{r=Wd()}finally{if(lt=!1,t=n-Vo(),!Jd())return;r?o.run(1e3):t>0?o.run(t):o.start()}})}},e.prototype.schedule=function(){this.stop(),this.run()},e.prototype.observe=function(){var t=this,o=function(){return t.observer&&t.observer.observe(document.body,Zd)};document.body?o():Oe.addEventListener("DOMContentLoaded",o)},e.prototype.start=function(){var t=this;this.stopped&&(this.stopped=!1,this.observer=new MutationObserver(this.listener),this.observe(),Do.forEach(function(o){return Oe.addEventListener(o,t.listener,!0)}))},e.prototype.stop=function(){var t=this;this.stopped||(this.observer&&this.observer.disconnect(),Do.forEach(function(o){return Oe.removeEventListener(o,t.listener,!0)}),this.stopped=!0)},e}(),dt=new Qd,Fo=function(e){!Ve&&e>0&&dt.start(),Ve+=e,!Ve&&dt.stop()},e_=function(e){return!st(e)&&!Dd(e)&&getComputedStyle(e).display==="inline"},t_=function(){function e(t,o){this.target=t,this.observedBox=o||xe.CONTENT_BOX,this.lastReportedSize={inlineSize:0,blockSize:0}}return e.prototype.isActive=function(){var t=Lo(this.target,this.observedBox,!0);return e_(this.target)&&(this.lastReportedSize=t),this.lastReportedSize.inlineSize!==t.inlineSize||this.lastReportedSize.blockSize!==t.blockSize},e}(),o_=function(){function e(t,o){this.activeTargets=[],this.skippedTargets=[],this.observationTargets=[],this.observer=t,this.callback=o}return e}(),Fe=new WeakMap,Go=function(e,t){for(var o=0;o<e.length;o+=1)if(e[o].target===t)return o;return-1},Ge=function(){function e(){}return e.connect=function(t,o){var n=new o_(t,o);Fe.set(t,n)},e.observe=function(t,o,n){var r=Fe.get(t),a=r.observationTargets.length===0;Go(r.observationTargets,o)<0&&(a&&Z.push(r),r.observationTargets.push(new t_(o,n&&n.box)),Fo(1),dt.schedule())},e.unobserve=function(t,o){var n=Fe.get(t),r=Go(n.observationTargets,o),a=n.observationTargets.length===1;r>=0&&(a&&Z.splice(Z.indexOf(n),1),n.observationTargets.splice(r,1),Fo(-1))},e.disconnect=function(t){var o=this,n=Fe.get(t);n.observationTargets.slice().forEach(function(r){return o.unobserve(t,r.target)}),n.activeTargets.splice(0,n.activeTargets.length)},e}(),n_=function(){function e(t){if(arguments.length===0)throw new TypeError("Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.");if(typeof t!="function")throw new TypeError("Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.");Ge.connect(this,t)}return e.prototype.observe=function(t,o){if(arguments.length===0)throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Eo(t))throw new TypeError("Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element");Ge.observe(this,t,o)},e.prototype.unobserve=function(t){if(arguments.length===0)throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.");if(!Eo(t))throw new TypeError("Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element");Ge.unobserve(this,t)},e.prototype.disconnect=function(){Ge.disconnect(this)},e.toString=function(){return"function ResizeObserver () { [polyfill code] }"},e}();const r_=Object.freeze(Object.defineProperty({__proto__:null,ResizeObserver:n_,ResizeObserverEntry:zo,ResizeObserverSize:Ao},Symbol.toStringTag,{value:"Module"}));R.BonusCard=Rd,R.ComplexGift=md,R.ComplexPopup=Td,R.ExpressPopup=Sd,R.SimpleGift=hd,R.SimplePopup=xd,R.WideCard=Ld,R.isValidTemplate=Zl,R.modifyState=zd,Object.defineProperty(R,Symbol.toStringTag,{value:"Module"})});
|