dgeoutils 2.4.16 → 2.4.19
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/cjs/DPoint.d.ts +7 -1
- package/dist/cjs/DPoint.js +25 -0
- package/dist/es2015/DPoint.js +25 -0
- package/dist/esm/DPoint.js +25 -0
- package/dist/umd/dgeoutils.js +26 -1
- package/dist/umd/dgeoutils.min.js +1 -1
- package/dist/umd/dgeoutils.min.js.map +1 -1
- package/package.json +1 -1
package/dist/umd/dgeoutils.js
CHANGED
|
@@ -2645,6 +2645,17 @@
|
|
|
2645
2645
|
};
|
|
2646
2646
|
return __assign.apply(this, arguments);
|
|
2647
2647
|
};
|
|
2648
|
+
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
2649
|
+
var t = {};
|
|
2650
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
2651
|
+
t[p] = s[p];
|
|
2652
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
2653
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
2654
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
2655
|
+
t[p[i]] = s[p[i]];
|
|
2656
|
+
}
|
|
2657
|
+
return t;
|
|
2658
|
+
};
|
|
2648
2659
|
var __read$2 = (undefined && undefined.__read) || function (o, n) {
|
|
2649
2660
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
2650
2661
|
if (!m) return o;
|
|
@@ -2693,10 +2704,19 @@
|
|
|
2693
2704
|
if (lat && lng) {
|
|
2694
2705
|
return new DPoint(lng, lat, alt !== null && alt !== void 0 ? alt : 0);
|
|
2695
2706
|
}
|
|
2707
|
+
var _c = c, x = _c.x, y = _c.y, z = _c.z, properties = __rest(_c, ["x", "y", "z"]);
|
|
2708
|
+
if (isDefAndNotNull(x) && isDefAndNotNull(y)) {
|
|
2709
|
+
return new DPoint(x, y, z).setProperties(properties);
|
|
2710
|
+
}
|
|
2696
2711
|
var t = c;
|
|
2697
2712
|
if (c.type === 'Point') {
|
|
2698
2713
|
t = c.coordinates;
|
|
2699
2714
|
}
|
|
2715
|
+
if (c.type === 'Feature') {
|
|
2716
|
+
var f = DPoint.parse(c.geometry, format);
|
|
2717
|
+
f.properties = __assign({}, c.properties);
|
|
2718
|
+
return f;
|
|
2719
|
+
}
|
|
2700
2720
|
return format.replace(/[^x-z]/gmiu, '')
|
|
2701
2721
|
.split('')
|
|
2702
2722
|
.reduce(function (a, k, index) {
|
|
@@ -3342,6 +3362,11 @@
|
|
|
3342
3362
|
this.y = Math.max(this.y, p.y);
|
|
3343
3363
|
return this;
|
|
3344
3364
|
};
|
|
3365
|
+
DPoint.prototype.setIfMoreThan = function (p) {
|
|
3366
|
+
this.x = Math.min(this.x, p.x);
|
|
3367
|
+
this.y = Math.min(this.y, p.y);
|
|
3368
|
+
return this;
|
|
3369
|
+
};
|
|
3345
3370
|
DPoint.prototype.minus = function () {
|
|
3346
3371
|
return this.scale(-1);
|
|
3347
3372
|
};
|
|
@@ -3948,4 +3973,4 @@
|
|
|
3948
3973
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3949
3974
|
|
|
3950
3975
|
}));
|
|
3951
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRExpbmUuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vRFBsYW5lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmV4cG9ydCB2YXIgREdlbyA9IHtcbiAgICBERUJVRzogZmFsc2UsXG4gICAgcGFyc2VGb3JtYXQ6ICd4eXonXG59O1xuZXhwb3J0IHZhciB3YXJuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAoREdlby5ERUJVRykge1xuICAgICAgICBjb25zb2xlLndhcm4uYXBwbHkoY29uc29sZSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH1cbn07XG5leHBvcnQgdmFyIGlzRGVmQW5kTm90TnVsbCA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBhICE9IHVuZGVmaW5lZDsgfTtcbnZhciBob29rID0gZnVuY3Rpb24gKHNjb3BlKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBzY29wZTsgfTsgfTtcbnZhciBzaG91bGRCZUludCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmNsb25lKCkucm91bmQoKVxuICAgICAgICAuZXF1YWwocCkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIEludCFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEJlVUludCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmNsb25lKCkucm91bmQoKVxuICAgICAgICAuZXF1YWwocCkgfHwgIXAuZ3RPckVxdWFsKERQb2ludC56ZXJvKCkpKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBVSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVEZWdyZWUgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlV29ybGRHZW9kZXRpY1N5c3RlbSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgZGVncmVlIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVSYWRpYW5zID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAubGlrZVJhZGlhbnMpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIHJhZGlhbnMhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRFeGlzdCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFpc0RlZkFuZE5vdE51bGwocCkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGV4aXN0IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVNZXRlcnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUHNldWRvTWVyY2F0b3IpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIG1ldGVycyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xuZXhwb3J0IHZhciBjaGVja0Z1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmNOYW1lKSB7IHJldHVybiAoe1xuICAgIGNoZWNrQXJndW1lbnQ6IGZ1bmN0aW9uIChhcmdOYW1lKSB7XG4gICAgICAgIGlmICghREdlby5ERUJVRykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaG91bGRCZURlZ3JlZTogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZU1ldGVyczogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVVJbnQ6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkQmVSYWRpYW5zOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEV4aXN0OiBob29rKHRoaXMpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG91bGRCZURlZ3JlZTogc2hvdWxkQmVEZWdyZWUodGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVNZXRlcnM6IHNob3VsZEJlTWV0ZXJzKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlSW50OiBzaG91bGRCZUludCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZVVJbnQ6IHNob3VsZEJlVUludCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IHNob3VsZEJlUmFkaWFucyh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRFeGlzdDogc2hvdWxkRXhpc3QodGhpcywgZnVuY05hbWUsIGFyZ05hbWUpXG4gICAgICAgIH07XG4gICAgfVxufSk7IH07XG5leHBvcnQgdmFyIGNyZWF0ZUFycmF5ID0gZnVuY3Rpb24gKHYsIGZpbGxTeW1ib2wpIHtcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZhbHNlKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gZmlsbFN5bWJvbChpKTsgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXJyYXkodikuZmlsbChmaWxsU3ltYm9sICE9PSBudWxsICYmIGZpbGxTeW1ib2wgIT09IHZvaWQgMCA/IGZpbGxTeW1ib2wgOiAwKTtcbn07XG5leHBvcnQgdmFyIGNyZWF0ZU1hdHJpeCA9IGZ1bmN0aW9uIChfYSwgZmlsbFN5bWJvbCkge1xuICAgIHZhciBoID0gX2EuaCwgdyA9IF9hLnc7XG4gICAgaWYgKHR5cGVvZiBmaWxsU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBcnJheShoKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgeSkgeyByZXR1cm4gY3JlYXRlQXJyYXkodywgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIGZpbGxTeW1ib2woeCwgeSk7IH0pOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gY3JlYXRlQXJyYXkodywgZmlsbFN5bWJvbCk7IH0pO1xufTtcbmV4cG9ydCB2YXIgZ2F1c3NpYW5FbGltaW5hdGlvbiA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICB2YXIgbiA9IG1hdHJpeC5sZW5ndGg7XG4gICAgdmFyIG1hdHJpeENsb25lID0gY3JlYXRlTWF0cml4KG5ldyBEUG9pbnQobiArIDEsIG4pKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4gKyAxOyBqKyspIHtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtpXVtqXSA9PT0gMCA/IGdhdXNzaWFuRWxpbWluYXRpb24uTUlOIDogbWF0cml4W2ldW2pdO1xuICAgICAgICAgICAgbWF0cml4Q2xvbmVbaV1bal0gPSBtYXRyaXhbaV1bal07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtrXVtpXSAvPSBtYXRyaXhba11ba107XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4gKyAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeENsb25lW2ldW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGsgPSBuIC0gMTsgayA+IC0xOyBrLS0pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IG47IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtrXVtpXSAvPSBtYXRyaXhba11ba107XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGsgLSAxOyBpID4gLTE7IGktLSkge1xuICAgICAgICAgICAgdmFyIEsgPSBtYXRyaXhDbG9uZVtpXVtrXSAvIG1hdHJpeENsb25lW2tdW2tdO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IG47IGogPiAtMTsgai0tKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4Q2xvbmVbaV1bal0gLT0gbWF0cml4Q2xvbmVba11bal0gKiBLO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBhbnN3ZXIgPSBjcmVhdGVBcnJheShuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhbnN3ZXJbaV0gPSBtYXRyaXhDbG9uZVtpXVtuXTtcbiAgICB9XG4gICAgcmV0dXJuIGFuc3dlcjtcbn07XG5nYXVzc2lhbkVsaW1pbmF0aW9uLk1JTiA9IDFlLTEwO1xuZXhwb3J0IHZhciBjcmVhdGVDYW52YXMgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgdyA9IDA7XG4gICAgdmFyIGggPSAwO1xuICAgIHZhciBvZmZzY3JlZW4gPSBmYWxzZTtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICB2YXIgeCA9IGEueCwgeSA9IGEueTtcbiAgICAgICAgdyA9IHg7XG4gICAgICAgIGggPSB5O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdyA9IGE7XG4gICAgICAgIGggPSBhO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGIgPT09ICdib29sZWFuJykge1xuICAgICAgICBvZmZzY3JlZW4gPSBiO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaCA9IGI7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGM7XG4gICAgfVxuICAgIHZhciBjYW52YXMgPSBvZmZzY3JlZW4gPyBuZXcgT2Zmc2NyZWVuQ2FudmFzKHcsIGgpIDogKChfYSA9IGNyZWF0ZUNhbnZhcy5kb2N1bWVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGlmICghb2Zmc2NyZWVuKSB7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHc7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoO1xuICAgIH1cbiAgICByZXR1cm4gW2NhbnZhcywgY2FudmFzLmdldENvbnRleHQoJzJkJyldO1xufTtcbnZhciBmID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGEubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBiLm1hcChmdW5jdGlvbiAoZCkgeyByZXR1cm4gW10uY29uY2F0KGMsIGQpOyB9KTsgfSkpLCBmYWxzZSkpOyB9O1xuZXhwb3J0IHZhciBjYXJ0ZXNpYW5Qcm9kdWN0ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgYyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBiID8gY2FydGVzaWFuUHJvZHVjdC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2YoYSwgYildLCBfX3JlYWQoYyksIGZhbHNlKSkgOiBhO1xufTtcbmV4cG9ydCB2YXIgZ2V0Q29tYmluYXRpb25zID0gZnVuY3Rpb24gKGFycikge1xuICAgIGlmIChhcnIubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBhcnJbMF07XG4gICAgfVxuICAgIHZhciBhbnMgPSBbXTtcbiAgICB2YXIgb3RoZXJDYXNlcyA9IGdldENvbWJpbmF0aW9ucyhhcnIuc2xpY2UoMSkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3RoZXJDYXNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFyclswXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgYW5zLnB1c2goX19zcHJlYWRBcnJheShbYXJyWzBdW2pdXSwgX19yZWFkKG90aGVyQ2FzZXNbaV0pLCBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbnM7XG59O1xuZXhwb3J0IHZhciBkaXYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gTWF0aC5mbG9vcihhIC8gYik7IH07XG4iLCJpbXBvcnQgeyBERUdSRUVfVE9fUEksIERPVUJMRV9QSV9JTl9ERUdSRUUsIFBJX0lOX0RFR1JFRSwgUElfVE9fREVHUkVFIH0gZnJvbSAnLi9EUG9pbnQnO1xudmFyIGRlbHRhID0gMC4wMDE7XG52YXIgRE51bWJlcnMgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEROdW1iZXJzKCkge1xuICAgIH1cbiAgICBETnVtYmVycy5saWtlID0gZnVuY3Rpb24gKHYsIHMsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gZGVsdGE7IH1cbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHYgLSBzKSA8IGQ7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlWmVybyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHYsIDApO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZTJQSSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKEROdW1iZXJzLnJhZDJEZWcodiksIERPVUJMRV9QSV9JTl9ERUdSRUUpO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZVBJID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoRE51bWJlcnMucmFkMkRlZyh2KSwgUElfSU5fREVHUkVFKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLnJhZDJEZWcgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdiAqIERFR1JFRV9UT19QSTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmRlZzJSYWQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdiAqIFBJX1RPX0RFR1JFRTtcbiAgICB9O1xuICAgIHJldHVybiBETnVtYmVycztcbn0oKSk7XG5leHBvcnQgeyBETnVtYmVycyB9O1xuIiwiaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbnZhciBETGluZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRExpbmUoYSwgYiwgYywgYmVnaW4sIGVuZCkge1xuICAgICAgICBpZiAoYmVnaW4gPT09IHZvaWQgMCkgeyBiZWdpbiA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKGVuZCA9PT0gdm9pZCAwKSB7IGVuZCA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5iZWdpbiA9IGJlZ2luO1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG4gICAgRExpbmUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKHRoaXMuYSwgdGhpcy5iLCB0aGlzLmMsIHRoaXMuYmVnaW4uY2xvbmUoKSwgdGhpcy5lbmQuY2xvbmUoKSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBlcnBlbmRpY3VsYXIgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kUGVycGVuZGljdWxhcicpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUoLXRoaXMuYiwgdGhpcy5hLCB0aGlzLmIgKiBwLnggLSB0aGlzLmEgKiBwLnkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnBlcnBlbmRpY3VsYXJEaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3BlcnBlbmRpY3VsYXJEaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHZhciBwZXJwZW5kaWN1bGFyTGluZSA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIocCk7XG4gICAgICAgIHZhciB0YXJnZXRQb2ludCA9IHBlcnBlbmRpY3VsYXJMaW5lLmZpbmRQb2ludCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRhcmdldFBvaW50LmRpc3RhbmNlKHApO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChsLCBkLCBpbmNsdWRlT25seSkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIGlmIChpbmNsdWRlT25seSA9PT0gdm9pZCAwKSB7IGluY2x1ZGVPbmx5ID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHAgPSB0aGlzLmZpbmRQb2ludChsKTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc2lkZVJhbmdlKHAsIGQpICYmIGwuaW5zaWRlUmFuZ2UocCwgZCkgPyBwIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UocCwgZCkgJiYgbC5pblJhbmdlKHAsIGQpID8gcCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW50ZXJzZWN0aW9uV2l0aENpcmNsZSA9IGZ1bmN0aW9uIChjaXJjbGUpIHtcbiAgICAgICAgdmFyIGNlbnRlciA9IGNpcmNsZS5jZW50ZXIsIHIgPSBjaXJjbGUucjtcbiAgICAgICAgdmFyIHBlciA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIoY2VudGVyKTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmZpbmRQb2ludChwZXIpO1xuICAgICAgICB2YXIgZGlzdGFuY2UgPSB0LmRpc3RhbmNlKGNlbnRlcik7XG4gICAgICAgIGlmICh0aGlzLmJlZ2luLmVxdWFsKGNlbnRlcikpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbmQuZXF1YWwoY2VudGVyKSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IHIpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN0ID0gY2VudGVyLmRpc3RhbmNlKHQpO1xuICAgICAgICAgICAgICAgIHZhciBtb3ZlID0gTWF0aC5zcXJ0KHIgKiByIC0gY3QgKiBjdCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgdC54ID0gdGhpcy5iZWdpbi54O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMSA9IHQuY2xvbmUoKS5tb3ZlKDAsIC1tb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIyXzEgPSB0LmNsb25lKCkubW92ZSgwLCBtb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8xLCByMl8xXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgICAgICAgICAgdC55ID0gdGhpcy5iZWdpbi55O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMiA9IHQuY2xvbmUoKS5tb3ZlKG1vdmUsIDApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjJfMiA9IHQuY2xvbmUoKS5tb3ZlKC1tb3ZlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8yLCByMl8yXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5iZWdpbi5saWtlKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHRoaXMuYmVnaW4uY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZW5kLmxpa2UoY2VudGVyKSkge1xuICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5lbmQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHMgPSBhICogYSArIGIgKiBiO1xuICAgICAgICAgICAgdmFyIGQgPSByICogciAtIGMgKiBjIC8gcztcbiAgICAgICAgICAgIHZhciBtdWx0ID0gTWF0aC5zcXJ0KGQgLyBzKTtcbiAgICAgICAgICAgIHZhciByMSA9IHQuY2xvbmUoKS5tb3ZlKGIgKiBtdWx0LCAtYSAqIG11bHQpO1xuICAgICAgICAgICAgdmFyIHIyID0gdC5jbG9uZSgpLm1vdmUoLWIgKiBtdWx0LCBhICogbXVsdCk7XG4gICAgICAgICAgICByZXR1cm4gW3IxLCByMl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlID09PSByKSB7XG4gICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pblJhbmdlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBtaW5YID0gX2EubWluWCwgbWluWSA9IF9hLm1pblksIG1heFggPSBfYS5tYXhYLCBtYXhZID0gX2EubWF4WTtcbiAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgIHZhciBpc0luWCA9IHggPj0gbWluWCAtIGQgJiYgeCA8PSBtYXhYICsgZDtcbiAgICAgICAgdmFyIGlzSW5ZID0geSA+PSBtaW5ZIC0gZCAmJiB5IDw9IG1heFkgKyBkO1xuICAgICAgICByZXR1cm4gaXNJblggJiYgaXNJblk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW5zaWRlUmFuZ2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGJlZ2luID0gX2EuYmVnaW4sIGVuZCA9IF9hLmVuZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5SYW5nZShwLCBkKSAmJiAhYmVnaW4ubGlrZShwLCAwLjAwMDAxKSAmJiAhZW5kLmxpa2UocCwgMC4wMDAwMSk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVnaW5cbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHRoaXMuZW5kKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuZW5kXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmJlZ2luXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubWludXMoKSlcbiAgICAgICAgICAgICAgICAuYWJzKClcbiAgICAgICAgICAgICAgICAubWludXMoKVxuICAgICAgICAgICAgICAgIC5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtaW5YXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5iZWdpbi54LCB0aGlzLmVuZC54KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuYmVnaW4ueSwgdGhpcy5lbmQueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmJlZ2luLngsIHRoaXMuZW5kLngpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtYXhZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5iZWdpbi55LCB0aGlzLmVuZC55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERMaW5lLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLmEsIFwiLCBcIikuY29uY2F0KHRoaXMuYiwgXCIsIFwiKS5jb25jYXQodGhpcy5jLCBcIilcIik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5hLCB0aGlzLmIsIHRoaXMuY107XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmIgLyB0aGlzLmEgKiBwLnkgLSB0aGlzLmMgLyB0aGlzLmEsIHAueSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHAueCwgLXRoaXMuYSAvIHRoaXMuYiAqIHAueCAtIHRoaXMuYyAvIHRoaXMuYik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBvaW50ID0gZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLWwuYyAvIGwuYSwgLXRoaXMuYyAvIHRoaXMuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgLWwuYyAvIGwuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLXRoaXMuYyAvIHRoaXMuYTtcbiAgICAgICAgICAgIHJldHVybiBsLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLXRoaXMuYyAvIHRoaXMuYjtcbiAgICAgICAgICAgIHJldHVybiBsLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLWwuYyAvIGwuYTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLWwuYyAvIGwuYjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IHRoaXMueShuZXcgRFBvaW50KChsLmMgLyBsLmIgLSB0aGlzLmMgLyB0aGlzLmIpIC8gKHRoaXMuYSAvIHRoaXMuYiAtIGwuYSAvIGwuYikpKTtcbiAgICAgICAgaWYgKCFpc0Zpbml0ZShyZXMueCkgJiYgIWlzRmluaXRlKHJlcy55KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNQYXJhbGxlbFggfHwgdGhpcy5pc1BhcmFsbGVsWTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmIpIDwgMC4wMDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5hKSA8IDAuMDAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5iZWdpbiwgdGhpcy5lbmRdO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRExpbmUucHJvdG90eXBlLmdldEZpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRGaScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmVuZC5jbG9uZSgpLm1vdmUodGhpcy5iZWdpbi5jbG9uZSgpLm1pbnVzKCkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHZhciB2ID0gTWF0aC5hdGFuMih5LCB4KSAtIE1hdGguUEk7XG4gICAgICAgIGlmICh2ID4gMCkge1xuICAgICAgICAgICAgdiA9IE1hdGguUEkgLSB2O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoTWF0aC5QSSAtIHYpICUgKE1hdGguUEkgKiAyKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5iZWdpbiwgeDEgPSBfYi54LCB5MSA9IF9iLnksIF9jID0gX2EuZW5kLCB4MiA9IF9jLngsIHkyID0gX2MueTtcbiAgICAgICAgcmV0dXJuIFwiTElORVNUUklORyAoXCIuY29uY2F0KHgxLCBcIiBcIikuY29uY2F0KHkxLCBcIiwgXCIpLmNvbmNhdCh4MiwgXCIgXCIpLmNvbmNhdCh5MiwgXCIpXCIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLm1vdmVQb2ludCA9IGZ1bmN0aW9uIChpLCBrKSB7XG4gICAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShpKTtcbiAgICAgICAgdmFyIHAgPSBpc0FycmF5ID8gaSA6IFtpXTtcbiAgICAgICAgdmFyIGQgPSAoaXNBcnJheSA/IGsgOiBba10pO1xuICAgICAgICB2YXIgZmkgPSB0aGlzLmZpbmRGaShuZXcgRExpbmUoMSwgMCwgMCkpO1xuICAgICAgICB2YXIgdGQgPSB0aGlzLngobmV3IERQb2ludCgxLCAxKSkuZGlzdGFuY2UodGhpcy54KG5ldyBEUG9pbnQoMiwgMikpKSAvIDI7XG4gICAgICAgIHZhciBzaW5Db3MgPSBuZXcgRFBvaW50KE1hdGguc2luKGZpKSwgTWF0aC5jb3MoZmkpKTtcbiAgICAgICAgdmFyIGR0ID0gc2luQ29zLmNsb25lKCkuc2NhbGUodGQpO1xuICAgICAgICB2YXIgcDFUID0gcFswXS5jbG9uZSgpLm1vdmUoZHQuY2xvbmUoKS5taW51cygpKTtcbiAgICAgICAgdmFyIHAyVCA9IHBbMF0uY2xvbmUoKS5tb3ZlKGR0KTtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBpZiAoRE51bWJlcnMubGlrZSh0aGlzLnkocDFUKS55LCBwMVQueSkgfHwgRE51bWJlcnMubGlrZSh0aGlzLnkocDJUKS55LCBwMlQueSkpIHtcbiAgICAgICAgICAgIHJlcyA9IHAubWFwKGZ1bmN0aW9uICh0LCBpbmRleCkgeyByZXR1cm4gdC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUoc2luQ29zLmNsb25lKCkuc2NhbGUoZFtpbmRleF0pKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHsgcmV0dXJuIHQuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHNpbkNvcy5jbG9uZSgpLnNjYWxlKGRbaW5kZXhdKVxuICAgICAgICAgICAgICAgIC5zZXRYKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueDtcbiAgICAgICAgICAgICAgICByZXR1cm4gLXg7XG4gICAgICAgICAgICB9KSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5ID8gcmVzIDogcmVzWzBdO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRGaSA9IGZ1bmN0aW9uIChfYSwgZGVsdGEpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYjtcbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAxLjAwMDE7IH1cbiAgICAgICAgdmFyIF9iID0gdGhpcywgcSA9IF9iLmEsIHcgPSBfYi5iO1xuICAgICAgICB2YXIgdmFsID0gKHEgKiBhICsgdyAqIGIpIC8gKE1hdGguc3FydChxICogcSArIHcgKiB3KSAqIE1hdGguc3FydChhICogYSArIGIgKiBiKSk7XG4gICAgICAgIGlmICh2YWwgPiAxICYmIHZhbCA8IGRlbHRhKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCA8IC0xICYmIHZhbCA+IC1kZWx0YSkge1xuICAgICAgICAgICAgdmFsID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGguYWNvcyh2YWwpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnZlY3RvclByb2R1Y3QgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgIHZhciBfYiA9IHRoaXMsIHEgPSBfYi5hLCB3ID0gX2IuYiwgZSA9IF9iLmM7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUodyAqIGMgLSBlICogYiwgZSAqIGEgLSBxICogYywgcSAqIGIgLSB3ICogYSk7XG4gICAgfTtcbiAgICByZXR1cm4gRExpbmU7XG59KCkpO1xuZXhwb3J0IHsgRExpbmUgfTtcbiIsInZhciBMb29wRnVuY3Rpb25zO1xuKGZ1bmN0aW9uIChMb29wRnVuY3Rpb25zKSB7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0VGlsZUZyb21Db29yZHNcIl0gPSAwXSA9IFwiZ2V0VGlsZUZyb21Db29yZHNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJnZXRDb29yZHNGcm9tVGlsZVwiXSA9IDFdID0gXCJnZXRDb29yZHNGcm9tVGlsZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImhlaWdodFwiXSA9IDJdID0gXCJoZWlnaHRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRYXCJdID0gM10gPSBcInNldFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRZXCJdID0gNF0gPSBcInNldFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRaXCJdID0gNV0gPSBcInNldFpcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGVcIl0gPSA2XSA9IFwicm90YXRlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RYXCJdID0gN10gPSBcInJvdGF0ZTNkWFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWVwiXSA9IDhdID0gXCJyb3RhdGUzZFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFpcIl0gPSA5XSA9IFwicm90YXRlM2RaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW92ZVwiXSA9IDEwXSA9IFwibW92ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdW5kXCJdID0gMTFdID0gXCJyb3VuZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImNlaWxcIl0gPSAxMl0gPSBcImNlaWxcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbG9vclwiXSA9IDEzXSA9IFwiZmxvb3JcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ0b0ZpeGVkXCJdID0gMTRdID0gXCJ0b0ZpeGVkXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiYWJzXCJdID0gMTVdID0gXCJhYnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzY2FsZVwiXSA9IDE2XSA9IFwic2NhbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkaXZpZGVcIl0gPSAxN10gPSBcImRpdmlkZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRlZ3JlZVRvUmFkaWFuc1wiXSA9IDE4XSA9IFwiZGVncmVlVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicmFkaWFuc1RvRGVncmVlc1wiXSA9IDE5XSA9IFwicmFkaWFuc1RvRGVncmVlc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb01ldGVyc1wiXSA9IDIwXSA9IFwicmFkaWFuc1RvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9SYWRpYW5zXCJdID0gMjFdID0gXCJtZXRlcnNUb1JhZGlhbnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoaXBQb2ludFwiXSA9IDIyXSA9IFwiaGlwUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ4UG9pbnRcIl0gPSAyM10gPSBcInhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInlQb2ludFwiXSA9IDI0XSA9IFwieVBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wid1BvaW50XCJdID0gMjVdID0gXCJ3UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoUG9pbnRcIl0gPSAyNl0gPSBcImhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInNldElmTGVzc1RoYW5cIl0gPSAyN10gPSBcInNldElmTGVzc1RoYW5cIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtaW51c1wiXSA9IDI4XSA9IFwibWludXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb01ldGVyc1wiXSA9IDI5XSA9IFwiZGVncmVlVG9NZXRlcnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtZXRlcnNUb0RlZ3JlZVwiXSA9IDMwXSA9IFwibWV0ZXJzVG9EZWdyZWVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbGlwVmVydGljYWxseVwiXSA9IDMxXSA9IFwiZmxpcFZlcnRpY2FsbHlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRQcm9wZXJ0aWVzXCJdID0gMzJdID0gXCJzZXRQcm9wZXJ0aWVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2XCJdID0gMzNdID0gXCJkaXZcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtb2RcIl0gPSAzNF0gPSBcIm1vZFwiO1xufSkoTG9vcEZ1bmN0aW9ucyB8fCAoTG9vcEZ1bmN0aW9ucyA9IHt9KSk7XG52YXIgZGVjb2RlUG9vbFJlY29yZCA9IGZ1bmN0aW9uIChhLCBfYSkge1xuICAgIHZhciBmdW5jdGlvbk5hbWUgPSBfYS5mdW5jdGlvbk5hbWUsIHBvaW50QXJnID0gX2EucG9pbnRBcmcsIG51bWJlclBvaW50QXJnID0gX2EubnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyA9IF9hLm51bWJlckFyZywgc2V0dGVyQXJnID0gX2Euc2V0dGVyQXJnLCBzZXR0ZXJBcmdCeU9iamVjdCA9IF9hLnNldHRlckFyZ0J5T2JqZWN0O1xuICAgIHZhciByZXMgPSBhO1xuICAgIHN3aXRjaCAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZ2V0VGlsZUZyb21Db29yZHMobnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldENvb3Jkc0Zyb21UaWxlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhlaWdodDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGVpZ2h0KG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WChzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WChmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WShzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WShmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WihzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WihmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RYKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RZKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RaKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1vdmU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vdmUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdW5kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5jZWlsOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5jZWlsKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsb29yOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbG9vcigpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy50b0ZpeGVkOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC50b0ZpeGVkKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmFiczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuYWJzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNjYWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zY2FsZShudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGl2aWRlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kaXZpZGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2KG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb2Q6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vZChudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvRGVncmVlczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucmFkaWFuc1RvRGVncmVlcygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvUmFkaWFucygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oaXBQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGlwUG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAueFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy55UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnlQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMud1BvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC53UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWludXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb0RlZ3JlZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAubWV0ZXJzVG9EZWdyZWUoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmZsaXBWZXJ0aWNhbGx5KG51bWJlclBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gdHlwZW9mIHNldHRlckFyZ0J5T2JqZWN0ID09PSAnb2JqZWN0JyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoc2V0dGVyQXJnQnlPYmplY3QpIDogYShrLCBpbmRleCkuc2V0UHJvcGVydGllcyhmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnQnlPYmplY3QocCwgaW5kZXgpOyB9KTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBEUG9seWdvbkxvb3AgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uTG9vcChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIH1cbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldExvb3BGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9vbC5yZWR1Y2UoZGVjb2RlUG9vbFJlY29yZCwgZnVuY3Rpb24gKGspIHsgcmV0dXJuIGs7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5tYXAodGhpcy5nZXRMb29wRnVuY3Rpb24oKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldFRpbGVGcm9tQ29vcmRzLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0Q29vcmRzRnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IHpvb21cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRYLFxuICAgICAgICAgICAgc2V0dGVyQXJnOiB4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChzZXR0ZXJBcmdCeU9iamVjdCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllcyxcbiAgICAgICAgICAgIHNldHRlckFyZ0J5T2JqZWN0OiBzZXR0ZXJBcmdCeU9iamVjdFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WSxcbiAgICAgICAgICAgIHNldHRlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WixcbiAgICAgICAgICAgIHNldHRlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RYLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RZID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWSxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFosXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubW92ZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5jZWlsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbG9vclxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy50b0ZpeGVkLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuYWJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdmlkZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdixcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vZCxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRIaXBQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhpcFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WVBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueVBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0V1BvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMud1BvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuLFxuICAgICAgICAgICAgcG9pbnRBcmc6IHBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1pbnVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1ldGVyc1RvRGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbGlwVmVydGljYWxseSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiBzaXplXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBEUG9seWdvbkxvb3A7XG59KCkpO1xuZXhwb3J0IHsgRFBvbHlnb25Mb29wIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBETGluZSB9IGZyb20gJy4vRExpbmUnO1xuaW1wb3J0IHsgRENpcmNsZSB9IGZyb20gJy4vRENpcmNsZSc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xuaW1wb3J0IHsgaW8gYXMganN0c0lvLCBvcGVyYXRpb24gfSBmcm9tICdqc3RzJztcbmltcG9ydCB7IERQb2x5Z29uTG9vcCB9IGZyb20gJy4vRFBvbHlnb25Mb29wJztcbmltcG9ydCB7IERHZW8sIGlzRGVmQW5kTm90TnVsbCB9IGZyb20gJy4vdXRpbHMnO1xudmFyIF9hID0gb3BlcmF0aW9uLmJ1ZmZlci5CdWZmZXJQYXJhbWV0ZXJzLCBDQVBfUk9VTkQgPSBfYS5DQVBfUk9VTkQsIENBUF9GTEFUID0gX2EuQ0FQX0ZMQVQsIENBUF9TUVVBUkUgPSBfYS5DQVBfU1FVQVJFO1xuZXhwb3J0IHZhciBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gPSAzO1xudmFyIEFQUFJPWElNQVRJT05fVkFMVUUgPSAwLjE7XG52YXIgTUFYX0NPTlZFWF9JVEVSQVRJT05TID0gMTAwO1xudmFyIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSA9IDAuMDAxO1xudmFyIGNvbnRhaW5DYWxjdWxhdG9yID0gZnVuY3Rpb24gKHBvbHksIHApIHtcbiAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICB2YXIgaGFzU2FtZVBvaW50ID0gcG9seS5wb2ludHMuc29tZShmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50LmVxdWFsKHApOyB9KTtcbiAgICBpZiAoaGFzU2FtZVBvaW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9lID0gX19yZWFkKF9kLnZhbHVlLCAzKSwgcG9seWdvbkxpbmUgPSBfZVsyXTtcbiAgICAgICAgICAgIHZhciBvbkJvcmRlciA9IHBvbHlnb25MaW5lLngocCkuZXF1YWwocCkgJiYgcG9seWdvbkxpbmUuaW5SYW5nZShwKTtcbiAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICB2YXIgdG90YWxGaSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2YgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9oID0gX19yZWFkKF9nLnZhbHVlLCAyKSwgX2ogPSBfaFswXSwgeCA9IF9qLngsIHkgPSBfai55LCBfayA9IF9oWzFdLCBhID0gX2sueCwgYiA9IF9rLnk7XG4gICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgbGluZTIgPSBuZXcgRExpbmUoYSAtIHAueCwgYiAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgZmlEaWYgPSBsaW5lMS5maW5kRmkobGluZTIpO1xuICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxGaSArPSBmaURpZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsRmkgLT0gZmlEaWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciBlcHMgPSBNYXRoLlBJIC8gMTAwMDA7XG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICAgIHZhciBhYnNUb3RhbEZpID0gTWF0aC5hYnModG90YWxGaSk7XG4gICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguYWJzKDIgKiBNYXRoLlBJIC0gYWJzVG90YWxGaSkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY29udGFpbnMyIGZhaWxkJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xudmFyIERQb2x5Z29uID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9seWdvbihwUG9pbnRzKSB7XG4gICAgICAgIGlmIChwUG9pbnRzID09PSB2b2lkIDApIHsgcFBvaW50cyA9IFtdOyB9XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHBQb2ludHM7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgICAgICB0aGlzLmhvbGVzID0gW107XG4gICAgICAgIHRoaXMuc2VhcmNoU3RvcmUgPSB7fTtcbiAgICB9XG4gICAgRFBvbHlnb24uYXJyYXlPZlRyaWFuZ2xlc1RvVmVydGljZXMgPSBmdW5jdGlvbiAodHJpYW5nbGVzLCBoZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRyaWFuZ2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChpc0RlZkFuZE5vdE51bGwoaGVpZ2h0KSA/IHZcbiAgICAgICAgICAgIC5sb29wKClcbiAgICAgICAgICAgIC5oZWlnaHQoaGVpZ2h0KVxuICAgICAgICAgICAgLnJ1bigpIDogdilcbiAgICAgICAgICAgIC50b0FycmF5T2ZDb29yZHMoKTsgfSlcbiAgICAgICAgICAgIC5mbGF0KDIpO1xuICAgIH07XG4gICAgRFBvbHlnb24ubWluQXJlYVJlY3RhbmdsZVNpemUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChmaXJzdC5kaXN0YW5jZShzZWNvbmQpLCBmaXJzdC5kaXN0YW5jZShsYXN0KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0Rhc2ggPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgZV8zLCBfYTtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtwXTtcbiAgICAgICAgdmFyIHRyaWdnZXIgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5LnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICBwLnB1c2gocG9pbnQuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgPSAhdHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5wdXNoKHBvaW50LmNsb25lKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERQb2x5Z29uLm1pbkFyZWFSZWN0YW5nbGVEaXJlY3Rpb24gPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQgfHwgIWxhc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdC5kaXN0YW5jZShzZWNvbmQpID4gZmlyc3QuZGlzdGFuY2UobGFzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdC5maW5kTGluZShzZWNvbmQpLmdldEZpKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0LmZpbmRMaW5lKGxhc3QpLmdldEZpKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZUZyb21XS1QgPSBmdW5jdGlvbiAod2t0KSB7XG4gICAgICAgIHZhciBkYXRhID0gd2t0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ1BPTFlHT04nKSA9PT0gMCkge1xuICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IC9QT0xZR09OIFxcKFxcKCg/PGRhdGE+KD86KD8hXFwpXFwpJCkuKSo/KVxcKVxcKSQvbWl1O1xuICAgICAgICAgICAgdmFyIHJlZyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICAgICAgdmFyIF9hID0gX19yZWFkKHJlZy5ncm91cHMuZGF0YVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnKSwgKCcpXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gbmV3IERQb2x5Z29uKHAuc3BsaXQoJywgJylcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYXJlcykgeyByZXR1cm4gRFBvaW50LnBhcnNlKHBhcmVzLnNwbGl0KCcgJykubWFwKE51bWJlcikpOyB9KSk7IH0pKSwgcGF0aCA9IF9hWzBdLCBob2xlcyA9IF9hLnNsaWNlKDEpO1xuICAgICAgICAgICAgaWYgKGhvbGVzICYmIGhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhdGguaG9sZXMgPSBob2xlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignTElORVNUUklORycpID09PSAwKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXhwID0gL0xJTkVTVFJJTkcgXFwoKD88ZGF0YT4oPzooPyFcXCkkKS4pKj8pXFwpJC9taXU7XG4gICAgICAgICAgICB2YXIgcmVnID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24ocmVnLmdyb3Vwcy5kYXRhXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsICcpLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gRFBvaW50LnBhcnNlKHQuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSk7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdQT0lOVCcpID09PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24oW0RQb2ludC5wYXJzZUZyb21XS1QoZGF0YSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24uY3JlYXRlU3F1YXJlQnlTaXplID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihbRFBvaW50Lnplcm8oKSwgc2l6ZS5jbG9uZSgpLnNldFgoMCksIHNpemUuY2xvbmUoKSwgc2l6ZS5jbG9uZSgpLnNldFkoMCldKS5jbG9zZSgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb25Mb29wKHRoaXMpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBQb2ludHM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIHRoaXMucFBvaW50cyA9IHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci54KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLngpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci55KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLnkpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVmdFRvcC5tb3ZlKHRoaXMuc2l6ZS5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhZIC0gdGhpcy5taW5ZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnc7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImV4dGVuZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1pblkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWF4WCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtYXhZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCB3ID0gX2EudywgaCA9IF9hLmg7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh3LCBoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVmdFRvcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWluWCwgbWluWSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInJpZ2h0Qm90dG9tXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChtYXhYLCBtYXhZKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZnVsbExlbmd0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5vcGVuKCkucGVyaW1ldGVyO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwZXJpbWV0ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzQsIF9hO1xuICAgICAgICAgICAgdmFyIHAgPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV81LCBfYTtcbiAgICAgICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZGVpbnRlcnNlY3Rpb24ubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0geCAqIGIgLSB5ICogYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoc3VtIC8gMikgLSB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSArIGhvbGUuYXJlYTsgfSwgMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImRlaW50ZXJzZWN0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV82LCBfYTtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgICAgICB2YXIgc3RvcmUgPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgayA9IHAuYXQoaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBzdG9yZVtrXSA9IHN0b3JlW2tdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHN0b3JlW2tdLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RMaW5lID0gcC5hdChpKS5maW5kTGluZShwLmF0KGkgKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWNvbmRMaW5lID0gcC5hdChqKS5maW5kTGluZShwLmF0KGogKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpcnN0TGluZS5pbnRlcnNlY3Rpb24oc2Vjb25kTGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb25Qb2ludCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIV9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGZpcnN0TGluZS5wb2ludHMpLCBmYWxzZSksIF9fcmVhZChzZWNvbmRMaW5lLnBvaW50cyksIGZhbHNlKS5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0Lmxpa2UoaW50ZXJzZWN0aW9uUG9pbnQpOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwLnJlbW92ZVBhcnQoaSwgaiAtIGkpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShbaV0sIF9fcmVhZChwYXJ0KSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIoaiwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMjsgaiA8IHAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzEoaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKE9iamVjdC5rZXlzKHN0b3JlKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gc3RvcmVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbl8xID0gcC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcmVjb3JkW2pdIC0gcmVjb3JkW2ogLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBuZXcgRFBvbHlnb24ob3JpZ2luXzEucmVtb3ZlUGFydChyZWNvcmRbaiAtIDFdLCBkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxJbnNpZGUgPSBwYXJ0LnJlZHVjZShmdW5jdGlvbiAoYSwgZSkgeyByZXR1cm4gYSAmJiBjb250YWluQ2FsY3VsYXRvcihvcmlnaW5fMSwgZSk7IH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSW5zaWRlICYmIG9yaWdpbl8xLmlzQ2xvY2t3aXNlID09PSBwYXJ0LmlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fMS5pbnNlcnRBZnRlci5hcHBseShvcmlnaW5fMSwgX19zcHJlYWRBcnJheShbcmVjb3JkW2ogLSAxXSAtIDFdLCBfX3JlYWQocGFydC5yZXZlcnNlKCkucG9pbnRzKSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvcmlnaW5fMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gcmVjb3JkLmxlbmd0aCAtIDE7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF8yKGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNl8xKSB7IGVfNiA9IHsgZXJyb3I6IGVfNl8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzYpIHRocm93IGVfNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInZhbGlkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImZpcnN0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwic2Vjb25kXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGFzdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQodGhpcy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluQXJlYVJlY3RhbmdsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNywgX2EsIGVfOCwgX2I7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY29udmV4O1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciByZXN1bHRBcmVhID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocC5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMyksIGwgPSBfZVsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQxID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZiA9IChlXzggPSB2b2lkIDAsIF9fdmFsdWVzKHAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgNCksIHogPSBfaFswXSwgaSA9IF9oWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IGwuZmluZFBvaW50KGwuZmluZFBlcnBlbmRpY3VsYXIoeikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcDEuZGlzdGFuY2Uoeik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodFBvaW50ID0gejtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBsLmZpbmRQb2ludChsLmZpbmRQZXJwZW5kaWN1bGFyKHAuYXQoaikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IHc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MSA9IHAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIgPSBwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV84XzEpIHsgZV84ID0geyBlcnJvcjogZV84XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzgpIHRocm93IGVfOC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF4V2lkdGhQb2ludDEgfHwgIW1heFdpZHRoUG9pbnQyIHx8ICFtYXhIZWlnaHRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoTGluZSA9IG1heFdpZHRoUG9pbnQxLmZpbmRMaW5lKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIxID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIyID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBQb2x5Z29uID0gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJwZW5kaWN1bGFyMi5maW5kUG9pbnQocGVycGVuZGljdWxhcjIuZmluZFBlcnBlbmRpY3VsYXIobWF4SGVpZ2h0UG9pbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnBlbmRpY3VsYXIxLmZpbmRQb2ludChwZXJwZW5kaWN1bGFyMS5maW5kUGVycGVuZGljdWxhcihtYXhIZWlnaHRQb2ludCkpXG4gICAgICAgICAgICAgICAgICAgIF0pLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUG9seWdvbi5hcmVhIDwgcmVzdWx0QXJlYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UG9seWdvbiA9IHRlbXBQb2x5Z29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJlYSA9IHRlbXBQb2x5Z29uLmFyZWE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV83XzEpIHsgZV83ID0geyBlcnJvcjogZV83XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNykgdGhyb3cgZV83LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0UG9seWdvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY29udmV4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5vcGVuKCk7XG4gICAgICAgICAgICB2YXIgaXNDbG9ja3dpc2UgPSBwLmlzQ2xvY2t3aXNlO1xuICAgICAgICAgICAgaWYgKCFpc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHAucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGwgPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHAubGFzdDtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmZpcnN0O1xuICAgICAgICAgICAgICAgIHZhciBwMyA9IHAuc2Vjb25kO1xuICAgICAgICAgICAgICAgIHZhciBkID0gcDIuZmluZElubmVyQW5nbGUocDEsIHAzKTtcbiAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHAubGVuZ3RoKTtcbiAgICAgICAgICAgIHAuY2xvc2UoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHAgPSBwLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgICAgIGwgPSBwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IHAuYXQoaSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDMgPSBwLmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwMi5maW5kSW5uZXJBbmdsZShwMSwgcDMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydCgtLWksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgICAgICAgfSB3aGlsZSAocC5sZW5ndGggIT09IGwgJiYgaXRlcmF0aW9uIDwgTUFYX0NPTlZFWF9JVEVSQVRJT05TKTtcbiAgICAgICAgICAgIGlmICghaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBwLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJpc0Nsb2Nrd2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfOSwgX2E7XG4gICAgICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gKGEgLSB4KSAqIChiICsgeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfOV8xKSB7IGVfOSA9IHsgZXJyb3I6IGVfOV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzkpIHRocm93IGVfOS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1bSA8IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb2NrV2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5yZXZlcnNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm5vSG9sZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGYsIHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5yZWR1Y2UoZiwgdik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKGwsIGluY2x1ZGVPbmx5KSB7XG4gICAgICAgIHZhciBlXzEwLCBfYTtcbiAgICAgICAgaWYgKGluY2x1ZGVPbmx5ID09PSB2b2lkIDApIHsgaW5jbHVkZU9ubHkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIGxpbmUgPSBfZFsyXTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0ID0gbGluZS5pbnRlcnNlY3Rpb24obCwgMCwgaW5jbHVkZU9ubHkpO1xuICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaW50ZXJzZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTBfMSkgeyBlXzEwID0geyBlcnJvcjogZV8xMF8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMCkgdGhyb3cgZV8xMC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0Q2VudGVyID0gZnVuY3Rpb24gKG5ld0NlbnRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5tb3ZlKG5ld0NlbnRlci5jbG9uZSgpLm1vdmUodGhpcy5jZW50ZXIubWludXMoKSkpXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAodHlwZSwgd2l0aFopIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uV0tUX1BPTFlHT047IH1cbiAgICAgICAgaWYgKHdpdGhaID09PSB2b2lkIDApIHsgd2l0aFogPSBmYWxzZTsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gRFBvbHlnb24uV0tUX1BPTFlHT04pIHtcbiAgICAgICAgICAgIHZhciBoID0gJyc7XG4gICAgICAgICAgICBpZiAodGhpcy5ob2xlcyAmJiB0aGlzLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGggPSBcIiwgXCIuY29uY2F0KHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChob2xlKSB7IHJldHVybiBob2xlLnRvU3RyaW5nKCk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlBPTFlHT04gKChcIi5jb25jYXQodGhpcy5kZWludGVyc2VjdGlvbi5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gXCJcIi5jb25jYXQoci54LCBcIiBcIikuY29uY2F0KHIueSkuY29uY2F0KHdpdGhaID8gXCIgXCIuY29uY2F0KHIueikgOiAnJyk7IH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyksIFwiKVwiKS5jb25jYXQoaCwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiBcIlwiLmNvbmNhdChyLngsIFwiIFwiKS5jb25jYXQoci55KS5jb25jYXQod2l0aFogPyBcIiBcIi5jb25jYXQoci56KSA6ICcnKTsgfSlcbiAgICAgICAgICAgIC5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5wUG9pbnRzLmZpbHRlcihmKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5tYXBBcnJheShmKTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLm1hcChmKTsgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm1hcEFycmF5ID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5tYXAoZik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucG9pbnRzLnNvcnQoZik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzWyhpbmRleCAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGhdO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5wb3AoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMucFBvaW50cykucHVzaC5hcHBseShfYSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNoaWZ0KCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnBQb2ludHMpLnVuc2hpZnQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZXZlcnNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLnBQb2ludHMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgucmV2ZXJzZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5wUG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5nZXRWYWx1ZSgpOyB9KSArIHRoaXMuaG9sZXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGgpIHsgcmV0dXJuIGEgKyBoLmdldFZhbHVlKCk7IH0sICcnKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b1N0cmluZygpOyB9KS5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwMCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmIChwMCAmJiAhdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChwMC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDIgJiYgcCAmJiB0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMucG9pbnRzKSwgZmFsc2UpLCBfX3JlYWQocG9seS5wb2ludHMpLCBmYWxzZSkpLmNsb3NlKCk7XG4gICAgICAgIHJlcy5ob2xlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwb2x5LmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNvbWUoZnVuY3Rpb24gKHEpIHsgcmV0dXJuIHEuZXF1YWwocCk7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5jbG9uZSgpOyB9KSk7XG4gICAgICAgIHJlcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICByZXMucHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcztcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICghKHAgaW5zdGFuY2VvZiBEUG9seWdvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggIT09IHAubGVuZ3RoIHx8IHRoaXMuaG9sZXMubGVuZ3RoICE9PSBwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5zYW1lKHApICYmXG4gICAgICAgICAgICB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiBwLmhvbGVzLnNvbWUoZnVuY3Rpb24gKHBIb2xlcykgeyByZXR1cm4gcEhvbGVzLnNhbWUoaG9sZSk7IH0pOyB9LCB0cnVlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2FtZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBwQ2xvbmUgPSBwLmNsb25lKCkuY2xvc2UoKTtcbiAgICAgICAgdmFyIHRoaXNBc1N0cmluZyA9IHRoaXMuY2xvbmUoKVxuICAgICAgICAgICAgLmNsb3NlKClcbiAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBDbG9uZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXNBc1N0cmluZyA9PT0gcENsb25lLnRvU3RyaW5nKCkgfHwgdGhpc0FzU3RyaW5nID09PSBwQ2xvbmUuY2xvbmUoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcENsb25lLm5leHRTdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5maW5kSW5kZXggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChmdW5jdGlvbiAodCkgeyByZXR1cm4gdC5lcXVhbChhKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChhKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hcHByb3hpbWF0aW9uID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUgPT09IHZvaWQgMCkgeyBlID0gTWF0aC5zcXJ0KHRoaXMucGVyaW1ldGVyKSAqIEFQUFJPWElNQVRJT05fVkFMVUU7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbih0aGlzLmNsb25lKCkuZG91Z2xhc1BldWNrZXIodGhpcy5wUG9pbnRzLCBlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBwb2ludHNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gdGhpcy5wUG9pbnRzKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW2luZGV4ICsgMSwgMF0sIF9fcmVhZChwb2ludHMpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJlbW92ZVBhcnQgPSBmdW5jdGlvbiAoaW5kZXgsIGNvdW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMuc3BsaWNlKGluZGV4ICsgMSwgY291bnQpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmhhc1NpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBleHRlbmQxID0gdGhpcy5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQyID0gcC5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQxcG9pbnRzID0gZXh0ZW5kMS5wb2ludHM7XG4gICAgICAgIHZhciBleHRlbmQycG9pbnRzID0gZXh0ZW5kMi5wb2ludHM7XG4gICAgICAgIHZhciBpbjEgPSBleHRlbmQxcG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDIuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHZhciBpbjIgPSBleHRlbmQycG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDEuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHJldHVybiBpbjEgfHwgaW4yO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVJbmNsdWRlWChwKSAmJiB0aGlzLnNpbXBsZUluY2x1ZGVZKHApO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRyYXdQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzLCBmaWxsQ29sb3IsIHN0cm9rZUNvbG9yLCBzaGFkb3dDb2xvciwgbGluZVdpZHRoLCBzdGVwcykge1xuICAgICAgICBpZiAobGluZVdpZHRoID09PSB2b2lkIDApIHsgbGluZVdpZHRoID0gMTsgfVxuICAgICAgICBpZiAoc3RlcHMgPT09IHZvaWQgMCkgeyBzdGVwcyA9IHRoaXMubGVuZ3RoIC0gMTsgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHN0cm9rZUNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yIHx8IHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgsIHN0ZXBzICUgdGhpcy5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKHNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0JsdXIgPSAwO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMTtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xlYXJQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzKSB7XG4gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIG9sZCA9IGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcbiAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgpO1xuICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gb2xkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNvbnRhaW4gPSBmdW5jdGlvbiAocCwgaXNCb3JkZXJJbnNpZGUpIHtcbiAgICAgICAgdmFyIGVfMTEsIF9hO1xuICAgICAgICBpZiAoaXNCb3JkZXJJbnNpZGUgPT09IHZvaWQgMCkgeyBpc0JvcmRlckluc2lkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBzaW1wbGVJbmNsdWRlID0gdGhpcy5zaW1wbGVJbmNsdWRlKHApO1xuICAgICAgICBpZiAoIXNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb25Cb3JkZXIgPSB0aGlzLm9uQm9yZGVyKHApO1xuICAgICAgICBpZiAob25Cb3JkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0JvcmRlckluc2lkZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcG9seSA9IHRoaXMuZGVpbnRlcnNlY3Rpb247XG4gICAgICAgIHZhciB0b3RhbEZpID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBfZSA9IF9kWzBdLCB4ID0gX2UueCwgeSA9IF9lLnksIF9mID0gX2RbMV0sIGEgPSBfZi54LCBiID0gX2YueTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmUyID0gbmV3IERMaW5lKGEgLSBwLngsIGIgLSBwLnksIDApO1xuICAgICAgICAgICAgICAgIHZhciBmaURpZiA9IGxpbmUxLmZpbmRGaShsaW5lMik7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmkgKz0gZmlEaWY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbEZpIC09IGZpRGlmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xMV8xKSB7IGVfMTEgPSB7IGVycm9yOiBlXzExXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzExKSB0aHJvdyBlXzExLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwcyA9IE1hdGguUEkgLyAxMDAwMDtcbiAgICAgICAgdmFyIGFic1RvdGFsRmkgPSBNYXRoLmFicyh0b3RhbEZpKTtcbiAgICAgICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChNYXRoLmFicygyICogTWF0aC5QSSAtIGFic1RvdGFsRmkpIDwgZXBzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRhaW5zMiBmYWlsZCcpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm9uQm9yZGVyID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGVfMTIsIF9hO1xuICAgICAgICB2YXIgc2ltcGxlSW5jbHVkZSA9IHRoaXMuc2ltcGxlSW5jbHVkZShwKTtcbiAgICAgICAgaWYgKHNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHZhciBwb2x5ID0gdGhpcy5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgICAgIHZhciBoYXNTYW1lUG9pbnQgPSB0aGlzLnBvaW50cy5zb21lKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuZXF1YWwocCk7IH0pO1xuICAgICAgICAgICAgaWYgKGhhc1NhbWVQb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDMpLCBwb2x5Z29uTGluZSA9IF9kWzJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25Cb3JkZXIgPSBwb2x5Z29uTGluZS54KHApLmVxdWFsKHApICYmIHBvbHlnb25MaW5lLmluUmFuZ2UocCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xMl8xKSB7IGVfMTIgPSB7IGVycm9yOiBlXzEyXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTIpIHRocm93IGVfMTIuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubmV4dFN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc2hpZnQoKSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVtb3ZlRHVwbGljYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHAxID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIHZhciBwMiA9IHRoaXMuYXQoaSArIDEpO1xuICAgICAgICAgICAgaWYgKHAxLmVxdWFsKHAyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlUGFydChpLCAxKTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0dlb0pTT05GZWF0dXJlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIChwb2x5Z29ucywgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgZmVhdHVyZXM6IHBvbHlnb25zLm1hcChmdW5jdGlvbiAocG9seWdvbikgeyByZXR1cm4gcG9seWdvbi50b0dlb0pTT05GZWF0dXJlKGZvcm1hdCk7IH0pXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZSA9IGZ1bmN0aW9uIChhLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgaWYgKGEudHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChhLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdGZWF0dXJlQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoZiwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaC5hcHBseShhaywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHQpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0ZlYXR1cmUnOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoYS5nZW9tZXRyeSwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByb3BlcnRpZXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYS5wcm9wZXJ0aWVzKSwgeyBpZDogYS5pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5wcm9wZXJ0aWVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGEucHJvcGVydGllcyksIHsgaWQ6IGEuaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmVTdHJpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9pbnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGEuY29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb29yZGluYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucG9pbnRzID0gbGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLmhvbGVzLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgbmV3IERQb2x5Z29uKCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9seWdvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKERQb2x5Z29uLnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0dlb21ldHJ5Q29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmdlb21ldHJpZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChEUG9seWdvbi5wYXJzZShsaW5lLCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihhXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBEUG9pbnQucGFyc2UociwgZm9ybWF0KTsgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvQXJyYXlPZkNvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIudG9Db29yZHMoZm9ybWF0KTsgfSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9HZW9KU09ORmVhdHVyZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHRoaXMudG9HZW9KU09OKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0dlb0pTT04gPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IF9fc3ByZWFkQXJyYXkoW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpXG4gICAgICAgICAgICAgICAgXSwgX19yZWFkKHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpOyB9KSksIGZhbHNlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMudG9BcnJheU9mQ29vcmRzKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kaXZpZGVUb1BpZWNlcyA9IGZ1bmN0aW9uIChwaWVjZXNDb3VudCwgd2l0aEFsdGl0dWRlKSB7XG4gICAgICAgIHZhciBlXzEzLCBfYTtcbiAgICAgICAgaWYgKHdpdGhBbHRpdHVkZSA9PT0gdm9pZCAwKSB7IHdpdGhBbHRpdHVkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcGllY2VMZW5ndGggPSBmdWxsTGVuZ3RoIC8gcGllY2VzQ291bnQ7XG4gICAgICAgIHZhciBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiAocDEsIHAyLCBpKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHAxLmRpc3RhbmNlKHAyKTtcbiAgICAgICAgICAgIGlmIChkID09PSBjdXJyZW50UGllY2VMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGQgLSBjdXJyZW50UGllY2VMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNpcmNsZSA9IG5ldyBEQ2lyY2xlKHAxLCBjdXJyZW50UGllY2VMZW5ndGgpO1xuICAgICAgICAgICAgICAgIHZhciBsaW5lXzEgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvblBvaW50ID0gbGluZV8xLmludGVyc2VjdGlvbldpdGhDaXJjbGUoY2lyY2xlKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwKSB7IHJldHVybiBsaW5lXzEuaW5SYW5nZShwLCBDTE9TRV9UT19JTlRFUlNFQ1RJT05fRElTVEFOQ0UpOyB9KVswXTtcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzXzEuaW5zZXJ0QWZ0ZXIoaSwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQWx0aXR1ZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAxeiA9IHAxLno7XG4gICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50LnogPSBwMXogLSAocDF6IC0gcDIueikgKiAocDEuZGlzdGFuY2UoaW50ZXJzZWN0aW9uUG9pbnQpIC8gZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoIC09IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aGlzXzEgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgNCksIHAxID0gX2RbMF0sIHAyID0gX2RbMV0sIGkgPSBfZFszXTtcbiAgICAgICAgICAgICAgICBfbG9vcF8zKHAxLCBwMiwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTNfMSkgeyBlXzEzID0geyBlcnJvcjogZV8xM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMykgdGhyb3cgZV8xMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnByZXBhcmVUb0Zhc3RTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzE0LCBfYTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfYy52YWx1ZSwgeCA9IF9kLngsIHkgPSBfZC55LCB6ID0gX2QuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xNF8xKSB7IGVfMTQgPSB7IGVycm9yOiBlXzE0XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE0KSB0aHJvdyBlXzE0LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5mYXN0SGFzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZ3Jvd2luZ1BpZWNlc0dlbmVyYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBvbHlnb24gPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgciwgX2EsIF9iLCBwLCBlXzE1XzE7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTUsIF9jO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfZC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QudHJ5cy5wdXNoKFsxLCA2LCA3LCA4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSBfX3ZhbHVlcyhwb2x5Z29uLnBQb2ludHMpLCBfYiA9IF9hLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhX2IuZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gX2IudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgci5jbG9uZSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iID0gX2EubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMywgOF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xNV8xID0gX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfMTUgPSB7IGVycm9yOiBlXzE1XzEgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYiAmJiAhX2IuZG9uZSAmJiAoX2MgPSBfYS5yZXR1cm4pKSBfYy5jYWxsKF9hKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE1KSB0aHJvdyBlXzE1LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyLCByLmNsb25lKCldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZVVuaW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgRFBvbHlnb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgZmFsc2UsIGZhbHNlKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVEaWZmZXJlbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc21hcnRVbmlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBlXzE2LCBfYTtcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuY2xvbmUoKS5zaW1wbGVVbmlvbihwKTtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdmFyIGFsbEhvbGVzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0aGlzLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocC5ob2xlcyksIGZhbHNlKSwgX19yZWFkKHJlcy5ob2xlcyksIGZhbHNlKS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvbmUoKTsgfSk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTcsIF9iO1xuICAgICAgICAgICAgICAgIHZhciBfbG9vcF81ID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZXF1YWwoYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhLnNpbXBsZVVuaW9uKGIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSG9sZXMgPSBhbGxIb2xlcy5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICF2LmVxdWFsKGEpICYmICF2LmVxdWFsKGIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEhvbGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzIgPSAoZV8xNyA9IHZvaWQgMCwgX192YWx1ZXMoYWxsSG9sZXMpKSwgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCk7ICFhbGxIb2xlc18yXzEuZG9uZTsgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYWxsSG9sZXNfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2xvb3BfNShiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xN18xKSB7IGVfMTcgPSB7IGVycm9yOiBlXzE3XzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEhvbGVzXzJfMSAmJiAhYWxsSG9sZXNfMl8xLmRvbmUgJiYgKF9iID0gYWxsSG9sZXNfMi5yZXR1cm4pKSBfYi5jYWxsKGFsbEhvbGVzXzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNykgdGhyb3cgZV8xNy5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzEgPSBfX3ZhbHVlcyhhbGxIb2xlcyksIGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpOyAhYWxsSG9sZXNfMV8xLmRvbmU7IGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gYWxsSG9sZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF80KGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzE2XzEpIHsgZV8xNiA9IHsgZXJyb3I6IGVfMTZfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSG9sZXNfMV8xICYmICFhbGxIb2xlc18xXzEuZG9uZSAmJiAoX2EgPSBhbGxIb2xlc18xLnJldHVybikpIF9hLmNhbGwoYWxsSG9sZXNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNikgdGhyb3cgZV8xNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzLmhvbGVzID0gYWxsSG9sZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b1RyaWFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAwLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwMS5jbG9uZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcDIuY2xvbmUoKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9seS5wdXNoKHBvbHkuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICB3aGlsZSAocC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBoID0gcC5ob2xlcy5zaGlmdCgpXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuY2xvY2tXaXNlXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHAsIHAuZmlyc3QsIGguZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFswXSwgX19yZWFkKGgucG9pbnRzKSwgZmFsc2UpLCBbcC5maXJzdF0sIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwLnB1c2gocC5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChwLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIHZhciB0cmlhbmdsZSA9IGdldFRyaWFuZ2xlKHApO1xuICAgICAgICAgICAgaWYgKHRyaWFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2godHJpYW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKHApO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldFRyaWFuZ2xlc1BvaW50SW5kZXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcDAucHJvcGVydGllcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxLnByb3BlcnRpZXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvbHkucHVzaChwb2x5LnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHAucG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIGYucHJvcGVydGllcy5pbmRleCA9IGluZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICBwLmhvbGVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgICAgIGgucFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICAgICAgZi5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcCA9IHAuY2xvY2tXaXNlLm9wZW4oKTtcbiAgICAgICAgd2hpbGUgKHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHAuaG9sZXMuc2hpZnQoKVxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLmNsb2NrV2lzZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwLCBwLmZpcnN0LCBoLmZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyLmFwcGx5KHAsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbMF0sIF9fcmVhZChoLnBvaW50cyksIGZhbHNlKSwgW3AuZmlyc3RdLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcC5wdXNoKHAuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAocC5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICB2YXIgdHJpYW5nbGUgPSBnZXRUcmlhbmdsZShwKTtcbiAgICAgICAgICAgIGlmICh0cmlhbmdsZSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRyaWFuZ2xlKSwgZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChwLnBvaW50cy5tYXAoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYucHJvcGVydGllcy5pbmRleDsgfSkpLCBmYWxzZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJjbG9zZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0LmVxdWFsKHRoaXMubGFzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYnVmZmVyID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMsIHR5cGUpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uQ0FQX1JPVU5EOyB9XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBub0hvbGVzID0gX2Eubm9Ib2xlcywgY2xvc2VkID0gX2EuY2xvc2VkO1xuICAgICAgICB2YXIgcG9pbnRzID0gcmVhZGVyXG4gICAgICAgICAgICAucmVhZChub0hvbGVzLnRvV0tUKGNsb3NlZCA/IERQb2x5Z29uLldLVF9QT0xZR09OIDogRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcpKVxuICAgICAgICAgICAgLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCB0eXBlKVxuICAgICAgICAgICAgLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5KTtcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpZGVCdWZmZXJzID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgZmlyc3QgPSBfYS5maXJzdCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCBEUG9seWdvbi5DQVBfRkxBVCkub3BlbigpO1xuICAgICAgICB2YXIgX2IgPSBfX3JlYWQoZmlyc3Quc29ydEJ5RGlzdGFuY2UoYnVmZmVyKS5wb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnByb3BlcnRpZXMuaW5kZXg7IH0pLCAyKSwgc3RhcnQwID0gX2JbMF0sIHN0YXJ0MSA9IF9iWzFdO1xuICAgICAgICB2YXIgX2MgPSBfX3JlYWQobGFzdC5zb3J0QnlEaXN0YW5jZShidWZmZXIpLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIucHJvcGVydGllcy5pbmRleDsgfSksIDIpLCBlbmQwID0gX2NbMF0sIGVuZDEgPSBfY1sxXTtcbiAgICAgICAgdmFyIGZyb21Qb2ludCA9IE1hdGgubWluKE1hdGgubWF4KHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5tYXgoZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgdG9Qb2ludCA9IE1hdGgubWF4KE1hdGgubWluKHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5taW4oZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgbGluZVBhcnQgPSBuZXcgRFBvbHlnb24oYnVmZmVyLnJlbW92ZVBhcnQoZnJvbVBvaW50IC0gMSwgdG9Qb2ludCAtIGZyb21Qb2ludCArIDEpKTtcbiAgICAgICAgYnVmZmVyLnVuc2hpZnQoYnVmZmVyLnBvcCgpKTtcbiAgICAgICAgcmV0dXJuIFtsaW5lUGFydC5yZXZlcnNlKCksIGJ1ZmZlcl07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYmV6aWVyID0gZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgaWYgKHN0ZXAgPT09IHZvaWQgMCkgeyBzdGVwID0gMC4xOyB9XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxOyBpICs9IHN0ZXApIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKHRoaXMuY2xvbmUoKS5nZXRCZXppZXJQb2ludChpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRHcm93aW5nSGVpZ2h0ID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcHJldlBvaW50ID0gdGhpcy5maXJzdDtcbiAgICAgICAgdmFyIGQgPSB0byAtIGZyb207XG4gICAgICAgIHZhciBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICAgICAgICB0aGlzLmxvb3AoKVxuICAgICAgICAgICAgLnNldFooZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIGN1cnJlbnREaXN0YW5jZSArPSBwcmV2UG9pbnQuZGlzdGFuY2UocCk7XG4gICAgICAgICAgICBwcmV2UG9pbnQgPSBwO1xuICAgICAgICAgICAgcmV0dXJuIGZyb20gKyBjdXJyZW50RGlzdGFuY2UgLyBmdWxsTGVuZ3RoICogZDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubG9vcFBvaW50c0dlbmVyYXRvciA9IGZ1bmN0aW9uICh3aXRoTGluZSkge1xuICAgICAgICBpZiAod2l0aExpbmUgPT09IHZvaWQgMCkgeyB3aXRoTGluZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpLCBwMSwgcDI7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IHRoYXQubGVuZ3RoIC0gMSkpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBwMSA9IHRoYXQuYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwMiA9IHRoYXQuYXQoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBbcDEsIHAyLCB3aXRoTGluZSA/IHAxLmZpbmRMaW5lKHAyKSA6IHVuZGVmaW5lZCwgaV1dO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDM7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRCZXppZXJQb2ludCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBlXzE4LCBfYTtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgcDEubW92ZShwMi5jbG9uZSgpLm1vdmUocDEuY2xvbmUoKS5taW51cygpKVxuICAgICAgICAgICAgICAgICAgICAuc2NhbGUodikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzE4XzEpIHsgZV8xOCA9IHsgZXJyb3I6IGVfMThfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTgpIHRocm93IGVfMTguZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCZXppZXJQb2ludCh2KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbmNsdWRlWCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciB4ID0gcC54O1xuICAgICAgICByZXR1cm4gdGhpcy5taW5YIDw9IHggJiYgdGhpcy5tYXhYID49IHg7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZVkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgeSA9IHAueTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluWSA8PSB5ICYmIHRoaXMubWF4WSA+PSB5O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRvdWdsYXNQZXVja2VyID0gZnVuY3Rpb24gKHBvaW50cywgZSkge1xuICAgICAgICB2YXIgZE1heCA9IDA7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBlbmQgPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGxpbmUgPSBwb2ludHNbMF0uZmluZExpbmUocG9pbnRzW2VuZF0pO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZCA9IGxpbmUucGVycGVuZGljdWxhckRpc3RhbmNlKHBvaW50c1tpXSk7XG4gICAgICAgICAgICBpZiAoZCA+IGRNYXgpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgZE1heCA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRNYXggPj0gZSkge1xuICAgICAgICAgICAgdmFyIHJlY1Jlc3VsdDEgPSB0aGlzLmRvdWdsYXNQZXVja2VyKHBvaW50cy5zbGljZSgwLCBpbmRleCArIDEpLCBlKTtcbiAgICAgICAgICAgIHZhciByZWNSZXN1bHQyID0gdGhpcy5kb3VnbGFzUGV1Y2tlcihwb2ludHMuc2xpY2UoaW5kZXgpLCBlKTtcbiAgICAgICAgICAgIHJlY1Jlc3VsdDEucG9wKCk7XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQocmVjUmVzdWx0MSksIGZhbHNlKSwgX19yZWFkKHJlY1Jlc3VsdDIpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtwb2ludHNbMF0sIHBvaW50c1tlbmRdXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nb0J5UGF0aCA9IGZ1bmN0aW9uIChjdHgsIHN0ZXBzKSB7XG4gICAgICAgIGlmIChzdGVwcyA9PT0gdm9pZCAwKSB7IHN0ZXBzID0gdGhpcy5sZW5ndGggLSAxOyB9XG4gICAgICAgIHZhciBzdGFydCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGN0eC5tb3ZlVG8oc3RhcnQueCwgc3RhcnQueSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IChzdGVwcyAlIHRoaXMubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLmF0KGkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBjdHgubGluZVRvKHgsIHkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0SlNUU0dlb21ldHJ5ID0gZnVuY3Rpb24gKHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KSB7XG4gICAgICAgIHZhciB1bmlvbk9ySW50ZXJzZWN0aW9uID0gdW5pb25UaGF0ID09PSB1bmlvblRoaXM7XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgYSA9IHJlYWRlci5yZWFkKHRoaXMubm9Ib2xlcy50b1dLVCgpKTtcbiAgICAgICAgdmFyIGIgPSByZWFkZXIucmVhZChwLm5vSG9sZXMudG9XS1QoKSk7XG4gICAgICAgIGlmICghdW5pb25PckludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGEuZGlmZmVyZW5jZShiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnVuaW9uKGIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmludGVyc2VjdGlvbihiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUxvZ2ljRnVuY3Rpb24gPSBmdW5jdGlvbiAocCwgdW5pb25UaGlzLCB1bmlvblRoYXQpIHtcbiAgICAgICAgdmFyIGVfMTksIF9hLCBlXzIwLCBfYiwgZV8yMSwgX2MsIGVfMjIsIF9kO1xuICAgICAgICB2YXIgYyA9IHRoaXMuZ2V0SlNUU0dlb21ldHJ5KHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KTtcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc18xID0gYy5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNvb3JkaW5hdGVzXzEucmVkdWNlKGZ1bmN0aW9uIChhaywgX2EsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0SW5kZXggPSBhay5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdCA9IGFrW2xhc3RJbmRleF0uZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0LmVxdWFsKGZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0UG9pbnQgPSBuZXcgRFBvaW50KGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXS54LCBjb29yZGluYXRlc18xW2luZGV4ICsgMV0ueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFrW2xhc3RJbmRleF0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKG5ldyBEUG9seWdvbihbbmV4dFBvaW50XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrW2xhc3RJbmRleF0ucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgfSwgW25ldyBEUG9seWdvbihbbmV3IERQb2ludChjb29yZGluYXRlc18xWzBdLngsIGNvb3JkaW5hdGVzXzFbMF0ueSldKV0pO1xuICAgICAgICAgICAgICAgIGlmICh1bmlvblRoYXQgJiYgdW5pb25UaGlzICYmIHJlc3VsdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMSA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCk7ICFyZXN1bHRfMV8xLmRvbmU7IHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHJlc3VsdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sb29wXzYgPSBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmhhcyhyLmZpcnN0KSAmJiAhcS5lcXVhbChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcS5maW5kSW5kZXgoci5maXJzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2UgPSBxLnBvaW50cykuc3BsaWNlLmFwcGx5KF9lLCBfX3NwcmVhZEFycmF5KFtpbmRleCwgMF0sIF9fcmVhZChyLnBvaW50cyksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5lcXVhbChyKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzIgPSAoZV8yMCA9IHZvaWQgMCwgX192YWx1ZXMocmVzdWx0KSksIHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCk7ICFyZXN1bHRfMl8xLmRvbmU7IHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfNihyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjBfMSkgeyBlXzIwID0geyBlcnJvcjogZV8yMF8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMl8xICYmICFyZXN1bHRfMl8xLmRvbmUgJiYgKF9iID0gcmVzdWx0XzIucmV0dXJuKSkgX2IuY2FsbChyZXN1bHRfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIwKSB0aHJvdyBlXzIwLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMTlfMSkgeyBlXzE5ID0geyBlcnJvcjogZV8xOV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMV8xICYmICFyZXN1bHRfMV8xLmRvbmUgJiYgKF9hID0gcmVzdWx0XzEucmV0dXJuKSkgX2EuY2FsbChyZXN1bHRfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTkpIHRocm93IGVfMTkuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmxlbmd0aCA+IDI7IH0pLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9zZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMyA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCk7ICFyZXN1bHRfM18xLmRvbmU7IHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gcmVzdWx0XzNfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF83ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxLmVxdWFsKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmNvbnRhaW4oci5maXJzdCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEuaG9sZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGgpIHsgcmV0dXJuICFoLmVxdWFsKHIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF80ID0gKGVfMjIgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpOyAhcmVzdWx0XzRfMS5kb25lOyByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzRfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF83KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVfMiA9PT0gXCJicmVha1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjJfMSkgeyBlXzIyID0geyBlcnJvcjogZV8yMl8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfNF8xICYmICFyZXN1bHRfNF8xLmRvbmUgJiYgKF9kID0gcmVzdWx0XzQucmV0dXJuKSkgX2QuY2FsbChyZXN1bHRfNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMikgdGhyb3cgZV8yMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjFfMSkgeyBlXzIxID0geyBlcnJvcjogZV8yMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfM18xICYmICFyZXN1bHRfM18xLmRvbmUgJiYgKF9jID0gcmVzdWx0XzMucmV0dXJuKSkgX2MuY2FsbChyZXN1bHRfMyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIxKSB0aHJvdyBlXzIxLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0WzBdLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBnLmNsb3NlKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRFBvbHlnb24uQ0FQX1JPVU5EID0gQ0FQX1JPVU5EO1xuICAgIERQb2x5Z29uLkNBUF9GTEFUID0gQ0FQX0ZMQVQ7XG4gICAgRFBvbHlnb24uQ0FQX1NRVUFSRSA9IENBUF9TUVVBUkU7XG4gICAgRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcgPSAnTElORVNUUklORyc7XG4gICAgRFBvbHlnb24uV0tUX1BPTFlHT04gPSAnUE9MWUdPTic7XG4gICAgcmV0dXJuIERQb2x5Z29uO1xufSgpKTtcbmV4cG9ydCB7IERQb2x5Z29uIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuaW1wb3J0IHsgRExpbmUgfSBmcm9tICcuL0RMaW5lJztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uLCBjcmVhdGVBcnJheSwgREdlbywgZGl2LCBpc0RlZkFuZE5vdE51bGwgfSBmcm9tICcuL3V0aWxzJztcbnZhciBkaWZmID0gMDtcbnZhciByYWRpYW5zUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHBzZXVkb01lcmNhdG9yUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHdvcmxkR2VvZGV0aWNQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG5leHBvcnQgdmFyIEVBUlRIX1JBRElVU19JTl9NRVRFUlMgPSA2Mzc4MTM3O1xudmFyIEVBUlRIX0lOX01FVEVSUyA9IDIwMDM3NTA4LjM0O1xudmFyIERFR1JFRVNfSU5fRUFSVEggPSAxODA7XG52YXIgTUVURVJTX0lOX09ORV9ERUdSRUUgPSBFQVJUSF9JTl9NRVRFUlMgLyBERUdSRUVTX0lOX0VBUlRIO1xudmFyIERFR1JFRVNfSU5fT05FX01FVEVSID0gREVHUkVFU19JTl9FQVJUSCAvIEVBUlRIX0lOX01FVEVSUztcbmV4cG9ydCB2YXIgSEFMRl9QSV9JTl9ERUdSRUUgPSA5MDtcbmV4cG9ydCB2YXIgUElfSU5fREVHUkVFID0gMTgwO1xuZXhwb3J0IHZhciBET1VCTEVfUElfSU5fREVHUkVFID0gMzYwO1xuZXhwb3J0IHZhciBQSV9UT19ERUdSRUUgPSBNYXRoLlBJIC8gUElfSU5fREVHUkVFO1xuZXhwb3J0IHZhciBERUdSRUVfVE9fUEkgPSBQSV9JTl9ERUdSRUUgLyBNYXRoLlBJO1xudmFyIERQb2ludCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBvaW50KHgsIHksIHopIHtcbiAgICAgICAgaWYgKHggPT09IHZvaWQgMCkgeyB4ID0gMDsgfVxuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHRoaXMueiA9IHo7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgIH1cbiAgICBEUG9pbnQuemVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoKTtcbiAgICB9O1xuICAgIERQb2ludC5wYXJzZSA9IGZ1bmN0aW9uIChjLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgdmFyIF9hID0gYywgbGF0ID0gX2EubGF0LCBsb24gPSBfYS5sb24sIF9iID0gX2EubG5nLCBsbmcgPSBfYiA9PT0gdm9pZCAwID8gbG9uIDogX2IsIGFsdCA9IF9hLmFsdDtcbiAgICAgICAgaWYgKGxhdCAmJiBsbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxuZywgbGF0LCBhbHQgIT09IG51bGwgJiYgYWx0ICE9PSB2b2lkIDAgPyBhbHQgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdCA9IGM7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdQb2ludCcpIHtcbiAgICAgICAgICAgIHQgPSBjLmNvb3JkaW5hdGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgvW154LXpdL2dtaXUsICcnKVxuICAgICAgICAgICAgLnNwbGl0KCcnKVxuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAoYSwgaywgaW5kZXgpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICBzd2l0Y2ggKGspIHtcbiAgICAgICAgICAgICAgICBjYXNlICd4JzpcbiAgICAgICAgICAgICAgICAgICAgYS54ID0gKF9hID0gdFtpbmRleF0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgICAgICAgICBhLnkgPSAoX2IgPSB0W2luZGV4XSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneic6XG4gICAgICAgICAgICAgICAgICAgIGEueiA9IHRbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgIH0sIG5ldyBEUG9pbnQoKSk7XG4gICAgfTtcbiAgICBEUG9pbnQucGFyc2VGcm9tV0tUID0gZnVuY3Rpb24gKHdrdCkge1xuICAgICAgICB2YXIgcmVnZXhwID0gL1BPSU5UIFxcKCg/PGRhdGE+KD86KD8hXFwpKS4pKj8pXFwpJC9taXU7XG4gICAgICAgIHZhciBkYXRhID0gd2t0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcmVzID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChyZXMuZ3JvdXBzLmRhdGEuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSwgMyksIHggPSBfYVswXSwgeSA9IF9hWzFdLCB6ID0gX2FbMl07XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHopO1xuICAgIH07XG4gICAgRFBvaW50LnJhbmRvbSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoTWF0aC5yYW5kb20oKSwgTWF0aC5yYW5kb20oKSk7XG4gICAgfTtcbiAgICBEUG9pbnQuZ2V0VGlsZUZyb21RdWFkS2V5ID0gZnVuY3Rpb24gKHF1YWRLZXkpIHtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvaW50KDAsIDAsIHF1YWRLZXkubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHAuejsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgdmFyIG1hc2sgPSAxIDw8IChpIC0gMSk7XG4gICAgICAgICAgICBzd2l0Y2ggKHF1YWRLZXlbcC56IC0gaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlICcwJzpcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgICAgICAgIHAueCB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgICAgICAgcC55IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzMnOlxuICAgICAgICAgICAgICAgICAgICBwLnggfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgcC55IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBRdWFkS2V5IGRpZ2l0IHNlcXVlbmNlLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRUaWxlRnJvbUNvb3JkcyA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRUaWxlRnJvbUNvb3JkcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcyk7XG4gICAgICAgIHZhciB4ID0gTWF0aC5mbG9vcigodGhpcy54ICsgUElfSU5fREVHUkVFKSAvIERPVUJMRV9QSV9JTl9ERUdSRUUgKiAoTWF0aC5wb3coMiwgem9vbSkpKTtcbiAgICAgICAgdmFyIHkgPSBNYXRoLmZsb29yKCgxIC0gTWF0aC5sb2coTWF0aC50YW4odGhpcy55ICogUElfVE9fREVHUkVFKSArIDEgLyBNYXRoLmNvcyh0aGlzLnkgKiBQSV9UT19ERUdSRUUpKSAvIE1hdGguUEkpIC8gMiAqIChNYXRoLnBvdygyLCB6b29tKSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5LCB6b29tKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0UXVhZEtleUZyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIHZhciBxdWFkS2V5ID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSB6b29tOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgZGlnaXQgPSAwO1xuICAgICAgICAgICAgdmFyIG1hc2sgPSAxIDw8IChpIC0gMSk7XG4gICAgICAgICAgICBpZiAoKHRoaXMueCAmIG1hc2spICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy55ICYgbWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxdWFkS2V5LnB1c2goZGlnaXQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBxdWFkS2V5LmpvaW4oJycpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRDb29yZHNGcm9tVGlsZSA9IGZ1bmN0aW9uICh6b29tKSB7XG4gICAgICAgIGlmICh6b29tID09PSB2b2lkIDApIHsgem9vbSA9IHRoaXMuejsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRDb29yZHNGcm9tVGlsZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVVSW50KHRoaXMpO1xuICAgICAgICB2YXIgbiA9IE1hdGguUEkgLSAyICogTWF0aC5QSSAqIHRoaXMueSAvIChNYXRoLnBvdygyLCB6b29tKSk7XG4gICAgICAgIHZhciB4ID0gdGhpcy54IC8gKE1hdGgucG93KDIsIHpvb20pKSAqIERPVUJMRV9QSV9JTl9ERUdSRUUgLSBQSV9JTl9ERUdSRUU7XG4gICAgICAgIHZhciB5ID0gUElfSU5fREVHUkVFIC8gTWF0aC5QSSAqIE1hdGguYXRhbigoTWF0aC5leHAobikgLSBNYXRoLmV4cCgtbikpIC8gMik7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHpvb20pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0Nvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9bXngtel0vZ21pdSwgJycpLnNwbGl0KCcnKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoaykgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIHg6IF90aGlzLngsXG4gICAgICAgICAgICB5OiBfdGhpcy55LFxuICAgICAgICAgICAgejogX3RoaXMuelxuICAgICAgICB9KVtrXTsgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIgIT09IHVuZGVmaW5lZDsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2ludCcsXG4gICAgICAgICAgICBjb29yZGluYXRlczogdGhpcy50b0Nvb3Jkcyhmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTkZlYXR1cmUgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgICBwcm9wZXJ0aWVzOiBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgIGdlb21ldHJ5OiB0aGlzLnRvR2VvSlNPTihmb3JtYXQpXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZpbmRMaW5lID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZExpbmUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maW5kTGluZShwLmNsb25lKCkubW92ZSgwLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGEgPSB0aGlzLnkgLSBwLnkgLSBkaWZmO1xuICAgICAgICB2YXIgYiA9IHAueCAtIHRoaXMueCAtIGRpZmY7XG4gICAgICAgIHZhciBjID0gdGhpcy54ICogcC55IC0gcC54ICogdGhpcy55IC0gZGlmZjtcbiAgICAgICAgaWYgKGEgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRExpbmUoMCwgMSwgYyAvIGIsIHRoaXMsIHApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChiID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERMaW5lKDEsIDAsIGMgLyBhLCB0aGlzLCBwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IERMaW5lKGEsIGIsIGMsIHRoaXMsIHApO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5maW5kSW5uZXJBbmdsZSA9IGZ1bmN0aW9uIChwMSwgcDMpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZElubmVyQW5nbGUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncDEnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHAxKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwMyk7XG4gICAgICAgIHZhciBhMSA9IHRoaXMuZmluZExpbmUocDEpLmdldEZpKCk7XG4gICAgICAgIHZhciBhMiA9IHRoaXMuZmluZExpbmUocDMpLmdldEZpKCk7XG4gICAgICAgIGlmIChhMiA+PSBhMSkge1xuICAgICAgICAgICAgcmV0dXJuIGEyIC0gYTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGEyICsgTWF0aC5QSSAqIDIgLSBhMTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIlwiLmNvbmNhdCh0aGlzLngsIFwiIFwiKS5jb25jYXQodGhpcy55KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy54LCB0aGlzLnldO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnogPSB6O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgcmV0dXJuIFwiUE9JTlQgKFwiLmNvbmNhdCh4LCBcIiBcIikuY29uY2F0KHksIFwiKVwiKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiBNYXRoLnNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXN0YW5jZTNkID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGlzdGFuY2UzZCcpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QodGhpcy56KVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AueicpXG4gICAgICAgICAgICAuc2hvdWxkRXhpc3QocC56KTtcbiAgICAgICAgdmFyIGR4ID0gcC54IC0gdGhpcy54O1xuICAgICAgICB2YXIgZHkgPSBwLnkgLSB0aGlzLnk7XG4gICAgICAgIHZhciBkeiA9IHAueiAtIHRoaXMuejtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSArIGR6ICogZHopO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRYID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgdGhpcy54ID0gdHlwZW9mIHggPT09ICdudW1iZXInID8geCA6IHgodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRaID0gZnVuY3Rpb24gKHopIHtcbiAgICAgICAgdGhpcy56ID0gdHlwZW9mIHogPT09ICdudW1iZXInID8geiA6IHoodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRZID0gZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgdGhpcy55ID0gdHlwZW9mIHkgPT09ICdudW1iZXInID8geSA6IHkodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgdGhpcy5wcm9wZXJ0aWVzID0gdHlwZW9mIHYgPT09ICdvYmplY3QnID8gdiA6IHYodGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvaW50KHRoaXMueCwgdGhpcy55LCB0aGlzLnopO1xuICAgICAgICBwLnByb3BlcnRpZXMgPSBfX2Fzc2lnbih7fSwgdGhpcy5wcm9wZXJ0aWVzKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA+IHAueCAmJiB0aGlzLnkgPiBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueCA8IHAueCAmJiB0aGlzLnkgPCBwLnk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmd0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmx0T3JFcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmx0KHApIHx8IHRoaXMuZXF1YWwocCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciB4ID0gdGhpcy54ICogTWF0aC5jb3MoYSkgLSB0aGlzLnkgKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdmFyIHkgPSB0aGlzLnggKiBNYXRoLnNpbihhKSArIHRoaXMueSAqIE1hdGguY29zKGEpO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RYID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICB0aGlzLnkgPSB5ICogTWF0aC5jb3MoYSkgKyB6ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueiA9IC15ICogTWF0aC5zaW4oYSkgKyB6ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFkgPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB4ID0gX2EueCwgeiA9IF9hLno7XG4gICAgICAgIHRoaXMueCA9IHggKiBNYXRoLmNvcyhhKSArIHogKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy56ID0gLXggKiBNYXRoLnNpbihhKSArIHogKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB5ID0gX2EueTtcbiAgICAgICAgdGhpcy54ID0geCAqIE1hdGguY29zKGEpIC0geSAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnkgPSAteCAqIE1hdGguc2luKGEpICsgeSAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubW92ZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSArIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKyB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKyB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICsgejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2RlZ3JlZVRvTWV0ZXJzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgdmFyIHggPSAoKHRoaXMueCArIFBJX0lOX0RFR1JFRSkgJSBET1VCTEVfUElfSU5fREVHUkVFIC0gUElfSU5fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB2YXIgeSA9IChNYXRoLmxvZyhNYXRoLnRhbigoKHRoaXMueSArIEhBTEZfUElfSU5fREVHUkVFKSAlIFBJX0lOX0RFR1JFRSkgKlxuICAgICAgICAgICAgKE1hdGguUEkgLyBET1VCTEVfUElfSU5fREVHUkVFKSkpIC8gUElfVE9fREVHUkVFKSAqIE1FVEVSU19JTl9PTkVfREVHUkVFO1xuICAgICAgICB0aGlzLnggPSB4O1xuICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9EZWdyZWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ21ldGVyc1RvRGVncmVlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgdmFyIGxvbiA9IHRoaXMueCAqIERFR1JFRVNfSU5fT05FX01FVEVSO1xuICAgICAgICB2YXIgbGF0ID0gTWF0aC5hdGFuKE1hdGgucG93KE1hdGguRSwgKCh0aGlzLnkgLyBNRVRFUlNfSU5fT05FX0RFR1JFRSkgKiBQSV9UT19ERUdSRUUpKSkgKlxuICAgICAgICAgICAgKERPVUJMRV9QSV9JTl9ERUdSRUUgLyBNYXRoLlBJKSAtIEhBTEZfUElfSU5fREVHUkVFO1xuICAgICAgICB0aGlzLnggPSBsb247XG4gICAgICAgIHRoaXMueSA9IGxhdDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRlZ3JlZVRvUmFkaWFucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGVncmVlVG9SYWRpYW5zJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoUElfVE9fREVHUkVFKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncmFkaWFuc1RvRGVncmVlcycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZShERUdSRUVfVE9fUEkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3JhZGlhbnNUb01ldGVycycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVSYWRpYW5zKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5yYWRpYW5zVG9EZWdyZWVzKCkuZGVncmVlVG9NZXRlcnMoKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWV0ZXJzVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdtZXRlcnNUb1JhZGlhbnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5tZXRlcnNUb0RlZ3JlZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5yb3VuZCh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLnJvdW5kKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmNlaWwodGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5jZWlsKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5mbG9vcih0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmZsb29yKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b0ZpeGVkID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgaWYgKG4gPT09IHZvaWQgMCkgeyBuID0gMjsgfVxuICAgICAgICB0aGlzLnggPSBwYXJzZUZsb2F0KHRoaXMueC50b0ZpeGVkKG4pKTtcbiAgICAgICAgdGhpcy55ID0gcGFyc2VGbG9hdCh0aGlzLnkudG9GaXhlZChuKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguYWJzKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguYWJzKHRoaXMueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zY2FsZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAqIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggKiB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgKiB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICogejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55IC8geC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAvIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAvIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogLyB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgJSB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54ICUgeDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICUgeTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAlIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpdiA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4LngpO1xuICAgICAgICAgICAgeVYgPSBkaXYodGhpcy55LCB4LnkpO1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB4LnopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSBkaXYodGhpcy54LCB4KTtcbiAgICAgICAgICAgIHlWID0gZGl2KHRoaXMueSwgeSk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSBkaXYodGhpcy56LCB6KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZXF1YWwgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54ID09PSBwLnggJiYgdGhpcy55ID09PSBwLnkgJiYgdGhpcy56ID09PSBwLno7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmxpa2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gICAgICAgIGlmIChkID09PSB2b2lkIDApIHsgZCA9IDAuMDAxOyB9XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGlrZVggPSBNYXRoLmFicyh0aGlzLnggLSBwLngpIDwgZDtcbiAgICAgICAgdmFyIGxpa2VZID0gTWF0aC5hYnModGhpcy55IC0gcC55KSA8IGQ7XG4gICAgICAgIHZhciBsaWtlWiA9IE1hdGguYWJzKCgoX2IgPSAoX2EgPSB0aGlzLnopICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHAueikgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCkgLSAoKF9kID0gKF9jID0gcC56KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLnopICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDApKSA8IGQ7XG4gICAgICAgIHJldHVybiBsaWtlWCAmJiBsaWtlWSAmJiBsaWtlWjtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmxpcFZlcnRpY2FsbHkgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICAgICAgICB2YXIgdiA9IHNpemU7XG4gICAgICAgIGlmIChzaXplIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2ID0gc2l6ZS55O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMueSA9IHYgLSB0aGlzLnk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVJhZGlhbnNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChyYWRpYW5zUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICByYWRpYW5zUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLU1hdGguUEksIC1NYXRoLlBJIC8gMiksIG5ldyBEUG9pbnQoTWF0aC5QSSwgTWF0aC5QSSAvIDIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByYWRpYW5zUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVdvcmxkR2VvZGV0aWNTeXN0ZW1cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICh3b3JsZEdlb2RldGljUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB3b3JsZEdlb2RldGljUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLTE4MCwgLTkwKSwgbmV3IERQb2ludCgxODAsIDkwKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMubGlrZVJhZGlhbnMgJiYgd29ybGRHZW9kZXRpY1BvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImxpa2VQc2V1ZG9NZXJjYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHBzZXVkb01lcmNhdG9yUG9seWdvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBwc2V1ZG9NZXJjYXRvclBvbHlnb24ucHVzaChuZXcgRFBvaW50KC0yMDAyNjM3Ni4zOSwgLTIwMDQ4OTY2LjEwKSwgbmV3IERQb2ludCgyMDAyNjM3Ni4zOSwgMjAwNDg5NjYuMTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5saWtlUmFkaWFucyAmJiAhdGhpcy5saWtlV29ybGRHZW9kZXRpY1N5c3RlbSAmJiBwc2V1ZG9NZXJjYXRvclBvbHlnb24uc2ltcGxlSW5jbHVkZSh0aGlzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIndcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh5KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB5O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYXJlYVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tGdW5jdGlvbignYXJlYScpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLncgKiB0aGlzLmg7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJoaXBcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNoZWNrRnVuY3Rpb24oJ2hpcCcpXG4gICAgICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQodGhpcy53ICogdGhpcy53ICsgdGhpcy5oICogdGhpcy5oKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1pblwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIm1heFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWF4KHRoaXMueCwgdGhpcy55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhpcFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGlwID0gdGhpcy5oaXA7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChoaXAsIGhpcCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ4UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdGhpcy54O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ5UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gdGhpcy55O1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeSwgeSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJ3UG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnhQb2ludDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueVBvaW50O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGF0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnkgPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG5nXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibG9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy54O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnggPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiYWx0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56O1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgICAgICB0aGlzLnogPSB2O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvaW50LnByb3RvdHlwZS5zaW1wbGUgPSBmdW5jdGlvbiAoeEtleSwgeUtleSwgektleSkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAoeEtleSA9PT0gdm9pZCAwKSB7IHhLZXkgPSAneCc7IH1cbiAgICAgICAgaWYgKHlLZXkgPT09IHZvaWQgMCkgeyB5S2V5ID0gJ3knOyB9XG4gICAgICAgIGlmICh6S2V5ID09PSB2b2lkIDApIHsgektleSA9ICd6JzsgfVxuICAgICAgICByZXR1cm4gX19hc3NpZ24oKF9hID0ge30sIF9hW3hLZXldID0gdGhpcy54LCBfYVt5S2V5XSA9IHRoaXMueSwgX2EpLCAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgPyAoX2IgPSB7fSxcbiAgICAgICAgICAgIF9iW3pLZXldID0gdGhpcy56LFxuICAgICAgICAgICAgX2IpIDoge30pKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGgubWF4KHRoaXMueCwgcC54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5tYXgodGhpcy55LCBwLnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubWludXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKC0xKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUub3J0aG9kcm9taWNQYXRoID0gZnVuY3Rpb24gKHBvaW50LCBwb2ludHNDb3VudCkge1xuICAgICAgICBpZiAocG9pbnRzQ291bnQgPT09IHZvaWQgMCkgeyBwb2ludHNDb3VudCA9IDM2MDsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdvcnRob2Ryb21pY1BhdGgnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncG9pbnQnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHBvaW50KTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgICAgIHZhciBwID0gcG9pbnQuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIGQgPSBNYXRoLnNpbihwLnggLSB0LngpO1xuICAgICAgICB2YXIgc3RlcCA9IChwLnggLSB0LngpIC8gKHBvaW50c0NvdW50IC0gMSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oY3JlYXRlQXJyYXkocG9pbnRzQ291bnQpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uICh2LCBpKSB7XG4gICAgICAgICAgICB2YXIgeCA9IHQueCArIHN0ZXAgKiBpO1xuICAgICAgICAgICAgdmFyIHkgPSBNYXRoLmF0YW4oKE1hdGgudGFuKHQueSkgKiBNYXRoLnNpbihwLnggLSB4KSkgLyBkICtcbiAgICAgICAgICAgICAgICAoTWF0aC50YW4ocC55KSAqIE1hdGguc2luKHggLSB0LngpKSAvIGQpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSkucmFkaWFuc1RvRGVncmVlcygpO1xuICAgICAgICB9KSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNvcnRCeURpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgcmV0dXJuIHBcbiAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChkLCBpbmRleCkge1xuICAgICAgICAgICAgZC5wcm9wZXJ0aWVzLmRpc3RhbmNlID0gZC5kaXN0YW5jZShfdGhpcyk7XG4gICAgICAgICAgICBkLnByb3BlcnRpZXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEucHJvcGVydGllcy5kaXN0YW5jZSAtIGIucHJvcGVydGllcy5kaXN0YW5jZTsgfSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNhbGN1bGF0ZUFsdGl0dWRlQnlEaXN0YW5jZUJldHdlZW5Qb2ludHMgPSBmdW5jdGlvbiAocDEsIHAyKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGlmIChwMS5hbHQgPT09IHAyLmFsdCkge1xuICAgICAgICAgICAgdGhpcy5hbHQgPSBwMS5hbHQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgbWluQWx0ID0gTWF0aC5taW4oKF9hID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwLCAoX2IgPSBwMi5hbHQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApO1xuICAgICAgICAgICAgdmFyIG1heEFsdCA9IE1hdGgubWF4KChfYyA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMCwgKF9kID0gcDIuYWx0KSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwKTtcbiAgICAgICAgICAgIHZhciBkQWx0ID0gbWF4QWx0IC0gbWluQWx0O1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMSA9IHRoaXMuZGlzdGFuY2UocDEpO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlMiA9IHRoaXMuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgdmFyIHRvdGFsRGlzdGFuY2UgPSBkaXN0YW5jZTEgKyBkaXN0YW5jZTI7XG4gICAgICAgICAgICBpZiAoKChfZSA9IHAxLmFsdCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMCkgPT09IG1pbkFsdCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gbWluQWx0ICsgZGlzdGFuY2UxIC8gdG90YWxEaXN0YW5jZSAqIGRBbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsdCA9IG1pbkFsdCArIGRpc3RhbmNlMiAvIHRvdGFsRGlzdGFuY2UgKiBkQWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgcmV0dXJuIERQb2ludDtcbn0oKSk7XG5leHBvcnQgeyBEUG9pbnQgfTtcbiIsImltcG9ydCB7IERQb2ludCwgRUFSVEhfUkFESVVTX0lOX01FVEVSUyB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uIH0gZnJvbSAnLi91dGlscyc7XG52YXIgRENpcmNsZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRENpcmNsZShjZW50ZXIsIHIpIHtcbiAgICAgICAgaWYgKGNlbnRlciA9PT0gdm9pZCAwKSB7IGNlbnRlciA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHIgPT09IHZvaWQgMCkgeyByID0gMDsgfVxuICAgICAgICB0aGlzLmNlbnRlciA9IGNlbnRlcjtcbiAgICAgICAgdGhpcy5yID0gcjtcbiAgICB9XG4gICAgRENpcmNsZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5jZW50ZXIudG9TdHJpbmcoKSwgXCIsIFwiKS5jb25jYXQodGhpcy5yLCBcIilcIik7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHsgY2VudGVyOiB0aGlzLmNlbnRlciwgcjogdGhpcy5yIH07XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEQ2lyY2xlKHRoaXMuY2VudGVyLCB0aGlzLnIpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvaW50cyA9IGZ1bmN0aW9uIChjKSB7XG4gICAgICAgIGlmICh0aGlzLmVxdWFsKGMpKSB7XG4gICAgICAgICAgICByZXR1cm4gSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5jZW50ZXIsIHgwID0gX2IueCwgeTAgPSBfYi55LCByMCA9IF9hLnI7XG4gICAgICAgIHZhciBfYyA9IGMuY2VudGVyLCB4MSA9IF9jLngsIHkxID0gX2MueSwgcjEgPSBjLnI7XG4gICAgICAgIHZhciByMDIgPSByMCAqIHIwO1xuICAgICAgICB2YXIgZCA9IHRoaXMuY2VudGVyLmRpc3RhbmNlKGMuY2VudGVyKTtcbiAgICAgICAgdmFyIGEgPSAocjAyIC0gcjEgKiByMSArIGQgKiBkKSAvICgyICogZCk7XG4gICAgICAgIHZhciBoID0gTWF0aC5zcXJ0KHIwMiAtIGEgKiBhKTtcbiAgICAgICAgdmFyIGFkID0gYSAvIGQ7XG4gICAgICAgIHZhciBkeSA9IHkxIC0geTA7XG4gICAgICAgIHZhciBkeCA9IHgxIC0geDA7XG4gICAgICAgIHZhciBoZCA9IGggLyBkO1xuICAgICAgICB2YXIgeDIgPSB4MCArIGFkICogKHgxIC0geDApO1xuICAgICAgICB2YXIgeTIgPSB5MCArIGFkICogKHkxIC0geTApO1xuICAgICAgICB2YXIgeDMxID0geDIgKyBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMxID0geTIgLSBoZCAqIGR4O1xuICAgICAgICB2YXIgeDMyID0geDIgLSBoZCAqIGR5O1xuICAgICAgICB2YXIgeTMyID0geTIgKyBoZCAqIGR4O1xuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIGlmICghaXNOYU4oeDMxKSAmJiAhaXNOYU4oeTMxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzEsIHkzMSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNOYU4oeDMyKSAmJiAhaXNOYU4oeTMyKSAmJiAhKHgzMSA9PT0geDMyICYmIHkzMSA9PT0geTMyKSkge1xuICAgICAgICAgICAgcmVzLnB1c2gobmV3IERQb2ludCh4MzIsIHkzMikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgY2VudGVyID0gX2EuY2VudGVyLCByID0gX2EucjtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2VudGVyLmVxdWFsKGNlbnRlcikgJiYgdGhpcy5yID09PSByO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGUgPSBmdW5jdGlvbiAocG9pbnRDb3VudCwgc3RhcnRBbmdsZSwgc3RvcEFuZ2xlKSB7XG4gICAgICAgIGlmIChwb2ludENvdW50ID09PSB2b2lkIDApIHsgcG9pbnRDb3VudCA9IDY0OyB9XG4gICAgICAgIGlmIChzdGFydEFuZ2xlID09PSB2b2lkIDApIHsgc3RhcnRBbmdsZSA9IDA7IH1cbiAgICAgICAgaWYgKHN0b3BBbmdsZSA9PT0gdm9pZCAwKSB7IHN0b3BBbmdsZSA9IDIgKiBNYXRoLlBJOyB9XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKG5ldyBEUG9pbnQodGhpcy5yKS5zY2FsZShNYXRoLmNvcyhhbmdsZSksIE1hdGguc2luKGFuZ2xlKSlcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmNlbnRlcikpO1xuICAgICAgICAgICAgYW5nbGUgKz0gc3RlcDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgeCA9IHRoaXMuciAqIE1hdGguY29zKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci54O1xuICAgICAgICB2YXIgeSA9IHRoaXMuciAqIE1hdGguc2luKHN0b3BBbmdsZSkgKyB0aGlzLmNlbnRlci55O1xuICAgICAgICBwb2ludHMucHVzaChuZXcgRFBvaW50KHgsIHkpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihwb2ludHMpO1xuICAgIH07XG4gICAgRENpcmNsZS5wcm90b3R5cGUuZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZSA9IGZ1bmN0aW9uIChwb2ludENvdW50LCBzdGFydEFuZ2xlLCBzdG9wQW5nbGUpIHtcbiAgICAgICAgaWYgKHBvaW50Q291bnQgPT09IHZvaWQgMCkgeyBwb2ludENvdW50ID0gNjQ7IH1cbiAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPT09IHZvaWQgMCkgeyBzdGFydEFuZ2xlID0gMDsgfVxuICAgICAgICBpZiAoc3RvcEFuZ2xlID09PSB2b2lkIDApIHsgc3RvcEFuZ2xlID0gMiAqIE1hdGguUEk7IH1cbiAgICAgICAgY2hlY2tGdW5jdGlvbignZmluZFBvbHlnb25JbnNpZGVPblNwaGVyZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgnY2VudGVyJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzLmNlbnRlcik7XG4gICAgICAgIHZhciBzdGVwID0gMiAqIE1hdGguUEkgLyBwb2ludENvdW50O1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIHZhciBhbmdsZSA9IHN0YXJ0QW5nbGU7XG4gICAgICAgIHdoaWxlIChhbmdsZSA8IHN0b3BBbmdsZSAtIHN0ZXApIHtcbiAgICAgICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KGFuZ2xlKSk7XG4gICAgICAgICAgICBhbmdsZSArPSBzdGVwO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50cy5wdXNoKHRoaXMuc3BoZXJlT2Zmc2V0KHN0b3BBbmdsZSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cyk7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5zcGhlcmVPZmZzZXQgPSBmdW5jdGlvbiAoYmVhcmluZywgZWFydGhSYWRpdXMpIHtcbiAgICAgICAgaWYgKGVhcnRoUmFkaXVzID09PSB2b2lkIDApIHsgZWFydGhSYWRpdXMgPSBFQVJUSF9SQURJVVNfSU5fTUVURVJTOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMuY2VudGVyLmNsb25lKCkuZGVncmVlVG9SYWRpYW5zKCksIGxvbjEgPSBfYS54LCBsYXQxID0gX2EueTtcbiAgICAgICAgdmFyIGRCeVIgPSB0aGlzLnIgLyBlYXJ0aFJhZGl1cztcbiAgICAgICAgdmFyIGxhdCA9IE1hdGguYXNpbihNYXRoLnNpbihsYXQxKSAqIE1hdGguY29zKGRCeVIpICtcbiAgICAgICAgICAgIE1hdGguY29zKGxhdDEpICogTWF0aC5zaW4oZEJ5UikgKiBNYXRoLmNvcyhiZWFyaW5nKSk7XG4gICAgICAgIHZhciBsb24gPSBsb24xICtcbiAgICAgICAgICAgIE1hdGguYXRhbjIoTWF0aC5zaW4oYmVhcmluZykgKiBNYXRoLnNpbihkQnlSKSAqIE1hdGguY29zKGxhdDEpLCBNYXRoLmNvcyhkQnlSKSAtIE1hdGguc2luKGxhdDEpICogTWF0aC5zaW4obGF0KSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxvbiwgbGF0KS5yYWRpYW5zVG9EZWdyZWVzKCk7XG4gICAgfTtcbiAgICByZXR1cm4gRENpcmNsZTtcbn0oKSk7XG5leHBvcnQgeyBEQ2lyY2xlIH07XG4iLCJ2YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgRmFzdFNlYXJjaCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmFzdFNlYXJjaCgpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgIH1cbiAgICBGYXN0U2VhcmNoLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgcG9pbnRzXzEgPSBfX3ZhbHVlcyhwb2ludHMpLCBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpOyAhcG9pbnRzXzFfMS5kb25lOyBwb2ludHNfMV8xID0gcG9pbnRzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9iID0gcG9pbnRzXzFfMS52YWx1ZSwgeCA9IF9iLngsIHkgPSBfYi55LCB6ID0gX2IuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHBvaW50c18xXzEgJiYgIXBvaW50c18xXzEuZG9uZSAmJiAoX2EgPSBwb2ludHNfMS5yZXR1cm4pKSBfYS5jYWxsKHBvaW50c18xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgRmFzdFNlYXJjaC5wcm90b3R5cGUuZmluZCA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgeCA9IF9hLngsIHkgPSBfYS55LCB6ID0gX2EuejtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFN0b3JlW3hdW3ldKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ107XG4gICAgfTtcbiAgICByZXR1cm4gRmFzdFNlYXJjaDtcbn0oKSk7XG5leHBvcnQgeyBGYXN0U2VhcmNoIH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBEUG9seWdvbiwgTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBGYXN0U2VhcmNoIH0gZnJvbSAnLi9GYXN0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFycmF5IH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgdmFyIFRyYWNlTWF0cml4VmFsdWVzO1xuKGZ1bmN0aW9uIChUcmFjZU1hdHJpeFZhbHVlcykge1xuICAgIFRyYWNlTWF0cml4VmFsdWVzW1RyYWNlTWF0cml4VmFsdWVzW1wiZlwiXSA9IDBdID0gXCJmXCI7XG4gICAgVHJhY2VNYXRyaXhWYWx1ZXNbVHJhY2VNYXRyaXhWYWx1ZXNbXCJ0XCJdID0gMV0gPSBcInRcIjtcbn0pKFRyYWNlTWF0cml4VmFsdWVzIHx8IChUcmFjZU1hdHJpeFZhbHVlcyA9IHt9KSk7XG52YXIgZ2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoZGVmYXVsdFZhbHVlID09PSB2b2lkIDApIHsgZGVmYXVsdFZhbHVlID0gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfVxuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBtW3AueV1bcC54XTtcbn07XG52YXIgc2V0QnlQb3NpdGlvbiA9IGZ1bmN0aW9uIChtLCBwLCB2YWx1ZSkge1xuICAgIGlmIChtW3AueV0gPT09IHVuZGVmaW5lZCB8fCBtW3AueV1bcC54XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gICAgbVtwLnldW3AueF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gbVtwLnldW3AueF07XG59O1xudmFyIFRyYWNlTWF0cml4ID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBUcmFjZU1hdHJpeChzaXplLCBmKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuc2l6ZSA9IHNpemU7XG4gICAgICAgIHRoaXMuZmluZEdyb3VwQnlJbmRleCA9IGZ1bmN0aW9uIChtLCBzKSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICBpZiAocyAmJiBnZXRCeVBvc2l0aW9uKG0sIHMpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHZhciBtYXJrZWQgPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgoX3RoaXMuc2l6ZSwgZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbihtYXJrZWQsIHMsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzdGFydEluZGV4IDwgcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgciA9IHJlcy5hdChzdGFydEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IC0xOyBpIDwgMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gLTE7IGogPCAyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoci54ICsgaSwgci55ICsgaik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obWFya2VkLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy50KSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCeVBvc2l0aW9uKG0sIHQsIFRyYWNlTWF0cml4VmFsdWVzLmYpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKG1hcmtlZCwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXgrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3RNYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgIGlmICghZmlyc3RNYXJrKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBmaXJzdE1hcmspO1xuICAgICAgICAgICAgdmFyIGdyb3VwcyA9IFtncm91cF07XG4gICAgICAgICAgICB2YXIgZ3JvdXBTdW0gPSBncm91cC5sZW5ndGg7XG4gICAgICAgICAgICB2YXIgYWxsR3JvdXBzID0gX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGdyb3VwLnBvaW50cyksIGZhbHNlKTtcbiAgICAgICAgICAgIHZhciBmcyA9IG5ldyBGYXN0U2VhcmNoKCk7XG4gICAgICAgICAgICBmcy5hZGQoYWxsR3JvdXBzKTtcbiAgICAgICAgICAgIHdoaWxlIChncm91cFN1bSA8IF90aGlzLnRvdGFsQ291bnRJbk1hdHJpeChtKSkge1xuICAgICAgICAgICAgICAgIHZhciBtYXJrID0gX3RoaXMuZmluZE1hcmtlZChtKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAobWFyayAmJiBmcy5maW5kKG1hcmspKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0sIG1hcmspO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgbmV4dEdyb3VwID0gX3RoaXMuZmluZEdyb3VwQnlJbmRleChtLCBtYXJrKTtcbiAgICAgICAgICAgICAgICBncm91cFN1bSArPSBuZXh0R3JvdXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGFsbEdyb3VwcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFsbEdyb3VwcyksIGZhbHNlKSwgX19yZWFkKG5leHRHcm91cC5wb2ludHMpLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZnMuYWRkKG5leHRHcm91cC5wb2ludHMpO1xuICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKG5leHRHcm91cCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ3JvdXBzLmZpbHRlcihmdW5jdGlvbiAoZykgeyByZXR1cm4gZy5sZW5ndGggPiAyOyB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy50cmFjZUdyb3VwID0gZnVuY3Rpb24gKG0sIGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgdHJhY2VEaXJlY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIC0xKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIC0xKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHZhciBsZWZ0ID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIChkICsgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aCArIDEpICUgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aDsgfTtcbiAgICAgICAgICAgIHZhciByaWdodCA9IGZ1bmN0aW9uIChkKSB7IHJldHVybiAoZCArIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGggLSAxKSAlIHRyYWNlRGlyZWN0aW9ucy5sZW5ndGg7IH07XG4gICAgICAgICAgICBpZiAoZ3JvdXAubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHZhciB0ID0gZ3JvdXAuYXQoMCkuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFt0LCB0LCB0XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gMDtcbiAgICAgICAgICAgIHZhciBwcmV2RGlyZWN0aW9uID0gSW5maW5pdHk7XG4gICAgICAgICAgICB2YXIgcCA9IGdyb3VwLmF0KDApO1xuICAgICAgICAgICAgd2hpbGUgKCFwLmVxdWFsKGdyb3VwLmF0KDApKSB8fCBwb2ludHMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0VmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tkaXJlY3Rpb25dKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuZXh0TmVpZ2hib3VyVmFsdWUgPSBnZXRCeVBvc2l0aW9uKG0sIHAuY2xvbmUoKS5tb3ZlKHRyYWNlRGlyZWN0aW9uc1tsZWZ0KGRpcmVjdGlvbildKSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQgJiYgbmV4dE5laWdoYm91clZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSByaWdodChkaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHJldkRpcmVjdGlvbiAhPT0gZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICBwcmV2RGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwID0gcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2RpcmVjdGlvbl0pO1xuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IGxlZnQobGVmdChkaXJlY3Rpb24pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwb2ludHMuYXBwcm94aW1hdGlvbigpLmNsb3NlKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuY3JlYXRlSG9sZU1hdHJpeCA9IGZ1bmN0aW9uIChncm91cCkge1xuICAgICAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgICAgICB2YXIgZnVsbFRyYWNlRGlyZWN0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KC0xLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgMCksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgwLCAtMSlcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBncm91cC5wcmVwYXJlVG9GYXN0U2VhcmNoKCk7XG4gICAgICAgICAgICB2YXIgdG1wTWF0cml4ID0gVHJhY2VNYXRyaXhcbiAgICAgICAgICAgICAgICAuY3JlYXRlTWF0cml4KF90aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7IHJldHVybiBncm91cC5mYXN0SGFzKHApID8gVHJhY2VNYXRyaXhWYWx1ZXMudCA6IFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgICAgICAgICAgdmFyIHN0YXJ0Q29vcmRzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90aGlzLnNpemUudzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KGksIC0xKSk7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KGksIF90aGlzLnNpemUuaCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfdGhpcy5zaXplLmg7IGkrKykge1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludCgtMSwgaSkpO1xuICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2gobmV3IERQb2ludChfdGhpcy5zaXplLncsIGkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChzdGFydENvb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBzdGFydENvb3Jkcy5wb3AoKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBmdWxsVHJhY2VEaXJlY3Rpb25zXzEgPSAoZV8xID0gdm9pZCAwLCBfX3ZhbHVlcyhmdWxsVHJhY2VEaXJlY3Rpb25zKSksIGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLm5leHQoKTsgIWZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLmRvbmU7IGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRtcFBvaW50ID0gcG9pbnQuY2xvbmUoKS5tb3ZlKGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBnZXRCeVBvc2l0aW9uKHRtcE1hdHJpeCwgdG1wUG9pbnQsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QnlQb3NpdGlvbih0bXBNYXRyaXgsIHRtcFBvaW50LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKHRtcFBvaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xICYmICFmdWxsVHJhY2VEaXJlY3Rpb25zXzFfMS5kb25lICYmIChfYSA9IGZ1bGxUcmFjZURpcmVjdGlvbnNfMS5yZXR1cm4pKSBfYS5jYWxsKGZ1bGxUcmFjZURpcmVjdGlvbnNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0ID0gX3RoaXMucmV2ZXJzZU1hdHJpeCh0bXBNYXRyaXgpO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLnRvdGFsQ291bnRJbk1hdHJpeCh0KSA/IHQgOiBudWxsO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm0gPSBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplLCBmKTtcbiAgICB9XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLmZ1bGxNYXRyaXhUcmFjZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIGdyb3VwcyA9IHRoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4KHRoaXMubSk7XG4gICAgICAgIHZhciBwYXRocyA9IGdyb3Vwcy5tYXAoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIF90aGlzLnRyYWNlR3JvdXAoX3RoaXMubSwgZyk7IH0pO1xuICAgICAgICB2YXIgaG9sZU1hdHJpeHMgPSBncm91cHMubWFwKHRoaXMuY3JlYXRlSG9sZU1hdHJpeCk7XG4gICAgICAgIHZhciBob2xlc0dyb3VwcyA9IGhvbGVNYXRyaXhzLm1hcChmdW5jdGlvbiAobSkgeyByZXR1cm4gbSAmJiBfdGhpcy5maW5kQWxsR3JvdXBzSW5NYXRyaXgobSk7IH0pO1xuICAgICAgICB2YXIgaG9sZXNQYXRocyA9IGhvbGVzR3JvdXBzLm1hcChmdW5jdGlvbiAoaGcsIGluZGV4KSB7IHJldHVybiBoZyAmJiBoZy5tYXAoZnVuY3Rpb24gKGcpIHsgcmV0dXJuIF90aGlzXG4gICAgICAgICAgICAudHJhY2VHcm91cChob2xlTWF0cml4c1tpbmRleF0sIGcpOyB9KS5maWx0ZXIoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIubGVuZ3RoID4gTUlOX1BPSU5UU19JTl9WQUxJRF9QT0xZR09OOyB9KTsgfSk7XG4gICAgICAgIHJldHVybiBncm91cHMubWFwKGZ1bmN0aW9uIChnLCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIHJlcyA9IHBhdGhzW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChob2xlc0dyb3Vwc1tpbmRleF0gJiYgaG9sZXNHcm91cHNbaW5kZXhdLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlcy5ob2xlcyA9IGhvbGVzUGF0aHNbaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUucmV2ZXJzZU1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHJldHVybiBUcmFjZU1hdHJpeC5jcmVhdGVNYXRyaXgodGhpcy5zaXplLCBmdW5jdGlvbiAocCkgeyByZXR1cm4gZ2V0QnlQb3NpdGlvbihtLCBwKSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMuZiA/IFRyYWNlTWF0cml4VmFsdWVzLnQgOiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5maW5kTWFya2VkID0gZnVuY3Rpb24gKG0sIGluaXQpIHtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnNpemU7XG4gICAgICAgIHZhciBpbmkgPSBmYWxzZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnc7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzLmg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICghaW5pICYmIGluaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaSA9IGluaXQueDtcbiAgICAgICAgICAgICAgICAgICAgaiA9IGluaXQueTtcbiAgICAgICAgICAgICAgICAgICAgaW5pID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG0sIG5ldyBEUG9pbnQoaSwgaikpID09PSBUcmFjZU1hdHJpeFZhbHVlcy50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGksIGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS50b3RhbENvdW50SW5NYXRyaXggPSBmdW5jdGlvbiAobSkge1xuICAgICAgICB2YXIgcmVzID0gMDtcbiAgICAgICAgdmFyIHMgPSB0aGlzLnNpemU7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcy53OyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcy5oOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoZ2V0QnlQb3NpdGlvbihtLCBuZXcgRFBvaW50KGksIGopKSkge1xuICAgICAgICAgICAgICAgICAgICByZXMrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCA9IGZ1bmN0aW9uIChzaXplLCBmKSB7XG4gICAgICAgIGlmIChmID09PSB2b2lkIDApIHsgZiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIFRyYWNlTWF0cml4VmFsdWVzLmY7IH07IH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFycmF5KHNpemUuaClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGNyZWF0ZUFycmF5KHNpemUudykubWFwKGZ1bmN0aW9uICh2MiwgaikgeyByZXR1cm4gZihuZXcgRFBvaW50KGosIGkpKTsgfSk7IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIFRyYWNlTWF0cml4O1xufSgpKTtcbmV4cG9ydCB7IFRyYWNlTWF0cml4IH07XG4iLCJ2YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBnYXVzc2lhbkVsaW1pbmF0aW9uIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xudmFyIERQbGFuZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpIHtcbiAgICAgICAgaWYgKHAxID09PSB2b2lkIDApIHsgcDEgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChwMiA9PT0gdm9pZCAwKSB7IHAyID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAocDMgPT09IHZvaWQgMCkgeyBwMyA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5kID0gZDtcbiAgICAgICAgdGhpcy5wMSA9IHAxO1xuICAgICAgICB0aGlzLnAyID0gcDI7XG4gICAgICAgIHRoaXMucDMgPSBwMztcbiAgICB9XG4gICAgRFBsYW5lLmZpbmQgPSBmdW5jdGlvbiAocDEsIHAyLCBwMykge1xuICAgICAgICBpZiAocDEueCA9PT0gcDIueCAmJiBwMi54ID09PSBwMy54KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgxLCAwLCAwLCAtcDEueCwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAxLnkgPT09IHAyLnkgJiYgcDIueSA9PT0gcDMueSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMCwgMSwgMCwgLXAxLnksIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwMS56ID09PSBwMi56ICYmIHAyLnogPT09IHAzLnopIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDAsIDAsIDEsIC1wMS56LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgZCA9IDE7XG4gICAgICAgIHZhciBfYSA9IF9fcmVhZChnYXVzc2lhbkVsaW1pbmF0aW9uKFtcbiAgICAgICAgICAgIFtwMS54LCBwMS55LCBwMS56LCAtZF0sXG4gICAgICAgICAgICBbcDIueCwgcDIueSwgcDIueiwgLWRdLFxuICAgICAgICAgICAgW3AzLngsIHAzLnksIHAzLnosIC1kXVxuICAgICAgICBdKSwgMyksIGEgPSBfYVswXSwgYiA9IF9hWzFdLCBjID0gX2FbMl07XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS54ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHkgPSBwLnksIHogPSBwLno7XG4gICAgICAgICAgICBwLnggPSAtKGIgKiB5ICsgYyAqIHogKyBkKSAvIGE7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLngodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS55ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHogPSBwLno7XG4gICAgICAgICAgICBwLnkgPSAtKGEgKiB4ICsgYyAqIHogKyBkKSAvIGI7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnkodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS56ID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmMsIGQgPSBfYS5kO1xuICAgICAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgICAgICBwLnogPSAtKGEgKiB4ICsgYiAqIHkgKyBkKSAvIGM7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcC5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIF90aGlzLnoodCk7IH0pO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQsIHAxID0gX2EucDEsIHAyID0gX2EucDIsIHAzID0gX2EucDM7XG4gICAgICAgIHJldHVybiBuZXcgRFBsYW5lKGEsIGIsIGMsIGQsIHAxLCBwMiwgcDMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmIChwIGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueSwgeiA9IHAuejtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGFfMSA9IF9hLmEsIGJfMSA9IF9hLmIsIGNfMSA9IF9hLmMsIGRfMSA9IF9hLmQ7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoYV8xICogeCArIGJfMSAqIHkgKyBjXzEgKiB6ICsgZF8xKSAvIE1hdGguc3FydChhXzEgKiBhXzEgKyBiXzEgKiBiXzEgKyBjXzEgKiBjXzEpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBfYiA9IHAsIGEgPSBfYi5hLCBiID0gX2IuYiwgYyA9IF9iLmMsIGQgPSBfYi5kO1xuICAgICAgICB2YXIgciA9IHRoaXMuZDtcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKGQgLSByKSAvIE1hdGguc3FydChhICogYSArIGIgKiBiICsgYyAqIGMpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoYSwgcSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYiwgdykgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoYywgZSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UoZCwgcik7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnNhbWUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgYSA9IHAuYSwgYiA9IHAuYiwgYyA9IHAuYywgZCA9IHAuZDtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgcSA9IF9hLmEsIHcgPSBfYS5iLCBlID0gX2EuYywgciA9IF9hLmQ7XG4gICAgICAgIHZhciB0ID0gYSAvIHE7XG4gICAgICAgIHZhciB5ID0gYiAvIHc7XG4gICAgICAgIHZhciB1ID0gYyAvIGU7XG4gICAgICAgIHZhciBpID0gZCAvIHI7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHQsIHkpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIHUpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGMpICYmXG4gICAgICAgICAgICBETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgRFBsYW5lLnByb3RvdHlwZS5wYXJhbGxlbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgdmFyIHQgPSBhIC8gcTtcbiAgICAgICAgdmFyIHkgPSBiIC8gdztcbiAgICAgICAgdmFyIHUgPSBjIC8gZTtcbiAgICAgICAgdmFyIGkgPSBkIC8gcjtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodCwgeSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgdSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgYykgJiZcbiAgICAgICAgICAgICFETnVtYmVycy5saWtlKHQsIGkpO1xuICAgIH07XG4gICAgcmV0dXJuIERQbGFuZTtcbn0oKSk7XG5leHBvcnQgeyBEUGxhbmUgfTtcbiJdLCJuYW1lcyI6WyJfX3JlYWQiLCJ0aGlzIiwiX19zcHJlYWRBcnJheSIsIl9fYXNzaWduIiwiX192YWx1ZXMiLCJvcGVyYXRpb24iLCJqc3RzSW8iLCJUcmFjZU1hdHJpeFZhbHVlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUEsSUFBSUEsUUFBTSxHQUFHLENBQUNDLFNBQUksSUFBSUEsU0FBSSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEQsSUFBSSxJQUFJLENBQUMsR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLElBQUk7SUFDUixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFD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QUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUsWUFBWTtJQUN6QixZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbkQsUUFBUSxHQUFHLEVBQUUs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QUMsV0FBVyxFQUFFO0lBQy9DLFlBQVksT0FBTyxJQUFJLENBQUM7SUFDeEIsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDL0MsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDL0MsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDOUIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDM0IsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFD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QUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hELFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pGLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3hGLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFO0lBQzlELGlCQUFpQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxhQUFhO0lBQ2IsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFDOUQsaUJBQWlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRCxpQkFBaUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFO0lBQ3BDLGdCQUFnQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdCLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzFCLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUztJQUNULFFBQVEsT0FBTyxPQUFPLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxNQUFNLENBQUMsRUFBRTtJQUNqRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUU7SUFDcEMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLFNBQVM7SUFDVCxhQUFhLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRTtJQUMzQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxD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RSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0lBQ2pFLGdCQUFnQjtJQUNoQixvQkFBb0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtJQUNoSSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtJQUMxRyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ3pGLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7SUFDdkYsb0JBQW9CLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDMUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0lBQzNDLGFBQWE7SUFDYixZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDbEUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3pGLEtBQUs7SUFDTCxDQUFDLENBQUM7SUFDRixJQUFJRyxVQUFRLEdBQUcsQ0FBQ0gsU0FBSSxJQUFJQSxTQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsQ0FBQyxFQUFFO0lBQ3RELElBQUksSUFBSSxDQUFDLEdBQUcsT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRixJQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBTztJQUNsRCxRQUFRLElBQUksRUFBRSxZQUFZO0lBQzFCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFlBQVksT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsU0FBUztJQUNULEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLEdBQUcseUJBQXlCLEdBQUcsaUNBQWlDLENBQUMsQ0FBQztJQUMzRixDQUFDLENBQUM7SUFDRixJQUFJRCxRQUFNLEdBQUcsQ0FBQ0MsU0FBSSxJQUFJQSxTQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksSUFBSTtJQUNSLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJ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QUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxZQUFZO0lBQzdDLFFBQVEsSUFBSSxFQUFFLENBQUM7SUFDZixRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3RELFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUVFLGVBQWEsQ0FBQyxFQUFFLEVBQUVGLFFBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdGLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsWUFBWTtJQUM3QyxRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRSxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsWUFBWTtJQUM5QyxRQUFRLFFBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFF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SyxHQUFHLENBQUMsQ0FBQztJQUN6Qyx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsNEJBQTRCLEVBQUUsR0FBR0EsVUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNFLDRCQUE0QixFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN6Qyx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0lBQ3pDLDRCQUE0QixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLDRCQUE0QixJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RSw0QkFBNEIsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNsRCx3QkFBd0IsS0FBSyxDQUFDO0lBQzlCLDRCQUE0QixFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEMsNEJBQTRCLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLHdCQUF3QixLQUFLLENBQUM7SUFDOUIsNEJBQTRCLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0MsNEJBQTRCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsd0JBQXdCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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SyxHQUFHLFlBQVk7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdkMsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN2QyxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDM0MsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUs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UUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxPQUFPLElBQUksQ0FBQztJQUN4QixTQUFTO0lBQ1QsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xPLFFBQVEsT0FBTyxLQUFLLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQztJQUN2QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQ3RELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxJQUFJLFlBQVksTUFBTSxFQUFFO0lBQ3BDLFlBQVksQ0FBQyxH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QUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDL0IsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFB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LEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzVDLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDNUMsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUM1QyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN0QyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDakMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQ3pDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xHLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUcsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
|
|
3976
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGdlb3V0aWxzLmpzIiwic291cmNlcyI6WyIuLi9lc20vdXRpbHMuanMiLCIuLi9lc20vRE51bWJlcnMuanMiLCIuLi9lc20vRExpbmUuanMiLCIuLi9lc20vRFBvbHlnb25Mb29wLmpzIiwiLi4vZXNtL0RQb2x5Z29uLmpzIiwiLi4vZXNtL0RQb2ludC5qcyIsIi4uL2VzbS9EQ2lyY2xlLmpzIiwiLi4vZXNtL0Zhc3RTZWFyY2guanMiLCIuLi9lc20vVHJhY2VNYXRyaXguanMiLCIuLi9lc20vRFBsYW5lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmV4cG9ydCB2YXIgREdlbyA9IHtcbiAgICBERUJVRzogZmFsc2UsXG4gICAgcGFyc2VGb3JtYXQ6ICd4eXonXG59O1xuZXhwb3J0IHZhciB3YXJuID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICBpZiAoREdlby5ERUJVRykge1xuICAgICAgICBjb25zb2xlLndhcm4uYXBwbHkoY29uc29sZSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH1cbn07XG5leHBvcnQgdmFyIGlzRGVmQW5kTm90TnVsbCA9IGZ1bmN0aW9uIChhKSB7IHJldHVybiBhICE9IHVuZGVmaW5lZDsgfTtcbnZhciBob29rID0gZnVuY3Rpb24gKHNjb3BlKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBzY29wZTsgfTsgfTtcbnZhciBzaG91bGRCZUludCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmNsb25lKCkucm91bmQoKVxuICAgICAgICAuZXF1YWwocCkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIEludCFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xudmFyIHNob3VsZEJlVUludCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFwLmNsb25lKCkucm91bmQoKVxuICAgICAgICAuZXF1YWwocCkgfHwgIXAuZ3RPckVxdWFsKERQb2ludC56ZXJvKCkpKSB7XG4gICAgICAgIHdhcm4oXCJcXFwiXCIuY29uY2F0KGZ1bmNOYW1lLCBcIlxcXCIgLT4gXFxcIlwiKS5jb25jYXQoYXJnTmFtZSwgXCJcXFwiIHNob3VsZCBiZSBVSW50IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVEZWdyZWUgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlV29ybGRHZW9kZXRpY1N5c3RlbSkge1xuICAgICAgICB3YXJuKFwiXFxcIlwiLmNvbmNhdChmdW5jTmFtZSwgXCJcXFwiIC0+IFxcXCJcIikuY29uY2F0KGFyZ05hbWUsIFwiXFxcIiBzaG91bGQgYmUgZGVncmVlIVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVSYWRpYW5zID0gZnVuY3Rpb24gKHNjb3BlLCBmdW5jTmFtZSwgYXJnTmFtZSkgeyByZXR1cm4gZnVuY3Rpb24gKHApIHtcbiAgICBpZiAoIXAubGlrZVJhZGlhbnMpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIHJhZGlhbnMhXCIpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNjb3BlO1xufTsgfTtcbnZhciBzaG91bGRFeGlzdCA9IGZ1bmN0aW9uIChzY29wZSwgZnVuY05hbWUsIGFyZ05hbWUpIHsgcmV0dXJuIGZ1bmN0aW9uIChwKSB7XG4gICAgaWYgKCFpc0RlZkFuZE5vdE51bGwocCkpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGV4aXN0IVwiKSk7XG4gICAgfVxuICAgIHJldHVybiBzY29wZTtcbn07IH07XG52YXIgc2hvdWxkQmVNZXRlcnMgPSBmdW5jdGlvbiAoc2NvcGUsIGZ1bmNOYW1lLCBhcmdOYW1lKSB7IHJldHVybiBmdW5jdGlvbiAocCkge1xuICAgIGlmICghcC5saWtlUHNldWRvTWVyY2F0b3IpIHtcbiAgICAgICAgd2FybihcIlxcXCJcIi5jb25jYXQoZnVuY05hbWUsIFwiXFxcIiAtPiBcXFwiXCIpLmNvbmNhdChhcmdOYW1lLCBcIlxcXCIgc2hvdWxkIGJlIG1ldGVycyFcIikpO1xuICAgIH1cbiAgICByZXR1cm4gc2NvcGU7XG59OyB9O1xuZXhwb3J0IHZhciBjaGVja0Z1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmNOYW1lKSB7IHJldHVybiAoe1xuICAgIGNoZWNrQXJndW1lbnQ6IGZ1bmN0aW9uIChhcmdOYW1lKSB7XG4gICAgICAgIGlmICghREdlby5ERUJVRykge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaG91bGRCZURlZ3JlZTogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZU1ldGVyczogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZUludDogaG9vayh0aGlzKSxcbiAgICAgICAgICAgICAgICBzaG91bGRCZVVJbnQ6IGhvb2sodGhpcyksXG4gICAgICAgICAgICAgICAgc2hvdWxkQmVSYWRpYW5zOiBob29rKHRoaXMpLFxuICAgICAgICAgICAgICAgIHNob3VsZEV4aXN0OiBob29rKHRoaXMpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaG91bGRCZURlZ3JlZTogc2hvdWxkQmVEZWdyZWUodGhpcywgZnVuY05hbWUsIGFyZ05hbWUpLFxuICAgICAgICAgICAgc2hvdWxkQmVNZXRlcnM6IHNob3VsZEJlTWV0ZXJzKHRoaXMsIGZ1bmNOYW1lLCBhcmdOYW1lKSxcbiAgICAgICAgICAgIHNob3VsZEJlSW50OiBzaG91bGRCZUludCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZVVJbnQ6IHNob3VsZEJlVUludCh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRCZVJhZGlhbnM6IHNob3VsZEJlUmFkaWFucyh0aGlzLCBmdW5jTmFtZSwgYXJnTmFtZSksXG4gICAgICAgICAgICBzaG91bGRFeGlzdDogc2hvdWxkRXhpc3QodGhpcywgZnVuY05hbWUsIGFyZ05hbWUpXG4gICAgICAgIH07XG4gICAgfVxufSk7IH07XG5leHBvcnQgdmFyIGNyZWF0ZUFycmF5ID0gZnVuY3Rpb24gKHYsIGZpbGxTeW1ib2wpIHtcbiAgICBpZiAodHlwZW9mIGZpbGxTeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBcnJheSh2KS5maWxsKGZhbHNlKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gZmlsbFN5bWJvbChpKTsgfSk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQXJyYXkodikuZmlsbChmaWxsU3ltYm9sICE9PSBudWxsICYmIGZpbGxTeW1ib2wgIT09IHZvaWQgMCA/IGZpbGxTeW1ib2wgOiAwKTtcbn07XG5leHBvcnQgdmFyIGNyZWF0ZU1hdHJpeCA9IGZ1bmN0aW9uIChfYSwgZmlsbFN5bWJvbCkge1xuICAgIHZhciBoID0gX2EuaCwgdyA9IF9hLnc7XG4gICAgaWYgKHR5cGVvZiBmaWxsU3ltYm9sID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVBcnJheShoKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgeSkgeyByZXR1cm4gY3JlYXRlQXJyYXkodywgZnVuY3Rpb24gKHgpIHsgcmV0dXJuIGZpbGxTeW1ib2woeCwgeSk7IH0pOyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUFycmF5KGgpXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gY3JlYXRlQXJyYXkodywgZmlsbFN5bWJvbCk7IH0pO1xufTtcbmV4cG9ydCB2YXIgZ2F1c3NpYW5FbGltaW5hdGlvbiA9IGZ1bmN0aW9uIChtYXRyaXgpIHtcbiAgICB2YXIgbiA9IG1hdHJpeC5sZW5ndGg7XG4gICAgdmFyIG1hdHJpeENsb25lID0gY3JlYXRlTWF0cml4KG5ldyBEUG9pbnQobiArIDEsIG4pKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4gKyAxOyBqKyspIHtcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtpXVtqXSA9PT0gMCA/IGdhdXNzaWFuRWxpbWluYXRpb24uTUlOIDogbWF0cml4W2ldW2pdO1xuICAgICAgICAgICAgbWF0cml4Q2xvbmVbaV1bal0gPSBtYXRyaXhbaV1bal07XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuICsgMTsgaSsrKSB7XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtrXVtpXSAvPSBtYXRyaXhba11ba107XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgSyA9IG1hdHJpeENsb25lW2ldW2tdIC8gbWF0cml4Q2xvbmVba11ba107XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG4gKyAxOyBqKyspIHtcbiAgICAgICAgICAgICAgICBtYXRyaXhDbG9uZVtpXVtqXSAtPSBtYXRyaXhDbG9uZVtrXVtqXSAqIEs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbiArIDE7IGorKykge1xuICAgICAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeENsb25lW2ldW2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGsgPSBuIC0gMTsgayA+IC0xOyBrLS0pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IG47IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgICBtYXRyaXhDbG9uZVtrXVtpXSAvPSBtYXRyaXhba11ba107XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgaSA9IGsgLSAxOyBpID4gLTE7IGktLSkge1xuICAgICAgICAgICAgdmFyIEsgPSBtYXRyaXhDbG9uZVtpXVtrXSAvIG1hdHJpeENsb25lW2tdW2tdO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IG47IGogPiAtMTsgai0tKSB7XG4gICAgICAgICAgICAgICAgbWF0cml4Q2xvbmVbaV1bal0gLT0gbWF0cml4Q2xvbmVba11bal0gKiBLO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBhbnN3ZXIgPSBjcmVhdGVBcnJheShuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhbnN3ZXJbaV0gPSBtYXRyaXhDbG9uZVtpXVtuXTtcbiAgICB9XG4gICAgcmV0dXJuIGFuc3dlcjtcbn07XG5nYXVzc2lhbkVsaW1pbmF0aW9uLk1JTiA9IDFlLTEwO1xuZXhwb3J0IHZhciBjcmVhdGVDYW52YXMgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgIHZhciBfYTtcbiAgICB2YXIgdyA9IDA7XG4gICAgdmFyIGggPSAwO1xuICAgIHZhciBvZmZzY3JlZW4gPSBmYWxzZTtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICB2YXIgeCA9IGEueCwgeSA9IGEueTtcbiAgICAgICAgdyA9IHg7XG4gICAgICAgIGggPSB5O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdyA9IGE7XG4gICAgICAgIGggPSBhO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGIgPT09ICdib29sZWFuJykge1xuICAgICAgICBvZmZzY3JlZW4gPSBiO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgYiA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgaCA9IGI7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIG9mZnNjcmVlbiA9IGM7XG4gICAgfVxuICAgIHZhciBjYW52YXMgPSBvZmZzY3JlZW4gPyBuZXcgT2Zmc2NyZWVuQ2FudmFzKHcsIGgpIDogKChfYSA9IGNyZWF0ZUNhbnZhcy5kb2N1bWVudCkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGlmICghb2Zmc2NyZWVuKSB7XG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHc7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoO1xuICAgIH1cbiAgICByZXR1cm4gW2NhbnZhcywgY2FudmFzLmdldENvbnRleHQoJzJkJyldO1xufTtcbnZhciBmID0gZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGEubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBiLm1hcChmdW5jdGlvbiAoZCkgeyByZXR1cm4gW10uY29uY2F0KGMsIGQpOyB9KTsgfSkpLCBmYWxzZSkpOyB9O1xuZXhwb3J0IHZhciBjYXJ0ZXNpYW5Qcm9kdWN0ID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICB2YXIgYyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGNbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIHJldHVybiBiID8gY2FydGVzaWFuUHJvZHVjdC5hcHBseSh2b2lkIDAsIF9fc3ByZWFkQXJyYXkoW2YoYSwgYildLCBfX3JlYWQoYyksIGZhbHNlKSkgOiBhO1xufTtcbmV4cG9ydCB2YXIgZ2V0Q29tYmluYXRpb25zID0gZnVuY3Rpb24gKGFycikge1xuICAgIGlmIChhcnIubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBhcnJbMF07XG4gICAgfVxuICAgIHZhciBhbnMgPSBbXTtcbiAgICB2YXIgb3RoZXJDYXNlcyA9IGdldENvbWJpbmF0aW9ucyhhcnIuc2xpY2UoMSkpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3RoZXJDYXNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGFyclswXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgYW5zLnB1c2goX19zcHJlYWRBcnJheShbYXJyWzBdW2pdXSwgX19yZWFkKG90aGVyQ2FzZXNbaV0pLCBmYWxzZSkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhbnM7XG59O1xuZXhwb3J0IHZhciBkaXYgPSBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gTWF0aC5mbG9vcihhIC8gYik7IH07XG4iLCJpbXBvcnQgeyBERUdSRUVfVE9fUEksIERPVUJMRV9QSV9JTl9ERUdSRUUsIFBJX0lOX0RFR1JFRSwgUElfVE9fREVHUkVFIH0gZnJvbSAnLi9EUG9pbnQnO1xudmFyIGRlbHRhID0gMC4wMDE7XG52YXIgRE51bWJlcnMgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEROdW1iZXJzKCkge1xuICAgIH1cbiAgICBETnVtYmVycy5saWtlID0gZnVuY3Rpb24gKHYsIHMsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gZGVsdGE7IH1cbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHYgLSBzKSA8IGQ7XG4gICAgfTtcbiAgICBETnVtYmVycy5saWtlWmVybyA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKHYsIDApO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZTJQSSA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHJldHVybiBETnVtYmVycy5saWtlKEROdW1iZXJzLnJhZDJEZWcodiksIERPVUJMRV9QSV9JTl9ERUdSRUUpO1xuICAgIH07XG4gICAgRE51bWJlcnMubGlrZVBJID0gZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UoRE51bWJlcnMucmFkMkRlZyh2KSwgUElfSU5fREVHUkVFKTtcbiAgICB9O1xuICAgIEROdW1iZXJzLnJhZDJEZWcgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdiAqIERFR1JFRV9UT19QSTtcbiAgICB9O1xuICAgIEROdW1iZXJzLmRlZzJSYWQgPSBmdW5jdGlvbiAodikge1xuICAgICAgICByZXR1cm4gdiAqIFBJX1RPX0RFR1JFRTtcbiAgICB9O1xuICAgIHJldHVybiBETnVtYmVycztcbn0oKSk7XG5leHBvcnQgeyBETnVtYmVycyB9O1xuIiwiaW1wb3J0IHsgRFBvaW50IH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgY2hlY2tGdW5jdGlvbiB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgRE51bWJlcnMgfSBmcm9tICcuL0ROdW1iZXJzJztcbnZhciBETGluZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRExpbmUoYSwgYiwgYywgYmVnaW4sIGVuZCkge1xuICAgICAgICBpZiAoYmVnaW4gPT09IHZvaWQgMCkgeyBiZWdpbiA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKGVuZCA9PT0gdm9pZCAwKSB7IGVuZCA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgdGhpcy5hID0gYTtcbiAgICAgICAgdGhpcy5iID0gYjtcbiAgICAgICAgdGhpcy5jID0gYztcbiAgICAgICAgdGhpcy5iZWdpbiA9IGJlZ2luO1xuICAgICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICB9XG4gICAgRExpbmUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERMaW5lKHRoaXMuYSwgdGhpcy5iLCB0aGlzLmMsIHRoaXMuYmVnaW4uY2xvbmUoKSwgdGhpcy5lbmQuY2xvbmUoKSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBlcnBlbmRpY3VsYXIgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kUGVycGVuZGljdWxhcicpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUoLXRoaXMuYiwgdGhpcy5hLCB0aGlzLmIgKiBwLnggLSB0aGlzLmEgKiBwLnkpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnBlcnBlbmRpY3VsYXJEaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ3BlcnBlbmRpY3VsYXJEaXN0YW5jZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocCk7XG4gICAgICAgIHZhciBwZXJwZW5kaWN1bGFyTGluZSA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIocCk7XG4gICAgICAgIHZhciB0YXJnZXRQb2ludCA9IHBlcnBlbmRpY3VsYXJMaW5lLmZpbmRQb2ludCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRhcmdldFBvaW50LmRpc3RhbmNlKHApO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChsLCBkLCBpbmNsdWRlT25seSkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIGlmIChpbmNsdWRlT25seSA9PT0gdm9pZCAwKSB7IGluY2x1ZGVPbmx5ID0gZmFsc2U7IH1cbiAgICAgICAgdmFyIHAgPSB0aGlzLmZpbmRQb2ludChsKTtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlT25seSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluc2lkZVJhbmdlKHAsIGQpICYmIGwuaW5zaWRlUmFuZ2UocCwgZCkgPyBwIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmluUmFuZ2UocCwgZCkgJiYgbC5pblJhbmdlKHAsIGQpID8gcCA6IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW50ZXJzZWN0aW9uV2l0aENpcmNsZSA9IGZ1bmN0aW9uIChjaXJjbGUpIHtcbiAgICAgICAgdmFyIGNlbnRlciA9IGNpcmNsZS5jZW50ZXIsIHIgPSBjaXJjbGUucjtcbiAgICAgICAgdmFyIHBlciA9IHRoaXMuZmluZFBlcnBlbmRpY3VsYXIoY2VudGVyKTtcbiAgICAgICAgdmFyIHQgPSB0aGlzLmZpbmRQb2ludChwZXIpO1xuICAgICAgICB2YXIgZGlzdGFuY2UgPSB0LmRpc3RhbmNlKGNlbnRlcik7XG4gICAgICAgIGlmICh0aGlzLmJlZ2luLmVxdWFsKGNlbnRlcikpIHtcbiAgICAgICAgICAgIGRpc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5lbmQuZXF1YWwoY2VudGVyKSkge1xuICAgICAgICAgICAgZGlzdGFuY2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkaXN0YW5jZSA8IHIpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMsIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgICAgICBpZiAodGhpcy5pc1BhcmFsbGVsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN0ID0gY2VudGVyLmRpc3RhbmNlKHQpO1xuICAgICAgICAgICAgICAgIHZhciBtb3ZlID0gTWF0aC5zcXJ0KHIgKiByIC0gY3QgKiBjdCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgICAgICAgICAgdC54ID0gdGhpcy5iZWdpbi54O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMSA9IHQuY2xvbmUoKS5tb3ZlKDAsIC1tb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHIyXzEgPSB0LmNsb25lKCkubW92ZSgwLCBtb3ZlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8xLCByMl8xXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgICAgICAgICAgdC55ID0gdGhpcy5iZWdpbi55O1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjFfMiA9IHQuY2xvbmUoKS5tb3ZlKG1vdmUsIDApO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcjJfMiA9IHQuY2xvbmUoKS5tb3ZlKC1tb3ZlLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtyMV8yLCByMl8yXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5iZWdpbi5saWtlKGNlbnRlcikpIHtcbiAgICAgICAgICAgICAgICB2YXIgcCA9IHRoaXMuYmVnaW4uY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuZW5kLmxpa2UoY2VudGVyKSkge1xuICAgICAgICAgICAgICAgIHZhciBwID0gdGhpcy5lbmQuY2xvbmUoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW3RoaXMubW92ZVBvaW50KHAsIHIpLCB0aGlzLm1vdmVQb2ludChwLCAtcildO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHMgPSBhICogYSArIGIgKiBiO1xuICAgICAgICAgICAgdmFyIGQgPSByICogciAtIGMgKiBjIC8gcztcbiAgICAgICAgICAgIHZhciBtdWx0ID0gTWF0aC5zcXJ0KGQgLyBzKTtcbiAgICAgICAgICAgIHZhciByMSA9IHQuY2xvbmUoKS5tb3ZlKGIgKiBtdWx0LCAtYSAqIG11bHQpO1xuICAgICAgICAgICAgdmFyIHIyID0gdC5jbG9uZSgpLm1vdmUoLWIgKiBtdWx0LCBhICogbXVsdCk7XG4gICAgICAgICAgICByZXR1cm4gW3IxLCByMl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpc3RhbmNlID09PSByKSB7XG4gICAgICAgICAgICByZXR1cm4gdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS5pblJhbmdlID0gZnVuY3Rpb24gKHAsIGQpIHtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMDsgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBtaW5YID0gX2EubWluWCwgbWluWSA9IF9hLm1pblksIG1heFggPSBfYS5tYXhYLCBtYXhZID0gX2EubWF4WTtcbiAgICAgICAgdmFyIHggPSBwLngsIHkgPSBwLnk7XG4gICAgICAgIHZhciBpc0luWCA9IHggPj0gbWluWCAtIGQgJiYgeCA8PSBtYXhYICsgZDtcbiAgICAgICAgdmFyIGlzSW5ZID0geSA+PSBtaW5ZIC0gZCAmJiB5IDw9IG1heFkgKyBkO1xuICAgICAgICByZXR1cm4gaXNJblggJiYgaXNJblk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuaW5zaWRlUmFuZ2UgPSBmdW5jdGlvbiAocCwgZCkge1xuICAgICAgICBpZiAoZCA9PT0gdm9pZCAwKSB7IGQgPSAwOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGJlZ2luID0gX2EuYmVnaW4sIGVuZCA9IF9hLmVuZDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5SYW5nZShwLCBkKSAmJiAhYmVnaW4ubGlrZShwLCAwLjAwMDAxKSAmJiAhZW5kLmxpa2UocCwgMC4wMDAwMSk7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYmVnaW5cbiAgICAgICAgICAgICAgICAuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHRoaXMuZW5kKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuZW5kXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubW92ZSh0aGlzLmJlZ2luXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAubWludXMoKSlcbiAgICAgICAgICAgICAgICAuYWJzKClcbiAgICAgICAgICAgICAgICAubWludXMoKVxuICAgICAgICAgICAgICAgIC5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtaW5YXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy5iZWdpbi54LCB0aGlzLmVuZC54KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIE1hdGgubWluKHRoaXMuYmVnaW4ueSwgdGhpcy5lbmQueSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0aGlzLmJlZ2luLngsIHRoaXMuZW5kLngpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJtYXhZXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy5iZWdpbi55LCB0aGlzLmVuZC55KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIERMaW5lLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLmEsIFwiLCBcIikuY29uY2F0KHRoaXMuYiwgXCIsIFwiKS5jb25jYXQodGhpcy5jLCBcIilcIik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5hLCB0aGlzLmIsIHRoaXMuY107XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KC10aGlzLmIgLyB0aGlzLmEgKiBwLnkgLSB0aGlzLmMgLyB0aGlzLmEsIHAueSk7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUueSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxZKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCgtdGhpcy5jIC8gdGhpcy5hLCBwLnkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzUGFyYWxsZWxYKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChwLngsIC10aGlzLmMgLyB0aGlzLmIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHAueCwgLXRoaXMuYSAvIHRoaXMuYiAqIHAueCAtIHRoaXMuYyAvIHRoaXMuYik7XG4gICAgfTtcbiAgICBETGluZS5wcm90b3R5cGUuZmluZFBvaW50ID0gZnVuY3Rpb24gKGwpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFggJiYgbC5pc1BhcmFsbGVsWSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLWwuYyAvIGwuYSwgLXRoaXMuYyAvIHRoaXMuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkgJiYgbC5pc1BhcmFsbGVsWCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoLXRoaXMuYyAvIHRoaXMuYSwgLWwuYyAvIGwuYik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLXRoaXMuYyAvIHRoaXMuYTtcbiAgICAgICAgICAgIHJldHVybiBsLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLXRoaXMuYyAvIHRoaXMuYjtcbiAgICAgICAgICAgIHJldHVybiBsLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gLWwuYyAvIGwuYTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnkobmV3IERQb2ludCh4KSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGwuaXNQYXJhbGxlbFgpIHtcbiAgICAgICAgICAgIHZhciB5ID0gLWwuYyAvIGwuYjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLngobmV3IERQb2ludCgwLCB5KSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IHRoaXMueShuZXcgRFBvaW50KChsLmMgLyBsLmIgLSB0aGlzLmMgLyB0aGlzLmIpIC8gKHRoaXMuYSAvIHRoaXMuYiAtIGwuYSAvIGwuYikpKTtcbiAgICAgICAgaWYgKCFpc0Zpbml0ZShyZXMueCkgJiYgIWlzRmluaXRlKHJlcy55KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNQYXJhbGxlbFggfHwgdGhpcy5pc1BhcmFsbGVsWTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShETGluZS5wcm90b3R5cGUsIFwiaXNQYXJhbGxlbFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyh0aGlzLmIpIDwgMC4wMDE7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRExpbmUucHJvdG90eXBlLCBcImlzUGFyYWxsZWxYXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy5hKSA8IDAuMDAxO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERMaW5lLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpcy5iZWdpbiwgdGhpcy5lbmRdO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRExpbmUucHJvdG90eXBlLmdldEZpID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdnZXRGaScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy5iZWdpbicpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5iZWdpbilcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzLmVuZCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcy5lbmQpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmVuZC5jbG9uZSgpLm1vdmUodGhpcy5iZWdpbi5jbG9uZSgpLm1pbnVzKCkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgIHZhciB2ID0gTWF0aC5hdGFuMih5LCB4KSAtIE1hdGguUEk7XG4gICAgICAgIGlmICh2ID4gMCkge1xuICAgICAgICAgICAgdiA9IE1hdGguUEkgLSB2O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoTWF0aC5QSSAtIHYpICUgKE1hdGguUEkgKiAyKTtcbiAgICB9O1xuICAgIERMaW5lLnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5iZWdpbiwgeDEgPSBfYi54LCB5MSA9IF9iLnksIF9jID0gX2EuZW5kLCB4MiA9IF9jLngsIHkyID0gX2MueTtcbiAgICAgICAgcmV0dXJuIFwiTElORVNUUklORyAoXCIuY29uY2F0KHgxLCBcIiBcIikuY29uY2F0KHkxLCBcIiwgXCIpLmNvbmNhdCh4MiwgXCIgXCIpLmNvbmNhdCh5MiwgXCIpXCIpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLm1vdmVQb2ludCA9IGZ1bmN0aW9uIChpLCBrKSB7XG4gICAgICAgIHZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShpKTtcbiAgICAgICAgdmFyIHAgPSBpc0FycmF5ID8gaSA6IFtpXTtcbiAgICAgICAgdmFyIGQgPSAoaXNBcnJheSA/IGsgOiBba10pO1xuICAgICAgICB2YXIgZmkgPSB0aGlzLmZpbmRGaShuZXcgRExpbmUoMSwgMCwgMCkpO1xuICAgICAgICB2YXIgdGQgPSB0aGlzLngobmV3IERQb2ludCgxLCAxKSkuZGlzdGFuY2UodGhpcy54KG5ldyBEUG9pbnQoMiwgMikpKSAvIDI7XG4gICAgICAgIHZhciBzaW5Db3MgPSBuZXcgRFBvaW50KE1hdGguc2luKGZpKSwgTWF0aC5jb3MoZmkpKTtcbiAgICAgICAgdmFyIGR0ID0gc2luQ29zLmNsb25lKCkuc2NhbGUodGQpO1xuICAgICAgICB2YXIgcDFUID0gcFswXS5jbG9uZSgpLm1vdmUoZHQuY2xvbmUoKS5taW51cygpKTtcbiAgICAgICAgdmFyIHAyVCA9IHBbMF0uY2xvbmUoKS5tb3ZlKGR0KTtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBpZiAoRE51bWJlcnMubGlrZSh0aGlzLnkocDFUKS55LCBwMVQueSkgfHwgRE51bWJlcnMubGlrZSh0aGlzLnkocDJUKS55LCBwMlQueSkpIHtcbiAgICAgICAgICAgIHJlcyA9IHAubWFwKGZ1bmN0aW9uICh0LCBpbmRleCkgeyByZXR1cm4gdC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLm1vdmUoc2luQ29zLmNsb25lKCkuc2NhbGUoZFtpbmRleF0pKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXMgPSBwLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHsgcmV0dXJuIHQuY2xvbmUoKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHNpbkNvcy5jbG9uZSgpLnNjYWxlKGRbaW5kZXhdKVxuICAgICAgICAgICAgICAgIC5zZXRYKGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueDtcbiAgICAgICAgICAgICAgICByZXR1cm4gLXg7XG4gICAgICAgICAgICB9KSk7IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpc0FycmF5ID8gcmVzIDogcmVzWzBdO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLmZpbmRGaSA9IGZ1bmN0aW9uIChfYSwgZGVsdGEpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYjtcbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAxLjAwMDE7IH1cbiAgICAgICAgdmFyIF9iID0gdGhpcywgcSA9IF9iLmEsIHcgPSBfYi5iO1xuICAgICAgICB2YXIgdmFsID0gKHEgKiBhICsgdyAqIGIpIC8gKE1hdGguc3FydChxICogcSArIHcgKiB3KSAqIE1hdGguc3FydChhICogYSArIGIgKiBiKSk7XG4gICAgICAgIGlmICh2YWwgPiAxICYmIHZhbCA8IGRlbHRhKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHZhbCA8IC0xICYmIHZhbCA+IC1kZWx0YSkge1xuICAgICAgICAgICAgdmFsID0gLTE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGguYWNvcyh2YWwpO1xuICAgIH07XG4gICAgRExpbmUucHJvdG90eXBlLnZlY3RvclByb2R1Y3QgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGEgPSBfYS5hLCBiID0gX2EuYiwgYyA9IF9hLmM7XG4gICAgICAgIHZhciBfYiA9IHRoaXMsIHEgPSBfYi5hLCB3ID0gX2IuYiwgZSA9IF9iLmM7XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUodyAqIGMgLSBlICogYiwgZSAqIGEgLSBxICogYywgcSAqIGIgLSB3ICogYSk7XG4gICAgfTtcbiAgICByZXR1cm4gRExpbmU7XG59KCkpO1xuZXhwb3J0IHsgRExpbmUgfTtcbiIsInZhciBMb29wRnVuY3Rpb25zO1xuKGZ1bmN0aW9uIChMb29wRnVuY3Rpb25zKSB7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZ2V0VGlsZUZyb21Db29yZHNcIl0gPSAwXSA9IFwiZ2V0VGlsZUZyb21Db29yZHNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJnZXRDb29yZHNGcm9tVGlsZVwiXSA9IDFdID0gXCJnZXRDb29yZHNGcm9tVGlsZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImhlaWdodFwiXSA9IDJdID0gXCJoZWlnaHRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRYXCJdID0gM10gPSBcInNldFhcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRZXCJdID0gNF0gPSBcInNldFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRaXCJdID0gNV0gPSBcInNldFpcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGVcIl0gPSA2XSA9IFwicm90YXRlXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicm90YXRlM2RYXCJdID0gN10gPSBcInJvdGF0ZTNkWFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdGF0ZTNkWVwiXSA9IDhdID0gXCJyb3RhdGUzZFlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJyb3RhdGUzZFpcIl0gPSA5XSA9IFwicm90YXRlM2RaXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibW92ZVwiXSA9IDEwXSA9IFwibW92ZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJvdW5kXCJdID0gMTFdID0gXCJyb3VuZFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImNlaWxcIl0gPSAxMl0gPSBcImNlaWxcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbG9vclwiXSA9IDEzXSA9IFwiZmxvb3JcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ0b0ZpeGVkXCJdID0gMTRdID0gXCJ0b0ZpeGVkXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiYWJzXCJdID0gMTVdID0gXCJhYnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzY2FsZVwiXSA9IDE2XSA9IFwic2NhbGVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkaXZpZGVcIl0gPSAxN10gPSBcImRpdmlkZVwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcImRlZ3JlZVRvUmFkaWFuc1wiXSA9IDE4XSA9IFwiZGVncmVlVG9SYWRpYW5zXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wicmFkaWFuc1RvRGVncmVlc1wiXSA9IDE5XSA9IFwicmFkaWFuc1RvRGVncmVlc1wiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInJhZGlhbnNUb01ldGVyc1wiXSA9IDIwXSA9IFwicmFkaWFuc1RvTWV0ZXJzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wibWV0ZXJzVG9SYWRpYW5zXCJdID0gMjFdID0gXCJtZXRlcnNUb1JhZGlhbnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoaXBQb2ludFwiXSA9IDIyXSA9IFwiaGlwUG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJ4UG9pbnRcIl0gPSAyM10gPSBcInhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInlQb2ludFwiXSA9IDI0XSA9IFwieVBvaW50XCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wid1BvaW50XCJdID0gMjVdID0gXCJ3UG9pbnRcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJoUG9pbnRcIl0gPSAyNl0gPSBcImhQb2ludFwiO1xuICAgIExvb3BGdW5jdGlvbnNbTG9vcEZ1bmN0aW9uc1tcInNldElmTGVzc1RoYW5cIl0gPSAyN10gPSBcInNldElmTGVzc1RoYW5cIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtaW51c1wiXSA9IDI4XSA9IFwibWludXNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJkZWdyZWVUb01ldGVyc1wiXSA9IDI5XSA9IFwiZGVncmVlVG9NZXRlcnNcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtZXRlcnNUb0RlZ3JlZVwiXSA9IDMwXSA9IFwibWV0ZXJzVG9EZWdyZWVcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJmbGlwVmVydGljYWxseVwiXSA9IDMxXSA9IFwiZmxpcFZlcnRpY2FsbHlcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJzZXRQcm9wZXJ0aWVzXCJdID0gMzJdID0gXCJzZXRQcm9wZXJ0aWVzXCI7XG4gICAgTG9vcEZ1bmN0aW9uc1tMb29wRnVuY3Rpb25zW1wiZGl2XCJdID0gMzNdID0gXCJkaXZcIjtcbiAgICBMb29wRnVuY3Rpb25zW0xvb3BGdW5jdGlvbnNbXCJtb2RcIl0gPSAzNF0gPSBcIm1vZFwiO1xufSkoTG9vcEZ1bmN0aW9ucyB8fCAoTG9vcEZ1bmN0aW9ucyA9IHt9KSk7XG52YXIgZGVjb2RlUG9vbFJlY29yZCA9IGZ1bmN0aW9uIChhLCBfYSkge1xuICAgIHZhciBmdW5jdGlvbk5hbWUgPSBfYS5mdW5jdGlvbk5hbWUsIHBvaW50QXJnID0gX2EucG9pbnRBcmcsIG51bWJlclBvaW50QXJnID0gX2EubnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyA9IF9hLm51bWJlckFyZywgc2V0dGVyQXJnID0gX2Euc2V0dGVyQXJnLCBzZXR0ZXJBcmdCeU9iamVjdCA9IF9hLnNldHRlckFyZ0J5T2JqZWN0O1xuICAgIHZhciByZXMgPSBhO1xuICAgIHN3aXRjaCAoZnVuY3Rpb25OYW1lKSB7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5nZXRUaWxlRnJvbUNvb3JkczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZ2V0VGlsZUZyb21Db29yZHMobnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmdldENvb3Jkc0Zyb21UaWxlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhlaWdodDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGVpZ2h0KG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFg6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WChzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WChmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WShzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WShmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNldFo6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIHR5cGVvZiBzZXR0ZXJBcmcgPT09ICdudW1iZXInID8gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuc2V0WihzZXR0ZXJBcmcpIDogYShrLCBpbmRleCkuc2V0WihmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnKHAsIGluZGV4KTsgfSk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RYKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RZKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucm90YXRlM2RaKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLm1vdmU6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vdmUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnJvdW5kOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5yb3VuZCgpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5jZWlsOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5jZWlsKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmZsb29yOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5mbG9vcigpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy50b0ZpeGVkOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC50b0ZpeGVkKG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmFiczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuYWJzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnNjYWxlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zY2FsZShudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGl2aWRlOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kaXZpZGUobnVtYmVyUG9pbnRBcmcsIG51bWJlckFyZyk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRpdjpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuZGl2KG51bWJlclBvaW50QXJnLCBudW1iZXJBcmcpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tb2Q6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1vZChudW1iZXJQb2ludEFyZywgbnVtYmVyQXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb1JhZGlhbnMoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMucmFkaWFuc1RvRGVncmVlczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAucmFkaWFuc1RvRGVncmVlcygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnJhZGlhbnNUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1ldGVyc1RvUmFkaWFucygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5oaXBQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaGlwUG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLnhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAueFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy55UG9pbnQ6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnlQb2ludDsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMud1BvaW50OlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC53UG9pbnQ7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmhQb2ludDpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAuaFBvaW50OyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5zZXRJZkxlc3NUaGFuKHBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMubWludXM6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLm1pbnVzKCk7IH07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBMb29wRnVuY3Rpb25zLmRlZ3JlZVRvTWV0ZXJzOlxuICAgICAgICAgICAgcmVzID0gZnVuY3Rpb24gKGssIGluZGV4KSB7IHJldHVybiBhKGssIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kZWdyZWVUb01ldGVycygpOyB9O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb0RlZ3JlZTpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gYShrLCBpbmRleClcbiAgICAgICAgICAgICAgICAubWV0ZXJzVG9EZWdyZWUoKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuZmxpcFZlcnRpY2FsbHk6XG4gICAgICAgICAgICByZXMgPSBmdW5jdGlvbiAoaywgaW5kZXgpIHsgcmV0dXJuIGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLmZsaXBWZXJ0aWNhbGx5KG51bWJlclBvaW50QXJnKTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllczpcbiAgICAgICAgICAgIHJlcyA9IGZ1bmN0aW9uIChrLCBpbmRleCkgeyByZXR1cm4gdHlwZW9mIHNldHRlckFyZ0J5T2JqZWN0ID09PSAnb2JqZWN0JyA/IGEoaywgaW5kZXgpXG4gICAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoc2V0dGVyQXJnQnlPYmplY3QpIDogYShrLCBpbmRleCkuc2V0UHJvcGVydGllcyhmdW5jdGlvbiAocCkgeyByZXR1cm4gc2V0dGVyQXJnQnlPYmplY3QocCwgaW5kZXgpOyB9KTsgfTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufTtcbnZhciBEUG9seWdvbkxvb3AgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIERQb2x5Z29uTG9vcChwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucG9vbCA9IFtdO1xuICAgIH1cbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldExvb3BGdW5jdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9vbC5yZWR1Y2UoZGVjb2RlUG9vbFJlY29yZCwgZnVuY3Rpb24gKGspIHsgcmV0dXJuIGs7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5tYXAodGhpcy5nZXRMb29wRnVuY3Rpb24oKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmdldFRpbGVGcm9tQ29vcmRzLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6b29tXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0Q29vcmRzRnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZ2V0Q29vcmRzRnJvbVRpbGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IHpvb21cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5oZWlnaHQgPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaGVpZ2h0LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB6XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0WCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRYLFxuICAgICAgICAgICAgc2V0dGVyQXJnOiB4XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0UHJvcGVydGllcyA9IGZ1bmN0aW9uIChzZXR0ZXJBcmdCeU9iamVjdCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0UHJvcGVydGllcyxcbiAgICAgICAgICAgIHNldHRlckFyZ0J5T2JqZWN0OiBzZXR0ZXJBcmdCeU9iamVjdFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WSxcbiAgICAgICAgICAgIHNldHRlckFyZzogeVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuc2V0WixcbiAgICAgICAgICAgIHNldHRlckFyZzogelxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUsXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMucm90YXRlM2RYLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBhXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm90YXRlM2RZID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJvdGF0ZTNkWSxcbiAgICAgICAgICAgIG51bWJlckFyZzogYVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnJvdGF0ZTNkWiA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3RhdGUzZFosXG4gICAgICAgICAgICBudW1iZXJBcmc6IGFcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubW92ZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucm91bmQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yb3VuZFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5jZWlsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZmxvb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbG9vclxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy50b0ZpeGVkLFxuICAgICAgICAgICAgbnVtYmVyQXJnOiBuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuYWJzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2NhbGUgPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zY2FsZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdmlkZSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmRpdixcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gKHgsIHkpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1vZCxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiB4LFxuICAgICAgICAgICAgbnVtYmVyQXJnOiB5XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuZGVncmVlVG9SYWRpYW5zXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUucmFkaWFuc1RvRGVncmVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLnJhZGlhbnNUb0RlZ3JlZXNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5yYWRpYW5zVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5yYWRpYW5zVG9NZXRlcnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5tZXRlcnNUb1JhZGlhbnNcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5nZXRIaXBQb2ludCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLmhpcFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0WVBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMueVBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0V1BvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMud1BvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZ2V0SFBvaW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMuaFBvaW50XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuc2V0SWZMZXNzVGhhbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5zZXRJZkxlc3NUaGFuLFxuICAgICAgICAgICAgcG9pbnRBcmc6IHBcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5wb29sLnB1c2goe1xuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBMb29wRnVuY3Rpb25zLm1pbnVzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uTG9vcC5wcm90b3R5cGUuZGVncmVlVG9NZXRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5kZWdyZWVUb01ldGVyc1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbkxvb3AucHJvdG90eXBlLm1ldGVyc1RvRGVncmVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBvb2wucHVzaCh7XG4gICAgICAgICAgICBmdW5jdGlvbk5hbWU6IExvb3BGdW5jdGlvbnMubWV0ZXJzVG9EZWdyZWVcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb25Mb29wLnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHRoaXMucG9vbC5wdXNoKHtcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogTG9vcEZ1bmN0aW9ucy5mbGlwVmVydGljYWxseSxcbiAgICAgICAgICAgIG51bWJlclBvaW50QXJnOiBzaXplXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIHJldHVybiBEUG9seWdvbkxvb3A7XG59KCkpO1xuZXhwb3J0IHsgRFBvbHlnb25Mb29wIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbihvKSB7XG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWRBcnJheSA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWRBcnJheSkgfHwgZnVuY3Rpb24gKHRvLCBmcm9tLCBwYWNrKSB7XG4gICAgaWYgKHBhY2sgfHwgYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgaSA9IDAsIGwgPSBmcm9tLmxlbmd0aCwgYXI7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcbiAgICAgICAgICAgIGFyW2ldID0gZnJvbVtpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdG8uY29uY2F0KGFyIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20pKTtcbn07XG5pbXBvcnQgeyBEUG9pbnQgfSBmcm9tICcuL0RQb2ludCc7XG5pbXBvcnQgeyBETGluZSB9IGZyb20gJy4vRExpbmUnO1xuaW1wb3J0IHsgRENpcmNsZSB9IGZyb20gJy4vRENpcmNsZSc7XG5pbXBvcnQgeyBETnVtYmVycyB9IGZyb20gJy4vRE51bWJlcnMnO1xuaW1wb3J0IHsgaW8gYXMganN0c0lvLCBvcGVyYXRpb24gfSBmcm9tICdqc3RzJztcbmltcG9ydCB7IERQb2x5Z29uTG9vcCB9IGZyb20gJy4vRFBvbHlnb25Mb29wJztcbmltcG9ydCB7IERHZW8sIGlzRGVmQW5kTm90TnVsbCB9IGZyb20gJy4vdXRpbHMnO1xudmFyIF9hID0gb3BlcmF0aW9uLmJ1ZmZlci5CdWZmZXJQYXJhbWV0ZXJzLCBDQVBfUk9VTkQgPSBfYS5DQVBfUk9VTkQsIENBUF9GTEFUID0gX2EuQ0FQX0ZMQVQsIENBUF9TUVVBUkUgPSBfYS5DQVBfU1FVQVJFO1xuZXhwb3J0IHZhciBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gPSAzO1xudmFyIEFQUFJPWElNQVRJT05fVkFMVUUgPSAwLjE7XG52YXIgTUFYX0NPTlZFWF9JVEVSQVRJT05TID0gMTAwO1xudmFyIENMT1NFX1RPX0lOVEVSU0VDVElPTl9ESVNUQU5DRSA9IDAuMDAxO1xudmFyIGNvbnRhaW5DYWxjdWxhdG9yID0gZnVuY3Rpb24gKHBvbHksIHApIHtcbiAgICB2YXIgZV8xLCBfYSwgZV8yLCBfYjtcbiAgICB2YXIgaGFzU2FtZVBvaW50ID0gcG9seS5wb2ludHMuc29tZShmdW5jdGlvbiAocG9pbnQpIHsgcmV0dXJuIHBvaW50LmVxdWFsKHApOyB9KTtcbiAgICBpZiAoaGFzU2FtZVBvaW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBfYyA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2QgPSBfYy5uZXh0KCk7ICFfZC5kb25lOyBfZCA9IF9jLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9lID0gX19yZWFkKF9kLnZhbHVlLCAzKSwgcG9seWdvbkxpbmUgPSBfZVsyXTtcbiAgICAgICAgICAgIHZhciBvbkJvcmRlciA9IHBvbHlnb25MaW5lLngocCkuZXF1YWwocCkgJiYgcG9seWdvbkxpbmUuaW5SYW5nZShwKTtcbiAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoX2QgJiYgIV9kLmRvbmUgJiYgKF9hID0gX2MucmV0dXJuKSkgX2EuY2FsbChfYyk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICB2YXIgdG90YWxGaSA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2YgPSBfX3ZhbHVlcyhwb2x5Lmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIF9oID0gX19yZWFkKF9nLnZhbHVlLCAyKSwgX2ogPSBfaFswXSwgeCA9IF9qLngsIHkgPSBfai55LCBfayA9IF9oWzFdLCBhID0gX2sueCwgYiA9IF9rLnk7XG4gICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgbGluZTIgPSBuZXcgRExpbmUoYSAtIHAueCwgYiAtIHAueSwgMCk7XG4gICAgICAgICAgICB2YXIgZmlEaWYgPSBsaW5lMS5maW5kRmkobGluZTIpO1xuICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgdG90YWxGaSArPSBmaURpZjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRvdGFsRmkgLT0gZmlEaWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChfZyAmJiAhX2cuZG9uZSAmJiAoX2IgPSBfZi5yZXR1cm4pKSBfYi5jYWxsKF9mKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgfVxuICAgIHZhciBlcHMgPSBNYXRoLlBJIC8gMTAwMDA7XG4gICAgdmFyIHJlc3VsdCA9IGZhbHNlO1xuICAgIHZhciBhYnNUb3RhbEZpID0gTWF0aC5hYnModG90YWxGaSk7XG4gICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKE1hdGguYWJzKDIgKiBNYXRoLlBJIC0gYWJzVG90YWxGaSkgPCBlcHMpIHtcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY29udGFpbnMyIGZhaWxkJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59O1xudmFyIERQb2x5Z29uID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUG9seWdvbihwUG9pbnRzKSB7XG4gICAgICAgIGlmIChwUG9pbnRzID09PSB2b2lkIDApIHsgcFBvaW50cyA9IFtdOyB9XG4gICAgICAgIHRoaXMucFBvaW50cyA9IHBQb2ludHM7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgICAgICB0aGlzLmhvbGVzID0gW107XG4gICAgICAgIHRoaXMuc2VhcmNoU3RvcmUgPSB7fTtcbiAgICB9XG4gICAgRFBvbHlnb24uYXJyYXlPZlRyaWFuZ2xlc1RvVmVydGljZXMgPSBmdW5jdGlvbiAodHJpYW5nbGVzLCBoZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHRyaWFuZ2xlcy5tYXAoZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChpc0RlZkFuZE5vdE51bGwoaGVpZ2h0KSA/IHZcbiAgICAgICAgICAgIC5sb29wKClcbiAgICAgICAgICAgIC5oZWlnaHQoaGVpZ2h0KVxuICAgICAgICAgICAgLnJ1bigpIDogdilcbiAgICAgICAgICAgIC50b0FycmF5T2ZDb29yZHMoKTsgfSlcbiAgICAgICAgICAgIC5mbGF0KDIpO1xuICAgIH07XG4gICAgRFBvbHlnb24ubWluQXJlYVJlY3RhbmdsZVNpemUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChmaXJzdC5kaXN0YW5jZShzZWNvbmQpLCBmaXJzdC5kaXN0YW5jZShsYXN0KSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0Rhc2ggPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgZV8zLCBfYTtcbiAgICAgICAgdmFyIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtwXTtcbiAgICAgICAgdmFyIHRyaWdnZXIgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhwb2x5LnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgcG9pbnQgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodHJpZ2dlcikge1xuICAgICAgICAgICAgICAgICAgICBwLnB1c2gocG9pbnQuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgPSAhdHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5wdXNoKHBvaW50LmNsb25lKCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzNfMSkgeyBlXzMgPSB7IGVycm9yOiBlXzNfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMykgdGhyb3cgZV8zLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIERQb2x5Z29uLm1pbkFyZWFSZWN0YW5nbGVEaXJlY3Rpb24gPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgX2EgPSBwb2x5LmNsb25lKCkub3BlbigpLCBmaXJzdCA9IF9hLmZpcnN0LCBzZWNvbmQgPSBfYS5zZWNvbmQsIGxhc3QgPSBfYS5sYXN0O1xuICAgICAgICBpZiAoIWZpcnN0IHx8ICFzZWNvbmQgfHwgIWxhc3QpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaXJzdC5kaXN0YW5jZShzZWNvbmQpID4gZmlyc3QuZGlzdGFuY2UobGFzdCkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaXJzdC5maW5kTGluZShzZWNvbmQpLmdldEZpKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZpcnN0LmZpbmRMaW5lKGxhc3QpLmdldEZpKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZUZyb21XS1QgPSBmdW5jdGlvbiAod2t0KSB7XG4gICAgICAgIHZhciBkYXRhID0gd2t0LnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKCk7XG4gICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ1BPTFlHT04nKSA9PT0gMCkge1xuICAgICAgICAgICAgdmFyIHJlZ2V4cCA9IC9QT0xZR09OIFxcKFxcKCg/PGRhdGE+KD86KD8hXFwpXFwpJCkuKSo/KVxcKVxcKSQvbWl1O1xuICAgICAgICAgICAgdmFyIHJlZyA9IHJlZ2V4cC5leGVjKGRhdGEpO1xuICAgICAgICAgICAgdmFyIF9hID0gX19yZWFkKHJlZy5ncm91cHMuZGF0YVxuICAgICAgICAgICAgICAgIC5zcGxpdCgnKSwgKCcpXG4gICAgICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gbmV3IERQb2x5Z29uKHAuc3BsaXQoJywgJylcbiAgICAgICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChwYXJlcykgeyByZXR1cm4gRFBvaW50LnBhcnNlKHBhcmVzLnNwbGl0KCcgJykubWFwKE51bWJlcikpOyB9KSk7IH0pKSwgcGF0aCA9IF9hWzBdLCBob2xlcyA9IF9hLnNsaWNlKDEpO1xuICAgICAgICAgICAgaWYgKGhvbGVzICYmIGhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHBhdGguaG9sZXMgPSBob2xlcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignTElORVNUUklORycpID09PSAwKSB7XG4gICAgICAgICAgICB2YXIgcmVnZXhwID0gL0xJTkVTVFJJTkcgXFwoKD88ZGF0YT4oPzooPyFcXCkkKS4pKj8pXFwpJC9taXU7XG4gICAgICAgICAgICB2YXIgcmVnID0gcmVnZXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24ocmVnLmdyb3Vwcy5kYXRhXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsICcpLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gRFBvaW50LnBhcnNlKHQuc3BsaXQoJyAnKS5tYXAoTnVtYmVyKSk7IH0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdQT0lOVCcpID09PSAwKSB7XG4gICAgICAgICAgICByZXMgPSBuZXcgRFBvbHlnb24oW0RQb2ludC5wYXJzZUZyb21XS1QoZGF0YSldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24uY3JlYXRlU3F1YXJlQnlTaXplID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihbRFBvaW50Lnplcm8oKSwgc2l6ZS5jbG9uZSgpLnNldFgoMCksIHNpemUuY2xvbmUoKSwgc2l6ZS5jbG9uZSgpLnNldFkoMCldKS5jbG9zZSgpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb25Mb29wKHRoaXMpO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwb2ludHNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBQb2ludHM7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIHRoaXMucFBvaW50cyA9IHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci54KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLngpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm1heFlcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShmdW5jdGlvbiAoYSwgcikgeyByZXR1cm4gTWF0aC5tYXgoYSwgci55KTsgfSwgLUluZmluaXR5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKGZ1bmN0aW9uIChhLCByKSB7IHJldHVybiBNYXRoLm1pbihhLCByLnkpOyB9LCBJbmZpbml0eSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNlbnRlclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubGVmdFRvcC5tb3ZlKHRoaXMuc2l6ZS5kaXZpZGUoMikpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhZIC0gdGhpcy5taW5ZO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJ3XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tYXhYIC0gdGhpcy5taW5YO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJkWVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZFhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnc7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImV4dGVuZFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1pblkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWF4WCwgbWluWSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludChtYXhYLCBtYXhZKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KG1pblgsIG1heFkpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQobWluWCwgbWluWSlcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJzaXplXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCB3ID0gX2EudywgaCA9IF9hLmg7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh3LCBoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVmdFRvcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgbWluWCA9IF9hLm1pblgsIG1pblkgPSBfYS5taW5ZO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobWluWCwgbWluWSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInJpZ2h0Qm90dG9tXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLCBtYXhYID0gX2EubWF4WCwgbWF4WSA9IF9hLm1heFk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludChtYXhYLCBtYXhZKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGVuZ3RoXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLmxlbmd0aDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZnVsbExlbmd0aFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5vcGVuKCkucGVyaW1ldGVyO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJwZXJpbWV0ZXJcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBlXzQsIF9hO1xuICAgICAgICAgICAgdmFyIHAgPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgICAgIHAgKz0gcDEuZGlzdGFuY2UocDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzRfMSkgeyBlXzQgPSB7IGVycm9yOiBlXzRfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV80KSB0aHJvdyBlXzQuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV81LCBfYTtcbiAgICAgICAgICAgIHZhciBzdW0gPSAwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMuZGVpbnRlcnNlY3Rpb24ubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0geCAqIGIgLSB5ICogYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV81XzEpIHsgZV81ID0geyBlcnJvcjogZV81XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNSkgdGhyb3cgZV81LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5hYnMoc3VtIC8gMikgLSB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSArIGhvbGUuYXJlYTsgfSwgMCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImRlaW50ZXJzZWN0aW9uXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgZV82LCBfYTtcbiAgICAgICAgICAgIHZhciBwID0gdGhpcy5jbG9uZSgpLmNsb3NlKCk7XG4gICAgICAgICAgICB2YXIgc3RvcmUgPSB7fTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgayA9IHAuYXQoaSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBzdG9yZVtrXSA9IHN0b3JlW2tdIHx8IFtdO1xuICAgICAgICAgICAgICAgIHN0b3JlW2tdLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZmlyc3RMaW5lID0gcC5hdChpKS5maW5kTGluZShwLmF0KGkgKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWNvbmRMaW5lID0gcC5hdChqKS5maW5kTGluZShwLmF0KGogKyAxKSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpcnN0TGluZS5pbnRlcnNlY3Rpb24oc2Vjb25kTGluZSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb25Qb2ludCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIV9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGZpcnN0TGluZS5wb2ludHMpLCBmYWxzZSksIF9fcmVhZChzZWNvbmRMaW5lLnBvaW50cyksIGZhbHNlKS5zb21lKGZ1bmN0aW9uICh0KSB7IHJldHVybiB0Lmxpa2UoaW50ZXJzZWN0aW9uUG9pbnQpOyB9KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwLnJlbW92ZVBhcnQoaSwgaiAtIGkpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShbaV0sIF9fcmVhZChwYXJ0KSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIoaiwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBZnRlcihpLCBpbnRlcnNlY3Rpb25Qb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMjsgaiA8IHAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIF9sb29wXzEoaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKE9iamVjdC5rZXlzKHN0b3JlKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleSA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmVjb3JkID0gc3RvcmVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2xvb3BfMiA9IGZ1bmN0aW9uIChqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbl8xID0gcC5jbG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gcmVjb3JkW2pdIC0gcmVjb3JkW2ogLSAxXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBuZXcgRFBvbHlnb24ob3JpZ2luXzEucmVtb3ZlUGFydChyZWNvcmRbaiAtIDFdLCBkKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhbGxJbnNpZGUgPSBwYXJ0LnJlZHVjZShmdW5jdGlvbiAoYSwgZSkgeyByZXR1cm4gYSAmJiBjb250YWluQ2FsY3VsYXRvcihvcmlnaW5fMSwgZSk7IH0sIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSW5zaWRlICYmIG9yaWdpbl8xLmlzQ2xvY2t3aXNlID09PSBwYXJ0LmlzQ2xvY2t3aXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fMS5pbnNlcnRBZnRlci5hcHBseShvcmlnaW5fMSwgX19zcHJlYWRBcnJheShbcmVjb3JkW2ogLSAxXSAtIDFdLCBfX3JlYWQocGFydC5yZXZlcnNlKCkucG9pbnRzKSwgZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvcmlnaW5fMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gcmVjb3JkLmxlbmd0aCAtIDE7IGogPiAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbG9vcF8yKGopO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfNl8xKSB7IGVfNiA9IHsgZXJyb3I6IGVfNl8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzYpIHRocm93IGVfNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcInZhbGlkXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImZpcnN0XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwic2Vjb25kXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hdCgxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibGFzdFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXQodGhpcy5sZW5ndGggLSAxKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwibWluQXJlYVJlY3RhbmdsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfNywgX2EsIGVfOCwgX2I7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY29udmV4O1xuICAgICAgICAgICAgdmFyIHJlc3VsdFBvbHlnb24gPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciByZXN1bHRBcmVhID0gSW5maW5pdHk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIF9jID0gX192YWx1ZXMocC5sb29wUG9pbnRzR2VuZXJhdG9yKHRydWUpKCkpLCBfZCA9IF9jLm5leHQoKTsgIV9kLmRvbmU7IF9kID0gX2MubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZSA9IF9fcmVhZChfZC52YWx1ZSwgMyksIGwgPSBfZVsyXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQxID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heFdpZHRoUG9pbnQyID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heEhlaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXhIZWlnaHRQb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfZiA9IChlXzggPSB2b2lkIDAsIF9fdmFsdWVzKHAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpKSwgX2cgPSBfZi5uZXh0KCk7ICFfZy5kb25lOyBfZyA9IF9mLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfaCA9IF9fcmVhZChfZy52YWx1ZSwgNCksIHogPSBfaFswXSwgaSA9IF9oWzNdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IGwuZmluZFBvaW50KGwuZmluZFBlcnBlbmRpY3VsYXIoeikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBoID0gcDEuZGlzdGFuY2Uoeik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gbWF4SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodCA9IGg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEhlaWdodFBvaW50ID0gejtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBsLmZpbmRQb2ludChsLmZpbmRQZXJwZW5kaWN1bGFyKHAuYXQoaikpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBwMS5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ID49IG1heFdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IHc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aFBvaW50MSA9IHAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIgPSBwMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZV84XzEpIHsgZV84ID0geyBlcnJvcjogZV84XzEgfTsgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9nICYmICFfZy5kb25lICYmIChfYiA9IF9mLnJldHVybikpIF9iLmNhbGwoX2YpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzgpIHRocm93IGVfOC5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF4V2lkdGhQb2ludDEgfHwgIW1heFdpZHRoUG9pbnQyIHx8ICFtYXhIZWlnaHRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoTGluZSA9IG1heFdpZHRoUG9pbnQxLmZpbmRMaW5lKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIxID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBlcnBlbmRpY3VsYXIyID0gd2lkdGhMaW5lLmZpbmRQZXJwZW5kaWN1bGFyKG1heFdpZHRoUG9pbnQyKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXBQb2x5Z29uID0gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoUG9pbnQxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGhQb2ludDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwZXJwZW5kaWN1bGFyMi5maW5kUG9pbnQocGVycGVuZGljdWxhcjIuZmluZFBlcnBlbmRpY3VsYXIobWF4SGVpZ2h0UG9pbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnBlbmRpY3VsYXIxLmZpbmRQb2ludChwZXJwZW5kaWN1bGFyMS5maW5kUGVycGVuZGljdWxhcihtYXhIZWlnaHRQb2ludCkpXG4gICAgICAgICAgICAgICAgICAgIF0pLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUG9seWdvbi5hcmVhIDwgcmVzdWx0QXJlYSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UG9seWdvbiA9IHRlbXBQb2x5Z29uO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJlYSA9IHRlbXBQb2x5Z29uLmFyZWE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV83XzEpIHsgZV83ID0geyBlcnJvcjogZV83XzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9kICYmICFfZC5kb25lICYmIChfYSA9IF9jLnJldHVybikpIF9hLmNhbGwoX2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfNykgdGhyb3cgZV83LmVycm9yOyB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0UG9seWdvbjtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiY29udmV4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5vcGVuKCk7XG4gICAgICAgICAgICB2YXIgaXNDbG9ja3dpc2UgPSBwLmlzQ2xvY2t3aXNlO1xuICAgICAgICAgICAgaWYgKCFpc0Nsb2Nrd2lzZSkge1xuICAgICAgICAgICAgICAgIHAucmV2ZXJzZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGwgPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHZhciBwMSA9IHAubGFzdDtcbiAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmZpcnN0O1xuICAgICAgICAgICAgICAgIHZhciBwMyA9IHAuc2Vjb25kO1xuICAgICAgICAgICAgICAgIHZhciBkID0gcDIuZmluZElubmVyQW5nbGUocDEsIHAzKTtcbiAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcC5yZW1vdmVQYXJ0KC0xLCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gd2hpbGUgKHAubGVuZ3RoKTtcbiAgICAgICAgICAgIHAuY2xvc2UoKTtcbiAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSAwO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHAgPSBwLmRlaW50ZXJzZWN0aW9uO1xuICAgICAgICAgICAgICAgIGwgPSBwLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwMSA9IHAuYXQoaSAtIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDIgPSBwLmF0KGkpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcDMgPSBwLmF0KGkgKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBwMi5maW5kSW5uZXJBbmdsZShwMSwgcDMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IE1hdGguUEkgfHwgRE51bWJlcnMubGlrZVplcm8oRE51bWJlcnMucmFkMkRlZyhkKSkgfHwgRE51bWJlcnMubGlrZVBJKGQpIHx8IEROdW1iZXJzLmxpa2UyUEkoZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAucmVtb3ZlUGFydCgtLWksIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGl0ZXJhdGlvbisrO1xuICAgICAgICAgICAgfSB3aGlsZSAocC5sZW5ndGggIT09IGwgJiYgaXRlcmF0aW9uIDwgTUFYX0NPTlZFWF9JVEVSQVRJT05TKTtcbiAgICAgICAgICAgIGlmICghaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICBwLnJldmVyc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJpc0Nsb2Nrd2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGVfOSwgX2E7XG4gICAgICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmNsb25lKCkuY2xvc2UoKVxuICAgICAgICAgICAgICAgICAgICAubG9vcFBvaW50c0dlbmVyYXRvcigpKCkpLCBfYyA9IF9iLm5leHQoKTsgIV9jLmRvbmU7IF9jID0gX2IubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIF9lID0gX2RbMF0sIHggPSBfZS54LCB5ID0gX2UueSwgX2YgPSBfZFsxXSwgYSA9IF9mLngsIGIgPSBfZi55O1xuICAgICAgICAgICAgICAgICAgICBzdW0gKz0gKGEgLSB4KSAqIChiICsgeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVfOV8xKSB7IGVfOSA9IHsgZXJyb3I6IGVfOV8xIH07IH1cbiAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzkpIHRocm93IGVfOS5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHN1bSA8IDA7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcImNsb2NrV2lzZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbG9ja3dpc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5yZXZlcnNlKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvbHlnb24ucHJvdG90eXBlLCBcIm5vSG9sZXNcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgICAgICByZXMuaG9sZXMgPSBbXTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVkdWNlID0gZnVuY3Rpb24gKGYsIHYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5yZWR1Y2UoZiwgdik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW50ZXJzZWN0aW9uID0gZnVuY3Rpb24gKGwsIGluY2x1ZGVPbmx5KSB7XG4gICAgICAgIHZhciBlXzEwLCBfYTtcbiAgICAgICAgaWYgKGluY2x1ZGVPbmx5ID09PSB2b2lkIDApIHsgaW5jbHVkZU9ubHkgPSBmYWxzZTsgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHRoaXMubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMyksIGxpbmUgPSBfZFsyXTtcbiAgICAgICAgICAgICAgICB2YXIgaW50ZXJzZWN0ID0gbGluZS5pbnRlcnNlY3Rpb24obCwgMCwgaW5jbHVkZU9ubHkpO1xuICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3QpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goaW50ZXJzZWN0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTBfMSkgeyBlXzEwID0geyBlcnJvcjogZV8xMF8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMCkgdGhyb3cgZV8xMC5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2V0Q2VudGVyID0gZnVuY3Rpb24gKG5ld0NlbnRlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5sb29wKClcbiAgICAgICAgICAgIC5tb3ZlKG5ld0NlbnRlci5jbG9uZSgpLm1vdmUodGhpcy5jZW50ZXIubWludXMoKSkpXG4gICAgICAgICAgICAucnVuKCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9XS1QgPSBmdW5jdGlvbiAodHlwZSwgd2l0aFopIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uV0tUX1BPTFlHT047IH1cbiAgICAgICAgaWYgKHdpdGhaID09PSB2b2lkIDApIHsgd2l0aFogPSBmYWxzZTsgfVxuICAgICAgICBpZiAodHlwZSA9PT0gRFBvbHlnb24uV0tUX1BPTFlHT04pIHtcbiAgICAgICAgICAgIHZhciBoID0gJyc7XG4gICAgICAgICAgICBpZiAodGhpcy5ob2xlcyAmJiB0aGlzLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGggPSBcIiwgXCIuY29uY2F0KHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChob2xlKSB7IHJldHVybiBob2xlLnRvU3RyaW5nKCk7IH0pXG4gICAgICAgICAgICAgICAgICAgIC5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBcIlBPTFlHT04gKChcIi5jb25jYXQodGhpcy5kZWludGVyc2VjdGlvbi5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gXCJcIi5jb25jYXQoci54LCBcIiBcIikuY29uY2F0KHIueSkuY29uY2F0KHdpdGhaID8gXCIgXCIuY29uY2F0KHIueikgOiAnJyk7IH0pXG4gICAgICAgICAgICAgICAgLmpvaW4oJywgJyksIFwiKVwiKS5jb25jYXQoaCwgXCIpXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIkxJTkVTVFJJTkcgKFwiLmNvbmNhdCh0aGlzLm1hcEFycmF5KGZ1bmN0aW9uIChyKSB7IHJldHVybiBcIlwiLmNvbmNhdChyLngsIFwiIFwiKS5jb25jYXQoci55KS5jb25jYXQod2l0aFogPyBcIiBcIi5jb25jYXQoci56KSA6ICcnKTsgfSlcbiAgICAgICAgICAgIC5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZmlsdGVyID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5wUG9pbnRzLmZpbHRlcihmKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubWFwID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgdGhpcy5wUG9pbnRzID0gdGhpcy5tYXBBcnJheShmKTtcbiAgICAgICAgdGhpcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLm1hcChmKTsgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm1hcEFycmF5ID0gZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5tYXAoZik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChmKSB7XG4gICAgICAgIHRoaXMucG9pbnRzLnNvcnQoZik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmF0ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzWyhpbmRleCAlIGxlbmd0aCArIGxlbmd0aCkgJSBsZW5ndGhdO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucFBvaW50cy5wb3AoKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBhcmdzW19pXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChfYSA9IHRoaXMucFBvaW50cykucHVzaC5hcHBseShfYSwgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKGFyZ3MpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNoaWZ0KCk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLnBQb2ludHMpLnVuc2hpZnQuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChhcmdzKSwgZmFsc2UpKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5yZXZlcnNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnBQb2ludHMgPSB0aGlzLnBQb2ludHMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmhvbGVzID0gdGhpcy5ob2xlcy5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGgucmV2ZXJzZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5wUG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5nZXRWYWx1ZSgpOyB9KSArIHRoaXMuaG9sZXNcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGgpIHsgcmV0dXJuIGEgKyBoLmdldFZhbHVlKCk7IH0sICcnKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBcIihcIi5jb25jYXQodGhpcy5tYXBBcnJheShmdW5jdGlvbiAocikgeyByZXR1cm4gci50b1N0cmluZygpOyB9KS5qb2luKCcsICcpLCBcIilcIik7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBwMCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmIChwMCAmJiAhdGhpcy5jbG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaChwMC5jbG9uZSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGlmICh0aGlzLmxlbmd0aCA+IDIgJiYgcCAmJiB0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMucG9pbnRzKSwgZmFsc2UpLCBfX3JlYWQocG9seS5wb2ludHMpLCBmYWxzZSkpLmNsb3NlKCk7XG4gICAgICAgIHJlcy5ob2xlcyA9IF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRoaXMuaG9sZXMpLCBmYWxzZSksIF9fcmVhZChwb2x5LmhvbGVzKSwgZmFsc2UpLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9uZSgpOyB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wUG9pbnRzLnNvbWUoZnVuY3Rpb24gKHEpIHsgcmV0dXJuIHEuZXF1YWwocCk7IH0pO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzID0gbmV3IERQb2x5Z29uKHRoaXMucG9pbnRzLm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5jbG9uZSgpOyB9KSk7XG4gICAgICAgIHJlcy5ob2xlcyA9IHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmNsb25lKCk7IH0pO1xuICAgICAgICByZXMucHJvcGVydGllcyA9IHRoaXMucHJvcGVydGllcztcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGlmICghKHAgaW5zdGFuY2VvZiBEUG9seWdvbikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggIT09IHAubGVuZ3RoIHx8IHRoaXMuaG9sZXMubGVuZ3RoICE9PSBwLmhvbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAodGhpcy5zYW1lKHApICYmXG4gICAgICAgICAgICB0aGlzLmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiBwLmhvbGVzLnNvbWUoZnVuY3Rpb24gKHBIb2xlcykgeyByZXR1cm4gcEhvbGVzLnNhbWUoaG9sZSk7IH0pOyB9LCB0cnVlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2FtZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBwQ2xvbmUgPSBwLmNsb25lKCkuY2xvc2UoKTtcbiAgICAgICAgdmFyIHRoaXNBc1N0cmluZyA9IHRoaXMuY2xvbmUoKVxuICAgICAgICAgICAgLmNsb3NlKClcbiAgICAgICAgICAgIC50b1N0cmluZygpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBDbG9uZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXNBc1N0cmluZyA9PT0gcENsb25lLnRvU3RyaW5nKCkgfHwgdGhpc0FzU3RyaW5nID09PSBwQ2xvbmUuY2xvbmUoKS5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcENsb25lLm5leHRTdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5maW5kSW5kZXggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChmdW5jdGlvbiAodCkgeyByZXR1cm4gdC5lcXVhbChhKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9pbnRzLmZpbmRJbmRleChhKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5hcHByb3hpbWF0aW9uID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgaWYgKGUgPT09IHZvaWQgMCkgeyBlID0gTWF0aC5zcXJ0KHRoaXMucGVyaW1ldGVyKSAqIEFQUFJPWElNQVRJT05fVkFMVUU7IH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbih0aGlzLmNsb25lKCkuZG91Z2xhc1BldWNrZXIodGhpcy5wUG9pbnRzLCBlKSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgIGZvciAodmFyIF9pID0gMTsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICBwb2ludHNbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgICAgIH1cbiAgICAgICAgKF9hID0gdGhpcy5wUG9pbnRzKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkQXJyYXkoW2luZGV4ICsgMSwgMF0sIF9fcmVhZChwb2ludHMpLCBmYWxzZSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnJlbW92ZVBhcnQgPSBmdW5jdGlvbiAoaW5kZXgsIGNvdW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBQb2ludHMuc3BsaWNlKGluZGV4ICsgMSwgY291bnQpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmhhc1NpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBleHRlbmQxID0gdGhpcy5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQyID0gcC5leHRlbmQ7XG4gICAgICAgIHZhciBleHRlbmQxcG9pbnRzID0gZXh0ZW5kMS5wb2ludHM7XG4gICAgICAgIHZhciBleHRlbmQycG9pbnRzID0gZXh0ZW5kMi5wb2ludHM7XG4gICAgICAgIHZhciBpbjEgPSBleHRlbmQxcG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDIuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHZhciBpbjIgPSBleHRlbmQycG9pbnRzLnNvbWUoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIGV4dGVuZDEuc2ltcGxlSW5jbHVkZSh0KTsgfSk7XG4gICAgICAgIHJldHVybiBpbjEgfHwgaW4yO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUluY2x1ZGUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zaW1wbGVJbmNsdWRlWChwKSAmJiB0aGlzLnNpbXBsZUluY2x1ZGVZKHApO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRyYXdQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzLCBmaWxsQ29sb3IsIHN0cm9rZUNvbG9yLCBzaGFkb3dDb2xvciwgbGluZVdpZHRoLCBzdGVwcykge1xuICAgICAgICBpZiAobGluZVdpZHRoID09PSB2b2lkIDApIHsgbGluZVdpZHRoID0gMTsgfVxuICAgICAgICBpZiAoc3RlcHMgPT09IHZvaWQgMCkgeyBzdGVwcyA9IHRoaXMubGVuZ3RoIC0gMTsgfVxuICAgICAgICBpZiAodGhpcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB2YXIgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGZpbGxDb2xvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdHJva2VDb2xvcikge1xuICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHN0cm9rZUNvbG9yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpbmVXaWR0aCkge1xuICAgICAgICAgICAgICAgIGN0eC5saW5lV2lkdGggPSBsaW5lV2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yIHx8IHN0cm9rZUNvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgsIHN0ZXBzICUgdGhpcy5sZW5ndGgpO1xuICAgICAgICAgICAgaWYgKHNoYWRvd0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0NvbG9yID0gc2hhZG93Q29sb3I7XG4gICAgICAgICAgICAgICAgY3R4LnNoYWRvd0JsdXIgPSAwO1xuICAgICAgICAgICAgICAgIGN0eC5zaGFkb3dPZmZzZXRYID0gMTtcbiAgICAgICAgICAgICAgICBjdHguc2hhZG93T2Zmc2V0WSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmlsbENvbG9yKSB7XG4gICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3Ryb2tlQ29sb3IpIHtcbiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuY2xlYXJQb2x5Z29uT25DYW52YXMgPSBmdW5jdGlvbiAoY2FudmFzKSB7XG4gICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIG9sZCA9IGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247XG4gICAgICAgIGN0eC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAnZGVzdGluYXRpb24tb3V0JztcbiAgICAgICAgdGhpcy5nb0J5UGF0aChjdHgpO1xuICAgICAgICBjdHguZmlsbCgpO1xuICAgICAgICBjdHguZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gb2xkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmNvbnRhaW4gPSBmdW5jdGlvbiAocCwgaXNCb3JkZXJJbnNpZGUpIHtcbiAgICAgICAgdmFyIGVfMTEsIF9hO1xuICAgICAgICBpZiAoaXNCb3JkZXJJbnNpZGUgPT09IHZvaWQgMCkgeyBpc0JvcmRlckluc2lkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBzaW1wbGVJbmNsdWRlID0gdGhpcy5zaW1wbGVJbmNsdWRlKHApO1xuICAgICAgICBpZiAoIXNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgb25Cb3JkZXIgPSB0aGlzLm9uQm9yZGVyKHApO1xuICAgICAgICBpZiAob25Cb3JkZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBpc0JvcmRlckluc2lkZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcG9seSA9IHRoaXMuZGVpbnRlcnNlY3Rpb247XG4gICAgICAgIHZhciB0b3RhbEZpID0gMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMocG9seS5sb29wUG9pbnRzR2VuZXJhdG9yKCkoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDIpLCBfZSA9IF9kWzBdLCB4ID0gX2UueCwgeSA9IF9lLnksIF9mID0gX2RbMV0sIGEgPSBfZi54LCBiID0gX2YueTtcbiAgICAgICAgICAgICAgICB2YXIgbGluZTEgPSBuZXcgRExpbmUoeCAtIHAueCwgeSAtIHAueSwgMCk7XG4gICAgICAgICAgICAgICAgdmFyIGxpbmUyID0gbmV3IERMaW5lKGEgLSBwLngsIGIgLSBwLnksIDApO1xuICAgICAgICAgICAgICAgIHZhciBmaURpZiA9IGxpbmUxLmZpbmRGaShsaW5lMik7XG4gICAgICAgICAgICAgICAgaWYgKGxpbmUxLnZlY3RvclByb2R1Y3QobGluZTIpLmMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRvdGFsRmkgKz0gZmlEaWY7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0b3RhbEZpIC09IGZpRGlmO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xMV8xKSB7IGVfMTEgPSB7IGVycm9yOiBlXzExXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzExKSB0aHJvdyBlXzExLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwcyA9IE1hdGguUEkgLyAxMDAwMDtcbiAgICAgICAgdmFyIGFic1RvdGFsRmkgPSBNYXRoLmFicyh0b3RhbEZpKTtcbiAgICAgICAgaWYgKGFic1RvdGFsRmkgPCBlcHMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChNYXRoLmFicygyICogTWF0aC5QSSAtIGFic1RvdGFsRmkpIDwgZXBzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvbnRhaW5zMiBmYWlsZCcpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLm9uQm9yZGVyID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGVfMTIsIF9hO1xuICAgICAgICB2YXIgc2ltcGxlSW5jbHVkZSA9IHRoaXMuc2ltcGxlSW5jbHVkZShwKTtcbiAgICAgICAgaWYgKHNpbXBsZUluY2x1ZGUpIHtcbiAgICAgICAgICAgIHZhciBwb2x5ID0gdGhpcy5kZWludGVyc2VjdGlvbjtcbiAgICAgICAgICAgIHZhciBoYXNTYW1lUG9pbnQgPSB0aGlzLnBvaW50cy5zb21lKGZ1bmN0aW9uIChwb2ludCkgeyByZXR1cm4gcG9pbnQuZXF1YWwocCk7IH0pO1xuICAgICAgICAgICAgaWYgKGhhc1NhbWVQb2ludCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBfYiA9IF9fdmFsdWVzKHBvbHkubG9vcFBvaW50c0dlbmVyYXRvcih0cnVlKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2QgPSBfX3JlYWQoX2MudmFsdWUsIDMpLCBwb2x5Z29uTGluZSA9IF9kWzJdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgb25Cb3JkZXIgPSBwb2x5Z29uTGluZS54KHApLmVxdWFsKHApICYmIHBvbHlnb25MaW5lLmluUmFuZ2UocCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbkJvcmRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZV8xMl8xKSB7IGVfMTIgPSB7IGVycm9yOiBlXzEyXzEgfTsgfVxuICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTIpIHRocm93IGVfMTIuZXJyb3I7IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubmV4dFN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLm9wZW4oKTtcbiAgICAgICAgdGhpcy5wdXNoKHRoaXMuc2hpZnQoKSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUucmVtb3ZlRHVwbGljYXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgdmFyIHAxID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIHZhciBwMiA9IHRoaXMuYXQoaSArIDEpO1xuICAgICAgICAgICAgaWYgKHAxLmVxdWFsKHAyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlUGFydChpLCAxKTtcbiAgICAgICAgICAgICAgICBpLS07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi50b0dlb0pTT05GZWF0dXJlQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIChwb2x5Z29ucywgZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgZmVhdHVyZXM6IHBvbHlnb25zLm1hcChmdW5jdGlvbiAocG9seWdvbikgeyByZXR1cm4gcG9seWdvbi50b0dlb0pTT05GZWF0dXJlKGZvcm1hdCk7IH0pXG4gICAgICAgIH07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wYXJzZSA9IGZ1bmN0aW9uIChhLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgaWYgKGEudHlwZSkge1xuICAgICAgICAgICAgc3dpdGNoIChhLnR5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdGZWF0dXJlQ29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmZlYXR1cmVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoZiwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaC5hcHBseShhaywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHQpLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0ZlYXR1cmUnOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0ID0gRFBvbHlnb24ucGFyc2UoYS5nZW9tZXRyeSwgZm9ybWF0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQuZm9yRWFjaChmdW5jdGlvbiAocmVjb3JkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLnByb3BlcnRpZXMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYS5wcm9wZXJ0aWVzKSwgeyBpZDogYS5pZCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdC5wcm9wZXJ0aWVzID0gX19hc3NpZ24oX19hc3NpZ24oe30sIGEucHJvcGVydGllcyksIHsgaWQ6IGEuaWQgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJ0xpbmVTdHJpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9pbnQnOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKGEuY29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1BvbHlnb24nOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb29yZGluYXRlcy5yZWR1Y2UoZnVuY3Rpb24gKGFrLCBsaW5lLCBpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWsucG9pbnRzID0gbGluZS5tYXAoZnVuY3Rpb24gKGMpIHsgcmV0dXJuIERQb2ludC5wYXJzZShjLCBmb3JtYXQpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFrLmhvbGVzLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgbmV3IERQb2x5Z29uKCkpO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpTGluZVN0cmluZyc6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrLnB1c2gobmV3IERQb2x5Z29uKGxpbmUubWFwKGZ1bmN0aW9uIChjKSB7IHJldHVybiBEUG9pbnQucGFyc2UoYywgZm9ybWF0KTsgfSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ011bHRpUG9seWdvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmNvb3JkaW5hdGVzLnJlZHVjZShmdW5jdGlvbiAoYWssIGNvb3JkaW5hdGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKERQb2x5Z29uLnBhcnNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IGNvb3JkaW5hdGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGNhc2UgJ0dlb21ldHJ5Q29sbGVjdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLmdlb21ldHJpZXMucmVkdWNlKGZ1bmN0aW9uIChhaywgbGluZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWsucHVzaChEUG9seWdvbi5wYXJzZShsaW5lLCBmb3JtYXQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhaztcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihhXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiBEUG9pbnQucGFyc2UociwgZm9ybWF0KTsgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnRvQXJyYXlPZkNvb3JkcyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHRoaXMubWFwQXJyYXkoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIudG9Db29yZHMoZm9ybWF0KTsgfSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUudG9HZW9KU09ORmVhdHVyZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHRoaXMudG9HZW9KU09OKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b0dlb0pTT04gPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IHZvaWQgMCkgeyBmb3JtYXQgPSBER2VvLnBhcnNlRm9ybWF0OyB9XG4gICAgICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICAgICAgY29vcmRpbmF0ZXM6IF9fc3ByZWFkQXJyYXkoW1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpXG4gICAgICAgICAgICAgICAgXSwgX19yZWFkKHRoaXMuaG9sZXMubWFwKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLnRvQXJyYXlPZkNvb3Jkcyhmb3JtYXQpOyB9KSksIGZhbHNlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHRoaXMudG9BcnJheU9mQ29vcmRzKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5kaXZpZGVUb1BpZWNlcyA9IGZ1bmN0aW9uIChwaWVjZXNDb3VudCwgd2l0aEFsdGl0dWRlKSB7XG4gICAgICAgIHZhciBlXzEzLCBfYTtcbiAgICAgICAgaWYgKHdpdGhBbHRpdHVkZSA9PT0gdm9pZCAwKSB7IHdpdGhBbHRpdHVkZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcGllY2VMZW5ndGggPSBmdWxsTGVuZ3RoIC8gcGllY2VzQ291bnQ7XG4gICAgICAgIHZhciBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgdmFyIF9sb29wXzMgPSBmdW5jdGlvbiAocDEsIHAyLCBpKSB7XG4gICAgICAgICAgICB2YXIgZCA9IHAxLmRpc3RhbmNlKHAyKTtcbiAgICAgICAgICAgIGlmIChkID09PSBjdXJyZW50UGllY2VMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjdXJyZW50UGllY2VMZW5ndGggPSBwaWVjZUxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGQgLSBjdXJyZW50UGllY2VMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNpcmNsZSA9IG5ldyBEQ2lyY2xlKHAxLCBjdXJyZW50UGllY2VMZW5ndGgpO1xuICAgICAgICAgICAgICAgIHZhciBsaW5lXzEgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICAgICAgdmFyIGludGVyc2VjdGlvblBvaW50ID0gbGluZV8xLmludGVyc2VjdGlvbldpdGhDaXJjbGUoY2lyY2xlKVxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChwKSB7IHJldHVybiBsaW5lXzEuaW5SYW5nZShwLCBDTE9TRV9UT19JTlRFUlNFQ1RJT05fRElTVEFOQ0UpOyB9KVswXTtcbiAgICAgICAgICAgICAgICBpbnRlcnNlY3Rpb25Qb2ludC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzXzEuaW5zZXJ0QWZ0ZXIoaSwgaW50ZXJzZWN0aW9uUG9pbnQpO1xuICAgICAgICAgICAgICAgIGlmICh3aXRoQWx0aXR1ZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAxeiA9IHAxLno7XG4gICAgICAgICAgICAgICAgICAgIGludGVyc2VjdGlvblBvaW50LnogPSBwMXogLSAocDF6IC0gcDIueikgKiAocDEuZGlzdGFuY2UoaW50ZXJzZWN0aW9uUG9pbnQpIC8gZCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRQaWVjZUxlbmd0aCA9IHBpZWNlTGVuZ3RoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFBpZWNlTGVuZ3RoIC09IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aGlzXzEgPSB0aGlzO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgNCksIHAxID0gX2RbMF0sIHAyID0gX2RbMV0sIGkgPSBfZFszXTtcbiAgICAgICAgICAgICAgICBfbG9vcF8zKHAxLCBwMiwgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMTNfMSkgeyBlXzEzID0geyBlcnJvcjogZV8xM18xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChfYyAmJiAhX2MuZG9uZSAmJiAoX2EgPSBfYi5yZXR1cm4pKSBfYS5jYWxsKF9iKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xMykgdGhyb3cgZV8xMy5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnByZXBhcmVUb0Zhc3RTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBlXzE0LCBfYTtcbiAgICAgICAgdGhpcy5zZWFyY2hTdG9yZSA9IHt9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLnBvaW50cyksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2QgPSBfYy52YWx1ZSwgeCA9IF9kLngsIHkgPSBfZC55LCB6ID0gX2QuejtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldW3ogfHwgJ3VuZGVmaW5lZCddID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xNF8xKSB7IGVfMTQgPSB7IGVycm9yOiBlXzE0XzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE0KSB0aHJvdyBlXzE0LmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5mYXN0SGFzID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXTtcbiAgICB9O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9seWdvbi5wcm90b3R5cGUsIFwiZ3Jvd2luZ1BpZWNlc0dlbmVyYXRvclwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHBvbHlnb24gPSB0aGlzO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgciwgX2EsIF9iLCBwLCBlXzE1XzE7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTUsIF9jO1xuICAgICAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2QpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfZC5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QudHJ5cy5wdXNoKFsxLCA2LCA3LCA4XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSBfX3ZhbHVlcyhwb2x5Z29uLnBQb2ludHMpLCBfYiA9IF9hLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhX2IuZG9uZSkgcmV0dXJuIFszLCA1XTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gX2IudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5wdXNoKHApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcC5wcm9wZXJ0aWVzLnBpZWNlQm9yZGVyKSByZXR1cm4gWzMsIDRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgci5jbG9uZSgpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZC5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2QubGFiZWwgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9iID0gX2EubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6IHJldHVybiBbMywgOF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZV8xNV8xID0gX2Quc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVfMTUgPSB7IGVycm9yOiBlXzE1XzEgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMsIDhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfYiAmJiAhX2IuZG9uZSAmJiAoX2MgPSBfYS5yZXR1cm4pKSBfYy5jYWxsKF9hKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzE1KSB0aHJvdyBlXzE1LmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs3XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODogcmV0dXJuIFsyLCByLmNsb25lKCldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZVVuaW9uID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHZhciByZXMgPSB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICBpZiAocmVzID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgRFBvbHlnb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNpbXBsZUxvZ2ljRnVuY3Rpb24ocCwgZmFsc2UsIGZhbHNlKTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVEaWZmZXJlbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2ltcGxlTG9naWNGdW5jdGlvbihwLCB0cnVlLCBmYWxzZSk7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc21hcnRVbmlvbiA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBlXzE2LCBfYTtcbiAgICAgICAgdmFyIHJlcyA9IHRoaXMuY2xvbmUoKS5zaW1wbGVVbmlvbihwKTtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgdmFyIGFsbEhvbGVzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZCh0aGlzLmhvbGVzKSwgZmFsc2UpLCBfX3JlYWQocC5ob2xlcyksIGZhbHNlKSwgX19yZWFkKHJlcy5ob2xlcyksIGZhbHNlKS5tYXAoZnVuY3Rpb24gKGgpIHsgcmV0dXJuIGguY2xvbmUoKTsgfSk7XG4gICAgICAgICAgICB2YXIgX2xvb3BfNCA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVfMTcsIF9iO1xuICAgICAgICAgICAgICAgIHZhciBfbG9vcF81ID0gZnVuY3Rpb24gKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGEuZXF1YWwoYikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdmFyIHIgPSBhLnNpbXBsZVVuaW9uKGIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxsSG9sZXMgPSBhbGxIb2xlcy5maWx0ZXIoZnVuY3Rpb24gKHYpIHsgcmV0dXJuICF2LmVxdWFsKGEpICYmICF2LmVxdWFsKGIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbEhvbGVzLnB1c2gocik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzIgPSAoZV8xNyA9IHZvaWQgMCwgX192YWx1ZXMoYWxsSG9sZXMpKSwgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCk7ICFhbGxIb2xlc18yXzEuZG9uZTsgYWxsSG9sZXNfMl8xID0gYWxsSG9sZXNfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gYWxsSG9sZXNfMl8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX2xvb3BfNShiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xN18xKSB7IGVfMTcgPSB7IGVycm9yOiBlXzE3XzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbEhvbGVzXzJfMSAmJiAhYWxsSG9sZXNfMl8xLmRvbmUgJiYgKF9iID0gYWxsSG9sZXNfMi5yZXR1cm4pKSBfYi5jYWxsKGFsbEhvbGVzXzIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNykgdGhyb3cgZV8xNy5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGFsbEhvbGVzXzEgPSBfX3ZhbHVlcyhhbGxIb2xlcyksIGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpOyAhYWxsSG9sZXNfMV8xLmRvbmU7IGFsbEhvbGVzXzFfMSA9IGFsbEhvbGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBhID0gYWxsSG9sZXNfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBfbG9vcF80KGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhdGNoIChlXzE2XzEpIHsgZV8xNiA9IHsgZXJyb3I6IGVfMTZfMSB9OyB9XG4gICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYWxsSG9sZXNfMV8xICYmICFhbGxIb2xlc18xXzEuZG9uZSAmJiAoX2EgPSBhbGxIb2xlc18xLnJldHVybikpIF9hLmNhbGwoYWxsSG9sZXNfMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xNikgdGhyb3cgZV8xNi5lcnJvcjsgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzLmhvbGVzID0gYWxsSG9sZXM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS50b1RyaWFuZ2xlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAwLmNsb25lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBwMS5jbG9uZSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgcDIuY2xvbmUoKVxuICAgICAgICAgICAgICAgICAgICBdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcG9seS5wdXNoKHBvbHkuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgcCA9IHRoaXMuY2xvbmUoKS5jbG9ja1dpc2Uub3BlbigpO1xuICAgICAgICB3aGlsZSAocC5ob2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHZhciBoID0gcC5ob2xlcy5zaGlmdCgpXG4gICAgICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgICAgICAuY2xvY2tXaXNlXG4gICAgICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgICAgIC5jbG9zZSgpO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHAsIHAuZmlyc3QsIGguZmlyc3QpKSB7XG4gICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QWZ0ZXIuYXBwbHkocCwgX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFswXSwgX19yZWFkKGgucG9pbnRzKSwgZmFsc2UpLCBbcC5maXJzdF0sIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwLnB1c2gocC5zaGlmdCgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChwLmxlbmd0aCA+IDMpIHtcbiAgICAgICAgICAgIHZhciB0cmlhbmdsZSA9IGdldFRyaWFuZ2xlKHApO1xuICAgICAgICAgICAgaWYgKHRyaWFuZ2xlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2godHJpYW5nbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlcy5wdXNoKHApO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmdldFRyaWFuZ2xlc1BvaW50SW5kZXhlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGlubmVyQW5kTm90SW50ZXJzZWN0ID0gZnVuY3Rpb24gKHBvbHksIHAxLCBwMikge1xuICAgICAgICAgICAgdmFyIGwgPSBwMS5maW5kTGluZShwMik7XG4gICAgICAgICAgICB2YXIgY2VudGVyID0gbC5jZW50ZXI7XG4gICAgICAgICAgICB2YXIgaW50ZXJzZWN0aW9ucyA9IHBvbHkuaG9sZXMucmVkdWNlKGZ1bmN0aW9uIChhLCBob2xlKSB7IHJldHVybiBhICYmIEJvb2xlYW4oaG9sZS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCk7IH0sIEJvb2xlYW4ocG9seS5jbG9uZSgpLmNsb3NlKClcbiAgICAgICAgICAgICAgICAuaW50ZXJzZWN0aW9uKGwsIHRydWUpLmxlbmd0aCkpO1xuICAgICAgICAgICAgdmFyIGNvbnRhaW4gPSBwb2x5LmhvbGVzLnJlZHVjZShmdW5jdGlvbiAoYSwgaG9sZSkgeyByZXR1cm4gYSAmJiAhaG9sZVxuICAgICAgICAgICAgICAgIC5jb250YWluKGNlbnRlcik7IH0sIHBvbHkuY29udGFpbihjZW50ZXIpKTtcbiAgICAgICAgICAgIHJldHVybiAhaW50ZXJzZWN0aW9ucyAmJiBjb250YWluO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgZ2V0VHJpYW5nbGUgPSBmdW5jdGlvbiAocG9seSkge1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAwID0gcG9seS5hdCgwKTtcbiAgICAgICAgICAgICAgICB2YXIgcDEgPSBwb2x5LmF0KDEpO1xuICAgICAgICAgICAgICAgIHZhciBwMiA9IHBvbHkuYXQoMik7XG4gICAgICAgICAgICAgICAgaWYgKGlubmVyQW5kTm90SW50ZXJzZWN0KHBvbHksIHAwLCBwMikpIHtcbiAgICAgICAgICAgICAgICAgICAgcG9seS5yZW1vdmVQYXJ0KDAsIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgcDAucHJvcGVydGllcy5pbmRleCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHAxLnByb3BlcnRpZXMuaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwMi5wcm9wZXJ0aWVzLmluZGV4XG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBvbHkucHVzaChwb2x5LnNoaWZ0KCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHAgPSB0aGlzLmNsb25lKCk7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHAucG9pbnRzLmZvckVhY2goZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgICAgIGYucHJvcGVydGllcy5pbmRleCA9IGluZGV4Kys7XG4gICAgICAgIH0pO1xuICAgICAgICBwLmhvbGVzLmZvckVhY2goZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgICAgIGgucFBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uIChmKSB7XG4gICAgICAgICAgICAgICAgZi5wcm9wZXJ0aWVzLmluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcCA9IHAuY2xvY2tXaXNlLm9wZW4oKTtcbiAgICAgICAgd2hpbGUgKHAuaG9sZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB2YXIgaCA9IHAuaG9sZXMuc2hpZnQoKVxuICAgICAgICAgICAgICAgIC5jbG9uZSgpXG4gICAgICAgICAgICAgICAgLmNsb2NrV2lzZVxuICAgICAgICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAgICAgICAuY2xvc2UoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChpbm5lckFuZE5vdEludGVyc2VjdChwLCBwLmZpcnN0LCBoLmZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICBwLmluc2VydEFmdGVyLmFwcGx5KHAsIF9fc3ByZWFkQXJyYXkoX19zcHJlYWRBcnJheShbMF0sIF9fcmVhZChoLnBvaW50cyksIGZhbHNlKSwgW3AuZmlyc3RdLCBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcC5wdXNoKHAuc2hpZnQoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAocC5sZW5ndGggPiAzKSB7XG4gICAgICAgICAgICB2YXIgdHJpYW5nbGUgPSBnZXRUcmlhbmdsZShwKTtcbiAgICAgICAgICAgIGlmICh0cmlhbmdsZSkge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoLmFwcGx5KHJlcywgX19zcHJlYWRBcnJheShbXSwgX19yZWFkKHRyaWFuZ2xlKSwgZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXMucHVzaC5hcHBseShyZXMsIF9fc3ByZWFkQXJyYXkoW10sIF9fcmVhZChwLnBvaW50cy5tYXAoZnVuY3Rpb24gKGYpIHsgcmV0dXJuIGYucHJvcGVydGllcy5pbmRleDsgfSkpLCBmYWxzZSkpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2x5Z29uLnByb3RvdHlwZSwgXCJjbG9zZWRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpcnN0LmVxdWFsKHRoaXMubGFzdCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYnVmZmVyID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMsIHR5cGUpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgaWYgKHR5cGUgPT09IHZvaWQgMCkgeyB0eXBlID0gRFBvbHlnb24uQ0FQX1JPVU5EOyB9XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBub0hvbGVzID0gX2Eubm9Ib2xlcywgY2xvc2VkID0gX2EuY2xvc2VkO1xuICAgICAgICB2YXIgcG9pbnRzID0gcmVhZGVyXG4gICAgICAgICAgICAucmVhZChub0hvbGVzLnRvV0tUKGNsb3NlZCA/IERQb2x5Z29uLldLVF9QT0xZR09OIDogRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcpKVxuICAgICAgICAgICAgLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCB0eXBlKVxuICAgICAgICAgICAgLmdldENvb3JkaW5hdGVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5KTtcbiAgICAgICAgfSkpO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpZGVCdWZmZXJzID0gZnVuY3Rpb24gKHYsIHF1YWRyYW50U2VnbWVudHMpIHtcbiAgICAgICAgaWYgKHF1YWRyYW50U2VnbWVudHMgPT09IHZvaWQgMCkgeyBxdWFkcmFudFNlZ21lbnRzID0gNjQ7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgZmlyc3QgPSBfYS5maXJzdCwgbGFzdCA9IF9hLmxhc3Q7XG4gICAgICAgIHZhciBidWZmZXIgPSB0aGlzLmJ1ZmZlcih2LCBxdWFkcmFudFNlZ21lbnRzLCBEUG9seWdvbi5DQVBfRkxBVCkub3BlbigpO1xuICAgICAgICB2YXIgX2IgPSBfX3JlYWQoZmlyc3Quc29ydEJ5RGlzdGFuY2UoYnVmZmVyKS5wb2ludHMubWFwKGZ1bmN0aW9uIChyKSB7IHJldHVybiByLnByb3BlcnRpZXMuaW5kZXg7IH0pLCAyKSwgc3RhcnQwID0gX2JbMF0sIHN0YXJ0MSA9IF9iWzFdO1xuICAgICAgICB2YXIgX2MgPSBfX3JlYWQobGFzdC5zb3J0QnlEaXN0YW5jZShidWZmZXIpLnBvaW50cy5tYXAoZnVuY3Rpb24gKHIpIHsgcmV0dXJuIHIucHJvcGVydGllcy5pbmRleDsgfSksIDIpLCBlbmQwID0gX2NbMF0sIGVuZDEgPSBfY1sxXTtcbiAgICAgICAgdmFyIGZyb21Qb2ludCA9IE1hdGgubWluKE1hdGgubWF4KHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5tYXgoZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgdG9Qb2ludCA9IE1hdGgubWF4KE1hdGgubWluKHN0YXJ0MCwgc3RhcnQxKSwgTWF0aC5taW4oZW5kMCwgZW5kMSkpO1xuICAgICAgICB2YXIgbGluZVBhcnQgPSBuZXcgRFBvbHlnb24oYnVmZmVyLnJlbW92ZVBhcnQoZnJvbVBvaW50IC0gMSwgdG9Qb2ludCAtIGZyb21Qb2ludCArIDEpKTtcbiAgICAgICAgYnVmZmVyLnVuc2hpZnQoYnVmZmVyLnBvcCgpKTtcbiAgICAgICAgcmV0dXJuIFtsaW5lUGFydC5yZXZlcnNlKCksIGJ1ZmZlcl07XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuYmV6aWVyID0gZnVuY3Rpb24gKHN0ZXApIHtcbiAgICAgICAgaWYgKHN0ZXAgPT09IHZvaWQgMCkgeyBzdGVwID0gMC4xOyB9XG4gICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxOyBpICs9IHN0ZXApIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKHRoaXMuY2xvbmUoKS5nZXRCZXppZXJQb2ludChpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zZXRHcm93aW5nSGVpZ2h0ID0gZnVuY3Rpb24gKGZyb20sIHRvKSB7XG4gICAgICAgIHZhciBmdWxsTGVuZ3RoID0gdGhpcy5mdWxsTGVuZ3RoO1xuICAgICAgICB2YXIgcHJldlBvaW50ID0gdGhpcy5maXJzdDtcbiAgICAgICAgdmFyIGQgPSB0byAtIGZyb207XG4gICAgICAgIHZhciBjdXJyZW50RGlzdGFuY2UgPSAwO1xuICAgICAgICB0aGlzLmxvb3AoKVxuICAgICAgICAgICAgLnNldFooZnVuY3Rpb24gKHApIHtcbiAgICAgICAgICAgIGN1cnJlbnREaXN0YW5jZSArPSBwcmV2UG9pbnQuZGlzdGFuY2UocCk7XG4gICAgICAgICAgICBwcmV2UG9pbnQgPSBwO1xuICAgICAgICAgICAgcmV0dXJuIGZyb20gKyBjdXJyZW50RGlzdGFuY2UgLyBmdWxsTGVuZ3RoICogZDtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5ydW4oKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUubG9vcFBvaW50c0dlbmVyYXRvciA9IGZ1bmN0aW9uICh3aXRoTGluZSkge1xuICAgICAgICBpZiAod2l0aExpbmUgPT09IHZvaWQgMCkgeyB3aXRoTGluZSA9IGZhbHNlOyB9XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpLCBwMSwgcDI7XG4gICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChfYS5sYWJlbCkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLmxhYmVsID0gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA8IHRoYXQubGVuZ3RoIC0gMSkpIHJldHVybiBbMywgNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBwMSA9IHRoYXQuYXQoaSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwMiA9IHRoYXQuYXQoaSArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCBbcDEsIHAyLCB3aXRoTGluZSA/IHAxLmZpbmRMaW5lKHAyKSA6IHVuZGVmaW5lZCwgaV1dO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5zZW50KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYS5sYWJlbCA9IDM7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMywgMV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nZXRCZXppZXJQb2ludCA9IGZ1bmN0aW9uICh2KSB7XG4gICAgICAgIHZhciBlXzE4LCBfYTtcbiAgICAgICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5maXJzdDtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyh0aGlzLmxvb3BQb2ludHNHZW5lcmF0b3IoKSgpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciBfZCA9IF9fcmVhZChfYy52YWx1ZSwgMiksIHAxID0gX2RbMF0sIHAyID0gX2RbMV07XG4gICAgICAgICAgICAgICAgcDEubW92ZShwMi5jbG9uZSgpLm1vdmUocDEuY2xvbmUoKS5taW51cygpKVxuICAgICAgICAgICAgICAgICAgICAuc2NhbGUodikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzE4XzEpIHsgZV8xOCA9IHsgZXJyb3I6IGVfMThfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTgpIHRocm93IGVfMTguZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCZXppZXJQb2ludCh2KTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5zaW1wbGVJbmNsdWRlWCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciB4ID0gcC54O1xuICAgICAgICByZXR1cm4gdGhpcy5taW5YIDw9IHggJiYgdGhpcy5tYXhYID49IHg7XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuc2ltcGxlSW5jbHVkZVkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgeSA9IHAueTtcbiAgICAgICAgcmV0dXJuIHRoaXMubWluWSA8PSB5ICYmIHRoaXMubWF4WSA+PSB5O1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLmRvdWdsYXNQZXVja2VyID0gZnVuY3Rpb24gKHBvaW50cywgZSkge1xuICAgICAgICB2YXIgZE1heCA9IDA7XG4gICAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICAgIHZhciBlbmQgPSBwb2ludHMubGVuZ3RoIC0gMTtcbiAgICAgICAgdmFyIGxpbmUgPSBwb2ludHNbMF0uZmluZExpbmUocG9pbnRzW2VuZF0pO1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgZCA9IGxpbmUucGVycGVuZGljdWxhckRpc3RhbmNlKHBvaW50c1tpXSk7XG4gICAgICAgICAgICBpZiAoZCA+IGRNYXgpIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgZE1heCA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRNYXggPj0gZSkge1xuICAgICAgICAgICAgdmFyIHJlY1Jlc3VsdDEgPSB0aGlzLmRvdWdsYXNQZXVja2VyKHBvaW50cy5zbGljZSgwLCBpbmRleCArIDEpLCBlKTtcbiAgICAgICAgICAgIHZhciByZWNSZXN1bHQyID0gdGhpcy5kb3VnbGFzUGV1Y2tlcihwb2ludHMuc2xpY2UoaW5kZXgpLCBlKTtcbiAgICAgICAgICAgIHJlY1Jlc3VsdDEucG9wKCk7XG4gICAgICAgICAgICByZXR1cm4gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQocmVjUmVzdWx0MSksIGZhbHNlKSwgX19yZWFkKHJlY1Jlc3VsdDIpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtwb2ludHNbMF0sIHBvaW50c1tlbmRdXTtcbiAgICB9O1xuICAgIERQb2x5Z29uLnByb3RvdHlwZS5nb0J5UGF0aCA9IGZ1bmN0aW9uIChjdHgsIHN0ZXBzKSB7XG4gICAgICAgIGlmIChzdGVwcyA9PT0gdm9pZCAwKSB7IHN0ZXBzID0gdGhpcy5sZW5ndGggLSAxOyB9XG4gICAgICAgIHZhciBzdGFydCA9IHRoaXMuZmlyc3Q7XG4gICAgICAgIGN0eC5tb3ZlVG8oc3RhcnQueCwgc3RhcnQueSk7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDw9IChzdGVwcyAlIHRoaXMubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSB0aGlzLmF0KGkpLCB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICBjdHgubGluZVRvKHgsIHkpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBEUG9seWdvbi5wcm90b3R5cGUuZ2V0SlNUU0dlb21ldHJ5ID0gZnVuY3Rpb24gKHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KSB7XG4gICAgICAgIHZhciB1bmlvbk9ySW50ZXJzZWN0aW9uID0gdW5pb25UaGF0ID09PSB1bmlvblRoaXM7XG4gICAgICAgIHZhciByZWFkZXIgPSBuZXcganN0c0lvLldLVFJlYWRlcigpO1xuICAgICAgICB2YXIgYSA9IHJlYWRlci5yZWFkKHRoaXMubm9Ib2xlcy50b1dLVCgpKTtcbiAgICAgICAgdmFyIGIgPSByZWFkZXIucmVhZChwLm5vSG9sZXMudG9XS1QoKSk7XG4gICAgICAgIGlmICghdW5pb25PckludGVyc2VjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGEuZGlmZmVyZW5jZShiKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLnVuaW9uKGIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCF1bmlvblRoaXMpIHtcbiAgICAgICAgICAgIHJldHVybiBhLmludGVyc2VjdGlvbihiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH07XG4gICAgRFBvbHlnb24ucHJvdG90eXBlLnNpbXBsZUxvZ2ljRnVuY3Rpb24gPSBmdW5jdGlvbiAocCwgdW5pb25UaGlzLCB1bmlvblRoYXQpIHtcbiAgICAgICAgdmFyIGVfMTksIF9hLCBlXzIwLCBfYiwgZV8yMSwgX2MsIGVfMjIsIF9kO1xuICAgICAgICB2YXIgYyA9IHRoaXMuZ2V0SlNUU0dlb21ldHJ5KHAsIHVuaW9uVGhpcywgdW5pb25UaGF0KTtcbiAgICAgICAgaWYgKGMpIHtcbiAgICAgICAgICAgIHZhciBjb29yZGluYXRlc18xID0gYy5nZXRDb29yZGluYXRlcygpO1xuICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzEubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGNvb3JkaW5hdGVzXzEucmVkdWNlKGZ1bmN0aW9uIChhaywgX2EsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsYXN0SW5kZXggPSBhay5sZW5ndGggLSAxO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBEUG9pbnQoeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdCA9IGFrW2xhc3RJbmRleF0uZmlyc3Q7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0LmVxdWFsKGZpcnN0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuZXh0UG9pbnQgPSBuZXcgRFBvaW50KGNvb3JkaW5hdGVzXzFbaW5kZXggKyAxXS54LCBjb29yZGluYXRlc18xW2luZGV4ICsgMV0ueSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFrW2xhc3RJbmRleF0ubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhay5wdXNoKG5ldyBEUG9seWdvbihbbmV4dFBvaW50XSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFrW2xhc3RJbmRleF0ucHVzaCh0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWs7XG4gICAgICAgICAgICAgICAgfSwgW25ldyBEUG9seWdvbihbbmV3IERQb2ludChjb29yZGluYXRlc18xWzBdLngsIGNvb3JkaW5hdGVzXzFbMF0ueSldKV0pO1xuICAgICAgICAgICAgICAgIGlmICh1bmlvblRoYXQgJiYgdW5pb25UaGlzICYmIHJlc3VsdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMSA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCk7ICFyZXN1bHRfMV8xLmRvbmU7IHJlc3VsdF8xXzEgPSByZXN1bHRfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHJlc3VsdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIF9sb29wXzYgPSBmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmhhcyhyLmZpcnN0KSAmJiAhcS5lcXVhbChyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gcS5maW5kSW5kZXgoci5maXJzdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoX2UgPSBxLnBvaW50cykuc3BsaWNlLmFwcGx5KF9lLCBfX3NwcmVhZEFycmF5KFtpbmRleCwgMF0sIF9fcmVhZChyLnBvaW50cyksIGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiAhaC5lcXVhbChyKTsgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJjb250aW51ZVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcmVzdWx0XzIgPSAoZV8yMCA9IHZvaWQgMCwgX192YWx1ZXMocmVzdWx0KSksIHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCk7ICFyZXN1bHRfMl8xLmRvbmU7IHJlc3VsdF8yXzEgPSByZXN1bHRfMi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzJfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0ZV8xID0gX2xvb3BfNihyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZV8xID09PSBcImJyZWFrXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjBfMSkgeyBlXzIwID0geyBlcnJvcjogZV8yMF8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMl8xICYmICFyZXN1bHRfMl8xLmRvbmUgJiYgKF9iID0gcmVzdWx0XzIucmV0dXJuKSkgX2IuY2FsbChyZXN1bHRfMik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIwKSB0aHJvdyBlXzIwLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMTlfMSkgeyBlXzE5ID0geyBlcnJvcjogZV8xOV8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfMV8xICYmICFyZXN1bHRfMV8xLmRvbmUgJiYgKF9hID0gcmVzdWx0XzEucmV0dXJuKSkgX2EuY2FsbChyZXN1bHRfMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMTkpIHRocm93IGVfMTkuZXJyb3I7IH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuZmlsdGVyKGZ1bmN0aW9uIChoKSB7IHJldHVybiBoLmxlbmd0aCA+IDI7IH0pLm1hcChmdW5jdGlvbiAoaCkgeyByZXR1cm4gaC5jbG9zZSgpOyB9KTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciByZXN1bHRfMyA9IF9fdmFsdWVzKHJlc3VsdCksIHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCk7ICFyZXN1bHRfM18xLmRvbmU7IHJlc3VsdF8zXzEgPSByZXN1bHRfMy5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxID0gcmVzdWx0XzNfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfbG9vcF83ID0gZnVuY3Rpb24gKHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA8IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxLmVxdWFsKHIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmNvbnRhaW4oci5maXJzdCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEuaG9sZXMucHVzaChyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5maWx0ZXIoZnVuY3Rpb24gKGgpIHsgcmV0dXJuICFoLmVxdWFsKHIpOyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHJlc3VsdF80ID0gKGVfMjIgPSB2b2lkIDAsIF9fdmFsdWVzKHJlc3VsdCkpLCByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpOyAhcmVzdWx0XzRfMS5kb25lOyByZXN1bHRfNF8xID0gcmVzdWx0XzQubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzdWx0XzRfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXRlXzIgPSBfbG9vcF83KHIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVfMiA9PT0gXCJicmVha1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjJfMSkgeyBlXzIyID0geyBlcnJvcjogZV8yMl8xIH07IH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfNF8xICYmICFyZXN1bHRfNF8xLmRvbmUgJiYgKF9kID0gcmVzdWx0XzQucmV0dXJuKSkgX2QuY2FsbChyZXN1bHRfNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yMikgdGhyb3cgZV8yMi5lcnJvcjsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVfMjFfMSkgeyBlXzIxID0geyBlcnJvcjogZV8yMV8xIH07IH1cbiAgICAgICAgICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRfM18xICYmICFyZXN1bHRfM18xLmRvbmUgJiYgKF9jID0gcmVzdWx0XzMucmV0dXJuKSkgX2MuY2FsbChyZXN1bHRfMyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzIxKSB0aHJvdyBlXzIxLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0WzBdLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQubWFwKGZ1bmN0aW9uIChnKSB7IHJldHVybiBnLmNsb3NlKCk7IH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgRFBvbHlnb24uQ0FQX1JPVU5EID0gQ0FQX1JPVU5EO1xuICAgIERQb2x5Z29uLkNBUF9GTEFUID0gQ0FQX0ZMQVQ7XG4gICAgRFBvbHlnb24uQ0FQX1NRVUFSRSA9IENBUF9TUVVBUkU7XG4gICAgRFBvbHlnb24uV0tUX0xJTkVTVFJJTkcgPSAnTElORVNUUklORyc7XG4gICAgRFBvbHlnb24uV0tUX1BPTFlHT04gPSAnUE9MWUdPTic7XG4gICAgcmV0dXJuIERQb2x5Z29uO1xufSgpKTtcbmV4cG9ydCB7IERQb2x5Z29uIH07XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xuaW1wb3J0IHsgRExpbmUgfSBmcm9tICcuL0RMaW5lJztcbmltcG9ydCB7IERQb2x5Z29uIH0gZnJvbSAnLi9EUG9seWdvbic7XG5pbXBvcnQgeyBjaGVja0Z1bmN0aW9uLCBjcmVhdGVBcnJheSwgREdlbywgZGl2LCBpc0RlZkFuZE5vdE51bGwgfSBmcm9tICcuL3V0aWxzJztcbnZhciBkaWZmID0gMDtcbnZhciByYWRpYW5zUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHBzZXVkb01lcmNhdG9yUG9seWdvbiA9IG5ldyBEUG9seWdvbigpO1xudmFyIHdvcmxkR2VvZGV0aWNQb2x5Z29uID0gbmV3IERQb2x5Z29uKCk7XG5leHBvcnQgdmFyIEVBUlRIX1JBRElVU19JTl9NRVRFUlMgPSA2Mzc4MTM3O1xudmFyIEVBUlRIX0lOX01FVEVSUyA9IDIwMDM3NTA4LjM0O1xudmFyIERFR1JFRVNfSU5fRUFSVEggPSAxODA7XG52YXIgTUVURVJTX0lOX09ORV9ERUdSRUUgPSBFQVJUSF9JTl9NRVRFUlMgLyBERUdSRUVTX0lOX0VBUlRIO1xudmFyIERFR1JFRVNfSU5fT05FX01FVEVSID0gREVHUkVFU19JTl9FQVJUSCAvIEVBUlRIX0lOX01FVEVSUztcbmV4cG9ydCB2YXIgSEFMRl9QSV9JTl9ERUdSRUUgPSA5MDtcbmV4cG9ydCB2YXIgUElfSU5fREVHUkVFID0gMTgwO1xuZXhwb3J0IHZhciBET1VCTEVfUElfSU5fREVHUkVFID0gMzYwO1xuZXhwb3J0IHZhciBQSV9UT19ERUdSRUUgPSBNYXRoLlBJIC8gUElfSU5fREVHUkVFO1xuZXhwb3J0IHZhciBERUdSRUVfVE9fUEkgPSBQSV9JTl9ERUdSRUUgLyBNYXRoLlBJO1xudmFyIERQb2ludCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRFBvaW50KHgsIHksIHopIHtcbiAgICAgICAgaWYgKHggPT09IHZvaWQgMCkgeyB4ID0gMDsgfVxuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHRoaXMueiA9IHo7XG4gICAgICAgIHRoaXMucHJvcGVydGllcyA9IHt9O1xuICAgIH1cbiAgICBEUG9pbnQuemVybyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoKTtcbiAgICB9O1xuICAgIERQb2ludC5wYXJzZSA9IGZ1bmN0aW9uIChjLCBmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgdmFyIF9hID0gYywgbGF0ID0gX2EubGF0LCBsb24gPSBfYS5sb24sIF9iID0gX2EubG5nLCBsbmcgPSBfYiA9PT0gdm9pZCAwID8gbG9uIDogX2IsIGFsdCA9IF9hLmFsdDtcbiAgICAgICAgaWYgKGxhdCAmJiBsbmcpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGxuZywgbGF0LCBhbHQgIT09IG51bGwgJiYgYWx0ICE9PSB2b2lkIDAgPyBhbHQgOiAwKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2MgPSBjLCB4ID0gX2MueCwgeSA9IF9jLnksIHogPSBfYy56LCBwcm9wZXJ0aWVzID0gX19yZXN0KF9jLCBbXCJ4XCIsIFwieVwiLCBcInpcIl0pO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHgpICYmIGlzRGVmQW5kTm90TnVsbCh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgeikuc2V0UHJvcGVydGllcyhwcm9wZXJ0aWVzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdCA9IGM7XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdQb2ludCcpIHtcbiAgICAgICAgICAgIHQgPSBjLmNvb3JkaW5hdGVzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjLnR5cGUgPT09ICdGZWF0dXJlJykge1xuICAgICAgICAgICAgdmFyIGYgPSBEUG9pbnQucGFyc2UoYy5nZW9tZXRyeSwgZm9ybWF0KTtcbiAgICAgICAgICAgIGYucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCBjLnByb3BlcnRpZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm1hdC5yZXBsYWNlKC9bXngtel0vZ21pdSwgJycpXG4gICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAucmVkdWNlKGZ1bmN0aW9uIChhLCBrLCBpbmRleCkge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHN3aXRjaCAoaykge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3gnOlxuICAgICAgICAgICAgICAgICAgICBhLnggPSAoX2EgPSB0W2luZGV4XSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICAgICAgICAgIGEueSA9IChfYiA9IHRbaW5kZXhdKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd6JzpcbiAgICAgICAgICAgICAgICAgICAgYS56ID0gdFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSwgbmV3IERQb2ludCgpKTtcbiAgICB9O1xuICAgIERQb2ludC5wYXJzZUZyb21XS1QgPSBmdW5jdGlvbiAod2t0KSB7XG4gICAgICAgIHZhciByZWdleHAgPSAvUE9JTlQgXFwoKD88ZGF0YT4oPzooPyFcXCkpLikqPylcXCkkL21pdTtcbiAgICAgICAgdmFyIGRhdGEgPSB3a3QudHJpbSgpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIHZhciByZXMgPSByZWdleHAuZXhlYyhkYXRhKTtcbiAgICAgICAgdmFyIF9hID0gX19yZWFkKHJlcy5ncm91cHMuZGF0YS5zcGxpdCgnICcpLm1hcChOdW1iZXIpLCAzKSwgeCA9IF9hWzBdLCB5ID0gX2FbMV0sIHogPSBfYVsyXTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgeik7XG4gICAgfTtcbiAgICBEUG9pbnQucmFuZG9tID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERQb2ludChNYXRoLnJhbmRvbSgpLCBNYXRoLnJhbmRvbSgpKTtcbiAgICB9O1xuICAgIERQb2ludC5nZXRUaWxlRnJvbVF1YWRLZXkgPSBmdW5jdGlvbiAocXVhZEtleSkge1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9pbnQoMCwgMCwgcXVhZEtleS5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gcC56OyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICB2YXIgbWFzayA9IDEgPDwgKGkgLSAxKTtcbiAgICAgICAgICAgIHN3aXRjaCAocXVhZEtleVtwLnogLSBpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJzAnOlxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICcxJzpcbiAgICAgICAgICAgICAgICAgICAgcC54IHw9IG1hc2s7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICAgICAgICBwLnkgfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgICAgICAgIHAueCB8PSBtYXNrO1xuICAgICAgICAgICAgICAgICAgICBwLnkgfD0gbWFzaztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIFF1YWRLZXkgZGlnaXQgc2VxdWVuY2UuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldFRpbGVGcm9tQ29vcmRzID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2dldFRpbGVGcm9tQ29vcmRzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZURlZ3JlZSh0aGlzKTtcbiAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKCh0aGlzLnggKyBQSV9JTl9ERUdSRUUpIC8gRE9VQkxFX1BJX0lOX0RFR1JFRSAqIChNYXRoLnBvdygyLCB6b29tKSkpO1xuICAgICAgICB2YXIgeSA9IE1hdGguZmxvb3IoKDEgLSBNYXRoLmxvZyhNYXRoLnRhbih0aGlzLnkgKiBQSV9UT19ERUdSRUUpICsgMSAvIE1hdGguY29zKHRoaXMueSAqIFBJX1RPX0RFR1JFRSkpIC8gTWF0aC5QSSkgLyAyICogKE1hdGgucG93KDIsIHpvb20pKSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvaW50KHgsIHksIHpvb20pO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRRdWFkS2V5RnJvbVRpbGUgPSBmdW5jdGlvbiAoem9vbSkge1xuICAgICAgICBpZiAoem9vbSA9PT0gdm9pZCAwKSB7IHpvb20gPSB0aGlzLno7IH1cbiAgICAgICAgdmFyIHF1YWRLZXkgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IHpvb207IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IDA7XG4gICAgICAgICAgICB2YXIgbWFzayA9IDEgPDwgKGkgLSAxKTtcbiAgICAgICAgICAgIGlmICgodGhpcy54ICYgbWFzaykgIT09IDApIHtcbiAgICAgICAgICAgICAgICBkaWdpdCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCh0aGlzLnkgJiBtYXNrKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGRpZ2l0Kys7XG4gICAgICAgICAgICAgICAgZGlnaXQrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1YWRLZXkucHVzaChkaWdpdCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHF1YWRLZXkuam9pbignJyk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmdldENvb3Jkc0Zyb21UaWxlID0gZnVuY3Rpb24gKHpvb20pIHtcbiAgICAgICAgaWYgKHpvb20gPT09IHZvaWQgMCkgeyB6b29tID0gdGhpcy56OyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2dldENvb3Jkc0Zyb21UaWxlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVVJbnQodGhpcyk7XG4gICAgICAgIHZhciBuID0gTWF0aC5QSSAtIDIgKiBNYXRoLlBJICogdGhpcy55IC8gKE1hdGgucG93KDIsIHpvb20pKTtcbiAgICAgICAgdmFyIHggPSB0aGlzLnggLyAoTWF0aC5wb3coMiwgem9vbSkpICogRE9VQkxFX1BJX0lOX0RFR1JFRSAtIFBJX0lOX0RFR1JFRTtcbiAgICAgICAgdmFyIHkgPSBQSV9JTl9ERUdSRUUgLyBNYXRoLlBJICogTWF0aC5hdGFuKChNYXRoLmV4cChuKSAtIE1hdGguZXhwKC1uKSkgLyAyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoeCwgeSwgem9vbSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvQ29vcmRzID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoL1teeC16XS9nbWl1LCAnJykuc3BsaXQoJycpXG4gICAgICAgICAgICAubWFwKGZ1bmN0aW9uIChrKSB7IHJldHVybiAoe1xuICAgICAgICAgICAgeDogX3RoaXMueCxcbiAgICAgICAgICAgIHk6IF90aGlzLnksXG4gICAgICAgICAgICB6OiBfdGhpcy56XG4gICAgICAgIH0pW2tdOyB9KVxuICAgICAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gciAhPT0gdW5kZWZpbmVkOyB9KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9HZW9KU09OID0gZnVuY3Rpb24gKGZvcm1hdCkge1xuICAgICAgICBpZiAoZm9ybWF0ID09PSB2b2lkIDApIHsgZm9ybWF0ID0gREdlby5wYXJzZUZvcm1hdDsgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ1BvaW50JyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiB0aGlzLnRvQ29vcmRzKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUudG9HZW9KU09ORmVhdHVyZSA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICAgICAgaWYgKGZvcm1hdCA9PT0gdm9pZCAwKSB7IGZvcm1hdCA9IERHZW8ucGFyc2VGb3JtYXQ7IH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICAgIHByb3BlcnRpZXM6IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgZ2VvbWV0cnk6IHRoaXMudG9HZW9KU09OKGZvcm1hdClcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZmluZExpbmUgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kTGluZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyhwKTtcbiAgICAgICAgaWYgKHRoaXMuZXF1YWwocCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZpbmRMaW5lKHAuY2xvbmUoKS5tb3ZlKDAsIDEpKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgYSA9IHRoaXMueSAtIHAueSAtIGRpZmY7XG4gICAgICAgIHZhciBiID0gcC54IC0gdGhpcy54IC0gZGlmZjtcbiAgICAgICAgdmFyIGMgPSB0aGlzLnggKiBwLnkgLSBwLnggKiB0aGlzLnkgLSBkaWZmO1xuICAgICAgICBpZiAoYSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBETGluZSgwLCAxLCBjIC8gYiwgdGhpcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRExpbmUoMSwgMCwgYyAvIGEsIHRoaXMsIHApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRExpbmUoYSwgYiwgYywgdGhpcywgcCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZpbmRJbm5lckFuZ2xlID0gZnVuY3Rpb24gKHAxLCBwMykge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kSW5uZXJBbmdsZScpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwMScpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnMocDEpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncDMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHAzKTtcbiAgICAgICAgdmFyIGExID0gdGhpcy5maW5kTGluZShwMSkuZ2V0RmkoKTtcbiAgICAgICAgdmFyIGEyID0gdGhpcy5maW5kTGluZShwMykuZ2V0RmkoKTtcbiAgICAgICAgaWYgKGEyID49IGExKSB7XG4gICAgICAgICAgICByZXR1cm4gYTIgLSBhMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTIgKyBNYXRoLlBJICogMiAtIGExO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiXCIuY29uY2F0KHRoaXMueCwgXCIgXCIpLmNvbmNhdCh0aGlzLnkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLngsIHRoaXMueV07XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmhlaWdodCA9IGZ1bmN0aW9uICh6KSB7XG4gICAgICAgIHRoaXMueiA9IHo7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS50b1dLVCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICByZXR1cm4gXCJQT0lOVCAoXCIuY29uY2F0KHgsIFwiIFwiKS5jb25jYXQoeSwgXCIpXCIpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXN0YW5jZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ2Rpc3RhbmNlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApO1xuICAgICAgICB2YXIgZHggPSBwLnggLSB0aGlzLng7XG4gICAgICAgIHZhciBkeSA9IHAueSAtIHRoaXMueTtcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmRpc3RhbmNlM2QgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkaXN0YW5jZTNkJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZU1ldGVycyh0aGlzKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3AnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHApXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcy56JylcbiAgICAgICAgICAgIC5zaG91bGRFeGlzdCh0aGlzLnopXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgncC56JylcbiAgICAgICAgICAgIC5zaG91bGRFeGlzdChwLnopO1xuICAgICAgICB2YXIgZHggPSBwLnggLSB0aGlzLng7XG4gICAgICAgIHZhciBkeSA9IHAueSAtIHRoaXMueTtcbiAgICAgICAgdmFyIGR6ID0gcC56IC0gdGhpcy56O1xuICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5ICsgZHogKiBkeik7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFggPSBmdW5jdGlvbiAoeCkge1xuICAgICAgICB0aGlzLnggPSB0eXBlb2YgeCA9PT0gJ251bWJlcicgPyB4IDogeCh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFogPSBmdW5jdGlvbiAoeikge1xuICAgICAgICB0aGlzLnogPSB0eXBlb2YgeiA9PT0gJ251bWJlcicgPyB6IDogeih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFkgPSBmdW5jdGlvbiAoeSkge1xuICAgICAgICB0aGlzLnkgPSB0eXBlb2YgeSA9PT0gJ251bWJlcicgPyB5IDogeSh0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNldFByb3BlcnRpZXMgPSBmdW5jdGlvbiAodikge1xuICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSB0eXBlb2YgdiA9PT0gJ29iamVjdCcgPyB2IDogdih0aGlzKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcCA9IG5ldyBEUG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMueik7XG4gICAgICAgIHAucHJvcGVydGllcyA9IF9fYXNzaWduKHt9LCB0aGlzLnByb3BlcnRpZXMpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54ID4gcC54ICYmIHRoaXMueSA+IHAueTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubHQgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICByZXR1cm4gdGhpcy54IDwgcC54ICYmIHRoaXMueSA8IHAueTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZ3RPckVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3QocCkgfHwgdGhpcy5lcXVhbChwKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubHRPckVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubHQocCkgfHwgdGhpcy5lcXVhbChwKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIHggPSB0aGlzLnggKiBNYXRoLmNvcyhhKSAtIHRoaXMueSAqIE1hdGguc2luKGEpO1xuICAgICAgICB2YXIgeSA9IHRoaXMueCAqIE1hdGguc2luKGEpICsgdGhpcy55ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yb3RhdGUzZFggPSBmdW5jdGlvbiAoYSkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCB5ID0gX2EueSwgeiA9IF9hLno7XG4gICAgICAgIHRoaXMueSA9IHkgKiBNYXRoLmNvcyhhKSArIHogKiBNYXRoLnNpbihhKTtcbiAgICAgICAgdGhpcy56ID0gLXkgKiBNYXRoLnNpbihhKSArIHogKiBNYXRoLmNvcyhhKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdGF0ZTNkWSA9IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHggPSBfYS54LCB6ID0gX2EuejtcbiAgICAgICAgdGhpcy54ID0geCAqIE1hdGguY29zKGEpICsgeiAqIE1hdGguc2luKGEpO1xuICAgICAgICB0aGlzLnogPSAteCAqIE1hdGguc2luKGEpICsgeiAqIE1hdGguY29zKGEpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUucm90YXRlM2RaID0gZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgeCA9IF9hLngsIHkgPSBfYS55O1xuICAgICAgICB0aGlzLnggPSB4ICogTWF0aC5jb3MoYSkgLSB5ICogTWF0aC5zaW4oYSk7XG4gICAgICAgIHRoaXMueSA9IC14ICogTWF0aC5zaW4oYSkgKyB5ICogTWF0aC5jb3MoYSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tb3ZlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCArIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICsgeC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKyB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCArIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSArIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKyB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kZWdyZWVUb01ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignZGVncmVlVG9NZXRlcnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpO1xuICAgICAgICB2YXIgeCA9ICgodGhpcy54ICsgUElfSU5fREVHUkVFKSAlIERPVUJMRV9QSV9JTl9ERUdSRUUgLSBQSV9JTl9ERUdSRUUpICogTUVURVJTX0lOX09ORV9ERUdSRUU7XG4gICAgICAgIHZhciB5ID0gKE1hdGgubG9nKE1hdGgudGFuKCgodGhpcy55ICsgSEFMRl9QSV9JTl9ERUdSRUUpICUgUElfSU5fREVHUkVFKSAqXG4gICAgICAgICAgICAoTWF0aC5QSSAvIERPVUJMRV9QSV9JTl9ERUdSRUUpKSkgLyBQSV9UT19ERUdSRUUpICogTUVURVJTX0lOX09ORV9ERUdSRUU7XG4gICAgICAgIHRoaXMueCA9IHg7XG4gICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tZXRlcnNUb0RlZ3JlZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbignbWV0ZXJzVG9EZWdyZWUnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICB2YXIgbG9uID0gdGhpcy54ICogREVHUkVFU19JTl9PTkVfTUVURVI7XG4gICAgICAgIHZhciBsYXQgPSBNYXRoLmF0YW4oTWF0aC5wb3coTWF0aC5FLCAoKHRoaXMueSAvIE1FVEVSU19JTl9PTkVfREVHUkVFKSAqIFBJX1RPX0RFR1JFRSkpKSAqXG4gICAgICAgICAgICAoRE9VQkxFX1BJX0lOX0RFR1JFRSAvIE1hdGguUEkpIC0gSEFMRl9QSV9JTl9ERUdSRUU7XG4gICAgICAgIHRoaXMueCA9IGxvbjtcbiAgICAgICAgdGhpcy55ID0gbGF0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGVncmVlVG9SYWRpYW5zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdkZWdyZWVUb1JhZGlhbnMnKVxuICAgICAgICAgICAgLmNoZWNrQXJndW1lbnQoJ3RoaXMnKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMpO1xuICAgICAgICByZXR1cm4gdGhpcy5zY2FsZShQSV9UT19ERUdSRUUpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5yYWRpYW5zVG9EZWdyZWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBjaGVja0Z1bmN0aW9uKCdyYWRpYW5zVG9EZWdyZWVzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVJhZGlhbnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlKERFR1JFRV9UT19QSSk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJhZGlhbnNUb01ldGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2hlY2tGdW5jdGlvbigncmFkaWFuc1RvTWV0ZXJzJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCd0aGlzJylcbiAgICAgICAgICAgIC5zaG91bGRCZVJhZGlhbnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnJhZGlhbnNUb0RlZ3JlZXMoKS5kZWdyZWVUb01ldGVycygpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5tZXRlcnNUb1JhZGlhbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ21ldGVyc1RvUmFkaWFucycpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVNZXRlcnModGhpcyk7XG4gICAgICAgIHJldHVybiB0aGlzLm1ldGVyc1RvRGVncmVlKCkuZGVncmVlVG9SYWRpYW5zKCk7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLnJvdW5kKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGgucm91bmQodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMueCA9IE1hdGguY2VpbCh0aGlzLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLmNlaWwodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmZsb29yID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLnggPSBNYXRoLmZsb29yKHRoaXMueCk7XG4gICAgICAgIHRoaXMueSA9IE1hdGguZmxvb3IodGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnRvRml4ZWQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICBpZiAobiA9PT0gdm9pZCAwKSB7IG4gPSAyOyB9XG4gICAgICAgIHRoaXMueCA9IHBhcnNlRmxvYXQodGhpcy54LnRvRml4ZWQobikpO1xuICAgICAgICB0aGlzLnkgPSBwYXJzZUZsb2F0KHRoaXMueS50b0ZpeGVkKG4pKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5hYnModGhpcy54KTtcbiAgICAgICAgdGhpcy55ID0gTWF0aC5hYnModGhpcy55KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNjYWxlID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAqIHgueDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55ICogeC55O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh4LnopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKiB4Lno7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IHRoaXMueCAqIHg7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAqIHk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHopKSB7XG4gICAgICAgICAgICAgICAgelYgPSB0aGlzLnogKiB6O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5kaXZpZGUgPSBmdW5jdGlvbiAoeCwgeSwgeikge1xuICAgICAgICBpZiAoeSA9PT0gdm9pZCAwKSB7IHkgPSB4OyB9XG4gICAgICAgIHZhciB4ViA9IDA7XG4gICAgICAgIHZhciB5ViA9IDA7XG4gICAgICAgIHZhciB6ViA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54IC8geC54O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgLyB4Lnk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAvIHguejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHhWID0gdGhpcy54IC8geDtcbiAgICAgICAgICAgIHlWID0gdGhpcy55IC8geTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IHRoaXMueiAvIHo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy54ID0geFY7XG4gICAgICAgIHRoaXMueSA9IHlWO1xuICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHpWKSkge1xuICAgICAgICAgICAgdGhpcy56ID0gelY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBEUG9pbnQucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIGlmICh5ID09PSB2b2lkIDApIHsgeSA9IHg7IH1cbiAgICAgICAgdmFyIHhWID0gMDtcbiAgICAgICAgdmFyIHlWID0gMDtcbiAgICAgICAgdmFyIHpWID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoeCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggJSB4Lng7XG4gICAgICAgICAgICB5ViA9IHRoaXMueSAlIHgueTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeC56KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICUgeC56O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgeFYgPSB0aGlzLnggJSB4O1xuICAgICAgICAgICAgeVYgPSB0aGlzLnkgJSB5O1xuICAgICAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh0aGlzLnopICYmIGlzRGVmQW5kTm90TnVsbCh6KSkge1xuICAgICAgICAgICAgICAgIHpWID0gdGhpcy56ICUgejtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnggPSB4VjtcbiAgICAgICAgdGhpcy55ID0geVY7XG4gICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwoelYpKSB7XG4gICAgICAgICAgICB0aGlzLnogPSB6VjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gKHgsIHksIHopIHtcbiAgICAgICAgaWYgKHkgPT09IHZvaWQgMCkgeyB5ID0geDsgfVxuICAgICAgICB2YXIgeFYgPSAwO1xuICAgICAgICB2YXIgeVYgPSAwO1xuICAgICAgICB2YXIgelYgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICh4IGluc3RhbmNlb2YgRFBvaW50KSB7XG4gICAgICAgICAgICB4ViA9IGRpdih0aGlzLngsIHgueCk7XG4gICAgICAgICAgICB5ViA9IGRpdih0aGlzLnksIHgueSk7XG4gICAgICAgICAgICBpZiAoaXNEZWZBbmROb3ROdWxsKHRoaXMueikgJiYgaXNEZWZBbmROb3ROdWxsKHgueikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IGRpdih0aGlzLnosIHgueik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB4ViA9IGRpdih0aGlzLngsIHgpO1xuICAgICAgICAgICAgeVYgPSBkaXYodGhpcy55LCB5KTtcbiAgICAgICAgICAgIGlmIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSAmJiBpc0RlZkFuZE5vdE51bGwoeikpIHtcbiAgICAgICAgICAgICAgICB6ViA9IGRpdih0aGlzLnosIHopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMueCA9IHhWO1xuICAgICAgICB0aGlzLnkgPSB5VjtcbiAgICAgICAgaWYgKGlzRGVmQW5kTm90TnVsbCh6VikpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHpWO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5lcXVhbCA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnggPT09IHAueCAmJiB0aGlzLnkgPT09IHAueSAmJiB0aGlzLnogPT09IHAuejtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUubGlrZSA9IGZ1bmN0aW9uIChwLCBkKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgaWYgKGQgPT09IHZvaWQgMCkgeyBkID0gMC4wMDE7IH1cbiAgICAgICAgaWYgKHRoaXMuZXF1YWwocCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsaWtlWCA9IE1hdGguYWJzKHRoaXMueCAtIHAueCkgPCBkO1xuICAgICAgICB2YXIgbGlrZVkgPSBNYXRoLmFicyh0aGlzLnkgLSBwLnkpIDwgZDtcbiAgICAgICAgdmFyIGxpa2VaID0gTWF0aC5hYnMoKChfYiA9IChfYSA9IHRoaXMueikgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogcC56KSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAwKSAtICgoX2QgPSAoX2MgPSBwLnopICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IHRoaXMueikgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMCkpIDwgZDtcbiAgICAgICAgcmV0dXJuIGxpa2VYICYmIGxpa2VZICYmIGxpa2VaO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5mbGlwVmVydGljYWxseSA9IGZ1bmN0aW9uIChzaXplKSB7XG4gICAgICAgIHZhciB2ID0gc2l6ZTtcbiAgICAgICAgaWYgKHNpemUgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHYgPSBzaXplLnk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy55ID0gdiAtIHRoaXMueTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsaWtlUmFkaWFuc1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHJhZGlhbnNQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJhZGlhbnNQb2x5Z29uLnB1c2gobmV3IERQb2ludCgtTWF0aC5QSSwgLU1hdGguUEkgLyAyKSwgbmV3IERQb2ludChNYXRoLlBJLCBNYXRoLlBJIC8gMikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJhZGlhbnNQb2x5Z29uLnNpbXBsZUluY2x1ZGUodGhpcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsaWtlV29ybGRHZW9kZXRpY1N5c3RlbVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKHdvcmxkR2VvZGV0aWNQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHdvcmxkR2VvZGV0aWNQb2x5Z29uLnB1c2gobmV3IERQb2ludCgtMTgwLCAtOTApLCBuZXcgRFBvaW50KDE4MCwgOTApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiAhdGhpcy5saWtlUmFkaWFucyAmJiB3b3JsZEdlb2RldGljUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibGlrZVBzZXVkb01lcmNhdG9yXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocHNldWRvTWVyY2F0b3JQb2x5Z29uLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBzZXVkb01lcmNhdG9yUG9seWdvbi5wdXNoKG5ldyBEUG9pbnQoLTIwMDI2Mzc2LjM5LCAtMjAwNDg5NjYuMTApLCBuZXcgRFBvaW50KDIwMDI2Mzc2LjM5LCAyMDA0ODk2Ni4xMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICF0aGlzLmxpa2VSYWRpYW5zICYmICF0aGlzLmxpa2VXb3JsZEdlb2RldGljU3lzdGVtICYmIHBzZXVkb01lcmNhdG9yUG9seWdvbi5zaW1wbGVJbmNsdWRlKHRoaXMpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwid1wiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueDtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgdGhpcy54ID0geDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHkpIHtcbiAgICAgICAgICAgIHRoaXMueSA9IHk7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJhcmVhXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBjaGVja0Z1bmN0aW9uKCdhcmVhJylcbiAgICAgICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudyAqIHRoaXMuaDtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcImhpcFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY2hlY2tGdW5jdGlvbignaGlwJylcbiAgICAgICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAgICAgLnNob3VsZEJlTWV0ZXJzKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLncgKiB0aGlzLncgKyB0aGlzLmggKiB0aGlzLmgpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibWluXCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5taW4odGhpcy54LCB0aGlzLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwibWF4XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodGhpcy54LCB0aGlzLnkpO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaGlwUG9pbnRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBoaXAgPSB0aGlzLmhpcDtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBvaW50KGhpcCwgaGlwKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcInhQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHggPSB0aGlzLng7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB4KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcInlQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHkgPSB0aGlzLnk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh5LCB5KTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShEUG9pbnQucHJvdG90eXBlLCBcIndQb2ludFwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMueFBvaW50O1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KERQb2ludC5wcm90b3R5cGUsIFwiaFBvaW50XCIsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy55UG9pbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsYXRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueSA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsbmdcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJsb25cIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLng7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueCA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRFBvaW50LnByb3RvdHlwZSwgXCJhbHRcIiwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLno7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgIHRoaXMueiA9IHY7XG4gICAgICAgIH0sXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbiAgICBEUG9pbnQucHJvdG90eXBlLnNpbXBsZSA9IGZ1bmN0aW9uICh4S2V5LCB5S2V5LCB6S2V5KSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIGlmICh4S2V5ID09PSB2b2lkIDApIHsgeEtleSA9ICd4JzsgfVxuICAgICAgICBpZiAoeUtleSA9PT0gdm9pZCAwKSB7IHlLZXkgPSAneSc7IH1cbiAgICAgICAgaWYgKHpLZXkgPT09IHZvaWQgMCkgeyB6S2V5ID0gJ3onOyB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbigoX2EgPSB7fSwgX2FbeEtleV0gPSB0aGlzLngsIF9hW3lLZXldID0gdGhpcy55LCBfYSksIChpc0RlZkFuZE5vdE51bGwodGhpcy56KSA/IChfYiA9IHt9LFxuICAgICAgICAgICAgX2JbektleV0gPSB0aGlzLnosXG4gICAgICAgICAgICBfYikgOiB7fSkpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRJZkxlc3NUaGFuID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5tYXgodGhpcy54LCBwLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLm1heCh0aGlzLnksIHAueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5zZXRJZk1vcmVUaGFuID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdGhpcy54ID0gTWF0aC5taW4odGhpcy54LCBwLngpO1xuICAgICAgICB0aGlzLnkgPSBNYXRoLm1pbih0aGlzLnksIHAueSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5taW51cyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGUoLTEpO1xuICAgIH07XG4gICAgRFBvaW50LnByb3RvdHlwZS5vcnRob2Ryb21pY1BhdGggPSBmdW5jdGlvbiAocG9pbnQsIHBvaW50c0NvdW50KSB7XG4gICAgICAgIGlmIChwb2ludHNDb3VudCA9PT0gdm9pZCAwKSB7IHBvaW50c0NvdW50ID0gMzYwOyB9XG4gICAgICAgIGNoZWNrRnVuY3Rpb24oJ29ydGhvZHJvbWljUGF0aCcpXG4gICAgICAgICAgICAuY2hlY2tBcmd1bWVudCgndGhpcycpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUodGhpcylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdwb2ludCcpXG4gICAgICAgICAgICAuc2hvdWxkQmVEZWdyZWUocG9pbnQpO1xuICAgICAgICB2YXIgdCA9IHRoaXMuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKTtcbiAgICAgICAgdmFyIHAgPSBwb2ludC5jbG9uZSgpLmRlZ3JlZVRvUmFkaWFucygpO1xuICAgICAgICB2YXIgZCA9IE1hdGguc2luKHAueCAtIHQueCk7XG4gICAgICAgIHZhciBzdGVwID0gKHAueCAtIHQueCkgLyAocG9pbnRzQ291bnQgLSAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9seWdvbihjcmVhdGVBcnJheShwb2ludHNDb3VudClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKHYsIGkpIHtcbiAgICAgICAgICAgIHZhciB4ID0gdC54ICsgc3RlcCAqIGk7XG4gICAgICAgICAgICB2YXIgeSA9IE1hdGguYXRhbigoTWF0aC50YW4odC55KSAqIE1hdGguc2luKHAueCAtIHgpKSAvIGQgK1xuICAgICAgICAgICAgICAgIChNYXRoLnRhbihwLnkpICogTWF0aC5zaW4oeCAtIHQueCkpIC8gZCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQb2ludCh4LCB5KS5yYWRpYW5zVG9EZWdyZWVzKCk7XG4gICAgICAgIH0pKTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuc29ydEJ5RGlzdGFuY2UgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICByZXR1cm4gcFxuICAgICAgICAgICAgLmNsb25lKClcbiAgICAgICAgICAgIC5tYXAoZnVuY3Rpb24gKGQsIGluZGV4KSB7XG4gICAgICAgICAgICBkLnByb3BlcnRpZXMuZGlzdGFuY2UgPSBkLmRpc3RhbmNlKF90aGlzKTtcbiAgICAgICAgICAgIGQucHJvcGVydGllcy5pbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgcmV0dXJuIGQ7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuc29ydChmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYS5wcm9wZXJ0aWVzLmRpc3RhbmNlIC0gYi5wcm9wZXJ0aWVzLmRpc3RhbmNlOyB9KTtcbiAgICB9O1xuICAgIERQb2ludC5wcm90b3R5cGUuY2FsY3VsYXRlQWx0aXR1ZGVCeURpc3RhbmNlQmV0d2VlblBvaW50cyA9IGZ1bmN0aW9uIChwMSwgcDIpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgaWYgKHAxLmFsdCA9PT0gcDIuYWx0KSB7XG4gICAgICAgICAgICB0aGlzLmFsdCA9IHAxLmFsdDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciBtaW5BbHQgPSBNYXRoLm1pbigoX2EgPSBwMS5hbHQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDAsIChfYiA9IHAyLmFsdCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCk7XG4gICAgICAgICAgICB2YXIgbWF4QWx0ID0gTWF0aC5tYXgoKF9jID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwLCAoX2QgPSBwMi5hbHQpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDApO1xuICAgICAgICAgICAgdmFyIGRBbHQgPSBtYXhBbHQgLSBtaW5BbHQ7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UxID0gdGhpcy5kaXN0YW5jZShwMSk7XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2UyID0gdGhpcy5kaXN0YW5jZShwMik7XG4gICAgICAgICAgICB2YXIgdG90YWxEaXN0YW5jZSA9IGRpc3RhbmNlMSArIGRpc3RhbmNlMjtcbiAgICAgICAgICAgIGlmICgoKF9lID0gcDEuYWx0KSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiAwKSA9PT0gbWluQWx0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hbHQgPSBtaW5BbHQgKyBkaXN0YW5jZTEgLyB0b3RhbERpc3RhbmNlICogZEFsdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuYWx0ID0gbWluQWx0ICsgZGlzdGFuY2UyIC8gdG90YWxEaXN0YW5jZSAqIGRBbHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfTtcbiAgICByZXR1cm4gRFBvaW50O1xufSgpKTtcbmV4cG9ydCB7IERQb2ludCB9O1xuIiwiaW1wb3J0IHsgRFBvaW50LCBFQVJUSF9SQURJVVNfSU5fTUVURVJTIH0gZnJvbSAnLi9EUG9pbnQnO1xuaW1wb3J0IHsgRFBvbHlnb24gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IGNoZWNrRnVuY3Rpb24gfSBmcm9tICcuL3V0aWxzJztcbnZhciBEQ2lyY2xlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEQ2lyY2xlKGNlbnRlciwgcikge1xuICAgICAgICBpZiAoY2VudGVyID09PSB2b2lkIDApIHsgY2VudGVyID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICBpZiAociA9PT0gdm9pZCAwKSB7IHIgPSAwOyB9XG4gICAgICAgIHRoaXMuY2VudGVyID0gY2VudGVyO1xuICAgICAgICB0aGlzLnIgPSByO1xuICAgIH1cbiAgICBEQ2lyY2xlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiKFwiLmNvbmNhdCh0aGlzLmNlbnRlci50b1N0cmluZygpLCBcIiwgXCIpLmNvbmNhdCh0aGlzLnIsIFwiKVwiKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmdldFZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4geyBjZW50ZXI6IHRoaXMuY2VudGVyLCByOiB0aGlzLnIgfTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IERDaXJjbGUodGhpcy5jZW50ZXIsIHRoaXMucik7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9pbnRzID0gZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgaWYgKHRoaXMuZXF1YWwoYykpIHtcbiAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgX2EgPSB0aGlzLCBfYiA9IF9hLmNlbnRlciwgeDAgPSBfYi54LCB5MCA9IF9iLnksIHIwID0gX2EucjtcbiAgICAgICAgdmFyIF9jID0gYy5jZW50ZXIsIHgxID0gX2MueCwgeTEgPSBfYy55LCByMSA9IGMucjtcbiAgICAgICAgdmFyIHIwMiA9IHIwICogcjA7XG4gICAgICAgIHZhciBkID0gdGhpcy5jZW50ZXIuZGlzdGFuY2UoYy5jZW50ZXIpO1xuICAgICAgICB2YXIgYSA9IChyMDIgLSByMSAqIHIxICsgZCAqIGQpIC8gKDIgKiBkKTtcbiAgICAgICAgdmFyIGggPSBNYXRoLnNxcnQocjAyIC0gYSAqIGEpO1xuICAgICAgICB2YXIgYWQgPSBhIC8gZDtcbiAgICAgICAgdmFyIGR5ID0geTEgLSB5MDtcbiAgICAgICAgdmFyIGR4ID0geDEgLSB4MDtcbiAgICAgICAgdmFyIGhkID0gaCAvIGQ7XG4gICAgICAgIHZhciB4MiA9IHgwICsgYWQgKiAoeDEgLSB4MCk7XG4gICAgICAgIHZhciB5MiA9IHkwICsgYWQgKiAoeTEgLSB5MCk7XG4gICAgICAgIHZhciB4MzEgPSB4MiArIGhkICogZHk7XG4gICAgICAgIHZhciB5MzEgPSB5MiAtIGhkICogZHg7XG4gICAgICAgIHZhciB4MzIgPSB4MiAtIGhkICogZHk7XG4gICAgICAgIHZhciB5MzIgPSB5MiArIGhkICogZHg7XG4gICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgaWYgKCFpc05hTih4MzEpICYmICFpc05hTih5MzEpKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgzMSwgeTMxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc05hTih4MzIpICYmICFpc05hTih5MzIpICYmICEoeDMxID09PSB4MzIgJiYgeTMxID09PSB5MzIpKSB7XG4gICAgICAgICAgICByZXMucHVzaChuZXcgRFBvaW50KHgzMiwgeTMyKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBjZW50ZXIgPSBfYS5jZW50ZXIsIHIgPSBfYS5yO1xuICAgICAgICByZXR1cm4gdGhpcy5jZW50ZXIuZXF1YWwoY2VudGVyKSAmJiB0aGlzLnIgPT09IHI7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9seWdvbkluc2lkZSA9IGZ1bmN0aW9uIChwb2ludENvdW50LCBzdGFydEFuZ2xlLCBzdG9wQW5nbGUpIHtcbiAgICAgICAgaWYgKHBvaW50Q291bnQgPT09IHZvaWQgMCkgeyBwb2ludENvdW50ID0gNjQ7IH1cbiAgICAgICAgaWYgKHN0YXJ0QW5nbGUgPT09IHZvaWQgMCkgeyBzdGFydEFuZ2xlID0gMDsgfVxuICAgICAgICBpZiAoc3RvcEFuZ2xlID09PSB2b2lkIDApIHsgc3RvcEFuZ2xlID0gMiAqIE1hdGguUEk7IH1cbiAgICAgICAgdmFyIHN0ZXAgPSAyICogTWF0aC5QSSAvIHBvaW50Q291bnQ7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgdmFyIGFuZ2xlID0gc3RhcnRBbmdsZTtcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgc3RvcEFuZ2xlIC0gc3RlcCkge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2gobmV3IERQb2ludCh0aGlzLnIpLnNjYWxlKE1hdGguY29zKGFuZ2xlKSwgTWF0aC5zaW4oYW5nbGUpKVxuICAgICAgICAgICAgICAgIC5tb3ZlKHRoaXMuY2VudGVyKSk7XG4gICAgICAgICAgICBhbmdsZSArPSBzdGVwO1xuICAgICAgICB9XG4gICAgICAgIHZhciB4ID0gdGhpcy5yICogTWF0aC5jb3Moc3RvcEFuZ2xlKSArIHRoaXMuY2VudGVyLng7XG4gICAgICAgIHZhciB5ID0gdGhpcy5yICogTWF0aC5zaW4oc3RvcEFuZ2xlKSArIHRoaXMuY2VudGVyLnk7XG4gICAgICAgIHBvaW50cy5wdXNoKG5ldyBEUG9pbnQoeCwgeSkpO1xuICAgICAgICByZXR1cm4gbmV3IERQb2x5Z29uKHBvaW50cyk7XG4gICAgfTtcbiAgICBEQ2lyY2xlLnByb3RvdHlwZS5maW5kUG9seWdvbkluc2lkZU9uU3BoZXJlID0gZnVuY3Rpb24gKHBvaW50Q291bnQsIHN0YXJ0QW5nbGUsIHN0b3BBbmdsZSkge1xuICAgICAgICBpZiAocG9pbnRDb3VudCA9PT0gdm9pZCAwKSB7IHBvaW50Q291bnQgPSA2NDsgfVxuICAgICAgICBpZiAoc3RhcnRBbmdsZSA9PT0gdm9pZCAwKSB7IHN0YXJ0QW5nbGUgPSAwOyB9XG4gICAgICAgIGlmIChzdG9wQW5nbGUgPT09IHZvaWQgMCkgeyBzdG9wQW5nbGUgPSAyICogTWF0aC5QSTsgfVxuICAgICAgICBjaGVja0Z1bmN0aW9uKCdmaW5kUG9seWdvbkluc2lkZU9uU3BoZXJlJylcbiAgICAgICAgICAgIC5jaGVja0FyZ3VtZW50KCdjZW50ZXInKVxuICAgICAgICAgICAgLnNob3VsZEJlRGVncmVlKHRoaXMuY2VudGVyKTtcbiAgICAgICAgdmFyIHN0ZXAgPSAyICogTWF0aC5QSSAvIHBvaW50Q291bnQ7XG4gICAgICAgIHZhciBwb2ludHMgPSBbXTtcbiAgICAgICAgdmFyIGFuZ2xlID0gc3RhcnRBbmdsZTtcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgc3RvcEFuZ2xlIC0gc3RlcCkge1xuICAgICAgICAgICAgcG9pbnRzLnB1c2godGhpcy5zcGhlcmVPZmZzZXQoYW5nbGUpKTtcbiAgICAgICAgICAgIGFuZ2xlICs9IHN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgcG9pbnRzLnB1c2godGhpcy5zcGhlcmVPZmZzZXQoc3RvcEFuZ2xlKSk7XG4gICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24ocG9pbnRzKTtcbiAgICB9O1xuICAgIERDaXJjbGUucHJvdG90eXBlLnNwaGVyZU9mZnNldCA9IGZ1bmN0aW9uIChiZWFyaW5nLCBlYXJ0aFJhZGl1cykge1xuICAgICAgICBpZiAoZWFydGhSYWRpdXMgPT09IHZvaWQgMCkgeyBlYXJ0aFJhZGl1cyA9IEVBUlRIX1JBRElVU19JTl9NRVRFUlM7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcy5jZW50ZXIuY2xvbmUoKS5kZWdyZWVUb1JhZGlhbnMoKSwgbG9uMSA9IF9hLngsIGxhdDEgPSBfYS55O1xuICAgICAgICB2YXIgZEJ5UiA9IHRoaXMuciAvIGVhcnRoUmFkaXVzO1xuICAgICAgICB2YXIgbGF0ID0gTWF0aC5hc2luKE1hdGguc2luKGxhdDEpICogTWF0aC5jb3MoZEJ5UikgK1xuICAgICAgICAgICAgTWF0aC5jb3MobGF0MSkgKiBNYXRoLnNpbihkQnlSKSAqIE1hdGguY29zKGJlYXJpbmcpKTtcbiAgICAgICAgdmFyIGxvbiA9IGxvbjEgK1xuICAgICAgICAgICAgTWF0aC5hdGFuMihNYXRoLnNpbihiZWFyaW5nKSAqIE1hdGguc2luKGRCeVIpICogTWF0aC5jb3MobGF0MSksIE1hdGguY29zKGRCeVIpIC0gTWF0aC5zaW4obGF0MSkgKiBNYXRoLnNpbihsYXQpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQobG9uLCBsYXQpLnJhZGlhbnNUb0RlZ3JlZXMoKTtcbiAgICB9O1xuICAgIHJldHVybiBEQ2lyY2xlO1xufSgpKTtcbmV4cG9ydCB7IERDaXJjbGUgfTtcbiIsInZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbnZhciBGYXN0U2VhcmNoID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBGYXN0U2VhcmNoKCkge1xuICAgICAgICB0aGlzLnNlYXJjaFN0b3JlID0ge307XG4gICAgfVxuICAgIEZhc3RTZWFyY2gucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChwb2ludHMpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBwb2ludHNfMSA9IF9fdmFsdWVzKHBvaW50cyksIHBvaW50c18xXzEgPSBwb2ludHNfMS5uZXh0KCk7ICFwb2ludHNfMV8xLmRvbmU7IHBvaW50c18xXzEgPSBwb2ludHNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2IgPSBwb2ludHNfMV8xLnZhbHVlLCB4ID0gX2IueCwgeSA9IF9iLnksIHogPSBfYi56O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zZWFyY2hTdG9yZVt4XVt5XSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFN0b3JlW3hdW3ldID0ge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoU3RvcmVbeF1beV1beiB8fCAndW5kZWZpbmVkJ10gPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBpZiAocG9pbnRzXzFfMSAmJiAhcG9pbnRzXzFfMS5kb25lICYmIChfYSA9IHBvaW50c18xLnJldHVybikpIF9hLmNhbGwocG9pbnRzXzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgfTtcbiAgICBGYXN0U2VhcmNoLnByb3RvdHlwZS5maW5kID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciB4ID0gX2EueCwgeSA9IF9hLnksIHogPSBfYS56O1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoU3RvcmVbeF1beV0pIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hTdG9yZVt4XVt5XVt6IHx8ICd1bmRlZmluZWQnXTtcbiAgICB9O1xuICAgIHJldHVybiBGYXN0U2VhcmNoO1xufSgpKTtcbmV4cG9ydCB7IEZhc3RTZWFyY2ggfTtcbiIsInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZEFycmF5ID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZEFycmF5KSB8fCBmdW5jdGlvbiAodG8sIGZyb20sIHBhY2spIHtcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAoYXIgfHwgIShpIGluIGZyb20pKSB7XG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xufTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uKG8pIHtcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IERQb2x5Z29uLCBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT04gfSBmcm9tICcuL0RQb2x5Z29uJztcbmltcG9ydCB7IEZhc3RTZWFyY2ggfSBmcm9tICcuL0Zhc3RTZWFyY2gnO1xuaW1wb3J0IHsgY3JlYXRlQXJyYXkgfSBmcm9tICcuL3V0aWxzJztcbmV4cG9ydCB2YXIgVHJhY2VNYXRyaXhWYWx1ZXM7XG4oZnVuY3Rpb24gKFRyYWNlTWF0cml4VmFsdWVzKSB7XG4gICAgVHJhY2VNYXRyaXhWYWx1ZXNbVHJhY2VNYXRyaXhWYWx1ZXNbXCJmXCJdID0gMF0gPSBcImZcIjtcbiAgICBUcmFjZU1hdHJpeFZhbHVlc1tUcmFjZU1hdHJpeFZhbHVlc1tcInRcIl0gPSAxXSA9IFwidFwiO1xufSkoVHJhY2VNYXRyaXhWYWx1ZXMgfHwgKFRyYWNlTWF0cml4VmFsdWVzID0ge30pKTtcbnZhciBnZXRCeVBvc2l0aW9uID0gZnVuY3Rpb24gKG0sIHAsIGRlZmF1bHRWYWx1ZSkge1xuICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9XG4gICAgaWYgKG1bcC55XSA9PT0gdW5kZWZpbmVkIHx8IG1bcC55XVtwLnhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIG1bcC55XVtwLnhdO1xufTtcbnZhciBzZXRCeVBvc2l0aW9uID0gZnVuY3Rpb24gKG0sIHAsIHZhbHVlKSB7XG4gICAgaWYgKG1bcC55XSA9PT0gdW5kZWZpbmVkIHx8IG1bcC55XVtwLnhdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbiAgICBtW3AueV1bcC54XSA9IHZhbHVlO1xuICAgIHJldHVybiBtW3AueV1bcC54XTtcbn07XG52YXIgVHJhY2VNYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFRyYWNlTWF0cml4KHNpemUsIGYpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICAgICAgdGhpcy5maW5kR3JvdXBCeUluZGV4ID0gZnVuY3Rpb24gKG0sIHMpIHtcbiAgICAgICAgICAgIHZhciByZXMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIGlmIChzICYmIGdldEJ5UG9zaXRpb24obSwgcykgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaChzKTtcbiAgICAgICAgICAgICAgICB2YXIgc3RhcnRJbmRleCA9IDA7XG4gICAgICAgICAgICAgICAgdmFyIG1hcmtlZCA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeChfdGhpcy5zaXplLCBmdW5jdGlvbiAoKSB7IHJldHVybiBUcmFjZU1hdHJpeFZhbHVlcy5mOyB9KTtcbiAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKG1hcmtlZCwgcywgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHN0YXJ0SW5kZXggPCByZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByID0gcmVzLmF0KHN0YXJ0SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gLTE7IGkgPCAyOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAtMTsgaiA8IDI7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERQb2ludChyLnggKyBpLCByLnkgKyBqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0QnlQb3NpdGlvbihtYXJrZWQsIHQsIFRyYWNlTWF0cml4VmFsdWVzLnQpID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEJ5UG9zaXRpb24obSwgdCwgVHJhY2VNYXRyaXhWYWx1ZXMuZikgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2godCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEJ5UG9zaXRpb24obWFya2VkLCB0LCBUcmFjZU1hdHJpeFZhbHVlcy50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RhcnRJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZmluZEFsbEdyb3Vwc0luTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICAgIHZhciBmaXJzdE1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0pO1xuICAgICAgICAgICAgaWYgKCFmaXJzdE1hcmspIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZ3JvdXAgPSBfdGhpcy5maW5kR3JvdXBCeUluZGV4KG0sIGZpcnN0TWFyayk7XG4gICAgICAgICAgICB2YXIgZ3JvdXBzID0gW2dyb3VwXTtcbiAgICAgICAgICAgIHZhciBncm91cFN1bSA9IGdyb3VwLmxlbmd0aDtcbiAgICAgICAgICAgIHZhciBhbGxHcm91cHMgPSBfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoZ3JvdXAucG9pbnRzKSwgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIGZzID0gbmV3IEZhc3RTZWFyY2goKTtcbiAgICAgICAgICAgIGZzLmFkZChhbGxHcm91cHMpO1xuICAgICAgICAgICAgd2hpbGUgKGdyb3VwU3VtIDwgX3RoaXMudG90YWxDb3VudEluTWF0cml4KG0pKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hcmsgPSBfdGhpcy5maW5kTWFya2VkKG0pO1xuICAgICAgICAgICAgICAgIHdoaWxlIChtYXJrICYmIGZzLmZpbmQobWFyaykpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyayA9IF90aGlzLmZpbmRNYXJrZWQobSwgbWFyayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBuZXh0R3JvdXAgPSBfdGhpcy5maW5kR3JvdXBCeUluZGV4KG0sIG1hcmspO1xuICAgICAgICAgICAgICAgIGdyb3VwU3VtICs9IG5leHRHcm91cC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgYWxsR3JvdXBzID0gX19zcHJlYWRBcnJheShfX3NwcmVhZEFycmF5KFtdLCBfX3JlYWQoYWxsR3JvdXBzKSwgZmFsc2UpLCBfX3JlYWQobmV4dEdyb3VwLnBvaW50cyksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBmcy5hZGQobmV4dEdyb3VwLnBvaW50cyk7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gobmV4dEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBncm91cHMuZmlsdGVyKGZ1bmN0aW9uIChnKSB7IHJldHVybiBnLmxlbmd0aCA+IDI7IH0pO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyYWNlR3JvdXAgPSBmdW5jdGlvbiAobSwgZ3JvdXApIHtcbiAgICAgICAgICAgIHZhciB0cmFjZURpcmVjdGlvbnMgPSBbXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgtMSwgLTEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAxKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMSwgLTEpLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgLTEpXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgdmFyIGxlZnQgPSBmdW5jdGlvbiAoZCkgeyByZXR1cm4gKGQgKyB0cmFjZURpcmVjdGlvbnMubGVuZ3RoICsgMSkgJSB0cmFjZURpcmVjdGlvbnMubGVuZ3RoOyB9O1xuICAgICAgICAgICAgdmFyIHJpZ2h0ID0gZnVuY3Rpb24gKGQpIHsgcmV0dXJuIChkICsgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aCAtIDEpICUgdHJhY2VEaXJlY3Rpb25zLmxlbmd0aDsgfTtcbiAgICAgICAgICAgIGlmIChncm91cC5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSBncm91cC5hdCgwKS5jbG9uZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRFBvbHlnb24oW3QsIHQsIHRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwb2ludHMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIHZhciBkaXJlY3Rpb24gPSAwO1xuICAgICAgICAgICAgdmFyIHByZXZEaXJlY3Rpb24gPSBJbmZpbml0eTtcbiAgICAgICAgICAgIHZhciBwID0gZ3JvdXAuYXQoMCk7XG4gICAgICAgICAgICB3aGlsZSAoIXAuZXF1YWwoZ3JvdXAuYXQoMCkpIHx8IHBvaW50cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRWYWx1ZSA9IGdldEJ5UG9zaXRpb24obSwgcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2RpcmVjdGlvbl0pKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHROZWlnaGJvdXJWYWx1ZSA9IGdldEJ5UG9zaXRpb24obSwgcC5jbG9uZSgpLm1vdmUodHJhY2VEaXJlY3Rpb25zW2xlZnQoZGlyZWN0aW9uKV0pKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRWYWx1ZSA9PT0gVHJhY2VNYXRyaXhWYWx1ZXMudCAmJiBuZXh0TmVpZ2hib3VyVmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IHJpZ2h0KGRpcmVjdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwcmV2RGlyZWN0aW9uICE9PSBkaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2gocCk7XG4gICAgICAgICAgICAgICAgICAgIHByZXZEaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHAgPSBwLmNsb25lKCkubW92ZSh0cmFjZURpcmVjdGlvbnNbZGlyZWN0aW9uXSk7XG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gbGVmdChsZWZ0KGRpcmVjdGlvbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBvaW50cy5hcHByb3hpbWF0aW9uKCkuY2xvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5jcmVhdGVIb2xlTWF0cml4ID0gZnVuY3Rpb24gKGdyb3VwKSB7XG4gICAgICAgICAgICB2YXIgZV8xLCBfYTtcbiAgICAgICAgICAgIHZhciBmdWxsVHJhY2VEaXJlY3Rpb25zID0gW1xuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoLTEsIDApLFxuICAgICAgICAgICAgICAgIG5ldyBEUG9pbnQoMCwgMSksXG4gICAgICAgICAgICAgICAgbmV3IERQb2ludCgxLCAwKSxcbiAgICAgICAgICAgICAgICBuZXcgRFBvaW50KDAsIC0xKVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGdyb3VwLnByZXBhcmVUb0Zhc3RTZWFyY2goKTtcbiAgICAgICAgICAgIHZhciB0bXBNYXRyaXggPSBUcmFjZU1hdHJpeFxuICAgICAgICAgICAgICAgIC5jcmVhdGVNYXRyaXgoX3RoaXMuc2l6ZSwgZnVuY3Rpb24gKHApIHsgcmV0dXJuIGdyb3VwLmZhc3RIYXMocCkgPyBUcmFjZU1hdHJpeFZhbHVlcy50IDogVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfSk7XG4gICAgICAgICAgICB2YXIgc3RhcnRDb29yZHMgPSBuZXcgRFBvbHlnb24oKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgX3RoaXMuc2l6ZS53OyBpKyspIHtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoaSwgLTEpKTtcbiAgICAgICAgICAgICAgICBzdGFydENvb3Jkcy5wdXNoKG5ldyBEUG9pbnQoaSwgX3RoaXMuc2l6ZS5oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF90aGlzLnNpemUuaDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KC0xLCBpKSk7XG4gICAgICAgICAgICAgICAgc3RhcnRDb29yZHMucHVzaChuZXcgRFBvaW50KF90aGlzLnNpemUudywgaSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHN0YXJ0Q29vcmRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBwb2ludCA9IHN0YXJ0Q29vcmRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGZ1bGxUcmFjZURpcmVjdGlvbnNfMSA9IChlXzEgPSB2b2lkIDAsIF9fdmFsdWVzKGZ1bGxUcmFjZURpcmVjdGlvbnMpKSwgZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEubmV4dCgpOyAhZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEuZG9uZTsgZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgPSBmdWxsVHJhY2VEaXJlY3Rpb25zXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGlyZWN0aW9uID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG1wUG9pbnQgPSBwb2ludC5jbG9uZSgpLm1vdmUoZGlyZWN0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdldEJ5UG9zaXRpb24odG1wTWF0cml4LCB0bXBQb2ludCwgVHJhY2VNYXRyaXhWYWx1ZXMudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IFRyYWNlTWF0cml4VmFsdWVzLmYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRCeVBvc2l0aW9uKHRtcE1hdHJpeCwgdG1wUG9pbnQsIFRyYWNlTWF0cml4VmFsdWVzLnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Q29vcmRzLnB1c2godG1wUG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnVsbFRyYWNlRGlyZWN0aW9uc18xXzEgJiYgIWZ1bGxUcmFjZURpcmVjdGlvbnNfMV8xLmRvbmUgJiYgKF9hID0gZnVsbFRyYWNlRGlyZWN0aW9uc18xLnJldHVybikpIF9hLmNhbGwoZnVsbFRyYWNlRGlyZWN0aW9uc18xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHQgPSBfdGhpcy5yZXZlcnNlTWF0cml4KHRtcE1hdHJpeCk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMudG90YWxDb3VudEluTWF0cml4KHQpID8gdCA6IG51bGw7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubSA9IFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGYpO1xuICAgIH1cbiAgICBUcmFjZU1hdHJpeC5wcm90b3R5cGUuZnVsbE1hdHJpeFRyYWNlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgZ3JvdXBzID0gdGhpcy5maW5kQWxsR3JvdXBzSW5NYXRyaXgodGhpcy5tKTtcbiAgICAgICAgdmFyIHBhdGhzID0gZ3JvdXBzLm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gX3RoaXMudHJhY2VHcm91cChfdGhpcy5tLCBnKTsgfSk7XG4gICAgICAgIHZhciBob2xlTWF0cml4cyA9IGdyb3Vwcy5tYXAodGhpcy5jcmVhdGVIb2xlTWF0cml4KTtcbiAgICAgICAgdmFyIGhvbGVzR3JvdXBzID0gaG9sZU1hdHJpeHMubWFwKGZ1bmN0aW9uIChtKSB7IHJldHVybiBtICYmIF90aGlzLmZpbmRBbGxHcm91cHNJbk1hdHJpeChtKTsgfSk7XG4gICAgICAgIHZhciBob2xlc1BhdGhzID0gaG9sZXNHcm91cHMubWFwKGZ1bmN0aW9uIChoZywgaW5kZXgpIHsgcmV0dXJuIGhnICYmIGhnLm1hcChmdW5jdGlvbiAoZykgeyByZXR1cm4gX3RoaXNcbiAgICAgICAgICAgIC50cmFjZUdyb3VwKGhvbGVNYXRyaXhzW2luZGV4XSwgZyk7IH0pLmZpbHRlcihmdW5jdGlvbiAocikgeyByZXR1cm4gci5sZW5ndGggPiBNSU5fUE9JTlRTX0lOX1ZBTElEX1BPTFlHT047IH0pOyB9KTtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5tYXAoZnVuY3Rpb24gKGcsIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgcmVzID0gcGF0aHNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKGhvbGVzR3JvdXBzW2luZGV4XSAmJiBob2xlc0dyb3Vwc1tpbmRleF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzLmhvbGVzID0gaG9sZXNQYXRoc1tpbmRleF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFRyYWNlTWF0cml4LnByb3RvdHlwZS5yZXZlcnNlTWF0cml4ID0gZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgcmV0dXJuIFRyYWNlTWF0cml4LmNyZWF0ZU1hdHJpeCh0aGlzLnNpemUsIGZ1bmN0aW9uIChwKSB7IHJldHVybiBnZXRCeVBvc2l0aW9uKG0sIHApID09PSBUcmFjZU1hdHJpeFZhbHVlcy5mID8gVHJhY2VNYXRyaXhWYWx1ZXMudCA6IFRyYWNlTWF0cml4VmFsdWVzLmY7IH0pO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLmZpbmRNYXJrZWQgPSBmdW5jdGlvbiAobSwgaW5pdCkge1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgdmFyIGluaSA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHMudzsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHMuaDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpbmkgJiYgaW5pdCkge1xuICAgICAgICAgICAgICAgICAgICBpID0gaW5pdC54O1xuICAgICAgICAgICAgICAgICAgICBqID0gaW5pdC55O1xuICAgICAgICAgICAgICAgICAgICBpbmkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGdldEJ5UG9zaXRpb24obSwgbmV3IERQb2ludChpLCBqKSkgPT09IFRyYWNlTWF0cml4VmFsdWVzLnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEUG9pbnQoaSwgaik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXgucHJvdG90eXBlLnRvdGFsQ291bnRJbk1hdHJpeCA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIHZhciByZXMgPSAwO1xuICAgICAgICB2YXIgcyA9IHRoaXMuc2l6ZTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzLnc7IGkrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBzLmg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChnZXRCeVBvc2l0aW9uKG0sIG5ldyBEUG9pbnQoaSwgaikpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG4gICAgVHJhY2VNYXRyaXguY3JlYXRlTWF0cml4ID0gZnVuY3Rpb24gKHNpemUsIGYpIHtcbiAgICAgICAgaWYgKGYgPT09IHZvaWQgMCkgeyBmID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gVHJhY2VNYXRyaXhWYWx1ZXMuZjsgfTsgfVxuICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS5oKVxuICAgICAgICAgICAgLm1hcChmdW5jdGlvbiAodiwgaSkgeyByZXR1cm4gY3JlYXRlQXJyYXkoc2l6ZS53KS5tYXAoZnVuY3Rpb24gKHYyLCBqKSB7IHJldHVybiBmKG5ldyBEUG9pbnQoaiwgaSkpOyB9KTsgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gVHJhY2VNYXRyaXg7XG59KCkpO1xuZXhwb3J0IHsgVHJhY2VNYXRyaXggfTtcbiIsInZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbmltcG9ydCB7IERQb2ludCB9IGZyb20gJy4vRFBvaW50JztcbmltcG9ydCB7IGdhdXNzaWFuRWxpbWluYXRpb24gfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEROdW1iZXJzIH0gZnJvbSAnLi9ETnVtYmVycyc7XG52YXIgRFBsYW5lID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMykge1xuICAgICAgICBpZiAocDEgPT09IHZvaWQgMCkgeyBwMSA9IERQb2ludC56ZXJvKCk7IH1cbiAgICAgICAgaWYgKHAyID09PSB2b2lkIDApIHsgcDIgPSBEUG9pbnQuemVybygpOyB9XG4gICAgICAgIGlmIChwMyA9PT0gdm9pZCAwKSB7IHAzID0gRFBvaW50Lnplcm8oKTsgfVxuICAgICAgICB0aGlzLmEgPSBhO1xuICAgICAgICB0aGlzLmIgPSBiO1xuICAgICAgICB0aGlzLmMgPSBjO1xuICAgICAgICB0aGlzLmQgPSBkO1xuICAgICAgICB0aGlzLnAxID0gcDE7XG4gICAgICAgIHRoaXMucDIgPSBwMjtcbiAgICAgICAgdGhpcy5wMyA9IHAzO1xuICAgIH1cbiAgICBEUGxhbmUuZmluZCA9IGZ1bmN0aW9uIChwMSwgcDIsIHAzKSB7XG4gICAgICAgIGlmIChwMS54ID09PSBwMi54ICYmIHAyLnggPT09IHAzLngpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRFBsYW5lKDEsIDAsIDAsIC1wMS54LCBwMSwgcDIsIHAzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocDEueSA9PT0gcDIueSAmJiBwMi55ID09PSBwMy55KSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IERQbGFuZSgwLCAxLCAwLCAtcDEueSwgcDEsIHAyLCBwMyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAxLnogPT09IHAyLnogJiYgcDIueiA9PT0gcDMueikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoMCwgMCwgMSwgLXAxLnosIHAxLCBwMiwgcDMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkID0gMTtcbiAgICAgICAgdmFyIF9hID0gX19yZWFkKGdhdXNzaWFuRWxpbWluYXRpb24oW1xuICAgICAgICAgICAgW3AxLngsIHAxLnksIHAxLnosIC1kXSxcbiAgICAgICAgICAgIFtwMi54LCBwMi55LCBwMi56LCAtZF0sXG4gICAgICAgICAgICBbcDMueCwgcDMueSwgcDMueiwgLWRdXG4gICAgICAgIF0pLCAzKSwgYSA9IF9hWzBdLCBiID0gX2FbMV0sIGMgPSBfYVsyXTtcbiAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnggPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeSA9IHAueSwgeiA9IHAuejtcbiAgICAgICAgICAgIHAueCA9IC0oYiAqIHkgKyBjICogeiArIGQpIC8gYTtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueCh0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnkgPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeiA9IHAuejtcbiAgICAgICAgICAgIHAueSA9IC0oYSAqIHggKyBjICogeiArIGQpIC8gYjtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueSh0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnogPSBmdW5jdGlvbiAocCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAocCBpbnN0YW5jZW9mIERQb2ludCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYSA9IF9hLmEsIGIgPSBfYS5iLCBjID0gX2EuYywgZCA9IF9hLmQ7XG4gICAgICAgICAgICB2YXIgeCA9IHAueCwgeSA9IHAueTtcbiAgICAgICAgICAgIHAueiA9IC0oYSAqIHggKyBiICogeSArIGQpIC8gYztcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwLm1hcChmdW5jdGlvbiAodCkgeyByZXR1cm4gX3RoaXMueih0KTsgfSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBhID0gX2EuYSwgYiA9IF9hLmIsIGMgPSBfYS5jLCBkID0gX2EuZCwgcDEgPSBfYS5wMSwgcDIgPSBfYS5wMiwgcDMgPSBfYS5wMztcbiAgICAgICAgcmV0dXJuIG5ldyBEUGxhbmUoYSwgYiwgYywgZCwgcDEsIHAyLCBwMyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmRpc3RhbmNlID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgaWYgKHAgaW5zdGFuY2VvZiBEUG9pbnQpIHtcbiAgICAgICAgICAgIHZhciB4ID0gcC54LCB5ID0gcC55LCB6ID0gcC56O1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcywgYV8xID0gX2EuYSwgYl8xID0gX2EuYiwgY18xID0gX2EuYywgZF8xID0gX2EuZDtcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmFicyhhXzEgKiB4ICsgYl8xICogeSArIGNfMSAqIHogKyBkXzEpIC8gTWF0aC5zcXJ0KGFfMSAqIGFfMSArIGJfMSAqIGJfMSArIGNfMSAqIGNfMSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIF9iID0gcCwgYSA9IF9iLmEsIGIgPSBfYi5iLCBjID0gX2IuYywgZCA9IF9iLmQ7XG4gICAgICAgIHZhciByID0gdGhpcy5kO1xuICAgICAgICByZXR1cm4gTWF0aC5hYnMoZCAtIHIpIC8gTWF0aC5zcXJ0KGEgKiBhICsgYiAqIGIgKyBjICogYyk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLmVxdWFsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGEgPSBwLmEsIGIgPSBwLmIsIGMgPSBwLmMsIGQgPSBwLmQ7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHEgPSBfYS5hLCB3ID0gX2EuYiwgZSA9IF9hLmMsIHIgPSBfYS5kO1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZShhLCBxKSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShiLCB3KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShjLCBlKSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZShkLCByKTtcbiAgICB9O1xuICAgIERQbGFuZS5wcm90b3R5cGUuc2FtZSA9IGZ1bmN0aW9uIChwKSB7XG4gICAgICAgIHZhciBhID0gcC5hLCBiID0gcC5iLCBjID0gcC5jLCBkID0gcC5kO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCBxID0gX2EuYSwgdyA9IF9hLmIsIGUgPSBfYS5jLCByID0gX2EuZDtcbiAgICAgICAgdmFyIHQgPSBhIC8gcTtcbiAgICAgICAgdmFyIHkgPSBiIC8gdztcbiAgICAgICAgdmFyIHUgPSBjIC8gZTtcbiAgICAgICAgdmFyIGkgPSBkIC8gcjtcbiAgICAgICAgcmV0dXJuIEROdW1iZXJzLmxpa2UodCwgeSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgdSkgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgYykgJiZcbiAgICAgICAgICAgIEROdW1iZXJzLmxpa2UodCwgaSk7XG4gICAgfTtcbiAgICBEUGxhbmUucHJvdG90eXBlLnBhcmFsbGVsID0gZnVuY3Rpb24gKHApIHtcbiAgICAgICAgdmFyIGEgPSBwLmEsIGIgPSBwLmIsIGMgPSBwLmMsIGQgPSBwLmQ7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHEgPSBfYS5hLCB3ID0gX2EuYiwgZSA9IF9hLmMsIHIgPSBfYS5kO1xuICAgICAgICB2YXIgdCA9IGEgLyBxO1xuICAgICAgICB2YXIgeSA9IGIgLyB3O1xuICAgICAgICB2YXIgdSA9IGMgLyBlO1xuICAgICAgICB2YXIgaSA9IGQgLyByO1xuICAgICAgICByZXR1cm4gRE51bWJlcnMubGlrZSh0LCB5KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCB1KSAmJlxuICAgICAgICAgICAgRE51bWJlcnMubGlrZSh0LCBjKSAmJlxuICAgICAgICAgICAgIUROdW1iZXJzLmxpa2UodCwgaSk7XG4gICAgfTtcbiAgICByZXR1cm4gRFBsYW5lO1xufSgpKTtcbmV4cG9ydCB7IERQbGFuZSB9O1xuIl0sIm5hbWVzIjpbIl9fcmVhZCIsInRoaXMiLCJfX3NwcmVhZEFycmF5IiwiX19hc3NpZ24iLCJfX3ZhbHVlcyIsIm9wZXJhdGlvbiIsImpzdHNJbyIsIlRyYWNlTWF0cml4VmFsdWVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQSxJQUFJQSxRQUFNLEdBQUcsQ0FBQ0MsU0FBSSxJQUFJQSxTQUFJLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0RCxJQUFJLElBQUksQ0FBQyxHQUFHLE9BQU8sTUFBTSxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyQixJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMs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RSxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUM7SUFDckUsWUFBWSxXQUFXLEVBQUUsV0FBVyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDO0lBQzdELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ0ksUUFBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEVBQUUsVUFBVSxFQUFFO0lBQ2xELElBQUksSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7SUFDMUMsUUFBUSxPQUFPLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdkMsYUFBYSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsS0FBSztJQUNMLElBQUksT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVGLEVBQUU7QUFDUSxRQUFDLFlBQVksR0FBRyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUU7SUFDcEQsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUU7SUFDMUMsUUFBUSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsYUFBYSxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxXQUFXLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVB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R0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEMsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDekQsWUFBWSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDekQsWUFBWSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLFNBQVM7SUFDVCxRQUFRLElBQUksUUFBUSxLQUFLLENBQUMsRUFBRTtJQUM1QixZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDcEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDdEYsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FB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Q0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7SUFDOUIsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTO0lBQ1QsUUFBUSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO0lBQzlCLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsS0FBSyxDQUFDO0lBQ04s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Q0FBQztJQUNOLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRTtJQUN6RCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDeEQsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUMxRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGFBQWEsRUFBRTtJQUMxRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsVUFBVSxFQUFFLEtBQUs7SUFDekIsUUFBUSxZQUFZLEVBQUUsSUFBSTtJQUMxQixLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRTtJQUNyRCxRQUFRLEdBQUcsRUFBRSxZQUFZO0lBQ3pCLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLFNBQVM7SUFDVCxRQUFRLFVBQVUsRUFBRSxLQUFLO0lBQ3pCLFFBQVEsWUFBWSxFQUFFLElBQUk7SUFDMUIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFlBQVk7SUFDeEMsUUFBUSxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzlCLGFBQWEsYUFBYSxDQUFDLFlBQVksQ0FBQztJQUN4QyxhQUFhLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLGFBQWEsYUFBYSxDQUFDLFVBQVUsQ0FBQztJQUN0QyxhQUFhLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ25CLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsWUFBWTtJQUN4QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RixRQUFRLE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0YsS0FBSyxDQUFDO0lBQ04sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDaEQsUUFBUSxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakYsUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDeEYsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUU7SUFDOUQsaUJBQWlCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULGFBQWE7SUFDYixZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRTtJQUM5RCxpQkFBaUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELGlCQUFpQixJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUU7SUFDcEMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsZ0JBQWdCLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDMUIsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixTQUFTO0lBQ1QsUUFBUSxPQUFPLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUssQ0FBQztJQUNOLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFO0lBQ2pELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssRUFBRTtJQUNwQyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDcEIsU0FBUztJQUNULGFBQWEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFO0lBQzNDLFlBQVksR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixLQUFLLENBQUM7SUFDTixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsRUFBRSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUMsRUFBRTs7SUNqVEgsSUFBSSxhQUFhLENBQUM7SUFDbEIsQ0FBQyxVQUFVLGFBQWEsRUFBRTtJQUMxQixJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRixJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztJQUNoRixJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzFELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdEQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN0RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3RELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDMUQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNoRSxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2hFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7SUFDaEUsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN2RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0lBQ3pELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDdkQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN6RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzdELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7SUFDckQsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztJQUN6RCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzdFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO0lBQy9FLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzdFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0lBQzdFLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDL0QsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMzRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNELElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDM0QsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJ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QyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEUsSUFBSSxTQUFTLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxNQUFNLElBQUksU0FBUyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxPQUFPLENBQUMsRUFBRSxJQUFJO0lBQ3RCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekssWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELFlBQVksUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLGdCQUFnQixLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQzlDLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7SUFDeEUsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDakUsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVM7SUFDakUsZ0JBQWdCO0lBQ2hCLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFO0lBQ2hJLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQzFHLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxD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Q0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRSxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxPQUFPLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0YsUUFBUSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7SUFDTixJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLFVBQVUsSUFBSSxFQUFFO0lBQ2hELFFBQVEsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDNUMsUUFBUSxJQUFJLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2pDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0lBQzFDLFlBQVksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFD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QVUsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN2QyxRQUFRLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3ZDLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRTtJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDOUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUM5QyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFH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WSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QixTQUFTO0lBQ1QsUUFBUSxVQUFVLEVBQUUsS0FBSztJQUN6QixRQUFRLFlBQVksRUFBRSxJQUFJO0lBQzFCLEtBQUssQ0FBQyxDQUFDO0lBQ1AsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzFELFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25CLFFBQVEsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDNUMsUUFBUSxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQzVDLFFBQVEsT0FBTyxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUNoSCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM3QixZQUFZLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN2QixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ2xELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEs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RSxHQUFHLElBQUksRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkIsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVB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QUMsRUFBRTtJQUM1QyxZQUFZLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUQsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzVDLFlBQVksT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDNUMsWUFBWSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQixRQUFRLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztJQUM1QyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsRUFBRTtJQUN0QyxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxZQUFZLE1BQU0sRUFBRTtJQUNqQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDdEMsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsWUFBWSxNQUFNLEVBQUU7SUFDakMsWUFBWSxJQUFJLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEUsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxZQUFZO0lBQ3pDLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xHLFFBQVEsT0FBTyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLFlBQVksTUFBTSxFQUFFO0lBQ2pDLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDOUcsU0FBUztJQUNULFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsWUFBWSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxFQUFFO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUssQ0FBQztJQUNOLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLEVBQUU7SUFDN0MsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QixRQUFRLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUMsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9
|