diff --git a/build/browser.esm.js b/build/browser.esm.js
index 1492ab42..2a6c9c8a 100644
--- a/build/browser.esm.js
+++ b/build/browser.esm.js
@@ -872,8 +872,8 @@ class BigMemFile {
}
}
-const O_TRUNC = 1024;
-const O_CREAT = 512;
+const O_TRUNC = 512;
+const O_CREAT = 64;
const O_RDWR = 2;
const O_RDONLY = 0;
@@ -1142,8 +1142,6 @@ var curves = /*#__PURE__*/Object.freeze({
getCurveFromName: getCurveFromName
});
-var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
var blake2bWasm = {exports: {}};
var nanoassert = assert$1;
@@ -10004,662 +10002,333 @@ class Proof {
}
}
-var sha3 = {exports: {}};
-
/**
- * [js-sha3]{@link https://github.com/emn178/js-sha3}
- *
- * @version 0.8.0
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
- * @copyright Chen, Yi-Cyuan 2015-2018
- * @license MIT
+ * Internal assertion helpers.
+ * @module
*/
+/** Asserts something is positive integer. */
+function anumber(n) {
+ if (!Number.isSafeInteger(n) || n < 0)
+ throw new Error('positive integer expected, got ' + n);
+}
+/** Is number an Uint8Array? Copied from utils for perf. */
+function isBytes(a) {
+ return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');
+}
+/** Asserts something is Uint8Array. */
+function abytes(b, ...lengths) {
+ if (!isBytes(b))
+ throw new Error('Uint8Array expected');
+ if (lengths.length > 0 && !lengths.includes(b.length))
+ throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);
+}
+/** Asserts a hash instance has not been destroyed / finished */
+function aexists(instance, checkFinished = true) {
+ if (instance.destroyed)
+ throw new Error('Hash instance has been destroyed');
+ if (checkFinished && instance.finished)
+ throw new Error('Hash#digest() has already been called');
+}
+/** Asserts output is properly-sized byte array */
+function aoutput(out, instance) {
+ abytes(out);
+ const min = instance.outputLen;
+ if (out.length < min) {
+ throw new Error('digestInto() expects output buffer of length at least ' + min);
+ }
+}
-(function (module) {
- /*jslint bitwise: true */
- (function () {
-
- var INPUT_ERROR = 'input is invalid type';
- var FINALIZE_ERROR = 'finalize already called';
- var WINDOW = typeof window === 'object';
- var root = WINDOW ? window : {};
- if (root.JS_SHA3_NO_WINDOW) {
- WINDOW = false;
- }
- var WEB_WORKER = !WINDOW && typeof self === 'object';
- var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
- if (NODE_JS) {
- root = commonjsGlobal;
- } else if (WEB_WORKER) {
- root = self;
- }
- var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && 'object' === 'object' && module.exports;
- var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
- var HEX_CHARS = '0123456789abcdef'.split('');
- var SHAKE_PADDING = [31, 7936, 2031616, 520093696];
- var CSHAKE_PADDING = [4, 1024, 262144, 67108864];
- var KECCAK_PADDING = [1, 256, 65536, 16777216];
- var PADDING = [6, 1536, 393216, 100663296];
- var SHIFT = [0, 8, 16, 24];
- var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,
- 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,
- 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,
- 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,
- 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];
- var BITS = [224, 256, 384, 512];
- var SHAKE_BITS = [128, 256];
- var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];
- var CSHAKE_BYTEPAD = {
- '128': 168,
- '256': 136
- };
-
- if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {
- Array.isArray = function (obj) {
- return Object.prototype.toString.call(obj) === '[object Array]';
- };
- }
-
- if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
- ArrayBuffer.isView = function (obj) {
- return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
- };
- }
-
- var createOutputMethod = function (bits, padding, outputType) {
- return function (message) {
- return new Keccak(bits, padding, bits).update(message)[outputType]();
- };
- };
-
- var createShakeOutputMethod = function (bits, padding, outputType) {
- return function (message, outputBits) {
- return new Keccak(bits, padding, outputBits).update(message)[outputType]();
- };
- };
-
- var createCshakeOutputMethod = function (bits, padding, outputType) {
- return function (message, outputBits, n, s) {
- return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();
- };
- };
-
- var createKmacOutputMethod = function (bits, padding, outputType) {
- return function (key, message, outputBits, s) {
- return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();
- };
- };
-
- var createOutputMethods = function (method, createMethod, bits, padding) {
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
- var type = OUTPUT_TYPES[i];
- method[type] = createMethod(bits, padding, type);
- }
- return method;
- };
-
- var createMethod = function (bits, padding) {
- var method = createOutputMethod(bits, padding, 'hex');
- method.create = function () {
- return new Keccak(bits, padding, bits);
- };
- method.update = function (message) {
- return method.create().update(message);
- };
- return createOutputMethods(method, createOutputMethod, bits, padding);
- };
-
- var createShakeMethod = function (bits, padding) {
- var method = createShakeOutputMethod(bits, padding, 'hex');
- method.create = function (outputBits) {
- return new Keccak(bits, padding, outputBits);
- };
- method.update = function (message, outputBits) {
- return method.create(outputBits).update(message);
- };
- return createOutputMethods(method, createShakeOutputMethod, bits, padding);
- };
-
- var createCshakeMethod = function (bits, padding) {
- var w = CSHAKE_BYTEPAD[bits];
- var method = createCshakeOutputMethod(bits, padding, 'hex');
- method.create = function (outputBits, n, s) {
- if (!n && !s) {
- return methods['shake' + bits].create(outputBits);
- } else {
- return new Keccak(bits, padding, outputBits).bytepad([n, s], w);
- }
- };
- method.update = function (message, outputBits, n, s) {
- return method.create(outputBits, n, s).update(message);
- };
- return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
- };
-
- var createKmacMethod = function (bits, padding) {
- var w = CSHAKE_BYTEPAD[bits];
- var method = createKmacOutputMethod(bits, padding, 'hex');
- method.create = function (key, outputBits, s) {
- return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);
- };
- method.update = function (key, message, outputBits, s) {
- return method.create(key, outputBits, s).update(message);
- };
- return createOutputMethods(method, createKmacOutputMethod, bits, padding);
- };
-
- var algorithms = [
- { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },
- { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },
- { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },
- { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },
- { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }
- ];
-
- var methods = {}, methodNames = [];
-
- for (var i = 0; i < algorithms.length; ++i) {
- var algorithm = algorithms[i];
- var bits = algorithm.bits;
- for (var j = 0; j < bits.length; ++j) {
- var methodName = algorithm.name + '_' + bits[j];
- methodNames.push(methodName);
- methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
- if (algorithm.name !== 'sha3') {
- var newMethodName = algorithm.name + bits[j];
- methodNames.push(newMethodName);
- methods[newMethodName] = methods[methodName];
- }
- }
- }
-
- function Keccak(bits, padding, outputBits) {
- this.blocks = [];
- this.s = [];
- this.padding = padding;
- this.outputBits = outputBits;
- this.reset = true;
- this.finalized = false;
- this.block = 0;
- this.start = 0;
- this.blockCount = (1600 - (bits << 1)) >> 5;
- this.byteCount = this.blockCount << 2;
- this.outputBlocks = outputBits >> 5;
- this.extraBytes = (outputBits & 31) >> 3;
-
- for (var i = 0; i < 50; ++i) {
- this.s[i] = 0;
- }
- }
-
- Keccak.prototype.update = function (message) {
- if (this.finalized) {
- throw new Error(FINALIZE_ERROR);
- }
- var notString, type = typeof message;
- if (type !== 'string') {
- if (type === 'object') {
- if (message === null) {
- throw new Error(INPUT_ERROR);
- } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
- message = new Uint8Array(message);
- } else if (!Array.isArray(message)) {
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
- throw new Error(INPUT_ERROR);
- }
- }
- } else {
- throw new Error(INPUT_ERROR);
- }
- notString = true;
- }
- var blocks = this.blocks, byteCount = this.byteCount, length = message.length,
- blockCount = this.blockCount, index = 0, s = this.s, i, code;
-
- while (index < length) {
- if (this.reset) {
- this.reset = false;
- blocks[0] = this.block;
- for (i = 1; i < blockCount + 1; ++i) {
- blocks[i] = 0;
- }
- }
- if (notString) {
- for (i = this.start; index < length && i < byteCount; ++index) {
- blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
- }
- } else {
- for (i = this.start; index < length && i < byteCount; ++index) {
- code = message.charCodeAt(index);
- if (code < 0x80) {
- blocks[i >> 2] |= code << SHIFT[i++ & 3];
- } else if (code < 0x800) {
- blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- } else if (code < 0xd800 || code >= 0xe000) {
- blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- } else {
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
- blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- }
- }
- }
- this.lastByteIndex = i;
- if (i >= byteCount) {
- this.start = i - byteCount;
- this.block = blocks[blockCount];
- for (i = 0; i < blockCount; ++i) {
- s[i] ^= blocks[i];
- }
- f(s);
- this.reset = true;
- } else {
- this.start = i;
- }
- }
- return this;
- };
-
- Keccak.prototype.encode = function (x, right) {
- var o = x & 255, n = 1;
- var bytes = [o];
- x = x >> 8;
- o = x & 255;
- while (o > 0) {
- bytes.unshift(o);
- x = x >> 8;
- o = x & 255;
- ++n;
- }
- if (right) {
- bytes.push(n);
- } else {
- bytes.unshift(n);
- }
- this.update(bytes);
- return bytes.length;
- };
-
- Keccak.prototype.encodeString = function (str) {
- var notString, type = typeof str;
- if (type !== 'string') {
- if (type === 'object') {
- if (str === null) {
- throw new Error(INPUT_ERROR);
- } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {
- str = new Uint8Array(str);
- } else if (!Array.isArray(str)) {
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {
- throw new Error(INPUT_ERROR);
- }
- }
- } else {
- throw new Error(INPUT_ERROR);
- }
- notString = true;
- }
- var bytes = 0, length = str.length;
- if (notString) {
- bytes = length;
- } else {
- for (var i = 0; i < str.length; ++i) {
- var code = str.charCodeAt(i);
- if (code < 0x80) {
- bytes += 1;
- } else if (code < 0x800) {
- bytes += 2;
- } else if (code < 0xd800 || code >= 0xe000) {
- bytes += 3;
- } else {
- code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
- bytes += 4;
- }
- }
- }
- bytes += this.encode(bytes * 8);
- this.update(str);
- return bytes;
- };
-
- Keccak.prototype.bytepad = function (strs, w) {
- var bytes = this.encode(w);
- for (var i = 0; i < strs.length; ++i) {
- bytes += this.encodeString(strs[i]);
- }
- var paddingBytes = w - bytes % w;
- var zeros = [];
- zeros.length = paddingBytes;
- this.update(zeros);
- return this;
- };
-
- Keccak.prototype.finalize = function () {
- if (this.finalized) {
- return;
- }
- this.finalized = true;
- var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
- blocks[i >> 2] |= this.padding[i & 3];
- if (this.lastByteIndex === this.byteCount) {
- blocks[0] = blocks[blockCount];
- for (i = 1; i < blockCount + 1; ++i) {
- blocks[i] = 0;
- }
- }
- blocks[blockCount - 1] |= 0x80000000;
- for (i = 0; i < blockCount; ++i) {
- s[i] ^= blocks[i];
- }
- f(s);
- };
-
- Keccak.prototype.toString = Keccak.prototype.hex = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var hex = '', block;
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- block = s[i];
- hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +
- HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +
- HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +
- HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];
- }
- if (j % blockCount === 0) {
- f(s);
- i = 0;
- }
- }
- if (extraBytes) {
- block = s[i];
- hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];
- if (extraBytes > 1) {
- hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];
- }
- if (extraBytes > 2) {
- hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];
- }
- }
- return hex;
- };
-
- Keccak.prototype.arrayBuffer = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var bytes = this.outputBits >> 3;
- var buffer;
- if (extraBytes) {
- buffer = new ArrayBuffer((outputBlocks + 1) << 2);
- } else {
- buffer = new ArrayBuffer(bytes);
- }
- var array = new Uint32Array(buffer);
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- array[j] = s[i];
- }
- if (j % blockCount === 0) {
- f(s);
- }
- }
- if (extraBytes) {
- array[i] = s[i];
- buffer = buffer.slice(0, bytes);
- }
- return buffer;
- };
-
- Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
-
- Keccak.prototype.digest = Keccak.prototype.array = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var array = [], offset, block;
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- offset = j << 2;
- block = s[i];
- array[offset] = block & 0xFF;
- array[offset + 1] = (block >> 8) & 0xFF;
- array[offset + 2] = (block >> 16) & 0xFF;
- array[offset + 3] = (block >> 24) & 0xFF;
- }
- if (j % blockCount === 0) {
- f(s);
- }
- }
- if (extraBytes) {
- offset = j << 2;
- block = s[i];
- array[offset] = block & 0xFF;
- if (extraBytes > 1) {
- array[offset + 1] = (block >> 8) & 0xFF;
- }
- if (extraBytes > 2) {
- array[offset + 2] = (block >> 16) & 0xFF;
- }
- }
- return array;
- };
-
- function Kmac(bits, padding, outputBits) {
- Keccak.call(this, bits, padding, outputBits);
- }
-
- Kmac.prototype = new Keccak();
-
- Kmac.prototype.finalize = function () {
- this.encode(this.outputBits, true);
- return Keccak.prototype.finalize.call(this);
- };
-
- var f = function (s) {
- var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,
- b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,
- b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,
- b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
- for (n = 0; n < 48; n += 2) {
- c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
- c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
- c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
- c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
- c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
- c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
- c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
- c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
- c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
- c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
-
- h = c8 ^ ((c2 << 1) | (c3 >>> 31));
- l = c9 ^ ((c3 << 1) | (c2 >>> 31));
- s[0] ^= h;
- s[1] ^= l;
- s[10] ^= h;
- s[11] ^= l;
- s[20] ^= h;
- s[21] ^= l;
- s[30] ^= h;
- s[31] ^= l;
- s[40] ^= h;
- s[41] ^= l;
- h = c0 ^ ((c4 << 1) | (c5 >>> 31));
- l = c1 ^ ((c5 << 1) | (c4 >>> 31));
- s[2] ^= h;
- s[3] ^= l;
- s[12] ^= h;
- s[13] ^= l;
- s[22] ^= h;
- s[23] ^= l;
- s[32] ^= h;
- s[33] ^= l;
- s[42] ^= h;
- s[43] ^= l;
- h = c2 ^ ((c6 << 1) | (c7 >>> 31));
- l = c3 ^ ((c7 << 1) | (c6 >>> 31));
- s[4] ^= h;
- s[5] ^= l;
- s[14] ^= h;
- s[15] ^= l;
- s[24] ^= h;
- s[25] ^= l;
- s[34] ^= h;
- s[35] ^= l;
- s[44] ^= h;
- s[45] ^= l;
- h = c4 ^ ((c8 << 1) | (c9 >>> 31));
- l = c5 ^ ((c9 << 1) | (c8 >>> 31));
- s[6] ^= h;
- s[7] ^= l;
- s[16] ^= h;
- s[17] ^= l;
- s[26] ^= h;
- s[27] ^= l;
- s[36] ^= h;
- s[37] ^= l;
- s[46] ^= h;
- s[47] ^= l;
- h = c6 ^ ((c0 << 1) | (c1 >>> 31));
- l = c7 ^ ((c1 << 1) | (c0 >>> 31));
- s[8] ^= h;
- s[9] ^= l;
- s[18] ^= h;
- s[19] ^= l;
- s[28] ^= h;
- s[29] ^= l;
- s[38] ^= h;
- s[39] ^= l;
- s[48] ^= h;
- s[49] ^= l;
-
- b0 = s[0];
- b1 = s[1];
- b32 = (s[11] << 4) | (s[10] >>> 28);
- b33 = (s[10] << 4) | (s[11] >>> 28);
- b14 = (s[20] << 3) | (s[21] >>> 29);
- b15 = (s[21] << 3) | (s[20] >>> 29);
- b46 = (s[31] << 9) | (s[30] >>> 23);
- b47 = (s[30] << 9) | (s[31] >>> 23);
- b28 = (s[40] << 18) | (s[41] >>> 14);
- b29 = (s[41] << 18) | (s[40] >>> 14);
- b20 = (s[2] << 1) | (s[3] >>> 31);
- b21 = (s[3] << 1) | (s[2] >>> 31);
- b2 = (s[13] << 12) | (s[12] >>> 20);
- b3 = (s[12] << 12) | (s[13] >>> 20);
- b34 = (s[22] << 10) | (s[23] >>> 22);
- b35 = (s[23] << 10) | (s[22] >>> 22);
- b16 = (s[33] << 13) | (s[32] >>> 19);
- b17 = (s[32] << 13) | (s[33] >>> 19);
- b48 = (s[42] << 2) | (s[43] >>> 30);
- b49 = (s[43] << 2) | (s[42] >>> 30);
- b40 = (s[5] << 30) | (s[4] >>> 2);
- b41 = (s[4] << 30) | (s[5] >>> 2);
- b22 = (s[14] << 6) | (s[15] >>> 26);
- b23 = (s[15] << 6) | (s[14] >>> 26);
- b4 = (s[25] << 11) | (s[24] >>> 21);
- b5 = (s[24] << 11) | (s[25] >>> 21);
- b36 = (s[34] << 15) | (s[35] >>> 17);
- b37 = (s[35] << 15) | (s[34] >>> 17);
- b18 = (s[45] << 29) | (s[44] >>> 3);
- b19 = (s[44] << 29) | (s[45] >>> 3);
- b10 = (s[6] << 28) | (s[7] >>> 4);
- b11 = (s[7] << 28) | (s[6] >>> 4);
- b42 = (s[17] << 23) | (s[16] >>> 9);
- b43 = (s[16] << 23) | (s[17] >>> 9);
- b24 = (s[26] << 25) | (s[27] >>> 7);
- b25 = (s[27] << 25) | (s[26] >>> 7);
- b6 = (s[36] << 21) | (s[37] >>> 11);
- b7 = (s[37] << 21) | (s[36] >>> 11);
- b38 = (s[47] << 24) | (s[46] >>> 8);
- b39 = (s[46] << 24) | (s[47] >>> 8);
- b30 = (s[8] << 27) | (s[9] >>> 5);
- b31 = (s[9] << 27) | (s[8] >>> 5);
- b12 = (s[18] << 20) | (s[19] >>> 12);
- b13 = (s[19] << 20) | (s[18] >>> 12);
- b44 = (s[29] << 7) | (s[28] >>> 25);
- b45 = (s[28] << 7) | (s[29] >>> 25);
- b26 = (s[38] << 8) | (s[39] >>> 24);
- b27 = (s[39] << 8) | (s[38] >>> 24);
- b8 = (s[48] << 14) | (s[49] >>> 18);
- b9 = (s[49] << 14) | (s[48] >>> 18);
-
- s[0] = b0 ^ (~b2 & b4);
- s[1] = b1 ^ (~b3 & b5);
- s[10] = b10 ^ (~b12 & b14);
- s[11] = b11 ^ (~b13 & b15);
- s[20] = b20 ^ (~b22 & b24);
- s[21] = b21 ^ (~b23 & b25);
- s[30] = b30 ^ (~b32 & b34);
- s[31] = b31 ^ (~b33 & b35);
- s[40] = b40 ^ (~b42 & b44);
- s[41] = b41 ^ (~b43 & b45);
- s[2] = b2 ^ (~b4 & b6);
- s[3] = b3 ^ (~b5 & b7);
- s[12] = b12 ^ (~b14 & b16);
- s[13] = b13 ^ (~b15 & b17);
- s[22] = b22 ^ (~b24 & b26);
- s[23] = b23 ^ (~b25 & b27);
- s[32] = b32 ^ (~b34 & b36);
- s[33] = b33 ^ (~b35 & b37);
- s[42] = b42 ^ (~b44 & b46);
- s[43] = b43 ^ (~b45 & b47);
- s[4] = b4 ^ (~b6 & b8);
- s[5] = b5 ^ (~b7 & b9);
- s[14] = b14 ^ (~b16 & b18);
- s[15] = b15 ^ (~b17 & b19);
- s[24] = b24 ^ (~b26 & b28);
- s[25] = b25 ^ (~b27 & b29);
- s[34] = b34 ^ (~b36 & b38);
- s[35] = b35 ^ (~b37 & b39);
- s[44] = b44 ^ (~b46 & b48);
- s[45] = b45 ^ (~b47 & b49);
- s[6] = b6 ^ (~b8 & b0);
- s[7] = b7 ^ (~b9 & b1);
- s[16] = b16 ^ (~b18 & b10);
- s[17] = b17 ^ (~b19 & b11);
- s[26] = b26 ^ (~b28 & b20);
- s[27] = b27 ^ (~b29 & b21);
- s[36] = b36 ^ (~b38 & b30);
- s[37] = b37 ^ (~b39 & b31);
- s[46] = b46 ^ (~b48 & b40);
- s[47] = b47 ^ (~b49 & b41);
- s[8] = b8 ^ (~b0 & b2);
- s[9] = b9 ^ (~b1 & b3);
- s[18] = b18 ^ (~b10 & b12);
- s[19] = b19 ^ (~b11 & b13);
- s[28] = b28 ^ (~b20 & b22);
- s[29] = b29 ^ (~b21 & b23);
- s[38] = b38 ^ (~b30 & b32);
- s[39] = b39 ^ (~b31 & b33);
- s[48] = b48 ^ (~b40 & b42);
- s[49] = b49 ^ (~b41 & b43);
-
- s[0] ^= RC[n];
- s[1] ^= RC[n + 1];
- }
- };
+/**
+ * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.
+ * @todo re-check https://issues.chromium.org/issues/42212588
+ * @module
+ */
+const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
+const _32n = /* @__PURE__ */ BigInt(32);
+function fromBig(n, le = false) {
+ if (le)
+ return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };
+ return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
+}
+function split(lst, le = false) {
+ let Ah = new Uint32Array(lst.length);
+ let Al = new Uint32Array(lst.length);
+ for (let i = 0; i < lst.length; i++) {
+ const { h, l } = fromBig(lst[i], le);
+ [Ah[i], Al[i]] = [h, l];
+ }
+ return [Ah, Al];
+}
+// Left rotate for Shift in [1, 32)
+const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
+const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
+// Left rotate for Shift in (32, 64), NOTE: 32 is special case.
+const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
+const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
- if (COMMON_JS) {
- module.exports = methods;
- } else {
- for (i = 0; i < methodNames.length; ++i) {
- root[methodNames[i]] = methods[methodNames[i]];
- }
- }
- })();
-} (sha3));
+/**
+ * Utilities for hex, bytes, CSPRNG.
+ * @module
+ */
+function u32(arr) {
+ return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
+}
+/** Is current platform little-endian? Most are. Big-Endian platform: IBM */
+const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();
+// The byte swap operation for uint32
+function byteSwap(word) {
+ return (((word << 24) & 0xff000000) |
+ ((word << 8) & 0xff0000) |
+ ((word >>> 8) & 0xff00) |
+ ((word >>> 24) & 0xff));
+}
+/** In place byte swap for Uint32Array */
+function byteSwap32(arr) {
+ for (let i = 0; i < arr.length; i++) {
+ arr[i] = byteSwap(arr[i]);
+ }
+}
+/**
+ * Convert JS string to byte array.
+ * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
+ */
+function utf8ToBytes(str) {
+ if (typeof str !== 'string')
+ throw new Error('utf8ToBytes expected string, got ' + typeof str);
+ return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809
+}
+/**
+ * Normalizes (non-hex) string or Uint8Array to Uint8Array.
+ * Warning: when Uint8Array is passed, it would NOT get copied.
+ * Keep in mind for future mutable operations.
+ */
+function toBytes(data) {
+ if (typeof data === 'string')
+ data = utf8ToBytes(data);
+ abytes(data);
+ return data;
+}
+/** For runtime check if class implements interface */
+class Hash {
+ // Safe version that clones internal state
+ clone() {
+ return this._cloneInto();
+ }
+}
+/** Wraps hash function, creating an interface on top of it */
+function wrapConstructor(hashCons) {
+ const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
+ const tmp = hashCons();
+ hashC.outputLen = tmp.outputLen;
+ hashC.blockLen = tmp.blockLen;
+ hashC.create = () => hashCons();
+ return hashC;
+}
-var jsSha3 = sha3.exports;
+/**
+ * SHA3 (keccak) hash function, based on a new "Sponge function" design.
+ * Different from older hashes, the internal state is bigger than output size.
+ *
+ * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),
+ * [Website](https://keccak.team/keccak.html),
+ * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).
+ *
+ * Check out `sha3-addons` module for cSHAKE, k12, and others.
+ * @module
+ */
+// Various per round constants calculations
+const SHA3_PI = [];
+const SHA3_ROTL = [];
+const _SHA3_IOTA = [];
+const _0n = /* @__PURE__ */ BigInt(0);
+const _1n = /* @__PURE__ */ BigInt(1);
+const _2n = /* @__PURE__ */ BigInt(2);
+const _7n = /* @__PURE__ */ BigInt(7);
+const _256n = /* @__PURE__ */ BigInt(256);
+const _0x71n = /* @__PURE__ */ BigInt(0x71);
+for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
+ // Pi
+ [x, y] = [y, (2 * x + 3 * y) % 5];
+ SHA3_PI.push(2 * (5 * y + x));
+ // Rotational
+ SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);
+ // Iota
+ let t = _0n;
+ for (let j = 0; j < 7; j++) {
+ R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
+ if (R & _2n)
+ t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);
+ }
+ _SHA3_IOTA.push(t);
+}
+const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);
+// Left rotation (without 0, 32, 64)
+const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));
+const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));
+/** `keccakf1600` internal function, additionally allows to adjust round count. */
+function keccakP(s, rounds = 24) {
+ const B = new Uint32Array(5 * 2);
+ // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)
+ for (let round = 24 - rounds; round < 24; round++) {
+ // Theta θ
+ for (let x = 0; x < 10; x++)
+ B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
+ for (let x = 0; x < 10; x += 2) {
+ const idx1 = (x + 8) % 10;
+ const idx0 = (x + 2) % 10;
+ const B0 = B[idx0];
+ const B1 = B[idx0 + 1];
+ const Th = rotlH(B0, B1, 1) ^ B[idx1];
+ const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
+ for (let y = 0; y < 50; y += 10) {
+ s[x + y] ^= Th;
+ s[x + y + 1] ^= Tl;
+ }
+ }
+ // Rho (ρ) and Pi (π)
+ let curH = s[2];
+ let curL = s[3];
+ for (let t = 0; t < 24; t++) {
+ const shift = SHA3_ROTL[t];
+ const Th = rotlH(curH, curL, shift);
+ const Tl = rotlL(curH, curL, shift);
+ const PI = SHA3_PI[t];
+ curH = s[PI];
+ curL = s[PI + 1];
+ s[PI] = Th;
+ s[PI + 1] = Tl;
+ }
+ // Chi (χ)
+ for (let y = 0; y < 50; y += 10) {
+ for (let x = 0; x < 10; x++)
+ B[x] = s[y + x];
+ for (let x = 0; x < 10; x++)
+ s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
+ }
+ // Iota (ι)
+ s[0] ^= SHA3_IOTA_H[round];
+ s[1] ^= SHA3_IOTA_L[round];
+ }
+ B.fill(0);
+}
+/** Keccak sponge function. */
+class Keccak extends Hash {
+ // NOTE: we accept arguments in bytes instead of bits here.
+ constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
+ super();
+ this.blockLen = blockLen;
+ this.suffix = suffix;
+ this.outputLen = outputLen;
+ this.enableXOF = enableXOF;
+ this.rounds = rounds;
+ this.pos = 0;
+ this.posOut = 0;
+ this.finished = false;
+ this.destroyed = false;
+ // Can be passed from user as dkLen
+ anumber(outputLen);
+ // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
+ // 0 < blockLen < 200
+ if (0 >= this.blockLen || this.blockLen >= 200)
+ throw new Error('Sha3 supports only keccak-f1600 function');
+ this.state = new Uint8Array(200);
+ this.state32 = u32(this.state);
+ }
+ keccak() {
+ if (!isLE)
+ byteSwap32(this.state32);
+ keccakP(this.state32, this.rounds);
+ if (!isLE)
+ byteSwap32(this.state32);
+ this.posOut = 0;
+ this.pos = 0;
+ }
+ update(data) {
+ aexists(this);
+ const { blockLen, state } = this;
+ data = toBytes(data);
+ const len = data.length;
+ for (let pos = 0; pos < len;) {
+ const take = Math.min(blockLen - this.pos, len - pos);
+ for (let i = 0; i < take; i++)
+ state[this.pos++] ^= data[pos++];
+ if (this.pos === blockLen)
+ this.keccak();
+ }
+ return this;
+ }
+ finish() {
+ if (this.finished)
+ return;
+ this.finished = true;
+ const { state, suffix, pos, blockLen } = this;
+ // Do the padding
+ state[pos] ^= suffix;
+ if ((suffix & 0x80) !== 0 && pos === blockLen - 1)
+ this.keccak();
+ state[blockLen - 1] ^= 0x80;
+ this.keccak();
+ }
+ writeInto(out) {
+ aexists(this, false);
+ abytes(out);
+ this.finish();
+ const bufferOut = this.state;
+ const { blockLen } = this;
+ for (let pos = 0, len = out.length; pos < len;) {
+ if (this.posOut >= blockLen)
+ this.keccak();
+ const take = Math.min(blockLen - this.posOut, len - pos);
+ out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
+ this.posOut += take;
+ pos += take;
+ }
+ return out;
+ }
+ xofInto(out) {
+ // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF
+ if (!this.enableXOF)
+ throw new Error('XOF is not possible for this instance');
+ return this.writeInto(out);
+ }
+ xof(bytes) {
+ anumber(bytes);
+ return this.xofInto(new Uint8Array(bytes));
+ }
+ digestInto(out) {
+ aoutput(out, this);
+ if (this.finished)
+ throw new Error('digest() was already called');
+ this.writeInto(out);
+ this.destroy();
+ return out;
+ }
+ digest() {
+ return this.digestInto(new Uint8Array(this.outputLen));
+ }
+ destroy() {
+ this.destroyed = true;
+ this.state.fill(0);
+ }
+ _cloneInto(to) {
+ const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
+ to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
+ to.state32.set(this.state32);
+ to.pos = this.pos;
+ to.posOut = this.posOut;
+ to.finished = this.finished;
+ to.rounds = rounds;
+ // Suffix can change in cSHAKE
+ to.suffix = suffix;
+ to.outputLen = outputLen;
+ to.enableXOF = enableXOF;
+ to.destroyed = this.destroyed;
+ return to;
+ }
+}
+const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
+/** keccak-256 hash function. Different from SHA3-256. */
+const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);
/*
Copyright 2022 iden3 association.
@@ -10679,7 +10348,6 @@ var jsSha3 = sha3.exports;
You should have received a copy of the GNU General Public License along with
snarkjs. If not, see .
*/
-const { keccak256 } = jsSha3;
const POLYNOMIAL = 0;
const SCALAR = 1;
@@ -10727,7 +10395,7 @@ class Keccak256Transcript {
}
}
- const value = Scalar.fromRprBE(new Uint8Array(keccak256.arrayBuffer(buffer)));
+ const value = Scalar.fromRprBE(keccak_256(buffer));
return this.Fr.e(value);
}
}
diff --git a/build/cli.cjs b/build/cli.cjs
index 13dd140e..9b022024 100755
--- a/build/cli.cjs
+++ b/build/cli.cjs
@@ -14,7 +14,7 @@ var path = require('path');
var binFileUtils = require('@iden3/binfileutils');
var ejs = require('ejs');
var circom_runtime = require('circom_runtime');
-var jsSha3 = require('js-sha3');
+var sha3 = require('@noble/hashes/sha3');
var bfj = require('bfj');
var Logger = require('logplease');
@@ -47,7 +47,6 @@ var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
var binFileUtils__namespace = /*#__PURE__*/_interopNamespace(binFileUtils);
var ejs__default = /*#__PURE__*/_interopDefaultLegacy(ejs);
-var jsSha3__default = /*#__PURE__*/_interopDefaultLegacy(jsSha3);
var bfj__default = /*#__PURE__*/_interopDefaultLegacy(bfj);
var Logger__default = /*#__PURE__*/_interopDefaultLegacy(Logger);
@@ -6876,7 +6875,6 @@ class Proof {
You should have received a copy of the GNU General Public License along with
snarkjs. If not, see .
*/
-const { keccak256 } = jsSha3__default["default"];
const POLYNOMIAL = 0;
const SCALAR = 1;
@@ -6924,7 +6922,7 @@ class Keccak256Transcript {
}
}
- const value = ffjavascript.Scalar.fromRprBE(new Uint8Array(keccak256.arrayBuffer(buffer)));
+ const value = ffjavascript.Scalar.fromRprBE(sha3.keccak_256(buffer));
return this.Fr.e(value);
}
}
diff --git a/build/main.cjs b/build/main.cjs
index 5a91ec66..0117b254 100644
--- a/build/main.cjs
+++ b/build/main.cjs
@@ -11,7 +11,7 @@ var fastFile = require('fastfile');
var circom_runtime = require('circom_runtime');
var r1csfile = require('r1csfile');
var ejs = require('ejs');
-var jsSha3 = require('js-sha3');
+var sha3 = require('@noble/hashes/sha3');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -39,7 +39,6 @@ var readline__default = /*#__PURE__*/_interopDefaultLegacy(readline);
var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
var fastFile__namespace = /*#__PURE__*/_interopNamespace(fastFile);
var ejs__default = /*#__PURE__*/_interopDefaultLegacy(ejs);
-var jsSha3__default = /*#__PURE__*/_interopDefaultLegacy(jsSha3);
const bls12381r$1 = ffjavascript.Scalar.e("73eda753299d7d483339d80809a1d80553bda402fffe5bfeffffffff00000001", 16);
const bn128r$1 = ffjavascript.Scalar.e("21888242871839275222246405745257275088548364400416034343698204186575808495617");
@@ -6983,7 +6982,6 @@ class Proof {
You should have received a copy of the GNU General Public License along with
snarkjs. If not, see .
*/
-const { keccak256 } = jsSha3__default["default"];
const POLYNOMIAL = 0;
const SCALAR = 1;
@@ -7031,7 +7029,7 @@ class Keccak256Transcript {
}
}
- const value = ffjavascript.Scalar.fromRprBE(new Uint8Array(keccak256.arrayBuffer(buffer)));
+ const value = ffjavascript.Scalar.fromRprBE(sha3.keccak_256(buffer));
return this.Fr.e(value);
}
}
diff --git a/build/snarkjs.js b/build/snarkjs.js
index 42e27306..3fdffeac 100644
--- a/build/snarkjs.js
+++ b/build/snarkjs.js
@@ -15527,7 +15527,7 @@ var snarkjs = (function (exports) {
}
}
- function u32$1(n) {
+ function u32$2(n) {
const b = [];
const v = toNumber$2(n);
b.push(Number(v & 0xFFn));
@@ -16146,8 +16146,8 @@ var snarkjs = (function (exports) {
build() {
this._setSignatures();
return new Uint8Array([
- ...u32$1(0x6d736100),
- ...u32$1(1),
+ ...u32$2(0x6d736100),
+ ...u32$2(1),
...this._buildType(),
...this._buildImport(),
...this._buildFunctionDeclarations(),
@@ -16388,7 +16388,7 @@ var snarkjs = (function (exports) {
0x00,
0x0b,
0x04,
- ...u32$1(this.free)
+ ...u32$2(this.free)
]);
for (let i=0; i< this.datas.length; i++) {
entries.push([
@@ -17403,8 +17403,8 @@ var snarkjs = (function (exports) {
}
}
- const O_TRUNC = 1024;
- const O_CREAT = 512;
+ const O_TRUNC = 512;
+ const O_CREAT = 64;
const O_RDWR = 2;
const O_RDONLY = 0;
@@ -17673,8 +17673,6 @@ var snarkjs = (function (exports) {
getCurveFromName: getCurveFromName
});
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
-
var blake2bWasm = {exports: {}};
var nanoassert = assert$1;
@@ -38282,7 +38280,7 @@ var snarkjs = (function (exports) {
}
}
- function u32(n) {
+ function u32$1(n) {
const b = [];
const v = toNumber(n);
b.push(Number(v & 0xFFn));
@@ -38901,8 +38899,8 @@ var snarkjs = (function (exports) {
build() {
this._setSignatures();
return new Uint8Array([
- ...u32(0x6d736100),
- ...u32(1),
+ ...u32$1(0x6d736100),
+ ...u32$1(1),
...this._buildType(),
...this._buildImport(),
...this._buildFunctionDeclarations(),
@@ -39143,7 +39141,7 @@ var snarkjs = (function (exports) {
0x00,
0x0b,
0x04,
- ...u32(this.free)
+ ...u32$1(this.free)
]);
for (let i=0; i< this.datas.length; i++) {
entries.push([
@@ -42773,662 +42771,333 @@ var snarkjs = (function (exports) {
}
}
- var sha3 = {exports: {}};
-
/**
- * [js-sha3]{@link https://github.com/emn178/js-sha3}
- *
- * @version 0.8.0
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
- * @copyright Chen, Yi-Cyuan 2015-2018
- * @license MIT
+ * Internal assertion helpers.
+ * @module
*/
+ /** Asserts something is positive integer. */
+ function anumber(n) {
+ if (!Number.isSafeInteger(n) || n < 0)
+ throw new Error('positive integer expected, got ' + n);
+ }
+ /** Is number an Uint8Array? Copied from utils for perf. */
+ function isBytes(a) {
+ return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');
+ }
+ /** Asserts something is Uint8Array. */
+ function abytes(b, ...lengths) {
+ if (!isBytes(b))
+ throw new Error('Uint8Array expected');
+ if (lengths.length > 0 && !lengths.includes(b.length))
+ throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);
+ }
+ /** Asserts a hash instance has not been destroyed / finished */
+ function aexists(instance, checkFinished = true) {
+ if (instance.destroyed)
+ throw new Error('Hash instance has been destroyed');
+ if (checkFinished && instance.finished)
+ throw new Error('Hash#digest() has already been called');
+ }
+ /** Asserts output is properly-sized byte array */
+ function aoutput(out, instance) {
+ abytes(out);
+ const min = instance.outputLen;
+ if (out.length < min) {
+ throw new Error('digestInto() expects output buffer of length at least ' + min);
+ }
+ }
- (function (module) {
- /*jslint bitwise: true */
- (function () {
-
- var INPUT_ERROR = 'input is invalid type';
- var FINALIZE_ERROR = 'finalize already called';
- var WINDOW = typeof window === 'object';
- var root = WINDOW ? window : {};
- if (root.JS_SHA3_NO_WINDOW) {
- WINDOW = false;
- }
- var WEB_WORKER = !WINDOW && typeof self === 'object';
- var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
- if (NODE_JS) {
- root = commonjsGlobal;
- } else if (WEB_WORKER) {
- root = self;
- }
- var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && 'object' === 'object' && module.exports;
- var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';
- var HEX_CHARS = '0123456789abcdef'.split('');
- var SHAKE_PADDING = [31, 7936, 2031616, 520093696];
- var CSHAKE_PADDING = [4, 1024, 262144, 67108864];
- var KECCAK_PADDING = [1, 256, 65536, 16777216];
- var PADDING = [6, 1536, 393216, 100663296];
- var SHIFT = [0, 8, 16, 24];
- var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,
- 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,
- 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,
- 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,
- 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];
- var BITS = [224, 256, 384, 512];
- var SHAKE_BITS = [128, 256];
- var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];
- var CSHAKE_BYTEPAD = {
- '128': 168,
- '256': 136
- };
-
- if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {
- Array.isArray = function (obj) {
- return Object.prototype.toString.call(obj) === '[object Array]';
- };
- }
-
- if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
- ArrayBuffer.isView = function (obj) {
- return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;
- };
- }
-
- var createOutputMethod = function (bits, padding, outputType) {
- return function (message) {
- return new Keccak(bits, padding, bits).update(message)[outputType]();
- };
- };
-
- var createShakeOutputMethod = function (bits, padding, outputType) {
- return function (message, outputBits) {
- return new Keccak(bits, padding, outputBits).update(message)[outputType]();
- };
- };
-
- var createCshakeOutputMethod = function (bits, padding, outputType) {
- return function (message, outputBits, n, s) {
- return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();
- };
- };
-
- var createKmacOutputMethod = function (bits, padding, outputType) {
- return function (key, message, outputBits, s) {
- return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();
- };
- };
-
- var createOutputMethods = function (method, createMethod, bits, padding) {
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
- var type = OUTPUT_TYPES[i];
- method[type] = createMethod(bits, padding, type);
- }
- return method;
- };
-
- var createMethod = function (bits, padding) {
- var method = createOutputMethod(bits, padding, 'hex');
- method.create = function () {
- return new Keccak(bits, padding, bits);
- };
- method.update = function (message) {
- return method.create().update(message);
- };
- return createOutputMethods(method, createOutputMethod, bits, padding);
- };
-
- var createShakeMethod = function (bits, padding) {
- var method = createShakeOutputMethod(bits, padding, 'hex');
- method.create = function (outputBits) {
- return new Keccak(bits, padding, outputBits);
- };
- method.update = function (message, outputBits) {
- return method.create(outputBits).update(message);
- };
- return createOutputMethods(method, createShakeOutputMethod, bits, padding);
- };
-
- var createCshakeMethod = function (bits, padding) {
- var w = CSHAKE_BYTEPAD[bits];
- var method = createCshakeOutputMethod(bits, padding, 'hex');
- method.create = function (outputBits, n, s) {
- if (!n && !s) {
- return methods['shake' + bits].create(outputBits);
- } else {
- return new Keccak(bits, padding, outputBits).bytepad([n, s], w);
- }
- };
- method.update = function (message, outputBits, n, s) {
- return method.create(outputBits, n, s).update(message);
- };
- return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
- };
-
- var createKmacMethod = function (bits, padding) {
- var w = CSHAKE_BYTEPAD[bits];
- var method = createKmacOutputMethod(bits, padding, 'hex');
- method.create = function (key, outputBits, s) {
- return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);
- };
- method.update = function (key, message, outputBits, s) {
- return method.create(key, outputBits, s).update(message);
- };
- return createOutputMethods(method, createKmacOutputMethod, bits, padding);
- };
-
- var algorithms = [
- { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },
- { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },
- { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },
- { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },
- { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }
- ];
-
- var methods = {}, methodNames = [];
-
- for (var i = 0; i < algorithms.length; ++i) {
- var algorithm = algorithms[i];
- var bits = algorithm.bits;
- for (var j = 0; j < bits.length; ++j) {
- var methodName = algorithm.name + '_' + bits[j];
- methodNames.push(methodName);
- methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
- if (algorithm.name !== 'sha3') {
- var newMethodName = algorithm.name + bits[j];
- methodNames.push(newMethodName);
- methods[newMethodName] = methods[methodName];
- }
- }
- }
-
- function Keccak(bits, padding, outputBits) {
- this.blocks = [];
- this.s = [];
- this.padding = padding;
- this.outputBits = outputBits;
- this.reset = true;
- this.finalized = false;
- this.block = 0;
- this.start = 0;
- this.blockCount = (1600 - (bits << 1)) >> 5;
- this.byteCount = this.blockCount << 2;
- this.outputBlocks = outputBits >> 5;
- this.extraBytes = (outputBits & 31) >> 3;
-
- for (var i = 0; i < 50; ++i) {
- this.s[i] = 0;
- }
- }
-
- Keccak.prototype.update = function (message) {
- if (this.finalized) {
- throw new Error(FINALIZE_ERROR);
- }
- var notString, type = typeof message;
- if (type !== 'string') {
- if (type === 'object') {
- if (message === null) {
- throw new Error(INPUT_ERROR);
- } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
- message = new Uint8Array(message);
- } else if (!Array.isArray(message)) {
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
- throw new Error(INPUT_ERROR);
- }
- }
- } else {
- throw new Error(INPUT_ERROR);
- }
- notString = true;
- }
- var blocks = this.blocks, byteCount = this.byteCount, length = message.length,
- blockCount = this.blockCount, index = 0, s = this.s, i, code;
-
- while (index < length) {
- if (this.reset) {
- this.reset = false;
- blocks[0] = this.block;
- for (i = 1; i < blockCount + 1; ++i) {
- blocks[i] = 0;
- }
- }
- if (notString) {
- for (i = this.start; index < length && i < byteCount; ++index) {
- blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
- }
- } else {
- for (i = this.start; index < length && i < byteCount; ++index) {
- code = message.charCodeAt(index);
- if (code < 0x80) {
- blocks[i >> 2] |= code << SHIFT[i++ & 3];
- } else if (code < 0x800) {
- blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- } else if (code < 0xd800 || code >= 0xe000) {
- blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- } else {
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
- blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
- blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
- }
- }
- }
- this.lastByteIndex = i;
- if (i >= byteCount) {
- this.start = i - byteCount;
- this.block = blocks[blockCount];
- for (i = 0; i < blockCount; ++i) {
- s[i] ^= blocks[i];
- }
- f(s);
- this.reset = true;
- } else {
- this.start = i;
- }
- }
- return this;
- };
-
- Keccak.prototype.encode = function (x, right) {
- var o = x & 255, n = 1;
- var bytes = [o];
- x = x >> 8;
- o = x & 255;
- while (o > 0) {
- bytes.unshift(o);
- x = x >> 8;
- o = x & 255;
- ++n;
- }
- if (right) {
- bytes.push(n);
- } else {
- bytes.unshift(n);
- }
- this.update(bytes);
- return bytes.length;
- };
-
- Keccak.prototype.encodeString = function (str) {
- var notString, type = typeof str;
- if (type !== 'string') {
- if (type === 'object') {
- if (str === null) {
- throw new Error(INPUT_ERROR);
- } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {
- str = new Uint8Array(str);
- } else if (!Array.isArray(str)) {
- if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {
- throw new Error(INPUT_ERROR);
- }
- }
- } else {
- throw new Error(INPUT_ERROR);
- }
- notString = true;
- }
- var bytes = 0, length = str.length;
- if (notString) {
- bytes = length;
- } else {
- for (var i = 0; i < str.length; ++i) {
- var code = str.charCodeAt(i);
- if (code < 0x80) {
- bytes += 1;
- } else if (code < 0x800) {
- bytes += 2;
- } else if (code < 0xd800 || code >= 0xe000) {
- bytes += 3;
- } else {
- code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
- bytes += 4;
- }
- }
- }
- bytes += this.encode(bytes * 8);
- this.update(str);
- return bytes;
- };
-
- Keccak.prototype.bytepad = function (strs, w) {
- var bytes = this.encode(w);
- for (var i = 0; i < strs.length; ++i) {
- bytes += this.encodeString(strs[i]);
- }
- var paddingBytes = w - bytes % w;
- var zeros = [];
- zeros.length = paddingBytes;
- this.update(zeros);
- return this;
- };
-
- Keccak.prototype.finalize = function () {
- if (this.finalized) {
- return;
- }
- this.finalized = true;
- var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
- blocks[i >> 2] |= this.padding[i & 3];
- if (this.lastByteIndex === this.byteCount) {
- blocks[0] = blocks[blockCount];
- for (i = 1; i < blockCount + 1; ++i) {
- blocks[i] = 0;
- }
- }
- blocks[blockCount - 1] |= 0x80000000;
- for (i = 0; i < blockCount; ++i) {
- s[i] ^= blocks[i];
- }
- f(s);
- };
-
- Keccak.prototype.toString = Keccak.prototype.hex = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var hex = '', block;
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- block = s[i];
- hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +
- HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +
- HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +
- HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];
- }
- if (j % blockCount === 0) {
- f(s);
- i = 0;
- }
- }
- if (extraBytes) {
- block = s[i];
- hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];
- if (extraBytes > 1) {
- hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];
- }
- if (extraBytes > 2) {
- hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];
- }
- }
- return hex;
- };
-
- Keccak.prototype.arrayBuffer = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var bytes = this.outputBits >> 3;
- var buffer;
- if (extraBytes) {
- buffer = new ArrayBuffer((outputBlocks + 1) << 2);
- } else {
- buffer = new ArrayBuffer(bytes);
- }
- var array = new Uint32Array(buffer);
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- array[j] = s[i];
- }
- if (j % blockCount === 0) {
- f(s);
- }
- }
- if (extraBytes) {
- array[i] = s[i];
- buffer = buffer.slice(0, bytes);
- }
- return buffer;
- };
-
- Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
-
- Keccak.prototype.digest = Keccak.prototype.array = function () {
- this.finalize();
-
- var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,
- extraBytes = this.extraBytes, i = 0, j = 0;
- var array = [], offset, block;
- while (j < outputBlocks) {
- for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
- offset = j << 2;
- block = s[i];
- array[offset] = block & 0xFF;
- array[offset + 1] = (block >> 8) & 0xFF;
- array[offset + 2] = (block >> 16) & 0xFF;
- array[offset + 3] = (block >> 24) & 0xFF;
- }
- if (j % blockCount === 0) {
- f(s);
- }
- }
- if (extraBytes) {
- offset = j << 2;
- block = s[i];
- array[offset] = block & 0xFF;
- if (extraBytes > 1) {
- array[offset + 1] = (block >> 8) & 0xFF;
- }
- if (extraBytes > 2) {
- array[offset + 2] = (block >> 16) & 0xFF;
- }
- }
- return array;
- };
-
- function Kmac(bits, padding, outputBits) {
- Keccak.call(this, bits, padding, outputBits);
- }
-
- Kmac.prototype = new Keccak();
-
- Kmac.prototype.finalize = function () {
- this.encode(this.outputBits, true);
- return Keccak.prototype.finalize.call(this);
- };
-
- var f = function (s) {
- var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,
- b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,
- b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,
- b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
- for (n = 0; n < 48; n += 2) {
- c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
- c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
- c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
- c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
- c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
- c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
- c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
- c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
- c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
- c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
-
- h = c8 ^ ((c2 << 1) | (c3 >>> 31));
- l = c9 ^ ((c3 << 1) | (c2 >>> 31));
- s[0] ^= h;
- s[1] ^= l;
- s[10] ^= h;
- s[11] ^= l;
- s[20] ^= h;
- s[21] ^= l;
- s[30] ^= h;
- s[31] ^= l;
- s[40] ^= h;
- s[41] ^= l;
- h = c0 ^ ((c4 << 1) | (c5 >>> 31));
- l = c1 ^ ((c5 << 1) | (c4 >>> 31));
- s[2] ^= h;
- s[3] ^= l;
- s[12] ^= h;
- s[13] ^= l;
- s[22] ^= h;
- s[23] ^= l;
- s[32] ^= h;
- s[33] ^= l;
- s[42] ^= h;
- s[43] ^= l;
- h = c2 ^ ((c6 << 1) | (c7 >>> 31));
- l = c3 ^ ((c7 << 1) | (c6 >>> 31));
- s[4] ^= h;
- s[5] ^= l;
- s[14] ^= h;
- s[15] ^= l;
- s[24] ^= h;
- s[25] ^= l;
- s[34] ^= h;
- s[35] ^= l;
- s[44] ^= h;
- s[45] ^= l;
- h = c4 ^ ((c8 << 1) | (c9 >>> 31));
- l = c5 ^ ((c9 << 1) | (c8 >>> 31));
- s[6] ^= h;
- s[7] ^= l;
- s[16] ^= h;
- s[17] ^= l;
- s[26] ^= h;
- s[27] ^= l;
- s[36] ^= h;
- s[37] ^= l;
- s[46] ^= h;
- s[47] ^= l;
- h = c6 ^ ((c0 << 1) | (c1 >>> 31));
- l = c7 ^ ((c1 << 1) | (c0 >>> 31));
- s[8] ^= h;
- s[9] ^= l;
- s[18] ^= h;
- s[19] ^= l;
- s[28] ^= h;
- s[29] ^= l;
- s[38] ^= h;
- s[39] ^= l;
- s[48] ^= h;
- s[49] ^= l;
-
- b0 = s[0];
- b1 = s[1];
- b32 = (s[11] << 4) | (s[10] >>> 28);
- b33 = (s[10] << 4) | (s[11] >>> 28);
- b14 = (s[20] << 3) | (s[21] >>> 29);
- b15 = (s[21] << 3) | (s[20] >>> 29);
- b46 = (s[31] << 9) | (s[30] >>> 23);
- b47 = (s[30] << 9) | (s[31] >>> 23);
- b28 = (s[40] << 18) | (s[41] >>> 14);
- b29 = (s[41] << 18) | (s[40] >>> 14);
- b20 = (s[2] << 1) | (s[3] >>> 31);
- b21 = (s[3] << 1) | (s[2] >>> 31);
- b2 = (s[13] << 12) | (s[12] >>> 20);
- b3 = (s[12] << 12) | (s[13] >>> 20);
- b34 = (s[22] << 10) | (s[23] >>> 22);
- b35 = (s[23] << 10) | (s[22] >>> 22);
- b16 = (s[33] << 13) | (s[32] >>> 19);
- b17 = (s[32] << 13) | (s[33] >>> 19);
- b48 = (s[42] << 2) | (s[43] >>> 30);
- b49 = (s[43] << 2) | (s[42] >>> 30);
- b40 = (s[5] << 30) | (s[4] >>> 2);
- b41 = (s[4] << 30) | (s[5] >>> 2);
- b22 = (s[14] << 6) | (s[15] >>> 26);
- b23 = (s[15] << 6) | (s[14] >>> 26);
- b4 = (s[25] << 11) | (s[24] >>> 21);
- b5 = (s[24] << 11) | (s[25] >>> 21);
- b36 = (s[34] << 15) | (s[35] >>> 17);
- b37 = (s[35] << 15) | (s[34] >>> 17);
- b18 = (s[45] << 29) | (s[44] >>> 3);
- b19 = (s[44] << 29) | (s[45] >>> 3);
- b10 = (s[6] << 28) | (s[7] >>> 4);
- b11 = (s[7] << 28) | (s[6] >>> 4);
- b42 = (s[17] << 23) | (s[16] >>> 9);
- b43 = (s[16] << 23) | (s[17] >>> 9);
- b24 = (s[26] << 25) | (s[27] >>> 7);
- b25 = (s[27] << 25) | (s[26] >>> 7);
- b6 = (s[36] << 21) | (s[37] >>> 11);
- b7 = (s[37] << 21) | (s[36] >>> 11);
- b38 = (s[47] << 24) | (s[46] >>> 8);
- b39 = (s[46] << 24) | (s[47] >>> 8);
- b30 = (s[8] << 27) | (s[9] >>> 5);
- b31 = (s[9] << 27) | (s[8] >>> 5);
- b12 = (s[18] << 20) | (s[19] >>> 12);
- b13 = (s[19] << 20) | (s[18] >>> 12);
- b44 = (s[29] << 7) | (s[28] >>> 25);
- b45 = (s[28] << 7) | (s[29] >>> 25);
- b26 = (s[38] << 8) | (s[39] >>> 24);
- b27 = (s[39] << 8) | (s[38] >>> 24);
- b8 = (s[48] << 14) | (s[49] >>> 18);
- b9 = (s[49] << 14) | (s[48] >>> 18);
-
- s[0] = b0 ^ (~b2 & b4);
- s[1] = b1 ^ (~b3 & b5);
- s[10] = b10 ^ (~b12 & b14);
- s[11] = b11 ^ (~b13 & b15);
- s[20] = b20 ^ (~b22 & b24);
- s[21] = b21 ^ (~b23 & b25);
- s[30] = b30 ^ (~b32 & b34);
- s[31] = b31 ^ (~b33 & b35);
- s[40] = b40 ^ (~b42 & b44);
- s[41] = b41 ^ (~b43 & b45);
- s[2] = b2 ^ (~b4 & b6);
- s[3] = b3 ^ (~b5 & b7);
- s[12] = b12 ^ (~b14 & b16);
- s[13] = b13 ^ (~b15 & b17);
- s[22] = b22 ^ (~b24 & b26);
- s[23] = b23 ^ (~b25 & b27);
- s[32] = b32 ^ (~b34 & b36);
- s[33] = b33 ^ (~b35 & b37);
- s[42] = b42 ^ (~b44 & b46);
- s[43] = b43 ^ (~b45 & b47);
- s[4] = b4 ^ (~b6 & b8);
- s[5] = b5 ^ (~b7 & b9);
- s[14] = b14 ^ (~b16 & b18);
- s[15] = b15 ^ (~b17 & b19);
- s[24] = b24 ^ (~b26 & b28);
- s[25] = b25 ^ (~b27 & b29);
- s[34] = b34 ^ (~b36 & b38);
- s[35] = b35 ^ (~b37 & b39);
- s[44] = b44 ^ (~b46 & b48);
- s[45] = b45 ^ (~b47 & b49);
- s[6] = b6 ^ (~b8 & b0);
- s[7] = b7 ^ (~b9 & b1);
- s[16] = b16 ^ (~b18 & b10);
- s[17] = b17 ^ (~b19 & b11);
- s[26] = b26 ^ (~b28 & b20);
- s[27] = b27 ^ (~b29 & b21);
- s[36] = b36 ^ (~b38 & b30);
- s[37] = b37 ^ (~b39 & b31);
- s[46] = b46 ^ (~b48 & b40);
- s[47] = b47 ^ (~b49 & b41);
- s[8] = b8 ^ (~b0 & b2);
- s[9] = b9 ^ (~b1 & b3);
- s[18] = b18 ^ (~b10 & b12);
- s[19] = b19 ^ (~b11 & b13);
- s[28] = b28 ^ (~b20 & b22);
- s[29] = b29 ^ (~b21 & b23);
- s[38] = b38 ^ (~b30 & b32);
- s[39] = b39 ^ (~b31 & b33);
- s[48] = b48 ^ (~b40 & b42);
- s[49] = b49 ^ (~b41 & b43);
-
- s[0] ^= RC[n];
- s[1] ^= RC[n + 1];
- }
- };
+ /**
+ * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.
+ * @todo re-check https://issues.chromium.org/issues/42212588
+ * @module
+ */
+ const U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);
+ const _32n = /* @__PURE__ */ BigInt(32);
+ function fromBig(n, le = false) {
+ if (le)
+ return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };
+ return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };
+ }
+ function split(lst, le = false) {
+ let Ah = new Uint32Array(lst.length);
+ let Al = new Uint32Array(lst.length);
+ for (let i = 0; i < lst.length; i++) {
+ const { h, l } = fromBig(lst[i], le);
+ [Ah[i], Al[i]] = [h, l];
+ }
+ return [Ah, Al];
+ }
+ // Left rotate for Shift in [1, 32)
+ const rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));
+ const rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));
+ // Left rotate for Shift in (32, 64), NOTE: 32 is special case.
+ const rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));
+ const rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));
- if (COMMON_JS) {
- module.exports = methods;
- } else {
- for (i = 0; i < methodNames.length; ++i) {
- root[methodNames[i]] = methods[methodNames[i]];
- }
- }
- })();
- } (sha3));
+ /**
+ * Utilities for hex, bytes, CSPRNG.
+ * @module
+ */
+ function u32(arr) {
+ return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));
+ }
+ /** Is current platform little-endian? Most are. Big-Endian platform: IBM */
+ const isLE = /* @__PURE__ */ (() => new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();
+ // The byte swap operation for uint32
+ function byteSwap(word) {
+ return (((word << 24) & 0xff000000) |
+ ((word << 8) & 0xff0000) |
+ ((word >>> 8) & 0xff00) |
+ ((word >>> 24) & 0xff));
+ }
+ /** In place byte swap for Uint32Array */
+ function byteSwap32(arr) {
+ for (let i = 0; i < arr.length; i++) {
+ arr[i] = byteSwap(arr[i]);
+ }
+ }
+ /**
+ * Convert JS string to byte array.
+ * @example utf8ToBytes('abc') // new Uint8Array([97, 98, 99])
+ */
+ function utf8ToBytes(str) {
+ if (typeof str !== 'string')
+ throw new Error('utf8ToBytes expected string, got ' + typeof str);
+ return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809
+ }
+ /**
+ * Normalizes (non-hex) string or Uint8Array to Uint8Array.
+ * Warning: when Uint8Array is passed, it would NOT get copied.
+ * Keep in mind for future mutable operations.
+ */
+ function toBytes(data) {
+ if (typeof data === 'string')
+ data = utf8ToBytes(data);
+ abytes(data);
+ return data;
+ }
+ /** For runtime check if class implements interface */
+ class Hash {
+ // Safe version that clones internal state
+ clone() {
+ return this._cloneInto();
+ }
+ }
+ /** Wraps hash function, creating an interface on top of it */
+ function wrapConstructor(hashCons) {
+ const hashC = (msg) => hashCons().update(toBytes(msg)).digest();
+ const tmp = hashCons();
+ hashC.outputLen = tmp.outputLen;
+ hashC.blockLen = tmp.blockLen;
+ hashC.create = () => hashCons();
+ return hashC;
+ }
- var jsSha3 = sha3.exports;
+ /**
+ * SHA3 (keccak) hash function, based on a new "Sponge function" design.
+ * Different from older hashes, the internal state is bigger than output size.
+ *
+ * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),
+ * [Website](https://keccak.team/keccak.html),
+ * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).
+ *
+ * Check out `sha3-addons` module for cSHAKE, k12, and others.
+ * @module
+ */
+ // Various per round constants calculations
+ const SHA3_PI = [];
+ const SHA3_ROTL = [];
+ const _SHA3_IOTA = [];
+ const _0n = /* @__PURE__ */ BigInt(0);
+ const _1n = /* @__PURE__ */ BigInt(1);
+ const _2n = /* @__PURE__ */ BigInt(2);
+ const _7n = /* @__PURE__ */ BigInt(7);
+ const _256n = /* @__PURE__ */ BigInt(256);
+ const _0x71n = /* @__PURE__ */ BigInt(0x71);
+ for (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {
+ // Pi
+ [x, y] = [y, (2 * x + 3 * y) % 5];
+ SHA3_PI.push(2 * (5 * y + x));
+ // Rotational
+ SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);
+ // Iota
+ let t = _0n;
+ for (let j = 0; j < 7; j++) {
+ R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;
+ if (R & _2n)
+ t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);
+ }
+ _SHA3_IOTA.push(t);
+ }
+ const [SHA3_IOTA_H, SHA3_IOTA_L] = /* @__PURE__ */ split(_SHA3_IOTA, true);
+ // Left rotation (without 0, 32, 64)
+ const rotlH = (h, l, s) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));
+ const rotlL = (h, l, s) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));
+ /** `keccakf1600` internal function, additionally allows to adjust round count. */
+ function keccakP(s, rounds = 24) {
+ const B = new Uint32Array(5 * 2);
+ // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)
+ for (let round = 24 - rounds; round < 24; round++) {
+ // Theta θ
+ for (let x = 0; x < 10; x++)
+ B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];
+ for (let x = 0; x < 10; x += 2) {
+ const idx1 = (x + 8) % 10;
+ const idx0 = (x + 2) % 10;
+ const B0 = B[idx0];
+ const B1 = B[idx0 + 1];
+ const Th = rotlH(B0, B1, 1) ^ B[idx1];
+ const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];
+ for (let y = 0; y < 50; y += 10) {
+ s[x + y] ^= Th;
+ s[x + y + 1] ^= Tl;
+ }
+ }
+ // Rho (ρ) and Pi (π)
+ let curH = s[2];
+ let curL = s[3];
+ for (let t = 0; t < 24; t++) {
+ const shift = SHA3_ROTL[t];
+ const Th = rotlH(curH, curL, shift);
+ const Tl = rotlL(curH, curL, shift);
+ const PI = SHA3_PI[t];
+ curH = s[PI];
+ curL = s[PI + 1];
+ s[PI] = Th;
+ s[PI + 1] = Tl;
+ }
+ // Chi (χ)
+ for (let y = 0; y < 50; y += 10) {
+ for (let x = 0; x < 10; x++)
+ B[x] = s[y + x];
+ for (let x = 0; x < 10; x++)
+ s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];
+ }
+ // Iota (ι)
+ s[0] ^= SHA3_IOTA_H[round];
+ s[1] ^= SHA3_IOTA_L[round];
+ }
+ B.fill(0);
+ }
+ /** Keccak sponge function. */
+ class Keccak extends Hash {
+ // NOTE: we accept arguments in bytes instead of bits here.
+ constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {
+ super();
+ this.blockLen = blockLen;
+ this.suffix = suffix;
+ this.outputLen = outputLen;
+ this.enableXOF = enableXOF;
+ this.rounds = rounds;
+ this.pos = 0;
+ this.posOut = 0;
+ this.finished = false;
+ this.destroyed = false;
+ // Can be passed from user as dkLen
+ anumber(outputLen);
+ // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes
+ // 0 < blockLen < 200
+ if (0 >= this.blockLen || this.blockLen >= 200)
+ throw new Error('Sha3 supports only keccak-f1600 function');
+ this.state = new Uint8Array(200);
+ this.state32 = u32(this.state);
+ }
+ keccak() {
+ if (!isLE)
+ byteSwap32(this.state32);
+ keccakP(this.state32, this.rounds);
+ if (!isLE)
+ byteSwap32(this.state32);
+ this.posOut = 0;
+ this.pos = 0;
+ }
+ update(data) {
+ aexists(this);
+ const { blockLen, state } = this;
+ data = toBytes(data);
+ const len = data.length;
+ for (let pos = 0; pos < len;) {
+ const take = Math.min(blockLen - this.pos, len - pos);
+ for (let i = 0; i < take; i++)
+ state[this.pos++] ^= data[pos++];
+ if (this.pos === blockLen)
+ this.keccak();
+ }
+ return this;
+ }
+ finish() {
+ if (this.finished)
+ return;
+ this.finished = true;
+ const { state, suffix, pos, blockLen } = this;
+ // Do the padding
+ state[pos] ^= suffix;
+ if ((suffix & 0x80) !== 0 && pos === blockLen - 1)
+ this.keccak();
+ state[blockLen - 1] ^= 0x80;
+ this.keccak();
+ }
+ writeInto(out) {
+ aexists(this, false);
+ abytes(out);
+ this.finish();
+ const bufferOut = this.state;
+ const { blockLen } = this;
+ for (let pos = 0, len = out.length; pos < len;) {
+ if (this.posOut >= blockLen)
+ this.keccak();
+ const take = Math.min(blockLen - this.posOut, len - pos);
+ out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);
+ this.posOut += take;
+ pos += take;
+ }
+ return out;
+ }
+ xofInto(out) {
+ // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF
+ if (!this.enableXOF)
+ throw new Error('XOF is not possible for this instance');
+ return this.writeInto(out);
+ }
+ xof(bytes) {
+ anumber(bytes);
+ return this.xofInto(new Uint8Array(bytes));
+ }
+ digestInto(out) {
+ aoutput(out, this);
+ if (this.finished)
+ throw new Error('digest() was already called');
+ this.writeInto(out);
+ this.destroy();
+ return out;
+ }
+ digest() {
+ return this.digestInto(new Uint8Array(this.outputLen));
+ }
+ destroy() {
+ this.destroyed = true;
+ this.state.fill(0);
+ }
+ _cloneInto(to) {
+ const { blockLen, suffix, outputLen, rounds, enableXOF } = this;
+ to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));
+ to.state32.set(this.state32);
+ to.pos = this.pos;
+ to.posOut = this.posOut;
+ to.finished = this.finished;
+ to.rounds = rounds;
+ // Suffix can change in cSHAKE
+ to.suffix = suffix;
+ to.outputLen = outputLen;
+ to.enableXOF = enableXOF;
+ to.destroyed = this.destroyed;
+ return to;
+ }
+ }
+ const gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));
+ /** keccak-256 hash function. Different from SHA3-256. */
+ const keccak_256 = /* @__PURE__ */ gen(0x01, 136, 256 / 8);
/*
Copyright 2022 iden3 association.
@@ -43448,7 +43117,6 @@ var snarkjs = (function (exports) {
You should have received a copy of the GNU General Public License along with
snarkjs. If not, see .
*/
- const { keccak256 } = jsSha3;
const POLYNOMIAL = 0;
const SCALAR = 1;
@@ -43496,7 +43164,7 @@ var snarkjs = (function (exports) {
}
}
- const value = Scalar.fromRprBE(new Uint8Array(keccak256.arrayBuffer(buffer)));
+ const value = Scalar.fromRprBE(keccak_256(buffer));
return this.Fr.e(value);
}
}
@@ -48876,4 +48544,4 @@ var snarkjs = (function (exports) {
return exports;
})({});
-//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcmtqcy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvb3NmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9tZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9iaWdtZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9mYXN0ZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmluZmlsZXV0aWxzL3NyYy9iaW5maWxldXRpbHMuanMiLCIuLi9zcmMvY3VydmVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL25hbm9hc3NlcnQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi9hc2NpaS5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2Jhc2U2NC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2hleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL3V0ZjguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi91dGYxNmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2I0YS9icm93c2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9ibGFrZTJiLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9pbmRleC5qcyIsIi4uL3NyYy9taXNjLmpzIiwiLi4vc3JjL3prZXlfY29uc3RhbnRzLmpzIiwiLi4vc3JjL2ZmbG9ua19jb25zdGFudHMuanMiLCIuLi9zcmMvemtleV91dGlscy5qcyIsIi4uL3NyYy93dG5zX3V0aWxzLmpzIiwiLi4vc3JjL2dyb3RoMTZfcHJvdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzIiwiLi4vc3JjL3d0bnNfY2FsY3VsYXRlLmpzIiwiLi4vc3JjL2dyb3RoMTZfZnVsbHByb3ZlLmpzIiwiLi4vc3JjL2dyb3RoMTZfdmVyaWZ5LmpzIiwiLi4vc3JjL2dyb3RoMTZfZXhwb3J0c29saWRpdHljYWxsZGF0YS5qcyIsIi4uL3NyYy9ncm90aDE2LmpzIiwiLi4vc3JjL2tleXBhaXIuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfdXRpbHMuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfbmV3LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfaW1wb3J0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qcyIsIi4uL3NyYy9tcGNfYXBwbHlrZXkuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfY2hhbGxlbmdlX2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfYmVhY29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV90cnVuY2F0ZS5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1LmpzIiwiLi4vc3JjL3IxY3NfcHJpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmlnYXJyYXkvc3JjL2JpZ2FycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL3NyYy9yMWNzZmlsZS5qcyIsIi4uL3NyYy9yMWNzX2luZm8uanMiLCIuLi9zcmMvcjFjc19leHBvcnRfanNvbi5qcyIsIi4uL3NyYy9yMWNzLmpzIiwiLi4vc3JjL2xvYWRzeW1zLmpzIiwiLi4vc3JjL3d0bnNfZGVidWcuanMiLCIuLi9zcmMvd3Ruc19leHBvcnRfanNvbi5qcyIsIi4uL3NyYy93dG5zX2NoZWNrLmpzIiwiLi4vc3JjL3d0bnMuanMiLCIuLi9zcmMvYmlnYXJyYXkuanMiLCIuLi9zcmMvemtleV9uZXcuanMiLCIuLi9zcmMvemtleV9leHBvcnRfYmVsbG1hbi5qcyIsIi4uL3NyYy96a2V5X2ltcG9ydF9iZWxsbWFuLmpzIiwiLi4vc3JjL3prZXlfdmVyaWZ5X2Zyb21pbml0LmpzIiwiLi4vc3JjL3prZXlfdmVyaWZ5X2Zyb21yMWNzLmpzIiwiLi4vc3JjL3prZXlfY29udHJpYnV0ZS5qcyIsIi4uL3NyYy96a2V5X2JlYWNvbi5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3prZXlfYmVsbG1hbl9jb250cmlidXRlLmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qcyIsIi4uL3NyYy9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X3NvbGlkaXR5dmVyaWZpZXIuanMiLCIuLi9zcmMvemtleS5qcyIsIi4uL3NyYy9wbG9ua19zZXR1cC5qcyIsIi4uL3NyYy9wcm9vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9qcy1zaGEzL3NyYy9zaGEzLmpzIiwiLi4vc3JjL0tlY2NhazI1NlRyYW5zY3JpcHQuanMiLCIuLi9zcmMvbXVsX3ouanMiLCIuLi9zcmMvcGxvbmtfY29uc3RhbnRzLmpzIiwiLi4vc3JjL3BvbHlub21pYWwvcG9seW5vbWlhbC5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL2V2YWx1YXRpb25zLmpzIiwiLi4vc3JjL3Bsb25rX3Byb3ZlLmpzIiwiLi4vc3JjL3Bsb25rX2Z1bGxwcm92ZS5qcyIsIi4uL3NyYy9wbG9ua192ZXJpZnkuanMiLCIuLi9zcmMvcGxvbmtfZXhwb3J0c29saWRpdHljYWxsZGF0YS5qcyIsIi4uL3NyYy9wbG9uay5qcyIsIi4uL3NyYy9wbG9ua19lcXVhdGlvbi5qcyIsIi4uL3NyYy9yMWNzX2NvbnN0cmFpbnRfcHJvY2Vzc29yLmpzIiwiLi4vc3JjL3BvbHlub21pYWwvY3BvbHlub21pYWwuanMiLCIuLi9zcmMvZmZsb25rX3NldHVwLmpzIiwiLi4vc3JjL2ZmbG9ua19wcm92ZS5qcyIsIi4uL3NyYy9mZmxvbmtfZnVsbF9wcm92ZS5qcyIsIi4uL3NyYy9mZmxvbmtfdmVyaWZ5LmpzIiwiLi4vc3JjL2ZmbG9ua19leHBvcnRfY2FsbGRhdGEuanMiLCIuLi9zcmMvZmZsb25rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmNvbnN0IGhleExlbiA9IFsgMCwgMSwgMiwgMiwgMywgMywgMywgMywgNCAsNCAsNCAsNCAsNCAsNCAsNCAsNF07XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcocywgcmFkaXgpIHtcbiAgICBpZiAoKCFyYWRpeCl8fChyYWRpeD09MTApKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQocyk7XG4gICAgfSBlbHNlIGlmIChyYWRpeD09MTYpIHtcbiAgICAgICAgaWYgKHMuc2xpY2UoMCwyKSA9PSBcIjB4XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBCaWdJbnQocyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KFwiMHhcIitzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZSA9IGZyb21TdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21BcnJheShhLCByYWRpeCkge1xuICAgIGxldCBhY2MgPUJpZ0ludCgwKTtcbiAgICByYWRpeCA9IEJpZ0ludChyYWRpeCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYWNjID0gYWNjKnJhZGl4ICsgQmlnSW50KGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNihhKSB7XG4gICAgY29uc3QgYVMgPWEudG9TdHJpbmcoMTYpO1xuICAgIHJldHVybiAoYVMubGVuZ3RoLTEpKjQgK2hleExlbltwYXJzZUludChhU1swXSwgMTYpXTtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQ0KGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KDApO1xufVxuXG5mdW5jdGlvbiBpc1plcm8kMShhKSB7XG4gICAgcmV0dXJuICFhO1xufVxuXG5mdW5jdGlvbiBzaGlmdExlZnQoYSwgbikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPDwgQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBzaGlmdFJpZ2h0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4+IEJpZ0ludChuKTtcbn1cblxuY29uc3Qgc2hsID0gc2hpZnRMZWZ0O1xuY29uc3Qgc2hyID0gc2hpZnRSaWdodDtcblxuZnVuY3Rpb24gaXNPZGQkNShhKSB7XG4gICAgcmV0dXJuIChCaWdJbnQoYSkgJiBCaWdJbnQoMSkpID09IEJpZ0ludCgxKTtcbn1cblxuXG5mdW5jdGlvbiBuYWYobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgQmlnSW50KDEpKSB7XG4gICAgICAgICAgICBjb25zdCB6ID0gMiAtIE51bWJlcihFICUgQmlnSW50KDQpKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKCB6ICk7XG4gICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gQmlnSW50KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmZ1bmN0aW9uIGJpdHMobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgQmlnSW50KDEpKSB7XG4gICAgICAgICAgICByZXMucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gQmlnSW50KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiB0b051bWJlciQxKHMpIHtcbiAgICBpZiAocz5CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIE51bWJlcihzKTtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShzLCByYWRpeCkge1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGxldCByZW0gPSBCaWdJbnQocyk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIHdoaWxlIChyZW0pIHtcbiAgICAgICAgcmVzLnVuc2hpZnQoIE51bWJlcihyZW0gJSByYWRpeCkpO1xuICAgICAgICByZW0gPSByZW0gLyByYWRpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKyBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIHN1YihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAtIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbmVnKGEpIHtcbiAgICByZXR1cm4gLUJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gbXVsKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMihhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gcG93KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZXhwJDEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiogQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBhYnMkMShhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PSAwID8gQmlnSW50KGEpIDogLUJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gZGl2KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIC8gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBtb2QoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID09IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbmVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICE9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbHQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPCBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGd0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPD0gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBnZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBiYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBib3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfCBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGJ4b3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgXiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGxhbmQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJiYgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsb3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsbm90KGEpIHtcbiAgICByZXR1cm4gIUJpZ0ludChhKTtcbn1cblxuLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIHRvUnByTEUoYnVmZiwgbywgZSwgbjgpIHtcbiAgICBjb25zdCBzID0gXCIwMDAwMDAwXCIgKyBlLnRvU3RyaW5nKDE2KTtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQgKyBvLCBuOC80KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2W2ldID0gcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KTtcbiAgICBmb3IgKGxldCBpPWw7IGk8di5sZW5ndGg7IGkrKykgdltpXSA9IDA7XG4gICAgZm9yIChsZXQgaT12Lmxlbmd0aCo0OyBpPG44OyBpKyspIGJ1ZmZbaV0gPSB0b051bWJlciQxKGJhbmQoc2hpZnRSaWdodChlLCBpKjgpLCAweEZGKSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckJFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgpO1xuICAgIGNvbnN0IGwgPSAoKChzLmxlbmd0aC03KSo0IC0gMSkgPj4gNSkrMTsgICAgLy8gTnVtYmVyIG9mIDMyYml0IHdvcmRzO1xuICAgIGZvciAobGV0IGk9MDsgaTxsOyBpKyspIHYuc2V0VWludDMyKG44LWkqNCAtNCwgcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KSwgZmFsc2UpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80LWw7IGkrKykgdltpXSA9IDA7XG59XG5cbi8vIFBhc2VzIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gZnJvbVJwckxFKGJ1ZmYsIG8sIG44KSB7XG4gICAgbjggPSBuOCB8fCBidWZmLmJ5dGVMZW5ndGg7XG4gICAgbyA9IG8gfHwgMDtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQgKyBvLCBuOC80KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIHYuZm9yRWFjaCggKGNoLGkpID0+IGFbYS5sZW5ndGgtaS0xXSA9IGNoLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LFwiMFwiKSApO1xuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJCRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgpO1xuICAgIGNvbnN0IGEgPSBuZXcgQXJyYXkobjgvNCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG44LzQ7IGkrKykge1xuICAgICAgICBhW2ldID0gdi5nZXRVaW50MzIoaSo0LCBmYWxzZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21TdHJpbmcoYS5qb2luKFwiXCIpLCAxNik7XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgcmV0dXJuIGEudG9TdHJpbmcocmFkaXgpO1xufVxuXG5mdW5jdGlvbiB0b0xFQnVmZihhKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KGEpIC0gMSkgLyA4KSArMSk7XG4gICAgdG9ScHJMRShidWZmLCAwLCBhLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiBidWZmO1xufVxuXG5jb25zdCB6ZXJvID0gZSgwKTtcbmNvbnN0IG9uZSA9IGUoMSk7XG5cbnZhciBfU2NhbGFyID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhYnM6IGFicyQxLFxuICAgIGFkZDogYWRkLFxuICAgIGJhbmQ6IGJhbmQsXG4gICAgYml0TGVuZ3RoOiBiaXRMZW5ndGgkNixcbiAgICBiaXRzOiBiaXRzLFxuICAgIGJvcjogYm9yLFxuICAgIGJ4b3I6IGJ4b3IsXG4gICAgZGl2OiBkaXYsXG4gICAgZTogZSxcbiAgICBlcTogZXEsXG4gICAgZXhwOiBleHAkMSxcbiAgICBmcm9tQXJyYXk6IGZyb21BcnJheSxcbiAgICBmcm9tUnByQkU6IGZyb21ScHJCRSxcbiAgICBmcm9tUnByTEU6IGZyb21ScHJMRSxcbiAgICBmcm9tU3RyaW5nOiBmcm9tU3RyaW5nLFxuICAgIGdlcTogZ2VxLFxuICAgIGd0OiBndCxcbiAgICBpc05lZ2F0aXZlOiBpc05lZ2F0aXZlJDQsXG4gICAgaXNPZGQ6IGlzT2RkJDUsXG4gICAgaXNaZXJvOiBpc1plcm8kMSxcbiAgICBsYW5kOiBsYW5kLFxuICAgIGxlcTogbGVxLFxuICAgIGxub3Q6IGxub3QsXG4gICAgbG9yOiBsb3IsXG4gICAgbHQ6IGx0LFxuICAgIG1vZDogbW9kLFxuICAgIG11bDogbXVsLFxuICAgIG5hZjogbmFmLFxuICAgIG5lZzogbmVnLFxuICAgIG5lcTogbmVxLFxuICAgIG9uZTogb25lLFxuICAgIHBvdzogcG93LFxuICAgIHNoaWZ0TGVmdDogc2hpZnRMZWZ0LFxuICAgIHNoaWZ0UmlnaHQ6IHNoaWZ0UmlnaHQsXG4gICAgc2hsOiBzaGwsXG4gICAgc2hyOiBzaHIsXG4gICAgc3F1YXJlOiBzcXVhcmUkMixcbiAgICBzdWI6IHN1YixcbiAgICB0b0FycmF5OiB0b0FycmF5LFxuICAgIHRvTEVCdWZmOiB0b0xFQnVmZixcbiAgICB0b051bWJlcjogdG9OdW1iZXIkMSxcbiAgICB0b1JwckJFOiB0b1JwckJFLFxuICAgIHRvUnByTEU6IHRvUnByTEUsXG4gICAgdG9TdHJpbmc6IHRvU3RyaW5nLFxuICAgIHplcm86IHplcm9cbn0pO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuICAgIFRoaXMgbGlicmFyeSBkb2VzIG9wZXJhdGlvbnMgb24gcG9seW5vbWlhbHMgd2l0aCBjb2VmZmljaWVudHMgaW4gYSBmaWVsZCBGLlxuXG4gICAgQSBwb2x5bm9taWFsIFAoeCkgPSBwMCArIHAxICogeCArIHAyICogeF4yICsgLi4uICsgcG4gKiB4Xm4gIGlzIHJlcHJlc2VudGVkXG4gICAgYnkgdGhlIGFycmF5IFsgcDAsIHAxLCBwMiwgLi4uICwgcG4gXS5cbiAqL1xuXG5jbGFzcyBQb2xGaWVsZCB7XG4gICAgY29uc3RydWN0b3IgKEYpIHtcbiAgICAgICAgdGhpcy5GID0gRjtcblxuICAgICAgICBsZXQgcmVtID0gRi5zcXJ0X3Q7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3M7XG5cbiAgICAgICAgY29uc3QgZml2ZSA9IHRoaXMuRi5hZGQodGhpcy5GLmFkZCh0aGlzLkYudHdvLCB0aGlzLkYudHdvKSwgdGhpcy5GLm9uZSk7XG5cbiAgICAgICAgdGhpcy53ID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud2kgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53W3NdID0gdGhpcy5GLnBvdyhmaXZlLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuLyogICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBuID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290cy5wdXNoKHJvb3RzaSk7XG4gICAgICAgIH1cbiAgICAqL1xuICAgICAgICB0aGlzLl9zZXRSb290cygxNSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgaWYgKG4gPiB0aGlzLkYuc3FydF9zKSBuID0gdGhpcy5zO1xuICAgICAgICBmb3IgKGxldCBpPW47IChpPj0wKSAmJiAoIXRoaXMucm9vdHNbaV0pOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IG5yb290cyA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShucm9vdHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5yb290czsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5hZGQoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgY29uc3QgbSA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLnN1YihhW2ldIHx8IHRoaXMuRi56ZXJvLCBiW2ldIHx8IHRoaXMuRi56ZXJvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIocCwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi56ZXJvKSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi5vbmUpKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5tdWwocFtpXSwgYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihiLCBhWzBdKTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihhLCBiWzBdKTtcblxuICAgICAgICBpZiAoYi5sZW5ndGggPiBhLmxlbmd0aCkge1xuICAgICAgICAgICAgW2IsIGFdID0gW2EsIGJdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChiLmxlbmd0aCA8PSAyKSB8fCAoYi5sZW5ndGggPCBsb2cyJDIoYS5sZW5ndGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsTm9ybWFsKGEsYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWxGRlQoYSxiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG11bE5vcm1hbChhLCBiKSB7XG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuYWRkKHJlcywgdGhpcy5zY2FsZVgodGhpcy5tdWxTY2FsYXIoYSwgYltpXSksIGkpICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBtdWxGRlQoYSxiKSB7XG4gICAgICAgIGNvbnN0IGxvbmdlc3ROID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgYml0c1Jlc3VsdCA9IGxvZzIkMihsb25nZXN0Ti0xKSsyO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzUmVzdWx0KTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzUmVzdWx0O1xuICAgICAgICBjb25zdCBlYSA9IHRoaXMuZXh0ZW5kKGEsbSk7XG4gICAgICAgIGNvbnN0IGViID0gdGhpcy5leHRlbmQoYixtKTtcblxuICAgICAgICBjb25zdCB0YSA9IF9fZmZ0JDEodGhpcywgZWEsIGJpdHNSZXN1bHQsIDAsIDEpO1xuICAgICAgICBjb25zdCB0YiA9IF9fZmZ0JDEodGhpcywgZWIsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHRyZXMgPSBuZXcgQXJyYXkobSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgdHJlc1tpXSA9IHRoaXMuRi5tdWwodGFbaV0sIHRiW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0JDEodGhpcywgdHJlcywgYml0c1Jlc3VsdCwgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXNuKTtcbiAgICB9XG5cblxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsYSk7XG4gICAgfVxuXG4gICAgc2NhbGVYKHAsIG4pIHtcbiAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9IGVsc2UgaWYgKG4+MCkge1xuICAgICAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShuKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgICAgIHJldHVybiB6LmNvbmNhdChwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICgtbiA+PSBwLmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIHAuc2xpY2UoLW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZhbDIocCwgeCkge1xuICAgICAgICBsZXQgdiA9IHRoaXMuRi56ZXJvO1xuICAgICAgICBsZXQgaXggPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdiA9IHRoaXMuRi5hZGQodiwgdGhpcy5GLm11bChwW2ldLCBpeCkpO1xuICAgICAgICAgICAgaXggPSB0aGlzLkYubXVsKGl4LCB4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBldmFsdWF0ZShwLHgpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBGLnplcm87XG4gICAgICAgIGNvbnN0IG0gPSB0aGlzLl9uZXh0MlBvd2VyKHAubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcblxuICAgICAgICByZXR1cm4gX2V2YWwoZXAsIHgsIDAsIDEsIG0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9ldmFsKHAsIHgsIG9mZnNldCwgc3RlcCwgbikge1xuICAgICAgICAgICAgaWYgKG49PTEpIHJldHVybiBwW29mZnNldF07XG4gICAgICAgICAgICBjb25zdCBuZXdYID0gRi5zcXVhcmUoeCk7XG4gICAgICAgICAgICBjb25zdCByZXM9IEYuYWRkKFxuICAgICAgICAgICAgICAgIF9ldmFsKHAsIG5ld1gsIG9mZnNldCwgc3RlcCA8PCAxLCBuID4+IDEpLFxuICAgICAgICAgICAgICAgIEYubXVsKFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQrc3RlcCAsIHN0ZXAgPDwgMSwgbiA+PiAxKSkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhZ3JhbmdlKHBvaW50cykge1xuICAgICAgICBsZXQgcm9vdHMgPSBbdGhpcy5GLm9uZV07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzID0gdGhpcy5tdWwocm9vdHMsIFt0aGlzLkYubmVnKHBvaW50c1tpXVswXSksIHRoaXMuRi5vbmVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdW0gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1wb2wgPSB0aGlzLnJ1ZmZpbmkocm9vdHMsIHBvaW50c1tpXVswXSk7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IgPVxuICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5pbnYodGhpcy5ldmFsdWF0ZShtcG9sLCBwb2ludHNbaV1bMF0pKSxcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgIG1wb2wgPSB0aGlzLm11bFNjYWxhcihtcG9sLCBmYWN0b3IpO1xuICAgICAgICAgICAgc3VtID0gdGhpcy5hZGQoc3VtLCBtcG9sKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIH1cblxuXG4gICAgZmZ0KHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0JDEodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZmdDIocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQyKHRoaXMsIGVwLCBiaXRzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGlmZnQocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0JDEodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuXG4gICAgaWZmdDIocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuXG4gICAgfVxuXG4gICAgX2ZmdChwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgICAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAobj09MSkge1xuICAgICAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9mZnQocGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgICAgIGNvbnN0IHAyID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICAgICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgICAgIGxldCBtPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gdGhpcy5GLmFkZChwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgb3V0W2krbmRpdjJdID0gdGhpcy5GLnN1YihwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgbSA9IHRoaXMuRi5tdWwobSwgdGhpcy53W2JpdHNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZXh0ZW5kKHAsIGUpIHtcbiAgICAgICAgaWYgKGUgPT0gcC5sZW5ndGgpIHJldHVybiBwO1xuICAgICAgICBjb25zdCB6ID0gbmV3IEFycmF5KGUtcC5sZW5ndGgpLmZpbGwodGhpcy5GLnplcm8pO1xuXG4gICAgICAgIHJldHVybiBwLmNvbmNhdCh6KTtcbiAgICB9XG5cbiAgICByZWR1Y2UocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPT0gMCkgcmV0dXJuIHA7XG4gICAgICAgIGlmICghIHRoaXMuRi5lcShwW3AubGVuZ3RoLTFdLCB0aGlzLkYuemVybykgKSByZXR1cm4gcDtcbiAgICAgICAgbGV0IGk9cC5sZW5ndGgtMTtcbiAgICAgICAgd2hpbGUoIGk+MCAmJiB0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pICkgaS0tO1xuICAgICAgICByZXR1cm4gcC5zbGljZSgwLCBpKzEpO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcGEgPSB0aGlzLnJlZHVjZShhKTtcbiAgICAgICAgY29uc3QgcGIgPSB0aGlzLnJlZHVjZShiKTtcblxuICAgICAgICBpZiAocGEubGVuZ3RoICE9IHBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBhW2ldLCBwYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJ1ZmZpbmkocCwgcikge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkocC5sZW5ndGgtMSk7XG4gICAgICAgIHJlc1tyZXMubGVuZ3RoLTFdID0gcFtwLmxlbmd0aC0xXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJlcy5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKHRoaXMuRi5tdWwocmVzW2krMV0sIHIpLCBwW2krMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgX25leHQyUG93ZXIodikge1xuICAgICAgICB2LS07XG4gICAgICAgIHYgfD0gdiA+PiAxO1xuICAgICAgICB2IHw9IHYgPj4gMjtcbiAgICAgICAgdiB8PSB2ID4+IDQ7XG4gICAgICAgIHYgfD0gdiA+PiA4O1xuICAgICAgICB2IHw9IHYgPj4gMTY7XG4gICAgICAgIHYrKztcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcocCkge1xuICAgICAgICBjb25zdCBhcCA9IHRoaXMubm9ybWFsaXplKHApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9YXAubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIFMgKz0gXCIgKyBcIjtcbiAgICAgICAgICAgICAgICBTID0gUyArIHBbaV0udG9TdHJpbmcoMTApO1xuICAgICAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcInhcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGk+MSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcIl5cIiAraTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUztcbiAgICB9XG5cbiAgICBub3JtYWxpemUocCkge1xuICAgICAgICBjb25zdCByZXMgID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5ub3JtYWxpemUocFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIF9yZWNpcHJvY2FsKHAsIGJpdHMpIHtcbiAgICAgICAgY29uc3QgayA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKGs9PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHRoaXMuRi5pbnYocFswXSkgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBucCA9IHRoaXMuc2NhbGVYKHAsIC1rLzIpO1xuICAgICAgICBjb25zdCBxID0gdGhpcy5fcmVjaXByb2NhbChucCwgYml0cy0xKTtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuc2NhbGVYKHRoaXMuZG91YmxlKHEpLCAzKmsvMi0yKTtcbiAgICAgICAgY29uc3QgYiA9IHRoaXMubXVsKCB0aGlzLnNxdWFyZShxKSwgcCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVYKHRoaXMuc3ViKGEsYiksICAgLShrLTIpKTtcbiAgICB9XG5cbiAgICAvLyBkaXZpZGVzIHhebSAvIHZcbiAgICBfZGl2MihtLCB2KSB7XG4gICAgICAgIGNvbnN0IGtiaXRzID0gbG9nMiQyKHYubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHNjYWxlViA9IGsgLSB2Lmxlbmd0aDtcblxuICAgICAgICAvLyByZWMgPSB4XihrIC0gMikgLyB2KiB4XnNjYWxlViA9PlxuICAgICAgICAvLyByZWMgPSB4XihrLTItc2NhbGVWKS8gdlxuICAgICAgICAvL1xuICAgICAgICAvLyByZXMgPSB4Xm0vdiA9IHheKG0gKyAoMiprLTIgLSBzY2FsZVYpIC0gKDIqay0yIC0gc2NhbGVWKSkgL3YgPT5cbiAgICAgICAgLy8gcmVzID0gcmVjICogeF4obSAtICgyKmstMiAtIHNjYWxlVikpID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAyKmsgKyAyICsgc2NhbGVWKVxuXG4gICAgICAgIGNvbnN0IHJlYyA9IHRoaXMuX3JlY2lwcm9jYWwodGhpcy5zY2FsZVgodiwgc2NhbGVWKSwga2JpdHMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnNjYWxlWChyZWMsIG0gLSAyKmsgKyAyICsgc2NhbGVWKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGRpdihfdSwgX3YpIHtcbiAgICAgICAgaWYgKF91Lmxlbmd0aCA8IF92Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMihfdi5sZW5ndGgtMSkrMTtcbiAgICAgICAgY29uc3QgayA9IDEgPDwga2JpdHM7XG5cbiAgICAgICAgY29uc3QgdSA9IHRoaXMuc2NhbGVYKF91LCBrLV92Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnNjYWxlWChfdiwgay1fdi5sZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IG4gPSB2Lmxlbmd0aC0xO1xuICAgICAgICBsZXQgbSA9IHUubGVuZ3RoLTE7XG5cbiAgICAgICAgY29uc3QgcyA9IHRoaXMuX3JlY2lwcm9jYWwodiwga2JpdHMpO1xuICAgICAgICBsZXQgdDtcbiAgICAgICAgaWYgKG0+MipuKSB7XG4gICAgICAgICAgICB0ID0gdGhpcy5zdWIodGhpcy5zY2FsZVgoW3RoaXMuRi5vbmVdLCAyKm4pLCB0aGlzLm11bChzLCB2KSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcSA9IFtdO1xuICAgICAgICBsZXQgcmVtID0gdTtcbiAgICAgICAgbGV0IHVzLCB1dDtcbiAgICAgICAgbGV0IGZpbmlzaCA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghZmluaXNoKSB7XG4gICAgICAgICAgICB1cyA9IHRoaXMubXVsKHJlbSwgcyk7XG4gICAgICAgICAgICBxID0gdGhpcy5hZGQocSwgdGhpcy5zY2FsZVgodXMsIC0yKm4pKTtcblxuICAgICAgICAgICAgaWYgKCBtID4gMipuICkge1xuICAgICAgICAgICAgICAgIHV0ID0gdGhpcy5tdWwocmVtLCB0KTtcbiAgICAgICAgICAgICAgICByZW0gPSB0aGlzLnNjYWxlWCh1dCwgLTIqbik7XG4gICAgICAgICAgICAgICAgbSA9IHJlbS5sZW5ndGgtMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluaXNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxO1xuICAgIH1cblxuXG4gICAgLy8gcmV0dXJucyB0aGUgaXRoIG50aC1yb290IG9mIG9uZVxuICAgIG9uZVJvb3QobiwgaSkge1xuICAgICAgICBsZXQgbmJpdHMgPSBsb2cyJDIobi0xKSsxO1xuICAgICAgICBsZXQgcmVzID0gdGhpcy5GLm9uZTtcbiAgICAgICAgbGV0IHIgPSBpO1xuXG4gICAgICAgIGlmKGk+PW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdpdmVuICdpJyBzaG91bGQgYmUgbG93ZXIgdGhhbiAnbidcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoMTw8bmJpdHMgIT09IG4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgZXJybHI6ICR7bn0gc2hvdWxkIGVxdWFsICR7MTw8bmJpdHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBpZiAociAmIDEgPT0gMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMuRi5tdWwocmVzLCB0aGlzLndbbmJpdHNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSByID4+IDE7XG4gICAgICAgICAgICBuYml0cyAtLTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGNvbXB1dGVWYW5pc2hpbmdQb2xpbm9taWFsKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5zdWIodGhpcy5GLnBvdyh0LCBtKSwgdGhpcy5GLm9uZSk7XG4gICAgfVxuXG4gICAgZXZhbHVhdGVMYWdyYW5nZVBvbHlub21pYWxzKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbT0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCB0bSA9IHRoaXMuRi5wb3codCwgbSk7XG4gICAgICAgIGNvbnN0IHU9IG5ldyBBcnJheShtKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG9tZWdhID0gdGhpcy53W2JpdHNdO1xuXG4gICAgICAgIGlmICh0aGlzLkYuZXEodG0sIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLkYuZXEodGhpcy5yb290c1tiaXRzXVswXSx0KSkgeyAvLyBpLmUuLCB0IGVxdWFscyBvbWVnYV5pXG4gICAgICAgICAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6ID0gdGhpcy5GLnN1Yih0bSwgdGhpcy5GLm9uZSk7XG4gICAgICAgIC8vICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5wb3codGhpcy5GLnR3b2ludiwgbSkpO1xuICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5pbnYodGhpcy5GLmUobSkpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYubXVsKGwsIHRoaXMuRi5pbnYodGhpcy5GLnN1Yih0LHRoaXMucm9vdHNbYml0c11baV0pKSk7XG4gICAgICAgICAgICBsID0gdGhpcy5GLm11bChsLCBvbWVnYSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdTtcbiAgICB9XG5cbiAgICBsb2cyKFYpIHtcbiAgICAgICAgcmV0dXJuIGxvZzIkMihWKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvZzIkMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMsIG9mZnNldCwgc3RlcCkge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsW29mZnNldF0gXTtcbiAgICB9IGVsc2UgaWYgKG49PTIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFBGLkYuYWRkKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSksXG4gICAgICAgICAgICBQRi5GLnN1YihwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQkMShQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cblxuZnVuY3Rpb24gX19mZnQyKFBGLCBwYWxsLCBiaXRzKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbMF0gXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0MihQRiwgcGFsbC5zbGljZSgwLCBuZGl2MiksIGJpdHMtMSk7XG4gICAgY29uc3QgcDIgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UobmRpdjIpLCBiaXRzLTEpO1xuXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgb3V0W2ldID0gUEYuRi5hZGQocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5GLnN1YihwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuY29uc3QgX3JldlRhYmxlJDEgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZSQxW2ldID0gX3JldlNsb3ckMShpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3ckMShpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gcmV2KGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIF9yZXZUYWJsZSQxW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxWyhpZHggPj4+IDgpICYgMHhGRl0gPDwgMTYpIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuZnVuY3Rpb24gX19iaXRSZXZlcnNlKHAsIGJpdHMpIHtcbiAgICBmb3IgKGxldCBrPTA7IGs8cC5sZW5ndGg7IGsrKykge1xuICAgICAgICBjb25zdCByID0gcmV2KGssIGJpdHMpO1xuICAgICAgICBpZiAocj5rKSB7XG4gICAgICAgICAgICBjb25zdCB0bXA9IHBba107XG4gICAgICAgICAgICBwW2tdID0gcFtyXTtcbiAgICAgICAgICAgIHBbcl0gPSB0bXA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5cbmZ1bmN0aW9uIG11bFNjYWxhcihGLCBiYXNlLCBlKSB7XG4gICAgbGV0IHJlcztcblxuICAgIGlmIChpc1plcm8kMShlKSkgcmV0dXJuIEYuemVybztcblxuICAgIGNvbnN0IG4gPSBuYWYoZSk7XG5cbiAgICBpZiAobltuLmxlbmd0aC0xXSA9PSAxKSB7XG4gICAgICAgIHJlcyA9IGJhc2U7XG4gICAgfSBlbHNlIGlmIChuW24ubGVuZ3RoLTFdID09IC0xKSB7XG4gICAgICAgIHJlcyA9IEYubmVnKGJhc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmxhdWQgTkFGXCIpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5kb3VibGUocmVzKTtcblxuICAgICAgICBpZiAobltpXSA9PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGJhc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKG5baV0gPT0gLTEpIHtcbiAgICAgICAgICAgIHJlcyA9IEYuc3ViKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbi8qXG5leHBvcnRzLm11bFNjYWxhciA9IChGLCBiYXNlLCBlKSA9PntcbiAgICBsZXQgcmVzID0gRi56ZXJvO1xuICAgIGxldCByZW0gPSBiaWdJbnQoZSk7XG4gICAgbGV0IGV4cCA9IGJhc2U7XG5cbiAgICB3aGlsZSAoISByZW0uZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIGlmIChyZW0uYW5kKGJpZ0ludC5vbmUpLmVxKGJpZ0ludC5vbmUpKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGV4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwID0gRi5kb3VibGUoZXhwKTtcbiAgICAgICAgcmVtID0gcmVtLnNoaWZ0UmlnaHQoMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn07XG4qL1xuXG5cbmZ1bmN0aW9uIGV4cChGLCBiYXNlLCBlKSB7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLm9uZTtcblxuICAgIGNvbnN0IG4gPSBiaXRzKGUpO1xuXG4gICAgaWYgKG4ubGVuZ3RoPT0wKSByZXR1cm4gRi5vbmU7XG5cbiAgICBsZXQgcmVzID0gYmFzZTtcblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5zcXVhcmUocmVzKTtcblxuICAgICAgICBpZiAobltpXSkge1xuICAgICAgICAgICAgcmVzID0gRi5tdWwocmVzLCBiYXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIENoZWNrIGhlcmU6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTIvNjg1LnBkZlxuXG5mdW5jdGlvbiBidWlsZFNxcnQgKEYpIHtcbiAgICBpZiAoKEYubSAlIDIpID09IDEpIHtcbiAgICAgICAgaWYgKGVxKG1vZChGLnAsIDQpLCAxICkpIHtcbiAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCA4KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVxKG1vZChGLnAsIDE2KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZzdfbXVsbGVyKEYpO1xuICAgICAgICAgICAgICAgICAgICBhbGc1X3RvbmVsbGlTaGFua3MoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcShtb2QoRi5wLCAxNiksIDkgKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGc0X2tvbmcoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChlcShtb2QoRi5wLCA4KSwgNSApKSB7XG4gICAgICAgICAgICAgICAgYWxnM19hdGtpbihGKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgNCksIDMgKSkge1xuICAgICAgICAgICAgYWxnMl9zaGFua3MoRik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbTJtb2Q0ID0gbW9kKHBvdyhGLnAsIEYubS8yKSwgNCk7XG4gICAgICAgIGlmIChwbTJtb2Q0ID09IDEpIHtcbiAgICAgICAgICAgIGFsZzEwX2FkaihGKTtcbiAgICAgICAgfSBlbHNlIGlmIChwbTJtb2Q0ID09IDMpIHtcbiAgICAgICAgICAgIGFsZzlfYWRqKEYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxnOF9jb21wbGV4KEYpO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cblxuZnVuY3Rpb24gYWxnNV90b25lbGxpU2hhbmtzKEYpIHtcbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG5cbiAgICBGLnNxcnRfcyA9IDA7XG4gICAgRi5zcXJ0X3QgPSBzdWIoRi5zcXJ0X3EsIDEpO1xuXG4gICAgd2hpbGUgKCFpc09kZCQ1KEYuc3FydF90KSkge1xuICAgICAgICBGLnNxcnRfcyA9IEYuc3FydF9zICsgMTtcbiAgICAgICAgRi5zcXJ0X3QgPSBkaXYoRi5zcXJ0X3QsIDIpO1xuICAgIH1cblxuICAgIGxldCBjMCA9IEYub25lO1xuXG4gICAgd2hpbGUgKEYuZXEoYzAsIEYub25lKSkge1xuICAgICAgICBjb25zdCBjID0gRi5yYW5kb20oKTtcbiAgICAgICAgRi5zcXJ0X3ogPSBGLnBvdyhjLCBGLnNxcnRfdCk7XG4gICAgICAgIGMwID0gRi5wb3coRi5zcXJ0X3osIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgfVxuXG4gICAgRi5zcXJ0X3RtMWQyID0gZGl2KHN1YihGLnNxcnRfdCwgMSksMik7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGNvbnN0IEY9dGhpcztcbiAgICAgICAgaWYgKEYuaXNaZXJvKGEpKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBsZXQgdyA9IEYucG93KGEsIEYuc3FydF90bTFkMik7XG4gICAgICAgIGNvbnN0IGEwID0gRi5wb3coIEYubXVsKEYuc3F1YXJlKHcpLCBhKSwgMiAqKiAoRi5zcXJ0X3MtMSkgKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IHYgPSBGLnNxcnRfcztcbiAgICAgICAgbGV0IHggPSBGLm11bChhLCB3KTtcbiAgICAgICAgbGV0IGIgPSBGLm11bCh4LCB3KTtcbiAgICAgICAgbGV0IHogPSBGLnNxcnRfejtcbiAgICAgICAgd2hpbGUgKCFGLmVxKGIsIEYub25lKSkge1xuICAgICAgICAgICAgbGV0IGIyayA9IEYuc3F1YXJlKGIpO1xuICAgICAgICAgICAgbGV0IGs9MTtcbiAgICAgICAgICAgIHdoaWxlICghRi5lcShiMmssIEYub25lKSkge1xuICAgICAgICAgICAgICAgIGIyayA9IEYuc3F1YXJlKGIyayk7XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3ID0gejtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx2LWstMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdyA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeiA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgYiA9IEYubXVsKGIsIHopO1xuICAgICAgICAgICAgeCA9IEYubXVsKHgsIHcpO1xuICAgICAgICAgICAgdiA9IGs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnNF9rb25nKEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgNCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnM19hdGtpbihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDMgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzJfc2hhbmtzKEYpIHtcblxuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tKTtcbiAgICBGLnNxcnRfZTEgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIC8vIFRlc3QgdGhhdCBoYXZlIHNvbHV0aW9uXG4gICAgICAgIGNvbnN0IGExID0gdGhpcy5wb3coYSwgdGhpcy5zcXJ0X2UxKTtcblxuICAgICAgICBjb25zdCBhMCA9IHRoaXMubXVsKHRoaXMuc3F1YXJlKGExKSwgYSk7XG5cbiAgICAgICAgaWYgKCB0aGlzLmVxKGEwLCB0aGlzLm5lZ29uZSkgKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCB4ID0gdGhpcy5tdWwoYTEsIGEpO1xuXG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzEwX2FkaihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDEwIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGc5X2FkaihGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0vMik7XG4gICAgRi5zcXJ0X2UzNCA9IGRpdiggc3ViKEYuc3FydF9xLCAzKSAsIDQpO1xuICAgIEYuc3FydF9lMTIgPSBkaXYoIHN1YihGLnNxcnRfcSwgMSkgLCAyKTtcblxuICAgIEYuZnJvYmVuaXVzID0gZnVuY3Rpb24obiwgeCkge1xuICAgICAgICBpZiAoKG4lMikgPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIEYuY29uanVnYXRlKHgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGID0gdGhpcztcbiAgICAgICAgY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgY29uc3QgYWxmYSA9IEYubXVsKEYuc3F1YXJlKGExKSwgYSk7XG4gICAgICAgIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgeDAgPSBGLm11bChhMSwgYSk7XG4gICAgICAgIGxldCB4O1xuICAgICAgICBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHggPSBGLm11bCh4MCwgW0YuRi56ZXJvLCBGLkYub25lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgIHggPSBGLm11bChiLCB4MCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuXG5mdW5jdGlvbiBhbGc4X2NvbXBsZXgoRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyA4IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBxdWFydGVyUm91bmQoc3QsIGEsIGIsIGMsIGQpIHtcblxuICAgIHN0W2FdID0gKHN0W2FdICsgc3RbYl0pID4+PiAwO1xuICAgIHN0W2RdID0gKHN0W2RdIF4gc3RbYV0pID4+PiAwO1xuICAgIHN0W2RdID0gKChzdFtkXSA8PCAxNikgfCAoKHN0W2RdPj4+MTYpICYgMHhGRkZGKSkgPj4+IDA7XG5cbiAgICBzdFtjXSA9IChzdFtjXSArIHN0W2RdKSA+Pj4gMDtcbiAgICBzdFtiXSA9IChzdFtiXSBeIHN0W2NdKSA+Pj4gMDtcbiAgICBzdFtiXSA9ICgoc3RbYl0gPDwgMTIpIHwgKChzdFtiXT4+PjIwKSAmIDB4RkZGKSkgPj4+IDA7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgOCkgfCAoKHN0W2RdPj4+MjQpICYgMHhGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDcpIHwgKChzdFtiXT4+PjI1KSAmIDB4N0YpKSA+Pj4gMDtcbn1cblxuZnVuY3Rpb24gZG91YmxlUm91bmQoc3QpIHtcbiAgICBxdWFydGVyUm91bmQoc3QsIDAsIDQsIDgsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMSwgNSwgOSwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAyLCA2LDEwLDE0KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDMsIDcsMTEsMTUpO1xuXG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA1LDEwLDE1KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDYsMTEsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNywgOCwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA0LCA5LDE0KTtcbn1cblxuY2xhc3MgQ2hhQ2hhIHtcblxuICAgIGNvbnN0cnVjdG9yKHNlZWQpIHtcbiAgICAgICAgc2VlZCA9IHNlZWQgfHwgWzAsMCwwLDAsMCwwLDAsMF07XG4gICAgICAgIHRoaXMuc3RhdGUgPSBbXG4gICAgICAgICAgICAweDYxNzA3ODY1LFxuICAgICAgICAgICAgMHgzMzIwNjQ2RSxcbiAgICAgICAgICAgIDB4Nzk2MjJEMzIsXG4gICAgICAgICAgICAweDZCMjA2NTc0LFxuICAgICAgICAgICAgc2VlZFswXSxcbiAgICAgICAgICAgIHNlZWRbMV0sXG4gICAgICAgICAgICBzZWVkWzJdLFxuICAgICAgICAgICAgc2VlZFszXSxcbiAgICAgICAgICAgIHNlZWRbNF0sXG4gICAgICAgICAgICBzZWVkWzVdLFxuICAgICAgICAgICAgc2VlZFs2XSxcbiAgICAgICAgICAgIHNlZWRbN10sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaWR4ID0gMTY7XG4gICAgICAgIHRoaXMuYnVmZiA9IG5ldyBBcnJheSgxNik7XG4gICAgfVxuXG4gICAgbmV4dFUzMigpIHtcbiAgICAgICAgaWYgKHRoaXMuaWR4ID09IDE2KSB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmW3RoaXMuaWR4KytdO1xuICAgIH1cblxuICAgIG5leHRVNjQoKSB7XG4gICAgICAgIHJldHVybiBhZGQobXVsKHRoaXMubmV4dFUzMigpLCAweDEwMDAwMDAwMCksIHRoaXMubmV4dFUzMigpKTtcbiAgICB9XG5cbiAgICBuZXh0Qm9vbCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5leHRVMzIoKSAmIDEpID09IDE7XG4gICAgfVxuXG4gICAgdXBkYXRlKCkge1xuICAgICAgICAvLyBDb3B5IHRoZSBzdGF0ZVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykgdGhpcy5idWZmW2ldID0gdGhpcy5zdGF0ZVtpXTtcblxuICAgICAgICAvLyBBcHBseSB0aGUgcm91bmRzXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSBkb3VibGVSb3VuZCh0aGlzLmJ1ZmYpO1xuXG4gICAgICAgIC8vIEFkZCB0byB0aGUgaW5pdGlhbFxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykgdGhpcy5idWZmW2ldID0gKHRoaXMuYnVmZltpXSArIHRoaXMuc3RhdGVbaV0pID4+PiAwO1xuXG4gICAgICAgIHRoaXMuaWR4ID0gMDtcblxuICAgICAgICB0aGlzLnN0YXRlWzEyXSA9ICh0aGlzLnN0YXRlWzEyXSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxMl0gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzEzXSA9ICh0aGlzLnN0YXRlWzEzXSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxM10gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzE0XSA9ICh0aGlzLnN0YXRlWzE0XSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxNF0gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzE1XSA9ICh0aGlzLnN0YXRlWzE1XSArIDEpID4+PiAwO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmFuZG9tQnl0ZXMobikge1xuICAgIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgIHsgLy8gQnJvd3NlclxuICAgICAgICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKSB7IC8vIFN1cHBvcnRlZFxuICAgICAgICAgICAgZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gZmFsbGJhY2tcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IChNYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTYpPj4+MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbVNlZWQoKSB7XG4gICAgY29uc3QgYXJyID0gZ2V0UmFuZG9tQnl0ZXMoMzIpO1xuICAgIGNvbnN0IGFyclYgPSBuZXcgVWludDMyQXJyYXkoYXJyLmJ1ZmZlcik7XG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgc2VlZC5wdXNoKGFyclZbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VlZDtcbn1cblxubGV0IHRocmVhZFJuZyA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldFRocmVhZFJuZygpIHtcbiAgICBpZiAodGhyZWFkUm5nKSByZXR1cm4gdGhyZWFkUm5nO1xuICAgIHRocmVhZFJuZyA9IG5ldyBDaGFDaGEoZ2V0UmFuZG9tU2VlZCgpKTtcbiAgICByZXR1cm4gdGhyZWFkUm5nO1xufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuICAgIFRoaXMgbGlicmFyeSBkb2VzIG9wZXJhdGlvbnMgb24gcG9seW5vbWlhbHMgd2l0aCBjb2VmZmljaWVudHMgaW4gYSBmaWVsZCBGLlxuXG4gICAgQSBwb2x5bm9taWFsIFAoeCkgPSBwMCArIHAxICogeCArIHAyICogeF4yICsgLi4uICsgcG4gKiB4Xm4gIGlzIHJlcHJlc2VudGVkXG4gICAgYnkgdGhlIGFycmF5IFsgcDAsIHAxLCBwMiwgLi4uICwgcG4gXS5cbiAqL1xuXG5jbGFzcyBGRlQge1xuICAgIGNvbnN0cnVjdG9yIChHLCBGLCBvcE11bEdGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuRyA9IEc7XG4gICAgICAgIHRoaXMub3BNdWxHRiA9IG9wTXVsR0Y7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90IHx8IEYudDtcbiAgICAgICAgbGV0IHMgPSBGLnNxcnRfcyB8fCBGLnM7XG5cbiAgICAgICAgbGV0IG5xciA9IEYub25lO1xuICAgICAgICB3aGlsZSAoRi5lcShGLnBvdyhucXIsIEYuaGFsZiksIEYub25lKSkgbnFyID0gRi5hZGQobnFyLCBGLm9uZSk7XG5cbiAgICAgICAgdGhpcy53ID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud2kgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53W3NdID0gdGhpcy5GLnBvdyhucXIsIHJlbSk7XG4gICAgICAgIHRoaXMud2lbc10gPSB0aGlzLkYuaW52KHRoaXMud1tzXSk7XG5cbiAgICAgICAgbGV0IG49cy0xO1xuICAgICAgICB3aGlsZSAobj49MCkge1xuICAgICAgICAgICAgdGhpcy53W25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndbbisxXSk7XG4gICAgICAgICAgICB0aGlzLndpW25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndpW24rMV0pO1xuICAgICAgICAgICAgbi0tO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnJvb3RzID0gW107XG4gICAgICAgIC8qXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBuID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290cy5wdXNoKHJvb3RzaSk7XG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoTWF0aC5taW4ocywgMTUpKTtcbiAgICB9XG5cbiAgICBfc2V0Um9vdHMobikge1xuICAgICAgICBmb3IgKGxldCBpPW47IChpPj0wKSAmJiAoIXRoaXMucm9vdHNbaV0pOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IG5yb290cyA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShucm9vdHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5yb290czsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJvb3RzW2ldID0gcm9vdHNpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmZ0KHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChwLmxlbmd0aCAhPSBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaXplIG11c3QgYmUgbXVsdGlwbGUgb2YgMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCh0aGlzLCBwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDEocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChwLmxlbmd0aCAhPSBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaXplIG11c3QgYmUgbXVsdGlwbGUgb2YgMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXMgPSAgX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLm9wTXVsR0YocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuICAgIH1cblxuXG59XG5cbmZ1bmN0aW9uIGxvZzIkMSggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0KFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5HLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRy5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgY29uc3QgcDIgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkcuYWRkKHAxW2ldLCBQRi5vcE11bEdGKHAyW2ldLCBQRi5yb290c1tiaXRzXVtpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5HLnN1YihwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG4vKiBnbG9iYWwgQmlnSW50ICovXG5cbmNsYXNzIFpxRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHApIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjFcIjtcbiAgICAgICAgdGhpcy5vbmUgPSBCaWdJbnQoMSk7XG4gICAgICAgIHRoaXMuemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5wID0gQmlnSW50KHApO1xuICAgICAgICB0aGlzLm0gPSAxO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMucC10aGlzLm9uZTtcbiAgICAgICAgdGhpcy50d28gPSBCaWdJbnQoMik7XG4gICAgICAgIHRoaXMuaGFsZiA9IHRoaXMucCA+PiB0aGlzLm9uZTtcbiAgICAgICAgdGhpcy5iaXRMZW5ndGggPSBiaXRMZW5ndGgkNih0aGlzLnApO1xuICAgICAgICB0aGlzLm1hc2sgPSAodGhpcy5vbmUgPDwgQmlnSW50KHRoaXMuYml0TGVuZ3RoKSkgLSB0aGlzLm9uZTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IoKHRoaXMuYml0TGVuZ3RoIC0gMSkgLyA2NCkrMTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICAgICAgdGhpcy5SID0gdGhpcy5lKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLm42NCo2NCkpO1xuICAgICAgICB0aGlzLlJpID0gdGhpcy5pbnYodGhpcy5SKTtcblxuICAgICAgICBjb25zdCBlID0gdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB3aGlsZSAoIXRoaXMuZXEociwgdGhpcy5uZWdvbmUpKSB7XG4gICAgICAgICAgICB0aGlzLm5xciA9IHRoaXMubnFyICsgdGhpcy5vbmU7XG4gICAgICAgICAgICByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICB0aGlzLnQgPSB0aGlzLm5lZ29uZTtcblxuICAgICAgICB3aGlsZSAoKHRoaXMudCAmIHRoaXMub25lKSA9PSB0aGlzLnplcm8pIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucyArIDE7XG4gICAgICAgICAgICB0aGlzLnQgPSB0aGlzLnQgPj4gdGhpcy5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5xcl90b190ID0gdGhpcy5wb3codGhpcy5ucXIsIHRoaXMudCk7XG5cbiAgICAgICAgYnVpbGRTcXJ0KHRoaXMpO1xuXG4gICAgICAgIHRoaXMuRkZUID0gbmV3IEZGVCh0aGlzLCB0aGlzLCB0aGlzLm11bC5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmZmdCA9IHRoaXMuRkZULmZmdC5iaW5kKHRoaXMuRkZUKTtcbiAgICAgICAgdGhpcy5pZmZ0ID0gdGhpcy5GRlQuaWZmdC5iaW5kKHRoaXMuRkZUKTtcbiAgICAgICAgdGhpcy53ID0gdGhpcy5GRlQudztcbiAgICAgICAgdGhpcy53aSA9IHRoaXMuRkZULndpOyBcbiAgICBcbiAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMuc3F1YXJlKHRoaXMubnFyKTtcbiAgICAgICAgdGhpcy5rID0gdGhpcy5leHAodGhpcy5ucXIsIDIqKnRoaXMucyk7XG4gICAgfVxuXG4gICAgZShhLGIpIHtcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgaWYgKCFiKSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYj09MTYpIHtcbiAgICAgICAgICAgIHJlcyA9IEJpZ0ludChcIjB4XCIrYSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA8IDApIHtcbiAgICAgICAgICAgIGxldCBucmVzID0gLXJlcztcbiAgICAgICAgICAgIGlmIChucmVzID49IHRoaXMucCkgbnJlcyA9IG5yZXMgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbnJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAocmVzPj0gdGhpcy5wKSA/IHJlcyV0aGlzLnAgOiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgKyBiO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhID49IGIpID8gYS1iIDogdGhpcy5wLWIrYTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gYSA/IHRoaXMucC1hIDogYTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEqYikldGhpcy5wO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBzKSB7XG4gICAgICAgIHJldHVybiAoYmFzZSAqIHRoaXMuZShzKSkgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIChhKmEpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGE9PWI7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEhPWI7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPCBiYjtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA+IGJiO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA8PSBiYjtcbiAgICB9XG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPj0gYmI7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBpZGl2KGEsIGIpIHtcbiAgICAgICAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYSAvIGI7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgaWYgKCFhKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuXG4gICAgICAgIGxldCB0ID0gdGhpcy56ZXJvO1xuICAgICAgICBsZXQgciA9IHRoaXMucDtcbiAgICAgICAgbGV0IG5ld3QgPSB0aGlzLm9uZTtcbiAgICAgICAgbGV0IG5ld3IgPSBhICUgdGhpcy5wO1xuICAgICAgICB3aGlsZSAobmV3cikge1xuICAgICAgICAgICAgbGV0IHEgPSByL25ld3I7XG4gICAgICAgICAgICBbdCwgbmV3dF0gPSBbbmV3dCwgdC1xKm5ld3RdO1xuICAgICAgICAgICAgW3IsIG5ld3JdID0gW25ld3IsIHItcSpuZXdyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodDx0aGlzLnplcm8pIHQgKz0gdGhpcy5wO1xuICAgICAgICByZXR1cm4gdDtcbiAgICB9XG5cbiAgICBtb2QoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAlIGI7XG4gICAgfVxuXG4gICAgcG93KGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBleHAoYiwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGIsIGUpO1xuICAgIH1cblxuICAgIGJhbmQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhICYgYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSB8IGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJ4b3IoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhIF4gYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm5vdChhKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgXiB0aGlzLm1hc2s7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBzaGwoYSwgYikge1xuICAgICAgICBpZiAoTnVtYmVyKGIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IGIpICYgdGhpcy5tYXNrO1xuICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhID4+IG5iO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hyKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA+PiBiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IG5iKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFuZChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSAmJiBiKSA/IHRoaXMub25lIDogdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGxvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSB8fCBiKSA/IHRoaXMub25lIDogdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGxub3QoYSkge1xuICAgICAgICByZXR1cm4gKGEpID8gdGhpcy56ZXJvIDogdGhpcy5vbmU7XG4gICAgfVxuXG4gICAgc3FydF9vbGQobikge1xuXG4gICAgICAgIGlmIChuID09IHRoaXMuemVybykgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnBvdyhuLCB0aGlzLm5lZ29uZSA+PiB0aGlzLm9uZSk7XG4gICAgICAgIGlmICggcmVzICE9IHRoaXMub25lICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IG0gPSB0aGlzLnM7XG4gICAgICAgIGxldCBjID0gdGhpcy5ucXJfdG9fdDtcbiAgICAgICAgbGV0IHQgPSB0aGlzLnBvdyhuLCB0aGlzLnQpO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KG4sIHRoaXMuYWRkKHRoaXMudCwgdGhpcy5vbmUpID4+IHRoaXMub25lICk7XG5cbiAgICAgICAgd2hpbGUgKCB0ICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgbGV0IHNxID0gdGhpcy5zcXVhcmUodCk7XG4gICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICB3aGlsZSAoc3EgIT0gdGhpcy5vbmUgKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHNxID0gdGhpcy5zcXVhcmUoc3EpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiID0gYyBeIG0taS0xXG4gICAgICAgICAgICBsZXQgYiA9IGM7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8IG0taS0xOyBqICsrKSBiID0gdGhpcy5zcXVhcmUoYik7XG5cbiAgICAgICAgICAgIG0gPSBpO1xuICAgICAgICAgICAgYyA9IHRoaXMuc3F1YXJlKGIpO1xuICAgICAgICAgICAgdCA9IHRoaXMubXVsKHQsIGMpO1xuICAgICAgICAgICAgciA9IHRoaXMubXVsKHIsIGIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIgPiAodGhpcy5wID4+IHRoaXMub25lKSkge1xuICAgICAgICAgICAgciA9IHRoaXMubmVnKHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKGEsIGIpIHtcbiAgICAgICAgYSA9IEJpZ0ludChhLGIpO1xuICAgICAgICBpZiAoYSA8IDApIHtcbiAgICAgICAgICAgIGxldCBuYSA9IC1hO1xuICAgICAgICAgICAgaWYgKG5hID49IHRoaXMucCkgbmEgPSBuYSAlIHRoaXMucDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAgLSBuYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoYT49IHRoaXMucCkgPyBhJXRoaXMucCA6IGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIGNvbnN0IG5CeXRlcyA9ICh0aGlzLmJpdExlbmd0aCoyIC8gOCk7XG4gICAgICAgIGxldCByZXMgPXRoaXMuemVybztcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5CeXRlczsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSAocmVzIDw8IEJpZ0ludCg4KSkgKyBCaWdJbnQoZ2V0UmFuZG9tQnl0ZXMoMSlbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgYmFzZSkge1xuICAgICAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICAgICAgbGV0IHZzO1xuICAgICAgICBpZiAoKGEgPiB0aGlzLmhhbGYpJiYoYmFzZSA9PSAxMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLnAtYTtcbiAgICAgICAgICAgIHZzID0gXCItXCIrdi50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZzID0gYS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdnM7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPT0gdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGxldCB2O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2PXRoaXMuemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiArPSBybmcubmV4dFU2NCgpIDw8IEJpZ0ludCg2NCAqaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ICY9IHRoaXMubWFzaztcbiAgICAgICAgfSB3aGlsZSAodiA+PSB0aGlzLnApO1xuICAgICAgICB2ID0gKHYgKiB0aGlzLlJpKSAlIHRoaXMucDsgICAvLyBDb252ZXJ0IGZyb20gbW9udGdvbWVyeVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBmZnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GRlQuZmZ0KGEpO1xuICAgIH1cblxuICAgIGlmZnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GRlQuaWZmdChhKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckxFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRvUnByQkUoYnVmZiwgbywgZSwgdGhpcy5uNjQqOCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gTW9udGdvbWVyeSBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9ScHJCRShidWZmLCBvLCB0aGlzLm11bCh0aGlzLlIsIGUpKTtcbiAgICB9XG5cbiAgICB0b1JwckxFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByTEUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckxFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIC8vIFBhc2VzIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByQkUoYnVmZiwgbywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJMRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJCRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgRjJGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoRiwgbm9uUmVzaWR1ZSkge1xuICAgICAgICB0aGlzLnR5cGU9XCJGMlwiO1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy5ub25SZXNpZHVlID0gbm9uUmVzaWR1ZTtcbiAgICAgICAgdGhpcy5tID0gRi5tKjI7XG4gICAgICAgIHRoaXMucCA9IEYucDtcbiAgICAgICAgdGhpcy5uNjQgPSBGLm42NCoyO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSldO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBiWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzFdLCBiWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIGNvbmp1Z2F0ZShhKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBhWzBdLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyhhWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFBID0gdGhpcy5GLm11bChhWzBdICwgYlswXSk7XG4gICAgICAgIGNvbnN0IGJCID0gdGhpcy5GLm11bChhWzFdICwgYlsxXSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoIGFBICwgdGhpcy5fbXVsQnlOb25SZXNpZHVlKGJCKSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYVsxXSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGJCKSldO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGNvbnN0IHQwID0gdGhpcy5GLnNxdWFyZShhWzBdKTtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pO1xuICAgICAgICBjb25zdCB0MiA9IHRoaXMuRi5zdWIodDAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0MSkpO1xuICAgICAgICBjb25zdCB0MyA9IHRoaXMuRi5pbnYodDIpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bChhWzBdLCB0MyksXG4gICAgICAgICAgICB0aGlzLkYubmVnKHRoaXMuRi5tdWwoIGFbMV0sIHQzKSkgXTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwoYSwgdGhpcy5pbnYoYikpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIGNvbnN0IGFiID0gdGhpcy5GLm11bChhWzBdICwgYVsxXSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgW1xuICAgICAgICAgICAgKGEgKyBiKSAqIChhICsgbm9uX3Jlc2lkdWUgKiBiKSAtIGFiIC0gbm9uX3Jlc2lkdWUgKiBhYixcbiAgICAgICAgICAgIGFiICsgYWJcbiAgICAgICAgXTtcbiAgICAgICAgKi9cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pICxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFbMF0gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKGFbMV0pKSksXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYWIsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhYikpKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYWIsIGFiKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKGFbMF0pICYmIHRoaXMuRi5pc1plcm8oYVsxXSk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmVxKGFbMF0sIGJbMF0pICYmIHRoaXMuRi5lcShhWzFdLCBiWzFdKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHBvdyhiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhKSB7XG4gICAgICAgIHJldHVybiBgWyAke3RoaXMuRi50b1N0cmluZyhhWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhhWzFdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3QoYSwgYikgfHwgdGhpcy5lcShhLCBiKTtcbiAgICB9XG5cbiAgICBsdChhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nZXEoYSxiKTtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ3QoYSxiKTtcbiAgICB9XG5cbiAgICBuZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXEoYSxiKTtcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLnJhbmRvbSgpLCB0aGlzLkYucmFuZG9tKCldO1xuICAgIH1cblxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgfVxuXG5cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzBdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYzRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjNcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVybywgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm9uZSA9IFt0aGlzLkYub25lLCB0aGlzLkYuemVybywgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy5ub25SZXNpZHVlID0gbm9uUmVzaWR1ZTtcbiAgICAgICAgdGhpcy5tID0gRi5tKjM7XG4gICAgICAgIHRoaXMucCA9IEYucDtcbiAgICAgICAgdGhpcy5uNjQgPSBGLm42NCozO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuICAgIH1cblxuICAgIF9tdWxCeU5vblJlc2lkdWUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLm11bCh0aGlzLm5vblJlc2lkdWUsIGEpO1xuICAgIH1cblxuICAgIGNvcHkoYSkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5jb3B5KGFbMF0pLCB0aGlzLkYuY29weShhWzFdKSwgdGhpcy5GLmNvcHkoYVsyXSldO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBiWzFdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsyXSwgYlsyXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKHRoaXMuemVybywgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcblxuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuICAgICAgICBjb25zdCBjQyA9IHRoaXMuRi5tdWwoYVsyXSAsIGJbMl0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIGFBLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBhWzJdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMV0sIGJbMl0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYkIsIGNDKSkpKSwgICAgLy8gYUEgKyBub25fcmVzaWR1ZSooKGIrYykqKEIrQyktYkItY0MpLFxuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzFdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGJCKSksXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKCBjQykpLCAgIC8vIChhK2IpKihBK0IpLWFBLWJCK25vbl9yZXNpZHVlKmNDXG5cbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMl0pKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhQSwgY0MpKSxcbiAgICAgICAgICAgICAgICBiQildOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhK2MpKihBK0MpLWFBK2JCLWNDKVxuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGNvbnN0IHQwID0gdGhpcy5GLnNxdWFyZShhWzBdKTsgICAgICAgICAgICAgLy8gdDAgPSBhXjIgO1xuICAgICAgICBjb25zdCB0MSA9IHRoaXMuRi5zcXVhcmUoYVsxXSk7ICAgICAgICAgICAgIC8vIHQxID0gYl4yIDtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAvLyB0MiA9IGNeMjtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYubXVsKGFbMF0sYVsxXSk7ICAgICAgICAgICAvLyB0MyA9IGFiXG4gICAgICAgIGNvbnN0IHQ0ID0gdGhpcy5GLm11bChhWzBdLGFbMl0pOyAgICAgICAgICAgLy8gdDQgPSBhY1xuICAgICAgICBjb25zdCB0NSA9IHRoaXMuRi5tdWwoYVsxXSxhWzJdKTsgICAgICAgICAgIC8vIHQ1ID0gYmM7XG4gICAgICAgIC8vIGMwID0gdDAgLSBub25fcmVzaWR1ZSAqIHQ1O1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5zdWIodDAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0NSkpO1xuICAgICAgICAvLyBjMSA9IG5vbl9yZXNpZHVlICogdDIgLSB0MztcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuc3ViKHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0MiksIHQzKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuc3ViKHQxLCB0NCk7ICAgICAgICAgICAgICAvLyBjMiA9IHQxLXQ0XG5cbiAgICAgICAgLy8gdDYgPSAoYSAqIGMwICsgbm9uX3Jlc2lkdWUgKiAoYyAqIGMxICsgYiAqIGMyKSkuaW52KCk7XG4gICAgICAgIGNvbnN0IHQ2ID1cbiAgICAgICAgICAgIHRoaXMuRi5pbnYoXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzBdLCBjMCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzJdLCBjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzFdLCBjMikpKSkpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMCksICAgICAgICAgLy8gdDYqYzBcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMxKSwgICAgICAgICAvLyB0NipjMVxuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzIpXTsgICAgICAgIC8vIHQ2KmMyXG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBzMCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgICAgICAgIC8vIHMwID0gYV4yXG4gICAgICAgIGNvbnN0IGFiID0gdGhpcy5GLm11bChhWzBdLCBhWzFdKTsgICAgICAgICAgICAgICAgLy8gYWIgPSBhKmJcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYuYWRkKGFiLCBhYik7ICAgICAgICAgICAgICAgICAgICAvLyBzMSA9IDJhYjtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYuc3F1YXJlKFxuICAgICAgICAgICAgdGhpcy5GLmFkZCh0aGlzLkYuc3ViKGFbMF0sYVsxXSksIGFbMl0pKTsgICAgIC8vIHMyID0gKGEgLSBiICsgYyleMjtcbiAgICAgICAgY29uc3QgYmMgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAgICAgICAvLyBiYyA9IGIqY1xuICAgICAgICBjb25zdCBzMyA9IHRoaXMuRi5hZGQoYmMsIGJjKTsgICAgICAgICAgICAgICAgICAgIC8vIHMzID0gMipiY1xuICAgICAgICBjb25zdCBzNCA9IHRoaXMuRi5zcXVhcmUoYVsyXSk7ICAgICAgICAgICAgICAgICAgIC8vIHM0ID0gY14yXG5cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBzMCxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoczMpKSwgICAgICAgICAgIC8vIHMwICsgbm9uX3Jlc2lkdWUgKiBzMyxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczEsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHM0KSksICAgICAgICAgICAvLyBzMSArIG5vbl9yZXNpZHVlICogczQsXG4gICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoIHRoaXMuRi5hZGQoczEsIHMyKSAsIHMzICksXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChzMCwgczQpKV07ICAgICAgICAgICAgICAgICAgICAgIC8vIHMxICsgczIgKyBzMyAtIHMwIC0gczRcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pICYmIHRoaXMuRi5pc1plcm8oYVsyXSk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmVxKGFbMF0sIGJbMF0pICYmIHRoaXMuRi5lcShhWzFdLCBiWzFdKSAmJiB0aGlzLkYuZXEoYVsyXSwgYlsyXSk7XG4gICAgfVxuXG4gICAgYWZmaW5lKGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuYWZmaW5lKGFbMF0pLCB0aGlzLkYuYWZmaW5lKGFbMV0pLCB0aGlzLkYuYWZmaW5lKGFbMl0pXTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHBvdyhiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhKSB7XG4gICAgICAgIHJldHVybiBgWyAke3RoaXMuRi50b1N0cmluZyhhWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhhWzFdKX0sICR7dGhpcy5GLnRvU3RyaW5nKGFbMl0pfSBdYDtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGd0KGEsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzBdLCBiWzBdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYlswXSwgYVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzFdLCBiWzFdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYlsxXSwgYVsxXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzJdLCBiWzJdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpLCB0aGlzLkYucmFuZG9tKCldO1xuICAgIH1cblxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMl0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzJdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzBdKTtcbiAgICB9XG5cbiAgICB0b1JwckxFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMl0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzBdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBpc0dyZWF0ZXN0KEYsIGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgICBmb3IgKGxldCBpPWEubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCFGLkYuaXNaZXJvKGFbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzR3JlYXRlc3QoRi5GLCBhW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuYSA9IEYubmVnKGEpO1xuICAgICAgICByZXR1cm4gZ3QoYSwgbmEpO1xuICAgIH1cbn1cblxuXG5jbGFzcyBFQyB7XG5cbiAgICBjb25zdHJ1Y3RvcihGLCBnKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuZyA9IGc7XG4gICAgICAgIGlmICh0aGlzLmcubGVuZ3RoID09IDIpIHRoaXMuZ1syXSA9IHRoaXMuRi5vbmU7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLm9uZSwgdGhpcy5GLnplcm9dO1xuICAgIH1cblxuICAgIGFkZChwMSwgcDIpIHtcblxuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAxLCB0aGlzLnplcm8pKSByZXR1cm4gcDI7XG4gICAgICAgIGlmICh0aGlzLmVxKHAyLCB0aGlzLnplcm8pKSByZXR1cm4gcDE7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBGLnNxdWFyZSggcDFbMl0gKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IEYuc3F1YXJlKCBwMlsyXSApO1xuXG4gICAgICAgIGNvbnN0IFUxID0gRi5tdWwoIHAxWzBdICwgWjJaMiApOyAgICAgLy8gVTEgPSBYMSAgKiBaMloyXG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApOyAgICAgLy8gVTIgPSBYMiAgKiBaMVoxXG5cbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBGLm11bCggcDFbMl0gLCBaMVoxKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBGLm11bCggcDJbMl0gLCBaMloyKTtcblxuICAgICAgICBjb25zdCBTMSA9IEYubXVsKCBwMVsxXSAsIFoyX2N1YmVkKTsgIC8vIFMxID0gWTEgKiBaMiAqIFoyWjJcbiAgICAgICAgY29uc3QgUzIgPSBGLm11bCggcDJbMV0gLCBaMV9jdWJlZCk7ICAvLyBTMiA9IFkyICogWjEgKiBaMVoxXG5cbiAgICAgICAgaWYgKEYuZXEoVTEsVTIpICYmIEYuZXEoUzEsUzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb3VibGUocDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgSCA9IEYuc3ViKCBVMiAsIFUxICk7ICAgICAgICAgICAgICAgICAgICAvLyBIID0gVTItVTFcblxuICAgICAgICBjb25zdCBTMl9taW51c19TMSA9IEYuc3ViKCBTMiAsIFMxICk7XG5cbiAgICAgICAgY29uc3QgSSA9IEYuc3F1YXJlKCBGLmFkZChILEgpICk7ICAgICAgICAgLy8gSSA9ICgyICogSCleMlxuICAgICAgICBjb25zdCBKID0gRi5tdWwoIEggLCBJICk7ICAgICAgICAgICAgICAgICAgICAgIC8vIEogPSBIICogSVxuXG4gICAgICAgIGNvbnN0IHIgPSBGLmFkZCggUzJfbWludXNfUzEgLCBTMl9taW51c19TMSApOyAgLy8gciA9IDIgKiAoUzItUzEpXG4gICAgICAgIGNvbnN0IFYgPSBGLm11bCggVTEgLCBJICk7ICAgICAgICAgICAgICAgICAgICAgLy8gViA9IFUxICogSVxuXG4gICAgICAgIHJlc1swXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnN1YiggRi5zcXVhcmUocikgLCBKICksXG4gICAgICAgICAgICAgICAgRi5hZGQoIFYgLCBWICkpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gWDMgPSByXjIgLSBKIC0gMiAqIFZcblxuICAgICAgICBjb25zdCBTMV9KID0gRi5tdWwoIFMxICwgSiApO1xuXG4gICAgICAgIHJlc1sxXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLm11bCggciAsIEYuc3ViKFYscmVzWzBdKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIFMxX0osUzFfSiApKTsgICAgICAgICAgICAgICAgICAgLy8gWTMgPSByICogKFYtWDMpLTIgUzEgSlxuXG4gICAgICAgIHJlc1syXSA9XG4gICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICBILFxuICAgICAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocDFbMl0scDJbMl0pICksXG4gICAgICAgICAgICAgICAgICAgIEYuYWRkKCBaMVoxICwgWjJaMiApKSk7ICAgICAgICAgICAgLy8gWjMgPSAoKFoxK1oyKV4yLVoxWjEtWjJaMikgKiBIXG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBuZWcocCkge1xuICAgICAgICByZXR1cm4gW3BbMF0sIHRoaXMuRi5uZWcocFsxXSksIHBbMl1dO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLCB0aGlzLm5lZyhiKSk7XG4gICAgfVxuXG4gICAgZG91YmxlKHApIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkoMyk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXEocCwgdGhpcy56ZXJvKSkgcmV0dXJuIHA7XG5cbiAgICAgICAgY29uc3QgQSA9IEYuc3F1YXJlKCBwWzBdICk7ICAgICAgICAgICAgICAgICAgICAvLyBBID0gWDFeMlxuICAgICAgICBjb25zdCBCID0gRi5zcXVhcmUoIHBbMV0gKTsgICAgICAgICAgICAgICAgICAgIC8vIEIgPSBZMV4yXG4gICAgICAgIGNvbnN0IEMgPSBGLnNxdWFyZSggQiApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gQyA9IEJeMlxuXG4gICAgICAgIGxldCBEID1cbiAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgIEYuc3F1YXJlKCBGLmFkZChwWzBdICwgQiApKSxcbiAgICAgICAgICAgICAgICBGLmFkZCggQSAsIEMpKTtcbiAgICAgICAgRCA9IEYuYWRkKEQsRCk7ICAgICAgICAgICAgICAgICAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG5cbiAgICAgICAgY29uc3QgRSA9IEYuYWRkKCBGLmFkZChBLEEpLCBBKTsgICAgICAgICAgLy8gRSA9IDMgKiBBXG4gICAgICAgIGNvbnN0IEZGID1GLnNxdWFyZSggRSApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gRiA9IEVeMlxuXG4gICAgICAgIHJlc1swXSA9IEYuc3ViKCBGRiAsIEYuYWRkKEQsRCkgKTsgICAgICAgICAvLyBYMyA9IEYgLSAyIERcblxuICAgICAgICBsZXQgZWlnaHRDID0gRi5hZGQoIEMgLCBDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcbiAgICAgICAgZWlnaHRDID0gRi5hZGQoIGVpZ2h0QyAsIGVpZ2h0QyApO1xuXG4gICAgICAgIHJlc1sxXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgRSxcbiAgICAgICAgICAgICAgICAgICAgRi5zdWIoIEQsIHJlc1swXSApKSxcbiAgICAgICAgICAgICAgICBlaWdodEMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcblxuICAgICAgICBjb25zdCBZMVoxID0gRi5tdWwoIHBbMV0gLCBwWzJdICk7XG4gICAgICAgIHJlc1syXSA9IEYuYWRkKCBZMVoxICwgWTFaMSApOyAgICAgICAgICAgICAgICAgLy8gWjMgPSAyICogWTEgKiBaMVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgdGltZXNTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBtdWxTY2FsYXIodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgYWZmaW5lKHApIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9IGVsc2UgaWYgKEYuZXEocFsyXSwgRi5vbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFpfaW52ID0gRi5pbnYocFsyXSk7XG4gICAgICAgICAgICBjb25zdCBaMl9pbnYgPSBGLnNxdWFyZShaX2ludik7XG4gICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuICAgICAgICAgICAgcmVzWzBdID0gRi5tdWwocFswXSxaMl9pbnYpO1xuICAgICAgICAgICAgcmVzWzFdID0gRi5tdWwocFsxXSxaM19pbnYpO1xuICAgICAgICAgICAgcmVzWzJdID0gRi5vbmU7XG5cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWx0aUFmZmluZShhcnIpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFycik7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IGFjY011bCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCsxKTtcbiAgICAgICAgYWNjTXVsWzBdID0gRi5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoRi5lcShhcnJba2V5c1tpXV1bMl0sIEYuemVybykpIHtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaSsxXSA9IGFjY011bFtpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBGLm11bChhY2NNdWxbaV0sIGFycltrZXlzW2ldXVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhY2NNdWxba2V5cy5sZW5ndGhdID0gRi5pbnYoYWNjTXVsW2tleXMubGVuZ3RoXSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGtleXMubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2ldID0gYWNjTXVsW2krMV07XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dID0gdGhpcy56ZXJvO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBaX2ludiA9IEYubXVsKGFjY011bFtpXSwgYWNjTXVsW2krMV0pO1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IEYubXVsKGFycltrZXlzW2ldXVsyXSwgYWNjTXVsW2krMV0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFozX2ludiA9IEYubXVsKFoyX2ludiwgWl9pbnYpO1xuXG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzBdID0gRi5tdWwoYXJyW2tleXNbaV1dWzBdLFoyX2ludik7XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzFdID0gRi5tdWwoYXJyW2tleXNbaV1dWzFdLFozX2ludik7XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzJdID0gRi5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGVxKHAxLCBwMikge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuXG4gICAgICAgIGlmICh0aGlzLkYuZXEocDFbMl0sIHRoaXMuRi56ZXJvKSkgcmV0dXJuIHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pO1xuICAgICAgICBpZiAodGhpcy5GLmVxKHAyWzJdLCB0aGlzLkYuemVybykpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTtcbiAgICAgICAgY29uc3QgVTIgPSBGLm11bCggcDJbMF0gLCBaMVoxICk7XG5cbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBGLm11bCggcDFbMl0gLCBaMVoxKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBGLm11bCggcDJbMl0gLCBaMloyKTtcblxuICAgICAgICBjb25zdCBTMSA9IEYubXVsKCBwMVsxXSAsIFoyX2N1YmVkKTtcbiAgICAgICAgY29uc3QgUzIgPSBGLm11bCggcDJbMV0gLCBaMV9jdWJlZCk7XG5cbiAgICAgICAgcmV0dXJuIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSk7XG4gICAgfVxuXG4gICAgaXNaZXJvKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8ocFsyXSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcocCkge1xuICAgICAgICBjb25zdCBjcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoY3BbMF0pfSAsICR7dGhpcy5GLnRvU3RyaW5nKGNwWzFdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgbGV0IFAgPSBbXTtcbiAgICAgICAgbGV0IGdyZWF0ZXN0O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBQWzBdID0gRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgICAgICBncmVhdGVzdCA9IHJuZy5uZXh0Qm9vbCgpO1xuICAgICAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICAgICAgUFsxXSA9IEYuc3FydCh4M2IpO1xuICAgICAgICB9IHdoaWxlICgoUFsxXSA9PSBudWxsKXx8KEYuaXNaZXJvW1BdKSk7XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQID0gdGhpcy5tdWxTY2FsYXIoUCwgdGhpcy5jb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBQID0gdGhpcy5hZmZpbmUoUCk7XG5cbiAgICAgICAgcmV0dXJuIFA7XG5cbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckxFSk0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rMip0aGlzLkYubjgsIHBbMl0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVKTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KjIpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJDb21wcmVzc2VkKGJ1ZmYsIG8pIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCBGLm44KTtcbiAgICAgICAgaWYgKHZbMF0gJiAweDQwKSByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICBjb25zdCBQID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGNvbnN0IGdyZWF0ZXN0ID0gKCh2WzBdICYgMHg4MCkgIT0gMCk7XG4gICAgICAgIHZbMF0gPSB2WzBdICYgMHg3RjtcbiAgICAgICAgUFswXSA9IEYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QpIHZbMF0gPSB2WzBdIHwgMHg4MDsgIC8vIHNldCBiYWNrIGFnYWluIHRoZSBvbGQgdmFsdWVcblxuICAgICAgICBjb25zdCB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBpZiAoUFsxXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBQb2ludCFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzID0gaXNHcmVhdGVzdChGLCBQWzFdKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0IF4gcykgUFsxXSA9IEYubmVnKFBbMV0pO1xuICAgICAgICBQWzJdID0gRi5vbmU7XG5cbiAgICAgICAgcmV0dXJuIFA7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBjb25zdCB2ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZi5idWZmZXIsIG8sIHRoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgdi5maWxsKDApO1xuICAgICAgICAgICAgdlswXSA9IDB4NDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgcFswXSk7XG5cbiAgICAgICAgaWYgKGlzR3JlYXRlc3QodGhpcy5GLCBwWzFdKSkge1xuICAgICAgICAgICAgdlswXSA9IHZbMF0gfCAweDgwO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIG8pIHtcbiAgICAgICAgaWYgKGJ1ZmZbMF0gJiAweDQwKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICB9XG5cbiAgICB0b1JwclVuY29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHRoaXMudG9ScHJCRShidWZmLCBvLCBwKTtcblxuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGJ1ZmZbb10gPSBidWZmW29dIHwgMHg0MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5cbnZhciB1dGlscyQ2ID0ge307XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudXRpbHMkNi5iaWdJbnQyQnl0ZXNMRSA9IGZ1bmN0aW9uIGJpZ0ludDJCeXRlc0xFKF9hLCBsZW4pIHtcbiAgICBjb25zdCBiID0gQXJyYXkobGVuKTtcbiAgICBsZXQgdiA9IEJpZ0ludChfYSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbjsgaSsrKSB7XG4gICAgICAgIGJbaV0gPSBOdW1iZXIodiAmIDB4RkZuKTtcbiAgICAgICAgdiA9IHYgPj4gOG47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5iaWdJbnQyVTMyTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGRkZGRkZGbik7XG4gICAgICAgIHYgPSB2ID4+IDMybjtcbiAgICB9XG4gICAgcmV0dXJuIGI7XG59O1xuXG51dGlscyQ2LmlzT2NhbU51bSA9IGZ1bmN0aW9uKGEpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5sZW5ndGggIT0gMykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYVswXSAhPT0gXCJudW1iZXJcIikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYVsxXSAhPT0gXCJudW1iZXJcIikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhWzJdKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfaW50ID0gZnVuY3Rpb24gYnVpbGRJbnQobW9kdWxlLCBuNjQsIF9wcmVmaXgpIHtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJpbnRcIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7fTtcblxuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXF6KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9lcVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldENvbXBDb2RlKG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICBjLnJldChjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR3RlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9ndGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2x0X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIiksIG4qOCApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfZ3RfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKCBcImNcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpLCA0KmkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIiksIDQqaSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5pMzJfd3JhcF9pNjQoYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl9zIChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5pNjRfYW5kKCBjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5pMzJfd3JhcF9pNjQgKCBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSkpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ5XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRZID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWVtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieVwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieVwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFlbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInlcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMF9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMV9vbGRcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbG9hZFggPSBbXTtcbiAgICAgICAgZnVuY3Rpb24gbXVsaWooaSwgaikge1xuICAgICAgICAgICAgbGV0IFgsWTtcbiAgICAgICAgICAgIGlmICghbG9hZFhbaV0pIHtcbiAgICAgICAgICAgICAgICBYID0gYy50ZWVMb2NhbChcInhcIitpLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGkqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWCA9IGMuZ2V0TG9jYWwoXCJ4XCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2pdKSB7XG4gICAgICAgICAgICAgICAgWSA9IGMudGVlTG9jYWwoXCJ4XCIraiwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBqKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtqXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFkgPSBjLmdldExvY2FsKFwieFwiK2opO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYy5pNjRfbXVsKCBYLCBZICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcbiAgICAgICAgbGV0IGMwX29sZCA9IFwiYzBfb2xkXCI7XG4gICAgICAgIGxldCBjMV9vbGQgPSBcImMxX29sZFwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLCBjLmk2NF9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8KChrKzEpPj4xKSApJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBNdWx0aXBseSBieSAyXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChrJTIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaz4+MSwgaz4+MSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIG9sZCBjYXJyeVxuXG4gICAgICAgICAgICBpZiAoaz4wKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzFfb2xkKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICBrKjQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0KjItNCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmVPbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZU9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9idWlsZE11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X211bChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ5XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDQqaSwgMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdSAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9idWlsZEFkZDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19hZGQxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInB4XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ5XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgYy5pNjRfZXF6KGMuZ2V0TG9jYWwoXCJjXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJweFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg0KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRGl2KCkge1xuICAgICAgICBfYnVpbGRNdWwxKCk7XG4gICAgICAgIF9idWlsZEFkZDEoKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9kaXZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicnJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVYXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZVlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInN4XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZWNcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IENhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUmF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDID0gYy5nZXRMb2NhbChcImNjXCIpO1xuICAgICAgICBjb25zdCBSID0gYy5nZXRMb2NhbChcInJyXCIpO1xuICAgICAgICBjb25zdCBwcjEgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IFIxID0gYy5pMzJfY29uc3QocHIxKTtcbiAgICAgICAgY29uc3QgUjIgPSBjLmkzMl9jb25zdChwcjErbjgpO1xuXG4gICAgICAgIC8vIEljIGMgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjY1wiLCBjLmdldExvY2FsKFwiY1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgQ2F1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gSWMgciBpcyAwIHRoZW4gc3RvcmUgaXQgaW4gYW4gYXV4aWxpYXJ5IGJ1ZmZlclxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJyXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBSYXV4KVxuICAgICAgICApKTtcblxuICAgICAgICAvLyBDb3B5XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwieFwiKSwgUikpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInlcIiksIFkpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIEMpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIFIxKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVYXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfY29uc3QobjgtMSkpKTtcblxuICAgICAgICAvLyB3aGlsZSAoZVk+MykmJihZW2VZXT09MCkgZXktLTtcbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFkgLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVZXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN5XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFksIGMuZ2V0TG9jYWwoXCJlWVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBGb3JjZSBhIGRpdmlkZSBieSAwIGlmIHF1b3RpZW4gaXMgMFxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3lcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5pNjRfZGl2X3UoYy5pNjRfY29uc3QoMCksIGMuaTY0X2NvbnN0KDApKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG5cbiAgICAgICAgICAgIC8vIHdoaWxlIChlWD43KSYmKFlbZVhdPT0wKSBleC0tO1xuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChSICwgYy5nZXRMb2NhbChcImVYXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImVYXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiZVhcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeFwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZCggUiwgYy5nZXRMb2NhbChcImVYXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3lcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBXaGlsZSBncmVhdGVyIHRoYW4gMzIgYml0cyBvciBlYyBpcyBuZWcsIHNociBhbmQgaW5jIGV4cFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfZXF6KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkYwMDAwMDAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiZWNcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pNjRfZXF6KGMuZ2V0TG9jYWwoXCJzeFwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIFIsIFkpKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic3hcIiwgYy5pNjRfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiZWNcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWwxXCIsIFksIGMuZ2V0TG9jYWwoXCJzeFwiKSwgUjIpLFxuICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICBSLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihSMiwgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBSXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fYWRkMVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChDLCBjLmdldExvY2FsKFwiZWNcIikpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW52ZXJzZU1vZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlTW9kXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwbVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwidFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJxclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5ld3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzd3BcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbnRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdubmV3dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ254XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgbXVsQnVmZiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG4gICAgICAgIGNvbnN0IGF1eDcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGF1eDEpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBhdXgyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYXV4MilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBhdXgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgYXV4MyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXdyXCIsIGF1eDQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInB4XCIpLCBhdXg0KVxuICAgICAgICApO1xuXG5cblxuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwicXFcIiwgYXV4NSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFyXCIsIGF1eDYpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ4XCIsIGF1eDcpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwibmV3clwiKSApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RpdlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcIm5ld3JcIiksIGMuZ2V0TG9jYWwoXCJxcVwiKSwgYy5nZXRMb2NhbChcInFyXCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJuZXd0XCIpLCBtdWxCdWZmKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbnRcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ25uZXd0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBjLmdldExvY2FsKFwidFwiKSwgbXVsQnVmZiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic3dwXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJ0XCIsIGMuZ2V0TG9jYWwoXCJuZXd0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXd0XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJ4XCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbnRcIiwgYy5nZXRMb2NhbChcInNpZ25uZXd0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdubmV3dFwiLCBjLmdldExvY2FsKFwic2lnbnhcIikpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic3dwXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyXCIsIGMuZ2V0TG9jYWwoXCJuZXdyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXdyXCIsIGMuZ2V0TG9jYWwoXCJxclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicXJcIiwgYy5nZXRMb2NhbChcInN3cFwiKSksXG5cbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInBtXCIpLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInByXCIpKVxuICAgICAgICApKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRHdGUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkU3F1YXJlT2xkKCk7XG4gICAgYnVpbGREaXYoKTtcbiAgICBidWlsZEludmVyc2VNb2QoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9ndGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9kaXZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlTW9kXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3RpbWVzc2NhbGFyID0gZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcihtb2R1bGUsIGZuTmFtZSwgZWxlbWVudExlbiwgb3BBQiwgb3BBQSwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImJcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGVsZW1lbnRMZW4pKTtcblxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pZihcbiAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICBdXG4gICAgICAgIClcbiAgICApO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BDb3B5LCBjLmdldExvY2FsKFwiYmFzZVwiKSwgYXV4KSk7XG4gICAgZi5hZGRDb2RlKGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJpXCIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpKTtcbiAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIC4uLmlubmVyTG9vcCgpLFxuICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICBjLmJyKDApXG4gICAgKSkpO1xuXG5cbiAgICBmdW5jdGlvbiBpbm5lckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgY29kZS5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEFBLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoIGMuZ2V0TG9jYWwoXCJiXCIpLCBjLmkzMl9jb25zdCgweDgwID4+IGkpKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwID4+IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEFCLCBjLmdldExvY2FsKFwiclwiKSxhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29kZTtcbiAgICB9XG5cbn07XG5cbnZhciBidWlsZF9iYXRjaGludmVyc2UgPSBidWlsZEJhdGNoSW52ZXJzZSQzO1xuXG5mdW5jdGlvbiBidWlsZEJhdGNoSW52ZXJzZSQzKG1vZHVsZSwgcHJlZml4KSB7XG5cblxuICAgIGNvbnN0IG44ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQqODtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJpblN0ZXBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm91dFN0ZXBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0QXV4XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cblxuICAgIC8vIEFsbG9jIFdvcmtpbmcgc3BhY2UgZm9yIGFjY3VtdWxhdGVkIHVtbHRpcGxpY2F0aW9uc1xuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIGYuYWRkQ29kZShcblxuICAgICAgICAvLyBhdXhbMF0gPSBhO1xuICAgICAgICBjLmNhbGwocHJlZml4K1wiX29uZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIikpLFxuICAgICAgICAvLyBmb3IgKGk9MDtpPG47aSsrKSBhdXhbaV0gPSBhdXhbaS0xXSppbltpXVxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG5cbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4K1wiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXgrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpLFxuXG4gICAgICAgIC8vIHBvaW50IHRvIHRoZSBsYXN0XG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgIC8vIGl0T3V0ID0gcE91dCArIChuLTEpKnN0ZXBPdXQgICAvLyBQb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJpdE91dFwiLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvdXRTdGVwXCIpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcblxuICAgICAgICAvLyBhdXhbbi0xXSA9IDEvYXV4W24tMV1cbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pbnZlcnNlXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5nZXRMb2NhbChcIml0QXV4XCIpICksXG5cbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiggYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSwgQVVYKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0SW5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBBVVgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwib3V0U3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKVxuXG4gICAgKTtcblxuXG4gICAgLy8gUmVjb3ZlciBPbGQgbWVtb3J5XG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgIClcbiAgICApO1xuXG59XG5cbnZhciBidWlsZF9iYXRjaGNvbnZlcnRpb24gPSBidWlsZEJhdGNoQ29udmVydGlvbiQzO1xuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydGlvbiQzKG1vZHVsZSwgZm5OYW1lLCBpbnRlcm5hbEZuTmFtZSwgc2l6ZUluLCBzaXplT3V0LCByZXZlcnNlKSB7XG4gICAgaWYgKHR5cGVvZiByZXZlcnNlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIC8vIFNldCB0aGUgcmV2ZXJzZSBpbiBhIHdheSB0aGF0IGFsbG93cyB0byB1c2UgdGhlIHNhbWUgYnVmZmVyIGFzIGluL291dC5cbiAgICAgICAgaWYgKHNpemVJbiA8IHNpemVPdXQpIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplSW4pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZU91dClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbnZhciBidWlsZF9iYXRjaG9wID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMjtcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMihtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluMVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicE91dFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4yXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW4xXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplSW4pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuaTMyX2NvbnN0KHNpemVPdXQpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmdldExvY2FsKFwicEluMVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5nZXRMb2NhbChcInBJbjJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbnZhciBiaWdpbnQgPSB7fTtcblxuLy8gTWFueSBvZiB0aGVzZSB1dGlsaXRpZXMgYXJlIGZyb20gdGhlIGBiaWctaW50ZWdlcmAgbGlicmFyeSxcbi8vIGJ1dCBhZGp1c3RlZCB0byBvbmx5IHdvcmsgd2l0aCBuYXRpdmUgQmlnSW50IHR5cGVcbi8vIFJlZiBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2Jsb2IvZTVkMjE1NGQzYzQxNzA2OWM1MWU3MTE2YmFmYzNiOTFkMGI5ZmU0MS9CaWdJbnRlZ2VyLmpzXG4vLyBPcmlnaW5hbGx5IGxpY2Vuc2VkIFRoZSBVbmxpY2Vuc2VcblxuZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIHNxdWFyZSQxKG4pIHtcbiAgICByZXR1cm4gbiAqIG47XG59XG5cbmZ1bmN0aW9uIGlzT2RkJDQobikge1xuICAgIHJldHVybiBuICUgMm4gIT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0V2ZW4obikge1xuICAgIHJldHVybiBuICUgMm4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlJDMobikge1xuICAgIHJldHVybiBuIDwgMG47XG59XG5cbmZ1bmN0aW9uIGlzUG9zaXRpdmUobikge1xuICAgIHJldHVybiBuID4gMG47XG59XG5cbmZ1bmN0aW9uIGJpdExlbmd0aCQ1KG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKG4pKSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aCAtIDE7IC8vIGRpc2NhcmQgdGhlIC0gc2lnblxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFicyhuKSB7XG4gICAgcmV0dXJuIG4gPCAwbiA/IC1uIDogbjtcbn1cblxuZnVuY3Rpb24gaXNVbml0KG4pIHtcbiAgICByZXR1cm4gYWJzKG4pID09PSAxbjtcbn1cblxuZnVuY3Rpb24gbW9kSW52JDMoYSwgbikge1xuICAgIHZhciB0ID0gMG4sIG5ld1QgPSAxbiwgciA9IG4sIG5ld1IgPSBhYnMoYSksIHEsIGxhc3RULCBsYXN0UjtcbiAgICB3aGlsZSAobmV3UiAhPT0gMG4pIHtcbiAgICAgICAgcSA9IHIgLyBuZXdSO1xuICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgIGxhc3RSID0gcjtcbiAgICAgICAgdCA9IG5ld1Q7XG4gICAgICAgIHIgPSBuZXdSO1xuICAgICAgICBuZXdUID0gbGFzdFQgLSAocSAqIG5ld1QpO1xuICAgICAgICBuZXdSID0gbGFzdFIgLSAocSAqIG5ld1IpO1xuICAgIH1cbiAgICBpZiAoIWlzVW5pdChyKSkgdGhyb3cgbmV3IEVycm9yKGEudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgaWYgKGNvbXBhcmUodCwgMG4pID09PSAtMSkge1xuICAgICAgICB0ID0gdCArIG47XG4gICAgfVxuICAgIGlmIChpc05lZ2F0aXZlJDMoYSkpIHtcbiAgICAgICAgcmV0dXJuIC10O1xuICAgIH1cbiAgICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gbW9kUG93JDIobiwgZXhwLCBtb2QpIHtcbiAgICBpZiAobW9kID09PSAwbikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHRha2UgbW9kUG93IHdpdGggbW9kdWx1cyAwXCIpO1xuICAgIHZhciByID0gMW4sXG4gICAgICAgIGJhc2UgPSBuICUgbW9kO1xuICAgIGlmIChpc05lZ2F0aXZlJDMoZXhwKSkge1xuICAgICAgICBleHAgPSBleHAgKiAtMW47XG4gICAgICAgIGJhc2UgPSBtb2RJbnYkMyhiYXNlLCBtb2QpO1xuICAgIH1cbiAgICB3aGlsZSAoaXNQb3NpdGl2ZShleHApKSB7XG4gICAgICAgIGlmIChiYXNlID09PSAwbikgcmV0dXJuIDBuO1xuICAgICAgICBpZiAoaXNPZGQkNChleHApKSByID0gciAqIGJhc2UgJSBtb2Q7XG4gICAgICAgIGV4cCA9IGV4cCAvIDJuO1xuICAgICAgICBiYXNlID0gc3F1YXJlJDEoYmFzZSkgJSBtb2Q7XG4gICAgfVxuICAgIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcbiAgICBhID0gYSA+PSAwbiA/IGEgOiAtYTtcbiAgICBiID0gYiA+PSAwbiA/IGIgOiAtYjtcbiAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gaXNEaXZpc2libGVCeShhLCBuKSB7XG4gICAgaWYgKG4gPT09IDBuKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGlzVW5pdChuKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGNvbXBhcmVBYnMobiwgMm4pID09PSAwKSByZXR1cm4gaXNFdmVuKGEpO1xuICAgIHJldHVybiBhICUgbiA9PT0gMG47XG59XG5cbmZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgdmFyIG4gPSBhYnModik7XG4gICAgaWYgKGlzVW5pdChuKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChuID09PSAybiB8fCBuID09PSAzbiB8fCBuID09PSA1bikgcmV0dXJuIHRydWU7XG4gICAgaWYgKGlzRXZlbihuKSB8fCBpc0RpdmlzaWJsZUJ5KG4sIDNuKSB8fCBpc0RpdmlzaWJsZUJ5KG4sIDVuKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChuIDwgNDluKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyB3ZSBkb24ndCBrbm93IGlmIGl0J3MgcHJpbWU6IGxldCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZpZ3VyZSBpdCBvdXRcbn1cblxuZnVuY3Rpb24gcHJldihuKSB7XG4gICAgcmV0dXJuIG4gLSAxbjtcbn1cblxuZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICB2YXIgblByZXYgPSBwcmV2KG4pLFxuICAgICAgICBiID0gblByZXYsXG4gICAgICAgIHIgPSAwLFxuICAgICAgICBkLCBpLCB4O1xuICAgIHdoaWxlIChpc0V2ZW4oYikpIGIgPSBiIC8gMm4sIHIrKztcbiAgICBuZXh0OiBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobiA8IGFbaV0pIGNvbnRpbnVlO1xuICAgICAgICB4ID0gbW9kUG93JDIoQmlnSW50KGFbaV0pLCBiLCBuKTtcbiAgICAgICAgaWYgKGlzVW5pdCh4KSB8fCB4ID09PSBuUHJldikgY29udGludWU7XG4gICAgICAgIGZvciAoZCA9IHIgLSAxOyBkICE9IDA7IGQtLSkge1xuICAgICAgICAgICAgeCA9IHNxdWFyZSQxKHgpICUgbjtcbiAgICAgICAgICAgIGlmIChpc1VuaXQoeCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmICh4ID09PSBuUHJldikgY29udGludWUgbmV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1ByaW1lJDEocCkge1xuICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHApO1xuICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgIHZhciBuID0gYWJzKHApO1xuICAgIHZhciBiaXRzID0gYml0TGVuZ3RoJDUobik7XG4gICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgWzIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzN10pO1xuICAgIHZhciBsb2dOID0gTWF0aC5sb2coMikgKiBOdW1iZXIoYml0cyk7XG4gICAgdmFyIHQgPSBNYXRoLmNlaWwobG9nTik7XG4gICAgZm9yICh2YXIgYSA9IFtdLCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICBhLnB1c2goQmlnSW50KGkgKyAyKSk7XG4gICAgfVxuICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgYSk7XG59XG5cbmJpZ2ludC5iaXRMZW5ndGggPSBiaXRMZW5ndGgkNTtcbmJpZ2ludC5pc09kZCA9IGlzT2RkJDQ7XG5iaWdpbnQuaXNOZWdhdGl2ZSA9IGlzTmVnYXRpdmUkMztcbmJpZ2ludC5hYnMgPSBhYnM7XG5iaWdpbnQuaXNVbml0ID0gaXNVbml0O1xuYmlnaW50LmNvbXBhcmUgPSBjb21wYXJlO1xuYmlnaW50Lm1vZEludiA9IG1vZEludiQzO1xuYmlnaW50Lm1vZFBvdyA9IG1vZFBvdyQyO1xuYmlnaW50LmlzUHJpbWUgPSBpc1ByaW1lJDE7XG5iaWdpbnQuc3F1YXJlID0gc3F1YXJlJDE7XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRJbnQgPSBidWlsZF9pbnQ7XG5jb25zdCB1dGlscyQ1ID0gdXRpbHMkNjtcbmNvbnN0IGJ1aWxkRXhwJDIgPSBidWlsZF90aW1lc3NjYWxhcjtcbmNvbnN0IGJ1aWxkQmF0Y2hJbnZlcnNlJDIgPSBidWlsZF9iYXRjaGludmVyc2U7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiQxID0gYnVpbGRfYmF0Y2hjb252ZXJ0aW9uO1xuY29uc3QgYnVpbGRCYXRjaE9wID0gYnVpbGRfYmF0Y2hvcDtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkNCwgbW9kSW52OiBtb2RJbnYkMiwgbW9kUG93OiBtb2RQb3ckMSwgaXNQcmltZSwgaXNPZGQ6IGlzT2RkJDMsIHNxdWFyZSB9ID0gYmlnaW50O1xuXG52YXIgYnVpbGRfZjFtID0gZnVuY3Rpb24gYnVpbGRGMW0obW9kdWxlLCBfcSwgX3ByZWZpeCwgX2ludFByZWZpeCkge1xuICAgIGNvbnN0IHEgPSBCaWdJbnQoX3EpO1xuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ0KHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjMyID0gbjY0KjI7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJmMW1cIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgaW50UHJlZml4ID0gYnVpbGRJbnQobW9kdWxlLCBuNjQsIF9pbnRQcmVmaXgpO1xuICAgIGNvbnN0IHBxID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKHEsIG44KSk7XG5cbiAgICBjb25zdCBwUjIgPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShzcXVhcmUoMW4gPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcbiAgICBjb25zdCBwT25lID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcFplcm8gPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRSgwbiwgbjgpKTtcbiAgICBjb25zdCBfbWludXNPbmUgPSBxIC0gMW47XG4gICAgY29uc3QgX2UgPSBfbWludXNPbmUgPj4gMW47IC8vIGUgPSAocC0xKS8yXG4gICAgY29uc3QgcGUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2UsIG44KSk7XG5cbiAgICBjb25zdCBfZVBsdXNPbmUgPSBfZSArIDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShfZVBsdXNPbmUsIG44KSk7XG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBwcTogcHEsXG4gICAgICAgIHBSMjogcFIyLFxuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcTogcSxcbiAgICAgICAgcE9uZTogcE9uZSxcbiAgICAgICAgcFplcm86IHBaZXJvLFxuICAgICAgICBwZVBsdXNPbmU6IHBlUGx1c09uZVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE9uZSksIGMuZ2V0TG9jYWwoXCJwclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInhcIiksICBjLmdldExvY2FsKFwieVwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5pMzJfY29uc3QocFplcm8pLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInhcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIEFVWCwgYy5pMzJfY29uc3QocGVQbHVzT25lKSApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIEFVWCwgYy5pMzJfY29uc3QocGVQbHVzT25lKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoLTEpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRNUmVkdWN0KCkge1xuICAgICAgICBjb25zdCBjYXJyaWVzID0gbW9kdWxlLmFsbG9jKG4zMipuMzIqOCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbVJlZHVjdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiY1wiLCBjLmk2NF9jb25zdCgwKSkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJtXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwidFwiKSwgaSo0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibnAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG4zMjsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwidFwiKSwgKGkraikqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuaTMyX2NvbnN0KHBxKSwgaio0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAoaStqKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4K1wiX2FkZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KGNhcnJpZXMpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG4zMio0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ5XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwibVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInFcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRZID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRRID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWVtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieVwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieVwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFlbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInlcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVscW0oaSwgaikge1xuICAgICAgICAgICAgbGV0IFEsTTtcbiAgICAgICAgICAgIGlmICghbG9hZFFbaV0pIHtcbiAgICAgICAgICAgICAgICBRID0gYy50ZWVMb2NhbChcInFcIitpLCBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdCgwKSwgcHEraSo0ICkpO1xuICAgICAgICAgICAgICAgIGxvYWRRW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUSA9IGMuZ2V0TG9jYWwoXCJxXCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBNID0gYy5nZXRMb2NhbChcIm1cIitqKTtcblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggUSwgTSApO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTw9aykmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgxLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHFtKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGs8bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtXCIrayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbSgwLGspXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZiAoaz49bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAoay1uMzIpKjQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFtjMCwgYzFdID0gW2MxLCBjMF07XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0LTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX3dyYXBfaTY0KGMuZ2V0TG9jYWwoYzEpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMF9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMV9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwibVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInFcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRRID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVscW0oaSwgaikge1xuICAgICAgICAgICAgbGV0IFEsTTtcbiAgICAgICAgICAgIGlmICghbG9hZFFbaV0pIHtcbiAgICAgICAgICAgICAgICBRID0gYy50ZWVMb2NhbChcInFcIitpLCBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdCgwKSwgcHEraSo0ICkpO1xuICAgICAgICAgICAgICAgIGxvYWRRW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUSA9IGMuZ2V0TG9jYWwoXCJxXCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBNID0gYy5nZXRMb2NhbChcIm1cIitqKTtcblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggUSwgTSApO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcbiAgICAgICAgbGV0IGMwX29sZCA9IFwiYzBfb2xkXCI7XG4gICAgICAgIGxldCBjMV9vbGQgPSBcImMxX29sZFwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLCBjLmk2NF9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgxLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHFtKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGs8bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtXCIrayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbSgwLGspXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgYzBfb2xkLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgYzFfb2xkLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0LTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxX29sZCkpLFxuICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX3N1YlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSkgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX3N1YlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwUjIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG5cbiAgICAgICAgY29uc3QgcEF1eDIgPSBtb2R1bGUuYWxsb2MobjgqMik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBBdXgyKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIGMuaTMyX2NvbnN0KHBBdXgyICsgbjgpICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCtcIl9tUmVkdWN0XCIsIGMuaTMyX2NvbnN0KHBBdXgyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXRlIHZhcmlvdXMgdmFsdXNlIG5lZWRlZCBmb3Igc3FydFxuXG5cbiAgICBsZXQgX25xciA9IDJuO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIHdoaWxlIChtb2RQb3ckMShfbnFyLCBfZSwgcSkgIT09IF9taW51c09uZSkgX25xciA9IF9ucXIgKyAxbjtcbiAgICB9XG5cbiAgICBsZXQgczIgPSAwO1xuICAgIGxldCBfdCA9IF9taW51c09uZTtcblxuICAgIHdoaWxlICgoIWlzT2RkJDMoX3QpKSYmKF90ICE9PSAwbikpIHtcbiAgICAgICAgczIrKztcbiAgICAgICAgX3QgPSBfdCA+PiAxbjtcbiAgICB9XG4gICAgY29uc3QgcHQgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX3QsIG44KSk7XG5cbiAgICBjb25zdCBfbnFyVG9UID0gbW9kUG93JDEoX25xciwgX3QsIHEpO1xuICAgIGNvbnN0IHBOcXJUb1QgPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRSgoX25xclRvVCA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuXG4gICAgY29uc3QgX3RQbHVzT25lT3ZlcjIgPSAoX3QgKyAxbikgPj4gMW47XG4gICAgY29uc3QgcHRQbHVzT25lT3ZlcjIgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX3RQbHVzT25lT3ZlcjIsIG44KSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxcnQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3NxcnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9ORSA9IGMuaTMyX2NvbnN0KHBPbmUpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBJZiAobj09MCkgcmV0dXJuIDBcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtXCIsIGMuaTMyX2NvbnN0KHMyKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmkzMl9jb25zdChwTnFyVG9UKSwgQyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwdCksIGMuaTMyX2NvbnN0KG44KSwgVCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwdFBsdXNPbmVPdmVyMiksIGMuaTMyX2NvbnN0KG44KSwgUiksXG5cbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIFQsIE9ORSkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBULCBTUSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBTUSwgT05FKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgU1EsIFNRKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBDLCBCKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9zdWIoYy5pMzJfc3ViKCBjLmdldExvY2FsKFwibVwiKSwgYy5nZXRMb2NhbChcImlcIikpLCBjLmkzMl9jb25zdCgxKSkgKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooYy5nZXRMb2NhbChcImpcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBCLCBCKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmdldExvY2FsKFwiaVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFQsIEMsIFQpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgQiwgUiksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiLCBSKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIFIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJuXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwZSksIGMuaTMyX2NvbnN0KG44KSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBBVVgsIE9ORSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9hZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbG9hZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcEF1eCA9IG1vZHVsZS5hbGxvYyhuOCk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KHBBdXgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZ3RfdShjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgUiksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInBcIiksIFIsIEFVWCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgQVVYLCBjLmdldExvY2FsKFwiclwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJsXCIsIGMuaTMyX3JlbV91KCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuaWYoYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJsXCIpKSwgYy5yZXQoW10pKSxcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIEFVWCksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmdldExvY2FsKFwibFwiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgcEF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBSLCBjLmkzMl9jb25zdChwUjIpLCBSKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgQVVYLCBSLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgQVVYLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9sb2FkXCIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChpbnRQcmVmaXggKyBcIl9lcVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocE9uZSkpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9lcVwiLCBwcmVmaXgrXCJfZXFcIik7XG5cbiAgICBidWlsZElzT25lKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRNUmVkdWN0KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkU3F1YXJlT2xkKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRJc05lZ2F0aXZlKCk7XG4gICAgYnVpbGRTaWduKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZExvYWQoKTtcbiAgICBidWlsZFRpbWVzU2NhbGFyKCk7XG4gICAgYnVpbGRCYXRjaEludmVyc2UkMihtb2R1bGUsIHByZWZpeCk7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24kMShtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIsIHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEZyb21Nb250Z29tZXJ5XCIsIHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIG44LCBuOCk7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24kMShtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoTmVnXCIsIHByZWZpeCArIFwiX25lZ1wiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQWRkXCIsIHByZWZpeCArIFwiX2FkZFwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoU3ViXCIsIHByZWZpeCArIFwiX3N1YlwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoTXVsXCIsIHByZWZpeCArIFwiX211bFwiLCBuOCwgbjgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tUmVkdWN0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2xvYWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRXhwJDIoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIG44LFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIGludFByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCIsXG4gICAgKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXhwXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgaWYgKGlzUHJpbWUocSkpIHtcbiAgICAgICAgYnVpbGRTcXJ0KCk7XG4gICAgICAgIGJ1aWxkSXNTcXVhcmUoKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxcnRcIik7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1NxdWFyZVwiKTtcbiAgICB9XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEZyb21Nb250Z29tZXJ5XCIpO1xuICAgIC8vIGNvbnNvbGUubG9nKG1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZSk7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZEYxbSQyID1idWlsZF9mMW07XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDMgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxID0gZnVuY3Rpb24gYnVpbGRGMShtb2R1bGUsIF9xLCBfcHJlZml4LCBfZjFtUHJlZml4LCBfaW50UHJlZml4KSB7XG5cbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMyhxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFcIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0XG4gICAgfTtcblxuICAgIGNvbnN0IGludFByZWZpeCA9IF9pbnRQcmVmaXggfHwgXCJpbnRcIjtcbiAgICBjb25zdCBmMW1QcmVmaXggPSBidWlsZEYxbSQyKG1vZHVsZSwgcSwgX2YxbVByZWZpeCwgaW50UHJlZml4KTtcblxuXG4gICAgY29uc3QgcFIyID0gICAgIG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucFIyO1xuICAgIGNvbnN0IHBxID0gICAgIG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucHE7XG4gICAgY29uc3QgcGVQbHVzT25lID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5wZVBsdXNPbmU7XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgcEF1eDEgPSBtb2R1bGUuYWxsb2MobjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChwQXV4MSkpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocEF1eDEpLCBjLmkzMl9jb25zdChwUjIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW52ZXJzZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfaW52ZXJzZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfaW52ZXJzZU1vZFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNOZWdhdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9hZGRcIiwgcHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9zdWJcIiwgcHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9uZWdcIiwgcHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfY29weVwiLCBwcmVmaXgrXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfemVyb1wiLCBwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfb25lXCIsIHByZWZpeCtcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9lcVwiLCBwcmVmaXgrXCJfZXFcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZEV4cCQxID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQxID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgdXRpbHMkNCA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mMm0gPSBmdW5jdGlvbiBidWlsZEYybShtb2R1bGUsIG11bE5vblJlc2lkdWVGbiwgcHJlZml4LCBmMW1QcmVmaXgpIHtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBmMW44ID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqODtcbiAgICBjb25zdCBxID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5xO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0OiBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCoyXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MCwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MSwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX25lZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvbmp1Z2F0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uanVnYXRlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNOZWdhdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoZjFtUHJlZml4K1wiX2lzTmVnYXRpdmVcIiwgeDEpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MCwgeTAsIEEpLCAgICAgICAgICAgICAvLyBBID0geDAqeTBcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHkxLCBCKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnkxXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBDKSwgICAgICAgICAgICAgLy8gQyA9IHgwICsgeDFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgeTAsIHkxLCBEKSwgICAgICAgICAgICAgLy8gRCA9IHkwICsgeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQywgRCwgQyksICAgICAgICAgICAgICAgLy8gQyA9ICh4MCArIHgxKSooeTAgKyB5MSkgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MVxuXG4gICAgICAgICAgICAvLyAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBCLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgQiwgcjApLCAgLy8gcjAgPSBuciooeDEqeTEpXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIHIwLCByMCksICAgICAgICAgICAgIC8vIHIwID0geDAqeTAgKyBuciooeDEqeTEpXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEIsIHIxKSwgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MSp5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBDLCByMSwgcjEpICAgICAgICAgICAgICAvLyByMSA9IHgwKnkwK3gwKnkxK3gxKnkwK3gxKnkxIC0geDAqeTAreDEqeTEgPSB4MCp5MSt4MSp5MFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeSA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MCwgeSwgcjApLCAgICAgICAgICAgICAvLyBBID0geDAqeVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MSwgeSwgcjEpLCAgICAgICAgICAgICAvLyBCID0geDEqeVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgY29uc3QgQUIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBUEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBUE5CID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQUJQTkFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIEFCID0geDAqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHgxLCBBQiksXG5cbiAgICAgICAgICAgIC8vIEFQQiA9IHgwK3kxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVBCKSxcblxuICAgICAgICAgICAgLy8gQVBCTjAgPSB4MCArIG5yKngxXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB4MSwgQVBOQiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCBBUE5CLCBBUE5CKSxcblxuICAgICAgICAgICAgLy8gQUJQTkFCID0gYWIgKyBuciphYlxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgQUIsIEFCUE5BQiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCUE5BQiwgQUIsIEFCUE5BQiksXG5cbiAgICAgICAgICAgIC8vIHIwID0gQVBCICogQVBOQiAtIEFCUE5BQlxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBBUEIsIEFQTkIsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIEFCUE5BQiwgcjApLFxuXG4gICAgICAgICAgICAvLyByMSA9IEFCICsgQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQUIsIEFCLCByMSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl90b01vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9lcVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgwLCB5MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MSwgdDEpLFxuICAgICAgICAgICAgLy8gYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDEsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlKSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2ludmVyc2VcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHQzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MSwgdDMsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHIxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NpZ25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgxKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc09uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNPbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNPbmVcIiwgeDApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIENoZWNrIGhlcmU6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTIvNjg1LnBkZlxuICAgIC8vIEFsZyA5YWRqXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxcnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAxbikgLyAybiwgZjFuOCApKSk7XG5cbiAgICAgICAgY29uc3QgYSA9IGMuZ2V0TG9jYWwoXCJhXCIpO1xuICAgICAgICBjb25zdCBhMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYWxwaGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGEwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBwbjEgPSBtb2R1bGUuYWxsb2MoZjFuOCoyKTtcbiAgICAgICAgY29uc3QgbjEgPSBjLmkzMl9jb25zdChwbjEpO1xuICAgICAgICBjb25zdCBuMWEgPSBjLmkzMl9jb25zdChwbjEpO1xuICAgICAgICBjb25zdCBuMWIgPSBjLmkzMl9jb25zdChwbjErZjFuOCk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBuMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIG4xLCBuMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGEsIGUzNCwgYy5pMzJfY29uc3QoZjFuOCksIGExKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgYTEsIGFscGhhKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYSwgYWxwaGEsIGFscGhhKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTAgPSBGLm11bChGLmZyb2Jlbml1cygxLCBhbGZhKSwgYWxmYSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29uanVnYXRlXCIsIGFscGhhLCBhMCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEwLCBhbHBoYSwgYTApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGMuaWYoYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsYTAsbjEpLCBjLnVucmVhY2hhYmxlKCkgKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgeDAgPSBGLm11bChhMSwgYSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGExLCBhLCB4MCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGFsZmEsIEYubmVnb25lKSkge1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgYWxwaGEsIG4xKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIHggPSBGLm11bCh4MCwgW0YuRi56ZXJvLCBGLkYub25lXSk7XG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMW1QcmVmaXggKyBcIl96ZXJvXCIsIG4xYSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMW1QcmVmaXggKyBcIl9vbmVcIiwgbjFiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBuMSwgeDAsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGIgPSBGLnBvdyhGLmFkZChGLm9uZSwgYWxmYSksIEYuc3FydF9lMTIpO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGIpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGIsIGFscGhhLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBiLCBlMTIsIGMuaTMyX2NvbnN0KGYxbjgpLCBiKSxcblxuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGIsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1NxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTM0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gM24pIC8gNG4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYTAsXG4gICAgICAgICAgICAgICAgICAgIG4xXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgYnVpbGRJc1plcm8oKTtcbiAgICBidWlsZElzT25lKCk7XG4gICAgYnVpbGRaZXJvKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZE11bCgpO1xuICAgIGJ1aWxkTXVsMSgpO1xuICAgIGJ1aWxkU3F1YXJlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRDb25qdWdhdGUoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgYnVpbGRCYXRjaEludmVyc2UkMShtb2R1bGUsIHByZWZpeCk7XG4gICAgYnVpbGRFeHAkMShcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCoyLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCIsXG4gICAgKTtcbiAgICBidWlsZFNxcnQoKTtcbiAgICBidWlsZElzU3F1YXJlKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXhwXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcblxuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAgPSBidWlsZF90aW1lc3NjYWxhcjtcbmNvbnN0IGJ1aWxkQmF0Y2hJbnZlcnNlID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuXG52YXIgYnVpbGRfZjNtID0gZnVuY3Rpb24gYnVpbGRGM20obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0OiBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl90aW1lc1NjYWxhclwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MCwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MSwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHkwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MSwgeTEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgyLCB5MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwoZjFtUHJlZml4K1wiX2lzTmVnYXRpdmVcIiwgeDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgY2QgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYSA9IGNkLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgYiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCBjID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInhcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgQSA9IGNkLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgQiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCBDID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInlcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjZC5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInJcIiksIGNkLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInJcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCBhQSA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2IgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9CID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGFfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYl9jID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEJfQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhQV9iQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhQV9jQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiQl9jQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBVVggPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGEsIEEsIGFBKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGIsIEIsIGJCKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMsIEMsIGNDKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYiwgYV9iKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEIsIEFfQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhLCBjLCBhX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQSwgQywgQV9DKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGIsIGMsIGJfYyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBCLCBDLCBCX0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgYkIsIGFBX2JCKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCBjQywgYUFfY0MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYkIsIGNDLCBiQl9jQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGJfYywgQl9DLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMCwgYkJfY0MsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCByMCwgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIHIwLCByMCksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYiwgQV9CLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMSwgYUFfYkIsIHIxKSxcbiAgICAgICAgICAgIGNkLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBjQywgQVVYKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCBBVVgsIHIxKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYV9jLCBBX0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIyLCBhQV9jQywgcjIpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIGJCLCByMiksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCBzMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGFiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBzMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJjID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zcXVhcmVcIiwgQSwgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBBLCBCLCBhYiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFiLCBhYiwgczEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIEEsIEIsIHMyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczIsIEMsIHMyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zcXVhcmVcIiwgczIsIHMyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBCLCBDLCBiYyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJjLCBiYywgczMpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEMsIHM0KSxcblxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgczMsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczAsIHIwLCByMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHM0LCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCBzNCwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBzMywgcjIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMxLCByMiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgyLCByMilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9vbmVcIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgxLCB5MSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgyLCB5MilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDEsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB4MiwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHgyLCB0NSksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQ1LCBjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB0MCwgYzAsIGMwKSxcblxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDIsIGMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIGMxLCB0MywgYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB0MSwgdDQsIGMyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDIsIGMxLCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MSwgYzIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB0NiwgQVVYLCB0NiksXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIGMwLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgQVVYLCB0NiwgdDYpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2ludmVyc2VcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NpZ25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDIpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRXEoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZFRpbWVzU2NhbGFyKCk7XG4gICAgYnVpbGRJc05lZ2F0aXZlKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgYnVpbGRCYXRjaEludmVyc2UobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBmMW44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX211bFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9zcXVhcmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9vbmVcIlxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhcm5hZiA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXJOQUYobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQW1CLCBvcENvcHksIG9wSW5pdCkge1xuXG4gICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgIGYuYWRkUGFyYW0oXCJiYXNlXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhckxlbmd0aFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwib2xkMFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwibmJpdHNcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImN1clwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiY2FycnlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGVsZW1lbnRMZW4pKTtcblxuICAgIGZ1bmN0aW9uIGdldEJpdChJRFgpIHtcbiAgICAgICAgcmV0dXJuIGMuaTMyX2FuZChcbiAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkZGRkZGRkMpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgSURYLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDFGKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHB1c2hCaXQoYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KGIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBjLnNldExvY2FsKFwibmJpdHNcIiwgYy5pMzJfc2hsKGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIiksIGMuaTMyX2NvbnN0KDMpKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJvbGQwXCIsIGMuaTMyX2xvYWQoYy5pMzJfY29uc3QoMCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcIm9sZDBcIikpLFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9sZDBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5iaXRzXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkY4KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgxKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcImxhc3RcIixnZXRCaXQoYy5pMzJfY29uc3QoMCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImNhcnJ5XCIsYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsIGdldEJpdChjLmdldExvY2FsKFwiaVwiKSkpLFxuICAgICAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImN1clwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgyNTUpXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwibGFzdFwiKSxcbiAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgyNTUpLFxuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApLFxuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuXG4gICAgICAgIC8vIHAgYWxyZWFkeSBwb2ludHMgdG8gdGhlIGxhc3QgYml0XG5cbiAgICAgICAgYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCksXG5cbiAgICAgICAgYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChvcEFBLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjdXJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImN1clwiKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiY3VyXCIpLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChvcEFCLCAgYy5nZXRMb2NhbChcInJcIiksIGF1eCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBbUIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxKCBjLmdldExvY2FsKFwib2xkMFwiKSwgYy5nZXRMb2NhbChcInBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcblxuICAgICAgICApKSxcblxuICAgICAgICBjLmkzMl9zdG9yZSggYy5pMzJfY29uc3QoMCksIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKVxuXG4gICAgKTtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfbXVsdGlleHAgPSBmdW5jdGlvbiBidWlsZE11bHRpZXhwKG1vZHVsZSwgcHJlZml4LCBmbk5hbWUsIG9wQWRkLCBuOGIpIHtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhdLm42NDtcbiAgICBjb25zdCBuOGcgPSBuNjRnKjg7XG5cbiAgICBmdW5jdGlvbiBidWlsZEdldENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2dldENodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgYnl0ZXMgb2YgdGhlIHNjYWxhclxuICAgICAgICBmLmFkZFBhcmFtKFwic3RhcnRCaXRcIiwgXCJpMzJcIik7ICAvLyBCaXQgdG8gc3RhcnQgZXh0cmFjdFxuICAgICAgICBmLmFkZFBhcmFtKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpOyAgLy8gQ2h1bmsgc2l6ZSBpbiBiaXRzXG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzVG9FbmRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiYml0c1RvRW5kXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzdGFydEJpdFwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2d0X3MoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibWFza1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNUb0VuZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibWFza1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvLyBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDAgICAvLyBhbGlnbiB0byBieXRlLlxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtYXNrXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdXRpZXhwQ2h1bmsoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfY2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQmFzZXNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwU2NhbGFyc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgcG9pbnRzXG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwic3RhcnRCaXRcIiwgXCJpMzJcIik7ICAvLyBiaXQgd2hlcmUgaXQgc3RhcnRzIHRoZSBjaHVua1xuICAgICAgICBmLmFkZFBhcmFtKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSWR4VGFibGVcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5UYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBUYWJsZVwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5UYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIC8vIFJlc2V0IFRhYmxlXG4gICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5UYWJsZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIC8vIERpc3RyaWJ1dGUgZWxlbWVudHNcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEJhc2VcIiwgYy5nZXRMb2NhbChcInBCYXNlc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5nZXRMb2NhbChcInBTY2FsYXJzXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlbmRTY2FsYXJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVuZFNjYWxhclwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9nZXRDaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBJZHhUYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSWR4VGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QmFzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFNjYWxhclwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEJhc2VcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksIGMuaTMyX2NvbnN0KG44YikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZuTmFtZSArIFwiX3JlZHVjZVRhYmxlXCIsIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bHRpZXhwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQmFzZXNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwU2NhbGFyc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgcG9pbnRzXG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjaHVua1NpemVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuQ2h1bmtzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlbmRTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEJhc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGNvbnN0IHBUU2l6ZXMgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgMTcsIDE3LCAxNywgMTcsICAgMTcsIDE3LCAxNywgMTcsXG4gICAgICAgICAgICAxNywgMTcsIDE2LCAxNiwgICAxNSwgMTQsIDEzLCAxMyxcbiAgICAgICAgICAgIDEyLCAxMSwgMTAsICA5LCAgICA4LCAgNywgIDcsICA2LFxuICAgICAgICAgICAgNSAsICA0LCAgMywgIDIsICAgIDEsICAxLCAgMSwgIDFcbiAgICAgICAgXSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJuXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2h1bmtTaXplXCIsIGMuaTMyX2xvYWQ4X3UoIGMuaTMyX2NseihjLmdldExvY2FsKFwiblwiKSksICBwVFNpemVzICkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5DaHVua3NcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2Rpdl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIC8vIEFsbG9jYXRlIG1lbW9yeVxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXRCaXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ2h1bmtzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAvLyBEb3VibGUgbkNodW5rIHRpbWVzXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZVwiLCBjLmdldExvY2FsKFwicHJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZuTmFtZSArIFwiX2NodW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCaXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSwgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZWR1Y2VUYWJsZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgYml0cyBvZiB0aGUgdGFibGVcbiAgICAgICAgZi5hZGRMb2NhbChcImhhbGZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQWNjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJoYWxmXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0MVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdDJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJoYWxmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQWNjXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQWNjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQWNjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0MVwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDJcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGZuTmFtZSArIFwiX3JlZHVjZVRhYmxlXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZVwiLCBjLmdldExvY2FsKFwicEFjY1wiKSwgYy5nZXRMb2NhbChcInBBY2NcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwicEFjY1wiKSwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEdldENodW5rKCk7XG4gICAgYnVpbGRSZWR1Y2VUYWJsZSgpO1xuICAgIGJ1aWxkTXV0aWV4cENodW5rKCk7XG4gICAgYnVpbGRNdWx0aWV4cCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSArXCJfY2h1bmtcIik7XG5cblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZFRpbWVzU2NhbGFyTkFGID0gYnVpbGRfdGltZXNzY2FsYXJuYWY7XG4vL2NvbnN0IGJ1aWxkVGltZXNTY2FsYXIgPSByZXF1aXJlKFwiLi9idWlsZF90aW1lc3NjYWxhclwiKTtcbmNvbnN0IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uID0gYnVpbGRfYmF0Y2hjb252ZXJ0aW9uO1xuY29uc3QgYnVpbGRNdWx0aWV4cCQxID0gYnVpbGRfbXVsdGlleHA7XG5cbnZhciBidWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMCA9IGZ1bmN0aW9uIGJ1aWxkQ3VydmUobW9kdWxlLCBwcmVmaXgsIHByZWZpeEZpZWxkLCBwQikge1xuXG5cbiAgICBjb25zdCBuNjQgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhGaWVsZF0ubjY0O1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0KjNcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCoyKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicGRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjY0KjM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGRcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5QWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCoyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9vbmVcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfemVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejEgPSBjLmdldExvY2FsKFwiejFcIik7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoyID0gYy5nZXRMb2NhbChcInoyXCIpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAyXCIpKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKHByZWZpeCArIFwiX2VxTWl4ZWRcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicDFcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInAyXCIpKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejEgPSBjLmdldExvY2FsKFwiejFcIik7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcUFmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoxLCBaMVoxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MiwgWjFaMSwgVTIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoxLCBaMVoxLCBaMV9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGREb3VibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0QyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6KSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHgsIEEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIEIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEIsIEMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeCwgQiwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRCwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgQSwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgQywgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRCwgRCwgRCksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBBLCBBLCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBFLCBBLCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBFLCBGKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIHosIEcpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRCwgRCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEYsIHgzLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBDLCBDLCBlaWdodEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0QywgZWlnaHRDLCBlaWdodEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0QywgZWlnaHRDLCBlaWdodEMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgRSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBlaWdodEMsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEcsIEcsIHozKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWFggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IE0gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgZWlnaHRZWVlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIC8vIFhYID0gWDFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHgsIFhYKSxcblxuICAgICAgICAgICAgLy8gWVkgPSBZMV4yXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeSwgWVkpLFxuXG4gICAgICAgICAgICAvLyBZWVlZID0gWVleMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIFlZLCBZWVlZKSxcblxuICAgICAgICAgICAgLy8gUyA9IDIqKChYMStZWSleMi1YWC1ZWVlZKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIFlZLCBTKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBTLCBTKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTLCBYWCwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWVlZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUywgUywgUyksXG5cbiAgICAgICAgICAgIC8vIE0gPSAzKlhYK2EgIChIZXJhIGE9MClcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBYWCwgWFgsIE0pLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIE0sIFhYLCBNKSxcblxuICAgICAgICAgICAgLy8gWjMgPSAyKlkxXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeSwgeSwgejMpLFxuXG4gICAgICAgICAgICAvLyBUID0gTV4yLTIqU1xuICAgICAgICAgICAgLy8gWDMgPSBUXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgTSwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFMsIHgzKSxcblxuICAgICAgICAgICAgLy8gWTMgPSBNKihTLVQpLTgqWVlZWVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFlZWVksIFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgZWlnaHRZWVlZLCBlaWdodFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgZWlnaHRZWVlZLCBlaWdodFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgTSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBlaWdodFlZWVksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXFBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDJcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9lcVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwzOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9Nb250Z29tZXJ5QWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGkqbjgpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChpKm44KSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9mcm9tTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9mcm9tTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMloyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MiwgeDEsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIHgxLCB4MiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoxLCBaMVoxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MiwgWjJaMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIFoyWjIsIFUxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MiwgWjFaMSwgVTIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoxLCBaMVoxLCBaMV9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejIsIFoyWjIsIFoyX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MSwgWjJfY3ViZWQsIFMxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBVMSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFMxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIFUxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgUzEsIFMyX21pbnVzX1MxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBTMl9taW51c19TMSwgUzJfbWludXNfUzEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFUxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFMxLCBKLCBTMV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzFfSjIsIFMxX0oyLCBTMV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIFMxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB6MSwgejIsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MywgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMVoxLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgejMsIFoyWjIsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MywgSCwgejMpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZE1peGVkKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZEFmZmluZVwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZUFmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBVMiwgeDEsIEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMyLCB5MSwgUzJfbWludXNfeTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEgsIEhIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBISCAsIEhILCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBJICwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfeTEsIFMyX21pbnVzX3kxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MSwgSiwgeTFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHkxX0oyLCB5MV9KMiwgeTFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCB5MV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIEgsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MywgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMVoxLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgejMsIEhILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZEFmZmluZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBISCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5Ml9taW51c195MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgciA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHkxX0oyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weUFmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpICwgYy5pMzJfY29uc3QobjgqMikpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCB5MiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MiwgeTEsIHkyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHkyX21pbnVzX3kxLCB5Ml9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEgsIEgsIHozKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeiwgejMpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZ0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgeSwgeTMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJNaXhlZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJNaXhlZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YkFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZEFmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIiksIEFVWCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHNldHMgWiB0byBPbmVcbiAgICBmdW5jdGlvbiBidWlsZE5vcm1hbGl6ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG5cbiAgICAgICAgY29uc3QgWl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFozX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9pbnZlcnNlXCIsIHosIFpfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIFpfaW52LCBaMl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgWl9pbnYsIFoyX2ludiwgWjNfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgsIFoyX2ludiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeSwgWjNfaW52LCB5MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gRG9lcyBub3Qgc2V0IFouXG4gICAgZnVuY3Rpb24gYnVpbGRUb0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHkzKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9KYWNvYmlhbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b0phY29iaWFuXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIHozKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB5LCB5MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQmF0Y2hUb0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQXV4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QXV4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBBdXhcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoYy5nZXRMb2NhbChcIm5cIiksIGMuaTMyX2NvbnN0KG44KSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9iYXRjaEludmVyc2VcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjMpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5nZXRMb2NhbChcInBBdXhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX3NxdWFyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KjMpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHByaXZhdGUgYW5kIGRvZXMgbm90IGFsbG93IHRvIE9WRVJMQVAgYnVmZmVycy5cbiAgICBmdW5jdGlvbiBidWlsZFJldmVyc2VCeXRlcygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0SW5cIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9sdF9zKCBjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpICkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9DKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDQwKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcCwgYy5pMzJfY29uc3QobjgpLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoLTEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRMRU10b1UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfTEVNdG9VXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicE91dFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHBUbXAgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFgsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgdG1wWSwgYy5pMzJfY29uc3QobjgpLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVXRvTEVNKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX1V0b0xFTVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwSW5cIikpLCBjLmkzMl9jb25zdCgweDQwKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCBjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KSksIGMuaTMyX2NvbnN0KG44KSwgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIsIHRtcCwgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3RvTEVNKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0N0b0xFTVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJmaXJzdEJ5dGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJncmVhdGVzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHBUbXAgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImZpcnN0Qnl0ZVwiLCBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwSW5cIikpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDQwKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiZ3JlYXRlc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlOCh0bXBZLCBjLmkzMl9hbmQoYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSwgYy5pMzJfY29uc3QoMHgzRikpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgdG1wWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIiwgdG1wWCwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIiksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZLCAgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgdG1wWSwgYy5pMzJfY29uc3QocEIpLCAgdG1wWSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxcnRcIiwgdG1wWSwgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgdG1wWCksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NpZ25cIiwgdG1wWSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHRtcFksIGMuaTMyX2FkZChjLmdldExvY2FsKFwicE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZ3JlYXRlc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHRtcFksIGMuaTMyX2FkZChjLmdldExvY2FsKFwicE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicEluXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeDNiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIHkyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCB4M2IpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgsIHgzYiwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4M2IsIGMuaTMyX2NvbnN0KHBCKSwgeDNiKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTIsIHgzYilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluQ3VydmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYXV4KSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIiwgYXV4KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRaZXJvQWZmaW5lKCk7XG4gICAgYnVpbGRaZXJvKCk7XG4gICAgYnVpbGRDb3B5QWZmaW5lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRUb0phY29iaWFuKCk7XG4gICAgYnVpbGRFcUFmZmluZSgpO1xuICAgIGJ1aWxkRXFNaXhlZCgpO1xuICAgIGJ1aWxkRXEoKTtcbiAgICBidWlsZERvdWJsZUFmZmluZSgpO1xuICAgIGJ1aWxkRG91YmxlKCk7XG4gICAgYnVpbGRBZGRBZmZpbmUoKTtcbiAgICBidWlsZEFkZE1peGVkKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZE5lZ0FmZmluZSgpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRTdWJBZmZpbmUoKTtcbiAgICBidWlsZFN1Yk1peGVkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5QWZmaW5lKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5QWZmaW5lKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvQWZmaW5lKCk7XG4gICAgYnVpbGRJbkN1cnZlQWZmaW5lKCk7XG4gICAgYnVpbGRJbkN1cnZlKCk7XG5cbiAgICBidWlsZEJhdGNoVG9BZmZpbmUoKTtcblxuICAgIGJ1aWxkTm9ybWFsaXplKCk7XG5cblxuICAgIGJ1aWxkUmV2ZXJzZUJ5dGVzKCk7XG5cbiAgICBidWlsZExFTXRvVSgpO1xuICAgIGJ1aWxkTEVNdG9DKCk7XG4gICAgYnVpbGRVdG9MRU0oKTtcbiAgICBidWlsZEN0b0xFTSgpO1xuXG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24obW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiLCBwcmVmaXggKyBcIl9MRU10b1VcIiwgbjgqMiwgbjgqMik7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24obW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvQ1wiLCBwcmVmaXggKyBcIl9MRU10b0NcIiwgbjgqMiwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgcHJlZml4ICsgXCJfVXRvTEVNXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIiwgcHJlZml4ICsgXCJfQ3RvTEVNXCIsIG44LCBuOCoyLCB0cnVlKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIsIHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgbjgqMiwgbjgqMywgdHJ1ZSk7XG5cbiAgICBidWlsZE11bHRpZXhwJDEobW9kdWxlLCBwcmVmaXgsIHByZWZpeCArIFwiX211bHRpZXhwXCIsIHByZWZpeCArIFwiX2FkZFwiLCBuOCozKTtcbiAgICBidWlsZE11bHRpZXhwJDEobW9kdWxlLCBwcmVmaXgsIHByZWZpeCArIFwiX211bHRpZXhwQWZmaW5lXCIsIHByZWZpeCArIFwiX2FkZE1peGVkXCIsIG44KjIpO1xuXG4gICAgLypcbiAgICBidWlsZFRpbWVzU2NhbGFyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyT2xkXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCIsXG4gICAgKTtcbiAgICAqL1xuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIixcbiAgICAgICAgbjgqMyxcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2RvdWJsZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCJcbiAgICApO1xuXG4gICAgYnVpbGRUaW1lc1NjYWxhck5BRihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiLFxuICAgICAgICBuOCoyLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weUFmZmluZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCJcbiAgICApO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcU1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YkFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25vcm1hbGl6ZVwiKTtcblxuICAgIC8vIENvbnZlcnRpb24gZnVuY3Rpb25zXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0N0b0xFTVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEN0b0xFTVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiKTtcblxuICAgIC8qXG4gICAgYnVpbGRHMU11bFNjYWxhcihtb2R1bGUsIHpxKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oXCJnMU11bFNjYWxhclwiKTtcbiAgICAqL1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgeyBpc09kZDogaXNPZGQkMiwgbW9kSW52OiBtb2RJbnYkMSwgbW9kUG93IH0gPSBiaWdpbnQ7XG5jb25zdCB1dGlscyQzID0gdXRpbHMkNjtcblxudmFyIGJ1aWxkX2ZmdCA9IGZ1bmN0aW9uIGJ1aWxkRkZUKG1vZHVsZSwgcHJlZml4LCBnUHJlZml4LCBmUHJlZml4LCBvcEd0aW1lc0YpIHtcblxuICAgIGNvbnN0IG42NGYgPSBtb2R1bGUubW9kdWxlc1tmUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhmID0gbjY0Zio4O1xuXG4gICAgY29uc3QgbjY0ZyA9IG1vZHVsZS5tb2R1bGVzW2dQcmVmaXhdLm42NDtcbiAgICBjb25zdCBuOGcgPSBuNjRnKjg7XG5cbiAgICBjb25zdCBxID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ucTtcblxuICAgIGxldCByZW0gPSBxIC0gMW47XG4gICAgbGV0IG1heEJpdHMgPSAwO1xuICAgIHdoaWxlICghaXNPZGQkMihyZW0pKSB7XG4gICAgICAgIG1heEJpdHMgKys7XG4gICAgICAgIHJlbSA9IHJlbSA+PiAxbjtcbiAgICB9XG5cbiAgICBsZXQgbnIgPSAybjtcblxuICAgIHdoaWxlICggbW9kUG93KG5yLCBxID4+IDFuLCBxKSA9PT0gMW4gKSBuciA9IG5yICsgMW47XG5cbiAgICAvLyBjb25zb2xlLmxvZyhucik7XG5cbiAgICBjb25zdCB3ID0gbmV3IEFycmF5KG1heEJpdHMrMSk7XG4gICAgd1ttYXhCaXRzXSA9IG1vZFBvdyhuciwgcmVtLCBxKTtcblxuICAgIGxldCBuPW1heEJpdHMtMTtcbiAgICB3aGlsZSAobj49MCkge1xuICAgICAgICB3W25dID0gbW9kUG93KHdbbisxXSwgMm4sIHEpO1xuICAgICAgICBuLS07XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXMgPSBbXTtcbiAgICBjb25zdCBSID0gKDFuIDw8IEJpZ0ludChuOGYqOCkpICUgcTtcblxuICAgIGZvciAobGV0IGk9MDsgaTx3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG0gPSB3W2ldICogUiAlIHE7XG4gICAgICAgIGJ5dGVzLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBST09UcyA9IG1vZHVsZS5hbGxvYyhieXRlcyk7XG5cbiAgICBjb25zdCBpMiA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIGkyWzBdID0gMW47XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBpMltpXSA9IGkyW2ktMV0gKiAybjtcbiAgICB9XG5cbiAgICBjb25zdCBieXRlc2kyID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gbW9kSW52JDEoaTJbaV0sIHEpICogUiAlIHE7XG4gICAgICAgIGJ5dGVzaTIucHVzaCguLi51dGlscyQzLmJpZ0ludDJCeXRlc0xFKG0sIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IElOVjIgPSBtb2R1bGUuYWxsb2MoYnl0ZXNpMik7XG5cbiAgICBjb25zdCBzaGlmdCA9IG1vZFBvdyhuciwgMm4sIHEpO1xuICAgIGNvbnN0IGJ5dGVzU2hpZnRUb1NtYWxsTSA9W107XG4gICAgY29uc3QgYnl0ZXNTQ29uc3QgPVtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw9bWF4Qml0czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNoaWZ0VG9TbWFsbE0gPSBtb2RQb3coc2hpZnQsIDJuICoqIEJpZ0ludChpKSwgcSk7XG4gICAgICAgIGNvbnN0IHNDb25zdCA9IG1vZEludiQxKHEgKyAxbiAtIHNoaWZ0VG9TbWFsbE0sIHEpO1xuICAgICAgICBieXRlc1NoaWZ0VG9TbWFsbE0ucHVzaCguLi51dGlscyQzLmJpZ0ludDJCeXRlc0xFKHNoaWZ0VG9TbWFsbE0gKiBSICUgcSwgbjhmKSk7XG4gICAgICAgIGJ5dGVzU0NvbnN0LnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzQ29uc3QgKiBSICUgcSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgU0hJRlRfVE9fTSA9IG1vZHVsZS5hbGxvYyggYnl0ZXNTaGlmdFRvU21hbGxNICApO1xuICAgIGNvbnN0IFNDT05TVCA9IG1vZHVsZS5hbGxvYyggYnl0ZXNTQ29uc3QgICk7XG5cbiAgICBmdW5jdGlvbiByZXYoeCkge1xuICAgICAgICBsZXQgcj0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoeCAmICgxIDw8IGkpKSB7XG4gICAgICAgICAgICAgICAgciA9IHIgfCAoMHg4MCA+PiBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBjb25zdCBydGFibGUgPSBBcnJheSgyNTYpO1xuICAgIGZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgICAgICBydGFibGVbaV0gPSByZXYoaSk7XG4gICAgfVxuXG4gICAgY29uc3QgUkVWVEFCTEUgPSBtb2R1bGUuYWxsb2MocnRhYmxlKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRMb2cyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbG9nMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJhdXhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYXV4XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJiaXRzXCIsIGMuaTMyX2NvbnN0KDApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiYXV4XCIpKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJiaXRzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuaTMyX25lKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMudW5yZWFjaGFibGUoKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuaTMyX2d0X3UoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobWF4Qml0cylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuZ2V0TG9jYWwoXCJiaXRzXCIpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT25lID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJiaXRzXCIsXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fbG9nMlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX29uZVwiLCBPbmUpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgT25lXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEludjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInBJbnYyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChJTlYyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4K1wiX3Jhd2ZmdFwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEludjJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSYXdGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3Jhd2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTsgLy8gMiBwb3dlclxuICAgICAgICBmLmFkZFBhcmFtKFwicmV2ZXJzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm11bEZhY3RvclwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImtcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1kaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB3bVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VQZXJtdXRhdGlvblwiLCBjLmdldExvY2FsKFwicHhcIiksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobChjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtXCIsIGMuaTMyX3NobChjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcInNcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHdtXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFJPT1RzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJrXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJrXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1kaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJtXCIpLCBjLmkzMl9jb25zdCgxKSkgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJrXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHdtXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJrXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwia1wiKSwgYy5nZXRMb2NhbChcIm1cIikpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJzXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19mZnRGaW5hbFwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsSW52ZXJzZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicmV2ZXJzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm11bEZhY3RvclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1hc2tcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwicmV2ZXJzZVwiKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtYXNrXCIsIGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm5cIikgLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5kaXYyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyZXZlcnNlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9pc09uZVwiLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MVwiKSwgVCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgVCAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZyAoSXQgc2hvdWxkIG5vdCBiZSBoZXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDFcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9pc09uZVwiLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiwgYy5nZXRMb2NhbChcInB4XCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFJldmVyc2VQZXJtdXRhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX3JldmVyc2VQZXJtdXRhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicmlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5cIiwgYy5pMzJfc2hsKCBjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInJpXCIsIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2XCIsIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJpXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MVwiKSwgVCksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgVCAsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfcm90bChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgyNClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgyNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZUSm9pbkV4dCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmaXJzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImluY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRvdGFsQml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTaGlmdFRvTVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTaGlmdFRvTVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgV1xuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHRJbnYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmaXJzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImluY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRvdGFsQml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTaGlmdFRvTVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTQ29uc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTQ29uc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNDT05TVCksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgV1xuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVE1peCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0TWl4XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZXhwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkdyb3Vwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5QZXJHcm91cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5QZXJHcm91cERpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwYWlyT2Zmc2V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB3bVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5QZXJHcm91cFwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibkdyb3Vwc1wiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5nZXRMb2NhbChcImV4cFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBhaXJPZmZzZXRcIiwgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHdtXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJleHBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuR3JvdXBzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX29uZVwiLCBXKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5QZXJHcm91cERpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFpck9mZnNldFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHdtXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBSZXZlcnNlIGFsbCBhbmQgbXVsdGlwbHkgYnkgZmFjdG9yXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRGaW5hbCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0RmluYWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZGl2MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5kaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmFjdG9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmFjdG9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkUmV2KCk7XG4gICAgYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKTtcbiAgICBidWlsZEZpbmFsSW52ZXJzZSgpO1xuICAgIGJ1aWxkUmF3RkZUKCk7XG4gICAgYnVpbGRMb2cyKCk7XG4gICAgYnVpbGRGRlQoKTtcbiAgICBidWlsZElGRlQoKTtcbiAgICBidWlsZEZGVEpvaW4oKTtcbiAgICBidWlsZEZGVEpvaW5FeHQoKTtcbiAgICBidWlsZEZGVEpvaW5FeHRJbnYoKTtcbiAgICBidWlsZEZGVE1peCgpO1xuICAgIGJ1aWxkRkZURmluYWwoKTtcbiAgICBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaWZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3Jhd2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dEludlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiKTtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfcG9sID0gZnVuY3Rpb24gYnVpbGRQb2wobW9kdWxlLCBwcmVmaXgsIHByZWZpeEZpZWxkKSB7XG5cbiAgICBjb25zdCBuNjQgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhGaWVsZF0ubjY0O1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdHBcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RwXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvbnN0cnVjdExDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb25zdHJ1Y3RMQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwb2x5bm9taWFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBzaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblNpZ25hbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcmVzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwcFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuY29lZnNcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHBcIiwgYy5nZXRMb2NhbChcInBwb2x5bm9taWFsc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5nZXRMb2NhbChcInBzaWduYWxzXCIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblNpZ25hbHNcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibmNvZWZzXCIsIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcInBwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5jb2Vmc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInBkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByZXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcFwiKSwgYy5pMzJfY29uc3QoNCkpKSxcblxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwc1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBzXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29uc3RydWN0TEMoKTtcblxuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvbnN0cnVjdExDXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcblxuXG5cblxufTtcblxudmFyIGJ1aWxkX3FhcCA9IGZ1bmN0aW9uIGJ1aWxkUUFQKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEJ1aWxkQUJDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9idWlsZEFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5Db2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwib2Zmc2V0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibk91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldFdpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIFNldCBvdXRwdXQgYSBhbmQgYiB0byAwXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibk91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiaXRiXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRhXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRiXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDb2Vmc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBDb2Vmc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5Db2Vmc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KzEyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA4KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5XaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJtXCIpLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBPdXRcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIiksIDQpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJyKDEpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwicE91dFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJzXCIpLCBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdCgxMikpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBBXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmdldExvY2FsKFwicENcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRKb2luQUJDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9qb2luQUJDXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBBXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5nZXRMb2NhbChcInBQXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYXV4LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRwXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Y1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0Y1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0cFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0cFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEFkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicGJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdGFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdGJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicGFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicGJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwYVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdHJcIiksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRhXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRiXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRyXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkQnVpbGRBQkMoKTtcbiAgICBidWlsZEpvaW5BQkMoKTtcbiAgICBidWlsZEJhdGNoQWRkKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYnVpbGRBQkNcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2pvaW5BQkNcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoQWRkXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfYXBwbHlrZXkgPSBmdW5jdGlvbiBidWlsZEFwcGx5S2V5KG1vZHVsZSwgZm5OYW1lLCBnUHJlZml4LCBmclByZWZpeCwgc2l6ZUdJbiwgc2l6ZUdPdXQsIHNpemVGLCBvcEd0aW1lc0YpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwRmlyc3RcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbmNcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBPbGRGcmVlXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwRnJvbVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicFRvXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IHQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2Moc2l6ZUYpKTtcblxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcInBGcm9tXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICBjLnNldExvY2FsKFwicFRvXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICApO1xuXG4gICAgLy8gdCA9IGZpcnN0XG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICBmclByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRmlyc3RcIiksXG4gICAgICAgICAgICB0XG4gICAgICAgIClcbiAgICApO1xuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBGcm9tXCIpLFxuICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUb1wiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBGcm9tXCIpLCBjLmkzMl9jb25zdChzaXplR0luKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBUb1wiKSwgYy5pMzJfY29uc3Qoc2l6ZUdPdXQpKSksXG5cbiAgICAgICAgICAgIC8vIHQgPSB0KiBpbmNcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmclByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbmNcIiksXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG5cbn07XG5cbmNvbnN0IHV0aWxzJDIgPSB1dGlscyQ2O1xuXG5jb25zdCBidWlsZEYxbSQxID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxJDEgPWJ1aWxkX2YxO1xuY29uc3QgYnVpbGRGMm0kMSA9YnVpbGRfZjJtO1xuY29uc3QgYnVpbGRGM20kMSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSQxID1idWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMDtcbmNvbnN0IGJ1aWxkRkZUJDIgPSBidWlsZF9mZnQ7XG5jb25zdCBidWlsZFBvbCQxID0gYnVpbGRfcG9sO1xuY29uc3QgYnVpbGRRQVAkMSA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkkMSA9IGJ1aWxkX2FwcGx5a2V5O1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQyLCBtb2RJbnYsIGlzT2RkOiBpc09kZCQxLCBpc05lZ2F0aXZlOiBpc05lZ2F0aXZlJDIgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2JuMTI4ID0gZnVuY3Rpb24gYnVpbGRCTjEyOChtb2R1bGUsIF9wcmVmaXgpIHtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJibjEyOFwiO1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IHEgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M247XG4gICAgY29uc3QgciA9IDIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3bjtcblxuXG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDIocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuICAgIGNvbnN0IGZyc2l6ZSA9IG44O1xuICAgIGNvbnN0IGYxc2l6ZSA9IG44O1xuICAgIGNvbnN0IGYyc2l6ZSA9IGYxc2l6ZSAqIDI7XG4gICAgY29uc3QgZnRzaXplID0gZjFzaXplICogMTI7XG5cbiAgICBjb25zdCBwciA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCByLCBmcnNpemUgKSk7XG5cbiAgICBjb25zdCBmMW1QcmVmaXggPSBidWlsZEYxbSQxKG1vZHVsZSwgcSwgXCJmMW1cIik7XG4gICAgYnVpbGRGMSQxKG1vZHVsZSwgciwgXCJmclwiLCBcImZybVwiKTtcblxuICAgIGNvbnN0IHBHMWIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDNuKSwgZjFzaXplICkpO1xuICAgIGNvbnN0IGcxbVByZWZpeCA9IGJ1aWxkQ3VydmUkMShtb2R1bGUsIFwiZzFtXCIsIFwiZjFtXCIsIHBHMWIpO1xuXG4gICAgYnVpbGRGRlQkMihtb2R1bGUsIFwiZnJtXCIsIFwiZnJtXCIsIFwiZnJtXCIsIFwiZnJtX211bFwiKTtcblxuICAgIGJ1aWxkUG9sJDEobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUCQxKG1vZHVsZSwgXCJxYXBcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBmMm1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgXCJmMW1fbmVnXCIsIFwiZjJtXCIsIFwiZjFtXCIpO1xuICAgIGNvbnN0IHBHMmIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplIClcbiAgICBdKTtcbiAgICBjb25zdCBnMm1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXCJmcm1fZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBGclwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcE11bCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEdcIiksXG4gICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZm5OYW1lKTtcbiAgICB9XG4gICAgYnVpbGRHVGltZXNGcihcImcxbV90aW1lc0ZyXCIsIFwiZzFtX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImcxbVwiLCBcImcxbVwiLCBcImZybVwiLCBcImcxbV90aW1lc0ZyXCIpO1xuXG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyXCIsIFwiZzJtX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImcybVwiLCBcImcybVwiLCBcImZybVwiLCBcImcybV90aW1lc0ZyXCIpO1xuXG4gICAgYnVpbGRHVGltZXNGcihcImcxbV90aW1lc0ZyQWZmaW5lXCIsIFwiZzFtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGckFmZmluZVwiLCBcImcybV90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjgsIG44LCBuOCwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjgqMywgbjgqMywgbjgsIFwiZzFtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleSQxKG1vZHVsZSwgXCJnMW1fYmF0Y2hBcHBseUtleU1peGVkXCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjIsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyQWZmaW5lXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMiozLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcybVwiLCBcImZybVwiLCBuOCoyKjIsIG44KjMqMiwgbjgsIFwiZzJtX3RpbWVzRnJBZmZpbmVcIik7XG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKCAxbiA8PCBCaWdJbnQoZjFzaXplKjgpKSAlIHE7XG4gICAgfVxuXG4gICAgY29uc3QgRzFnZW4gPSBbXG4gICAgICAgIDFuLFxuICAgICAgICAybixcbiAgICAgICAgMW5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxZ2VuID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzJdKSwgZjFzaXplICksXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzF6ZXJvID0gW1xuICAgICAgICAwbixcbiAgICAgICAgMW4sXG4gICAgICAgIDBuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMXplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMl0pLCBmMXNpemUgKVxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyZ2VuID0gW1xuICAgICAgICBbXG4gICAgICAgICAgICAxMDg1NzA0Njk5OTAyMzA1NzEzNTk0NDU3MDc2MjIzMjgyOTQ4MTM3MDc1NjM1OTU3ODUxODA4Njk5MDUxOTk5MzI4NTY1NTg1Mjc4MW4sXG4gICAgICAgICAgICAxMTU1OTczMjAzMjk4NjM4NzEwNzk5MTAwNDAyMTM5MjI4NTc4MzkyNTgxMjg2MTgyMTE5MjUzMDkxNzQwMzE1MTQ1MjM5MTgwNTYzNG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgODQ5NTY1MzkyMzEyMzQzMTQxNzYwNDk3MzI0NzQ4OTI3MjQzODQxODE5MDU4NzI2MzYwMDE0ODc3MDI4MDY0OTMwNjk1ODEwMTkzMG4sXG4gICAgICAgICAgICA0MDgyMzY3ODc1ODYzNDMzNjgxMzMyMjAzNDAzMTQ1NDM1NTY4MzE2ODUxMzI3NTkzNDAxMjA4MTA1NzQxMDc2MjE0MTIwMDkzNTMxbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMmdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzFdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsyXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyemVybyA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMG4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF1cbiAgICBdO1xuXG4gICAgY29uc3QgcEcyemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IHBPbmVUID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBOb25SZXNpZHVlRjYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoOSksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMSksIGYxc2l6ZSApLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcFR3b0ludiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSggIG1vZEludigybiwgcSkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggMG4sIGYxc2l6ZSApXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQWx0Qm4xMjhUd2lzdCA9IHBOb25SZXNpZHVlRjY7XG5cbiAgICBjb25zdCBwVHdpc3RDb2VmQiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxOTQ4NTg3NDc1MTc1OTM1NDc3MTAyNDIzOTI2MTAyMTcyMDUwNTc5MDYxODQ2OTMwMTcyMTA2NTU2NDYzMTI5NjQ1MjQ1NzQ3ODM3M24pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDI2NjkyOTc5MTExOTk5MTE2MTI0NjkwNzM4NzEzNzI4Mzg0MjU0NTA3Njk2NTMzMjkwMDI4ODU2OTM3ODUxMDkxMDMwNzYzNjY5MG4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SNigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SNigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20kMShtb2R1bGUsIHByZWZpeCtcIl9tdWxOUjZcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjEyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX211bE5SMTJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCo0KSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCo0KSksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMTIoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlIxMlwiLCBcImZ0bVwiLCBmNm1QcmVmaXgpO1xuXG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAyOTc5Mzk2ODIwMzE1NzA5MzI4OG47XG4gICAgY29uc3QgYXRlTG9vcEJpdEJ5dGVzID0gYml0cyhhdGVMb29wQ291bnQpO1xuICAgIGNvbnN0IHBBdGVMb29wQml0Qnl0ZXMgPSBtb2R1bGUuYWxsb2MoYXRlTG9vcEJpdEJ5dGVzKTtcblxuICAgIGNvbnN0IGF0ZUNvZWZTaXplID0gMyAqIGYyc2l6ZTtcbiAgICBjb25zdCBhdGVORGJsQ29lZnMgPSBhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTE7XG4gICAgY29uc3QgYXRlTkFkZENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLnJlZHVjZSgoYWNjLCBiKSA9PiAgYWNjICsgKCBiIT0wID8gMSA6IDApICAgLDApO1xuICAgIGNvbnN0IGF0ZU5Db2VmcyA9IGF0ZU5BZGRDb2VmcyArIGF0ZU5EYmxDb2VmcyArIDE7XG4gICAgY29uc3QgcHJlUFNpemUgPSAzKjIqbjg7XG4gICAgY29uc3QgcHJlUVNpemUgPSAzKm44KjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG5cblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0LFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplLFxuICAgICAgICByOiByLnRvU3RyaW5nKCksXG4gICAgICAgIHE6IHEudG9TdHJpbmcoKVxuICAgIH07XG5cbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVBTaXplOiBcIiArcHJlUFNpemUpO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiUHJlUVNpemU6IFwiICtwcmVRU2l6ZSk7XG5cbiAgICBjb25zdCBmaW5hbEV4cFogPSA0OTY1NjYxMzY3MTkyODQ4ODgxbjtcblxuICAgIGZ1bmN0aW9uIG5hZihuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkJDEoRSkpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMSApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5nZXRMb2NhbChcInBwcmVQXCIpKSwgIC8vIFRPRE8gUmVtb3ZlIGlmIGFscmVhZHkgaW4gYWZmaW5lXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwQWRkU3RlcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBBZGRTdGVwXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2VmXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWDIgID0gYy5nZXRMb2NhbChcInBRXCIpO1xuICAgICAgICBjb25zdCBZMiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBRXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEQgPSBFTExfVlc7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBEID0gWDEgLSBYMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMiwgWjEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBYMSwgRCwgRCksXG5cbiAgICAgICAgICAgIC8vIEUgPSBZMSAtIFkyKloxXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFkyLCBaMSwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFkxLCBFLCBFKSxcblxuICAgICAgICAgICAgLy8gRiA9IEReMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBELCBGKSxcblxuICAgICAgICAgICAgLy8gRyA9IEVeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBFLCBHKSxcblxuICAgICAgICAgICAgLy8gSCA9IEQqRlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBGLCBIKSxcblxuICAgICAgICAgICAgLy8gSSA9IFgxICogRlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMSwgRiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBIICsgWjEqRyAtIChJK0kpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEksIEksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBHLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgSCwgSiwgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEosIEFVWCwgSiksXG5cblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEQqSlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBKLCBYMSksXG5cbiAgICAgICAgICAgIC8vIFkzIChZMSkgPSBFKihJLUopLShIKlkxKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBILCBZMSwgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBJLCBKLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEFVWCwgWTEsIFkxKSxcblxuICAgICAgICAgICAgLy8gWjMgKFoxKSA9IFoxKkhcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWjEsIEgsIFoxKSxcblxuICAgICAgICAgICAgLy8gZWxsXzAgPSB4aSAqIChFICogWDIgLSBEICogWTIpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEQsIFkyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFLCBYMiwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBFTExfMCwgQVVYLCBFTExfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEVMTF8wLCBjLmkzMl9jb25zdChwQWx0Qm4xMjhUd2lzdCksIEVMTF8wKSxcblxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAtIEUgKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBFLCBFTExfVlYpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSBEIChsYXRlcjogKiB5UCAgICApXG4gICAgICAgICAgICAvLyBBbHJlYWR5IGFzc2lnbmVkXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwRG91YmxlU3RlcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBEYmxTdGVwXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgxICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgWTEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFoxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEEgPSBYMSAqIFkxIC8gMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMSwgYy5pMzJfY29uc3QocFR3b0ludiksIEEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMSwgQSwgQSksXG5cbiAgICAgICAgICAgIC8vIEIgPSBZMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFkxLCBCKSxcblxuICAgICAgICAgICAgLy8gQyA9IFoxXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgWjEsIEMpLFxuXG4gICAgICAgICAgICAvLyBEID0gMyAqIENcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQywgQywgRCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQsIEMsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gdHdpc3RfYiAqIERcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocFR3aXN0Q29lZkIpLCBELCBFKSxcblxuICAgICAgICAgICAgLy8gRiA9IDMgKiBFXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUsIEUsIEYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBGLCBGKSxcblxuICAgICAgICAgICAgLy8gRyA9IChCK0YpLzJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgRiwgRyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEcsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBHKSxcblxuICAgICAgICAgICAgLy8gSCA9IChZMStaMSleMi0oQitDKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBCLCBDLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBZMSwgWjEsIEgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBILCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSCwgQVVYLCBIKSxcblxuICAgICAgICAgICAgLy8gSSA9IEUtQlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBFLCBCLCBJKSxcblxuICAgICAgICAgICAgLy8gSiA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgWDEsIEopLFxuXG4gICAgICAgICAgICAvLyBFX3NxdWFyZWQgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRTIpLFxuXG4gICAgICAgICAgICAvLyBYMyAoWDEpID0gQSAqIChCLUYpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEIsIEYsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEEsIEFVWCwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gR14yIC0gMypFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEUyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFMiwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBHLCBZMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFkxLCBBVVgsIFkxKSxcblxuICAgICAgICAgICAgLy8gWjMgKFoxKSA9IEIgKiBIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEIsIEgsIFoxKSxcblxuICAgICAgICAgICAgLy8gZWxsXzAgPSB4aSAqIElcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBJLCBFTExfMCksXG5cbiAgICAgICAgICAgIC8vIGVsbF9WVyA9IC0gSCAobGF0ZXI6ICogeVApXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIEgsIEVMTF9WVyksXG5cbiAgICAgICAgICAgIC8vIGVsbF9WViA9IDMqSiAobGF0ZXI6ICogeFApXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEosIEosIEVMTF9WViksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEosIEVMTF9WViwgRUxMX1ZWKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsQnlRKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX211bEJ5UVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMikpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjE1NzU0NjM2MzgyODA4NDMwMTAzOTgzMjQyNjk0MzA4MjYwOTkyNjkwNDQyNzQzNDcyMTY4MjcyMTI2MTM4Njc4MzY0MzUwMjcyNjFcIiksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMTAzMDc2MDE1OTU4NzM3MDk3MDAxNTIyODQyNzM4MTYxMTIyNjQwNjkyMzAxMzA2MTY0MzY3NTU2MjUxOTQ4NTQ4MTU4NzU3MTM5NTRcIiksIGYxc2l6ZSApLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgTXVsQnlRWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIyODIxNTY1MTgyMTk0NTM2ODQ0NTQ4MTU5NTYxNjkzNTAyNjU5MzU5NjE3MTg1MjQ0MTIwMzY3MDc4MDc5NTU0MTg2NDg0MTI2NTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjM1MDU4NDM3Njc5MTE1NTYzNzg2ODcwMzAzMDk5ODQyNDg4NDU1NDAyNDM1MDk4OTkyNTk2NDEwMTM2NzgwOTMwMzMxMzA5MzA0MDNcIiksIGYxc2l6ZSApLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gVGhlIGZyb2Jlbml1c01hcCgxKSBpbiB0aGlzIGZpZWxkLCBpcyB0aGUgY29uanVnYXRlXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWCwgeDMsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBNdWxCeVFZLCB5MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB6LCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgYnVpbGRNdWxCeVEoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBRWCA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcblxuICAgICAgICBjb25zdCBwUiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChwUik7XG4gICAgICAgIGNvbnN0IFJYID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWSA9IGMuaTMyX2NvbnN0KHBSK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IFJaID0gYy5pMzJfY29uc3QocFIrMipmMnNpemUpO1xuXG4gICAgICAgIGNvbnN0IGNRWCA9IGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdCgwKSk7XG4gICAgICAgIGNvbnN0IGNRWSA9IGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBwUTEgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBRMSA9IGMuaTMyX2NvbnN0KHBRMSk7XG5cbiAgICAgICAgY29uc3QgcFEyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTIgPSBjLmkzMl9jb25zdChwUTIpO1xuICAgICAgICBjb25zdCBRMlkgPSBjLmkzMl9jb25zdChwUTIgKyBmMnNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9ub3JtYWxpemVcIiwgUVgsIGNRWCksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FYLCBSWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCBjUVksIFJZKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9vbmVcIiwgUlopLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBjUVgsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bEJ5UVwiLCBjUVgsIFExKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgUTEsIFEyKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgUTJZLCBRMlkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTEsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBRMiwgUiwgYy5nZXRMb2NhbChcInBDb2VmXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0T2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0T2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuXG4gICAgICAgIGNvbnN0IHBBVVgxMiA9IG1vZHVsZS5hbGxvYyhmdHNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMiA9IGMuaTMyX2NvbnN0KHBBVVgxMik7XG4gICAgICAgIGNvbnN0IEFVWDEyXzAgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8yID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzQgPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjIpO1xuICAgICAgICBjb25zdCBBVVgxMl82ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgQVVYMTJfOCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNCk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzEwID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSo1KTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgwLCBBVVgxMl8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDIsIEFVWDEyXzQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfNiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4NCwgQVVYMTJfOCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8xMCksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEFVWDEyLCB6MCwgejApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsQnkwMjQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fbXVsQnkwMjRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsMFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGxWV1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGxWVlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAgICAgICAgIC8vIFJlc3VsdCBpbiBGMTJcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwICA9IGMuZ2V0TG9jYWwoXCJwRWxsMFwiKTtcbiAgICAgICAgY29uc3QgeDIgID0gYy5nZXRMb2NhbChcInBFbGxWVlwiKTtcbiAgICAgICAgY29uc3QgeDQgID0gYy5nZXRMb2NhbChcInBFbGxWV1wiKTtcblxuICAgICAgICBjb25zdCB6MCAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHoxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDIqbjgpKTtcbiAgICAgICAgY29uc3QgejIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNCpuOCkpO1xuICAgICAgICBjb25zdCB6MyAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg2Km44KSk7XG4gICAgICAgIGNvbnN0IHo0ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDgqbjgpKTtcbiAgICAgICAgY29uc3QgejUgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMTAqbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBzMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgVDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBEMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gRDAgPSB6MCAqIHgwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MCwgeDAsIEQwKSxcbiAgICAgICAgICAgIC8vIEQyID0gejIgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejIsIHgyLCBEMiksXG4gICAgICAgICAgICAvLyBENCA9IHo0ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo0LCB4NCwgRDQpLFxuICAgICAgICAgICAgLy8gdDIgPSB6MCArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MCwgejQsIHQyKSxcbiAgICAgICAgICAgIC8vIHQxID0gejAgKyB6MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHoyLCB0MSksXG4gICAgICAgICAgICAvLyBzMCA9IHoxICsgejMgKyB6NTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejEsIHozLCBzMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCB6NSwgczApLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmFfLmFfID0gejAuXG4gICAgICAgICAgICAvLyBTMSA9IHoxICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MiwgUzEpLFxuICAgICAgICAgICAgLy8gVDMgPSBTMSArIEQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgRDQsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzICsgRDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgRDAsIHowKSxcbiAgICAgICAgICAgIC8vIHowID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmFfLmJfID0gejFcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHg0LCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDMgPSBUMyArIEQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUMywgRDIsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejEgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejEsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHoxKSxcbiAgICAgICAgICAgIC8vIHoxID0gVDQ7XG5cblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5jXyA9IHoyXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSB0MSAqIHQwIC0gRDAgLSBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQwLCBEMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSB6MyAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MywgeDQsIFQ0KSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQ0LCBTMSksXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYl8uYV8gPSB6MyAoejMgbmVlZHMgejIpXG4gICAgICAgICAgICAvLyB0MCA9IHoyICsgejQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoyLCB6NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSBUMyArIFQ0O1xuICAgICAgICAgICAgLy8gejIgPSBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIFQ0LCB6MiksXG4gICAgICAgICAgICAvLyB0MSA9IHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB4NCwgdDEpLFxuICAgICAgICAgICAgLy8gVDMgPSB0MCAqIHQxIC0gRDIgLSBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQyLCBENCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gVDMgPSB6MyAqIHgwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MywgeDAsIFQzKSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQzLCBTMSksXG4gICAgICAgICAgICAvLyBUNCA9IFQ0ICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQ0LCBUMywgejMpLFxuICAgICAgICAgICAgLy8gejMgPSBUNDtcblxuICAgICAgICAgICAgLy8gRm9yIHouYl8uYl8gPSB6NFxuICAgICAgICAgICAgLy8gVDMgPSB6NSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NSwgeDIsIFQzKSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQzLCBTMSksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSB0MiAqIHQwIC0gRDAgLSBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDIsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQwLCBENCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHo0KSxcbiAgICAgICAgICAgIC8vIHo0ID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmNfID0gejUuXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDIgKyB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgyLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB4NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSBzMCAqIHQwIC0gUzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHMwLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBUMywgUzEsIHo1KSxcbiAgICAgICAgICAgIC8vIHo1ID0gVDM7XG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTWlsbGVyTG9vcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX21pbGxlckxvb3BcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHByZVBfUFggPSBjLmdldExvY2FsKFwicHByZVBcIik7XG4gICAgICAgIGNvbnN0IHByZVBfUFkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVQXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuXG4gICAgICAgIGNvbnN0IHBWVyA9IG1vZHVsZS5hbGxvYyhmMnNpemUpO1xuICAgICAgICBjb25zdCBWVyA9IGMuaTMyX2NvbnN0KHBWVyk7XG4gICAgICAgIGNvbnN0IHBWViA9IG1vZHVsZS5hbGxvYyhmMnNpemUpO1xuICAgICAgICBjb25zdCBWViA9IGMuaTMyX2NvbnN0KHBWVik7XG5cbiAgICAgICAgY29uc3QgRiA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCBGKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX3NxdWFyZVwiLCBGLCBGKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVyxwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwQXRlTG9vcEJpdEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZXLCBwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlYsIHByZVBfUFgsIFZWKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZXLCBwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlYsIHByZVBfUFgsIFZWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvYmVuaXVzTWFwKG4pIHtcbiAgICAgICAgY29uc3QgRjEyID0gW1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbODM3NjExODg2NTc2MzgyMTQ5NjU4Mzk3Mzg2NzYyNjM2NDA5MjU4OTkwNjA2NTg2ODI5ODc3NjkwOTYxNzkxNjAxODc2ODM0MDA4MG4sIDE2NDY5ODIzMzIzMDc3ODA4MjIzODg5MTM3MjQxMTc2NTM2Nzk5MDA5Mjg2NjQ2MTA4MTY5OTM1NjU5MzAxNjEzOTYxNzEyMTk4MzE2bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMTY5NzQyMzQ5NjM1ODE1NDMwNDgyNTc4MjkyMjU4NDcyNTMxMjkxMjM4MzQ0MTE1OTUwNTAzODc5NDAyNzEwNTc3ODk1NDE4NDMxOW4sIDMwMzg0NzM4OTEzNTA2NTg4NzQyMjc4MzQ1NDg3NzYwOTk0MTQ1NjM0OTE4ODkxOTcxOTI3MjM0NTA4Mzk1NDQzNzg2MDQwOTYwMW5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzMyMTMwNDYzMDU5NDMzMjgwODI0MTgwOTA1NDk1ODM2MTIyMDMyMjQ3NzM3NTI5MTIwNjI2MTg4NDQwOTE4OTc2MDE4NTg0NDIzOW4sIDU3MjIyNjY5Mzc4OTY1MzI4ODU3ODAwNTE5NTg5NTgzNDgyMzExNDMzNzM3MDAxMDkzNzI5OTkzNzQ4MjAyMzUxMjEzNzQ0MTk4NjhuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODJuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzNTEyMTI0MDA2MDc1NDUzNzI1NjYyNDMxODc3NjMwOTEwOTk2MTA2NDA1MDkxNDI5NTI0ODg1Nzc5NDE5OTc4NjI2NDU3ODY4NTAzbiwgNTQxODQxOTU0ODc2MTQ2Njk5ODM1NzI2ODUwNDA4MDczODI4OTY4NzAyNDUxMTE4OTY1MzcyNzAyOTczNjI4MDY4MzUxNDAxMDI2N25dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDE5MDgxOTM3NTQ4MTEyMDkxNzQyMDYyMjgyMjY3MjU0OTc3NTc4MzkyNzcxNjEzODMxODYyMzg5NTAxMDc4ODg2NjI3MjAyNDI2NG4sIDIxNTg0Mzk1NDgyNzA0MjA5MzM0ODIzNjIyMjkwMzc5NjY1MTQ3MjM5OTYxOTY4Mzc4MTA0MzkwMzQzOTUzOTQwMjA3MzY1Nzk4OTgybl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzE4NTY2OTM4MjQxMjQ0OTQyNDE0MDA0NTk2NjkwMjk4OTEzODY4MzczODMzNzgyMDA2NjE3NDAwODA0NjI4NzA0ODg1MDQwMzY0MzQ0biwgMTYxNjU5NzU5MzM5NDI3NDIzMzY0NjYzNTM3ODYyOTg5MjY4NTc1NTI5Mzc0NTcxODg0NTA2NjMzMTQyMTc2NTk1MjM4NTE3ODg3MTVuXSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGNiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxbiwgMTAzMDc2MDE1OTU4NzM3MDk3MDAxNTIyODQyNzM4MTYxMTIyNjQwNjkyMzAxMzA2MTY0MzY3NTU2MjUxOTQ4NTQ4MTU4NzU3MTM5NTRuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM3NzIwMDA4ODE5MTk4NTM3NzY0MzM2OTUxODY3MTM4NTgyMzkwMDkwNzM1OTM4MTcxOTU3NzE3NzMzODE5MTkzMTY0MTkzNDUyNjFuLCAyMjM2NTk1NDk1OTY3MjQ1MTg4MjgxNzAxMjQ4MjAzMTgxNzk1MTIxMDY4OTAyNjA1ODYxMjI3ODU1MjYxMTM3ODIwOTQ0MDA4OTI2bl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzE4NDI5MDIxMjIzNDc3ODUzNjU3NjYwNzkyMDM0MzY5ODY1ODM5MTE0NTA0NDQ2NDMxMjM0NzI2MzkyMDgwMDAyMTM3NTk4MDQ0NjQ0biwgOTM0NDA0NTc3OTk5ODMyMDMzMzgxMjQyMDIyMzIzNzk4MTAyOTUwNjAxMjEyNDA3NTUyNTY3OTIwODU4MTkwMjAwODQwNjQ4NTcwM25dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMjU4MTkxMTM0NDQ2NzAwOTMzNTI2NzMxMTExNTQ2ODgwMzA5OTU1MTY2NTYwNTA3NjE5Njc0MDg2NzgwNTI1ODU2ODIzNDM0NjMzOG4sIDE5OTM3NzU2OTcxNzc1NjQ3OTg3OTk1OTMyMTY5OTI5MzQxOTk0MzE0NjQwNjUyOTY0OTQ5NDQ4MzEzMzc0NDcyNDAwNzE2NjYxMDMwbl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzUzMjQ0NzkyMDI0NDk5MDM1NDI3MjY3ODMzOTU1MDYyMTQ0ODE5MjgyNTc3NjI0MDA2NDMyNzk3ODAzNDMzNjg1NTcyOTcxMzU3MThuLCAxNjIwODkwMDM4MDczNzY5MzA4NDkxOTQ5NTEyNzMzNDM4Nzk4MTM5MzcyNjQxOTg1Njg4ODc5OTkxNzkxNDE4MDk4ODg0NDEyMzAzOW5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTM5ODE4NTIzMjQ5MjIzNjIzNDQyNTIzMTEyMzQyODIyNTc1MDcyMTYzODc3ODk4MjA5ODM2NDIwNDA4ODkyNjc1MTk2OTQ3MjY1MjduLCA3NjI5ODI4MzkxMTY1MjA5MzcxNTc3Mzg0MTkzMjUwODIwMjAxNjg0MjU1MjQxNzczODA5MDc3MTQ2Nzg3MTM1OTAwODkxNjMzMDk3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19mcm9iZW5pdXNNYXBcIituKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDY7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgWCA9IChpPT0wKSA/IGMuZ2V0TG9jYWwoXCJ4XCIpIDogYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgWGMwID0gWDtcbiAgICAgICAgICAgIGNvbnN0IFhjMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUgKyBmMXNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFIgPSAoaT09MCkgPyBjLmdldExvY2FsKFwiclwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFJjMCA9IFI7XG4gICAgICAgICAgICBjb25zdCBSYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gbXVsMihGMTJbTWF0aC5mbG9vcihpLzMpXVtuJTEyXSAsIEY2W2klM11bbiU2XSk7XG4gICAgICAgICAgICBjb25zdCBwQ29lZiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlswXSksIDMyKSxcbiAgICAgICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShjb2VmWzFdKSwgMzIpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gQmlnSW50KGFbMF0pO1xuICAgICAgICAgICAgY29uc3QgYWMxID0gQmlnSW50KGFbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmMwID0gQmlnSW50KGJbMF0pO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gQmlnSW50KGJbMV0pO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW1xuICAgICAgICAgICAgICAgIChhYzAgKiBiYzAgLSAoICBhYzEgKiBiYzEpICApICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKCAgYWMxICogYmMwKSAgKSAlIHEsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUkMihyZXNbMF0pKSByZXNbMF0gPSByZXNbMF0gKyBxO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmsoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19maW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGVsdEMwID0gZWx0O1xuICAgICAgICBjb25zdCBlbHRDMSA9IGMuaTMyX2FkZChlbHQsIGMuaTMyX2NvbnN0KG44KjYpKTtcbiAgICAgICAgY29uc3QgciA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBwQSA9IG1vZHVsZS5hbGxvYyhmdHNpemUpO1xuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QocEEpO1xuICAgICAgICBjb25zdCBBYzAgPSBBO1xuICAgICAgICBjb25zdCBBYzEgPSBjLmkzMl9jb25zdChwQSArIG44KjYpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEEgPSBhbHRfYm4xMjhfRnExMihlbHQuYzAsLWVsdC5jMSk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfY29weVwiLCBlbHRDMCwgQWMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9uZWdcIiwgZWx0QzEsIEFjMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEIgPSBlbHQuaW52ZXJzZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCBCKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgQyA9IEEgKiBCO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEQgPSBDLkZyb2Jlbml1c19tYXAoMik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcDJcIiwgQywgRCksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiByZXN1bHQgPSBEICogQztcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQywgRCwgciksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHg0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjQgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDMqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0KmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByNSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNSpmMnNpemUpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vICAgIC8vIHQwICsgdDEqeSA9ICh6MCArIHoxKnkpXjIgPSBhXjJcbiAgICAgICAgICAgIC8vICAgIHRtcCA9IHowICogejE7XG4gICAgICAgICAgICAvLyAgICB0MCA9ICh6MCArIHoxKSAqICh6MCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gICAgdDEgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDMsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDMsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBBVVgsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQzKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQ0ICsgdDUqeSA9ICh6NCArIHo1KnkpXjIgPSBjXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6NCAqIHo1O1xuICAgICAgICAgICAgLy8gIHQ0ID0gKHo0ICsgejUpICogKHo0ICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHo1KSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDUgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg0LCB4NSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDUsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCBBVVgsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQ1KSxcblxuICAgICAgICAgICAgLy8gRm9yIEFcbiAgICAgICAgICAgIC8vIHowID0gMyAqIHQwIC0gMiAqIHowXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMCwgcjAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHIwLCByMCksXG4gICAgICAgICAgICAvLyB6MSA9IDMgKiB0MSArIDIgKiB6MVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjEsIHIxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQlxuICAgICAgICAgICAgLy8gejIgPSAzICogKHhpICogdDUpICsgMiAqIHoyXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ1LCBjLmkzMl9jb25zdChwQWx0Qm4xMjhUd2lzdCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgeDIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgcjIsIHIyKSxcbiAgICAgICAgICAgIC8vIHozID0gMyAqIHQ0IC0gMiAqIHozXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCB4MywgcjMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMywgcjMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHIzLCByMyksXG5cbiAgICAgICAgICAgIC8vIEZvciBDXG4gICAgICAgICAgICAvLyB6NCA9IDMgKiB0MiAtIDIgKiB6NFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgeDQsIHI0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjQsIHI0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCByNCwgcjQpLFxuICAgICAgICAgICAgLy8gejUgPSAzICogdDMgKyAyICogejVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHg1LCByNSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI1LCByNSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgcjUsIHI1KSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljRXhwKGV4cG9uZW50LCBmbk5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb25lbnROYWZCeXRlcyA9IG5hZihleHBvbmVudCkubWFwKCAoYikgPT4gKGI9PS0xID8gMHhGRjogYikgKTtcbiAgICAgICAgY29uc3QgcEV4cG9uZW50TmFmQnl0ZXMgPSBtb2R1bGUuYWxsb2MoZXhwb25lbnROYWZCeXRlcyk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBcIncwXCIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBLID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBMID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBOID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBPID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBQID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBRID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBTID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuXG4gICAgICAgICAgICAvLyBBID0gZXhwX2J5X25lZ196KGVsdCkgIC8vID0gZWx0XigteilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBlbHQsIEEpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBBLCBBKSxcbiAgICAgICAgICAgIC8vIEIgPSBBXjIgICAgICAgICAgICAgICAgLy8gPSBlbHReKC0yKnopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgQSwgQiksXG4gICAgICAgICAgICAvLyBDID0gQl4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtNCp6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEIsIEMpLFxuICAgICAgICAgICAgLy8gRCA9IEMgKiBCICAgICAgICAgICAgICAvLyA9IGVsdF4oLTYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQywgQiwgRCksXG4gICAgICAgICAgICAvLyBFID0gZXhwX2J5X25lZ196KEQpICAgIC8vID0gZWx0Xig2KnpeMilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBELCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRSwgRSksXG4gICAgICAgICAgICAvLyBGID0gRV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigxMip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgRSwgRiksXG4gICAgICAgICAgICAvLyBHID0gZXB4X2J5X25lZ196KEYpICAgIC8vID0gZWx0XigtMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBHKSxcbiAgICAgICAgICAgIC8vIEggPSBjb25qKEQpICAgICAgICAgICAgLy8gPSBlbHReKDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRCwgSCksXG4gICAgICAgICAgICAvLyBJID0gY29uaihHKSAgICAgICAgICAgIC8vID0gZWx0XigxMip6XjMpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEcsIEkpLFxuICAgICAgICAgICAgLy8gSiA9IEkgKiBFICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEksIEUsIEopLFxuICAgICAgICAgICAgLy8gSyA9IEogKiBIICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEosIEgsIEspLFxuICAgICAgICAgICAgLy8gTCA9IEsgKiBCICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA0KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEssIEIsIEwpLFxuICAgICAgICAgICAgLy8gTSA9IEsgKiBFICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgMTIqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBFLCBNKSxcblxuICAgICAgICAgICAgLy8gTiA9IE0gKiBlbHQgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgMTIqel4yICsgNip6ICsgMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTSwgZWx0LCBOKSxcblxuICAgICAgICAgICAgLy8gTyA9IEwuRnJvYmVuaXVzX21hcCgxKSAvLyA9IGVsdF4ocSooMTIqel4zICsgNip6XjIgKyA0KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAxXCIsIEwsIE8pLFxuICAgICAgICAgICAgLy8gUCA9IE8gKiBOICAgICAgICAgICAgICAvLyA9IGVsdF4ocSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBPLCBOLCBQKSxcbiAgICAgICAgICAgIC8vIFEgPSBLLkZyb2Jlbml1c19tYXAoMikgLy8gPSBlbHReKHFeMiAqICgxMip6XjMgKyA2KnpeMiArIDYqeikpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcDJcIiwgSywgUSksXG4gICAgICAgICAgICAvLyBSID0gUSAqIFAgICAgICAgICAgICAgIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopICsgcSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBRLCBQLCBSKSxcbiAgICAgICAgICAgIC8vIFMgPSBjb25qKGVsdCkgICAgICAgICAgLy8gPSBlbHReKC0xKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBlbHQsIFMpLFxuICAgICAgICAgICAgLy8gVCA9IFMgKiBMICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA0KnogLSAxKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBTLCBMLCBUKSxcbiAgICAgICAgICAgIC8vIFUgPSBULkZyb2Jlbml1c19tYXAoMykgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAzXCIsIFQsIFUpLFxuICAgICAgICAgICAgLy8gViA9IFUgKiBSICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4zKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSkgKyBxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopICsgcSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBVLCBSLCByZXN1bHQpLFxuICAgICAgICAgICAgLy8gcmVzdWx0ID0gVlxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCkge1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCk7XG4gICAgICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVuaygpO1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBlbHRUb0ZpcnN0Q2h1bmsgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19maW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVua1wiLCBlbHQsIGVsdFRvRmlyc3RDaHVuayApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19maW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rXCIsIGVsdFRvRmlyc3RDaHVuaywgcmVzdWx0IClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDU1MjQ4NDIzMzYxMzIyNDA5NjMxMjYxNzEyNjc4MzE3MzE0NzA5NzM4MjEwMzc2Mjk1NzY1NDE4ODg4MjczNDMxNDE5NjkxMDgzOTkwNzU0MTIxMzk3NDUwMjc2MTU0MDYyOTgxNzAwOTYwODU0ODY1NDY4MDM0MzYyNzcwMTE1MzgyOTQ0Njc0NzgxMDkwNzM3MzI1Njg0MTU1MTAwNjIwMTYzOTY3NzcyNjEzOTk0NjAyOTE5OTk2ODQxMjU5ODgwNDg4MjM5MTcwMjI3MzAxOTA4MzY1MzI3MjA0NzU2NjMxNjU4NDM2NTU1OTc3NjQ5MzAyNzQ5NTQ1ODIzODM3MzkwMjg3NTkzNzY1OTk0MzUwNDg3MzIyMDU1NDE2MTU1MDUyNTkyNjMwMjMwMzMzMTc0NzQ2MzUxNTY0NDcxMTg3NjY1MzE3NzEyOTU3ODMwMzE5MTA5NTkwMDkwOTE5MTYyNDgxNzgyNjU2NjY4ODI0MTgwNDQwODA4MTg5Mjc4NTcyNTk2NzkzMTcxNDA5NzcxNjcwOTUyNjA5MjI2MTI3ODA3MTk1MjU2MDE3MTExMTQ0NDA3MjA0OTIyOTEyMzU2NTA1NzQ4Mzc1MDE2MTQ2MDAyNDM1MzM0NjI4NDE2NzI4MjQ1Mjc1NjIxNzY2MjMzNTUyODgxMzUxOTEzOTgwODI5MTE3MDUzOTA3MjEyNTM4MTIzMDgxNTcyOTA3MTU0NDg2MTYwMjc1MDkzNjk2NDgyOTMxMzYwODEzNzMyNTQyNjM4MzczNTEyMjE3NTIyOTU0MTE1NTM3NjM0NjQzNjA5MzkzMDI4NzQwMjA4OTUxNzQyNjk3MzE3ODkxNzU2OTcxMzM4NDc0ODA4MTgyNzI1NTQ3MjU3NjkzNzQ3MTQ5NjE5NTc1MjcyNzE4ODI2MTQzNTYzMzI3MTIzODcxMDEzMTczNjA5NjI5OTc5ODE2ODg1MjkyNTU0MDU0OTM0MjMzMDc3NTI3OTg3NzAwNjc4NDM1NDgwMTQyMjI0OTcyMjU3Mzc4MzU2MTY4NTE3OTYxODgxNjQ4MDAzNzY5NTAwNTUxNTQyNjE2MjM2MjQzMTA3MjI0NTYzODMyNDc0NDQ4MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCAzNTIgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCgzNTIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuXG4gICAgY29uc3QgcFByZVAgPSBtb2R1bGUuYWxsb2MocHJlUFNpemUpO1xuICAgIGNvbnN0IHBQcmVRID0gbW9kdWxlLmFsbG9jKHByZVFTaXplKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZ0VxdWF0aW9uKG5QYWlyaW5ncykge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wYWlyaW5nRXFcIituUGFpcmluZ3MpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJwX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInFfXCIraSwgXCJpMzJcIik7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRQYXJhbShcImNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcmVzVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgYXV4VCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXNUICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiLCBjLmdldExvY2FsKFwicF9cIitpKSwgYy5pMzJfY29uc3QocFByZVApICkpO1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgYXV4VCApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzVCwgYXV4VCwgcmVzVCApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiLCByZXNULCByZXNUICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXFcIiwgcmVzVCwgYy5nZXRMb2NhbChcImNcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZygpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFcIiksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9taWxsZXJMb29wXCIsIGMuaTMyX2NvbnN0KHBQcmVQKSwgYy5pMzJfY29uc3QocFByZVEpLCByZXNUICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgYy5nZXRMb2NhbChcInJcIikgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZFByZXBBZGRTdGVwKCk7XG4gICAgYnVpbGRQcmVwRG91YmxlU3RlcCgpO1xuXG4gICAgYnVpbGRQcmVwYXJlRzEoKTtcbiAgICBidWlsZFByZXBhcmVHMigpO1xuXG4gICAgYnVpbGRNdWxCeTAyNCgpO1xuICAgIGJ1aWxkTXVsQnkwMjRPbGQoKTtcbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwXCIraSk7XG4gICAgfVxuXG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCk7XG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCk7XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PTU7IGkrKykge1xuICAgICAgICBidWlsZFBhaXJpbmdFcXVhdGlvbihpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdFcVwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkUGFpcmluZygpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX211bEJ5MDI0T2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQxID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0gPWJ1aWxkX2YxbTtcbmNvbnN0IGJ1aWxkRjEgPWJ1aWxkX2YxO1xuY29uc3QgYnVpbGRGMm0gPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtID1idWlsZF9mM207XG5jb25zdCBidWlsZEN1cnZlID1idWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMDtcbmNvbnN0IGJ1aWxkRkZUJDEgPSBidWlsZF9mZnQ7XG5jb25zdCBidWlsZFBvbCA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQID0gYnVpbGRfcWFwO1xuY29uc3QgYnVpbGRBcHBseUtleSA9IGJ1aWxkX2FwcGx5a2V5O1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQxLCBpc09kZCwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQxIH0gPSBiaWdpbnQ7XG5cbi8vIERlZmluaXRpb24gaGVyZTogaHR0cHM6Ly9lbGVjdHJpY2NvaW4uY28vYmxvZy9uZXctc25hcmstY3VydmUvXG5cbnZhciBidWlsZF9ibHMxMjM4MSA9IGZ1bmN0aW9uIGJ1aWxkQkxTMTIzODEobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYmxzMTIzODFcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMHgxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhYWJuO1xuICAgIGNvbnN0IHIgPSAweDczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFuO1xuXG4gICAgY29uc3QgbjY0cSA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQxKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjhxID0gbjY0cSo4O1xuICAgIGNvbnN0IGYxc2l6ZSA9IG44cTtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgbjY0ciA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQxKHIgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjhyID0gbjY0cio4O1xuICAgIGNvbnN0IGZyc2l6ZSA9IG44cjtcblxuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0obW9kdWxlLCBxLCBcImYxbVwiLCBcImludHFcIik7XG4gICAgYnVpbGRGMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIiwgXCJpbnRyXCIpO1xuICAgIGNvbnN0IHBHMWIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDRuKSwgZjFzaXplICkpO1xuICAgIGNvbnN0IGcxbVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDEobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbChtb2R1bGUsIFwicG9sXCIsIFwiZnJtXCIpO1xuICAgIGJ1aWxkUUFQKG1vZHVsZSwgXCJxYXBcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBmMm1QcmVmaXggPSBidWlsZEYybShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDRuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZShtb2R1bGUsIFwiZzJtXCIsIFwiZjJtXCIsIHBHMmIpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEdUaW1lc0ZyKGZuTmFtZSwgb3BNdWwpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEdcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRnJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOHIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXCJmcm1fZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBGclwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcE11bCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEdcIiksXG4gICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ciksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5KG1vZHVsZSwgXCJmcm1fYmF0Y2hBcHBseUtleVwiLCBcImZtclwiLCBcImZybVwiLCBuOHIsIG44ciwgbjhyLCBcImZybV9tdWxcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjMsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOHEqMiwgbjhxKjMsIG44ciwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5KG1vZHVsZSwgXCJnMm1fYmF0Y2hBcHBseUtleVwiLCBcImcybVwiLCBcImZybVwiLCBuOHEqMiozLCBuOHEqMyoyLCBuOHIsIFwiZzJtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcybVwiLCBcImZybVwiLCBuOHEqMioyLCBuOHEqMyoyLCBuOHIsIFwiZzJtX3RpbWVzRnJBZmZpbmVcIik7XG5cblxuICAgIGZ1bmN0aW9uIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQoYSkgKiAoMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAzNjg1NDE2NzUzNzEzMzg3MDE2NzgxMDg4MzE1MTgzMDc3NzU3OTYxNjIwNzk1NzgyNTQ2NDA5ODk0NTc4Mzc4Njg4NjA3NTkyMzc4Mzc2MzE4ODM2MDU0OTQ3Njc2MzQ1ODIxNTQ4MTA0MTg1NDY0NTA3bixcbiAgICAgICAgMTMzOTUwNjU0NDk0NDQ3NjQ3MzAyMDQ3MTM3OTk0MTkyMTIyMTU4NDkzMzg3NTkzODM0OTYyMDQyNjU0MzczNjQxNjUxMTQyMzk1NjMzMzUwNjQ3MjcyNDY1NTM1MzM2NjUzNDk5MjM5MTc1NjQ0MTU2OW4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMzUyNzAxMDY5NTg3NDY2NjE4MTg3MTM5MTE2MDExMDYwMTQ0ODkwMDI5OTUyNzkyNzc1MjQwMjE5OTA4NjQ0MjM5NzkzNzg1NzM1NzE1MDI2ODczMzQ3NjAwMzQzODY1MTc1OTUyNzYxOTI2MzAzMTYwbixcbiAgICAgICAgICAgIDMwNTkxNDQzNDQyNDQyMTM3MDk5NzEyNTk4MTQ3NTM3ODE2MzY5ODY0NzAzMjU0NzY2NDc1NTg2NTkzNzMyMDYyOTE2MzUzMjQ3Njg5NTg0MzI0MzM1MDk1NjMxMDQzNDcwMTc4Mzc4ODU3NjMzNjU3NThuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDE5ODUxNTA2MDIyODcyOTE5MzU1NjgwNTQ1MjExNzcxNzE2MzgzMDA4Njg5NzgyMTU2NTU3MzA4NTkzNzg2NjUwNjYzNDQ3MjYzNzM4MjM3MTg0MjM4NjkxMDQyNjMzMzM5ODQ2NDE0OTQzNDAzNDc5MDVuLFxuICAgICAgICAgICAgOTI3NTUzNjY1NDkyMzMyNDU1NzQ3MjAxOTY1Nzc2MDM3ODgwNzU3NzQwMTkzNDUzNTkyOTcwMDI1MDI3OTc4NzkzOTc2ODc3MDAyNjc1NTY0OTgwOTQ5Mjg5NzI3OTU3NTY1NTc1NDMzMzQ0MjE5NTgybixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMmdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzFdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsyXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyemVybyA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMG4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF1cbiAgICBdO1xuXG4gICAgY29uc3QgcEcyemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IHBPbmVUID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBCbHMxMjM4MVR3aXN0ID0gIG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmMm1QcmVmaXggKyBcIl9tdWxOUlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHgwYyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeDEsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwYywgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRfbXVsTlIyKCk7XG5cbiAgICBjb25zdCBmNm1QcmVmaXggPSBidWlsZEYzbShtb2R1bGUsIGYybVByZWZpeCtcIl9tdWxOUlwiLCBcImY2bVwiLCBcImYybVwiKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SNigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWxOUlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGMwY29weSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYzBjb3B5XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bE5SXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOHEqMikpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSo0KSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjMGNvcHksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SNigpO1xuXG4gICAgY29uc3QgZnRtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBmNm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuICAgIGNvbnN0IGF0ZUxvb3BDb3VudCA9IDB4ZDIwMTAwMDAwMDAxMDAwMG47XG4gICAgY29uc3QgYXRlTG9vcEJpdEJ5dGVzID0gYml0cyhhdGVMb29wQ291bnQpO1xuICAgIGNvbnN0IHBBdGVMb29wQml0Qnl0ZXMgPSBtb2R1bGUuYWxsb2MoYXRlTG9vcEJpdEJ5dGVzKTtcblxuICAgIGNvbnN0IGF0ZUNvZWZTaXplID0gMyAqIGYyc2l6ZTtcbiAgICBjb25zdCBhdGVORGJsQ29lZnMgPSBhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTE7XG4gICAgY29uc3QgYXRlTkFkZENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLnJlZHVjZSgoYWNjLCBiKSA9PiAgYWNjICsgKCBiIT0wID8gMSA6IDApICAgLDApO1xuICAgIGNvbnN0IGF0ZU5Db2VmcyA9IGF0ZU5BZGRDb2VmcyArIGF0ZU5EYmxDb2VmcyArIDE7XG4gICAgY29uc3QgcHJlUFNpemUgPSAzKjIqbjhxO1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOHEqMiArIGF0ZU5Db2VmcyphdGVDb2VmU2l6ZTtcbiAgICBjb25zdCBmaW5hbEV4cElzTmVnYXRpdmUgPSB0cnVlO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gMTUxMzIzNzYyMjI5NDE2NDI3NTJuO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjRxOiBuNjRxLFxuICAgICAgICBuNjRyOiBuNjRyLFxuICAgICAgICBuOHE6IG44cSxcbiAgICAgICAgbjhyOiBuOHIsXG4gICAgICAgIHBHMWdlbjogcEcxZ2VuLFxuICAgICAgICBwRzF6ZXJvOiBwRzF6ZXJvLFxuICAgICAgICBwRzFiOiBwRzFiLFxuICAgICAgICBwRzJnZW46IHBHMmdlbixcbiAgICAgICAgcEcyemVybzogcEcyemVybyxcbiAgICAgICAgcEcyYjogcEcyYixcbiAgICAgICAgcHE6IG1vZHVsZS5tb2R1bGVzW1wiZjFtXCJdLnBxLFxuICAgICAgICBwcjogcHIsXG4gICAgICAgIHBPbmVUOiBwT25lVCxcbiAgICAgICAgcjogcixcbiAgICAgICAgcTogcSxcbiAgICAgICAgcHJlUFNpemU6IHByZVBTaXplLFxuICAgICAgICBwcmVRU2l6ZTogcHJlUVNpemVcbiAgICB9O1xuXG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQoRSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gMiAtIE51bWJlcihFICUgNG4pO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKCB6ICk7XG4gICAgICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBFID0gRSA+PiAxbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpdHMobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQoRSkpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMSApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5nZXRMb2NhbChcInBwcmVQXCIpKSwgIC8vIFRPRE8gUmVtb3ZlIGlmIGFscmVhZHkgaW4gYWZmaW5lXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIlJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUnggID0gYy5nZXRMb2NhbChcIlJcIik7XG4gICAgICAgIGNvbnN0IFJ5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgUnogID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHQwICA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCB0MyAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IHQ2ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnguc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ4LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSByLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ5LCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDIgPSB0bXAxLnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gKHRtcDEgKyByLngpLnNxdWFyZSgpIC0gdG1wMCAtIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCBSeCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MywgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgdDAsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDMgPSB0bXAzICsgdG1wMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHQzLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDQgPSB0bXAwICsgdG1wMCArIHRtcDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDAsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdG1wNiA9IHIueCArIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ4LCB0NCwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0bXA1ID0gdG1wNC5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDQsIHQ1KSxcblxuICAgICAgICAgICAgLy8genNxdWFyZWQgPSByLnouc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCB6c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHRtcDUgLSB0bXAzIC0gdG1wMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDUsIHQzLCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0MywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgci55KS5zcXVhcmUoKSAtIHRtcDEgLSB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIFJ5LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB0MSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgenNxdWFyZWQsIFJ6KSxcblxuICAgICAgICAgICAgLy8gci55ID0gKHRtcDMgLSByLngpICogdG1wNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIFJ4LCBSeSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NCwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyByLnkgLT0gdG1wMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnksIHQyLCBSeSksXG5cbiAgICAgICAgICAgIC8vIHRtcDMgPSB0bXA0ICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB6c3F1YXJlZCwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gLXRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQzLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2LnNxdWFyZSgpIC0gdG1wMCAtIHRtcDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ2LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCB0MCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDUsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wMSA9IHRtcDEgKyB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdG1wMSA9IHRtcDEgKyB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdG1wNiA9IHRtcDYgLSB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDEsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wMCA9IHIueiAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeiwgenNxdWFyZWQsIHQwKSxcblxuICAgICAgICAgICAgLy8gdG1wMCA9IHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQwKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIlJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCBReCAgPSBjLmdldExvY2FsKFwiUVwiKTtcbiAgICAgICAgY29uc3QgUXkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJRXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuXG4gICAgICAgIGNvbnN0IHQxMCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0OSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgenNxdWFyZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6dHNxdWFyZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0OCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyB5c3F1YXJlZCA9IHEueS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUXksIHlzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDAgPSB6c3F1YXJlZCAqIHEueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgenNxdWFyZWQsIFF4LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHQxID0gKChxLnkgKyByLnopLnNxdWFyZSgpIC0geXNxdWFyZWQgLSB6c3F1YXJlZCkgKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUXksIFJ6LCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCB5c3F1YXJlZCwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgenNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHQyID0gdDAgLSByLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBSeCwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MyA9IHQyLnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IHQzICsgdDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IHQ0ICsgdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCB0NCwgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NSA9IHQ0ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0MiwgdDUpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQxIC0gci55IC0gci55O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgUnksIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIFJ5LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ5ID0gdDYgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCBReCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0NyA9IHQ0ICogci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgUngsIHQ3KSxcblxuICAgICAgICAgICAgLy8gci54ID0gdDYuc3F1YXJlKCkgLSB0NSAtIHQ3IC0gdDc7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ2LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NSwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDcsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG5cbiAgICAgICAgICAgIC8vIHIueiA9IChyLnogKyB0Mikuc3F1YXJlKCkgLSB6c3F1YXJlZCAtIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeiwgdDIsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB0MywgUnopLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSBxLnkgKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDggPSAodDcgLSByLngpICogdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ3LCBSeCwgdDgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0OCwgdDYsIHQ4KSxcblxuICAgICAgICAgICAgLy8gdDAgPSByLnkgKiB0NTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnksIHQ1LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gdDAgKyB0MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHIueSA9IHQ4IC0gdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ4LCB0MCwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSB0MTAuc3F1YXJlKCkgLSB5c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEwLCB0MTApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHlzcXVhcmVkLCB0MTApLFxuXG4gICAgICAgICAgICAvLyB6dHNxdWFyZWQgPSByLnouc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCB6dHNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSB0MTAgLSB6dHNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxMCwgenRzcXVhcmVkLCB0MTApLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ5ICsgdDkgLSB0MTA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ5LCB0OSwgdDkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OSwgdDEwLCB0OSksXG5cbiAgICAgICAgICAgIC8vIHQxMCA9IHIueiArIHIuejtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIFJ6LCB0MTApLFxuXG4gICAgICAgICAgICAvLyB0NiA9IC10NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0NiArIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NiwgdDYsIHQxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcGFyZUcyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcGFyZUcyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG5cbiAgICAgICAgY29uc3QgUSA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcblxuICAgICAgICBjb25zdCBwUiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChwUik7XG5cbiAgICAgICAgY29uc3QgYmFzZSA9IGMuZ2V0TG9jYWwoXCJwcHJlUVwiKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFEsIGJhc2UpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGJhc2UpLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9jb3B5XCIsIGJhc2UsIFIpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcERibFN0ZXBcIiwgUiwgYy5nZXRMb2NhbChcInBDb2VmXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwQXRlTG9vcEJpdEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFIsIGJhc2UsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXgrIFwiX211bDFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQVwiLCBcImkzMlwiKTsgICAgLy8gRjZcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQV9jMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYzEgID0gYy5nZXRMb2NhbChcInBDMVwiKTtcblxuICAgICAgICBjb25zdCB0MSA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IEFjMF9BYzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMxX0FjMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBX2MwLCBBX2MxLCBBYzBfQWMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMiwgQWMxX0FjMiksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMV9BYzIsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDIgPSAoc2VsZi5jMCArIHNlbGYuYzEpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMF9BYzEsIGMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGNk11bDEoKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkRjZNdWwwMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXgrIFwiX211bDAxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzBcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQV9jMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYzAgID0gYy5nZXRMb2NhbChcInBDMFwiKTtcbiAgICAgICAgY29uc3QgYzEgID0gYy5nZXRMb2NhbChcInBDMVwiKTtcblxuICAgICAgICBjb25zdCB0MSA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYV9hID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IGJfYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMF9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYV9hID0gc2VsZi5jMCAqIGMwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MwLCBjMCwgYV9hKSxcblxuICAgICAgICAgICAgLy8gbGV0IGJfYiA9IHNlbGYuYzEgKiBjMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMSwgYzEsIGJfYiksXG5cblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBX2MwLCBBX2MxLCBBYzBfQWMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMiwgQWMwX0FjMiksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IChzZWxmLmMxICsgc2VsZi5jMikgKiBjMSAtIGJfYjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MSwgYzEsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIGJfYiwgdDEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSB0MS5tdWxfYnlfbm9ucmVzaWR1ZSgpICsgYV9hO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHQxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCBhX2EsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKGMwICsgYzEpICogKHNlbGYuYzAgKyBzZWxmLmMxKSAtIGFfYSAtIGJfYjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzAsIGMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCBBYzBfQWMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBhX2EsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIGJfYiwgdDIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDMgPSAoc2VsZi5jMCArIHNlbGYuYzIpICogYzAgLSBhX2EgKyBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMF9BYzIsIGMwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBhX2EsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIGJfYiwgdDMpLFxuXG5cbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGNk11bDAxKCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRjEyTXVsMDE0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4KyBcIl9tdWwwMTRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQVwiLCBcImkzMlwiKTsgICAgLy8gRjEyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzBcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEM0XCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgLy8gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IEFfYzAgPSBjLmdldExvY2FsKFwicEFcIik7XG4gICAgICAgIGNvbnN0IEFfYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNikpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG4gICAgICAgIGNvbnN0IGM0ICA9IGMuZ2V0TG9jYWwoXCJwQzRcIik7XG5cbiAgICAgICAgY29uc3QgYWEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjYpKTtcbiAgICAgICAgY29uc3QgYmIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjYpKTtcbiAgICAgICAgY29uc3QgbyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGNvbnN0IFJfYzAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFJfYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIGxldCBhYSA9IHNlbGYuYzAubXVsX2J5XzAxKGMwLCBjMSk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbXVsMDFcIiwgQV9jMCwgYzAsIGMxLCBhYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiYiA9IHNlbGYuYzEubXVsX2J5XzEoYzQpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDFcIiwgQV9jMSwgYzQsIGJiKSxcblxuICAgICAgICAgICAgLy8gbGV0IG8gPSBjMSArIGM0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBjMSwgYzQsIG8pLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBzZWxmLmMxICsgc2VsZi5jMDtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMCwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxLm11bF9ieV8wMShjMCwgJm8pO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIFJfYzEsIGMwLCBvLCBSX2MxKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gYzEgLSBhYSAtIGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBhYSwgUl9jMSksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfc3ViXCIsIFJfYzEsIGJiLCBSX2MxKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMwID0gYmI7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfY29weVwiLCBiYiwgUl9jMCksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGMwLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbXVsTlJcIiwgUl9jMCwgUl9jMCksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGMwICsgYWE7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIFJfYzAsIGFhLCBSX2MwKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGMTJNdWwwMTQoKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFTEwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9lbGxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUHggID0gYy5nZXRMb2NhbChcInBQXCIpO1xuICAgICAgICBjb25zdCBQeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBQXCIpLCBjLmkzMl9jb25zdChuOHEpKTtcblxuICAgICAgICBjb25zdCBGICA9IGMuZ2V0TG9jYWwoXCJwRlwiKTtcblxuICAgICAgICBjb25zdCBjb2VmMF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZnNcIik7XG4gICAgICAgIGNvbnN0IGNvZWYwXzEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuICAgICAgICBjb25zdCBjb2VmMV8wICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBjb2VmMV8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMykpO1xuICAgICAgICBjb25zdCBjb2VmMiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBwYzAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBjMCAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMCA9IGMuaTMyX2NvbnN0KHBjMCk7XG4gICAgICAgIGNvbnN0IGMwX2MxID0gYy5pMzJfY29uc3QocGMwK2Yxc2l6ZSk7XG5cbiAgICAgICAgY29uc3QgcGMxID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzEgID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzAgPSBjLmkzMl9jb25zdChwYzEpO1xuICAgICAgICBjb25zdCBjMV9jMSA9IGMuaTMyX2NvbnN0KHBjMStmMXNpemUpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAgbGV0IG11dCBjMCA9IGNvZWZmcy4wO1xuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzEgPSBjb2VmZnMuMTtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICBjMC5jMCAqPSBwLnk7XG4gICAgICAgICAgICAvLyAgICBjMC5jMSAqPSBwLnk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzEuYzAgKj0gcC54O1xuICAgICAgICAgICAgLy8gICAgYzEuYzEgKj0gcC54O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgICBmLm11bF9ieV8wMTQoJmNvZWZmcy4yLCAmYzEsICZjMClcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMF8wLCBQeSwgYzBfYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMF8xLCBQeSwgYzBfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMV8wLCBQeCwgYzFfYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMV8xLCBQeCwgYzFfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIsIEYsIGNvZWYyLCBjMSwgYzAsIEYpLFxuXG4gICAgICAgICk7XG5cbiAgICB9XG4gICAgYnVpbGRFTEwoKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkTWlsbGVyTG9vcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX21pbGxlckxvb3BcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHByZVAgPSBjLmdldExvY2FsKFwicHByZVBcIik7XG5cbiAgICAgICAgY29uc3QgY29lZnMgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVQKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInBwcmVRXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX3NxdWFyZVwiLCBGLCBGKSxcblxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuXG4gICAgICAgICk7XG5cblxuICAgICAgICB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBGLCBGKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvYmVuaXVzTWFwKG4pIHtcbiAgICAgICAgY29uc3QgRjEyID0gW1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG4sIDE1MTY1NTE4NTE4NDQ5ODM4MTQ2NTY0Mjc0OTY4NDU0MDA5OTM5ODA3NTM5ODk2ODMyNTQ0NjY1NjAwNzYxMzUxMDQwMzIyNzI3MTIwMDEzOTM3MDUwNDkzMjAxNTk1Mjg4NjE0NjMwNDc2NjEzNTAyN25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI5NzM2Nzc0MDg5ODY1NjEwNDM0NDI0NjUzNDY1MjAxMDg4NzkxNzIwNDI4ODMwMDkyNDk5ODkxNzY0MTUwMTgwOTE0MjA4MDcxOTIxODI2Mzg1NjcxMTYzMTg1NzY0NzI2NDkzNDcwMTU5MTc2OTA1MzBuLCAxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3bl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzEyNTMzMjU5NDE3MTA1OTQyNDkwODEwODA5NjIwNDY0ODk3ODU3MDExODI4MTk3NzU3NTQzNTgzMjQyMjYzMTYwMTgyNDAzNDQ2MzM4Mjc3NzkzNzYyMTI1MDU5MjQyNTUzNTQ5MzMyMDY4MzgyNTU1N24sIDg3NzA3Njk2MTA1MDYwNzk2ODUwOTY4MTcyOTUzMTI1NTE3Nzk4Njc2NDUzNzk2MTQzMjQ0OTQ5OTYzNTUwNDUyMjIwNzYxNjAyNzQ1NTA4NjUwNTA2NjM3ODUzNjU5MDEyODU0NDU3MzU4ODczNDIzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkzNDE3Nzg5ODI1NzM1OTA0MTU2NTU2ODgyODE5OTM5MDA3ODg1MzMyMDU4MTM2MTI0MDMxNjUwNDkwODM3ODY0NDQyNjg3NjI5MTI5MDE1NjY0MDM3ODk0MjcyNTU5Nzg2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduLCAzODUwNzU0MzcwMDM3MTY5MDExOTUyMTQ3MDc2MDUxMzY0MDU3MTU4ODA3NDIwOTcwNjgyNDM4Njc2MDUwNTIyNjEzNjI4NDIzMjE5NjM3NzI1MDcyMTgyNjk3MTEzMDYyNzc3ODkxNTg5NTA2NDI0NzYwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEwMjg3MzIxNDYyMzUxMDYzNDk5NzUzMjQ0NzkyMTU3OTUyNzczODQ4Mzk5MzY5Mjk3NTc4OTYxNTU2NDMxMTgwMzI2MTA4NDMyOTg2NTUyMjU4NzU1NzEzMTA1NTI1NDMwMTQ2OTA4NzgzNTQ4NjkyNTduLCAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzg3NzA3Njk2MTA1MDYwNzk2ODUwOTY4MTcyOTUzMTI1NTE3Nzk4Njc2NDUzNzk2MTQzMjQ0OTQ5OTYzNTUwNDUyMjIwNzYxNjAyNzQ1NTA4NjUwNTA2NjM3ODUzNjU5MDEyODU0NDU3MzU4ODczNDIzMG4sIDMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduXSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGNiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMG4sIDFuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMG4sIDc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbiwgMG5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTFuLCAwbl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIituKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDY7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgWCA9IChpPT0wKSA/IGMuZ2V0TG9jYWwoXCJ4XCIpIDogYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgWGMwID0gWDtcbiAgICAgICAgICAgIGNvbnN0IFhjMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUgKyBmMXNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFIgPSAoaT09MCkgPyBjLmdldExvY2FsKFwiclwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFJjMCA9IFI7XG4gICAgICAgICAgICBjb25zdCBSYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gbXVsMihGMTJbTWF0aC5mbG9vcihpLzMpXVtuJTEyXSAsIEY2W2klM11bbiU2XSk7XG4gICAgICAgICAgICBjb25zdCBwQ29lZiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlswXSksIG44cSksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIG44cSksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIGlmIChuJTIgPT0gMSkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgWGMwLCBSYzApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbmVnXCIsIFhjMSwgUmMxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSLCBjLmkzMl9jb25zdChwQ29lZiksIFIpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFgsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVsMihhLCBiKSB7XG4gICAgICAgICAgICBjb25zdCBhYzAgPSBhWzBdO1xuICAgICAgICAgICAgY29uc3QgYWMxID0gYVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IGJbMF07XG4gICAgICAgICAgICBjb25zdCBiYzEgPSBiWzFdO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW1xuICAgICAgICAgICAgICAgIChhYzAgKiBiYzAgLSAoYWMxICogYmMxKSkgJSBxLFxuICAgICAgICAgICAgICAgIChhYzAgKiBiYzEgKyAoYWMxICogYmMwKSkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDEocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHg0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjQgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDMqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0KmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByNSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNSpmMnNpemUpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vICAgIC8vIHQwICsgdDEqeSA9ICh6MCArIHoxKnkpXjIgPSBhXjJcbiAgICAgICAgICAgIC8vICAgIHRtcCA9IHowICogejE7XG4gICAgICAgICAgICAvLyAgICB0MCA9ICh6MCArIHoxKSAqICh6MCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gICAgdDEgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDAsIEFVWCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDEpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDIgKyB0Myp5ID0gKHoyICsgejMqeSleMiA9IGJeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHoyICogejM7XG4gICAgICAgICAgICAvLyAgdDIgPSAoejIgKyB6MykgKiAoejIgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejMpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0MyA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDIsIHgzLCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHgzLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDMsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDUsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB4NSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCBBVVgsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQ1KSxcblxuICAgICAgICAgICAgLy8gRm9yIEFcbiAgICAgICAgICAgIC8vIHowID0gMyAqIHQwIC0gMiAqIHowXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMCwgcjAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHIwLCByMCksXG4gICAgICAgICAgICAvLyB6MSA9IDMgKiB0MSArIDIgKiB6MVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjEsIHIxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQlxuICAgICAgICAgICAgLy8gejIgPSAzICogKHhpICogdDUpICsgMiAqIHoyXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ1LCBjLmkzMl9jb25zdChwQmxzMTIzODFUd2lzdCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgeDIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgcjIsIHIyKSxcbiAgICAgICAgICAgIC8vIHozID0gMyAqIHQ0IC0gMiAqIHozXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCB4MywgcjMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMywgcjMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHIzLCByMyksXG5cbiAgICAgICAgICAgIC8vIEZvciBDXG4gICAgICAgICAgICAvLyB6NCA9IDMgKiB0MiAtIDIgKiB6NFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgeDQsIHI0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjQsIHI0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCByNCwgcjQpLFxuICAgICAgICAgICAgLy8gejUgPSAzICogdDMgKyAyICogejVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHg1LCByNSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI1LCByNSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgcjUsIHI1KSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljRXhwKGV4cG9uZW50LCBpc0V4cE5lZ2F0aXZlLCBmbk5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb25lbnROYWZCeXRlcyA9IG5hZihleHBvbmVudCkubWFwKCAoYikgPT4gKGI9PS0xID8gMHhGRjogYikgKTtcbiAgICAgICAgY29uc3QgcEV4cG9uZW50TmFmQnl0ZXMgPSBtb2R1bGUuYWxsb2MoZXhwb25lbnROYWZCeXRlcyk7XG4gICAgICAgIC8vIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscy5iaWdJbnQyQnl0ZXNMRShleHBvbmVudCwgbjgpKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNFeHBfXCIrZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwieFwiKTtcblxuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcblxuICAgICAgICBjb25zdCBpbnZlcnNlID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCBpbnZlcnNlKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMSksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRXhwTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljU3F1YXJlKCk7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY0V4cChmaW5hbEV4cFosIGZpbmFsRXhwSXNOZWdhdGl2ZSwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDAgPSBmLmZyb2Jlbml1c19tYXAoNilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXA2XCIsIGVsdCwgdDApLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSBmLmludmVydCgpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfaW52ZXJzZVwiLCBlbHQsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0MiA9IHQwICogdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQwLCB0MSwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQyLmNsb25lKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29weVwiLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQyLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwMlwiLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MiAqPSB0MTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDIsIHQxLCB0MiksXG5cblxuICAgICAgICAgICAgLy8gdDEgPSBjeWNsb3RvbWljX3NxdWFyZSh0MikuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0MyA9IGN5Y29sb3RvbWljX2V4cCh0Mik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NCA9IGN5Y2xvdG9taWNfc3F1YXJlKHQzKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCB0MywgdDQpLFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQ1ID0gdDEgKiB0MztcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQzLCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljb2xvdG9taWNfZXhwKHQ1KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCB0NSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MCA9IGN5Y29sb3RvbWljX2V4cCh0MSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDEsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NiA9IGN5Y29sb3RvbWljX2V4cCh0MCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDAsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NCwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IGN5Y29sb3RvbWljX2V4cCh0Nik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDYsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NS5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDUsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDQgKj0gdDUgKiB0MjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIHQ1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0MiwgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NSA9IHQyLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB0MiwgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSAqPSB0MjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQyLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDEuZnJvYmVuaXVzX21hcCgpLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwM1wiLCB0MSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0NiAqPSB0NTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ID0gdDYuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDFcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDA7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MCwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyA9IHQzLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwMlwiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0MTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQxLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDYsIHQzKSxcblxuICAgICAgICAgICAgLy8gZiA9IHQzICogdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0NCwgcmVzKSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvbk9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGV4cG9uZW50ID0gMzIyMjc3MzYxNTE2OTM0MTQwNDYyODkxNTY0NTg2NTEwMTM5OTA4Mzc5OTY5NTE0ODI4NDk0MjE4MzY2Njg4MDI1Mjg4NjYxMDQxMTA0NjgyNzk0OTk4NjgwNDk3NTgwMDA4ODk5OTczMjQ5ODE0MTA0NDQ3NjkyNzc4OTg4MjA4Mzc2Nzc5NTczODE5NDg1MjYzMDI2MTU5NTg4NTEwNTEzODM0ODc2MzAzMDE0MDE2Nzk4ODA5OTE5MzQzNTMyODk5MTY0ODQ4NzMwMjgwOTQyNjA5OTU2NjcwOTE3NTY1NjE4MTE1ODY3Mjg3Mzk5NjIzMjg2ODEzMjcwMzU3OTAxNzMxNTEwMTg4MTQ5OTM0MzYzMzYwMzgxNjE0NTAxMzM0MDg2ODI1NDQyMjcxOTIwMDc5MzYzMjg5OTU0NTEwNTY1Mzc1Mzc4NDQzNzA0MzcyOTk0ODgxNDA2Nzk3ODgyNjc2OTcxMDgyMjAwNjI2NTQxOTE2NDEzMTg0NjQyNTIwMjY5Njc4ODk3NTU5NTMyMjYwOTQ5MzM0NzYwNjA0OTYyMDg2MzQ4ODk4MTE4OTgyMjQ4ODQyNjM0Mzc5NjM3NTk4NjY1NDY4ODE3NzY5MDc1ODc4NTU1NDkzNzUyMjE0NDkyNzkwMTIyNzg1ODUwMjAyOTU3NTc1MjAwMTc2MDg0MjA0NDIyNzUxNDg1OTU3MzM2NDY1NDcyMzI0ODEwOTgyODMzNjM4NDkwOTA0Mjc5MjgyNjk2MTM0MzIzMDcyNTE1MjIwMDQ0NDUxNTkyNjQ2ODg1NDEwNTcyMjM0NDUxNzMyNzkwNTkwMDEzNDc5MzU4MzQzODQxMjIwMDc0MTc0ODQ4MjIxNzIyMDE3MDgzNTk3ODcyMDE3NjM4NTE0MTAzMTc0MTIyNzg0ODQzOTI1NTc4MzcwNDMwODQzNTIyOTU5NjAwMDk1Njc2Mjg1NzIzNzM3MDQ5NDM4MzQ2NTQ0NzUzMTY4OTEyOTc0OTc2NzkxNTI4NTM1Mjc2MzE3MjU2OTA0MzM2NTIwMTc5MjgxMTQ1Mzk0Njg2NTY1MDUwNDE5MjUwNjE0MTA3ODAzMjMzMzE0NjU4ODI1NDYzMTE3OTAwMjUwNzAxMTk5MTgxNTI5MjA1OTQyMzYzMTU5MzI1NzY1OTkxODE5NDMzOTE0MzAzOTA4ODYwNDYwNzIwNTgxNDA4MjAxMzczMTY0MDQ3NzczNzk0ODI1NDExMDExOTIyMzA1ODIwMDY1NjExMTIxNTQ0NTYxODA4NDE0MDU1MzAyMjEyMDU3NDcxMzk1NzE5NDMyMDcyMjA5MjQ1NjAwMjU4MTM0MzY0NTg0NjM2ODEwMDkzNTIwMjg1NzExMDcyNTc4NzIxNDM1NTE3ODg0MTAzNTI2NDgzODMyNzMzMjg5ODAyNDI2MTU3MzAxNTQyNzQ0NDc2NzQwMDA4NDk0NzgwMzYzMzU0MzA1MTE2OTc4ODA1NjIwNjcxNDY3MDcxNDAwNzExMzU4ODM5NTUzMzc1MzQwNzI0ODk5NzM1NDYwNDgwMTQ0NTk5NzgyMDE0OTA2NTg2NTQzODEzMjkyMTU3OTIyMjIwNjQ1MDg5MTkyMTMwMjA5MzM0OTI2NjYxNTg4NzM3MDA3NzY4NTY1ODM4NTE5NDU2NjAxNTYwODA0OTU3OTg1NjY3ODgwMzk1MjIxMDQ5MjQ5ODAzNzUzNTgyNjM3NzA4NTYwbjtcblxuICAgICAgICBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggZXhwb25lbnQsIDU0NCApKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9leHBcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBFeHBvbmVudCksIGMuaTMyX2NvbnN0KDU0NCksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrc1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBjLmkzMl9jb25zdChwUHJlUCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVEpKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgYXV4VCApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzVCwgYXV4VCwgcmVzVCApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiLCByZXNULCByZXNUICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXFcIiwgcmVzVCwgYy5nZXRMb2NhbChcImNcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZygpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFcIiksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9taWxsZXJMb29wXCIsIGMuaTMyX2NvbnN0KHBQcmVQKSwgYy5pMzJfY29uc3QocFByZVEpLCByZXNUICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgYy5nZXRMb2NhbChcInJcIikgKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXSU5WID0gW1xuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5NG4sXG4gICAgICAgICAgICAyMDAxMjA0Nzc3NjEwODMzNjk2NzA4ODk0OTEyODY3OTUyMDc4Mjc4NDQxNDA5OTY5NTAzOTQyNjY2MDI5MDY4MDYyMDE1ODI1MjQ1NDE4OTMyMjIxMzQzODE0NTY0NTA3ODMyMDE4OTQ3MTM2Mjc5ODkzblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IEZST0IyWCA9IDQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuO1xuICAgICAgICBjb25zdCBGUk9CM1kgPSBbXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbixcbiAgICAgICAgICAgIDI5NzM2Nzc0MDg5ODY1NjEwNDM0NDI0NjUzNDY1MjAxMDg4NzkxNzIwNDI4ODMwMDkyNDk5ODkxNzY0MTUwMTgwOTE0MjA4MDcxOTIxODI2Mzg1NjcxMTYzMTg1NzY0NzI2NDkzNDcwMTU5MTc2OTA1MzBuXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgd0ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzBdKSwgbjhxKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KFdJTlZbMV0pLCBuOHEpLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgZnJvYjJYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KEZST0IyWCksIG44cSkpKTtcbiAgICAgICAgY29uc3QgZnJvYjNZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KEZST0IzWVswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMV0pLCBuOHEpLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKGZpbmFsRXhwWiwgOCkpKTtcblxuICAgICAgICBjb25zdCBweCA9IGMuZ2V0TG9jYWwoXCJwXCIpO1xuICAgICAgICBjb25zdCBweSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHhfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeV93aW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBwZjIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjIpO1xuICAgICAgICBjb25zdCBmMiA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeCA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeF9jMSA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeF9jMiA9IGMuaTMyX2NvbnN0KHBmMitmMXNpemUpO1xuICAgICAgICBjb25zdCBmMnkgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5X2MxID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMiA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUrZjFzaXplKTtcbiAgICAgICAgY29uc3QgcGYzID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgZjMgPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3ggPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3hfYzEgPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3hfYzIgPSBjLmkzMl9jb25zdChwZjMrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjN5ID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeV9jMSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzIgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeiA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUqMik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcybVByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInBcIikpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIHdJbnYsIHhfd2ludiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB5LCB3SW52LCB5X3dpbnYpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCB4X3dpbnYsIGZyb2IyWCwgZjJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgeV93aW52LCBmMnkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHhfd2ludiwgZjN4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeV93aW52LCBmcm9iM1ksIGYzeSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjJ4X2MxLCBmMnhfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGYyeF9jMSwgZjJ4X2MyLCBmMnhfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmMnhfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeV9jMSwgZjJ5X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnlfYzEsIGYyeV9jMiwgZjJ5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3hfYzEsIGYzeF9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjN4X2MxLCBmM3hfYzIsIGYzeF9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYzeF9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjN5X2MyLCBmM3lfYzEsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGYzeV9jMSwgZjN5X2MyLCBmM3lfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3lfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIGYzeiksXG5cbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl90aW1lc1NjYWxhclwiLCBmMywgeiwgYy5pMzJfY29uc3QoOCksIGYzKSxcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBmMywgZjIsIGYzKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2VxTWl4ZWRcIiwgZjMsIGMuZ2V0TG9jYWwoXCJwXCIpKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZJbkdyb3VwID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgICAgIGZJbkdyb3VwLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmSW5Hcm91cC5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMyID0gZkluR3JvdXAuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXgyID0gYzIuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUqMikpO1xuXG4gICAgICAgIGZJbkdyb3VwLmFkZENvZGUoXG4gICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMyLmdldExvY2FsKFwicEluXCIpLCBhdXgyKSxcblxuICAgICAgICAgICAgYzIucmV0KFxuICAgICAgICAgICAgICAgIGMyLmNhbGwoZzJtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBhdXgyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5Hcm91cEcxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcxbVByZWZpeCsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEJFVEEgPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgQkVUQTIgPSA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuO1xuICAgICAgICBjb25zdCBaMk0xRDMgPSAoZmluYWxFeHBaICogZmluYWxFeHBaIC0gMW4pIC8gM247XG5cbiAgICAgICAgY29uc3QgYmV0YSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShCRVRBKSwgbjhxKSkpO1xuICAgICAgICBjb25zdCBiZXRhMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShCRVRBMiksIG44cSkpKTtcblxuICAgICAgICBjb25zdCB6Mm0xZDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShaMk0xRDMsIDE2KSkpO1xuXG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHBzcCA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMyk7XG4gICAgICAgIGNvbnN0IHNwID0gYy5pMzJfY29uc3QocHNwKTtcbiAgICAgICAgY29uc3Qgc3B4ID0gYy5pMzJfY29uc3QocHNwKTtcbiAgICAgICAgY29uc3Qgc3B5ID0gYy5pMzJfY29uc3QocHNwK2Yxc2l6ZSk7XG5cbiAgICAgICAgY29uc3QgcHMycCA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IHMycCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB4ID0gYy5pMzJfY29uc3QocHMycCk7XG4gICAgICAgIGNvbnN0IHMycHkgPSBjLmkzMl9jb25zdChwczJwK2Yxc2l6ZSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMW1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEsIHNweCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBweSwgc3B5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBweCwgYmV0YTIsIHMycHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHMycHkpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgc3AsIHNwKSxcbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9zdWJNaXhlZFwiLCBzcCwgYy5nZXRMb2NhbChcInBcIiksIHNwKSxcbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9zdWJNaXhlZFwiLCBzcCwgczJwLCBzcCksXG5cbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl90aW1lc1NjYWxhclwiLCBzcCwgejJtMWQzLCBjLmkzMl9jb25zdCgxNiksIHNwKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2VxTWl4ZWRcIiwgc3AsIHMycClcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZJbkdyb3VwID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgICAgIGZJbkdyb3VwLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmSW5Hcm91cC5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMyID0gZkluR3JvdXAuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXgyID0gYzIuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGZJbkdyb3VwLmFkZENvZGUoXG4gICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMyLmdldExvY2FsKFwicEluXCIpLCBhdXgyKSxcblxuICAgICAgICAgICAgYzIucmV0KFxuICAgICAgICAgICAgICAgIGMyLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBhdXgyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykge1xuICAgICAgICBidWlsZEZyb2Jlbml1c01hcChpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuXG4gICAgYnVpbGRJbkdyb3VwRzEoKTtcbiAgICBidWlsZEluR3JvdXBHMigpO1xuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTWlsbGVyTG9vcCgpO1xuXG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCk7XG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCk7XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PTU7IGkrKykge1xuICAgICAgICBidWlsZFBhaXJpbmdFcXVhdGlvbihpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdFcVwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkUGFpcmluZygpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdcIik7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvbk9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGY2bVByZWZpeCArIFwiX211bDFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGY2bVByZWZpeCArIFwiX211bDAxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9tdWwwMTRcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzFtUHJlZml4ICsgXCJfaW5Hcm91cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzJtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzJtUHJlZml4ICsgXCJfaW5Hcm91cFwiKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKG1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZSk7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIG1vZHVsZS5leHBvcnRzLmJuMTI4X3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibjEyOF93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMuYmxzMTIzODFfd2FzbSA9IHJlcXVpcmUoXCIuL2J1aWxkL2JsczEyMzgxX3dhc20uanNcIik7XG4vLyBtb2R1bGUuZXhwb3J0cy5tbnQ2NzUzX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9tbnQ2NzUzX3dhc20uanNcIik7XG5cbnZhciBidWlsZEJuMTI4JDEgPSBidWlsZF9ibjEyODtcbnZhciBidWlsZEJsczEyMzgxJDEgPSBidWlsZF9ibHMxMjM4MTtcblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJiaWdpbnRcIiB8fCBvLmVxICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShvLCAwKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5zdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChvID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYmVCdWZmMmludChidWZmKSB7XG4gICAgbGV0IHJlcyA9IEJpZ0ludCgwKTtcbiAgICBsZXQgaSA9IGJ1ZmYubGVuZ3RoO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgd2hpbGUgKGkgPiAwKSB7XG4gICAgICAgIGlmIChpID49IDQpIHtcbiAgICAgICAgICAgIGkgLT0gNDtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpID49IDIpIHtcbiAgICAgICAgICAgIGkgLT0gMjtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDE2KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSkpIDw8IEJpZ0ludChvZmZzZXQgKiA4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGJlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICBsZXQgbyA9IGxlbjtcbiAgICB3aGlsZSAobyA+IDApIHtcbiAgICAgICAgaWYgKG8gLSA0ID49IDApIHtcbiAgICAgICAgICAgIG8gLT0gNDtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmZmZmZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDMyKTtcbiAgICAgICAgfSBlbHNlIGlmIChvIC0gMiA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDI7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG8gLT0gMTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSk7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIGxlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgd2hpbGUgKGkgPCBidWZmLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSArIDQgPD0gYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSA0O1xuICAgICAgICB9IGVsc2UgaWYgKGkgKyAyIDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gbGVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGVuID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDYobikgLSAxKSAvIDgpICsgMTtcbiAgICAgICAgaWYgKGxlbiA9PSAwKSBsZW4gPSAxO1xuICAgIH1cbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSAwO1xuICAgIHdoaWxlIChvIDwgbGVuKSB7XG4gICAgICAgIGlmIChvICsgNCA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmZmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSA0O1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDMyKTtcbiAgICAgICAgfSBlbHNlIGlmIChvICsgMiA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQxNihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDI7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoMTYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDgobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gMTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCg4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgZG9lcyBub3QgZml0IGluIHRoaXMgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJiaWdpbnRcIiB8fCBvLmVxICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIEYudG9TdHJpbmcoRi5lKG8pKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHN0cmluZ2lmeUZFbGVtZW50cy5iaW5kKHRoaXMsIEYpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgbykge1xuICAgIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eWzAtOV0rJC8udGVzdChvKSkge1xuICAgICAgICByZXR1cm4gRi5lKG8pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXjB4WzAtOWEtZkEtRl0rJC8udGVzdChvKSkge1xuICAgICAgICByZXR1cm4gRi5lKG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAodW5zdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChvID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUZFbGVtZW50cyhGLCBvW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGVbaV0gPSBfcmV2U2xvdyhpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3coaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9IDA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmIDEpO1xuICAgICAgICBhID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiaXRSZXZlcnNlKGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIChfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4ZmZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhmZl0gPDwgMjQpKSA+Pj5cbiAgICAgICAgKDMyIC0gYml0cylcbiAgICApO1xufVxuXG5mdW5jdGlvbiBsb2cyKFYpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoKFYgJiAweGZmZmYwMDAwKSAhPT0gMCA/ICgoViAmPSAweGZmZmYwMDAwKSwgMTYpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGZmMDBmZjAwKSAhPT0gMCA/ICgoViAmPSAweGZmMDBmZjAwKSwgOCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4ZjBmMGYwZjApICE9PSAwID8gKChWICY9IDB4ZjBmMGYwZjApLCA0KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhjY2NjY2NjYykgIT09IDAgPyAoKFYgJj0gMHhjY2NjY2NjYyksIDIpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGFhYWFhYWFhKSAhPT0gMClcbiAgICApO1xufVxuXG5mdW5jdGlvbiBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgZVNpemUpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC8gZVNpemU7XG4gICAgY29uc3QgYml0cyA9IGxvZzIobik7XG4gICAgaWYgKG4gIT0gMSA8PCBiaXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50ZXJzXCIpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBjb25zdCByID0gYml0UmV2ZXJzZShpLCBiaXRzKTtcbiAgICAgICAgaWYgKGkgPiByKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBidWZmLnNsaWNlKGkgKiBlU2l6ZSwgKGkgKyAxKSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KGJ1ZmYuc2xpY2UociAqIGVTaXplLCAociArIDEpICogZVNpemUpLCBpICogZVNpemUpO1xuICAgICAgICAgICAgYnVmZi5zZXQodG1wLCByICogZVNpemUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcnJheTJidWZmZXIoYXJyLCBzRykge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRyAqIGFyci5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpICogc0cpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBidWZmZXIyYXJyYXkoYnVmZiwgc0cpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFycltpXSA9IGJ1ZmYuc2xpY2UoaSAqIHNHLCBpICogc0cgKyBzRyk7XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59XG5cbnZhciBfdXRpbHMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGFycmF5MmJ1ZmZlcjogYXJyYXkyYnVmZmVyLFxuICAgIGJlQnVmZjJpbnQ6IGJlQnVmZjJpbnQsXG4gICAgYmVJbnQyQnVmZjogYmVJbnQyQnVmZixcbiAgICBiaXRSZXZlcnNlOiBiaXRSZXZlcnNlLFxuICAgIGJ1ZmZSZXZlcnNlQml0czogYnVmZlJldmVyc2VCaXRzLFxuICAgIGJ1ZmZlcjJhcnJheTogYnVmZmVyMmFycmF5LFxuICAgIGxlQnVmZjJpbnQ6IGxlQnVmZjJpbnQsXG4gICAgbGVJbnQyQnVmZjogbGVJbnQyQnVmZixcbiAgICBsb2cyOiBsb2cyLFxuICAgIHN0cmluZ2lmeUJpZ0ludHM6IHN0cmluZ2lmeUJpZ0ludHMsXG4gICAgc3RyaW5naWZ5RkVsZW1lbnRzOiBzdHJpbmdpZnlGRWxlbWVudHMsXG4gICAgdW5zdHJpbmdpZnlCaWdJbnRzOiB1bnN0cmluZ2lmeUJpZ0ludHMsXG4gICAgdW5zdHJpbmdpZnlGRWxlbWVudHM6IHVuc3RyaW5naWZ5RkVsZW1lbnRzXG59KTtcblxuY29uc3QgUEFHRV9TSVpFID0gMTw8MzA7XG5cbmNsYXNzIEJpZ0J1ZmZlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihzaXplKSB7XG4gICAgICAgIHRoaXMuYnVmZmVycyA9IFtdO1xuICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSBzaXplO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8c2l6ZTsgaSs9IFBBR0VfU0laRSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHNpemUtaSwgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVycy5wdXNoKG5ldyBVaW50OEFycmF5KG4pKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgc2xpY2UoZnIsIHRvKSB7XG4gICAgICAgIGlmICggdG8gPT09IHVuZGVmaW5lZCApIHRvID0gdGhpcy5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoIGZyID09PSB1bmRlZmluZWQgKSBmciA9IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRvLWZyO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IoZnIgLyBQQUdFX1NJWkUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKGZyK2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKChmaXJzdFBhZ2UgPT0gbGFzdFBhZ2UpfHwobGVuPT0wKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zbGljZShmciVQQUdFX1NJWkUsIGZyJVBBR0VfU0laRSArIGxlbik7XG5cbiAgICAgICAgbGV0IGJ1ZmY7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gZnIgJSBQQUdFX1NJWkU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICAvLyBieXRlcyB0byBjb3B5IGZyb20gdGhpcyBwYWdlXG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQrbywgbCk7XG4gICAgICAgICAgICBpZiAobCA9PSBsZW4pIHJldHVybiBzcmNWaWV3LnNsaWNlKCk7XG4gICAgICAgICAgICBpZiAoIWJ1ZmYpIHtcbiAgICAgICAgICAgICAgICBpZiAobGVuIDw9IFBBR0VfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihsZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmYuc2V0KHNyY1ZpZXcsIGxlbi1yKTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBzZXQoYnVmZiwgb2Zmc2V0KSB7XG4gICAgICAgIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMDtcblxuICAgICAgICBjb25zdCBsZW4gPSBidWZmLmJ5dGVMZW5ndGg7XG5cbiAgICAgICAgaWYgKGxlbj09MCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChvZmZzZXQrbGVuLTEpIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBpZiAoZmlyc3RQYWdlID09IGxhc3RQYWdlKSB7XG4gICAgICAgICAgICBpZiAoKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpJiYoYnVmZi5idWZmZXJzLmxlbmd0aD09MSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2V0KGJ1ZmYuYnVmZmVyc1swXSwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLCBvZmZzZXQgJSBQQUdFX1NJWkUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IG9mZnNldCAlIFBBR0VfU0laRTtcbiAgICAgICAgbGV0IHIgPSBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gUEFHRV9TSVpFKSA/IChQQUdFX1NJWkUgLW8pIDogcjtcbiAgICAgICAgICAgIGNvbnN0IHNyY1ZpZXcgPSBidWZmLnNsaWNlKCBsZW4gLXIsIGxlbiAtcitsKTtcbiAgICAgICAgICAgIGNvbnN0IGRzdFZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcnNbcF0uYnVmZmVyLCB0aGlzLmJ1ZmZlcnNbcF0uYnl0ZU9mZnNldCArIG8sIGwpO1xuICAgICAgICAgICAgZHN0Vmlldy5zZXQoc3JjVmlldyk7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBmbk5hbWUsIHNJbiwgc091dCkge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiBiYXRjaENvbnZlcnQoYnVmZkluKSB7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZJbi5ieXRlTGVuZ3RoIC8gc0luKTtcbiAgICAgICAgaWYgKCBuUG9pbnRzICogc0luICE9PSBidWZmSW4uYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZkluLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0luLCBpKnBvaW50c1BlckNodW5rKnNJbiArIG4qc0luKTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6YnVmZkNodW5rfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZkluIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG59XG5cbmNsYXNzIFdhc21GaWVsZDEge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgbjgsIHApIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLnAgPSBwO1xuICAgICAgICB0aGlzLm44ID0gbjg7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjFcIjtcbiAgICAgICAgdGhpcy5tID0gMTtcblxuICAgICAgICB0aGlzLmhhbGYgPSBzaGlmdFJpZ2h0KHAsIG9uZSk7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYocCk7XG4gICAgICAgIHRoaXMubWFzayA9IHN1YihzaGlmdExlZnQob25lLCB0aGlzLmJpdExlbmd0aCksIG9uZSk7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDIgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl9vbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcihuOC84KTtcbiAgICAgICAgdGhpcy5uMzIgPSBNYXRoLmZsb29yKG44LzQpO1xuXG4gICAgICAgIGlmKHRoaXMubjY0KjggIT0gdGhpcy5uOCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibjggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDhcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbGYgPSBzaGlmdFJpZ2h0KHRoaXMucCwgb25lKTtcbiAgICAgICAgdGhpcy5ucXIgPSB0aGlzLnR3bztcbiAgICAgICAgbGV0IHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLmFkZCh0aGlzLm5xciwgdGhpcy5vbmUpO1xuICAgICAgICAgICAgciA9IHRoaXMuZXhwKHRoaXMubnFyLCB0aGlzLmhhbGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMubXVsKHRoaXMubnFyLCB0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuc2hpZnRJbnYgPSB0aGlzLmludih0aGlzLnNoaWZ0KTtcblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICBsZXQgdCA9IHN1Yih0aGlzLnAsIG9uZSk7XG5cbiAgICAgICAgd2hpbGUgKCAhaXNPZGQkNSh0KSApIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucyArIDE7XG4gICAgICAgICAgICB0ID0gc2hpZnRSaWdodCh0LCBvbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53ID0gW107XG4gICAgICAgIHRoaXMud1t0aGlzLnNdID0gdGhpcy5leHAodGhpcy5ucXIsIHQpO1xuXG4gICAgICAgIGZvciAobGV0IGk9IHRoaXMucy0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHRoaXMud1tpXSA9IHRoaXMuc3F1YXJlKHRoaXMud1tpKzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5lcSh0aGlzLndbMF0sIHRoaXMub25lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgY2FsY3VsYXRpbmcgcm9vdHMgb2YgdW5pdHlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJhdGNoVG9Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIsIHRoaXMubjgsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLmJhdGNoRnJvbU1vbnRnb21lcnkgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICB9XG5cblxuICAgIG9wMihvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AyQm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyKTtcbiAgICB9XG5cbiAgICBvcDEob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gdG9MRUJ1ZmYoZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGxldCByYSA9IGUoYSwgYik7XG4gICAgICAgIGlmIChpc05lZ2F0aXZlJDQocmEpKSB7XG4gICAgICAgICAgICByYSA9IG5lZyhyYSk7XG4gICAgICAgICAgICBpZiAoZ3QocmEsIHRoaXMucCkpIHtcbiAgICAgICAgICAgICAgICByYSA9IG1vZChyYSwgdGhpcy5wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJhID0gc3ViKHRoaXMucCwgcmEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnVmZiA9IGxlSW50MkJ1ZmYocmEsIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkoYnVmZik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgYW4gPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICBjb25zdCBzID0gZnJvbVJwckxFKGFuLCAwKTtcbiAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHMsIHJhZGl4KTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMubjgpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2ID0gemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiA9IGFkZCh2LCAgc2hpZnRMZWZ0KHJuZy5uZXh0VTY0KCksIDY0KmkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHYgPSBiYW5kKHYsIHRoaXMubWFzayk7XG4gICAgICAgIH0gd2hpbGUgKGdlcSh2LCB0aGlzLnApKTtcbiAgICAgICAgdG9ScHJMRShidWZmLCAwLCB2LCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUm5nKGdldFRocmVhZFJuZygpKTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShhbiwgMCk7XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgdG9ScHJMRShidWZmLCAwLCBhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvUnByTEUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGJ1ZmYuc2V0KHRoaXMuZnJvbU1vbnRnb21lcnkoYSksIG9mZnNldCk7XG4gICAgfVxuXG4gICAgdG9ScHJCRShidWZmLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgY29uc3QgYnVmZjIgPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uOC8yOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF1eCA9IGJ1ZmYyW2ldO1xuICAgICAgICAgICAgYnVmZjJbaV0gPSBidWZmMlt0aGlzLm44LTEtaV07XG4gICAgICAgICAgICBidWZmMlt0aGlzLm44LTEtaV0gPSBhdXg7XG4gICAgICAgIH1cbiAgICAgICAgYnVmZi5zZXQoYnVmZjIsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgcmVzID0gYnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkocmVzKTtcbiAgICB9XG5cbiAgICBhc3luYyBiYXRjaEludmVyc2UoYnVmZkluKSB7XG4gICAgICAgIGxldCByZXR1cm5BcnJheSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBzSW4gPSB0aGlzLm44O1xuICAgICAgICBjb25zdCBzT3V0ID0gdGhpcy5uODtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmSW4pKSB7XG4gICAgICAgICAgICBidWZmSW4gPSBhcnJheTJidWZmZXIoYnVmZkluLCBzSW4gKTtcbiAgICAgICAgICAgIHJldHVybkFycmF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZJbiA9IGJ1ZmZJbi5zbGljZSgwLCBidWZmSW4uYnl0ZUxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdGhpcy50bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMudG0uY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgdGhpcy50bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogdGhpcy5wcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzSW59LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNPdXR9LFxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLnRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZkluIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldHVybkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGZ1bGxCdWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21GaWVsZDIge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjJcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCoyO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMjtcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjI7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDJCb29sKFwiX2VxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbXVsMShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bDFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMikpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBGMlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9XWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUm5nKGdldFRocmVhZFJuZygpKTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMikpO1xuICAgICAgICByZXR1cm4gW2MxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCk7XG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21GaWVsZDMge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjNcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMztcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCozO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMztcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjM7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNOZWdhdGl2ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNOZWdhdGl2ZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gdG9MRUJ1ZmYoZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkpICYmIChhLmxlbmd0aCA9PSAzKSkge1xuICAgICAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZShhWzBdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmUoYVsxXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5lKGFbMl0sIGIpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMyA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICByZXR1cm4gYFske3MxfSwgJHtzMn0sICR7czN9XWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzIsIGMzXTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgY29uc3QgYjEgPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgYjIgPSB0aGlzLkYuZnJvbU9iamVjdChhWzFdKTtcbiAgICAgICAgY29uc3QgYjMgPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgYnVmZi5zZXQoYjEpO1xuICAgICAgICBidWZmLnNldChiMiwgdGhpcy5GLm44KTtcbiAgICAgICAgYnVmZi5zZXQoYjMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgYzEoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgIH1cblxuICAgIGMyKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgYzMoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgqMik7XG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21DdXJ2ZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0bSwgcHJlZml4LCBGLCBwR2VuLCBwR2IsIGNvZmFjdG9yKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9BZmZpbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0aGlzLnRtLmdldEJ1ZmYocEdlbiwgRi5uOCozKTtcbiAgICAgICAgdGhpcy5nID0gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMub25lQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMik7XG4gICAgICAgIHRoaXMuZ0FmZmluZSA9IHRoaXMub25lQWZmaW5lO1xuICAgICAgICB0aGlzLmIgPSB0aGlzLnRtLmdldEJ1ZmYocEdiLCBGLm44KTtcblxuICAgICAgICBpZiAoY29mYWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuY29mYWN0b3IgPSB0b0xFQnVmZihjb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b0MgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgRi5uOCoyLCBGLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaExFTXRvVSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hDdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIiwgRi5uOCwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5iYXRjaFV0b0xFTSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0phY29iaWFuID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBGLm44KjIsIEYubjgqMyk7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0FmZmluZSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIsIEYubjgqMywgRi5uOCoyKTtcbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBvcDJib29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AxQWZmaW5lKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZEFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQWZmaW5lKFwiX25lZ0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9kb3VibGVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlQWZmaW5lXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGEsIHMpIHtcbiAgICAgICAgaWYgKCEocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBzID0gdG9MRUJ1ZmYoZShzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBzKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW2ZuTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHMuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICB0aW1lc0ZyKGEsIHMpIHtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzRnJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0FmZmluZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl90b0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9KYWNvYmlhbihhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvSmFjb2JpYW5cIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1JwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfdG9BZmZpbmVcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCAhPSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0xFTXRvVVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBidWZmKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfVXRvTEVNXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICB9XG5cbiAgICB0b1JwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b0NcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgpO1xuICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0N0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AyLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9VbmNvbXByZXNzZWQoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIGEpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICB0b1JwckxFTShhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBhcnIuc2V0KGEsIG9mZnNldCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShhcnIsIG9mZnNldCkge1xuICAgICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcbiAgICAgICAgcmV0dXJuIGFyci5zbGljZShvZmZzZXQsIG9mZnNldCt0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgcmV0dXJuIGBbICR7eH0sICR7eX0sICR7en0gXWA7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9IF1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNWYWxpZChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IGFhID0gdGhpcy50b0FmZmluZShhKTtcbiAgICAgICAgY29uc3QgeCA9IGFhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHkgPSBhYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoeCkseCksIHRoaXMuYik7XG4gICAgICAgIGNvbnN0IHkyID0gRi5zcXVhcmUoeSk7XG4gICAgICAgIHJldHVybiBGLmVxKHgzYiwgeTIpO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgbGV0IHgzYjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgfSB3aGlsZSAoIUYuaXNTcXVhcmUoeDNiKSk7XG5cbiAgICAgICAgUFsxXSA9IEYuc3FydCh4M2IpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBGLmlzTmVnYXRpdmUoUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcblxuICAgICAgICBsZXQgUGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIFBidWZmLnNldChQWzBdKTtcbiAgICAgICAgUGJ1ZmYuc2V0KFBbMV0sIHRoaXMuRi5uOCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29mYWN0b3IpIHtcbiAgICAgICAgICAgIFBidWZmID0gdGhpcy50aW1lc1NjYWxhcihQYnVmZiwgdGhpcy5jb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUGJ1ZmY7XG4gICAgfVxuXG5cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICAgICAgdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgbGV0IHo7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QodGhpcy5GLm9uZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB6XTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5sZW5ndGg9PTMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYub25lO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHosIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvQWZmaW5lO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuRi5lcSh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHosIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZShhKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21PYmplY3QoYSk7XG4gICAgfVxuXG4gICAgeChhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICB5KGEpIHtcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy50b0FmZmluZShhKTtcbiAgICAgICAgcmV0dXJuIHRtcC5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG4vKiBnbG9iYWwgV2ViQXNzZW1ibHkgKi9cblxuZnVuY3Rpb24gdGhyZWFkKHNlbGYpIHtcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcbiAgICBsZXQgaW5zdGFuY2U7XG4gICAgbGV0IG1lbW9yeTtcblxuICAgIGlmIChzZWxmKSB7XG4gICAgICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoZS5kYXRhKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhWzBdLmNtZCA9PSBcIklOSVRcIikge1xuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFwiVEVSTUlOQVRFXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHJ1blRhc2soZGF0YSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGluaXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb2RlID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5jb2RlKTtcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG4gICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6ZGF0YS5pbml0LCBtYXhpbXVtOiBNQVhNRU19KTtcblxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgIFwibWVtb3J5XCI6IG1lbW9yeVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYWxsb2MobGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHUzMiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXG4gICAgICAgIGNvbnN0IHJlcyA9IHUzMlswXTtcbiAgICAgICAgdTMyWzBdICs9IGxlbmd0aDtcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VzID0gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC8gMHgxMDAwMDtcbiAgICAgICAgICAgIGxldCByZXF1aXJlZFBhZ2VzID0gTWF0aC5mbG9vcigodTMyWzBdICsgbGVuZ3RoKSAvIDB4MTAwMDApKzE7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xuICAgICAgICAgICAgbWVtb3J5Lmdyb3cocmVxdWlyZWRQYWdlcy1jdXJyZW50UGFnZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHAgPSBhbGxvYyhidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHNldEJ1ZmZlcihwLCBidWZmZXIpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh1OC5idWZmZXIsIHU4LmJ5dGVPZmZzZXQgKyBwb2ludGVyLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEJ1ZmZlcihwb2ludGVyLCBidWZmZXIpIHtcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcbiAgICAgICAgdTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2sodGFzaykge1xuICAgICAgICBpZiAodGFza1swXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBpbml0KHRhc2tbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIHZhcnM6IFtdLFxuICAgICAgICAgICAgb3V0OiBbXVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1MzJhID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xuICAgICAgICBjb25zdCBvbGRBbGxvYyA9IHUzMmFbMF07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhc2tbaV0uY21kKSB7XG4gICAgICAgICAgICBjYXNlIFwiQUxMT0NTRVRcIjpcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvY0J1ZmZlcih0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2ModGFza1tpXS5sZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlNFVFwiOlxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiQ0FMTFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRhc2tbaV0ucGFyYW1zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwLnZhciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcC52YWwgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiR0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4Lm91dFt0YXNrW2ldLm91dF0gPSBnZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmxlbikuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjbWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgdTMyYlswXSA9IG9sZEFsbG9jO1xuICAgICAgICByZXR1cm4gY3R4Lm91dDtcbiAgICB9XG5cblxuICAgIHJldHVybiBydW5UYXNrO1xufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIGNvbnN0IE1FTV9TSVpFID0gMTAwMDsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoNTEyTWIpXG5jb25zdCBNRU1fU0laRSA9IDI1OyAgLy8gTWVtb3J5IHNpemUgaW4gNjRLIFBha2VzICgxNjAwS2IpXG5cbmNsYXNzIERlZmVycmVkIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PiB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2xlZXAobXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbmxldCB3b3JrZXJTb3VyY2U7XG5cbmNvbnN0IHRocmVhZFN0ciA9IGAoJHtcImZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XFxuICAgIGNvbnN0IE1BWE1FTSA9IDMyNzY3O1xcbiAgICBsZXQgaW5zdGFuY2U7XFxuICAgIGxldCBtZW1vcnk7XFxuXFxuICAgIGlmIChzZWxmKSB7XFxuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcXG4gICAgICAgICAgICBsZXQgZGF0YTtcXG4gICAgICAgICAgICBpZiAoZS5kYXRhKSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGlmIChkYXRhWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaW5pdChkYXRhWzBdKS50aGVuKGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhLnJlc3VsdCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIlRFUk1JTkFURVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHJ1blRhc2soZGF0YSk7XFxuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9O1xcbiAgICB9XFxuXFxuICAgIGFzeW5jIGZ1bmN0aW9uIGluaXQoZGF0YSkge1xcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XFxuICAgICAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZShjb2RlKTtcXG4gICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6ZGF0YS5pbml0LCBtYXhpbXVtOiBNQVhNRU19KTtcXG5cXG4gICAgICAgIGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xcbiAgICAgICAgICAgIGVudjoge1xcbiAgICAgICAgICAgICAgICBcXFwibWVtb3J5XFxcIjogbWVtb3J5XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG5cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2MobGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XFxuICAgICAgICB3aGlsZSAodTMyWzBdICYgMykgdTMyWzBdKys7ICAvLyBSZXR1cm4gYWx3YXlzIGFsaWduZWQgcG9pbnRlcnNcXG4gICAgICAgIGNvbnN0IHJlcyA9IHUzMlswXTtcXG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XFxuICAgICAgICBpZiAodTMyWzBdICsgbGVuZ3RoID4gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XFxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VzID0gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC8gMHgxMDAwMDtcXG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZFBhZ2VzPk1BWE1FTSkgcmVxdWlyZWRQYWdlcz1NQVhNRU07XFxuICAgICAgICAgICAgbWVtb3J5Lmdyb3cocmVxdWlyZWRQYWdlcy1jdXJyZW50UGFnZXMpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJlcztcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBhbGxvY0J1ZmZlcihidWZmZXIpIHtcXG4gICAgICAgIGNvbnN0IHAgPSBhbGxvYyhidWZmZXIuYnl0ZUxlbmd0aCk7XFxuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcXG4gICAgICAgIHJldHVybiBwO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGdldEJ1ZmZlcihwb2ludGVyLCBsZW5ndGgpIHtcXG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgdTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHJ1blRhc2sodGFzaykge1xcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFxcXCJJTklUXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiBpbml0KHRhc2tbMF0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgY3R4ID0ge1xcbiAgICAgICAgICAgIHZhcnM6IFtdLFxcbiAgICAgICAgICAgIG91dDogW11cXG4gICAgICAgIH07XFxuICAgICAgICBjb25zdCB1MzJhID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRhc2subGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBzd2l0Y2ggKHRhc2tbaV0uY21kKSB7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NTRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvY0J1ZmZlcih0YXNrW2ldLmJ1ZmYpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCJBTExPQ1xcXCI6XFxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgc2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQ0FMTFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gW107XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IHRhc2tbaV0ucGFyYW1zW2pdO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwLnZhciAhPT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChjdHgudmFyc1twLnZhcl0gKyAocC5vZmZzZXQgfHwgMCkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcC52YWwgIT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwLnZhbCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3J0c1t0YXNrW2ldLmZuTmFtZV0oLi4ucGFyYW1zKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNhc2UgXFxcIkdFVFxcXCI6XFxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiSW52YWxpZCBjbWRcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCB1MzJiID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgdTMyYlswXSA9IG9sZEFsbG9jO1xcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XFxuICAgIH1cXG5cXG5cXG4gICAgcmV0dXJuIHJ1blRhc2s7XFxufVwifSkoc2VsZilgO1xue1xuICAgIGlmKGdsb2JhbFRoaXM/LkJsb2IpIHtcbiAgICAgICAgY29uc3QgdGhyZWFkQnl0ZXM9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0aHJlYWRTdHIpO1xuICAgICAgICBjb25zdCB3b3JrZXJCbG9iID0gbmV3IEJsb2IoW3RocmVhZEJ5dGVzXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KSA7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFVSTC5jcmVhdGVPYmplY3RVUkwod29ya2VyQmxvYik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd29ya2VyU291cmNlID0gXCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQ7YmFzZTY0LFwiICsgZ2xvYmFsVGhpcy5idG9hKHRocmVhZFN0cik7XG4gICAgfVxufVxuXG5cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRUaHJlYWRNYW5hZ2VyKHdhc20sIHNpbmdsZVRocmVhZCkge1xuICAgIGNvbnN0IHRtID0gbmV3IFRocmVhZE1hbmFnZXIoKTtcblxuICAgIHRtLm1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6TUVNX1NJWkV9KTtcbiAgICB0bS51OCA9IG5ldyBVaW50OEFycmF5KHRtLm1lbW9yeS5idWZmZXIpO1xuICAgIHRtLnUzMiA9IG5ldyBVaW50MzJBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcblxuICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKHdhc20uY29kZSk7XG5cbiAgICB0bS5pbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBcIm1lbW9yeVwiOiB0bS5tZW1vcnlcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIGlmKCFnbG9iYWxUaGlzPy5Xb3JrZXIpIHtcbiAgICAgICAgc2luZ2xlVGhyZWFkID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgdG0uc2luZ2xlVGhyZWFkID0gc2luZ2xlVGhyZWFkO1xuICAgIHRtLmluaXRhbFBGcmVlID0gdG0udTMyWzBdOyAgIC8vIFNhdmUgdGhlIFBvaW50ZXIgdG8gZnJlZSBzcGFjZS5cbiAgICB0bS5wcSA9IHdhc20ucHE7XG4gICAgdG0ucHIgPSB3YXNtLnByO1xuICAgIHRtLnBHMWdlbiA9IHdhc20ucEcxZ2VuO1xuICAgIHRtLnBHMXplcm8gPSB3YXNtLnBHMXplcm87XG4gICAgdG0ucEcyZ2VuID0gd2FzbS5wRzJnZW47XG4gICAgdG0ucEcyemVybyA9IHdhc20ucEcyemVybztcbiAgICB0bS5wT25lVCA9IHdhc20ucE9uZVQ7XG5cbiAgICAvLyAgICB0bS5wVG1wMCA9IHRtLmFsbG9jKGN1cnZlLkcyLkYubjgqMyk7XG4gICAgLy8gICAgdG0ucFRtcDEgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuXG4gICAgaWYgKHNpbmdsZVRocmVhZCkge1xuICAgICAgICB0bS5jb2RlID0gd2FzbS5jb2RlO1xuICAgICAgICB0bS50YXNrTWFuYWdlciA9IHRocmVhZCgpO1xuICAgICAgICBhd2FpdCB0bS50YXNrTWFuYWdlcihbe1xuICAgICAgICAgICAgY21kOiBcIklOSVRcIixcbiAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgY29kZTogdG0uY29kZS5zbGljZSgpXG4gICAgICAgIH1dKTtcbiAgICAgICAgdG0uY29uY3VycmVuY3kgID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0bS53b3JrZXJzID0gW107XG4gICAgICAgIHRtLnBlbmRpbmdEZWZlcnJlZHMgPSBbXTtcbiAgICAgICAgdG0ud29ya2luZyA9IFtdO1xuXG4gICAgICAgIGxldCBjb25jdXJyZW5jeSA9IDI7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSBcIm9iamVjdFwiICYmIG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgY29uY3VycmVuY3kgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGNvbmN1cnJlbmN5ID09IDApe1xuICAgICAgICAgICAgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTGltaXQgdG8gNjQgdGhyZWFkcyBmb3IgbWVtb3J5IHJlYXNvbnMuXG4gICAgICAgIGlmIChjb25jdXJyZW5jeT42NCkgY29uY3VycmVuY3k9NjQ7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ID0gY29uY3VycmVuY3k7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuXG4gICAgICAgICAgICB0bS53b3JrZXJzW2ldID0gbmV3IFdvcmtlcih3b3JrZXJTb3VyY2UpO1xuXG4gICAgICAgICAgICB0bS53b3JrZXJzW2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGdldE9uTXNnKGkpKTtcblxuICAgICAgICAgICAgdG0ud29ya2luZ1tpXT1mYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXRQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dG0ud29ya2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb3B5Q29kZSA9IHdhc20uY29kZS5zbGljZSgpO1xuICAgICAgICAgICAgaW5pdFByb21pc2VzLnB1c2godG0ucG9zdEFjdGlvbihpLCBbe1xuICAgICAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICAgICAgaW5pdDogTUVNX1NJWkUsXG4gICAgICAgICAgICAgICAgY29kZTogY29weUNvZGVcbiAgICAgICAgICAgIH1dLCBbY29weUNvZGUuYnVmZmVyXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoaW5pdFByb21pc2VzKTtcblxuICAgIH1cbiAgICByZXR1cm4gdG07XG5cbiAgICBmdW5jdGlvbiBnZXRPbk1zZyhpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICAgIGlmICgoZSkmJihlLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzW2ldLnJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICB0bS5wcm9jZXNzV29ya3MoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbn1cblxuY2xhc3MgVGhyZWFkTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgc3RhcnRTeW5jT3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm9sZFBGcmVlICE9IDApIHRocm93IG5ldyBFcnJvcihcIlN5bmMgb3BlcmF0aW9uIGluIHByb2dyZXNzXCIpO1xuICAgICAgICB0aGlzLm9sZFBGcmVlID0gdGhpcy51MzJbMF07XG4gICAgfVxuXG4gICAgZW5kU3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSA9PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBzeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLm9sZFBGcmVlO1xuICAgICAgICB0aGlzLm9sZFBGcmVlID0gMDtcbiAgICB9XG5cbiAgICBwb3N0QWN0aW9uKHdvcmtlcklkLCBlLCB0cmFuc2ZlcnMsIF9kZWZlcnJlZCkge1xuICAgICAgICBpZiAodGhpcy53b3JraW5nW3dvcmtlcklkXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9zdGluZyBhIGpvYiB0IGEgd29ya2luZyB3b3JrZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53b3JraW5nW3dvcmtlcklkXSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmZXJyZWRzW3dvcmtlcklkXSA9IF9kZWZlcnJlZCA/IF9kZWZlcnJlZCA6IG5ldyBEZWZlcnJlZCgpO1xuICAgICAgICB0aGlzLndvcmtlcnNbd29ya2VySWRdLnBvc3RNZXNzYWdlKGUsIHRyYW5zZmVycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0ucHJvbWlzZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzV29ya3MoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgKGk8dGhpcy53b3JrZXJzLmxlbmd0aCkmJih0aGlzLmFjdGlvblF1ZXVlLmxlbmd0aCA+IDApOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndvcmtpbmdbaV0gPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrID0gdGhpcy5hY3Rpb25RdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdEFjdGlvbihpLCB3b3JrLmRhdGEsIHdvcmsudHJhbnNmZXJzLCB3b3JrLmRlZmVycmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlQWN0aW9uKGFjdGlvbkRhdGEsIHRyYW5zZmVycykge1xuICAgICAgICBjb25zdCBkID0gbmV3IERlZmVycmVkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRhc2tNYW5hZ2VyKGFjdGlvbkRhdGEpO1xuICAgICAgICAgICAgZC5yZXNvbHZlKHJlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgdHJhbnNmZXJzOiB0cmFuc2ZlcnMsXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQ6IGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzV29ya3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZC5wcm9taXNlO1xuICAgIH1cblxuICAgIHJlc2V0TWVtb3J5KCkge1xuICAgICAgICB0aGlzLnUzMlswXSA9IHRoaXMuaW5pdGFsUEZyZWU7XG4gICAgfVxuXG4gICAgYWxsb2NCdWZmKGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlciA9IHRoaXMuYWxsb2MoYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy5zZXRCdWZmKHBvaW50ZXIsIGJ1ZmYpO1xuICAgICAgICByZXR1cm4gcG9pbnRlcjtcbiAgICB9XG5cbiAgICBnZXRCdWZmKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy51OC5zbGljZShwb2ludGVyLCBwb2ludGVyKyBsZW5ndGgpO1xuICAgIH1cblxuICAgIHNldEJ1ZmYocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIHRoaXMudTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xuICAgIH1cblxuICAgIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICB3aGlsZSAodGhpcy51MzJbMF0gJiAzKSB0aGlzLnUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudTMyWzBdO1xuICAgICAgICB0aGlzLnUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgdGVybWluYXRlKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy53b3JrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLndvcmtlcnNbaV0ucG9zdE1lc3NhZ2UoW3tjbWQ6IFwiVEVSTUlOQVRFXCJ9XSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc2xlZXAoMjAwKTtcbiAgICB9XG5cbn1cblxuZnVuY3Rpb24gYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gY3VydmUudG07XG5cbiAgICBjdXJ2ZVtncm91cE5hbWVdLmJhdGNoQXBwbHlLZXkgPSBhc3luYyBmdW5jdGlvbihidWZmLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuQWZmaW5lO1xuICAgICAgICBsZXQgc0dpbiwgc0dtaWQsIHNHb3V0O1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbkFmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIHNHaW4gPSBHLm44O1xuICAgICAgICAgICAgc0dtaWQgPSBHLm44O1xuICAgICAgICAgICAgc0dvdXQgPSBHLm44O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cDogXCIgKyBncm91cE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHaW4pO1xuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgaW5jID0gRnIuZShpbmMpO1xuICAgICAgICBsZXQgdCA9IEZyLmUoZmlyc3QpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dG0uY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgdG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkFMTE9DU0VUXCIsXG4gICAgICAgICAgICAgICAgdmFyOiAwLFxuICAgICAgICAgICAgICAgIGJ1ZmY6IGJ1ZmYuc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzR2luLCBpKnBvaW50c1BlckNodW5rKnNHaW4gKyBuKnNHaW4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogdH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKk1hdGgubWF4KHNHbWlkLCBzR291dCl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IGZuTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6M31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbkFmZmluZSkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgICAgIGZuTmFtZTogZm5BZmZpbmUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDMsIGxlbjogbipzR291dH0pO1xuXG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgdCA9IEZyLm11bCh0LCBGci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgb3V0QnVmZjtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0QnVmZiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0QnVmZjtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFBhaXJpbmcoY3VydmUpIHtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuICAgIGN1cnZlLnBhaXJpbmcgPSBmdW5jdGlvbiBwYWlyaW5nKGEsIGIpIHtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwQSA9IHRtLmFsbG9jQnVmZihjdXJ2ZS5HMS50b0phY29iaWFuKGEpKTtcbiAgICAgICAgY29uc3QgcEIgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzIudG9KYWNvYmlhbihiKSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0bS5hbGxvYyhjdXJ2ZS5HdC5uOCk7XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHNbY3VydmUubmFtZSArIFwiX3BhaXJpbmdcIl0ocEEsIHBCLCBwUmVzKTtcblxuICAgICAgICBjb25zdCByZXMgPSB0bS5nZXRCdWZmKHBSZXMsIGN1cnZlLkd0Lm44KTtcblxuICAgICAgICB0bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucGFpcmluZ0VxID0gYXN5bmMgZnVuY3Rpb24gcGFpcmluZ0VxKCkge1xuICAgICAgICBsZXQgIGJ1ZmZDdDtcbiAgICAgICAgbGV0IG5FcXM7XG4gICAgICAgIGlmICgoYXJndW1lbnRzLmxlbmd0aCAlIDIpID09IDEpIHtcbiAgICAgICAgICAgIGJ1ZmZDdCA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdO1xuICAgICAgICAgICAgbkVxcyA9IChhcmd1bWVudHMubGVuZ3RoIC0xKSAvMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZDdCA9IGN1cnZlLkd0Lm9uZTtcbiAgICAgICAgICAgIG5FcXMgPSBhcmd1bWVudHMubGVuZ3RoIC8yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkVxczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZzFCdWZmID0gY3VydmUuRzEudG9KYWNvYmlhbihhcmd1bWVudHNbaSoyXSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGcxQnVmZn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IGN1cnZlLnByZVBTaXplfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGcyQnVmZiA9IGN1cnZlLkcyLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMiArMV0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBnMkJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBjdXJ2ZS5wcmVRU2l6ZX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9wcmVwYXJlRzFcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAge3ZhcjogMX1cbiAgICAgICAgICAgIF19KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9wcmVwYXJlRzJcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgIF19KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9taWxsZXJMb29wXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDR9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogNCwgbGVuOiBjdXJ2ZS5HdC5uOH0pO1xuXG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIHRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0bS5hbGxvYyhjdXJ2ZS5HdC5uOCk7XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX29uZShwUmVzKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwTVIgPSB0bS5hbGxvY0J1ZmYocmVzdWx0W2ldWzBdKTtcbiAgICAgICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX211bChwUmVzLCBwTVIsIHBSZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHNbY3VydmUubmFtZSArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIl0ocFJlcywgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcEN0ID0gdG0uYWxsb2NCdWZmKGJ1ZmZDdCk7XG5cbiAgICAgICAgY29uc3QgciA9ICEhdG0uaW5zdGFuY2UuZXhwb3J0cy5mdG1fZXEocFJlcywgcEN0KTtcblxuICAgICAgICB0bS5lbmRTeW5jT3AoKTtcblxuICAgICAgICByZXR1cm4gcjtcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcxID0gZnVuY3Rpb24ocCkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQID0gdGhpcy50bS5hbGxvY0J1ZmYocCk7XG4gICAgICAgIGNvbnN0IHBQcmVwUCA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVQU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzFcIl0ocFAsIHBQcmVwUCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFAsIHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5wcmVwYXJlRzIgPSBmdW5jdGlvbihxKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFEgPSB0aGlzLnRtLmFsbG9jQnVmZihxKTtcbiAgICAgICAgY29uc3QgcFByZXBRID0gdGhpcy50bS5hbGxvYyh0aGlzLnByZVFTaXplKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX3ByZXBhcmVHMlwiXShwUSwgcFByZXBRKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBQcmVwUSwgdGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLm1pbGxlckxvb3AgPSBmdW5jdGlvbihwcmVQLCBwcmVRKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFByZVAgPSB0aGlzLnRtLmFsbG9jQnVmZihwcmVQKTtcbiAgICAgICAgY29uc3QgcFByZVEgPSB0aGlzLnRtLmFsbG9jQnVmZihwcmVRKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9taWxsZXJMb29wXCJdKHBQcmVQLCBwUHJlUSwgcFJlcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUmVzLCB0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUuZmluYWxFeHBvbmVudGlhdGlvbiA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwQSA9IHRoaXMudG0uYWxsb2NCdWZmKGEpO1xuICAgICAgICBjb25zdCBwUmVzID0gdGhpcy50bS5hbGxvYyh0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIl0ocEEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxufVxuXG5jb25zdCBwVFNpemVzID0gW1xuICAgIDEgLCAgMSwgIDEsICAxLCAgICAyLCAgMywgIDQsICA1LFxuICAgIDYgLCAgNywgIDcsICA4LCAgICA5LCAxMCwgMTEsIDEyLFxuICAgIDEzLCAxMywgMTQsIDE1LCAgIDE2LCAxNiwgMTcsIDE3LFxuICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3XG5dO1xuXG5mdW5jdGlvbiBidWlsZE11bHRpZXhwKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX211bHRpRXhwQ2h1bmsoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgaW5UeXBlLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgaWYgKCAhIChidWZmQmFzZXMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSApIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmQmFzZXMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmQmFzZXMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoICEgKGJ1ZmZTY2FsYXJzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmU2NhbGFycyBpcyBub3QgVWludDhBcnJheWApO1xuICAgICAgICB9XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuXG4gICAgICAgIGxldCBzR0luO1xuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fbXVsdGlleHBBZmZpbmVfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkJhc2VzLmJ5dGVMZW5ndGggLyBzR0luKTtcblxuICAgICAgICBpZiAoblBvaW50cyA9PSAwKSByZXR1cm4gRy56ZXJvO1xuICAgICAgICBjb25zdCBzU2NhbGFyID0gTWF0aC5mbG9vcihidWZmU2NhbGFycy5ieXRlTGVuZ3RoIC8gblBvaW50cyk7XG4gICAgICAgIGlmKCBzU2NhbGFyICogblBvaW50cyAhPSBidWZmU2NhbGFycy5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2FsYXIgc2l6ZSBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJpdENodW5rU2l6ZSA9IHBUU2l6ZXNbbG9nMihuUG9pbnRzKV07XG4gICAgICAgIGNvbnN0IG5DaHVua3MgPSBNYXRoLmZsb29yKChzU2NhbGFyKjggLSAxKSAvIGJpdENodW5rU2l6ZSkgKzE7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQmFzZXN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmU2NhbGFyc30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc1NjYWxhcn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBpKmJpdENodW5rU2l6ZX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IE1hdGgubWluKHNTY2FsYXIqOCAtIGkqYml0Q2h1bmtTaXplLCBiaXRDaHVua1NpemUpfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn1cbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBHLkYubjgqM31cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgRy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCByZXMgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRy5pc1plcm8ocmVzKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxiaXRDaHVua1NpemU7IGorKykgcmVzID0gRy5kb3VibGUocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IEcuYWRkKHJlcywgcmVzdWx0W2ldWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAyMjtcbiAgICAgICAgY29uc3QgTUlOX0NIVU5LX1NJWkUgPSAxIDw8IDEwO1xuICAgICAgICBsZXQgc0dJbjtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkJhc2VzLmJ5dGVMZW5ndGggLyBzR0luKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIEcuemVybztcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGxldCBjaHVua1NpemU7XG4gICAgICAgIGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvICh0bS5jb25jdXJyZW5jeSAvbkNodW5rcykpO1xuICAgICAgICBpZiAoY2h1bmtTaXplPk1BWF9DSFVOS19TSVpFKSBjaHVua1NpemUgPSBNQVhfQ0hVTktfU0laRTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZTxNSU5fQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUlOX0NIVU5LX1NJWkU7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgTXVsdGlleHAgc3RhcnQ6ICR7bG9nVGV4dH06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cyAtIGksIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICBjb25zdCBidWZmQmFzZXNDaHVuayA9IGJ1ZmZCYXNlcy5zbGljZShpKnNHSW4sIChpK24pKnNHSW4pO1xuICAgICAgICAgICAgY29uc3QgYnVmZlNjYWxhcnNDaHVuayA9IGJ1ZmZTY2FsYXJzLnNsaWNlKGkqc1NjYWxhciwgKGkrbikqc1NjYWxhcik7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goX211bHRpRXhwQ2h1bmsoYnVmZkJhc2VzQ2h1bmssIGJ1ZmZTY2FsYXJzQ2h1bmssIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgTXVsdGlleHAgZW5kOiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCByZXMgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHJlcyA9IEcuYWRkKHJlcywgcmVzdWx0W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgRy5tdWx0aUV4cCA9IGFzeW5jIGZ1bmN0aW9uIG11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xuICAgIEcubXVsdGlFeHBBZmZpbmUgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImFmZmluZVwiLCBsb2dnZXIsIGxvZ1RleHQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRkZUKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gRy50bTtcbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0KGJ1ZmYsIGludmVyc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcblxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgb3V0VHlwZSA9IG91dFR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgY29uc3QgTUFYX0JJVFNfVEhSRUFEID0gMTQ7XG5cbiAgICAgICAgbGV0IHNJbiwgc01pZCwgc091dCwgZm5JbjJNaWQsIGZuTWlkMk91dCwgZm5GRlRNaXgsIGZuRkZUSm9pbiwgZm5GRlRGaW5hbDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuSW4yTWlkID0gXCJnMW1fYmF0Y2hUb0phY29iaWFuXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgICAgICBmbkZGVEZpbmFsID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgICAgIGZuRkZUTWl4ID0gXCJnMW1fZmZ0TWl4XCI7XG5cbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzJtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBHLm44O1xuICAgICAgICAgICAgc01pZCA9IEcubjg7XG4gICAgICAgICAgICBzT3V0ID0gRy5uODtcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZnJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZikpIHtcbiAgICAgICAgICAgIGJ1ZmYgPSBhcnJheTJidWZmZXIoYnVmZiwgc0luKTtcbiAgICAgICAgICAgIHJldHVybkFycmF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmYgPSBidWZmLnNsaWNlKDAsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZi5ieXRlTGVuZ3RoIC8gc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAgKCgxIDw8IGJpdHMpICE9IG5Qb2ludHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZmdCBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIiApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPT0gRnIucyArMSkge1xuICAgICAgICAgICAgbGV0IGJ1ZmZPdXQ7XG5cbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0SW52KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZmT3V0ID0gIGF3YWl0IF9mZnRFeHQoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIyYXJyYXkoYnVmZk91dCwgc091dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGludjtcbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGludiA9IEZyLmludihGci5lKG5Qb2ludHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgIGJ1ZmZSZXZlcnNlQml0cyhidWZmLCBzSW4pO1xuXG4gICAgICAgIGxldCBjaHVua3M7XG4gICAgICAgIGxldCBwb2ludHNJbkNodW5rID0gTWF0aC5taW4oMSA8PCBNQVhfQklUU19USFJFQUQsIG5Qb2ludHMpO1xuICAgICAgICBsZXQgbkNodW5rcyA9IG5Qb2ludHMgLyBwb2ludHNJbkNodW5rO1xuXG4gICAgICAgIHdoaWxlICgobkNodW5rcyA8IHRtLmNvbmN1cnJlbmN5KSYmKHBvaW50c0luQ2h1bms+PTE2KSkge1xuICAgICAgICAgICAgbkNodW5rcyAqPSAyO1xuICAgICAgICAgICAgcG9pbnRzSW5DaHVuayAvPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbDJDaHVuayA9IGxvZzIocG9pbnRzSW5DaHVuayk7XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAke2JpdHN9IG1peCBzdGFydDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDAsIGxlbjogc01pZCpwb2ludHNJbkNodW5rfSk7XG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmLnNsaWNlKCAocG9pbnRzSW5DaHVuayAqIGkpKnNJbiwgKHBvaW50c0luQ2h1bmsgKiAoaSsxKSkqc0luKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZDaHVua30pO1xuICAgICAgICAgICAgaWYgKGZuSW4yTWlkKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5JbjJNaWQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGo9MTsgajw9bDJDaHVuaztqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkZGVE1peCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YWw6IGp9XX0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobDJDaHVuaz09Yml0cykge1xuICAgICAgICAgICAgICAgIGlmIChmbkZGVEZpbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZm5NaWQyT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzSW5DaHVuaypzT3V0fSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6MCwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggZW5kOiAke2l9LyR7bkNodW5rc31gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykgY2h1bmtzW2ldID0gY2h1bmtzW2ldWzBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBsMkNodW5rKzE7ICAgaTw9Yml0czsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICAke2JpdHN9ICBqb2luOiAke2l9LyR7Yml0c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG5Hcm91cHMgPSAxIDw8IChiaXRzIC0gaSk7XG4gICAgICAgICAgICBjb25zdCBuQ2h1bmtzUGVyR3JvdXAgPSBuQ2h1bmtzIC8gbkdyb3VwcztcbiAgICAgICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBGci5leHAoIEZyLndbaV0sIGsqcG9pbnRzSW5DaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPT1iaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogNCwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogNH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjoxfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDF9XX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc01pZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c0luQ2h1bmsqc01pZH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAke2JpdHN9IGpvaW4gICR7aX0vJHtiaXRzfSAgJHtqKzF9LyR7bkdyb3Vwc30gJHtrfS8ke25DaHVua3NQZXJHcm91cC8yfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzQ2h1bmsgPSByZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28xXSA9IHJlc0NodW5rWzBdO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKChwb2ludHNJbkNodW5rLTEpKnNPdXQpKTtcbiAgICAgICAgICAgIGxldCBwPSBzT3V0O1xuICAgICAgICAgICAgZm9yIChsZXQgaT1uQ2h1bmtzLTE7IGk+MDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwKTtcbiAgICAgICAgICAgICAgICBwICs9IHBvaW50c0luQ2h1bmsqc091dDtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldOyAgLy8gTGliZXJhdGUgbWVtXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmT3V0LnNldChjaHVua3NbMF0uc2xpY2UoMCwgKHBvaW50c0luQ2h1bmstMSkqc091dCksIHApO1xuICAgICAgICAgICAgZGVsZXRlIGNodW5rc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBidWZmT3V0LnNldChjaHVua3NbaV0sIHBvaW50c0luQ2h1bmsqc091dCppKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldHVybkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgbGV0IGIxLCBiMjtcbiAgICAgICAgYjEgPSBidWZmLnNsaWNlKCAwICwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBiMiA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgW2IxLCBiMl0gPSBhd2FpdCBfZmZ0Sm9pbkV4dChiMSwgYjIsIFwiZmZ0Sm9pbkV4dFwiLCBGci5vbmUsIEZyLnNoaWZ0LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIGZhbHNlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjIsIGZhbHNlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG5cbiAgICAgICAgY29uc3QgcmVzMSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHJlczFbMF0uYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHJlczFbMF0uYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldChyZXMxWzBdKTtcbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVsxXSwgcmVzMVswXS5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0RXh0SW52KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgbGV0IGIxLCBiMjtcbiAgICAgICAgYjEgPSBidWZmLnNsaWNlKCAwICwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBiMiA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdChiMSwgdHJ1ZSwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjIsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBfZmZ0Sm9pbkV4dChiMSwgYjIsIFwiZmZ0Sm9pbkV4dEludlwiLCBGci5vbmUsIEZyLnNoaWZ0SW52LCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHJlczFbMF0uYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHJlczFbMF0uYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldChyZXMxWzBdKTtcbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVsxXSwgcmVzMVswXS5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9mZnRKb2luRXh0KGJ1ZmYxLCBidWZmMiwgZm4sIGZpcnN0LCBpbmMsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwxNjtcbiAgICAgICAgY29uc3QgTUlOX0NIVU5LX1NJWkUgPSAxPDw0O1xuXG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGxldCBmbkluMk1pZCwgZm5NaWQyT3V0O1xuICAgICAgICBsZXQgc091dCwgc0luLCBzTWlkO1xuXG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX1wiK2ZuO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzJtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX1wiK2ZuO1xuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBGci5uODtcbiAgICAgICAgICAgIHNPdXQgPSBGci5uODtcbiAgICAgICAgICAgIHNNaWQgPSBGci5uODtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX1wiICsgZm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1ZmYxLmJ5dGVMZW5ndGggIT0gYnVmZjIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmMS5ieXRlTGVuZ3RoIC8gc0luKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2h1bmtTaXplID0gTWF0aC5mbG9vcihuUG9pbnRzIC90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGlmIChjaHVua1NpemUgPCBNSU5fQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUlOX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemUgPiBNQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdEpvaW5FeHQgU3RhcnQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cyAtIGksIGNodW5rU2l6ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Q2h1bmsgPSBGci5tdWwoZmlyc3QsIEZyLmV4cCggaW5jLCBpKSk7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGIxID0gYnVmZjEuc2xpY2UoaSpzSW4sIChpK24pKnNJbik7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDAsIGxlbjogc01pZCpufSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBiMX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBufSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5JbjJNaWQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgIHt2YWw6IEZyLnN9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjoxfSwge3ZhbDogbn0sIHt2YXI6IDF9XX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IG4qc091dH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IG4qc091dH0pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spLnRoZW4oIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IEVuZDogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0MTtcbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0MjtcbiAgICAgICAgaWYgKG5Qb2ludHMgKiBzT3V0ID4gMTw8MjgpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MS5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0Mi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtmdWxsQnVmZk91dDEsIGZ1bGxCdWZmT3V0Ml07XG4gICAgfVxuXG5cbiAgICBHLmZmdCA9IGFzeW5jIGZ1bmN0aW9uKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9mZnQoYnVmZiwgZmFsc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgIH07XG5cbiAgICBHLmlmZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIHRydWUsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgIH07XG5cbiAgICBHLmxhZ3JhbmdlRXZhbHVhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiAoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgb3V0VHlwZSA9IG91dFR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0luO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBGci5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZi5ieXRlTGVuZ3RoIC9zSW47XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGlmICgoMiAqKiBiaXRzKSpzSW4gIT0gYnVmZi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJsYWdyYW5nZUV2YWx1YXRpb25zIGlpbnZhbGlkIGlucHV0IHNpemVcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsYWdyYW5nZUV2YWx1YXRpb25zIGludmFsaWQgSW5wdXQgc2l6ZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzIDw9IEZyLnMpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBHLmlmZnQoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA+IEZyLnMrMSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnB1dCB0b28gYmlnXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnB1dCB0b28gYmlnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHQwID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgvMik7XG4gICAgICAgIGxldCB0MSA9IGJ1ZmYuc2xpY2UoYnVmZi5ieXRlTGVuZ3RoLzIsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG5cblxuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gRnIuZXhwKEZyLnNoaWZ0LCBuUG9pbnRzLzIpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBGci5pbnYoIEZyLnN1YihGci5vbmUsIHNoaWZ0VG9TbWFsbE0pKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IF9mZnRKb2luRXh0KHQwLCB0MSwgXCJwcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uXCIsIHNDb25zdCwgRnIuc2hpZnRJbnYsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHByZXBcIik7XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KHQwLCB0cnVlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0ICsgXCIgdDBcIikpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KHQxLCB0cnVlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0ICsgXCIgdDFcIikpO1xuXG4gICAgICAgIFt0MCwgdDFdID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAodDAuYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkodDAuYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQwKTtcbiAgICAgICAgYnVmZk91dC5zZXQodDEsIHQwLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgIH07XG5cbiAgICBHLmZmdE1peCA9IGFzeW5jIGZ1bmN0aW9uIGZmdE1peChidWZmKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuRkZUSm9pbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMW1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgY29uc3QgcG93ZXIgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGxldCBuQ2h1bmtzID0gMSA8PCBsb2cyKHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cbiAgICAgICAgY29uc3QgcG93ZXJDaHVuayA9IGxvZzIocG9pbnRzUGVyQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYiA9IGJ1ZmYuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBifSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PXBvd2VyQ2h1bms7IGorKykge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBqfVxuICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIGNodW5rc1tpXSA9IHJlc3VsdFtpXVswXTtcblxuXG4gICAgICAgIGZvciAobGV0IGkgPSBwb3dlckNodW5rKzE7IGk8PXBvd2VyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5Hcm91cHMgPSAxIDw8IChwb3dlciAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c1BlckNodW5rKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5jID0gRnIud1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNodW5rc1tvMV19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBjaHVua3NbbzJdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3R9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZUSm9pbiwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzQ2h1bmsgPSByZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28xXSA9IHJlc0NodW5rWzBdO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICBwKz1jaHVua3NbaV0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRKb2luID0gYXN5bmMgZnVuY3Rpb24gZmZ0Sm9pbihidWZmMSwgYnVmZjIsIGZpcnN0LCBpbmMpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGlmIChuUG9pbnRzIDw9IG5DaHVua3MqMikgbkNodW5rcyA9IDE7XG5cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBuUG9pbnRzIC8gbkNodW5rcztcblxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoaW5jLCBpKnBvaW50c1BlckNodW5rKSk7XG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGIyID0gYnVmZjIuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBiMX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBiMn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdENodW5rfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChidWZmMSBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0cpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MS5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0Mi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtmdWxsQnVmZk91dDEsIGZ1bGxCdWZmT3V0Ml07XG4gICAgfTtcblxuXG5cbiAgICBHLmZmdEZpbmFsID0gIGFzeW5jIGZ1bmN0aW9uIGZmdEZpbmFsKGJ1ZmYsIGZhY3Rvcikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBjb25zdCBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICBsZXQgZm5OYW1lLCBmblRvQWZmaW5lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoIC8gc0cpO1xuICAgICAgICBpZiAoblBvaW50cyAhPSAxIDw8IGxvZzIoblBvaW50cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50c1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gdG0uY29uY3VycmVuY3kpO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csIChpKnBvaW50c1BlckNodW5rK24pKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBmYWN0b3J9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuVG9BZmZpbmUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IG4qc0dvdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRW5naW5lKHBhcmFtcykge1xuXG4gICAgY29uc3QgdG0gPSBhd2FpdCBidWlsZFRocmVhZE1hbmFnZXIocGFyYW1zLndhc20sIHBhcmFtcy5zaW5nbGVUaHJlYWQpO1xuXG5cbiAgICBjb25zdCBjdXJ2ZSA9IHt9O1xuXG4gICAgY3VydmUucSA9IGUocGFyYW1zLndhc20ucS50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5yID0gZShwYXJhbXMud2FzbS5yLnRvU3RyaW5nKCkpO1xuICAgIGN1cnZlLm5hbWUgPSBwYXJhbXMubmFtZTtcbiAgICBjdXJ2ZS50bSA9IHRtO1xuICAgIGN1cnZlLnByZVBTaXplID0gcGFyYW1zLndhc20ucHJlUFNpemU7XG4gICAgY3VydmUucHJlUVNpemUgPSBwYXJhbXMud2FzbS5wcmVRU2l6ZTtcbiAgICBjdXJ2ZS5GciA9IG5ldyBXYXNtRmllbGQxKHRtLCBcImZybVwiLCBwYXJhbXMubjhyLCBwYXJhbXMucik7XG4gICAgY3VydmUuRjEgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmMW1cIiwgcGFyYW1zLm44cSwgcGFyYW1zLnEpO1xuICAgIGN1cnZlLkYyID0gbmV3IFdhc21GaWVsZDIodG0sIFwiZjJtXCIsIGN1cnZlLkYxKTtcbiAgICBjdXJ2ZS5HMSA9IG5ldyBXYXNtQ3VydmUodG0sIFwiZzFtXCIsIGN1cnZlLkYxLCBwYXJhbXMud2FzbS5wRzFnZW4sIHBhcmFtcy53YXNtLnBHMWIsIHBhcmFtcy5jb2ZhY3RvckcxKTtcbiAgICBjdXJ2ZS5HMiA9IG5ldyBXYXNtQ3VydmUodG0sIFwiZzJtXCIsIGN1cnZlLkYyLCBwYXJhbXMud2FzbS5wRzJnZW4sIHBhcmFtcy53YXNtLnBHMmIsIHBhcmFtcy5jb2ZhY3RvckcyKTtcbiAgICBjdXJ2ZS5GNiA9IG5ldyBXYXNtRmllbGQzKHRtLCBcImY2bVwiLCBjdXJ2ZS5GMik7XG4gICAgY3VydmUuRjEyID0gbmV3IFdhc21GaWVsZDIodG0sIFwiZnRtXCIsIGN1cnZlLkY2KTtcblxuICAgIGN1cnZlLkd0ID0gY3VydmUuRjEyO1xuXG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkcxXCIpO1xuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMlwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcxXCIpO1xuICAgIGJ1aWxkTXVsdGlleHAoY3VydmUsIFwiRzJcIik7XG5cbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJHMlwiKTtcbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJGclwiKTtcblxuICAgIGJ1aWxkUGFpcmluZyhjdXJ2ZSk7XG5cbiAgICBjdXJ2ZS5hcnJheTJidWZmZXIgPSBmdW5jdGlvbihhcnIsIHNHKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRyphcnIubGVuZ3RoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBidWZmLnNldChhcnJbaV0sIGkqc0cpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfTtcblxuICAgIGN1cnZlLmJ1ZmZlcjJhcnJheSA9IGZ1bmN0aW9uKGJ1ZmYgLCBzRykge1xuICAgICAgICBjb25zdCBuPSBidWZmLmJ5dGVMZW5ndGggLyBzRztcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkqc0csIGkqc0crc0cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZnVuY3Rpb24gdG9OdW1iZXIobikge1xuICAgIHJldHVybiBCaWdJbnQobik7XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUobikge1xuICAgIHJldHVybiBuIDwgMG47XG59XG5cbmZ1bmN0aW9uIGlzWmVybyhuKSB7XG4gICAgcmV0dXJuIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgobikge1xuICAgIGlmIChpc05lZ2F0aXZlKG4pKSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aCAtIDE7IC8vIGRpc2NhcmQgdGhlIC0gc2lnblxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHUzMihuKSB7XG4gICAgY29uc3QgYiA9IFtdO1xuICAgIGNvbnN0IHYgPSB0b051bWJlcihuKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiA4biAmIDB4RkZuKSk7XG4gICAgYi5wdXNoKE51bWJlcih2ID4+IDE2biAmIDB4RkZuKSk7XG4gICAgYi5wdXNoKE51bWJlcih2ID4+IDI0biAmIDB4RkZuKSk7XG4gICAgcmV0dXJuIGI7XG59XG5cbmZ1bmN0aW9uIHRvVVRGOEFycmF5KHN0cikge1xuICAgIHZhciB1dGY4ID0gW107XG4gICAgZm9yICh2YXIgaT0wOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpO1xuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ODAwKSB7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhjMCB8IChjaGFyY29kZSA+PiA2KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYXJjb2RlIDwgMHhkODAwIHx8IGNoYXJjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4ZTAgfCAoY2hhcmNvZGUgPj4gMTIpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlPj42KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3Vycm9nYXRlIHBhaXJcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XG4gICAgICAgICAgICAvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXG4gICAgICAgICAgICAvLyAyMCBiaXRzIG9mIDB4MC0weEZGRkZGIGludG8gdHdvIGhhbHZlc1xuICAgICAgICAgICAgY2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZik8PDEwKVxuICAgICAgICAgICAgICAgICAgICAgIHwgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKTtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+MTgpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlPj4xMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dGY4O1xufVxuXG5mdW5jdGlvbiBzdHJpbmcoc3RyKSB7XG4gICAgY29uc3QgYnl0ZXMgPSB0b1VURjhBcnJheShzdHIpO1xuICAgIHJldHVybiBbIC4uLnZhcnVpbnQzMihieXRlcy5sZW5ndGgpLCAuLi5ieXRlcyBdO1xufVxuXG5mdW5jdGlvbiB2YXJ1aW50KG4pIHtcbiAgICBjb25zdCBjb2RlID0gW107XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAoaXNOZWdhdGl2ZSh2KSkgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGNhbm5vdCBiZSBuZWdhdGl2ZVwiKTtcbiAgICB3aGlsZSAoIWlzWmVybyh2KSkge1xuICAgICAgICBjb2RlLnB1c2goTnVtYmVyKHYgJiAweDdGbikpO1xuICAgICAgICB2ID0gdiA+PiA3bjtcbiAgICB9XG4gICAgaWYgKGNvZGUubGVuZ3RoPT0wKSBjb2RlLnB1c2goMCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGNvZGUubGVuZ3RoLTE7IGkrKykge1xuICAgICAgICBjb2RlW2ldID0gY29kZVtpXSB8IDB4ODA7XG4gICAgfVxuICAgIHJldHVybiBjb2RlO1xufVxuXG5mdW5jdGlvbiB2YXJpbnQoX24pIHtcbiAgICBsZXQgbiwgc2lnbjtcbiAgICBjb25zdCBiaXRzID0gYml0TGVuZ3RoKF9uKTtcbiAgICBpZiAoX248MCkge1xuICAgICAgICBzaWduID0gdHJ1ZTtcbiAgICAgICAgbiA9ICgxbiA8PCBCaWdJbnQoYml0cykpICsgX247XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbiA9IGZhbHNlO1xuICAgICAgICBuID0gdG9OdW1iZXIoX24pO1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nQml0cyA9IDcgLSAoYml0cyAlIDcpO1xuXG4gICAgY29uc3QgcGFkZGluZyA9ICgoMW4gPDwgQmlnSW50KHBhZGRpbmdCaXRzKSkgLSAxbikgPDwgQmlnSW50KGJpdHMpO1xuICAgIGNvbnN0IHBhZGRpbmdNYXNrID0gKCgxIDw8ICg3IC0gcGFkZGluZ0JpdHMpKS0xKSB8IDB4ODA7XG5cbiAgICBjb25zdCBjb2RlID0gdmFydWludChuICsgcGFkZGluZyk7XG5cbiAgICBpZiAoIXNpZ24pIHtcbiAgICAgICAgY29kZVtjb2RlLmxlbmd0aC0xXSA9IGNvZGVbY29kZS5sZW5ndGgtMV0gJiBwYWRkaW5nTWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50MzIobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGbikgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgaWYgKHYgPiAweDdGRkZGRkZGbikgdiA9IHYgLSAweDEwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwXCIsIDE2KSBhcyBiYXNlMTBcbiAgICBpZiAodiA8IC0yMTQ3NDgzNjQ4bikgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBzbWFsbFwiKTtcbiAgICByZXR1cm4gdmFyaW50KHYpO1xufVxuXG5mdW5jdGlvbiB2YXJpbnQ2NChuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRkZGRkZGRkZGbikgdiA9IHYgLSAweDEwMDAwMDAwMDAwMDAwMDAwbjtcbiAgICAvLyBiaWdJbnQoXCItODAwMDAwMDAwMDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFydWludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIHJldHVybiB2YXJ1aW50KHYpO1xufVxuXG5mdW5jdGlvbiB0b0hleFN0cmluZyhieXRlQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShieXRlQXJyYXksIGZ1bmN0aW9uKGJ5dGUpIHtcbiAgICAgICAgcmV0dXJuIChcIjBcIiArIChieXRlICYgMHhGRikudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG4gICAgfSkuam9pbihcIlwiKTtcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBDb2RlQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZnVuYykge1xuICAgICAgICB0aGlzLmZ1bmMgPSBmdW5jO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGZ1bmMuZnVuY3Rpb25OYW1lO1xuICAgICAgICB0aGlzLm1vZHVsZSA9IGZ1bmMubW9kdWxlO1xuICAgIH1cblxuICAgIHNldExvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMSwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgdGVlTG9jYWwobG9jYWxOYW1lLCB2YWxDb2RlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsuLi52YWxDb2RlLCAweDIyLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbChsb2NhbE5hbWUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWzB4MjAsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkOF9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyA4IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMwLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyA4IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMxLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzIsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQxNl91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiBfYWxpZ247ICAvLyAxNiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM0LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMzJfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAyIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzUsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMyA6IF9hbGlnbjsgIC8vIDY0IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI5LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAzO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAzO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzNywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfc3RvcmUzMihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2UsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpNjRfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2QsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpNjRfc3RvcmU4KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmUsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQxNl91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAyIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MjgsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAyO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAyO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzNiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGkzMl9zdG9yZTE2KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAxO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAxO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfc3RvcmU4KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBjYWxsKGZuTmFtZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLm1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZ1bmN0aW9uIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHtmbk5hbWV9YCk7XG4gICAgICAgIHJldHVybiBbLi4uW10uY29uY2F0KC4uLmFyZ3MpLCAweDEwLCAuLi52YXJ1aW50MzIoaWR4KV07XG4gICAgfVxuXG4gICAgY2FsbF9pbmRpcmVjdChmbklkeCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgLi4uZm5JZHgsIDB4MTEsIDAsIDBdO1xuICAgIH1cblxuICAgIGlmKGNvbmRDb2RlLCB0aGVuQ29kZSwgZWxzZUNvZGUpIHtcbiAgICAgICAgaWYgKGVsc2VDb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDA0LCAweDQwLCAuLi50aGVuQ29kZSwgMHgwNSwgLi4uZWxzZUNvZGUsIDB4MGJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MGJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmxvY2soYkNvZGUpIHsgcmV0dXJuIFsweDAyLCAweDQwLCAuLi5iQ29kZSwgMHgwYl07IH1cbiAgICBsb29wKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsweDAzLCAweDQwLCAuLi5bXS5jb25jYXQoLi4uWy4uLmFyZ3NdKSwgMHgwYl07XG4gICAgfVxuICAgIGJyX2lmKHJlbFBhdGgsIGNvbmRDb2RlKSB7IHJldHVybiBbLi4uY29uZENvZGUsIDB4MGQsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICBicihyZWxQYXRoKSB7IHJldHVybiBbMHgwYywgLi4udmFydWludDMyKHJlbFBhdGgpXTsgfVxuICAgIHJldChyQ29kZSkgeyByZXR1cm4gWy4uLnJDb2RlLCAweDBmXTsgfVxuICAgIGRyb3AoZENvZGUpIHsgcmV0dXJuIFsuLi5kQ29kZSwgIDB4MWFdOyB9XG5cbiAgICBpNjRfY29uc3QobnVtKSB7IHJldHVybiBbMHg0MiwgLi4udmFyaW50NjQobnVtKV07IH1cbiAgICBpMzJfY29uc3QobnVtKSB7IHJldHVybiBbMHg0MSwgLi4udmFyaW50MzIobnVtKV07IH1cblxuXG4gICAgaTY0X2VxeihvcGNvZGUpIHsgcmV0dXJuIFsuLi5vcGNvZGUsIDB4NTBdOyB9XG4gICAgaTY0X2VxKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDUxXTsgfVxuICAgIGk2NF9uZShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1Ml07IH1cbiAgICBpNjRfbHRfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1M107IH1cbiAgICBpNjRfbHRfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1NF07IH1cbiAgICBpNjRfZ3RfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1NV07IH1cbiAgICBpNjRfZ3RfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1Nl07IH1cbiAgICBpNjRfbGVfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1N107IH1cbiAgICBpNjRfbGVfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1OF07IH1cbiAgICBpNjRfZ2VfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1OV07IH1cbiAgICBpNjRfZ2VfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1YV07IH1cbiAgICBpNjRfYWRkKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdjXTsgfVxuICAgIGk2NF9zdWIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2RdOyB9XG4gICAgaTY0X211bChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3ZV07IH1cbiAgICBpNjRfZGl2X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2ZdOyB9XG4gICAgaTY0X2Rpdl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgwXTsgfVxuICAgIGk2NF9yZW1fcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MV07IH1cbiAgICBpNjRfcmVtX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODJdOyB9XG4gICAgaTY0X2FuZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4M107IH1cbiAgICBpNjRfb3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODRdOyB9XG4gICAgaTY0X3hvcihvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4NV07IH1cbiAgICBpNjRfc2hsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg2XTsgfVxuICAgIGk2NF9zaHJfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4N107IH1cbiAgICBpNjRfc2hyX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODhdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfcyhvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhY107IH1cbiAgICBpNjRfZXh0ZW5kX2kzMl91KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweGFkXTsgfVxuICAgIGk2NF9jbHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NzldOyB9XG4gICAgaTY0X2N0eihvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHg3YV07IH1cblxuICAgIGkzMl9lcXoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NDVdOyB9XG4gICAgaTMyX2VxKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDQ2XTsgfVxuICAgIGkzMl9uZShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0N107IH1cbiAgICBpMzJfbHRfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0OF07IH1cbiAgICBpMzJfbHRfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0OV07IH1cbiAgICBpMzJfZ3RfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0YV07IH1cbiAgICBpMzJfZ3RfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Yl07IH1cbiAgICBpMzJfbGVfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Y107IH1cbiAgICBpMzJfbGVfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0ZF07IH1cbiAgICBpMzJfZ2VfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0ZV07IH1cbiAgICBpMzJfZ2VfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Zl07IH1cbiAgICBpMzJfYWRkKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZhXTsgfVxuICAgIGkzMl9zdWIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmJdOyB9XG4gICAgaTMyX211bChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2Y107IH1cbiAgICBpMzJfZGl2X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmRdOyB9XG4gICAgaTMyX2Rpdl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZlXTsgfVxuICAgIGkzMl9yZW1fcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2Zl07IH1cbiAgICBpMzJfcmVtX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzBdOyB9XG4gICAgaTMyX2FuZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3MV07IH1cbiAgICBpMzJfb3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzJdOyB9XG4gICAgaTMyX3hvcihvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3M107IH1cbiAgICBpMzJfc2hsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc0XTsgfVxuICAgIGkzMl9zaHJfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NV07IH1cbiAgICBpMzJfc2hyX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzZdOyB9XG4gICAgaTMyX3JvdGwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzddOyB9XG4gICAgaTMyX3JvdHIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzhdOyB9XG4gICAgaTMyX3dyYXBfaTY0KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweGE3XTsgfVxuICAgIGkzMl9jbHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjddOyB9XG4gICAgaTMyX2N0eihvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHg2OF07IH1cblxuICAgIHVucmVhY2hhYmxlKCkgeyByZXR1cm4gWyAweDAgXTsgfVxuXG4gICAgY3VycmVudF9tZW1vcnkoKSB7IHJldHVybiBbIDB4M2YsIDBdOyB9XG5cbiAgICBjb21tZW50KCkgeyByZXR1cm4gW107IH1cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jb25zdCB0eXBlQ29kZXMgPSB7XG4gICAgXCJpMzJcIjogMHg3ZixcbiAgICBcImk2NFwiOiAweDdlLFxuICAgIFwiZjMyXCI6IDB4N2QsXG4gICAgXCJmNjRcIjogMHg3YyxcbiAgICBcImFueWZ1bmNcIjogMHg3MCxcbiAgICBcImZ1bmNcIjogMHg2MCxcbiAgICBcImVtcHR5YmxvY2tcIjogMHg0MFxufTtcblxuXG5jbGFzcyBGdW5jdGlvbkJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IgKG1vZHVsZSwgZm5OYW1lLCBmblR5cGUsIG1vZHVsZU5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICBpZiAoZm5UeXBlID09IFwiaW1wb3J0XCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm5UeXBlID0gXCJpbXBvcnRcIjtcbiAgICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTmFtZSA9IGZpZWxkTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChmblR5cGUgPT0gXCJpbnRlcm5hbFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW50ZXJuYWxcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZnVuY3Rpb24gZm5UeXBlOiBcIiArIGZuVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2R1bGUgPSBtb2R1bGU7XG4gICAgICAgIHRoaXMuZm5OYW1lID0gZm5OYW1lO1xuICAgICAgICB0aGlzLnBhcmFtcyA9IFtdO1xuICAgICAgICB0aGlzLmxvY2FscyA9IFtdO1xuICAgICAgICB0aGlzLmxvY2FsSWR4QnlOYW1lID0ge307XG4gICAgICAgIHRoaXMuY29kZSA9IFtdO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRMb2NhbCA9MDtcbiAgICB9XG5cbiAgICBhZGRQYXJhbShwYXJhbU5hbWUsIHBhcmFtVHlwZSkge1xuICAgICAgICBpZiAodGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXJhbSBhbHJlYWR5IGV4aXN0cy4gRnVuY3Rpb246ICR7dGhpcy5mbk5hbWV9LCBQYXJhbTogJHtwYXJhbU5hbWV9IGApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLm5leHRMb2NhbCsrO1xuICAgICAgICB0aGlzLmxvY2FsSWR4QnlOYW1lW3BhcmFtTmFtZV0gPSBpZHg7XG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogcGFyYW1UeXBlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZExvY2FsKGxvY2FsTmFtZSwgbG9jYWxUeXBlLCBfbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IF9sZW5ndGggfHwgMTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbG9jYWwgYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLmxvY2Fscy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsVHlwZSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuZ3RoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFJldHVyblR5cGUocmV0dXJuVHlwZSkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5UeXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXR1cm5UeXBlIGFscmVhZHkgZGVmaW5lZC4gRnVuY3Rpb246ICR7dGhpcy5mbk5hbWV9YCk7XG4gICAgICAgIHRoaXMucmV0dXJuVHlwZSA9IHJldHVyblR5cGU7XG4gICAgfVxuXG4gICAgZ2V0U2lnbmF0dXJlKCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBbLi4udmFydWludDMyKHRoaXMucGFyYW1zLmxlbmd0aCksIC4uLnRoaXMucGFyYW1zLm1hcCgocCkgPT4gdHlwZUNvZGVzW3AudHlwZV0pXTtcbiAgICAgICAgY29uc3QgcmV0dXJucyA9IHRoaXMucmV0dXJuVHlwZSA/IFsweDAxLCB0eXBlQ29kZXNbdGhpcy5yZXR1cm5UeXBlXV0gOiBbMF07XG4gICAgICAgIHJldHVybiBbMHg2MCwgLi4ucGFyYW1zLCAuLi5yZXR1cm5zXTtcbiAgICB9XG5cbiAgICBnZXRCb2R5KCkge1xuICAgICAgICBjb25zdCBsb2NhbHMgPSB0aGlzLmxvY2Fscy5tYXAoKGwpID0+IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMihsLmxlbmd0aCksXG4gICAgICAgICAgICB0eXBlQ29kZXNbbC50eXBlXVxuICAgICAgICBdKTtcblxuICAgICAgICBjb25zdCBib2R5ID0gW1xuICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMubG9jYWxzLmxlbmd0aCksXG4gICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4ubG9jYWxzKSxcbiAgICAgICAgICAgIC4uLnRoaXMuY29kZSxcbiAgICAgICAgICAgIDB4MGJcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMihib2R5Lmxlbmd0aCksXG4gICAgICAgICAgICAuLi5ib2R5XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgYWRkQ29kZSguLi5jb2RlKSB7XG4gICAgICAgIHRoaXMuY29kZS5wdXNoKC4uLltdLmNvbmNhdCguLi5bLi4uY29kZV0pKTtcbiAgICB9XG5cbiAgICBnZXRDb2RlQnVpbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2RlQnVpbGRlcih0aGlzKTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgTW9kdWxlQnVpbGRlciB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgPSAwO1xuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucyA9MDtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IDEsXG4gICAgICAgICAgICBtb2R1bGVOYW1lOiBcImVudlwiLFxuICAgICAgICAgICAgZmllbGROYW1lOiBcIm1lbW9yeVwiXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnJlZSA9IDg7XG4gICAgICAgIHRoaXMuZGF0YXMgPSBbXTtcbiAgICAgICAgdGhpcy5tb2R1bGVzID0ge307XG4gICAgICAgIHRoaXMuZXhwb3J0cyA9IFtdO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uc1RhYmxlID0gW107XG4gICAgfVxuXG4gICAgYnVpbGQoKSB7XG4gICAgICAgIHRoaXMuX3NldFNpZ25hdHVyZXMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgIC4uLnUzMigweDZkNzM2MTAwKSxcbiAgICAgICAgICAgIC4uLnUzMigxKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkVHlwZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRJbXBvcnQoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRnVuY3Rpb25zVGFibGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRXhwb3J0cygpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRFbGVtZW50cygpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRDb2RlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZERhdGEoKVxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBhZGRGdW5jdGlvbihmbk5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBhbHJlYWR5IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdID0gaWR4O1xuXG4gICAgICAgIHRoaXMuZnVuY3Rpb25zLnB1c2gobmV3IEZ1bmN0aW9uQnVpbGRlcih0aGlzLCBmbk5hbWUsIFwiaW50ZXJuYWxcIikpO1xuXG4gICAgICAgIHRoaXMubkludGVybmFsRnVuY3Rpb25zKys7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tpZHhdO1xuICAgIH1cblxuICAgIGFkZElpbXBvcnRGdW5jdGlvbihmbk5hbWUsIG1vZHVsZU5hbWUsIF9maWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBhbHJlYWR5IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGlmICggICh0aGlzLmZ1bmN0aW9ucy5sZW5ndGg+MClcbiAgICAgICAgICAgICYmKHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zLmxlbmd0aC0xXS50eXBlID09IFwiaW50ZXJuYWxcIikpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydCBmdW5jdGlvbnMgbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUgaW50ZXJuYWw6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSBfZmllbGROYW1lIHx8IGZuTmFtZTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImltcG9ydFwiLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpKTtcblxuICAgICAgICB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgKys7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tpZHhdO1xuICAgIH1cblxuICAgIHNldE1lbW9yeShwYWdlc1NpemUsIG1vZHVsZU5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICB0aGlzLm1lbW9yeSA9IHtcbiAgICAgICAgICAgIHBhZ2VzU2l6ZTogcGFnZXNTaXplLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogbW9kdWxlTmFtZSB8fCBcImVudlwiLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUgfHwgXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGV4cG9ydEZ1bmN0aW9uKGZuTmFtZSwgX2V4cG9ydE5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0TmFtZSA9IF9leHBvcnROYW1lIHx8IGZuTmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogJHtmbk5hbWV9YCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGV4cG9ydE5hbWUgIT0gZm5OYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2V4cG9ydE5hbWVdID0gaWR4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgIGV4cG9ydE5hbWU6IGV4cG9ydE5hbWUsXG4gICAgICAgICAgICBpZHg6IGlkeFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRGdW5jdGlvblRvVGFibGUoZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZS5wdXNoKGlkeCk7XG4gICAgfVxuXG4gICAgYWRkRGF0YShvZmZzZXQsIGJ5dGVzKSB7XG4gICAgICAgIHRoaXMuZGF0YXMucHVzaCh7XG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIGJ5dGVzOiBieXRlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvYyhhLCBiKSB7XG4gICAgICAgIGxldCBzaXplO1xuICAgICAgICBsZXQgYnl0ZXM7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSB8fCBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkpICYmICh0eXBlb2YoYikgPT09IFwidW5kZWZpbmVkXCIpKSB7XG4gICAgICAgICAgICBzaXplID0gYS5sZW5ndGg7XG4gICAgICAgICAgICBieXRlcyA9IGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaXplID0gYTtcbiAgICAgICAgICAgIGJ5dGVzID0gYjtcbiAgICAgICAgfVxuICAgICAgICBzaXplID0gKCgoc2l6ZS0xKT4+MykgKzEpPDwzOyAgICAgICAvLyBBbGlnbiB0byA2NCBiaXRzLlxuICAgICAgICBjb25zdCBwID0gdGhpcy5mcmVlO1xuICAgICAgICB0aGlzLmZyZWUgKz0gc2l6ZTtcbiAgICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZERhdGEocCwgYnl0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGFsbG9jU3RyaW5nKHMpIHtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBnbG9iYWxUaGlzLlRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IHVpbnQ4YXJyYXkgPSBlbmNvZGVyLmVuY29kZShzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsb2MoWy4uLnVpbnQ4YXJyYXksIDBdKTtcbiAgICB9XG5cbiAgICBfc2V0U2lnbmF0dXJlcygpIHtcbiAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gW107XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZUlkeEJ5TmFtZSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg+MCkge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5mdW5jdGlvbnNbdGhpcy5mdW5jdGlvbnNUYWJsZVswXV0uZ2V0U2lnbmF0dXJlKCk7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmVOYW1lID0gXCJzX1wiK3RvSGV4U3RyaW5nKHNpZ25hdHVyZSk7XG4gICAgICAgICAgICBzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV0gPSAwO1xuICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW2ldLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZihzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV0pID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gdGhpcy5zaWduYXR1cmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHggPSBzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV07XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIF9idWlsZFNlY3Rpb24oc2VjdGlvblR5cGUsIHNlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIFtzZWN0aW9uVHlwZSwgLi4udmFydWludDMyKHNlY3Rpb24ubGVuZ3RoKSwgLi4uc2VjdGlvbl07XG4gICAgfVxuXG4gICAgX2J1aWxkVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDEsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuc2lnbmF0dXJlcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLltdLmNvbmNhdCguLi50aGlzLnNpZ25hdHVyZXMpXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkSW1wb3J0KCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5tZW1vcnkubW9kdWxlTmFtZSksXG4gICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5tZW1vcnkuZmllbGROYW1lKSxcbiAgICAgICAgICAgIDB4MDIsXG4gICAgICAgICAgICAweDAwLCAgIC8vRmxhZ3Mgbm8gaW5pdCB2YWx1YVxuICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMubWVtb3J5LnBhZ2VzU2l6ZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMuZnVuY3Rpb25zW2ldLm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5maWVsZE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zW2ldLnNpZ25hdHVyZUlkeClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgdmFydWludDMyKGVudHJpZXMubGVuZ3RoKS5jb25jYXQoLi4uZW50cmllcylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbkRlY2xhcmF0aW9ucygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMyxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLlsuLi5lbnRyaWVzXVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEZ1bmN0aW9uc1RhYmxlKCkge1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNCxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMSksXG4gICAgICAgICAgICAgICAgMHg3MCwgMCwgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEVsZW1lbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGVbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwOSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMSksICAgICAgLy8gMSBlbnRyeVxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMigwKSwgICAgICAvLyBUYWJsZSAoMCBpbiBNVlApXG4gICAgICAgICAgICAgICAgMHg0MSwgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAwXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIoMCksXG4gICAgICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGgpLCAvLyBOdW1iZXIgb2YgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFeHBvcnRzKCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5leHBvcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmV4cG9ydHNbaV0uZXhwb3J0TmFtZSksXG4gICAgICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5leHBvcnRzW2ldLmlkeClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDA3LFxuICAgICAgICAgICAgdmFydWludDMyKGVudHJpZXMubGVuZ3RoKS5jb25jYXQoLi4uZW50cmllcylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRDb2RlKCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9dGhpcy5uSW1wb3J0RnVuY3Rpb25zOyBpPCB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgKyB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2godGhpcy5mdW5jdGlvbnNbaV0uZ2V0Qm9keSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwYSxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRGF0YSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICAuLi51MzIodGhpcy5mcmVlKVxuICAgICAgICBdKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCB0aGlzLmRhdGFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgMHg0MSxcbiAgICAgICAgICAgICAgICAuLi52YXJpbnQzMih0aGlzLmRhdGFzW2ldLm9mZnNldCksXG4gICAgICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5kYXRhc1tpXS5ieXRlcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGF0YXNbaV0uYnl0ZXMsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG59XG5cbmdsb2JhbFRoaXMuY3VydmVfYm4xMjggPSBudWxsO1xuXG5hc3luYyBmdW5jdGlvbiBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGlmICgoIXNpbmdsZVRocmVhZCkgJiYgKGdsb2JhbFRoaXMuY3VydmVfYm4xMjgpKSByZXR1cm4gZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyODtcblxuICAgIGNvbnN0IG1vZHVsZUJ1aWxkZXIgPSBuZXcgTW9kdWxlQnVpbGRlcigpO1xuICAgIG1vZHVsZUJ1aWxkZXIuc2V0TWVtb3J5KDI1KTtcbiAgICBidWlsZEJuMTI4JDEobW9kdWxlQnVpbGRlcik7XG5cbiAgICBpZiAocGx1Z2lucykgcGx1Z2lucyhtb2R1bGVCdWlsZGVyKTtcblxuICAgIGNvbnN0IGJuMTI4d2FzbSA9IHt9O1xuXG4gICAgYm4xMjh3YXNtLmNvZGUgPSBtb2R1bGVCdWlsZGVyLmJ1aWxkKCk7XG4gICAgYm4xMjh3YXNtLnBxID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmYxbS5wcTtcbiAgICBibjEyOHdhc20ucHIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZnJtLnBxO1xuICAgIGJuMTI4d2FzbS5wRzFnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcxZ2VuO1xuICAgIGJuMTI4d2FzbS5wRzF6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMXplcm87XG4gICAgYm4xMjh3YXNtLnBHMWIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcxYjtcbiAgICBibjEyOHdhc20ucEcyZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMmdlbjtcbiAgICBibjEyOHdhc20ucEcyemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJ6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzJiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMmI7XG4gICAgYm4xMjh3YXNtLnBPbmVUID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBPbmVUO1xuICAgIGJuMTI4d2FzbS5wcmVQU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wcmVQU2l6ZTtcbiAgICBibjEyOHdhc20ucHJlUVNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUVNpemU7XG4gICAgYm4xMjh3YXNtLm44cSA9IDMyO1xuICAgIGJuMTI4d2FzbS5uOHIgPSAzMjtcbiAgICBibjEyOHdhc20ucSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5xO1xuICAgIGJuMTI4d2FzbS5yID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnI7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYm4xMjhcIixcbiAgICAgICAgd2FzbTogYm4xMjh3YXNtLFxuICAgICAgICBxOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNcIiksXG4gICAgICAgIHI6IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN1wiKSxcbiAgICAgICAgbjhxOiAzMixcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMjogZShcIjMwNjQ0ZTcyZTEzMWEwMjliODUwNDViNjgxODE1ODVlMDZjZWVjZGE1NzJhMjQ4OTM0NWYyMjk5YzBmOWZhOGRcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG4gICAgY3VydmUudGVybWluYXRlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXBhcmFtcy5zaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3VydmVfYm4xMjggPSBudWxsO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50bS50ZXJtaW5hdGUoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIXNpbmdsZVRocmVhZCkge1xuICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gY3VydmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxKSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYmxzMTIzODE7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbHMxMjM4MSQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibHMxMjM4MXdhc20gPSB7fTtcblxuICAgIGJsczEyMzgxd2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJsczEyMzgxd2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibHMxMjM4MXdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMWdlbjtcbiAgICBibHMxMjM4MXdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzF6ZXJvO1xuICAgIGJsczEyMzgxd2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMWI7XG4gICAgYmxzMTIzODF3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzJnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyemVybztcbiAgICBibHMxMjM4MXdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzJiO1xuICAgIGJsczEyMzgxd2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wT25lVDtcbiAgICBibHMxMjM4MXdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucHJlUFNpemU7XG4gICAgYmxzMTIzODF3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVFTaXplO1xuICAgIGJsczEyMzgxd2FzbS5uOHEgPSA0ODtcbiAgICBibHMxMjM4MXdhc20ubjhyID0gMzI7XG4gICAgYmxzMTIzODF3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucTtcbiAgICBibHMxMjM4MXdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5yO1xuXG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYmxzMTIzODFcIixcbiAgICAgICAgd2FzbTogYmxzMTIzODF3YXNtLFxuICAgICAgICBxOiBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KSxcbiAgICAgICAgcjogZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpLFxuICAgICAgICBuOHE6IDQ4LFxuICAgICAgICBuOHI6IDMyLFxuICAgICAgICBjb2ZhY3RvckcxOiBlKFwiMHgzOTZjOGMwMDU1NTVlMTU2OGMwMGFhYWIwMDAwYWFhYlwiLCAxNiksXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIweDVkNTQzYTk1NDE0ZTdmMTA5MWQ1MDc5Mjg3NmEyMDJjZDkxZGU0NTQ3MDg1YWJhYTY4YTIwNWIyZTVhN2RkZmE2MjhmMWNiNGQ5ZTgyZWYyMTUzN2UyOTNhNjY5MWFlMTYxNmVjNmU3ODZmMGM3MGNmMWMzOGUzMWM3MjM4ZTVcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG4gICAgY3VydmUudGVybWluYXRlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXBhcmFtcy5zaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3VydmVfYmxzMTIzODEgPSBudWxsO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50bS50ZXJtaW5hdGUoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIXNpbmdsZVRocmVhZCkge1xuICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gY3VydmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5jb25zdCBibHMxMjM4MXIgPSBlKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIik7XG5cbmNvbnN0IGJsczEyMzgxcSA9IGUoXCIxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhYWJcIiwgMTYpO1xuY29uc3QgYm4xMjhxID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21SKHIsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEociwgYm4xMjhyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHIsIGJsczEyMzgxcikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbVEocSwgc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGlmIChlcShxLCBibjEyOHEpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoZXEocSwgYmxzMTIzODFxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7dG9TdHJpbmcocSwgMTYpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbU5hbWUobmFtZSwgc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGNvbnN0IG5vcm1OYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICBpZiAoW1wiQk4xMjhcIiwgXCJCTjI1NFwiLCBcIkFMVEJOMTI4XCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChbXCJCTFMxMjM4MVwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtuYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG4pIHtcbiAgICAgICAgcmV0dXJuIG4udG9VcHBlckNhc2UoKS5tYXRjaCgvW0EtWmEtejAtOV0rL2cpLmpvaW4oXCJcIik7XG4gICAgfVxuXG59XG5cbmNvbnN0IFNjYWxhcj1fU2NhbGFyO1xuY29uc3QgdXRpbHMgPSBfdXRpbHM7XG5cbmV4cG9ydCB7IEJpZ0J1ZmZlciwgQ2hhQ2hhLCBFQywgWnFGaWVsZCBhcyBGMUZpZWxkLCBGMkZpZWxkLCBGM0ZpZWxkLCBQb2xGaWVsZCwgU2NhbGFyLCBacUZpZWxkLCBidWlsZEJsczEyMzgxLCBidWlsZEJuMTI4LCBnZXRDdXJ2ZUZyb21OYW1lLCBnZXRDdXJ2ZUZyb21RLCBnZXRDdXJ2ZUZyb21SLCB1dGlscyB9O1xuIiwiXG5pbXBvcnQgZnMgZnJvbVwiZnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9wZW4oZmlsZU5hbWUsIG9wZW5GbGFncywgY2FjaGVTaXplLCBwYWdlU2l6ZSkge1xuICAgIGNhY2hlU2l6ZSA9IGNhY2hlU2l6ZSB8fCA0MDk2KjY0O1xuICAgIGlmICh0eXBlb2Ygb3BlbkZsYWdzICE9PSBcIm51bWJlclwiICYmIFtcIncrXCIsIFwid3grXCIsIFwiclwiLCBcImF4K1wiLCBcImErXCJdLmluZGV4T2Yob3BlbkZsYWdzKSA8MClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBvcGVuIG9wdGlvblwiKTtcbiAgICBjb25zdCBmZCA9YXdhaXQgZnMucHJvbWlzZXMub3BlbihmaWxlTmFtZSwgb3BlbkZsYWdzKTtcblxuICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgZmQuc3RhdCgpO1xuXG4gICAgcmV0dXJuICBuZXcgRmFzdEZpbGUoZmQsIHN0YXRzLCBjYWNoZVNpemUsIHBhZ2VTaXplLCBmaWxlTmFtZSk7XG59XG5cblxuY2xhc3MgRmFzdEZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoZmQsIHN0YXRzLCBjYWNoZVNpemUsIHBhZ2VTaXplLCBmaWxlTmFtZSkge1xuICAgICAgICB0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7XG4gICAgICAgIHRoaXMuZmQgPSBmZDtcbiAgICAgICAgdGhpcy5wb3MgPSAwO1xuICAgICAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemUgfHwgKDEgPDwgOCk7XG4gICAgICAgIHdoaWxlICh0aGlzLnBhZ2VTaXplIDwgc3RhdHMuYmxrc2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5wYWdlU2l6ZSAqPSAyO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG90YWxTaXplID0gc3RhdHMuc2l6ZTtcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5mbG9vcigoc3RhdHMuc2l6ZSAtMSkgLyB0aGlzLnBhZ2VTaXplKSsxO1xuICAgICAgICB0aGlzLm1heFBhZ2VzTG9hZGVkID0gTWF0aC5mbG9vciggY2FjaGVTaXplIC8gdGhpcy5wYWdlU2l6ZSkrMTtcbiAgICAgICAgdGhpcy5wYWdlcyA9IHt9O1xuICAgICAgICB0aGlzLnBlbmRpbmdMb2FkcyA9IFtdO1xuICAgICAgICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYXZCdWZmcyA9IFtdO1xuICAgICAgICB0aGlzLmhpc3RvcnkgPSB7fTtcbiAgICB9XG5cbiAgICBfbG9hZFBhZ2UocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nTG9hZHMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGFnZTogcCxcbiAgICAgICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdDogcmVqZWN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCByZXF1ZXN0OiBcIiwgcCk7XG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIF9fc3RhdHVzUGFnZShzLCBwKSB7XG4gICAgICAgIGNvbnN0IGxvZ0VudHJ5ID0gW107XG4gICAgICAgIGNvbnN0IHNlbGY9dGhpcztcbiAgICAgICAgaWYgKCFzZWxmLmxvZ0hpc3RvcnkpIHJldHVybjtcbiAgICAgICAgbG9nRW50cnkucHVzaChcIj09XCIgKyBzKyBcIiBcIiArcCk7XG4gICAgICAgIGxldCBTID0gXCJcIjtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHNbaV0ucGFnZSA9PSBwKSBTID0gUyArIFwiIFwiICsgaTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoUykgbG9nRW50cnkucHVzaChcIlBlbmRpbmcgbG9hZHM6XCIrUyk7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VsZi5wYWdlc1twXSAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlID0gc2VsZi5wYWdlc1twXTtcbiAgICAgICAgICAgIGxvZ0VudHJ5LnB1c2goXCJMb2FkZWRcIik7XG4gICAgICAgICAgICBsb2dFbnRyeS5wdXNoKFwicGVuZGluZ09wczogXCIrcGFnZS5wZW5kaW5nT3BzKTtcbiAgICAgICAgICAgIGlmIChwYWdlLmxvYWRpbmcpIGxvZ0VudHJ5LnB1c2goXCJsb2FkaW5nOiBcIitwYWdlLmxvYWRpbmcpO1xuICAgICAgICAgICAgaWYgKHBhZ2Uud3JpdGluZykgbG9nRW50cnkucHVzaChcIndyaXRpbmdcIik7XG4gICAgICAgICAgICBpZiAocGFnZS5kaXJ0eSkgbG9nRW50cnkucHVzaChcImRpcnR5XCIpO1xuICAgICAgICB9XG4gICAgICAgIGxvZ0VudHJ5LnB1c2goXCI9PVwiKTtcblxuICAgICAgICBpZiAoIXNlbGYuaGlzdG9yeVtwXSkgc2VsZi5oaXN0b3J5W3BdID0gW107XG4gICAgICAgIHNlbGYuaGlzdG9yeVtwXS5wdXNoKGxvZ0VudHJ5KTtcbiAgICB9XG5cbiAgICBfX3ByaW50SGlzdG9yeShwKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoIXNlbGYuaGlzdG9yeVtwXSkgY29uc29sZS5sb2coXCJFbXB0eSBIaXN0b3J5IFwiLCBwKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJIaXN0b3J5IFwiK3ApO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8c2VsZi5oaXN0b3J5W3BdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2VsZi5oaXN0b3J5W3BdW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCItPiBcIiArIHNlbGYuaGlzdG9yeVtwXVtpXVtqXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG4gICAgX3RyaWdnZXJMb2FkKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBpZiAoc2VsZi5yZWFkaW5nKSByZXR1cm47XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg9PTApIHJldHVybjtcblxuICAgICAgICBjb25zdCBwYWdlSWR4cyA9IE9iamVjdC5rZXlzKHNlbGYucGFnZXMpO1xuXG4gICAgICAgIGNvbnN0IGRlbGV0YWJsZVBhZ2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwYWdlSWR4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IHNlbGYucGFnZXNbcGFyc2VJbnQocGFnZUlkeHNbaV0pXTtcbiAgICAgICAgICAgIGlmICgocGFnZS5kaXJ0eSA9PSBmYWxzZSkmJihwYWdlLnBlbmRpbmdPcHM9PTApJiYoIXBhZ2Uud3JpdGluZykmJighcGFnZS5sb2FkaW5nKSkgZGVsZXRhYmxlUGFnZXMucHVzaChwYXJzZUludChwYWdlSWR4c1tpXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZyZWVQYWdlcyA9IHNlbGYubWF4UGFnZXNMb2FkZWQgLSBwYWdlSWR4cy5sZW5ndGg7XG5cbiAgICAgICAgY29uc3Qgb3BzID0gW107XG5cbiAgICAgICAgLy8gd2hpbGUgcGVuZGluZyBsb2FkcyBhbmRcbiAgICAgICAgLy8gICAgIHRoZSBwYWdlIGlzIGxvYWRlZCBvciBJIGNhbiByZWNvdmVyIG9uZS5cbiAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSAmJlxuICAgICAgICAgICAgKCAgICh0eXBlb2Ygc2VsZi5wYWdlc1tzZWxmLnBlbmRpbmdMb2Fkc1swXS5wYWdlXSAhPSBcInVuZGVmaW5lZFwiIClcbiAgICAgICAgICAgICAgfHwoICAoZnJlZVBhZ2VzPjApXG4gICAgICAgICAgICAgICAgIHx8KGRlbGV0YWJsZVBhZ2VzLmxlbmd0aD4wKSkpKSB7XG4gICAgICAgICAgICBjb25zdCBsb2FkID0gc2VsZi5wZW5kaW5nTG9hZHMuc2hpZnQoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygc2VsZi5wYWdlc1tsb2FkLnBhZ2VdICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0ucGVuZGluZ09wcyArKztcbiAgICAgICAgICAgICAgICBjb25zdCBpZHggPSBkZWxldGFibGVQYWdlcy5pbmRleE9mKGxvYWQucGFnZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlkeD49MCkgZGVsZXRhYmxlUGFnZXMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nLnB1c2gobG9hZCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG9hZC5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAoY2FjaGVkKTogXCIsIGxvYWQucGFnZSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGZyZWVQYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBmcmVlUGFnZXMtLTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmcCA9IGRlbGV0YWJsZVBhZ2VzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQmVmb3JlIFVubG9hZDogXCIsIGZwKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5hdkJ1ZmZzLnVuc2hpZnQoc2VsZi5wYWdlc1tmcF0pO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VsZi5wYWdlc1tmcF07XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgVW5sb2FkOiBcIiwgZnApO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChsb2FkLnBhZ2U+PXNlbGYudG90YWxQYWdlcykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0gPSBnZXROZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGxvYWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgKG5ldyk6IFwiLCBsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucmVhZGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXSA9IGdldE5ld1BhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmxvYWRpbmcgPSBbbG9hZF07XG4gICAgICAgICAgICAgICAgICAgIG9wcy5wdXNoKHNlbGYuZmQucmVhZChzZWxmLnBhZ2VzW2xvYWQucGFnZV0uYnVmZiwgMCwgc2VsZi5wYWdlU2l6ZSwgbG9hZC5wYWdlKnNlbGYucGFnZVNpemUpLnRoZW4oKHJlcyk9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0uc2l6ZSA9IHJlcy5ieXRlc1JlYWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nID0gc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmxvYWRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmxvYWRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bG9hZGluZy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmdbaV0ucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBMb2FkIChsb2FkZWQpOiBcIiwgbG9hZC5wYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWQucmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBMb2FkIChsb2FkaW5nKTogXCIsIGxvYWQucGFnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIChvcHMubGVuZ3RoPjEpIGNvbnNvbGUubG9nKG9wcy5sZW5ndGgpO1xuXG4gICAgICAgIFByb21pc2UuYWxsKG9wcykudGhlbiggKCkgPT4ge1xuICAgICAgICAgICAgc2VsZi5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgICAgIHNlbGYuX3RyeUNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldE5ld1BhZ2UoKSB7XG4gICAgICAgICAgICBpZiAoc2VsZi5hdkJ1ZmZzLmxlbmd0aD4wKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IHNlbGYuYXZCdWZmcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIHAuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwLnBlbmRpbmdPcHMgPSAxO1xuICAgICAgICAgICAgICAgIHAuc2l6ZSA9MDtcbiAgICAgICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgZGlydHk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBidWZmOiBuZXcgVWludDhBcnJheShzZWxmLnBhZ2VTaXplKSxcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZ09wczogMSxcbiAgICAgICAgICAgICAgICAgICAgc2l6ZTogMFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgX3RyaWdnZXJXcml0ZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChzZWxmLndyaXRpbmcpIHJldHVybjtcblxuICAgICAgICBjb25zdCBwYWdlSWR4cyA9IE9iamVjdC5rZXlzKHNlbGYucGFnZXMpO1xuXG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwYWdlSWR4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IHNlbGYucGFnZXNbcGFyc2VJbnQocGFnZUlkeHNbaV0pXTtcbiAgICAgICAgICAgIGlmIChwYWdlLmRpcnR5KSB7XG4gICAgICAgICAgICAgICAgcGFnZS5kaXJ0eSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHBhZ2Uud3JpdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2VsZi53cml0aW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvcHMucHVzaCggc2VsZi5mZC53cml0ZShwYWdlLmJ1ZmYsIDAsIHBhZ2Uuc2l6ZSwgcGFyc2VJbnQocGFnZUlkeHNbaV0pKnNlbGYucGFnZVNpemUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYWdlLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJFUlJPUiBXcml0aW5nOiBcIitlcnIpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yID0gZXJyO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzZWxmLndyaXRpbmcpIHtcbiAgICAgICAgICAgIFByb21pc2UuYWxsKG9wcykudGhlbiggKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYud3JpdGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyV3JpdGUuYmluZChzZWxmKSk7XG4gICAgICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgX2dldERpcnR5UGFnZSgpIHtcbiAgICAgICAgZm9yIChsZXQgcCBpbiB0aGlzLnBhZ2VzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wYWdlc1twXS5kaXJ0eSkgcmV0dXJuIHA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBpZiAoYnVmZi5ieXRlTGVuZ3RoID09IDApIHJldHVybjtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4vKlxuICAgICAgICBpZiAoYnVmZi5ieXRlTGVuZ3RoID4gc2VsZi5wYWdlU2l6ZSpzZWxmLm1heFBhZ2VzTG9hZGVkKjAuOCkge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVTaXplID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggKiAxLjEpO1xuICAgICAgICAgICAgdGhpcy5tYXhQYWdlc0xvYWRlZCA9IE1hdGguZmxvb3IoIGNhY2hlU2l6ZSAvIHNlbGYucGFnZVNpemUpKzE7XG4gICAgICAgIH1cbiovXG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBzZWxmLnBvcyA9IHBvcytidWZmLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChzZWxmLnRvdGFsU2l6ZSA8IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCkgc2VsZi50b3RhbFNpemUgPSBwb3MgKyBidWZmLmJ5dGVMZW5ndGg7XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gc2VsZi5wYWdlU2l6ZSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigocG9zICsgYnVmZi5ieXRlTGVuZ3RoIC0xKSAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPWZpcnN0UGFnZTsgaTw9bGFzdFBhZ2U7IGkrKykgcGFnZVByb21pc2VzLnB1c2goc2VsZi5fbG9hZFBhZ2UoaSkpO1xuICAgICAgICBzZWxmLl90cmlnZ2VyTG9hZCgpO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIHNlbGYucGFnZVNpemU7XG4gICAgICAgIGxldCByID0gYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBhd2FpdCBwYWdlUHJvbWlzZXNbcC1maXJzdFBhZ2VdO1xuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBzZWxmLnBhZ2VTaXplKSA/IChzZWxmLnBhZ2VTaXplIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZSggYnVmZi5ieXRlTGVuZ3RoIC0gciwgYnVmZi5ieXRlTGVuZ3RoIC0gciArIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIG8sIGwpO1xuICAgICAgICAgICAgZHN0Vmlldy5zZXQoc3JjVmlldyk7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLmRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbcF0ucGVuZGluZ09wcyAtLTtcbiAgICAgICAgICAgIHNlbGYucGFnZXNbcF0uc2l6ZSA9IE1hdGgubWF4KG8rbCwgc2VsZi5wYWdlc1twXS5zaXplKTtcbiAgICAgICAgICAgIGlmIChwPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICBzZWxmLnRvdGFsUGFnZXMgPSBwKzE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICAgICAgaWYgKCFzZWxmLndyaXRpbmcpIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyV3JpdGUuYmluZChzZWxmKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyByZWFkKGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGF3YWl0IHNlbGYucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsIGxlbiwgcG9zKTtcblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRzdCwgb2Zmc2V0LCBsZW4sIHBvcykge1xuICAgICAgICBpZiAobGVuID09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKGxlbiA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IobGVuICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBzZWxmLnBvcyA9IHBvcytsZW47XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gc2VsZi5wYWdlU2l6ZSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigocG9zICsgbGVuIC0xKSAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBhZ2VQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPWZpcnN0UGFnZTsgaTw9bGFzdFBhZ2U7IGkrKykgcGFnZVByb21pc2VzLnB1c2goc2VsZi5fbG9hZFBhZ2UoaSkpO1xuXG4gICAgICAgIHNlbGYuX3RyaWdnZXJMb2FkKCk7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gcG9zICUgc2VsZi5wYWdlU2l6ZTtcbiAgICAgICAgLy8gUmVtYWluaW5nIGJ5dGVzIHRvIHJlYWRcbiAgICAgICAgbGV0IHIgPSBwb3MgKyBsZW4gPiBzZWxmLnRvdGFsU2l6ZSA/IGxlbiAtIChwb3MgKyBsZW4gLSBzZWxmLnRvdGFsU2l6ZSk6IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgYXdhaXQgcGFnZVByb21pc2VzW3AgLSBmaXJzdFBhZ2VdO1xuICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBBd2FpdCAocmVhZCk6IFwiLCBwKTtcblxuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBzZWxmLnBhZ2VTaXplKSA/IChzZWxmLnBhZ2VTaXplIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlc1twXS5idWZmLmJ1ZmZlciwgc2VsZi5wYWdlc1twXS5idWZmLmJ5dGVPZmZzZXQgKyBvLCBsKTtcbiAgICAgICAgICAgIGJ1ZmZEc3Quc2V0KHNyY1ZpZXcsIG9mZnNldCtsZW4tcik7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnBlbmRpbmdPcHMgLS07XG5cbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgT3AgZG9uZTogXCIsIHApO1xuXG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGxlbjtcblxuICAgIH1cblxuXG4gICAgX3RyeUNsb3NlKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKCFzZWxmLnBlbmRpbmdDbG9zZSkgcmV0dXJuO1xuICAgICAgICBpZiAoc2VsZi5lcnJvcikge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2VSZWplY3Qoc2VsZi5lcnJvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcCA9IHNlbGYuX2dldERpcnR5UGFnZSgpO1xuICAgICAgICBpZiAoKHA+PTApIHx8IChzZWxmLndyaXRpbmcpIHx8IChzZWxmLnJlYWRpbmcpIHx8IChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkpIHJldHVybjtcbiAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2UoKTtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChzZWxmLnBlbmRpbmdDbG9zZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNsb3NpbmcgdGhlIGZpbGUgdHdpY2VcIik7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdDbG9zZSA9IHJlc29sdmU7XG4gICAgICAgICAgICBzZWxmLnBlbmRpbmdDbG9zZVJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIHNlbGYuX3RyeUNsb3NlKCk7XG4gICAgICAgIH0pLnRoZW4oKCk9PiB7XG4gICAgICAgICAgICBzZWxmLmZkLmNsb3NlKCk7XG4gICAgICAgIH0sIChlcnIpID0+IHtcbiAgICAgICAgICAgIHNlbGYuZmQuY2xvc2UoKTtcbiAgICAgICAgICAgIHRocm93IChlcnIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBkaXNjYXJkKCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgYXdhaXQgc2VsZi5jbG9zZSgpO1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy51bmxpbmsodGhpcy5maWxlTmFtZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVVTEUzMih2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCB0bXBCdWZmMzJ2ID0gbmV3IERhdGFWaWV3KHRtcEJ1ZmYzMi5idWZmZXIpO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCB0bXBCdWZmMzJ2ID0gbmV3IERhdGFWaWV3KHRtcEJ1ZmYzMi5idWZmZXIpO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IHRtcEJ1ZmY2NCA9IG5ldyBVaW50OEFycmF5KDgpO1xuICAgICAgICBjb25zdCB0bXBCdWZmNjR2ID0gbmV3IERhdGFWaWV3KHRtcEJ1ZmY2NC5idWZmZXIpO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkU3RyaW5nKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgYSBjbG9zaW5nIGZpbGVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gdHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiID8gc2VsZi5wb3MgOiBwb3M7XG4gICAgICAgIGxldCBjdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY3VycmVudFBvc2l0aW9uIC8gc2VsZi5wYWdlU2l6ZSk7XG5cbiAgICAgICAgbGV0IGVuZE9mU3RyaW5nRm91bmQgPSBmYWxzZTtcbiAgICAgICAgbGV0IHN0ciA9IFwiXCI7XG5cbiAgICAgICAgd2hpbGUgKCFlbmRPZlN0cmluZ0ZvdW5kKSB7XG4gICAgICAgICAgICAvL1JlYWQgcGFnZVxuICAgICAgICAgICAgbGV0IHBhZ2VQcm9taXNlID0gc2VsZi5fbG9hZFBhZ2UoY3VycmVudFBhZ2UpO1xuICAgICAgICAgICAgc2VsZi5fdHJpZ2dlckxvYWQoKTtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2VQcm9taXNlO1xuICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBBd2FpdCAocmVhZCk6IFwiLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgICAgIGxldCBvZmZzZXRPblBhZ2UgPSBjdXJyZW50UG9zaXRpb24gJSBzZWxmLnBhZ2VTaXplO1xuXG4gICAgICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShcbiAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2N1cnJlbnRQYWdlXS5idWZmLmJ1ZmZlcixcbiAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2N1cnJlbnRQYWdlXS5idWZmLmJ5dGVPZmZzZXQgKyBvZmZzZXRPblBhZ2UsXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlU2l6ZSAtIG9mZnNldE9uUGFnZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgbGV0IGluZGV4RW5kT2ZTdHJpbmcgPSBkYXRhQXJyYXkuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gMCk7XG4gICAgICAgICAgICBlbmRPZlN0cmluZ0ZvdW5kID0gaW5kZXhFbmRPZlN0cmluZyAhPT0gLTE7XG5cbiAgICAgICAgICAgIGlmIChlbmRPZlN0cmluZ0ZvdW5kKSB7XG4gICAgICAgICAgICAgICAgc3RyICs9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShkYXRhQXJyYXkuc2xpY2UoMCwgaW5kZXhFbmRPZlN0cmluZykpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zID0gY3VycmVudFBhZ2UgKiB0aGlzLnBhZ2VTaXplICsgb2Zmc2V0T25QYWdlICsgaW5kZXhFbmRPZlN0cmluZyArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5KTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSArIG9mZnNldE9uUGFnZSArIGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbGYucGFnZXNbY3VycmVudFBhZ2VdLnBlbmRpbmdPcHMtLTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgT3AgZG9uZTogXCIsIGN1cnJlbnRQYWdlKTtcblxuICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc2VsZi5wb3M7XG4gICAgICAgICAgICBjdXJyZW50UGFnZSsrO1xuXG4gICAgICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoID4gMCkgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3KG8pIHtcbiAgICBjb25zdCBpbml0aWFsU2l6ZSA9IG8uaW5pdGlhbFNpemUgfHwgMTw8MjA7XG4gICAgY29uc3QgZmQgPSBuZXcgTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLm8uZGF0YSA9IG5ldyBVaW50OEFycmF5KGluaXRpYWxTaXplKTtcbiAgICBmZC5hbGxvY1NpemUgPSBpbml0aWFsU2l6ZTtcbiAgICBmZC50b3RhbFNpemUgPSAwO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5hbGxvY1NpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC50b3RhbFNpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IHRydWU7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZyhvKSB7XG4gICAgY29uc3QgZmQgPSBuZXcgTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLmFsbG9jU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnRvdGFsU2l6ZSA9IG8uZGF0YS5ieXRlTGVuZ3RoO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcbmNvbnN0IHRtcEJ1ZmY2NCA9IG5ldyBVaW50OEFycmF5KDgpO1xuY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuY2xhc3MgTWVtRmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEgPDwgMTQ7ICAvLyBmb3IgY29tcGF0aWJpbGl0eVxuICAgIH1cblxuICAgIF9yZXNpemVJZk5lZWRlZChuZXdMZW4pIHtcbiAgICAgICAgaWYgKG5ld0xlbiA+IHRoaXMuYWxsb2NTaXplKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdBbGxvY1NpemUgPSBNYXRoLm1heChcbiAgICAgICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSArICgxIDw8IDIwKSxcbiAgICAgICAgICAgICAgICBNYXRoLmZsb29yKHRoaXMuYWxsb2NTaXplICogMS4xKSxcbiAgICAgICAgICAgICAgICBuZXdMZW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IFVpbnQ4QXJyYXkobmV3QWxsb2NTaXplKTtcbiAgICAgICAgICAgIG5ld0RhdGEuc2V0KHRoaXMuby5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gbmV3RGF0YTtcbiAgICAgICAgICAgIHRoaXMuYWxsb2NTaXplID0gbmV3QWxsb2NTaXplO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGUoYnVmZiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPXRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkgdGhyb3cgbmV3IEVycm9yKFwiV3JpdGluZyBhIHJlYWQgb25seSBmaWxlXCIpO1xuXG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgdGhpcy5vLmRhdGEuc2V0KGJ1ZmYuc2xpY2UoKSwgcG9zKTtcblxuICAgICAgICBpZiAocG9zICsgYnVmZi5ieXRlTGVuZ3RoID4gdGhpcy50b3RhbFNpemUpIHRoaXMudG90YWxTaXplID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRUb0J1ZmZlcihidWZmRGVzdCwgb2Zmc2V0LCBsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBpZiAocG9zICsgbGVuID4gdGhpcy50b3RhbFNpemUpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBsZW4pO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZTcmMgPSBuZXcgVWludDhBcnJheSh0aGlzLm8uZGF0YS5idWZmZXIsIHRoaXMuby5kYXRhLmJ5dGVPZmZzZXQgKyBwb3MsIGxlbik7XG5cbiAgICAgICAgYnVmZkRlc3Quc2V0KGJ1ZmZTcmMsIG9mZnNldCk7XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICAgICAgYXdhaXQgc2VsZi5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuLCBwb3MpO1xuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgICAgICBpZiAodGhpcy5vLmRhdGEuYnl0ZUxlbmd0aCAhPSB0aGlzLnRvdGFsU2l6ZSkge1xuICAgICAgICAgICAgdGhpcy5vLmRhdGEgPSB0aGlzLm8uZGF0YS5zbGljZSgwLCB0aGlzLnRvdGFsU2l6ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBkaXNjYXJkKCkge1xuICAgIH1cblxuXG4gICAgYXN5bmMgd3JpdGVVTEUzMih2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdG1wQnVmZjMydi5zZXRVaW50MzIoMCwgdiwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgd3JpdGVVQkUzMih2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdG1wQnVmZjMydi5zZXRVaW50MzIoMCwgdiwgZmFsc2UpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgd3JpdGVVTEU2NCh2LCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoMCwgdiAmIDB4RkZGRkZGRkYsIHRydWUpO1xuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMig0LCBNYXRoLmZsb29yKHYgLyAweDEwMDAwMDAwMCkgLCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmY2NCwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFN0cmluZyhwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYucG9zIDogcG9zO1xuXG4gICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gPiB0aGlzLnRvdGFsU2l6ZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KFxuICAgICAgICAgICAgc2VsZi5vLmRhdGEuYnVmZmVyLFxuICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uLFxuICAgICAgICAgICAgdGhpcy50b3RhbFNpemUgLSBjdXJyZW50UG9zaXRpb25cbiAgICAgICAgKTtcblxuICAgICAgICBsZXQgaW5kZXhFbmRPZlN0cmluZyA9IGRhdGFBcnJheS5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50ID09PSAwKTtcbiAgICAgICAgbGV0IGVuZE9mU3RyaW5nRm91bmQgPSBpbmRleEVuZE9mU3RyaW5nICE9PSAtMTtcblxuICAgICAgICBsZXQgc3RyID0gXCJcIjtcbiAgICAgICAgaWYgKGVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgIHN0ciA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShkYXRhQXJyYXkuc2xpY2UoMCwgaW5kZXhFbmRPZlN0cmluZykpO1xuICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UG9zaXRpb24gKyBpbmRleEVuZE9mU3RyaW5nICsgMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGYucG9zID0gY3VycmVudFBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiY29uc3QgUEFHRV9TSVpFID0gMTw8MjI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXcobykge1xuICAgIGNvbnN0IGluaXRpYWxTaXplID0gby5pbml0aWFsU2l6ZSB8fCAwO1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBjb25zdCBuUGFnZXMgPSBpbml0aWFsU2l6ZSA/IE1hdGguZmxvb3IoKGluaXRpYWxTaXplIC0gMSkgLyBQQUdFX1NJWkUpKzEgOiAwO1xuICAgIGZkLm8uZGF0YSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuUGFnZXMtMTsgaSsrKSB7XG4gICAgICAgIGZkLm8uZGF0YS5wdXNoKCBuZXcgVWludDhBcnJheShQQUdFX1NJWkUpKTtcbiAgICB9XG4gICAgaWYgKG5QYWdlcykgZmQuby5kYXRhLnB1c2goIG5ldyBVaW50OEFycmF5KGluaXRpYWxTaXplIC0gUEFHRV9TSVpFKihuUGFnZXMtMSkpKTtcbiAgICBmZC50b3RhbFNpemUgPSAwO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC50b3RhbFNpemUgPSAoby5kYXRhLmxlbmd0aC0xKSogUEFHRV9TSVpFICsgby5kYXRhW28uZGF0YS5sZW5ndGgtMV0uYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IHRydWU7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZyhvKSB7XG4gICAgY29uc3QgZmQgPSBuZXcgQmlnTWVtRmlsZSgpO1xuICAgIGZkLm8gPSBvO1xuICAgIGZkLnRvdGFsU2l6ZSA9IChvLmRhdGEubGVuZ3RoLTEpKiBQQUdFX1NJWkUgKyBvLmRhdGFbby5kYXRhLmxlbmd0aC0xXS5ieXRlTGVuZ3RoO1xuICAgIGZkLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgZmQucG9zID0gMDtcbiAgICByZXR1cm4gZmQ7XG59XG5cbmNvbnN0IHRtcEJ1ZmYzMiA9IG5ldyBVaW50OEFycmF5KDQpO1xuY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcbmNvbnN0IHRtcEJ1ZmY2NCA9IG5ldyBVaW50OEFycmF5KDgpO1xuY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuY2xhc3MgQmlnTWVtRmlsZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IDEgPDwgMTQ7ICAvLyBmb3IgY29tcGF0aWJpbGl0eVxuICAgIH1cblxuICAgIF9yZXNpemVJZk5lZWRlZChuZXdMZW4pIHtcblxuICAgICAgICBpZiAobmV3TGVuIDw9IHRoaXMudG90YWxTaXplKSByZXR1cm47XG5cbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGZpbGUgYm91bmRzXCIpO1xuXG4gICAgICAgIGNvbnN0IG5QYWdlcyA9IE1hdGguZmxvb3IoKG5ld0xlbiAtIDEpIC8gUEFHRV9TSVpFKSsxO1xuICAgICAgICBmb3IgKGxldCBpPSBNYXRoLm1heCh0aGlzLm8uZGF0YS5sZW5ndGgtMSwgMCk7IGk8blBhZ2VzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1NpemUgPSBpPG5QYWdlcy0xID8gUEFHRV9TSVpFIDogbmV3TGVuIC0gKG5QYWdlcy0xKSpQQUdFX1NJWkU7XG4gICAgICAgICAgICBjb25zdCBwID0gbmV3IFVpbnQ4QXJyYXkobmV3U2l6ZSk7XG4gICAgICAgICAgICBpZiAoaSA9PSB0aGlzLm8uZGF0YS5sZW5ndGgtMSkgcC5zZXQodGhpcy5vLmRhdGFbaV0pO1xuICAgICAgICAgICAgdGhpcy5vLmRhdGFbaV0gPSBwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG90YWxTaXplID0gbmV3TGVuO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID10aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSByZWFkIG9ubHkgZmlsZVwiKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZShidWZmLmJ5dGVMZW5ndGggLSByLCBidWZmLmJ5dGVMZW5ndGggLSByICsgbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5vLmRhdGFbcF0uYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRUb0J1ZmZlcihidWZmRHN0LCBvZmZzZXQsIGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIGlmIChwb3MgKyBsZW4gPiB0aGlzLnRvdGFsU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyArIGxlbik7XG5cbiAgICAgICAgY29uc3QgZmlyc3RQYWdlID0gTWF0aC5mbG9vcihwb3MgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIFBBR0VfU0laRTtcbiAgICAgICAgLy8gUmVtYWluaW5nIGJ5dGVzIHRvIHJlYWRcbiAgICAgICAgbGV0IHIgPSBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gUEFHRV9TSVpFKSA/IChQQUdFX1NJWkUgLW8pIDogcjtcbiAgICAgICAgICAgIGNvbnN0IHNyY1ZpZXcgPSBuZXcgVWludDhBcnJheShzZWxmLm8uZGF0YVtwXS5idWZmZXIsIG8sIGwpO1xuICAgICAgICAgICAgYnVmZkRzdC5zZXQoc3JjVmlldywgb2Zmc2V0K2xlbi1yKTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGxlbjtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkKGxlbiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcblxuICAgICAgICBhd2FpdCBzZWxmLnJlYWRUb0J1ZmZlcihidWZmLCAwLCBsZW4sIHBvcyk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyByZWFkVUxFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVCRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMigwLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTY0KHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg4LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzFdICogMHgxMDAwMDAwMDAgKyB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRTdHJpbmcocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBmaXhlZFNpemUgPSAyMDQ4O1xuXG4gICAgICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSB0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIgPyBzZWxmLnBvcyA6IHBvcztcblxuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID4gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gZmFsc2U7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgICAgIHdoaWxlICghZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRQYWdlID0gTWF0aC5mbG9vcihjdXJyZW50UG9zaXRpb24gLyBQQUdFX1NJWkUpO1xuICAgICAgICAgICAgbGV0IG9mZnNldE9uUGFnZSA9IGN1cnJlbnRQb3NpdGlvbiAlIFBBR0VfU0laRTtcblxuICAgICAgICAgICAgaWYgKHNlbGYuby5kYXRhW2N1cnJlbnRQYWdlXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRVJST1JcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByZWFkTGVuZ3RoID0gTWF0aC5taW4oZml4ZWRTaXplLCBzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0ubGVuZ3RoIC0gb2Zmc2V0T25QYWdlKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFBcnJheSA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW2N1cnJlbnRQYWdlXS5idWZmZXIsIG9mZnNldE9uUGFnZSwgcmVhZExlbmd0aCk7XG5cbiAgICAgICAgICAgIGxldCBpbmRleEVuZE9mU3RyaW5nID0gZGF0YUFycmF5LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQgPT09IDApO1xuICAgICAgICAgICAgZW5kT2ZTdHJpbmdGb3VuZCA9IGluZGV4RW5kT2ZTdHJpbmcgIT09IC0xO1xuXG4gICAgICAgICAgICBpZiAoZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogUEFHRV9TSVpFICsgb2Zmc2V0T25QYWdlICsgaW5kZXhFbmRPZlN0cmluZyArIDE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5KTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogUEFHRV9TSVpFICsgb2Zmc2V0T25QYWdlICsgZGF0YUFycmF5Lmxlbmd0aDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VycmVudFBvc2l0aW9uID0gc2VsZi5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG59XG4iLCIvKiBnbG9iYWwgZmV0Y2ggKi9cbmltcG9ydCB7IG9wZW4gfSBmcm9tIFwiLi9vc2ZpbGUuanNcIjtcbmltcG9ydCAqIGFzIG1lbUZpbGUgZnJvbSBcIi4vbWVtZmlsZS5qc1wiO1xuaW1wb3J0ICogYXMgYmlnTWVtRmlsZSBmcm9tIFwiLi9iaWdtZW1maWxlLmpzXCI7XG5pbXBvcnQgeyBPX1RSVU5DLCBPX0NSRUFULCBPX1JEV1IsIE9fRVhDTCwgT19SRE9OTFkgfSBmcm9tIFwiY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfQ0FDSEVfU0laRSA9ICgxIDw8IDE2KTtcbmNvbnN0IERFRkFVTFRfUEFHRV9TSVpFID0gKDEgPDwgMTMpO1xuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVPdmVycmlkZShvLCBiLCBjKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiIHx8IERFRkFVTFRfQ0FDSEVfU0laRSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBjIHx8IERFRkFVTFRfUEFHRV9TSVpFXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wZW4oby5maWxlTmFtZSwgT19UUlVOQyB8IE9fQ1JFQVQgfCBPX1JEV1IsIG8uY2FjaGVTaXplLCBvLnBhZ2VTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBtZW1GaWxlLmNyZWF0ZU5ldyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLmNyZWF0ZU5ldyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTm9PdmVycmlkZShvLCBiLCBjKSB7XG4gICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgIGZpbGVOYW1lOiBvLFxuICAgICAgICAgICAgY2FjaGVTaXplOiBiIHx8IERFRkFVTFRfQ0FDSEVfU0laRSxcbiAgICAgICAgICAgIHBhZ2VTaXplOiBjIHx8IERFRkFVTFRfUEFHRV9TSVpFXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIG9wZW4oby5maWxlTmFtZSwgT19UUlVOQyB8IE9fQ1JFQVQgfCBPX1JEV1IgfCBPX0VYQ0wsIG8uY2FjaGVTaXplLCBvLnBhZ2VTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBtZW1GaWxlLmNyZWF0ZU5ldyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLmNyZWF0ZU5ldyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8sIGIsIGMpIHtcbiAgICBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwibWVtXCIsXG4gICAgICAgICAgICBkYXRhOiBvXG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmV0Y2gobykudGhlbiggZnVuY3Rpb24ocmVzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5hcnJheUJ1ZmZlcigpO1xuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAoYWIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBvID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwibWVtXCIsXG4gICAgICAgICAgICAgICAgZGF0YTogYnVmZlxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImZpbGVcIixcbiAgICAgICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgICAgIHBhZ2VTaXplOiBjIHx8IERFRkFVTFRfUEFHRV9TSVpFXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChvLnR5cGUgPT0gXCJmaWxlXCIpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IG9wZW4oby5maWxlTmFtZSwgT19SRE9OTFksIG8uY2FjaGVTaXplLCBvLnBhZ2VTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBtZW1GaWxlLnJlYWRFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyhvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEZhc3RGaWxlIHR5cGU6IFwiK28udHlwZSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3RpbmcobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IsIG8uY2FjaGVTaXplLCBvLnBhZ2VTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBtZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwiYmlnTWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIGJpZ01lbUZpbGUucmVhZFdyaXRlRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXcml0ZUV4aXN0aW5nT3JDcmVhdGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX0VYQ0wsIG8uY2FjaGVTaXplKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcIm1lbVwiKSB7XG4gICAgICAgIHJldHVybiBtZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSBpZiAoby50eXBlID09IFwiYmlnTWVtXCIpIHtcbiAgICAgICAgcmV0dXJuIGJpZ01lbUZpbGUucmVhZFdyaXRlRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cbiIsIlxuaW1wb3J0ICB7IFNjYWxhciwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQmluRmlsZShmaWxlTmFtZSwgdHlwZSwgbWF4VmVyc2lvbiwgY2FjaGVTaXplLCBwYWdlU2l6ZSkge1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoZmlsZU5hbWUsIGNhY2hlU2l6ZSwgcGFnZVNpemUpO1xuXG4gICAgY29uc3QgYiA9IGF3YWl0IGZkLnJlYWQoNCk7XG4gICAgbGV0IHJlYWRlZFR5cGUgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIHJlYWRlZFR5cGUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShiW2ldKTtcblxuICAgIGlmIChyZWFkZWRUeXBlICE9IHR5cGUpIHRocm93IG5ldyBFcnJvcihmaWxlTmFtZSArIFwiOiBJbnZhbGlkIEZpbGUgZm9ybWF0XCIpO1xuXG4gICAgbGV0IHYgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGlmICh2Pm1heFZlcnNpb24pIHRocm93IG5ldyBFcnJvcihcIlZlcnNpb24gbm90IHN1cHBvcnRlZFwiKTtcblxuICAgIGNvbnN0IG5TZWN0aW9ucyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgLy8gU2NhbiBzZWN0aW9uc1xuICAgIGxldCBzZWN0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuU2VjdGlvbnM7IGkrKykge1xuICAgICAgICBsZXQgaHQgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgbGV0IGhsID0gYXdhaXQgZmQucmVhZFVMRTY0KCk7XG4gICAgICAgIGlmICh0eXBlb2Ygc2VjdGlvbnNbaHRdID09IFwidW5kZWZpbmVkXCIpIHNlY3Rpb25zW2h0XSA9IFtdO1xuICAgICAgICBzZWN0aW9uc1todF0ucHVzaCh7XG4gICAgICAgICAgICBwOiBmZC5wb3MsXG4gICAgICAgICAgICBzaXplOiBobFxuICAgICAgICB9KTtcbiAgICAgICAgZmQucG9zICs9IGhsO1xuICAgIH1cblxuICAgIHJldHVybiB7ZmQsIHNlY3Rpb25zfTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIHZlcnNpb24sIG5TZWN0aW9ucywgY2FjaGVTaXplLCBwYWdlU2l6ZSkge1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShmaWxlTmFtZSwgY2FjaGVTaXplLCBwYWdlU2l6ZSk7XG5cbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPDQ7IGkrKykgYnVmZltpXSA9IHR5cGUuY2hhckNvZGVBdChpKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmLCAwKTsgLy8gTWFnaWMgXCJyMWNzXCJcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIodmVyc2lvbik7IC8vIFZlcnNpb25cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG5TZWN0aW9ucyk7IC8vIE51bWJlciBvZiBTZWN0aW9uc1xuXG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRXcml0ZVNlY3Rpb24oZmQsIGlkU2VjdGlvbikge1xuICAgIGlmICh0eXBlb2YgZmQud3JpdGluZ1NlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgd3JpdGluZyBhIHNlY3Rpb25cIik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihpZFNlY3Rpb24pOyAvLyBIZWFkZXIgdHlwZVxuICAgIGZkLndyaXRpbmdTZWN0aW9uID0ge1xuICAgICAgICBwU2VjdGlvblNpemU6IGZkLnBvc1xuICAgIH07XG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NCgwKTsgLy8gVGVtcG9yYWxseSBzZXQgdG8gMCBsZW5ndGhcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuZFdyaXRlU2VjdGlvbihmZCkge1xuICAgIGlmICh0eXBlb2YgZmQud3JpdGluZ1NlY3Rpb24gPT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIk5vdCB3cml0aW5nIGEgc2VjdGlvblwiKTtcblxuICAgIGNvbnN0IHNlY3Rpb25TaXplID0gZmQucG9zIC0gZmQud3JpdGluZ1NlY3Rpb24ucFNlY3Rpb25TaXplIC0gODtcbiAgICBjb25zdCBvbGRQb3MgPSBmZC5wb3M7XG4gICAgZmQucG9zID0gZmQud3JpdGluZ1NlY3Rpb24ucFNlY3Rpb25TaXplO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoc2VjdGlvblNpemUpO1xuICAgIGZkLnBvcyA9IG9sZFBvcztcbiAgICBkZWxldGUgZmQud3JpdGluZ1NlY3Rpb247XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBmZC5yZWFkaW5nU2VjdGlvbiAhPT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKFwiQWxyZWFkeSByZWFkaW5nIGEgc2VjdGlvblwiKTtcbiAgICBpZiAoIXNlY3Rpb25zW2lkU2VjdGlvbl0pICB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgKyBcIjogTWlzc2luZyBzZWN0aW9uIFwiKyBpZFNlY3Rpb24gKTtcbiAgICBpZiAoc2VjdGlvbnNbaWRTZWN0aW9uXS5sZW5ndGg+MSkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogU2VjdGlvbiBEdXBsaWNhdGVkIFwiICtpZFNlY3Rpb24pO1xuXG4gICAgZmQucG9zID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5wO1xuXG4gICAgZmQucmVhZGluZ1NlY3Rpb24gPSBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZW5kUmVhZFNlY3Rpb24oZmQsIG5vQ2hlY2spIHtcbiAgICBpZiAodHlwZW9mIGZkLnJlYWRpbmdTZWN0aW9uID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFub0NoZWNrKSB7XG4gICAgICAgIGlmIChmZC5wb3MtZmQucmVhZGluZ1NlY3Rpb24ucCAhPSAgZmQucmVhZGluZ1NlY3Rpb24uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBzZWN0aW9uIHNpemUgcmVhZGluZ1wiKTtcbiAgICB9XG4gICAgZGVsZXRlIGZkLnJlYWRpbmdTZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVCaWdJbnQoZmQsIG4sIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobjgpO1xuICAgIFNjYWxhci50b1JwckxFKGJ1ZmYsIDAsIG4sIG44KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmLCBwb3MpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEJpZ0ludChmZCwgbjgsIHBvcykge1xuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKG44LCBwb3MpO1xuICAgIHJldHVybiBTY2FsYXIuZnJvbVJwckxFKGJ1ZmYsIDAsIG44KTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvcHlTZWN0aW9uKGZkRnJvbSwgc2VjdGlvbnMsIGZkVG8sIHNlY3Rpb25JZCwgc2l6ZSkge1xuICAgIGlmICh0eXBlb2Ygc2l6ZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBzaXplID0gc2VjdGlvbnNbc2VjdGlvbklkXVswXS5zaXplO1xuICAgIH1cbiAgICBjb25zdCBjaHVua1NpemUgPSBmZEZyb20ucGFnZVNpemU7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkVG8sIHNlY3Rpb25JZCk7XG4gICAgZm9yIChsZXQgcD0wOyBwPHNpemU7IHArPWNodW5rU2l6ZSkge1xuICAgICAgICBjb25zdCBsID0gTWF0aC5taW4oc2l6ZSAtcCwgY2h1bmtTaXplKTtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkRnJvbS5yZWFkKGwpO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRUbyk7XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmRGcm9tLCBzaXplICE9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0uc2l6ZSk7XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uLCBvZmZzZXQsIGxlbmd0aCkge1xuXG4gICAgb2Zmc2V0ID0gKHR5cGVvZiBvZmZzZXQgPT09IFwidW5kZWZpbmVkXCIpID8gMCA6IG9mZnNldDtcbiAgICBsZW5ndGggPSAodHlwZW9mIGxlbmd0aCA9PT0gXCJ1bmRlZmluZWRcIikgPyBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnNpemUgLSBvZmZzZXQgOiBsZW5ndGg7XG5cbiAgICBpZiAob2Zmc2V0ICsgbGVuZ3RoID4gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIHRoZSByYW5nZSBvZiB0aGUgc2VjdGlvblwiKTtcbiAgICB9XG5cbiAgICBsZXQgYnVmZjtcbiAgICBpZiAobGVuZ3RoIDwgKDEgPDwgMzApICkge1xuICAgICAgICBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihsZW5ndGgpO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmLCAwLCBsZW5ndGgsIHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0ucCArIG9mZnNldCk7XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZWN0aW9uSXNFcXVhbChmZDEsIHNlY3Rpb25zMSwgZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbikge1xuICAgIGNvbnN0IE1BWF9CVUZGX1NJWkUgPSBmZDEucGFnZVNpemUgKiAxNjtcbiAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMSwgc2VjdGlvbnMxLCBpZFNlY3Rpb24pO1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQyLCBzZWN0aW9uczIsIGlkU2VjdGlvbik7XG4gICAgaWYgKHNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemUgIT0gc2VjdGlvbnMyW2lkU2VjdGlvbl1bMF0uc2l6ZSkgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IHRvdGFsQnl0ZXM9c2VjdGlvbnMxW2lkU2VjdGlvbl1bMF0uc2l6ZTtcbiAgICBmb3IgKGxldCBpPTA7IGk8dG90YWxCeXRlczsgaSs9IE1BWF9CVUZGX1NJWkUpIHtcbiAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHRvdGFsQnl0ZXMtaSwgTUFYX0JVRkZfU0laRSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYxID0gYXdhaXQgZmQxLnJlYWQobik7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gYXdhaXQgZmQyLnJlYWQobik7XG4gICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIGlmIChidWZmMVtqXSAhPSBidWZmMltqXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZDEpO1xuICAgIGF3YWl0IGVuZFJlYWRTZWN0aW9uKGZkMik7XG4gICAgcmV0dXJuIHRydWU7XG59XG4iLCJpbXBvcnQgeyBTY2FsYXIsIGJ1aWxkQm4xMjgsIGJ1aWxkQmxzMTIzODF9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuY29uc3QgYmxzMTIzODFyID0gU2NhbGFyLmUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KTtcbmNvbnN0IGJuMTI4ciA9IFNjYWxhci5lKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIik7XG5cbmNvbnN0IGJsczEyMzgxcSA9IFNjYWxhci5lKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KTtcbmNvbnN0IGJuMTI4cSA9IFNjYWxhci5lKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNcIik7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21SKHIsIG9wdGlvbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgLy8gY2hlY2sgdGhhdCBvcHRpb25zIHBhcmFtIGlzIGRlZmluZWQgYW5kIHRoYXQgb3B0aW9ucy5zaW5nbGVUaHJlYWQgaXMgZGVmaW5lZFxuICAgIGxldCBzaW5nbGVUaHJlYWQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2luZ2xlVGhyZWFkO1xuICAgIGlmIChTY2FsYXIuZXEociwgYm4xMjhyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtTY2FsYXIudG9TdHJpbmcocil9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbVEocSwgb3B0aW9ucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBsZXQgc2luZ2xlVGhyZWFkID0gb3B0aW9ucyAmJiBvcHRpb25zLnNpbmdsZVRocmVhZDtcbiAgICBpZiAoU2NhbGFyLmVxKHEsIGJuMTI4cSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEocSwgYmxzMTIzODFxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7U2NhbGFyLnRvU3RyaW5nKHEpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUsIG9wdGlvbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgbGV0IHNpbmdsZVRocmVhZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zaW5nbGVUaHJlYWQ7XG4gICAgY29uc3Qgbm9ybU5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpO1xuICAgIGlmIChbXCJCTjEyOFwiLCBcIkJOMjU0XCIsIFwiQUxUQk4xMjhcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2UgaWYgKFtcIkJMUzEyMzgxXCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke25hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJ2ZTtcblxuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobikge1xuICAgICAgICByZXR1cm4gbi50b1VwcGVyQ2FzZSgpLm1hdGNoKC9bQS1aYS16MC05XSsvZykuam9pbihcIlwiKTtcbiAgICB9XG5cbn1cblxuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnRcblxuY2xhc3MgQXNzZXJ0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InXG5cbi8qKlxuICogTWluaW1hbCBhc3NlcnQgZnVuY3Rpb25cbiAqIEBwYXJhbSAge2FueX0gdCBWYWx1ZSB0byBjaGVjayBpZiBmYWxzeVxuICogQHBhcmFtICB7c3RyaW5nPX0gbSBPcHRpb25hbCBhc3NlcnRpb24gZXJyb3IgbWVzc2FnZVxuICogQHRocm93cyB7QXNzZXJ0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGFzc2VydCAodCwgbSkge1xuICBpZiAoIXQpIHtcbiAgICB2YXIgZXJyID0gbmV3IEFzc2VydGlvbkVycm9yKG0pXG4gICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShlcnIsIGFzc2VydClcbiAgICB0aHJvdyBlcnJcbiAgfVxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmZmVyW2ldKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJjb25zdCBhbHBoYWJldCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuXG5jb25zdCBjb2RlcyA9IG5ldyBVaW50OEFycmF5KDI1NilcblxuZm9yIChsZXQgaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xuICBjb2Rlc1thbHBoYWJldC5jaGFyQ29kZUF0KGkpXSA9IGlcbn1cblxuY29kZXNbLyogLSAqLyAweDJkXSA9IDYyXG5jb2Rlc1svKiBfICovIDB4NWZdID0gNjNcblxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIGxldCBsZW4gPSBzdHJpbmcubGVuZ3RoXG5cbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KGxlbiAtIDEpID09PSAweDNkKSBsZW4tLVxuICBpZiAobGVuID4gMSAmJiBzdHJpbmcuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gMHgzZCkgbGVuLS1cblxuICByZXR1cm4gKGxlbiAqIDMpID4+PiAyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAzKSB7XG4gICAgcmVzdWx0ICs9IChcbiAgICAgIGFscGhhYmV0W2J1ZmZlcltpXSA+PiAyXSArXG4gICAgICBhbHBoYWJldFsoKGJ1ZmZlcltpXSAmIDMpIDw8IDQpIHwgKGJ1ZmZlcltpICsgMV0gPj4gNCldICtcbiAgICAgIGFscGhhYmV0WygoYnVmZmVyW2kgKyAxXSAmIDE1KSA8PCAyKSB8IChidWZmZXJbaSArIDJdID4+IDYpXSArXG4gICAgICBhbHBoYWJldFtidWZmZXJbaSArIDJdICYgNjNdXG4gICAgKVxuICB9XG5cbiAgaWYgKGxlbiAlIDMgPT09IDIpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAxKSArICc9J1xuICB9IGVsc2UgaWYgKGxlbiAlIDMgPT09IDEpIHtcbiAgICByZXN1bHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGggLSAyKSArICc9PSdcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn07XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBqIDwgbGVuOyBpICs9IDQpIHtcbiAgICBjb25zdCBhID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSldXG4gICAgY29uc3QgYiA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkgKyAxKV1cbiAgICBjb25zdCBjID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSArIDIpXVxuICAgIGNvbnN0IGQgPSBjb2Rlc1tzdHJpbmcuY2hhckNvZGVBdChpICsgMyldXG5cbiAgICBidWZmZXJbaisrXSA9IChhIDw8IDIpIHwgKGIgPj4gNClcbiAgICBidWZmZXJbaisrXSA9ICgoYiAmIDE1KSA8PCA0KSB8IChjID4+IDIpXG4gICAgYnVmZmVyW2orK10gPSAoKGMgJiAzKSA8PCA2KSB8IChkICYgNjMpXG4gIH1cblxuICByZXR1cm4gbGVuXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggPj4+IDFcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGJ1ZmZlciA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgbGVuKVxuXG4gIGxldCByZXN1bHQgPSAnJ1xuICBsZXQgaSA9IDBcblxuICBmb3IgKGxldCBuID0gbGVuIC0gKGxlbiAlIDQpOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgcmVzdWx0ICs9IGJ1ZmZlci5nZXRVaW50MzIoaSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsICcwJylcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICByZXN1bHQgKz0gYnVmZmVyLmdldFVpbnQ4KGkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IGEgPSBoZXhWYWx1ZShzdHJpbmcuY2hhckNvZGVBdChpICogMikpXG4gICAgY29uc3QgYiA9IGhleFZhbHVlKHN0cmluZy5jaGFyQ29kZUF0KGkgKiAyICsgMSkpXG5cbiAgICBpZiAoYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5zdWJhcnJheSgwLCBpKVxuICAgIH1cblxuICAgIGJ1ZmZlcltvZmZzZXQgKyBpXSA9IChhIDw8IDQpIHwgYlxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG5cbmZ1bmN0aW9uIGhleFZhbHVlIChjaGFyKSB7XG4gIGlmIChjaGFyID49IDB4MzAgJiYgY2hhciA8PSAweDM5KSByZXR1cm4gY2hhciAtIDB4MzBcbiAgaWYgKGNoYXIgPj0gMHg0MSAmJiBjaGFyIDw9IDB4NDYpIHJldHVybiBjaGFyIC0gMHg0MSArIDEwXG4gIGlmIChjaGFyID49IDB4NjEgJiYgY2hhciA8PSAweDY2KSByZXR1cm4gY2hhciAtIDB4NjEgKyAxMFxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIGxldCBsZW5ndGggPSAwXG5cbiAgZm9yIChsZXQgaSA9IDAsIG4gPSBzdHJpbmcubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgY29uc3QgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG5cbiAgICBpZiAoY29kZSA+PSAweGQ4MDAgJiYgY29kZSA8PSAweGRiZmYgJiYgaSArIDEgPCBuKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpXG5cbiAgICAgIGlmIChjb2RlID49IDB4ZGMwMCAmJiBjb2RlIDw9IDB4ZGZmZikge1xuICAgICAgICBsZW5ndGggKz0gNFxuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZSA8PSAweDdmKSBsZW5ndGggKz0gMVxuICAgIGVsc2UgaWYgKGNvZGUgPD0gMHg3ZmYpIGxlbmd0aCArPSAyXG4gICAgZWxzZSBsZW5ndGggKz0gM1xuICB9XG5cbiAgcmV0dXJuIGxlbmd0aFxufVxuXG5sZXQgdG9TdHJpbmdcblxuaWYgKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG5cbiAgdG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gICAgcmV0dXJuIGRlY29kZXIuZGVjb2RlKGJ1ZmZlcilcbiAgfVxufSBlbHNlIHtcbiAgdG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gICAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICAgIGxldCBvdXRwdXQgPSAnJ1xuICAgIGxldCBpID0gMFxuXG4gICAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICAgIGxldCBieXRlID0gYnVmZmVyW2ldXG5cbiAgICAgIGlmIChieXRlIDw9IDB4N2YpIHtcbiAgICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZSlcbiAgICAgICAgaSsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGxldCBieXRlc05lZWRlZCA9IDBcbiAgICAgIGxldCBjb2RlUG9pbnQgPSAwXG5cbiAgICAgIGlmIChieXRlIDw9IDB4ZGYpIHtcbiAgICAgICAgYnl0ZXNOZWVkZWQgPSAxXG4gICAgICAgIGNvZGVQb2ludCA9IGJ5dGUgJiAweDFmXG4gICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gMHhlZikge1xuICAgICAgICBieXRlc05lZWRlZCA9IDJcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4MGZcbiAgICAgIH0gZWxzZSBpZiAoYnl0ZSA8PSAweGY0KSB7XG4gICAgICAgIGJ5dGVzTmVlZGVkID0gM1xuICAgICAgICBjb2RlUG9pbnQgPSBieXRlICYgMHgwN1xuICAgICAgfVxuXG4gICAgICBpZiAobGVuIC0gaSAtIGJ5dGVzTmVlZGVkID4gMCkge1xuICAgICAgICBsZXQgayA9IDBcblxuICAgICAgICB3aGlsZSAoayA8IGJ5dGVzTmVlZGVkKSB7XG4gICAgICAgICAgYnl0ZSA9IGJ1ZmZlcltpICsgayArIDFdXG4gICAgICAgICAgY29kZVBvaW50ID0gKGNvZGVQb2ludCA8PCA2KSB8IChieXRlICYgMHgzZilcbiAgICAgICAgICBrICs9IDFcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29kZVBvaW50ID0gMHhmZmZkXG4gICAgICAgIGJ5dGVzTmVlZGVkID0gbGVuIC0gaVxuICAgICAgfVxuXG4gICAgICBvdXRwdXQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZVBvaW50KVxuICAgICAgaSArPSBieXRlc05lZWRlZCArIDFcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0cHV0XG4gIH1cbn1cblxubGV0IHdyaXRlXG5cbmlmICh0eXBlb2YgVGV4dEVuY29kZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKVxuXG4gIHdyaXRlID0gZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuICAgIGVuY29kZXIuZW5jb2RlSW50byhzdHJpbmcsIGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbikpXG4gICAgcmV0dXJuIGxlblxuICB9XG59IGVsc2Uge1xuICB3cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICAgIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbilcblxuICAgIGxldCBpID0gMFxuICAgIGxldCBqID0gMFxuXG4gICAgd2hpbGUgKGkgPCBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjb2RlID0gc3RyaW5nLmNvZGVQb2ludEF0KGkpXG5cbiAgICAgIGlmIChjb2RlIDw9IDB4N2YpIHtcbiAgICAgICAgYnVmZmVyW2orK10gPSBjb2RlXG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgY291bnQgPSAwXG4gICAgICBsZXQgYml0cyA9IDBcblxuICAgICAgaWYgKGNvZGUgPD0gMHg3ZmYpIHtcbiAgICAgICAgY291bnQgPSA2XG4gICAgICAgIGJpdHMgPSAweGMwXG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPD0gMHhmZmZmKSB7XG4gICAgICAgIGNvdW50ID0gMTJcbiAgICAgICAgYml0cyA9IDB4ZTBcbiAgICAgIH0gZWxzZSBpZiAoY29kZSA8PSAweDFmZmZmZikge1xuICAgICAgICBjb3VudCA9IDE4XG4gICAgICAgIGJpdHMgPSAweGYwXG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlcltqKytdID0gYml0cyB8IChjb2RlID4+IGNvdW50KVxuICAgICAgY291bnQgLT0gNlxuXG4gICAgICB3aGlsZSAoY291bnQgPj0gMCkge1xuICAgICAgICBidWZmZXJbaisrXSA9IDB4ODAgfCAoKGNvZGUgPj4gY291bnQpICYgMHgzZilcbiAgICAgICAgY291bnQgLT0gNlxuICAgICAgfVxuXG4gICAgICBpICs9IGNvZGUgPj0gMHgxMDAwMCA/IDIgOiAxXG4gICAgfVxuXG4gICAgcmV0dXJuIGxlblxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBieXRlTGVuZ3RoLFxuICB0b1N0cmluZyxcbiAgd3JpdGVcbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aCAqIDJcbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGxldCByZXN1bHQgPSAnJ1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuIC0gMTsgaSArPSAyKSB7XG4gICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmZmVyW2ldICsgKGJ1ZmZlcltpICsgMV0gKiAyNTYpKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGxldCB1bml0cyA9IGxlblxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG5cbiAgICBjb25zdCBjID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgICBjb25zdCBoaSA9IGMgPj4gOFxuICAgIGNvbnN0IGxvID0gYyAlIDI1NlxuXG4gICAgYnVmZmVyW29mZnNldCArIGkgKiAyXSA9IGxvXG4gICAgYnVmZmVyW29mZnNldCArIGkgKiAyICsgMV0gPSBoaVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJjb25zdCBhc2NpaSA9IHJlcXVpcmUoJy4vbGliL2FzY2lpJylcbmNvbnN0IGJhc2U2NCA9IHJlcXVpcmUoJy4vbGliL2Jhc2U2NCcpXG5jb25zdCBoZXggPSByZXF1aXJlKCcuL2xpYi9oZXgnKVxuY29uc3QgdXRmOCA9IHJlcXVpcmUoJy4vbGliL3V0ZjgnKVxuY29uc3QgdXRmMTZsZSA9IHJlcXVpcmUoJy4vbGliL3V0ZjE2bGUnKVxuXG5jb25zdCBMRSA9IG5ldyBVaW50OEFycmF5KFVpbnQxNkFycmF5Lm9mKDB4ZmYpLmJ1ZmZlcilbMF0gPT09IDB4ZmZcblxuZnVuY3Rpb24gY29kZWNGb3IgKGVuY29kaW5nKSB7XG4gIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgICByZXR1cm4gYXNjaWlcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgcmV0dXJuIGJhc2U2NFxuICAgIGNhc2UgJ2hleCc6XG4gICAgICByZXR1cm4gaGV4XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgcmV0dXJuIHV0ZjhcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHV0ZjE2bGVcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGVuY29kaW5nOiAke2VuY29kaW5nfWApXG4gIH1cbn1cblxuZnVuY3Rpb24gaXNCdWZmZXIgKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXlcbn1cblxuZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgdHJ5IHtcbiAgICBjb2RlY0ZvcihlbmNvZGluZylcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkgZXhwb3J0cy5maWxsKGJ1ZmZlciwgZmlsbCwgMCwgYnVmZmVyLmJ5dGVMZW5ndGgsIGVuY29kaW5nKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlIChzaXplKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShzaXplKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZVNsb3cgKHNpemUpIHtcbiAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHNpemUpXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS5ieXRlTGVuZ3RoKHN0cmluZylcbn1cblxuZnVuY3Rpb24gY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIDBcblxuICBjb25zdCBsZW4gPSBNYXRoLm1pbihhLmJ5dGVMZW5ndGgsIGIuYnl0ZUxlbmd0aClcblxuICBhID0gbmV3IERhdGFWaWV3KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgYiA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG5cbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIGNvbnN0IHggPSBhLmdldFVpbnQzMihpLCBMRSlcbiAgICBjb25zdCB5ID0gYi5nZXRVaW50MzIoaSwgTEUpXG4gICAgaWYgKHggIT09IHkpIGJyZWFrXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgeCA9IGEuZ2V0VWludDgoaSlcbiAgICBjb25zdCB5ID0gYi5nZXRVaW50OChpKVxuICAgIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gICAgaWYgKHggPiB5KSByZXR1cm4gMVxuICB9XG5cbiAgcmV0dXJuIGEuYnl0ZUxlbmd0aCA+IGIuYnl0ZUxlbmd0aCA/IDEgOiBhLmJ5dGVMZW5ndGggPCBiLmJ5dGVMZW5ndGggPyAtMSA6IDBcbn1cblxuZnVuY3Rpb24gY29uY2F0IChidWZmZXJzLCB0b3RhbExlbmd0aCkge1xuICBpZiAodG90YWxMZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIHRvdGFsTGVuZ3RoID0gYnVmZmVycy5yZWR1Y2UoKGxlbiwgYnVmZmVyKSA9PiBsZW4gKyBidWZmZXIuYnl0ZUxlbmd0aCwgMClcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHRvdGFsTGVuZ3RoKVxuXG4gIGxldCBvZmZzZXQgPSAwXG4gIGZvciAoY29uc3QgYnVmZmVyIG9mIGJ1ZmZlcnMpIHtcbiAgICBpZiAob2Zmc2V0ICsgYnVmZmVyLmJ5dGVMZW5ndGggPiByZXN1bHQuYnl0ZUxlbmd0aCkge1xuICAgICAgY29uc3Qgc3ViID0gYnVmZmVyLnN1YmFycmF5KDAsIHJlc3VsdC5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuICAgICAgcmVzdWx0LnNldChzdWIsIG9mZnNldClcbiAgICAgIHJldHVybiByZXN1bHRcbiAgICB9XG4gICAgcmVzdWx0LnNldChidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gY29weSAoc291cmNlLCB0YXJnZXQsIHRhcmdldFN0YXJ0ID0gMCwgc3RhcnQgPSAwLCBlbmQgPSBzb3VyY2UuYnl0ZUxlbmd0aCkge1xuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmIChzb3VyY2UuYnl0ZUxlbmd0aCA9PT0gMCB8fCB0YXJnZXQuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgaXMgb3V0IG9mIHJhbmdlJylcbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSBzb3VyY2UuYnl0ZUxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IGlzIG91dCBvZiByYW5nZScpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIGlzIG91dCBvZiByYW5nZScpXG5cbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5ieXRlTGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5ieXRlTGVuZ3RoXG4gIGlmIChlbmQgPiBzb3VyY2UuYnl0ZUxlbmd0aCkgZW5kID0gc291cmNlLmJ5dGVMZW5ndGhcbiAgaWYgKHRhcmdldC5ieXRlTGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICBjb25zdCBsZW4gPSBlbmQgLSBzdGFydFxuXG4gIGlmIChzb3VyY2UgPT09IHRhcmdldCkge1xuICAgIHRhcmdldC5jb3B5V2l0aGluKHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKVxuICB9IGVsc2Uge1xuICAgIHRhcmdldC5zZXQoc291cmNlLnN1YmFycmF5KHN0YXJ0LCBlbmQpLCB0YXJnZXRTdGFydClcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxuZnVuY3Rpb24gZXF1YWxzIChhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gdHJ1ZVxuICBpZiAoYS5ieXRlTGVuZ3RoICE9PSBiLmJ5dGVMZW5ndGgpIHJldHVybiBmYWxzZVxuXG4gIGNvbnN0IGxlbiA9IGEuYnl0ZUxlbmd0aFxuXG4gIGEgPSBuZXcgRGF0YVZpZXcoYS5idWZmZXIsIGEuYnl0ZU9mZnNldCwgYS5ieXRlTGVuZ3RoKVxuICBiID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aClcblxuICBsZXQgaSA9IDBcblxuICBmb3IgKGxldCBuID0gbGVuIC0gKGxlbiAlIDQpOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgaWYgKGEuZ2V0VWludDMyKGksIExFKSAhPT0gYi5nZXRVaW50MzIoaSwgTEUpKSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGZvciAoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYS5nZXRVaW50OChpKSAhPT0gYi5nZXRVaW50OChpKSkgcmV0dXJuIGZhbHNlXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxsIChidWZmZXIsIHZhbHVlLCBvZmZzZXQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBmaWxsKGJ1ZmZlciwgc3RyaW5nLCBlbmNvZGluZylcbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgICBvZmZzZXQgPSAwXG4gICAgICBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gICAgLy8gZmlsbChidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBlbmNvZGluZylcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHZhbHVlID0gdmFsdWUgJiAweGZmXG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICB2YWx1ZSA9ICt2YWx1ZVxuICB9XG5cbiAgaWYgKG9mZnNldCA8IDAgfHwgYnVmZmVyLmJ5dGVMZW5ndGggPCBvZmZzZXQgfHwgYnVmZmVyLmJ5dGVMZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuICBpZiAoZW5kID09PSB1bmRlZmluZWQpIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGVuZCA8PSBvZmZzZXQpIHJldHVybiBidWZmZXJcblxuICBpZiAoIXZhbHVlKSB2YWx1ZSA9IDBcblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIGZvciAobGV0IGkgPSBvZmZzZXQ7IGkgPCBlbmQ7ICsraSkge1xuICAgICAgYnVmZmVyW2ldID0gdmFsdWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFsdWUgPSBpc0J1ZmZlcih2YWx1ZSkgPyB2YWx1ZSA6IGZyb20odmFsdWUsIGVuY29kaW5nKVxuXG4gICAgY29uc3QgbGVuID0gdmFsdWUuYnl0ZUxlbmd0aFxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbmQgLSBvZmZzZXQ7ICsraSkge1xuICAgICAgYnVmZmVyW2kgKyBvZmZzZXRdID0gdmFsdWVbaSAlIGxlbl1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb20gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgLy8gZnJvbShzdHJpbmcsIGVuY29kaW5nKVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgcmV0dXJuIGZyb21TdHJpbmcodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQpXG5cbiAgLy8gZnJvbShhcnJheSlcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSByZXR1cm4gZnJvbUFycmF5KHZhbHVlKVxuXG4gIC8vIGZyb20oYnVmZmVyKVxuICBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHZhbHVlKSkgcmV0dXJuIGZyb21CdWZmZXIodmFsdWUpXG5cbiAgLy8gZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBmcm9tU3RyaW5nIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGNvZGVjID0gY29kZWNGb3IoZW5jb2RpbmcpXG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGNvZGVjLmJ5dGVMZW5ndGgoc3RyaW5nKSlcbiAgY29kZWMud3JpdGUoYnVmZmVyLCBzdHJpbmcsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheSAoYXJyYXkpIHtcbiAgY29uc3QgYnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkubGVuZ3RoKVxuICBidWZmZXIuc2V0KGFycmF5KVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGZyb21CdWZmZXIgKGJ1ZmZlcikge1xuICBjb25zdCBjb3B5ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLmJ5dGVMZW5ndGgpXG4gIGNvcHkuc2V0KGJ1ZmZlcilcbiAgcmV0dXJuIGNvcHlcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyIChhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShhcnJheUJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBpbmNsdWRlcyAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZpcnN0KSB7XG4gIGlmIChidWZmZXIuYnl0ZUxlbmd0aCA9PT0gMCkgcmV0dXJuIC0xXG5cbiAgaWYgKHR5cGVvZiBieXRlT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gYnl0ZU9mZnNldFxuICAgIGJ5dGVPZmZzZXQgPSAwXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnl0ZU9mZnNldCA9IGZpcnN0ID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGJ5dGVPZmZzZXQgKz0gYnVmZmVyLmJ5dGVMZW5ndGhcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgaWYgKGZpcnN0KSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIDFcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgMCkge1xuICAgIGlmIChmaXJzdCkgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IGZyb20odmFsdWUsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICYgMHhmZlxuXG4gICAgaWYgKGZpcnN0KSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmluZGV4T2YodmFsdWUsIGJ5dGVPZmZzZXQpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBidWZmZXIubGFzdEluZGV4T2YodmFsdWUsIGJ5dGVPZmZzZXQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIGlmIChmaXJzdCkge1xuICAgIGxldCBmb3VuZEluZGV4ID0gLTFcblxuICAgIGZvciAobGV0IGkgPSBieXRlT2Zmc2V0OyBpIDwgYnVmZmVyLmJ5dGVMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gdmFsdWVbZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXhdKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsdWUuYnl0ZUxlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWx1ZS5ieXRlTGVuZ3RoID4gYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgIGJ5dGVPZmZzZXQgPSBidWZmZXIuYnl0ZUxlbmd0aCAtIHZhbHVlLmJ5dGVMZW5ndGhcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gYnl0ZU9mZnNldDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGxldCBmb3VuZCA9IHRydWVcblxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZS5ieXRlTGVuZ3RoOyBqKyspIHtcbiAgICAgICAgaWYgKGJ1ZmZlcltpICsgal0gIT09IHZhbHVlW2pdKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5mdW5jdGlvbiBpbmRleE9mIChidWZmZXIsIHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUgLyogZmlyc3QgKi8pXG59XG5cbmZ1bmN0aW9uIGxhc3RJbmRleE9mIChidWZmZXIsIHZhbHVlLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGZhbHNlIC8qIGxhc3QgKi8pXG59XG5cbmZ1bmN0aW9uIHN3YXAgKGJ1ZmZlciwgbiwgbSkge1xuICBjb25zdCBpID0gYnVmZmVyW25dXG4gIGJ1ZmZlcltuXSA9IGJ1ZmZlclttXVxuICBidWZmZXJbbV0gPSBpXG59XG5cbmZ1bmN0aW9uIHN3YXAxNiAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDIgIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikgc3dhcChidWZmZXIsIGksIGkgKyAxKVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gc3dhcDMyIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBpZiAobGVuICUgNCAhPT0gMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcChidWZmZXIsIGksIGkgKyAzKVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMSwgaSArIDIpXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHN3YXA2NCAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDggIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAoYnVmZmVyLCBpLCBpICsgNylcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcChidWZmZXIsIGkgKyAzLCBpICsgNClcbiAgfVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gdG9CdWZmZXIgKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIsIGVuY29kaW5nLCBzdGFydCA9IDAsIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKHN0YXJ0ID49IGxlbikgcmV0dXJuICcnXG4gIGlmIChlbmQgPD0gc3RhcnQpIHJldHVybiAnJ1xuICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgaWYgKHN0YXJ0ICE9PSAwIHx8IGVuZCA8IGxlbikgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KHN0YXJ0LCBlbmQpXG5cbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS50b1N0cmluZyhidWZmZXIpXG59XG5cbmZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgsIGVuY29kaW5nKSB7XG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgb2Zmc2V0ID0gdW5kZWZpbmVkXG5cbiAgLy8gd3JpdGUoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgbGVuZ3RoID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gIH1cblxuICByZXR1cm4gY29kZWNGb3IoZW5jb2RpbmcpLndyaXRlKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldEZsb2F0NjQob2Zmc2V0LCB2YWx1ZSwgdHJ1ZSlcblxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0TEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRGbG9hdDMyKG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldFVpbnQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdyaXRlSW50MzJMRSAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICB2aWV3LnNldEludDMyKG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuZnVuY3Rpb24gcmVhZERvdWJsZUxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRGbG9hdDY0KG9mZnNldCwgdHJ1ZSlcbn1cblxuZnVuY3Rpb24gcmVhZEZsb2F0TEUgKGJ1ZmZlciwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2aWV3LmdldEZsb2F0MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5mdW5jdGlvbiByZWFkVUludDMyTEUgKGJ1ZmZlciwgb2Zmc2V0KSB7XG4gIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMFxuXG4gIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGJ1ZmZlci5ieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2aWV3LmdldFVpbnQzMihvZmZzZXQsIHRydWUpXG59XG5cbmZ1bmN0aW9uIHJlYWRJbnQzMkxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRJbnQzMihvZmZzZXQsIHRydWUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IHtcbiAgaXNCdWZmZXIsXG4gIGlzRW5jb2RpbmcsXG4gIGFsbG9jLFxuICBhbGxvY1Vuc2FmZSxcbiAgYWxsb2NVbnNhZmVTbG93LFxuICBieXRlTGVuZ3RoLFxuICBjb21wYXJlLFxuICBjb25jYXQsXG4gIGNvcHksXG4gIGVxdWFscyxcbiAgZmlsbCxcbiAgZnJvbSxcbiAgaW5jbHVkZXMsXG4gIGluZGV4T2YsXG4gIGxhc3RJbmRleE9mLFxuICBzd2FwMTYsXG4gIHN3YXAzMixcbiAgc3dhcDY0LFxuICB0b0J1ZmZlcixcbiAgdG9TdHJpbmcsXG4gIHdyaXRlLFxuICB3cml0ZURvdWJsZUxFLFxuICB3cml0ZUZsb2F0TEUsXG4gIHdyaXRlVUludDMyTEUsXG4gIHdyaXRlSW50MzJMRSxcbiAgcmVhZERvdWJsZUxFLFxuICByZWFkRmxvYXRMRSxcbiAgcmVhZFVJbnQzMkxFLFxuICByZWFkSW50MzJMRVxufVxuIiwidmFyIF9fY29tbW9uSlMgPSAoY2IsIG1vZCkgPT4gZnVuY3Rpb24gX19yZXF1aXJlKCkge1xuICByZXR1cm4gbW9kIHx8ICgwLCBjYltPYmplY3Qua2V5cyhjYilbMF1dKSgobW9kID0geyBleHBvcnRzOiB7fSB9KS5leHBvcnRzLCBtb2QpLCBtb2QuZXhwb3J0cztcbn07XG52YXIgX190b0JpbmFyeSA9IC8qIEBfX1BVUkVfXyAqLyAoKCkgPT4ge1xuICB2YXIgdGFibGUgPSBuZXcgVWludDhBcnJheSgxMjgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspXG4gICAgdGFibGVbaSA8IDI2ID8gaSArIDY1IDogaSA8IDUyID8gaSArIDcxIDogaSA8IDYyID8gaSAtIDQgOiBpICogNCAtIDIwNV0gPSBpO1xuICByZXR1cm4gKGJhc2U2NCkgPT4ge1xuICAgIHZhciBuID0gYmFzZTY0Lmxlbmd0aCwgYnl0ZXMyID0gbmV3IFVpbnQ4QXJyYXkoKG4gLSAoYmFzZTY0W24gLSAxXSA9PSBcIj1cIikgLSAoYmFzZTY0W24gLSAyXSA9PSBcIj1cIikpICogMyAvIDQgfCAwKTtcbiAgICBmb3IgKHZhciBpMiA9IDAsIGogPSAwOyBpMiA8IG47ICkge1xuICAgICAgdmFyIGMwID0gdGFibGVbYmFzZTY0LmNoYXJDb2RlQXQoaTIrKyldLCBjMSA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXTtcbiAgICAgIHZhciBjMiA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXSwgYzMgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV07XG4gICAgICBieXRlczJbaisrXSA9IGMwIDw8IDIgfCBjMSA+PiA0O1xuICAgICAgYnl0ZXMyW2orK10gPSBjMSA8PCA0IHwgYzIgPj4gMjtcbiAgICAgIGJ5dGVzMltqKytdID0gYzIgPDwgNiB8IGMzO1xuICAgIH1cbiAgICByZXR1cm4gYnl0ZXMyO1xuICB9O1xufSkoKTtcblxuLy8gd2FzbS1iaW5hcnk6Li9ibGFrZTJiLndhdFxudmFyIHJlcXVpcmVfYmxha2UyYiA9IF9fY29tbW9uSlMoe1xuICBcIndhc20tYmluYXJ5Oi4vYmxha2UyYi53YXRcIihleHBvcnRzMiwgbW9kdWxlMikge1xuICAgIG1vZHVsZTIuZXhwb3J0cyA9IF9fdG9CaW5hcnkoXCJBR0Z6YlFFQUFBQUJFQU5nQW45L0FHQURmMzkvQUdBQmZ3QURCUVFBQVFJQ0JRVUJBUXJvQndkTkJRWnRaVzF2Y25rQ0FBeGliR0ZyWlRKaVgybHVhWFFBQUE1aWJHRnJaVEppWDNWd1pHRjBaUUFCRFdKc1lXdGxNbUpmWm1sdVlXd0FBaEJpYkdGclpUSmlYMk52YlhCeVpYTnpBQU1Ldno4RXdBSUFJQUJDQURjREFDQUFRZ0EzQXdnZ0FFSUFOd01RSUFCQ0FEY0RHQ0FBUWdBM0F5QWdBRUlBTndNb0lBQkNBRGNETUNBQVFnQTNBemdnQUVJQU53TkFJQUJDQURjRFNDQUFRZ0EzQTFBZ0FFSUFOd05ZSUFCQ0FEY0RZQ0FBUWdBM0EyZ2dBRUlBTndOd0lBQkNBRGNEZUNBQVFvaVM4NTMvelBtRTZnQkJBQ2tEQUlVM0E0QUJJQUJDdTg2cXB0alE2N083ZjBFSUtRTUFoVGNEaUFFZ0FFS3I4TlAwcis2OHR6eEJFQ2tEQUlVM0E1QUJJQUJDOGUzMCtLV24vYWVsZjBFWUtRTUFoVGNEbUFFZ0FFTFJoWnJ2K3MrVWg5RUFRU0FwQXdDRk53T2dBU0FBUXAvWStkbkNrZHFDbTM5QktDa0RBSVUzQTZnQklBQkM2L3FHMnIrMTlzRWZRVEFwQXdDRk53T3dBU0FBUXZuQytKdVJvN1B3MndCQk9Da0RBSVUzQTdnQklBQkNBRGNEd0FFZ0FFSUFOd1BJQVNBQVFnQTNBOUFCQzIwQkEzOGdBRUhBQVdvaEF5QUFRY2dCYWlFRUlBUXBBd0NuSVFVQ1FBTkFJQUVnQWtZTkFTQUZRWUFCUmdSQUlBTWdBeWtEQUNBRnJYdzNBd0JCQUNFRklBQVFBd3NnQUNBRmFpQUJMUUFBT2dBQUlBVkJBV29oQlNBQlFRRnFJUUVNQUFzTElBUWdCYTAzQXdBTFlRRURmeUFBUWNBQmFpRUJJQUJCeUFGcUlRSWdBU0FCS1FNQUlBSXBBd0I4TndNQUlBQkNmemNEMEFFZ0Fpa0RBS2NoQXdKQUEwQWdBMEdBQVVZTkFTQUFJQU5xUVFBNkFBQWdBMEVCYWlFRERBQUxDeUFDSUFPdE53TUFJQUFRQXd1cU93SWdmZ2wvSUFCQmdBRnFJU0VnQUVHSUFXb2hJaUFBUVpBQmFpRWpJQUJCbUFGcUlTUWdBRUdnQVdvaEpTQUFRYWdCYWlFbUlBQkJzQUZxSVNjZ0FFRzRBV29oS0NBaEtRTUFJUUVnSWlrREFDRUNJQ01wQXdBaEF5QWtLUU1BSVFRZ0pTa0RBQ0VGSUNZcEF3QWhCaUFuS1FNQUlRY2dLQ2tEQUNFSVFvaVM4NTMvelBtRTZnQWhDVUs3enFxbTJORHJzN3QvSVFwQ3EvRFQ5Sy91dkxjOElRdEM4ZTMwK0tXbi9hZWxmeUVNUXRHRm11LzZ6NVNIMFFBaERVS2YyUG5ad3BIYWdwdC9JUTVDNi9xRzJyKzE5c0VmSVE5QytjTDRtNUdqcy9EYkFDRVFJQUFwQXdBaEVTQUFLUU1JSVJJZ0FDa0RFQ0VUSUFBcEF4Z2hGQ0FBS1FNZ0lSVWdBQ2tES0NFV0lBQXBBekFoRnlBQUtRTTRJUmdnQUNrRFFDRVpJQUFwQTBnaEdpQUFLUU5RSVJzZ0FDa0RXQ0VjSUFBcEEyQWhIU0FBS1FOb0lSNGdBQ2tEY0NFZklBQXBBM2doSUNBTklBQXBBOEFCaFNFTklBOGdBQ2tEMEFHRklROGdBU0FGSUJGOGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBU2ZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0UzeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCUjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVZmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGbng4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQmQ4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FZZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnR1h4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJwOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYmZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCMThmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWVmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIM3g4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQ0I4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FmZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRzN4OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJWOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBWmZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0dueDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElDQjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQWVmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dGM3g4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQko4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFkZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRVh4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJOOGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBY2ZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0dIeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCWjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQVVmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQmw4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFkZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnRVh4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJaOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVGZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0lIeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCNThmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWJmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIM3g4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQlI4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFYZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnR0h4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJKOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBYWZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZYeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCaDhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQWFmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdGSHg4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQko4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFlZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnSFh4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJ4OGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBZmZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0UzeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCZDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QVdmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dHM3g4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQlY4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FSZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSUh4OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJsOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBYWZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0VYeDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCWjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVlmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dFM3g4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQlY4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FiZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnSUh4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUI5OGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBU2ZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0hIeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCMThmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQVhmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dHWHg4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQlI4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FlZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnRTN4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUIxOGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBWGZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0czeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCRjhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QWNmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dHWHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQlI4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFWZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSG54OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJoOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBV2ZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0lIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCOThmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVNmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdHbng4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQjE4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FXZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnRW54OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUNCOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBZmZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0hueDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCVjhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQWJmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdFWHg4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQmg4ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFYZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnRkh4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJwOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBVGZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0dYeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCeDhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWVmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdISHg4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQmg4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFmZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnSFh4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJKOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBVWZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0dueDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCWjhmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQVJmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dJSHg4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQlY4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FaZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnRjN4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUJOOGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBYmZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0YzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklDQjhmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQWZmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHbng4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQng4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFVZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnRVh4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJsOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBZGZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0UzeDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCNThmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVlmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dFbng4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQlY4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FiZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnRm54OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUJ0OGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBVGZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0dYeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCVjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVlmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dGM3g4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQko4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FXZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnSUh4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJ4OGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBYWZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0gzeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCUjhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQWRmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdIbng4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQkY4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FSZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnRW54OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJOOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBVWZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0ZYeDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCWjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQVhmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dHSHg4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQmw4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFhZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRzN4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJ4OGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBZGZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0hueDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCOThmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQWdmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdIM3g4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQnQ4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFWZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR1h4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJwOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBZ2ZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0hueDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCZDhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQVNmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdIWHg4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQkY4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFUZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnSEh4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJoOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBV2ZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZIeDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnSVNBaEtRTUFJQUVnQ1lXRk53TUFJQ0lnSWlrREFDQUNJQXFGaFRjREFDQWpJQ01wQXdBZ0F5QUxoWVUzQXdBZ0pDQWtLUU1BSUFRZ0RJV0ZOd01BSUNVZ0pTa0RBQ0FGSUEyRmhUY0RBQ0FtSUNZcEF3QWdCaUFPaFlVM0F3QWdKeUFuS1FNQUlBY2dENFdGTndNQUlDZ2dLQ2tEQUNBSUlCQ0ZoVGNEQUFzPVwiKTtcbiAgfVxufSk7XG5cbi8vIHdhc20tbW9kdWxlOi4vYmxha2UyYi53YXRcbnZhciBieXRlcyA9IHJlcXVpcmVfYmxha2UyYigpO1xudmFyIGNvbXBpbGVkID0gV2ViQXNzZW1ibHkuY29tcGlsZShieXRlcyk7XG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIChpbXBvcnRzKSA9PiB7XG4gIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUoYXdhaXQgY29tcGlsZWQsIGltcG9ydHMpO1xuICByZXR1cm4gaW5zdGFuY2UuZXhwb3J0cztcbn07XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbmFub2Fzc2VydCcpXG52YXIgYjRhID0gcmVxdWlyZSgnYjRhJylcblxudmFyIHdhc20gPSBudWxsXG52YXIgd2FzbVByb21pc2UgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09IFwidW5kZWZpbmVkXCIgJiYgcmVxdWlyZSgnLi9ibGFrZTJiJykoKS50aGVuKG1vZCA9PiB7XG4gIHdhc20gPSBtb2Rcbn0pXG5cbnZhciBoZWFkID0gNjRcbnZhciBmcmVlTGlzdCA9IFtdXG5cbm1vZHVsZS5leHBvcnRzID0gQmxha2UyYlxudmFyIEJZVEVTX01JTiA9IG1vZHVsZS5leHBvcnRzLkJZVEVTX01JTiA9IDE2XG52YXIgQllURVNfTUFYID0gbW9kdWxlLmV4cG9ydHMuQllURVNfTUFYID0gNjRcbnZhciBCWVRFUyA9IG1vZHVsZS5leHBvcnRzLkJZVEVTID0gMzJcbnZhciBLRVlCWVRFU19NSU4gPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFU19NSU4gPSAxNlxudmFyIEtFWUJZVEVTX01BWCA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTX01BWCA9IDY0XG52YXIgS0VZQllURVMgPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFUyA9IDMyXG52YXIgU0FMVEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuU0FMVEJZVEVTID0gMTZcbnZhciBQRVJTT05BTEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuUEVSU09OQUxCWVRFUyA9IDE2XG5cbmZ1bmN0aW9uIEJsYWtlMmIgKGRpZ2VzdExlbmd0aCwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJsYWtlMmIpKSByZXR1cm4gbmV3IEJsYWtlMmIoZGlnZXN0TGVuZ3RoLCBrZXksIHNhbHQsIHBlcnNvbmFsLCBub0Fzc2VydClcbiAgaWYgKCF3YXNtKSB0aHJvdyBuZXcgRXJyb3IoJ1dBU00gbm90IGxvYWRlZC4gV2FpdCBmb3IgQmxha2UyYi5yZWFkeShjYiknKVxuICBpZiAoIWRpZ2VzdExlbmd0aCkgZGlnZXN0TGVuZ3RoID0gMzJcblxuICBpZiAobm9Bc3NlcnQgIT09IHRydWUpIHtcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoID49IEJZVEVTX01JTiwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICcgKyBCWVRFU19NSU4gKyAnLCB3YXMgZ2l2ZW4gJyArIGRpZ2VzdExlbmd0aClcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoIDw9IEJZVEVTX01BWCwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IG1vc3QgJyArIEJZVEVTX01BWCArICcsIHdhcyBnaXZlbiAnICsgZGlnZXN0TGVuZ3RoKVxuICAgIGlmIChrZXkgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KGtleSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdrZXkgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQoa2V5Lmxlbmd0aCA+PSBLRVlCWVRFU19NSU4sICdrZXkgbXVzdCBiZSBhdCBsZWFzdCAnICsgS0VZQllURVNfTUlOICsgJywgd2FzIGdpdmVuICcgKyBrZXkubGVuZ3RoKVxuICAgICAgYXNzZXJ0KGtleS5sZW5ndGggPD0gS0VZQllURVNfTUFYLCAna2V5IG11c3QgYmUgYXQgbGVhc3QgJyArIEtFWUJZVEVTX01BWCArICcsIHdhcyBnaXZlbiAnICsga2V5Lmxlbmd0aClcbiAgICB9XG4gICAgaWYgKHNhbHQgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KHNhbHQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnc2FsdCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcbiAgICAgIGFzc2VydChzYWx0Lmxlbmd0aCA9PT0gU0FMVEJZVEVTLCAnc2FsdCBtdXN0IGJlIGV4YWN0bHkgJyArIFNBTFRCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgc2FsdC5sZW5ndGgpXG4gICAgfVxuICAgIGlmIChwZXJzb25hbCAhPSBudWxsKSB7XG4gICAgICBhc3NlcnQocGVyc29uYWwgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAncGVyc29uYWwgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQocGVyc29uYWwubGVuZ3RoID09PSBQRVJTT05BTEJZVEVTLCAncGVyc29uYWwgbXVzdCBiZSBleGFjdGx5ICcgKyBQRVJTT05BTEJZVEVTICsgJywgd2FzIGdpdmVuICcgKyBwZXJzb25hbC5sZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFmcmVlTGlzdC5sZW5ndGgpIHtcbiAgICBmcmVlTGlzdC5wdXNoKGhlYWQpXG4gICAgaGVhZCArPSAyMTZcbiAgfVxuXG4gIHRoaXMuZGlnZXN0TGVuZ3RoID0gZGlnZXN0TGVuZ3RoXG4gIHRoaXMuZmluYWxpemVkID0gZmFsc2VcbiAgdGhpcy5wb2ludGVyID0gZnJlZUxpc3QucG9wKClcbiAgdGhpcy5fbWVtb3J5ID0gbmV3IFVpbnQ4QXJyYXkod2FzbS5tZW1vcnkuYnVmZmVyKVxuXG4gIHRoaXMuX21lbW9yeS5maWxsKDAsIDAsIDY0KVxuICB0aGlzLl9tZW1vcnlbMF0gPSB0aGlzLmRpZ2VzdExlbmd0aFxuICB0aGlzLl9tZW1vcnlbMV0gPSBrZXkgPyBrZXkubGVuZ3RoIDogMFxuICB0aGlzLl9tZW1vcnlbMl0gPSAxIC8vIGZhbm91dFxuICB0aGlzLl9tZW1vcnlbM10gPSAxIC8vIGRlcHRoXG5cbiAgaWYgKHNhbHQpIHRoaXMuX21lbW9yeS5zZXQoc2FsdCwgMzIpXG4gIGlmIChwZXJzb25hbCkgdGhpcy5fbWVtb3J5LnNldChwZXJzb25hbCwgNDgpXG5cbiAgaWYgKHRoaXMucG9pbnRlciArIDIxNiA+IHRoaXMuX21lbW9yeS5sZW5ndGgpIHRoaXMuX3JlYWxsb2ModGhpcy5wb2ludGVyICsgMjE2KSAvLyB3ZSBuZWVkIDIxNiBieXRlcyBmb3IgdGhlIHN0YXRlXG4gIHdhc20uYmxha2UyYl9pbml0KHRoaXMucG9pbnRlciwgdGhpcy5kaWdlc3RMZW5ndGgpXG5cbiAgaWYgKGtleSkge1xuICAgIHRoaXMudXBkYXRlKGtleSlcbiAgICB0aGlzLl9tZW1vcnkuZmlsbCgwLCBoZWFkLCBoZWFkICsga2V5Lmxlbmd0aCkgLy8gd2hpdGVvdXQga2V5XG4gICAgdGhpcy5fbWVtb3J5W3RoaXMucG9pbnRlciArIDIwMF0gPSAxMjhcbiAgfVxufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5fcmVhbGxvYyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIHdhc20ubWVtb3J5Lmdyb3coTWF0aC5tYXgoMCwgTWF0aC5jZWlsKE1hdGguYWJzKHNpemUgLSB0aGlzLl9tZW1vcnkubGVuZ3RoKSAvIDY1NTM2KSkpXG4gIHRoaXMuX21lbW9yeSA9IG5ldyBVaW50OEFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcilcbn1cblxuQmxha2UyYi5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGlucHV0KSB7XG4gIGFzc2VydCh0aGlzLmZpbmFsaXplZCA9PT0gZmFsc2UsICdIYXNoIGluc3RhbmNlIGZpbmFsaXplZCcpXG4gIGFzc2VydChpbnB1dCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXksICdpbnB1dCBtdXN0IGJlIFVpbnQ4QXJyYXkgb3IgQnVmZmVyJylcblxuICBpZiAoaGVhZCArIGlucHV0Lmxlbmd0aCA+IHRoaXMuX21lbW9yeS5sZW5ndGgpIHRoaXMuX3JlYWxsb2MoaGVhZCArIGlucHV0Lmxlbmd0aClcbiAgdGhpcy5fbWVtb3J5LnNldChpbnB1dCwgaGVhZClcbiAgd2FzbS5ibGFrZTJiX3VwZGF0ZSh0aGlzLnBvaW50ZXIsIGhlYWQsIGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHJldHVybiB0aGlzXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuZmluYWxpemVkID09PSBmYWxzZSwgJ0hhc2ggaW5zdGFuY2UgZmluYWxpemVkJylcbiAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlXG5cbiAgZnJlZUxpc3QucHVzaCh0aGlzLnBvaW50ZXIpXG4gIHdhc20uYmxha2UyYl9maW5hbCh0aGlzLnBvaW50ZXIpXG5cbiAgaWYgKCFlbmMgfHwgZW5jID09PSAnYmluYXJ5Jykge1xuICAgIHJldHVybiB0aGlzLl9tZW1vcnkuc2xpY2UodGhpcy5wb2ludGVyICsgMTI4LCB0aGlzLnBvaW50ZXIgKyAxMjggKyB0aGlzLmRpZ2VzdExlbmd0aClcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5jID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBiNGEudG9TdHJpbmcodGhpcy5fbWVtb3J5LCBlbmMsIHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBhc3NlcnQoZW5jIGluc3RhbmNlb2YgVWludDhBcnJheSAmJiBlbmMubGVuZ3RoID49IHRoaXMuZGlnZXN0TGVuZ3RoLCAnaW5wdXQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaWdlc3RMZW5ndGg7IGkrKykge1xuICAgIGVuY1tpXSA9IHRoaXMuX21lbW9yeVt0aGlzLnBvaW50ZXIgKyAxMjggKyBpXVxuICB9XG5cbiAgcmV0dXJuIGVuY1xufVxuXG4vLyBsaWJzb2RpdW0gY29tcGF0XG5CbGFrZTJiLnByb3RvdHlwZS5maW5hbCA9IEJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdFxuXG5CbGFrZTJiLldBU00gPSB3YXNtXG5CbGFrZTJiLlNVUFBPUlRFRCA9IHR5cGVvZiBXZWJBc3NlbWJseSAhPT0gJ3VuZGVmaW5lZCdcblxuQmxha2UyYi5yZWFkeSA9IGZ1bmN0aW9uIChjYikge1xuICBpZiAoIWNiKSBjYiA9IG5vb3BcbiAgaWYgKCF3YXNtUHJvbWlzZSkgcmV0dXJuIGNiKG5ldyBFcnJvcignV2ViQXNzZW1ibHkgbm90IHN1cHBvcnRlZCcpKVxuICByZXR1cm4gd2FzbVByb21pc2UudGhlbigoKSA9PiBjYigpLCBjYilcbn1cblxuQmxha2UyYi5wcm90b3R5cGUucmVhZHkgPSBCbGFrZTJiLnJlYWR5XG5cbkJsYWtlMmIucHJvdG90eXBlLmdldFBhcnRpYWxIYXNoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fbWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciwgdGhpcy5wb2ludGVyICsgMjE2KTtcbn1cblxuQmxha2UyYi5wcm90b3R5cGUuc2V0UGFydGlhbEhhc2ggPSBmdW5jdGlvbiAocGgpIHtcbiAgdGhpcy5fbWVtb3J5LnNldChwaCwgdGhpcy5wb2ludGVyKTtcbn1cblxuZnVuY3Rpb24gbm9vcCAoKSB7fVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogZ2xvYmFsIHdpbmRvdyAqL1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0IHJlYWRsaW5lIGZyb20gXCJyZWFkbGluZVwiO1xuaW1wb3J0IHsgQ2hhQ2hhIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IGNyeXB0byBmcm9tIFwiY3J5cHRvXCI7XG5cbmNvbnN0IF9yZXZUYWJsZSA9IFtdO1xuZm9yIChsZXQgaT0wOyBpPDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPTA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaT0wOyBpPGJpdHM7IGkrKykge1xuICAgICAgICByZXMgPDw9IDE7XG4gICAgICAgIHJlcyA9IHJlcyB8IChhICYxKTtcbiAgICAgICAgYSA+Pj0xO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhGRl0gPDwgMjQpXG4gICAgKSA+Pj4gKDMyLWJpdHMpO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBsb2cyKCBWIClcbntcbiAgICByZXR1cm4oICggKCBWICYgMHhGRkZGMDAwMCApICE9PSAwID8gKCBWICY9IDB4RkZGRjAwMDAsIDE2ICkgOiAwICkgfCAoICggViAmIDB4RkYwMEZGMDAgKSAhPT0gMCA/ICggViAmPSAweEZGMDBGRjAwLCA4ICkgOiAwICkgfCAoICggViAmIDB4RjBGMEYwRjAgKSAhPT0gMCA/ICggViAmPSAweEYwRjBGMEYwLCA0ICkgOiAwICkgfCAoICggViAmIDB4Q0NDQ0NDQ0MgKSAhPT0gMCA/ICggViAmPSAweENDQ0NDQ0NDLCAyICkgOiAwICkgfCAoICggViAmIDB4QUFBQUFBQUEgKSAhPT0gMCApICk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEhhc2goYiwgdGl0bGUpIHtcbiAgICBjb25zdCBhID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyLCBiLmJ5dGVPZmZzZXQsIGIuYnl0ZUxlbmd0aCk7XG4gICAgbGV0IFMgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIHtcbiAgICAgICAgaWYgKGk+MCkgUyArPSBcIlxcblwiO1xuICAgICAgICBTICs9IFwiXFx0XFx0XCI7XG4gICAgICAgIGZvciAobGV0IGo9MDsgajw0OyBqKyspIHtcbiAgICAgICAgICAgIGlmIChqPjApIFMgKz0gXCIgXCI7XG4gICAgICAgICAgICBTICs9IGEuZ2V0VWludDMyKGkqMTYraio0KS50b1N0cmluZygxNikucGFkU3RhcnQoOCwgXCIwXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0aXRsZSkgUyA9IHRpdGxlICsgXCJcXG5cIiArIFM7XG4gICAgcmV0dXJuIFM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoSXNFcXVhbChoMSwgaDIpIHtcbiAgICBpZiAoaDEuYnl0ZUxlbmd0aCAhPSBoMi5ieXRlTGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgdmFyIGR2MSA9IG5ldyBJbnQ4QXJyYXkoaDEpO1xuICAgIHZhciBkdjIgPSBuZXcgSW50OEFycmF5KGgyKTtcbiAgICBmb3IgKHZhciBpID0gMCA7IGkgIT0gaDEuYnl0ZUxlbmd0aCA7IGkrKylcbiAgICB7XG4gICAgICAgIGlmIChkdjFbaV0gIT0gZHYyW2ldKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xvbmVIYXNoZXIoaCkge1xuICAgIGNvbnN0IHBoID0gaC5nZXRQYXJ0aWFsSGFzaCgpO1xuICAgIGNvbnN0IHJlcyA9IEJsYWtlMmIoNjQpO1xuICAgIHJlcy5zZXRQYXJ0aWFsSGFzaChwaCk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNhbWVSYXRpbyhjdXJ2ZSwgZzFzLCBnMXN4LCBnMnMsIGcyc3gpIHtcbiAgICBpZiAoY3VydmUuRzEuaXNaZXJvKGcxcykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoY3VydmUuRzEuaXNaZXJvKGcxc3gpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcyLmlzWmVybyhnMnMpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcyLmlzWmVybyhnMnN4KSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIHJldHVybiBjdXJ2ZS5GMTIuZXEoY3VydmUucGFpcmluZyhnMXMsIGcyc3gpLCBjdXJ2ZS5wYWlyaW5nKGcxc3gsIGcycykpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnBhaXJpbmdFcShnMXMsIGcyc3gsIGN1cnZlLkcxLm5lZyhnMXN4KSwgZzJzKTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBhc2tFbnRyb3B5KCkge1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHtcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5wcm9tcHQoXCJFbnRlciBhIHJhbmRvbSB0ZXh0LiAoRW50cm9weSk6IFwiLCBcIlwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBybCA9IHJlYWRsaW5lLmNyZWF0ZUludGVyZmFjZSh7XG4gICAgICAgICAgICBpbnB1dDogcHJvY2Vzcy5zdGRpbixcbiAgICAgICAgICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBybC5xdWVzdGlvbihcIkVudGVyIGEgcmFuZG9tIHRleHQuIChFbnRyb3B5KTogXCIsIChpbnB1dCkgPT4gcmVzb2x2ZShpbnB1dCkgKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZG9tQnl0ZXMobikge1xuICAgIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHsgLy8gU3VwcG9ydGVkXG4gICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgfSBlbHNlIHsgLy8gTm9kZUpTXG4gICAgICAgIGNyeXB0by5yYW5kb21GaWxsU3luYyhhcnJheSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNoYTI1NmRpZ2VzdChkYXRhKSB7XG4gICAgaWYgKHByb2Nlc3MuYnJvd3NlcikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZ2xvYmFsVGhpcy5jcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgZGF0YS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcbiAgICB9IGVsc2UgeyAvLyBOb2RlSlNcbiAgICAgICAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKFwic2hhMjU2XCIpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtVaW50OEFycmF5fSBkYXRhXG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWFkVUludDMyQkUoZGF0YSwgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIG5ldyBEYXRhVmlldyhkYXRhLmJ1ZmZlcikuZ2V0VWludDMyKG9mZnNldCwgZmFsc2UpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UmFuZG9tUm5nKGVudHJvcHkpIHtcbiAgICAvLyBHZW5lcmF0ZSBhIHJhbmRvbSBSbmdcbiAgICB3aGlsZSAoIWVudHJvcHkpIHtcbiAgICAgICAgZW50cm9weSA9IGF3YWl0IGFza0VudHJvcHkoKTtcbiAgICB9XG4gICAgY29uc3QgaGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgaGFzaGVyLnVwZGF0ZShnZXRSYW5kb21CeXRlcyg2NCkpO1xuICAgIGNvbnN0IGVuYyA9IG5ldyBUZXh0RW5jb2RlcigpOyAvLyBhbHdheXMgdXRmLThcbiAgICBoYXNoZXIudXBkYXRlKGVuYy5lbmNvZGUoZW50cm9weSkpO1xuICAgIGNvbnN0IGhhc2ggPSBoYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wO2k8ODtpKyspIHtcbiAgICAgICAgc2VlZFtpXSA9IHJlYWRVSW50MzJCRShoYXNoLCBpKjQpO1xuICAgIH1cbiAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuICAgIHJldHVybiBybmc7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApIHtcbiAgICBsZXQgbkl0ZXJhdGlvbnNJbm5lcjtcbiAgICBsZXQgbkl0ZXJhdGlvbnNPdXRlcjtcbiAgICBpZiAobnVtSXRlcmF0aW9uc0V4cDwzMikge1xuICAgICAgICBuSXRlcmF0aW9uc0lubmVyID0gKDEgPDwgbnVtSXRlcmF0aW9uc0V4cCkgPj4+IDA7XG4gICAgICAgIG5JdGVyYXRpb25zT3V0ZXIgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG5JdGVyYXRpb25zSW5uZXIgPSAweDEwMDAwMDAwMDtcbiAgICAgICAgbkl0ZXJhdGlvbnNPdXRlciA9ICgxIDw8IChudW1JdGVyYXRpb25zRXhwLTMyKSkgPj4+IDA7XG4gICAgfVxuXG4gICAgbGV0IGN1ckhhc2ggPSBiZWFjb25IYXNoO1xuICAgIGZvciAobGV0IGk9MDsgaTxuSXRlcmF0aW9uc091dGVyOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5JdGVyYXRpb25zSW5uZXI7IGorKykge1xuICAgICAgICAgICAgY3VySGFzaCA9IGF3YWl0IHNoYTI1NmRpZ2VzdChjdXJIYXNoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGN1ckhhc2hWID0gbmV3IERhdGFWaWV3KGN1ckhhc2guYnVmZmVyLCBjdXJIYXNoLmJ5dGVPZmZzZXQsIGN1ckhhc2guYnl0ZUxlbmd0aCk7XG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgc2VlZFtpXSA9IGN1ckhhc2hWLmdldFVpbnQzMihpKjQsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgcmV0dXJuIHJuZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhleDJCeXRlQXJyYXkocykge1xuICAgIGlmIChzIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIHM7XG4gICAgaWYgKHMuc2xpY2UoMCwyKSA9PSBcIjB4XCIpIHM9IHMuc2xpY2UoMik7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHMubWF0Y2goL1tcXGRhLWZdezJ9L2dpKS5tYXAoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KGgsIDE2KTtcbiAgICB9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBieXRlQXJyYXkyaGV4KGJ5dGVBcnJheSkge1xuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkKEZyLCBvKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSAge1xuICAgICAgICByZXR1cm4gRnIudG9TdHJpbmcobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkLmJpbmQobnVsbCwgRnIpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKCAoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSBpZiAoKHR5cGVvZihvKSA9PSBcImJpZ2ludFwiKSB8fCBvLmVxICE9PSB1bmRlZmluZWQpICB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG4iLCJleHBvcnQgY29uc3QgSEVBREVSX1pLRVlfU0VDVElPTiA9IDE7XG5cbmV4cG9ydCBjb25zdCBHUk9USDE2X1BST1RPQ09MX0lEID0gMTtcbmV4cG9ydCBjb25zdCBQTE9OS19QUk9UT0NPTF9JRCA9IDI7XG5leHBvcnQgY29uc3QgRkZMT05LX1BST1RPQ09MX0lEID0gMTA7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGRmxvbmsgY29uc3RhbnRzXG5leHBvcnQgY29uc3QgRkZfVF9QT0xfREVHX01JTiA9IDM7XG5cbi8vIEZGbG9uayBBXG5leHBvcnQgY29uc3QgQSA9IDEyO1xuXG4vLyBaS0VZIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfTlNFQ1RJT05TID0gMTc7XG5cbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OID0gMjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OID0gMztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04gPSA0O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQl9NQVBfU0VDVElPTiA9IDU7XG5leHBvcnQgY29uc3QgWktFWV9GRl9DX01BUF9TRUNUSU9OID0gNjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FMX1NFQ1RJT04gPSA3O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfUVJfU0VDVElPTiA9IDg7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RTV9TRUNUSU9OID0gOTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FPX1NFQ1RJT04gPSAxMDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FDX1NFQ1RJT04gPSAxMTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OID0gMTI7XG5leHBvcnQgY29uc3QgWktFWV9GRl9TSUdNQTJfU0VDVElPTiA9IDEzO1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfU0lHTUEzX1NFQ1RJT04gPSAxNDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04gPSAxNTtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1BUQVVfU0VDVElPTiA9IDE2O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQzBfU0VDVElPTiA9IDE3O1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRm9ybWF0XG4vLyA9PT09PT1cbi8vIEhlYWRlcigxKVxuLy8gICAgICBQcm92ZXIgVHlwZSAxIEdyb3RoXG4vLyBIZWFkZXJHcm90aCgyKVxuLy8gICAgICBuOHFcbi8vICAgICAgcVxuLy8gICAgICBuOHJcbi8vICAgICAgclxuLy8gICAgICBOVmFyc1xuLy8gICAgICBOUHViXG4vLyAgICAgIERvbWFpblNpemUgIChtdWx0aXBsZSBvZiAyXG4vLyAgICAgIGFscGhhMVxuLy8gICAgICBiZXRhMVxuLy8gICAgICBkZWx0YTFcbi8vICAgICAgYmV0YTJcbi8vICAgICAgZ2FtbWEyXG4vLyAgICAgIGRlbHRhMlxuLy8gSUMoMylcbi8vIENvZWZzKDQpXG4vLyBQb2ludHNBKDUpXG4vLyBQb2ludHNCMSg2KVxuLy8gUG9pbnRzQjIoNylcbi8vIFBvaW50c0MoOClcbi8vIFBvaW50c0goOSlcbi8vIENvbnRyaWJ1dGlvbnMoMTApXG5cbmltcG9ydCB7IFNjYWxhciwgRjFGaWVsZCB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyBsb2cyIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHtGRkxPTktfUFJPVE9DT0xfSUQsIEdST1RIMTZfUFJPVE9DT0xfSUQsIFBMT05LX1BST1RPQ09MX0lEfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtaS0VZX0ZGX0hFQURFUl9TRUNUSU9OfSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUhlYWRlcihmZCwgemtleSkge1xuXG4gICAgLy8gV3JpdGUgdGhlIGhlYWRlclxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBHcm90aFxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgdGhlIEdyb3RoIGhlYWRlciBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgY29uc3QgcHJpbWVRID0gY3VydmUucTtcbiAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVRKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVSKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuOHEpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgcHJpbWVRLCBuOHEpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjhyKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lUiwgbjhyKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkublZhcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgYmFyc1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoemtleS5uUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5LmRvbWFpblNpemUpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcbiAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS52a19hbHBoYV8xKTtcbiAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS52a19iZXRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2JldGFfMik7XG4gICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkudmtfZ2FtbWFfMik7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfZGVsdGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkudmtfZGVsdGFfMik7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVpLZXkoZmlsZU5hbWUsIHprZXkpIHtcblxuICAgIGxldCBjdXJ2ZSA9IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLFwiemtleVwiLCAxLCA5KTtcblxuICAgIGF3YWl0IHdyaXRlSGVhZGVyKGZkLCB6a2V5KTtcbiAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgoemtleS5yKSAtIDEpIC8gNjQpICsxKSo4O1xuICAgIGNvbnN0IFJyID0gU2NhbGFyLm1vZChTY2FsYXIuc2hsKDEsIG44cio4KSwgemtleS5yKTtcbiAgICBjb25zdCBSMnIgPSBTY2FsYXIubW9kKFNjYWxhci5tdWwoUnIsUnIpLCB6a2V5LnIpO1xuXG4gICAgLy8gV3JpdGUgUG9scyAoQSBhbmQgQiAoQyBjYW4gYmUgb21pdHRlZCkpXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIHprZXkuY2NvZWZzID0gemtleS5jY29lZnMuZmlsdGVyKGMgPT4gYy5tYXRyaXg8Mik7XG4gICAgemtleS5jY29lZnMuc29ydCggKGEsYikgPT4gYS5jb25zdHJhaW50IC0gYi5jb25zdHJhaW50ICk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA0KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkuY2NvZWZzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuY2NvZWZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGNvZWYgPSB6a2V5LmNjb2Vmc1tpXTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb2VmLm1hdHJpeCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5jb25zdHJhaW50KTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb2VmLnNpZ25hbCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRnIyKGNvZWYudmFsdWUpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAzKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS5JQ1tpXSApO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgQVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA1KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkFbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIEIxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDYpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuQjFbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIEIyXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDcpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMihmZCwgY3VydmUsIHprZXkuQjJbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIENcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgOCk7XG4gICAgZm9yIChsZXQgaT16a2V5Lm5QdWJsaWMrMTsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuQ1tpXSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBXcml0ZSBIIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA5KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuaEV4cHNbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUZyMihuKSB7XG4gICAgICAgIC8vIENvbnZlcnQgdG8gbW9udGdvbWVyeVxuICAgICAgICBuID0gU2NhbGFyLm1vZCggU2NhbGFyLm11bChuLCBSMnIpLCB6a2V5LnIpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgbiwgbjhyKTtcbiAgICB9XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShmZCwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwckxFTShidWZmLCAwLCBwKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihmZCwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMi50b1JwckxFTShidWZmLCAwLCBwKTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGNvbnN0IHJlcyA9IGN1cnZlLkcxLmZyb21ScHJMRU0oYnVmZiwgMCk7XG4gICAgcmV0dXJuIHRvT2JqZWN0ID8gY3VydmUuRzEudG9PYmplY3QocmVzKSA6IHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEcyKGZkLCBjdXJ2ZSwgdG9PYmplY3QpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgIGNvbnN0IHJlcyA9IGN1cnZlLkcyLmZyb21ScHJMRU0oYnVmZiwgMCk7XG4gICAgcmV0dXJuIHRvT2JqZWN0ID8gY3VydmUuRzIudG9PYmplY3QocmVzKSA6IHJlcztcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKSB7XG4gICAgLy8gUmVhZCBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEpO1xuICAgIGNvbnN0IHByb3RvY29sSWQgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgaWYgKHByb3RvY29sSWQgPT09IEdST1RIMTZfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJHcm90aDE2KGZkLCBzZWN0aW9ucywgdG9PYmplY3QsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAocHJvdG9jb2xJZCA9PT0gUExPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJQbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sSWQgPT09IEZGTE9OS19QUk9UT0NPTF9JRCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVhZEhlYWRlckZGbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQcm90b2NvbCBub3Qgc3VwcG9ydGVkOiBcIik7XG4gICAgfVxufVxuXG5cblxuXG5hc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyR3JvdGgxNihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgemtleSA9IHt9O1xuXG4gICAgemtleS5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuXG4gICAgLy8gUmVhZCBHcm90aCBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IG44cSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhxID0gbjhxO1xuICAgIHprZXkucSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHEpO1xuXG4gICAgY29uc3QgbjhyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHIgPSBuOHI7XG4gICAgemtleS5yID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cik7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSwgb3B0aW9ucyk7XG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS52a19hbHBoYV8xID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS52a19iZXRhXzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2JldGFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZ2FtbWFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZGVsdGFfMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcblxufVxuXG5hc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyUGxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcInBsb25rXCI7XG5cbiAgICAvLyBSZWFkIFBsb25rIEhlYWRlclxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMik7XG4gICAgY29uc3QgbjhxID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHEgPSBuOHE7XG4gICAgemtleS5xID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cSk7XG5cbiAgICBjb25zdCBuOHIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44ciA9IG44cjtcbiAgICB6a2V5LnIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhyKTtcbiAgICB6a2V5LmN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xLCBvcHRpb25zKTtcbiAgICB6a2V5Lm5WYXJzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uUHVibGljID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5kb21haW5TaXplID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5wb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcbiAgICB6a2V5Lm5BZGRpdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5Db25zdHJhaW50cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuazEgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS5rMiA9IGF3YWl0IGZkLnJlYWQobjhyKTtcblxuICAgIHprZXkuUW0gPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFsID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RciA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUW8gPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFjID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5TMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUzIgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlMzID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5YXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlckZGbG9uayhmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKSB7XG4gICAgY29uc3QgemtleSA9IHt9O1xuXG4gICAgemtleS5wcm90b2NvbCA9IFwiZmZsb25rXCI7XG4gICAgemtleS5wcm90b2NvbElkID0gRkZMT05LX1BST1RPQ09MX0lEO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OKTtcbiAgICBjb25zdCBuOHEgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44cSA9IG44cTtcbiAgICB6a2V5LnEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhxKTtcbiAgICB6a2V5LmN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xLCBvcHRpb25zKTtcblxuICAgIGNvbnN0IG44ciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhyID0gbjhyO1xuICAgIHprZXkuciA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHIpO1xuXG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS5uQWRkaXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIHprZXkuazEgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS5rMiA9IGF3YWl0IGZkLnJlYWQobjhyKTtcblxuICAgIHprZXkudzMgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS53NCA9IGF3YWl0IGZkLnJlYWQobjhyKTtcbiAgICB6a2V5Lnc4ID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkud3IgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LlhfMiA9IGF3YWl0IHJlYWRHMihmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgemtleS5DMCA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB6a2V5O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFpLZXkoZmlsZU5hbWUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwiemtleVwiLCAxKTtcblxuICAgIGNvbnN0IHprZXkgPSBhd2FpdCByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucywgdG9PYmplY3QpO1xuXG4gICAgY29uc3QgRnIgPSBuZXcgRjFGaWVsZCh6a2V5LnIpO1xuICAgIGNvbnN0IFJyID0gU2NhbGFyLm1vZChTY2FsYXIuc2hsKDEsIHprZXkubjhyKjgpLCB6a2V5LnIpO1xuICAgIGNvbnN0IFJyaSA9IEZyLmludihScik7XG4gICAgY29uc3QgUnJpMiA9IEZyLm11bChScmksIFJyaSk7XG5cbiAgICBsZXQgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgLy8gUmVhZCBJQyBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDMpO1xuICAgIHprZXkuSUMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBQID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LklDLnB1c2goUCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQ29lZnNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNCk7XG4gICAgY29uc3QgbkNDb2VmcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuY2NvZWZzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5DQ29lZnM7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgY29uc3QgcyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgcmVhZEZyMih0b09iamVjdCk7XG4gICAgICAgIHprZXkuY2NvZWZzLnB1c2goe1xuICAgICAgICAgICAgbWF0cml4OiBtLFxuICAgICAgICAgICAgY29uc3RyYWludDogYyxcbiAgICAgICAgICAgIHNpZ25hbDogcyxcbiAgICAgICAgICAgIHZhbHVlOiB2XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgLy8gUmVhZCBBIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA1KTtcbiAgICB6a2V5LkEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuQVtpXSA9IEE7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgQjFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNik7XG4gICAgemtleS5CMSA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgY29uc3QgQjEgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG5cbiAgICAgICAgemtleS5CMVtpXSA9IEIxO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEIyIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA3KTtcbiAgICB6a2V5LkIyID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBCMiA9IGF3YWl0IHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICAgICAgemtleS5CMltpXSA9IEIyO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEMgcG9pbnRzXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDgpO1xuICAgIHprZXkuQyA9IFtdO1xuICAgIGZvciAobGV0IGk9emtleS5uUHVibGljKzE7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEMgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG5cbiAgICAgICAgemtleS5DW2ldID0gQztcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBIIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA5KTtcbiAgICB6a2V5LmhFeHBzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEggPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuaEV4cHMucHVzaChIKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gemtleTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRGcjIoLyogdG9PYmplY3QgKi8pIHtcbiAgICAgICAgY29uc3QgbiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCB6a2V5Lm44cik7XG4gICAgICAgIHJldHVybiBGci5tdWwobiwgUnJpMik7XG4gICAgfVxuXG59XG5cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYyA9IHtkZWx0YTp7fX07XG4gICAgYy5kZWx0YUFmdGVyID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMuZGVsdGEuZzJfc3B4ID0gYXdhaXQgcmVhZEcyKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkLnJlYWQoNjQpO1xuICAgIGMudHlwZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICBpZiAoYnVmZlR5cGVbMF08PSBsYXN0VHlwZSkgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBpbiB0aGUgY29udHJpYnV0aW9uIG11c3QgYmUgc29ydGVkXCIpO1xuICAgICAgICBsYXN0VHlwZSA9IGJ1ZmZUeXBlWzBdO1xuICAgICAgICBpZiAoYnVmZlR5cGVbMF09PTEpIHsgICAgIC8vIE5hbWVcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlN0ciA9IGF3YWl0IGZkLnJlYWQoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgYy5udW1JdGVyYXRpb25zRXhwID0gYnVmZkV4cFswXTtcbiAgICAgICAgfSBlbHNlIGlmIChidWZmVHlwZVswXT09Mykge1xuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IGZkLnJlYWQoMSk7XG4gICAgICAgICAgICBjLmJlYWNvbkhhc2ggPSBhd2FpdCBmZC5yZWFkKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRNUENQYXJhbXMoZmQsIGN1cnZlLCBzZWN0aW9ucykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMTApO1xuICAgIGNvbnN0IHJlcyA9IHsgY29udHJpYnV0aW9uczogW119O1xuICAgIHJlcy5jc0hhc2ggPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjb25zdCBuID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUpO1xuICAgICAgICByZXMuY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjKSB7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGFBZnRlcik7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfcyk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIGMuZGVsdGEuZzFfc3gpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGMudHlwZSB8fCAwKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgIGlmIChjLm5hbWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMSk7ICAgICAgLy8gUGFyYW0gTmFtZVxuICAgICAgICBjb25zdCBuYW1lRGF0YSA9IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLmVuY29kZShjLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDIpOyAgICAgIC8vIFBhcmFtIG51bUl0ZXJhdGlvbnNFeHBcbiAgICAgICAgcGFyYW1zLnB1c2goYy5udW1JdGVyYXRpb25zRXhwKTtcblxuICAgICAgICBwYXJhbXMucHVzaCgzKTsgICAgICAvLyBCZWFjb24gSGFzaFxuICAgICAgICBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjLmJlYWNvbkhhc2guYnl0ZUxlbmd0aDsgaSsrKSBwYXJhbXMucHVzaChjLmJlYWNvbkhhc2hbaV0pO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aD4wKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc0J1ZmYgPSBuZXcgVWludDhBcnJheShwYXJhbXMpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHBhcmFtc0J1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKHBhcmFtc0J1ZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZU1QQ1BhcmFtcyhmZCwgY3VydmUsIG1wY1BhcmFtcykge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMTApO1xuICAgIGF3YWl0IGZkLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgcCkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIHApO1xuICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoRzIoaGFzaGVyLGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgcCk7XG4gICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hQdWJLZXkoaGFzaGVyLCBjdXJ2ZSwgYykge1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhQWZ0ZXIpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgIGhhc2hHMShoYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcbiAgICBoYXNoRzIoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMl9zcHgpO1xuICAgIGhhc2hlci51cGRhdGUoYy50cmFuc2NyaXB0KTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGUoZmQsIHdpdG5lc3MsIHByaW1lKSB7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDEpO1xuICAgIGNvbnN0IG44ID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lKSAtIDEpIC8gNjQpICsxKSo4O1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgcHJpbWUsIG44KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHdpdG5lc3MubGVuZ3RoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgZm9yIChsZXQgaT0wOyBpPHdpdG5lc3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCB3aXRuZXNzW2ldLCBuOCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuXG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQmluKGZkLCB3aXRuZXNzQmluLCBwcmltZSkge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBjb25zdCBuOCA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZSkgLSAxKSAvIDY0KSArMSkqODtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lLCBuOCk7XG4gICAgaWYgKHdpdG5lc3NCaW4uYnl0ZUxlbmd0aCAlIG44ICE9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCB3aXRuZXNzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih3aXRuZXNzQmluLmJ5dGVMZW5ndGggLyBuOCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgYXdhaXQgZmQud3JpdGUod2l0bmVzc0Jpbik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zKSB7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEpO1xuICAgIGNvbnN0IG44ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgcSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOCk7XG4gICAgY29uc3QgbldpdG5lc3MgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHtuOCwgcSwgbldpdG5lc3N9O1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkKGZpbGVOYW1lKSB7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShmaWxlTmFtZSwgXCJ3dG5zXCIsIDIpO1xuXG4gICAgY29uc3Qge244LCBuV2l0bmVzc30gPSBhd2FpdCByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuV2l0bmVzczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjgpO1xuICAgICAgICByZXMucHVzaCh2KTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgbG9nMiB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgdXRpbHMsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHtzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2UHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlciwgb3B0aW9ucykge1xuICAgIGNvbnN0IHtmZDogZmRXdG5zLCBzZWN0aW9uczogc2VjdGlvbnNXdG5zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3Qgd3RucyA9IGF3YWl0IHd0bnNVdGlscy5yZWFkSGVhZGVyKGZkV3Rucywgc2VjdGlvbnNXdG5zKTtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogc2VjdGlvbnNaS2V5fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgc2VjdGlvbnNaS2V5LCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgIHd0bnMucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBpZiAod3Rucy5uV2l0bmVzcyAhPSB6a2V5Lm5WYXJzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRuZXNzIGxlbmd0aC4gQ2lyY3VpdDogJHt6a2V5Lm5WYXJzfSwgd2l0bmVzczogJHt3dG5zLm5XaXRuZXNzfWApO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gemtleS5jdXJ2ZTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcblxuICAgIGNvbnN0IHBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBXdG5zXCIpO1xuICAgIGNvbnN0IGJ1ZmZXaXRuZXNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkV3Rucywgc2VjdGlvbnNXdG5zLCAyKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIENvZWZmc1wiKTtcbiAgICBjb25zdCBidWZmQ29lZmZzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA0KTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkJ1aWxkaW5nIEFCQ1wiKTtcbiAgICBjb25zdCBbYnVmZkFfVCwgYnVmZkJfVCwgYnVmZkNfVF0gPSBhd2FpdCBidWlsZEFCQzEoY3VydmUsIHprZXksIGJ1ZmZXaXRuZXNzLCBidWZmQ29lZmZzLCBsb2dnZXIpO1xuXG4gICAgY29uc3QgaW5jID0gcG93ZXIgPT0gRnIucyA/IGN1cnZlLkZyLnNoaWZ0IDogY3VydmUuRnIud1twb3dlcisxXTtcblxuICAgIGNvbnN0IGJ1ZmZBID0gYXdhaXQgRnIuaWZmdChidWZmQV9ULCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiSUZGVF9BXCIpO1xuICAgIGNvbnN0IGJ1ZmZBb2RkID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmQSwgRnIuZSgxKSwgaW5jKTtcbiAgICBjb25zdCBidWZmQW9kZF9UID0gYXdhaXQgRnIuZmZ0KGJ1ZmZBb2RkLCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiRkZUX0FcIik7XG5cbiAgICBjb25zdCBidWZmQiA9IGF3YWl0IEZyLmlmZnQoYnVmZkJfVCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIklGRlRfQlwiKTtcbiAgICBjb25zdCBidWZmQm9kZCA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZkIsIEZyLmUoMSksIGluYyk7XG4gICAgY29uc3QgYnVmZkJvZGRfVCA9IGF3YWl0IEZyLmZmdChidWZmQm9kZCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIkZGVF9CXCIpO1xuXG4gICAgY29uc3QgYnVmZkMgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZDX1QsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJJRkZUX0NcIik7XG4gICAgY29uc3QgYnVmZkNvZGQgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZDLCBGci5lKDEpLCBpbmMpO1xuICAgIGNvbnN0IGJ1ZmZDb2RkX1QgPSBhd2FpdCBGci5mZnQoYnVmZkNvZGQsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJGRlRfQ1wiKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkpvaW4gQUJDXCIpO1xuICAgIGNvbnN0IGJ1ZmZQb2RkX1QgPSBhd2FpdCBqb2luQUJDKGN1cnZlLCB6a2V5LCBidWZmQW9kZF9ULCBidWZmQm9kZF9ULCBidWZmQ29kZF9ULCBsb2dnZXIpO1xuXG4gICAgbGV0IHByb29mID0ge307XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEEgUG9pbnRzXCIpO1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0EgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDUpO1xuICAgIHByb29mLnBpX2EgPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShidWZmQmFzZXNBLCBidWZmV2l0bmVzcywgbG9nZ2VyLCBcIm11bHRpZXhwIEFcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEIxIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNCMSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNik7XG4gICAgbGV0IHBpYjEgPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShidWZmQmFzZXNCMSwgYnVmZldpdG5lc3MsIGxvZ2dlciwgXCJtdWx0aWV4cCBCMVwiKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlJlYWRpbmcgQjIgUG9pbnRzXCIpO1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0IyID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA3KTtcbiAgICBwcm9vZi5waV9iID0gYXdhaXQgY3VydmUuRzIubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjIsIGJ1ZmZXaXRuZXNzLCBsb2dnZXIsIFwibXVsdGlleHAgQjJcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEMgUG9pbnRzXCIpO1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDgpO1xuICAgIHByb29mLnBpX2MgPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShidWZmQmFzZXNDLCBidWZmV2l0bmVzcy5zbGljZSgoemtleS5uUHVibGljKzEpKmN1cnZlLkZyLm44KSwgbG9nZ2VyLCBcIm11bHRpZXhwIENcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEggUG9pbnRzXCIpO1xuICAgIGNvbnN0IGJ1ZmZCYXNlc0ggPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDkpO1xuICAgIGNvbnN0IHJlc0ggPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShidWZmQmFzZXNILCBidWZmUG9kZF9ULCBsb2dnZXIsIFwibXVsdGlleHAgSFwiKTtcblxuICAgIGNvbnN0IHIgPSBjdXJ2ZS5Gci5yYW5kb20oKTtcbiAgICBjb25zdCBzID0gY3VydmUuRnIucmFuZG9tKCk7XG5cbiAgICBwcm9vZi5waV9hICA9IEcxLmFkZCggcHJvb2YucGlfYSwgemtleS52a19hbHBoYV8xICk7XG4gICAgcHJvb2YucGlfYSAgPSBHMS5hZGQoIHByb29mLnBpX2EsIEcxLnRpbWVzRnIoIHprZXkudmtfZGVsdGFfMSwgciApKTtcblxuICAgIHByb29mLnBpX2IgID0gRzIuYWRkKCBwcm9vZi5waV9iLCB6a2V5LnZrX2JldGFfMiApO1xuICAgIHByb29mLnBpX2IgID0gRzIuYWRkKCBwcm9vZi5waV9iLCBHMi50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzIsIHMgKSk7XG5cbiAgICBwaWIxID0gRzEuYWRkKCBwaWIxLCB6a2V5LnZrX2JldGFfMSApO1xuICAgIHBpYjEgPSBHMS5hZGQoIHBpYjEsIEcxLnRpbWVzRnIoIHprZXkudmtfZGVsdGFfMSwgcyApKTtcblxuICAgIHByb29mLnBpX2MgPSBHMS5hZGQocHJvb2YucGlfYywgcmVzSCk7XG5cblxuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCBwcm9vZi5waV9hLCBzICkpO1xuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCBwaWIxLCByICkpO1xuICAgIHByb29mLnBpX2MgID0gRzEuYWRkKCBwcm9vZi5waV9jLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIEZyLm5lZyhGci5tdWwocixzKSApKSk7XG5cblxuICAgIGxldCBwdWJsaWNTaWduYWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBiID0gYnVmZldpdG5lc3Muc2xpY2UoaSpGci5uOCwgaSpGci5uOCtGci5uOCk7XG4gICAgICAgIHB1YmxpY1NpZ25hbHMucHVzaChTY2FsYXIuZnJvbVJwckxFKGIpKTtcbiAgICB9XG5cbiAgICBwcm9vZi5waV9hID0gRzEudG9PYmplY3QoRzEudG9BZmZpbmUocHJvb2YucGlfYSkpO1xuICAgIHByb29mLnBpX2IgPSBHMi50b09iamVjdChHMi50b0FmZmluZShwcm9vZi5waV9iKSk7XG4gICAgcHJvb2YucGlfYyA9IEcxLnRvT2JqZWN0KEcxLnRvQWZmaW5lKHByb29mLnBpX2MpKTtcblxuICAgIHByb29mLnByb3RvY29sID0gXCJncm90aDE2XCI7XG4gICAgcHJvb2YuY3VydmUgPSBjdXJ2ZS5uYW1lO1xuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbiAgICBwcm9vZiA9IHN0cmluZ2lmeUJpZ0ludHMocHJvb2YpO1xuICAgIHB1YmxpY1NpZ25hbHMgPSBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpO1xuXG4gICAgcmV0dXJuIHtwcm9vZiwgcHVibGljU2lnbmFsc307XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRBQkMxKGN1cnZlLCB6a2V5LCB3aXRuZXNzLCBjb2VmZnMsIGxvZ2dlcikge1xuICAgIGNvbnN0IG44ID0gY3VydmUuRnIubjg7XG4gICAgY29uc3Qgc0NvZWYgPSA0KjMgKyB6a2V5Lm44cjtcbiAgICBjb25zdCBuQ29lZiA9IChjb2VmZnMuYnl0ZUxlbmd0aC00KSAvIHNDb2VmO1xuXG4gICAgY29uc3Qgb3V0QnVmZkEgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIG44KTtcbiAgICBjb25zdCBvdXRCdWZmQiA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogbjgpO1xuICAgIGNvbnN0IG91dEJ1ZmZDID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBuOCk7XG5cbiAgICBjb25zdCBvdXRCdWYgPSBbIG91dEJ1ZmZBLCBvdXRCdWZmQiBdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29lZjsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBRQVAgQUI6ICR7aX0vJHtuQ29lZn1gKTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWYgPSBjb2VmZnMuc2xpY2UoNCtpKnNDb2VmLCA0K2kqc0NvZWYrc0NvZWYpO1xuICAgICAgICBjb25zdCBidWZmQ29lZlYgPSBuZXcgRGF0YVZpZXcoYnVmZkNvZWYuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgbT0gYnVmZkNvZWZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICAgICAgY29uc3QgYz0gYnVmZkNvZWZWLmdldFVpbnQzMig0LCB0cnVlKTtcbiAgICAgICAgY29uc3Qgcz0gYnVmZkNvZWZWLmdldFVpbnQzMig4LCB0cnVlKTtcbiAgICAgICAgY29uc3QgY29lZiA9IGJ1ZmZDb2VmLnNsaWNlKDEyLCAxMituOCk7XG4gICAgICAgIG91dEJ1ZlttXS5zZXQoXG4gICAgICAgICAgICBjdXJ2ZS5Gci5hZGQoXG4gICAgICAgICAgICAgICAgb3V0QnVmW21dLnNsaWNlKGMqbjgsIGMqbjgrbjgpLFxuICAgICAgICAgICAgICAgIGN1cnZlLkZyLm11bChjb2VmLCB3aXRuZXNzLnNsaWNlKHMqbjgsIHMqbjgrbjgpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMqbjhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYFFBUCBDOiAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICBvdXRCdWZmQy5zZXQoXG4gICAgICAgICAgICBjdXJ2ZS5Gci5tdWwoXG4gICAgICAgICAgICAgICAgb3V0QnVmZkEuc2xpY2UoaSpuOCwgaSpuOCtuOCksXG4gICAgICAgICAgICAgICAgb3V0QnVmZkIuc2xpY2UoaSpuOCwgaSpuOCtuOCksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgaSpuOFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBbb3V0QnVmZkEsIG91dEJ1ZmZCLCBvdXRCdWZmQ107XG5cbn1cblxuLypcbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQUJDKGN1cnZlLCB6a2V5LCB3aXRuZXNzLCBjb2VmZnMsIGxvZ2dlcikge1xuICAgIGNvbnN0IGNvbmN1cnJlbmN5ID0gY3VydmUudG0uY29uY3VycmVuY3k7XG4gICAgY29uc3Qgc0NvZWYgPSA0KjMgKyB6a2V5Lm44cjtcblxuICAgIGxldCBnZXRVaW50MzI7XG5cbiAgICBpZiAoY29lZmZzIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IGNvZWZmc0RWID0gW107XG4gICAgICAgIGNvbnN0IFBBR0VfTEVOID0gY29lZmZzLmJ1ZmZlcnNbMF0ubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IGNvZWZmcy5idWZmZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb2VmZnNEVi5wdXNoKG5ldyBEYXRhVmlldyhjb2VmZnMuYnVmZmVyc1tpXS5idWZmZXIpKTtcbiAgICAgICAgfVxuICAgICAgICBnZXRVaW50MzIgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgICAgICByZXR1cm4gY29lZmZzRFZbTWF0aC5mbG9vcihwb3MvUEFHRV9MRU4pXS5nZXRVaW50MzIocG9zICUgUEFHRV9MRU4sIHRydWUpO1xuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNvZWZmc0RWID0gbmV3IERhdGFWaWV3KGNvZWZmcy5idWZmZXIsIGNvZWZmcy5ieXRlT2Zmc2V0LCBjb2VmZnMuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGdldFVpbnQzMiA9IGZ1bmN0aW9uIChwb3MpIHtcbiAgICAgICAgICAgIHJldHVybiBjb2VmZnNEVi5nZXRVaW50MzIocG9zLCB0cnVlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50c1BlckNodW5rID0gTWF0aC5mbG9vcih6a2V5LmRvbWFpblNpemUvY29uY3VycmVuY3kpO1xuICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICBjb25zdCBjdXRQb2ludHMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICBjdXRQb2ludHMucHVzaCggZ2V0Q3V0UG9pbnQoIE1hdGguZmxvb3IoaSplbGVtZW50c1BlckNodW5rKSApKTtcbiAgICB9XG4gICAgY3V0UG9pbnRzLnB1c2goY29lZmZzLmJ5dGVMZW5ndGgpO1xuXG4gICAgY29uc3QgY2h1bmtTaXplID0gMioqMjY7XG4gICAgZm9yIChsZXQgcz0wIDsgczx6a2V5Lm5WYXJzIDsgcys9IGNodW5rU2l6ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFFBUCAke3N9OiAke3N9LyR7emtleS5uVmFyc31gKTtcbiAgICAgICAgY29uc3QgbnM9IE1hdGgubWluKHprZXkublZhcnMtcywgY2h1bmtTaXplICk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gZWxlbWVudHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IHprZXkuZG9tYWluU2l6ZSAtIGkqZWxlbWVudHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNvZWZmcy5zbGljZShjdXRQb2ludHNbaV0sIGN1dFBvaW50c1tpKzFdKX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiB3aXRuZXNzLnNsaWNlKHMqY3VydmUuRnIubjgsIChzK25zKSpjdXJ2ZS5Gci5uOCl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9idWlsZEFCQ1wiLCBwYXJhbXM6W1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IChjdXRQb2ludHNbaSsxXSAtIGN1dFBvaW50c1tpXSkvc0NvZWZ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgIHt2YWw6IGkqZWxlbWVudHNQZXJDaHVua30sXG4gICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAge3ZhbDogc30sXG4gICAgICAgICAgICAgICAge3ZhbDogbnN9XG4gICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAzLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDIsIHZhcjogNCwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICBwcm9taXNlcy5wdXNoKGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCBuR3JvdXBzID0gcmVzdWx0Lmxlbmd0aCAvIGNvbmN1cnJlbmN5O1xuICAgIGlmIChuR3JvdXBzPjEpIHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMyID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrPVtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RofSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjogcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGh9KTtcbiAgICAgICAgICAgIGZvciAobGV0IG09MDsgbTwzOyBtKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiByZXN1bHRbaV1bbV19KTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzPTE7IHM8bkdyb3VwczsgcysrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDEsIGJ1ZmY6IHJlc3VsdFtzKmNvbmN1cnJlbmN5ICsgaV1bbV19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwicWFwX2JhdGNoQWRkXCIsIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcmVzdWx0W2ldW21dLmxlbmd0aC9jdXJ2ZS5Gci5uOH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IG0sIHZhcjogMCwgbGVuOiByZXN1bHRbaV1bbV0ubGVuZ3RofSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwcm9taXNlczIucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMyKTtcbiAgICB9XG5cbiAgICBjb25zdCBvdXRCdWZmQSA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogY3VydmUuRnIubjgpO1xuICAgIGNvbnN0IG91dEJ1ZmZCID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgY29uc3Qgb3V0QnVmZkMgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIGN1cnZlLkZyLm44KTtcbiAgICBsZXQgcD0wO1xuICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0QnVmZkEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgIG91dEJ1ZmZCLnNldChyZXN1bHRbaV1bMV0sIHApO1xuICAgICAgICBvdXRCdWZmQy5zZXQocmVzdWx0W2ldWzJdLCBwKTtcbiAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gW291dEJ1ZmZBLCBvdXRCdWZmQiwgb3V0QnVmZkNdO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q3V0UG9pbnQodikge1xuICAgICAgICBsZXQgbSA9IDA7XG4gICAgICAgIGxldCBuID0gZ2V0VWludDMyKDApO1xuICAgICAgICB3aGlsZSAobSA8IG4pIHtcbiAgICAgICAgICAgIHZhciBrID0gTWF0aC5mbG9vcigobiArIG0pIC8gMik7XG4gICAgICAgICAgICBjb25zdCB2YSA9IGdldFVpbnQzMig0ICsgaypzQ29lZiArIDQpO1xuICAgICAgICAgICAgaWYgKHZhID4gdikge1xuICAgICAgICAgICAgICAgIG4gPSBrIC0gMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmEgPCB2KSB7XG4gICAgICAgICAgICAgICAgbSA9IGsgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gNCArIG0qc0NvZWY7XG4gICAgfVxufVxuKi9cblxuYXN5bmMgZnVuY3Rpb24gam9pbkFCQyhjdXJ2ZSwgemtleSwgYSwgYiwgYywgbG9nZ2VyKSB7XG4gICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxIDw8IDIyO1xuXG4gICAgY29uc3QgbjggPSBjdXJ2ZS5Gci5uODtcbiAgICBjb25zdCBuRWxlbWVudHMgPSBNYXRoLmZsb29yKGEuYnl0ZUxlbmd0aCAvIGN1cnZlLkZyLm44KTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bkVsZW1lbnRzOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSm9pbkFCQzogJHtpfS8ke25FbGVtZW50c31gKTtcbiAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4obkVsZW1lbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuXG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICBjb25zdCBhQ2h1bmsgPSBhLnNsaWNlKGkqbjgsIChpICsgbikqbjggKTtcbiAgICAgICAgY29uc3QgYkNodW5rID0gYi5zbGljZShpKm44LCAoaSArIG4pKm44ICk7XG4gICAgICAgIGNvbnN0IGNDaHVuayA9IGMuc2xpY2UoaSpuOCwgKGkgKyBuKSpuOCApO1xuXG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYUNodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYkNodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogY0NodW5rfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKm44fSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9qb2luQUJDXCIsIHBhcmFtczpbXG4gICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImZybV9iYXRjaEZyb21Nb250Z29tZXJ5XCIsIHBhcmFtczpbXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDMsIGxlbjogbipuOH0pO1xuICAgICAgICBwcm9taXNlcy5wdXNoKGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBsZXQgb3V0QnVmZjtcbiAgICBpZiAoYSBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICBvdXRCdWZmID0gbmV3IEJpZ0J1ZmZlcihhLmJ5dGVMZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG91dEJ1ZmYgPSBuZXcgVWludDhBcnJheShhLmJ5dGVMZW5ndGgpO1xuICAgIH1cblxuICAgIGxldCBwPTA7XG4gICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICBvdXRCdWZmLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiBvdXRCdWZmO1xufVxuXG4iLCIvKlxuXG5Db3B5cmlnaHQgMjAyMCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbnlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbllvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cblVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbmRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbldJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxubGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbiovXG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0QXJyYXkoYSkge1xuICAgIGxldCByZXMgPSBbXTtcbiAgICBmaWxsQXJyYXkocmVzLCBhKTtcbiAgICByZXR1cm4gcmVzO1xuXG4gICAgZnVuY3Rpb24gZmlsbEFycmF5KHJlcywgYSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZmlsbEFycmF5KHJlcywgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaChhKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLy8gUmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9pZGVuMy9jaXJjb20vY29tbWl0L2VjNjM4OGNmNmViNjI0NjM1MzljYjRjNDBjYzNjZWFlOTgyNmRlMTlcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUobiwgcHJpbWUpIHtcbiAgICBsZXQgcmVzID0gQmlnSW50KG4pICUgcHJpbWU7XG4gICAgaWYgKHJlcyA8IDApIHJlcyArPSBwcmltZTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm52SGFzaChzdHIpIHtcbiAgICBjb25zdCB1aW50NjRfbWF4ID0gQmlnSW50KDIpICoqIEJpZ0ludCg2NCk7XG4gICAgbGV0IGhhc2ggPSBCaWdJbnQoXCIweENCRjI5Q0U0ODQyMjIzMjVcIik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaGFzaCBePSBCaWdJbnQoc3RyW2ldLmNoYXJDb2RlQXQoMCkpO1xuICAgICAgICBoYXNoICo9IEJpZ0ludCgweDEwMDAwMDAwMUIzKTtcbiAgICAgICAgaGFzaCAlPSB1aW50NjRfbWF4O1xuICAgIH1cbiAgICBsZXQgc2hhc2ggPSBoYXNoLnRvU3RyaW5nKDE2KTtcbiAgICBsZXQgbiA9IDE2IC0gc2hhc2gubGVuZ3RoO1xuICAgIHNoYXNoID0gXCIwXCIucmVwZWF0KG4pLmNvbmNhdChzaGFzaCk7XG4gICAgcmV0dXJuIHNoYXNoO1xufVxuXG4vLyBOb3RlIHRoYXQgdGhpcyBwYWRzIHplcm9zXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheTMyKHMsIHNpemUpIHtcbiAgICBjb25zdCByZXMgPSBbXTsgLy9uZXcgVWludDMyQXJyYXkoc2l6ZSk7IC8vaGFzIG5vIHVuc2hpZnRcbiAgICBsZXQgcmVtID0gQmlnSW50KHMpO1xuICAgIGNvbnN0IHJhZGl4ID0gQmlnSW50KDB4MTAwMDAwMDAwKTtcbiAgICB3aGlsZSAocmVtKSB7XG4gICAgICAgIHJlcy51bnNoaWZ0KE51bWJlcihyZW0gJSByYWRpeCkpO1xuICAgICAgICByZW0gPSByZW0gLyByYWRpeDtcbiAgICB9XG4gICAgaWYgKHNpemUpIHtcbiAgICAgICAgbGV0IGkgPSBzaXplIC0gcmVzLmxlbmd0aDtcbiAgICAgICAgd2hpbGUgKGkgPiAwKSB7XG4gICAgICAgICAgICByZXMudW5zaGlmdCgwKTtcbiAgICAgICAgICAgIGktLTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuIiwiLyogZ2xvYmFscyBXZWJBc3NlbWJseSAqL1xuLypcblxuQ29weXJpZ2h0IDIwMjAgMEtJTVMgYXNzb2NpYXRpb24uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4qL1xuXG5pbXBvcnQge2ZsYXRBcnJheSwgZm52SGFzaCwgdG9BcnJheTMyLCBub3JtYWxpemV9IGZyb20gXCIuL3V0aWxzLmpzXCI7XG5pbXBvcnQge1NjYWxhciwgRjFGaWVsZH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBidWlsZGVyKGNvZGUsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW5zdGFuY2U7XG4gICAgbGV0IHdjO1xuICAgIGxldCBtZW1vcnk7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAvLyBPbmx5IGNpcmNvbSAyIGltcGxlbWVudHMgdmVyc2lvbiBsb29rdXAgdGhyb3VnaCBleHBvcnRzIGluIHRoZSBXQVNNXG4gICAgLy8gV2UgZGVmYXVsdCB0byBgMWAgYW5kIHVwZGF0ZSBpZiB3ZSBzZWUgdGhlIGBnZXRWZXJzaW9uYCBleHBvcnQgKG1ham9yIHZlcnNpb24pXG4gICAgLy8gVGhlc2UgYXJlIHVwZGF0ZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGlzIGluc3RhbnRpYXRlZCwgYXNzdW1pbmcgdGhlIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlXG4gICAgbGV0IG1ham9yVmVyc2lvbiA9IDE7XG4gICAgLy8gQWZ0ZXIgQ2lyY29tIDIuMC43LCBCbGFpbmUgYWRkZWQgZXhwb3J0ZWQgZnVuY3Rpb25zIGZvciBnZXR0aW5nIG1pbm9yIGFuZCBwYXRjaCB2ZXJzaW9uc1xuICAgIGxldCBtaW5vclZlcnNpb24gPSAwO1xuICAgIC8vIElmIHdlIGNhbid0IGxvb2sgdXAgdGhlIHBhdGNoIHZlcnNpb24sIGFzc3VtZSB0aGUgbG93ZXN0XG4gICAgbGV0IHBhdGNoVmVyc2lvbiA9IDA7XG5cbiAgICBsZXQgY29kZUlzV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGZhbHNlO1xuXG4gICAgLy8gSWYgY29kZSBpcyBhbHJlYWR5IHByZXBhcmVkIFdlYkFzc2VtYmx5Lkluc3RhbmNlLCB3ZSB1c2UgaXQgZGlyZWN0bHlcbiAgICBpZiAoY29kZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlKSB7XG4gICAgICAgIGluc3RhbmNlID0gY29kZTtcbiAgICAgICAgY29kZUlzV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1lbW9yeVNpemUgPSAzMjc2NztcblxuICAgICAgICBpZiAob3B0aW9ucy5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBpbnRcbiAgICAgICAgICAgIG1lbW9yeVNpemUgPSBwYXJzZUludChvcHRpb25zLm1lbW9yeVNpemUpO1xuICAgICAgICAgICAgaWYgKG1lbW9yeVNpemUgPCAwKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBtZW1vcnkgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtZW1vcnlBbGxvY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgd2hpbGUgKCFtZW1vcnlBbGxvY2F0ZWQpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgbWVtb3J5ID0gbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogbWVtb3J5U2l6ZX0pO1xuICAgICAgICAgICAgICAgIG1lbW9yeUFsbG9jYXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAobWVtb3J5U2l6ZSA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKFwiQ291bGQgbm90IGFsbG9jYXRlIFwiICsgbWVtb3J5U2l6ZSAqIDEwMjQgKiA2NCArIFwiIGJ5dGVzLiBUaGlzIG1heSBjYXVzZSBzZXZlcmUgaW5zdGFiaWxpdHkuIFRyeWluZyB3aXRoIFwiICsgbWVtb3J5U2l6ZSAqIDEwMjQgKiA2NCAvIDIgKyBcIiBieXRlc1wiKTtcbiAgICAgICAgICAgICAgICBtZW1vcnlTaXplID0gTWF0aC5mbG9vcihtZW1vcnlTaXplIC8gMik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZShjb2RlKTtcblxuICAgICAgICBsZXQgZXJyU3RyID0gXCJcIjtcbiAgICAgICAgbGV0IG1zZ1N0ciA9IFwiXCI7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBydW50aW1lOiB7XG4gICAgICAgICAgICAgICAgcHJpbnREZWJ1ZyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicHJpbnREZWJ1ZzpcIiwgdmFsdWUpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlcjogZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvZGUgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiU2lnbmFsIG5vdCBmb3VuZC4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gXCJUb28gbWFueSBzaWduYWxzIHNldC4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gXCJTaWduYWwgYWxyZWFkeSBzZXQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiQXNzZXJ0IEZhaWxlZC4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gXCJOb3QgZW5vdWdoIG1lbW9yeS4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gNikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gXCJJbnB1dCBzaWduYWwgYXJyYXkgYWNjZXNzIGV4Y2VlZHMgdGhlIHNpemUuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyID0gXCJVbmtub3duIGVycm9yLiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRVJST1I6IFwiLCBjb2RlLCBlcnJTdHIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyICsgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIC8vIEEgbmV3IHdheSBvZiBsb2dnaW5nIG1lc3NhZ2VzIHdhcyBhZGRlZCBpbiBDaXJjb20gMi4wLjcgdGhhdCByZXF1aXJlcyAyIG5ldyBpbXBvcnRzXG4gICAgICAgICAgICAgICAgLy8gYHByaW50RXJyb3JNZXNzYWdlYCBhbmQgYHdyaXRlQnVmZmVyTWVzc2FnZWAuXG4gICAgICAgICAgICAgICAgcHJpbnRFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyU3RyICs9IGdldE1lc3NhZ2UoKSArIFwiXFxuXCI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB3cml0ZUJ1ZmZlck1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gZ2V0TWVzc2FnZSgpO1xuICAgICAgICAgICAgICAgICAgICAvLyBBbnkgY2FsbHMgdG8gYGxvZygpYCB3aWxsIGFsd2F5cyBlbmQgd2l0aCBhIGBcXG5gLCBzbyB0aGF0J3Mgd2hlbiB3ZSBwcmludCBhbmQgcmVzZXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1zZyA9PT0gXCJcXG5cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cobXNnU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSd2ZSBidWZmZXJlZCBvdGhlciBjb250ZW50LCBwdXQgYSBzcGFjZSBpbiBiZXR3ZWVuIHRoZSBpdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZ1N0ciAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciArPSBcIiBcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZW4gYXBwZW5kIHRoZSBtZXNzYWdlIHRvIHRoZSBtZXNzYWdlIHdlIGFyZSBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgbXNnU3RyICs9IG1zZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2hvd1NoYXJlZFJXTWVtb3J5OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoYXJlZF9yd19tZW1vcnlfc2l6ZSA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0RmllbGROdW1MZW4zMigpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgVWludDMyQXJyYXkoc2hhcmVkX3J3X21lbW9yeV9zaXplKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBzaGFyZWRfcndfbWVtb3J5X3NpemU7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJyW3NoYXJlZF9yd19tZW1vcnlfc2l6ZSAtIDEgLSBqXSA9IGluc3RhbmNlLmV4cG9ydHMucmVhZFNoYXJlZFJXTWVtb3J5KGopO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSW4gY2lyY29tIDIuMC43LCB0aGV5IGNoYW5nZWQgdGhlIGxvZygpIGZ1bmN0aW9uIHRvIGFsbG93IHN0cmluZ3MgYW5kIGNoYW5nZWQgdGhlXG4gICAgICAgICAgICAgICAgICAgIC8vIG91dHB1dCBBUEkuIFRoaXMgc21vb3RoZXMgb3ZlciB0aGUgYnJlYWtpbmcgY2hhbmdlLlxuICAgICAgICAgICAgICAgICAgICBpZiAobWFqb3JWZXJzaW9uID49IDIgJiYgKG1pbm9yVmVyc2lvbiA+PSAxIHx8IHBhdGNoVmVyc2lvbiA+PSA3KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgYnVmZmVyZWQgb3RoZXIgY29udGVudCwgcHV0IGEgc3BhY2UgaW4gYmV0d2VlbiB0aGUgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dTdHIgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgdmFsdWUgdG8gdGhlIG1lc3NhZ2Ugd2UgYXJlIGNyZWF0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSAoU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKS50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciArPSBtc2c7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChjb2RlLCBwc3RyLCBhLCBiLCBjLCBkKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJTdHI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSA3KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBwMnN0cihwc3RyKSArIFwiIFwiICsgd2MuZ2V0RnIoYikudG9TdHJpbmcoKSArIFwiICE9IFwiICsgd2MuZ2V0RnIoYykudG9TdHJpbmcoKSArIFwiIFwiICsgcDJzdHIoZCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gOSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIHdjLmdldEZyKGIpLnRvU3RyaW5nKCkgKyBcIiBcIiArIHAyc3RyKGMpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChjb2RlID09PSA1KSAmJiAob3B0aW9ucy5zeW0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBwMnN0cihwc3RyKSArIFwiIFwiICsgb3B0aW9ucy5zeW0ubGFiZWxJZHgyTmFtZVtjXTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IHAyc3RyKHBzdHIpICsgXCIgXCIgKyBhICsgXCIgXCIgKyBiICsgXCIgXCIgKyBjICsgXCIgXCIgKyBkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1I6IFwiLCBjb2RlLCBlcnJTdHIpO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyU3RyKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZzogZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cod2MuZ2V0RnIoYSkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2dHZXRTaWduYWw6IGZ1bmN0aW9uIChzaWduYWwsIHBWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nR2V0U2lnbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ0dldFNpZ25hbChzaWduYWwsIHdjLmdldEZyKHBWYWwpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nU2V0U2lnbmFsOiBmdW5jdGlvbiAoc2lnbmFsLCBwVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ1NldFNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dTZXRTaWduYWwoc2lnbmFsLCB3Yy5nZXRGcihwVmFsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ1N0YXJ0Q29tcG9uZW50OiBmdW5jdGlvbiAoY0lkeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dTdGFydENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dTdGFydENvbXBvbmVudChjSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nRmluaXNoQ29tcG9uZW50OiBmdW5jdGlvbiAoY0lkeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dGaW5pc2hDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50KGNJZHgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0VmVyc2lvbiA9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgbWFqb3JWZXJzaW9uID0gaW5zdGFuY2UuZXhwb3J0cy5nZXRWZXJzaW9uKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuZXhwb3J0cy5nZXRNaW5vclZlcnNpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG1pbm9yVmVyc2lvbiA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0TWlub3JWZXJzaW9uKCk7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaW5zdGFuY2UuZXhwb3J0cy5nZXRQYXRjaFZlcnNpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHBhdGNoVmVyc2lvbiA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0UGF0Y2hWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2FuaXR5Q2hlY2sgPVxuICAgICAgICBvcHRpb25zICYmXG4gICAgICAgIChcbiAgICAgICAgICAgIG9wdGlvbnMuc2FuaXR5Q2hlY2sgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nR2V0U2lnbmFsIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ1NldFNpZ25hbCB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dTdGFydENvbXBvbmVudCB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dGaW5pc2hDb21wb25lbnRcbiAgICAgICAgKTtcblxuICAgIC8vIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIG1ham9yIHZlcnNpb24gMiBpbiBjYXNlIHRoZXJlJ3MgYSBjaXJjb20gdjMgaW4gdGhlIGZ1dHVyZVxuICAgIGlmIChtYWpvclZlcnNpb24gPT09IDIpIHtcbiAgICAgICAgd2MgPSBuZXcgV2l0bmVzc0NhbGN1bGF0b3JDaXJjb20yKGluc3RhbmNlLCBzYW5pdHlDaGVjayk7XG4gICAgfSBlbHNlIGlmIChtYWpvclZlcnNpb24gPT09IDEpIHtcbiAgICAgICAgaWYgKGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTG9hZGluZyBjb2RlIGZyb20gV2ViQXNzZW1ibHkgaW5zdGFuY2UgaXMgbm90IHN1cHBvcnRlZCBmb3IgY2lyY29tIHZlcnNpb24gMScpO1xuICAgICAgICB9XG4gICAgICAgIHdjID0gbmV3IFdpdG5lc3NDYWxjdWxhdG9yQ2lyY29tMShtZW1vcnksIGluc3RhbmNlLCBzYW5pdHlDaGVjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBjaXJjb20gdmVyc2lvbjogJHttYWpvclZlcnNpb259YCk7XG4gICAgfVxuICAgIHJldHVybiB3YztcblxuICAgIGZ1bmN0aW9uIGdldE1lc3NhZ2UoKSB7XG4gICAgICAgIGxldCBtZXNzYWdlID0gXCJcIjtcbiAgICAgICAgbGV0IGMgPSBpbnN0YW5jZS5leHBvcnRzLmdldE1lc3NhZ2VDaGFyKCk7XG4gICAgICAgIHdoaWxlIChjICE9PSAwKSB7XG4gICAgICAgICAgICBtZXNzYWdlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7XG4gICAgICAgICAgICBjID0gaW5zdGFuY2UuZXhwb3J0cy5nZXRNZXNzYWdlQ2hhcigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHAyc3RyKHApIHtcbiAgICAgICAgY29uc3QgaTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcblxuICAgICAgICBjb25zdCBieXRlcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpOFtwICsgaV0gPiAwOyBpKyspIGJ5dGVzLnB1c2goaThbcCArIGldKTtcblxuICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCBieXRlcyk7XG4gICAgfVxufVxuXG5jbGFzcyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTEge1xuICAgIGNvbnN0cnVjdG9yKG1lbW9yeSwgaW5zdGFuY2UsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIHRoaXMubWVtb3J5ID0gbWVtb3J5O1xuICAgICAgICB0aGlzLmkzMiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlO1xuXG4gICAgICAgIHRoaXMubjMyID0gKHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRGckxlbigpID4+IDIpIC0gMjtcbiAgICAgICAgY29uc3QgcFJhd1ByaW1lID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFBSYXdQcmltZSgpO1xuXG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheSh0aGlzLm4zMik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uMzI7IGkrKykge1xuICAgICAgICAgICAgYXJyW3RoaXMubjMyIC0gMSAtIGldID0gdGhpcy5pMzJbKHBSYXdQcmltZSA+PiAyKSArIGldO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmltZSA9IFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCk7XG5cbiAgICAgICAgdGhpcy5GciA9IG5ldyBGMUZpZWxkKHRoaXMucHJpbWUpO1xuXG4gICAgICAgIHRoaXMubWFzazMyID0gU2NhbGFyLmZyb21TdHJpbmcoXCJGRkZGRkZGRlwiLCAxNik7XG4gICAgICAgIHRoaXMuTlZhcnMgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0TlZhcnMoKTtcbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLkZyLmJpdExlbmd0aCAtIDEpIC8gNjQpICsgMTtcbiAgICAgICAgdGhpcy5SID0gdGhpcy5Gci5lKFNjYWxhci5zaGlmdExlZnQoMSwgdGhpcy5uNjQgKiA2NCkpO1xuICAgICAgICB0aGlzLlJJbnYgPSB0aGlzLkZyLmludih0aGlzLlIpO1xuICAgICAgICB0aGlzLnNhbml0eUNoZWNrID0gc2FuaXR5Q2hlY2s7XG4gICAgfVxuXG4gICAgY2lyY29tX3ZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGFzeW5jIF9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5pbml0KCh0aGlzLnNhbml0eUNoZWNrIHx8IHNhbml0eUNoZWNrKSA/IDEgOiAwKTtcbiAgICAgICAgY29uc3QgcFNpZ09mZnNldCA9IHRoaXMuYWxsb2NJbnQoKTtcbiAgICAgICAgY29uc3QgcEZyID0gdGhpcy5hbGxvY0ZyKCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnB1dCk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgY29uc3QgaCA9IGZudkhhc2goayk7XG4gICAgICAgICAgICBjb25zdCBoTVNCID0gcGFyc2VJbnQoaC5zbGljZSgwLCA4KSwgMTYpO1xuICAgICAgICAgICAgY29uc3QgaExTQiA9IHBhcnNlSW50KGguc2xpY2UoOCwgMTYpLCAxNik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRTaWduYWxPZmZzZXQzMihwU2lnT2Zmc2V0LCAwLCBoTVNCLCBoTFNCKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2lnbmFsICR7a30gaXMgbm90IGFuIGlucHV0IG9mIHRoZSBjaXJjdWl0LmApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3Qgc2lnT2Zmc2V0ID0gdGhpcy5nZXRJbnQocFNpZ09mZnNldCk7XG4gICAgICAgICAgICBjb25zdCBmQXJyID0gZmxhdEFycmF5KGlucHV0W2tdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZkFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RnIocEZyLCBmQXJyW2ldKTtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuc2V0U2lnbmFsKDAsIDAsIHNpZ09mZnNldCArIGksIHBGcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IG9sZDAgPSBzZWxmLmkzMlswXTtcbiAgICAgICAgY29uc3QgdyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IHNlbGYuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZi5OVmFyczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwV2l0bmVzcyA9IHNlbGYuaW5zdGFuY2UuZXhwb3J0cy5nZXRQV2l0bmVzcyhpKTtcbiAgICAgICAgICAgIHcucHVzaChzZWxmLmdldEZyKHBXaXRuZXNzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmkzMlswXSA9IG9sZDA7XG4gICAgICAgIHJldHVybiB3O1xuICAgIH1cblxuICAgIGFzeW5jIGNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGNvbnN0IG9sZDAgPSBzZWxmLmkzMlswXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBjb25zdCBwV2l0bmVzc0J1ZmZlciA9IHNlbGYuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzQnVmZmVyKCk7XG5cbiAgICAgICAgc2VsZi5pMzJbMF0gPSBvbGQwO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBzZWxmLm1lbW9yeS5idWZmZXIuc2xpY2UocFdpdG5lc3NCdWZmZXIsIHBXaXRuZXNzQnVmZmVyICsgKHNlbGYuTlZhcnMgKiBzZWxmLm42NCAqIDgpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ1ZmYpO1xuICAgIH1cblxuICAgIGFsbG9jSW50KCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCArIDg7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGFsbG9jRnIoKSB7XG4gICAgICAgIGNvbnN0IHAgPSB0aGlzLmkzMlswXTtcbiAgICAgICAgdGhpcy5pMzJbMF0gPSBwICsgdGhpcy5uMzIgKiA0ICsgODtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZ2V0SW50KHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaTMyW3AgPj4gMl07XG4gICAgfVxuXG4gICAgc2V0SW50KHAsIHYpIHtcbiAgICAgICAgdGhpcy5pMzJbcCA+PiAyXSA9IHY7XG4gICAgfVxuXG4gICAgZ2V0RnIocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgaWR4ID0gKHAgPj4gMik7XG5cbiAgICAgICAgaWYgKHNlbGYuaTMyW2lkeCArIDFdICYgMHg4MDAwMDAwMCkge1xuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KHNlbGYubjMyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZi5uMzI7IGkrKykge1xuICAgICAgICAgICAgICAgIGFycltzZWxmLm4zMiAtIDEgLSBpXSA9IHNlbGYuaTMyW2lkeCArIDIgKyBpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHNlbGYuRnIuZShTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApKTtcbiAgICAgICAgICAgIGlmIChzZWxmLmkzMltpZHggKyAxXSAmIDB4NDAwMDAwMDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJvbU1vbnRnb21lcnkocmVzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNlbGYuaTMyW2lkeF0gJiAweDgwMDAwMDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZShzZWxmLmkzMltpZHhdIC0gMHgxMDAwMDAwMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5Gci5lKHNlbGYuaTMyW2lkeF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZnJvbU1vbnRnb21lcnkobikge1xuICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIubXVsKHNlbGYuUkludiwgbik7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgc2V0RnIocCwgdikge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB2ID0gc2VsZi5Gci5lKHYpO1xuXG4gICAgICAgIGNvbnN0IG1pblNob3J0ID0gc2VsZi5Gci5uZWcoc2VsZi5Gci5lKFwiODAwMDAwMDBcIiwgMTYpKTtcbiAgICAgICAgY29uc3QgbWF4U2hvcnQgPSBzZWxmLkZyLmUoXCI3RkZGRkZGRlwiLCAxNik7XG5cbiAgICAgICAgaWYgKChzZWxmLkZyLmdlcSh2LCBtaW5TaG9ydCkpXG4gICAgICAgICAgICAmJiAoc2VsZi5Gci5sZXEodiwgbWF4U2hvcnQpKSkge1xuICAgICAgICAgICAgbGV0IGE7XG4gICAgICAgICAgICBpZiAoc2VsZi5Gci5nZXEodiwgc2VsZi5Gci56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGEgPSBTY2FsYXIudG9OdW1iZXIodik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGEgPSBTY2FsYXIudG9OdW1iZXIoc2VsZi5Gci5zdWIodiwgbWluU2hvcnQpKTtcbiAgICAgICAgICAgICAgICBhID0gYSAtIDB4ODAwMDAwMDA7XG4gICAgICAgICAgICAgICAgYSA9IDB4MTAwMDAwMDAwICsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGYuaTMyWyhwID4+IDIpXSA9IGE7XG4gICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDFdID0gMDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuaTMyWyhwID4+IDIpXSA9IDA7XG4gICAgICAgIHNlbGYuaTMyWyhwID4+IDIpICsgMV0gPSAweDgwMDAwMDAwO1xuICAgICAgICBjb25zdCBhcnIgPSBTY2FsYXIudG9BcnJheSh2LCAweDEwMDAwMDAwMCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZi5uMzI7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gYXJyLmxlbmd0aCAtIDEgLSBpO1xuXG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDIgKyBpXSA9IGFycltpZHhdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDIgKyBpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNsYXNzIFdpdG5lc3NDYWxjdWxhdG9yQ2lyY29tMiB7XG4gICAgY29uc3RydWN0b3IoaW5zdGFuY2UsIHNhbml0eUNoZWNrKSB7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLnZlcnNpb24gPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0VmVyc2lvbigpO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRGaWVsZE51bUxlbjMyKCk7XG5cbiAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFJhd1ByaW1lKCk7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm4zMik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5uMzI7IGkrKykge1xuICAgICAgICAgICAgYXJyW3RoaXMubjMyIC0gMSAtIGldID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByaW1lID0gU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKTtcblxuICAgICAgICB0aGlzLndpdG5lc3NTaXplID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFdpdG5lc3NTaXplKCk7XG5cbiAgICAgICAgdGhpcy5zYW5pdHlDaGVjayA9IHNhbml0eUNoZWNrO1xuICAgIH1cblxuICAgIGNpcmNvbV92ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24oKTtcbiAgICB9XG5cbiAgICBhc3luYyBfZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICAvL2lucHV0IGlzIGFzc3VtZWQgdG8gYmUgYSBtYXAgZnJvbSBzaWduYWxzIHRvIGFycmF5cyBvZiBiaWdpbnRzXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5pbml0KCh0aGlzLnNhbml0eUNoZWNrIHx8IHNhbml0eUNoZWNrKSA/IDEgOiAwKTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGlucHV0KTtcbiAgICAgICAgbGV0IGlucHV0X2NvdW50ZXIgPSAwO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGggPSBmbnZIYXNoKGspO1xuICAgICAgICAgICAgY29uc3QgaE1TQiA9IHBhcnNlSW50KGguc2xpY2UoMCwgOCksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGhMU0IgPSBwYXJzZUludChoLnNsaWNlKDgsIDE2KSwgMTYpO1xuICAgICAgICAgICAgY29uc3QgZkFyciA9IGZsYXRBcnJheShpbnB1dFtrXSk7XG4gICAgICAgICAgICAvLyBTbGlnaHQgZGV2aWF0aW9uIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2lkZW4zL2NpcmNvbS9ibG9iL3YyLjEuNi9jb2RlX3Byb2R1Y2Vycy9zcmMvd2FzbV9lbGVtZW50cy9jb21tb24vd2l0bmVzc19jYWxjdWxhdG9yLmpzXG4gICAgICAgICAgICAvLyBiZWNhdXNlIEkgZG9uJ3Qga25vdyB3aGVuIHRoaXMgZXhwb3J0ZWQgZnVuY3Rpb24gd2FzIGFkZGVkXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpZ25hbFNpemUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIGxldCBzaWduYWxTaXplID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldElucHV0U2lnbmFsU2l6ZShoTVNCLCBoTFNCKTtcbiAgICAgICAgICAgICAgICBpZiAoc2lnbmFsU2l6ZSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTaWduYWwgJHtrfSBub3QgZm91bmRcXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZBcnIubGVuZ3RoIDwgc2lnbmFsU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2ggdmFsdWVzIGZvciBpbnB1dCBzaWduYWwgJHtrfVxcbmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZkFyci5sZW5ndGggPiBzaWduYWxTaXplKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVG9vIG1hbnkgdmFsdWVzIGZvciBpbnB1dCBzaWduYWwgJHtrfVxcbmApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZkFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFyckZyID0gdG9BcnJheTMyKG5vcm1hbGl6ZShmQXJyW2ldLCB0aGlzLnByaW1lKSwgdGhpcy5uMzIpO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMud3JpdGVTaGFyZWRSV01lbW9yeShqLCBhcnJGclt0aGlzLm4zMiAtIDEgLSBqXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5zZXRJbnB1dFNpZ25hbChoTVNCLCBoTFNCLCBpKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRfY291bnRlcisrO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgQWZ0ZXIgYWRkaW5nIHNpZ25hbCAke2l9IG9mICR7a31gKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbnB1dF9jb3VudGVyIDwgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldElucHV0U2l6ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBhbGwgaW5wdXRzIGhhdmUgYmVlbiBzZXQuIE9ubHkgJHtpbnB1dF9jb3VudGVyfSBvdXQgb2YgJHt0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0SW5wdXRTaXplKCl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCB3ID0gW107XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjayk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndpdG5lc3NTaXplOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzKGkpO1xuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMubjMyKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBqXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3LnB1c2goU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdztcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXVE5TQmluKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBidWZmMzIgPSBuZXcgVWludDMyQXJyYXkodGhpcy53aXRuZXNzU2l6ZSAqIHRoaXMubjMyICsgdGhpcy5uMzIgKyAxMSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShidWZmMzIuYnVmZmVyKTtcbiAgICAgICAgYXdhaXQgdGhpcy5fZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjayk7XG5cbiAgICAgICAgLy9cInd0bnNcIlxuICAgICAgICBidWZmWzBdID0gXCJ3XCIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgYnVmZlsxXSA9IFwidFwiLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGJ1ZmZbMl0gPSBcIm5cIi5jaGFyQ29kZUF0KDApO1xuICAgICAgICBidWZmWzNdID0gXCJzXCIuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICAvL3ZlcnNpb24gMlxuICAgICAgICBidWZmMzJbMV0gPSAyO1xuXG4gICAgICAgIC8vbnVtYmVyIG9mIHNlY3Rpb25zOiAyXG4gICAgICAgIGJ1ZmYzMlsyXSA9IDI7XG5cbiAgICAgICAgLy9pZCBzZWN0aW9uIDFcbiAgICAgICAgYnVmZjMyWzNdID0gMTtcblxuICAgICAgICBjb25zdCBuOCA9IHRoaXMubjMyICogNDtcbiAgICAgICAgLy9pZCBzZWN0aW9uIDEgbGVuZ3RoIGluIDY0Ynl0ZXNcbiAgICAgICAgY29uc3QgaWRTZWN0aW9uMWxlbmd0aCA9IDggKyBuODtcbiAgICAgICAgY29uc3QgaWRTZWN0aW9uMWxlbmd0aEhleCA9IGlkU2VjdGlvbjFsZW5ndGgudG9TdHJpbmcoMTYpO1xuICAgICAgICBidWZmMzJbNF0gPSBwYXJzZUludChpZFNlY3Rpb24xbGVuZ3RoSGV4LnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgIGJ1ZmYzMls1XSA9IHBhcnNlSW50KGlkU2VjdGlvbjFsZW5ndGhIZXguc2xpY2UoOCwgMTYpLCAxNik7XG5cbiAgICAgICAgLy90aGlzLm4zMlxuICAgICAgICBidWZmMzJbNl0gPSBuODtcblxuICAgICAgICAvL3ByaW1lIG51bWJlclxuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0UmF3UHJpbWUoKTtcblxuICAgICAgICBsZXQgcG9zID0gNztcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm4zMjsgaisrKSB7XG4gICAgICAgICAgICBidWZmMzJbcG9zICsgal0gPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMucmVhZFNoYXJlZFJXTWVtb3J5KGopO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSB0aGlzLm4zMjtcblxuICAgICAgICAvLyB3aXRuZXNzIHNpemVcbiAgICAgICAgYnVmZjMyW3Bvc10gPSB0aGlzLndpdG5lc3NTaXplO1xuICAgICAgICBwb3MrKztcblxuICAgICAgICAvL2lkIHNlY3Rpb24gMlxuICAgICAgICBidWZmMzJbcG9zXSA9IDI7XG4gICAgICAgIHBvcysrO1xuXG4gICAgICAgIC8vIHNlY3Rpb24gMiBsZW5ndGhcbiAgICAgICAgY29uc3QgaWRTZWN0aW9uMmxlbmd0aCA9IG44ICogdGhpcy53aXRuZXNzU2l6ZTtcbiAgICAgICAgY29uc3QgaWRTZWN0aW9uMmxlbmd0aEhleCA9IGlkU2VjdGlvbjJsZW5ndGgudG9TdHJpbmcoMTYpO1xuICAgICAgICBidWZmMzJbcG9zXSA9IHBhcnNlSW50KGlkU2VjdGlvbjJsZW5ndGhIZXguc2xpY2UoMCwgOCksIDE2KTtcbiAgICAgICAgYnVmZjMyW3BvcyArIDFdID0gcGFyc2VJbnQoaWRTZWN0aW9uMmxlbmd0aEhleC5zbGljZSg4LCAxNiksIDE2KTtcblxuICAgICAgICBwb3MgKz0gMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLndpdG5lc3NTaXplOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzKGkpO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm4zMjsgaisrKSB7XG4gICAgICAgICAgICAgICAgYnVmZjMyW3BvcyArIGpdID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvcyArPSB0aGlzLm4zMjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgeyBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIgfSBmcm9tIFwiY2lyY29tX3J1bnRpbWVcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3QgeyB1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHd0bnNDYWxjdWxhdGUoX2lucHV0LCB3YXNtRmlsZU5hbWUsIHd0bnNGaWxlTmFtZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCBmZFdhc20gPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3Rpbmcod2FzbUZpbGVOYW1lKTtcbiAgICBjb25zdCB3YXNtID0gYXdhaXQgZmRXYXNtLnJlYWQoZmRXYXNtLnRvdGFsU2l6ZSk7XG4gICAgYXdhaXQgZmRXYXNtLmNsb3NlKCk7XG5cbiAgICBjb25zdCB3YyA9IGF3YWl0IFdpdG5lc3NDYWxjdWxhdG9yQnVpbGRlcih3YXNtLCBvcHRpb25zKTtcbiAgICBpZiAod2MuY2lyY29tX3ZlcnNpb24oKSA9PT0gMSkge1xuICAgICAgICBjb25zdCB3ID0gYXdhaXQgd2MuY2FsY3VsYXRlQmluV2l0bmVzcyhpbnB1dCk7XG5cbiAgICAgICAgY29uc3QgZmRXdG5zID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUod3Ruc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMik7XG5cbiAgICAgICAgYXdhaXQgd3Ruc1V0aWxzLndyaXRlQmluKGZkV3Rucywgdywgd2MucHJpbWUpO1xuICAgICAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBmZFd0bnMgPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZSh3dG5zRmlsZU5hbWUpO1xuXG4gICAgICAgIGNvbnN0IHcgPSBhd2FpdCB3Yy5jYWxjdWxhdGVXVE5TQmluKGlucHV0KTtcblxuICAgICAgICBhd2FpdCBmZFd0bnMud3JpdGUodyk7XG4gICAgICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBncm90aDE2X3Byb3ZlIGZyb20gXCIuL2dyb3RoMTZfcHJvdmUuanNcIjtcbmltcG9ydCB3dG5zX2NhbGN1bGF0ZSBmcm9tIFwiLi93dG5zX2NhbGN1bGF0ZS5qc1wiO1xuaW1wb3J0IHt1dGlsc30gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNkZ1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlLCB6a2V5RmlsZU5hbWUsIGxvZ2dlciwgd3Ruc0NhbGNPcHRpb25zLCBwcm92ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IHd0bnM9IHtcbiAgICAgICAgdHlwZTogXCJtZW1cIlxuICAgIH07XG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlLCB3dG5zLCB3dG5zQ2FsY09wdGlvbnMpO1xuICAgIHJldHVybiBhd2FpdCBncm90aDE2X3Byb3ZlKHprZXlGaWxlTmFtZSwgd3RucywgbG9nZ2VyLCBwcm92ZXJPcHRpb25zKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qIEltcGxlbWVudGF0aW9uIG9mIHRoaXMgcGFwZXI6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTYvMjYwLnBkZiAqL1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgY3VydmVzIGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2VmVyaWZ5KF92a192ZXJpZmllciwgX3B1YmxpY1NpZ25hbHMsIF9wcm9vZiwgbG9nZ2VyKSB7XG4vKlxuICAgIGxldCBjcHViID0gdmtfdmVyaWZpZXIuSUNbMF07XG4gICAgZm9yIChsZXQgcz0gMDsgczwgdmtfdmVyaWZpZXIublB1YmxpYzsgcysrKSB7XG4gICAgICAgIGNwdWIgID0gRzEuYWRkKCBjcHViLCBHMS50aW1lc1NjYWxhciggdmtfdmVyaWZpZXIuSUNbcysxXSwgcHVibGljU2lnbmFsc1tzXSkpO1xuICAgIH1cbiovXG5cbiAgICBjb25zdCB2a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIGNvbnN0IHByb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG4gICAgY29uc3QgcHVibGljU2lnbmFscyA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHVibGljU2lnbmFscyk7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGN1cnZlcy5nZXRDdXJ2ZUZyb21OYW1lKHZrX3ZlcmlmaWVyLmN1cnZlKTtcblxuICAgIGNvbnN0IElDMCA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIuSUNbMF0pO1xuICAgIGNvbnN0IElDID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyICogcHVibGljU2lnbmFscy5sZW5ndGgpO1xuICAgIGNvbnN0IHcgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5Gci5uOCAqIHB1YmxpY1NpZ25hbHMubGVuZ3RoKTtcblxuICAgIGlmICghcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY1NpZ25hbHMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlB1YmxpYyBpbnB1dHMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBidWZmUCA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIuSUNbaSsxXSk7XG4gICAgICAgIElDLnNldChidWZmUCwgaSpjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICBTY2FsYXIudG9ScHJMRSh3LCBjdXJ2ZS5Gci5uOCppLCBwdWJsaWNTaWduYWxzW2ldLCBjdXJ2ZS5Gci5uOCk7XG4gICAgfVxuXG4gICAgbGV0IGNwdWIgPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShJQywgdyk7XG4gICAgY3B1YiA9IGN1cnZlLkcxLmFkZChjcHViLCBJQzApO1xuXG4gICAgY29uc3QgcGlfYSA9IGN1cnZlLkcxLmZyb21PYmplY3QocHJvb2YucGlfYSk7XG4gICAgY29uc3QgcGlfYiA9IGN1cnZlLkcyLmZyb21PYmplY3QocHJvb2YucGlfYik7XG4gICAgY29uc3QgcGlfYyA9IGN1cnZlLkcxLmZyb21PYmplY3QocHJvb2YucGlfYyk7XG5cbiAgICBpZiAoIWlzV2VsbENvbnN0cnVjdGVkKGN1cnZlLCB7cGlfYSwgcGlfYiwgcGlfY30pKSB7XG4gICAgICAgIGlmKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHJvb2YgY29tbWl0bWVudHMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCB2a19nYW1tYV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19nYW1tYV8yKTtcbiAgICBjb25zdCB2a19kZWx0YV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19kZWx0YV8yKTtcbiAgICBjb25zdCB2a19hbHBoYV8xID0gY3VydmUuRzEuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19hbHBoYV8xKTtcbiAgICBjb25zdCB2a19iZXRhXzIgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLnZrX2JldGFfMik7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoXG4gICAgICAgIGN1cnZlLkcxLm5lZyhwaV9hKSAsIHBpX2IsXG4gICAgICAgIGNwdWIgLCB2a19nYW1tYV8yLFxuICAgICAgICBwaV9jICwgdmtfZGVsdGFfMixcblxuICAgICAgICB2a19hbHBoYV8xLCB2a19iZXRhXzJcbiAgICApO1xuXG4gICAgaWYgKCEgcmVzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgcHJvb2ZcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIk9LIVwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBHMiA9IGN1cnZlLkcyO1xuXG4gICAgcmV0dXJuIEcxLmlzVmFsaWQocHJvb2YucGlfYSlcbiAgICAgICAgJiYgRzIuaXNWYWxpZChwcm9vZi5waV9iKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBpX2MpO1xufVxuXG5mdW5jdGlvbiBwdWJsaWNJbnB1dHNBcmVWYWxpZChjdXJ2ZSwgcHVibGljSW5wdXRzKSB7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHB1YmxpY0lucHV0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZighU2NhbGFyLmx0KHB1YmxpY0lucHV0c1tpXSwgY3VydmUucikpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5mdW5jdGlvbiBwMjU2KG4pIHtcbiAgICBsZXQgbnN0ciA9IG4udG9TdHJpbmcoMTYpO1xuICAgIHdoaWxlIChuc3RyLmxlbmd0aCA8IDY0KSBuc3RyID0gXCIwXCIrbnN0cjtcbiAgICBuc3RyID0gYFwiMHgke25zdHJ9XCJgO1xuICAgIHJldHVybiBuc3RyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBncm90aDE2RXhwb3J0U29saWRpdHlDYWxsRGF0YShfcHJvb2YsIF9wdWIpIHtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHViKTtcblxuICAgIGxldCBpbnB1dHMgPSBcIlwiO1xuICAgIGZvciAobGV0IGk9MDsgaTxwdWIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlucHV0cyAhPSBcIlwiKSBpbnB1dHMgPSBpbnB1dHMgKyBcIixcIjtcbiAgICAgICAgaW5wdXRzID0gaW5wdXRzICsgcDI1NihwdWJbaV0pO1xuICAgIH1cblxuICAgIGxldCBTO1xuICAgIFM9YFske3AyNTYocHJvb2YucGlfYVswXSl9LCAke3AyNTYocHJvb2YucGlfYVsxXSl9XSxgICtcbiAgICAgICAgYFtbJHtwMjU2KHByb29mLnBpX2JbMF1bMV0pfSwgJHtwMjU2KHByb29mLnBpX2JbMF1bMF0pfV0sWyR7cDI1Nihwcm9vZi5waV9iWzFdWzFdKX0sICR7cDI1Nihwcm9vZi5waV9iWzFdWzBdKX1dXSxgICtcbiAgICAgICAgYFske3AyNTYocHJvb2YucGlfY1swXSl9LCAke3AyNTYocHJvb2YucGlfY1sxXSl9XSxgICtcbiAgICAgICAgYFske2lucHV0c31dYDtcblxuICAgIHJldHVybiBTO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxQcm92ZX0gZnJvbSBcIi4vZ3JvdGgxNl9mdWxscHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBwcm92ZX0gZnJvbSBcIi4vZ3JvdGgxNl9wcm92ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHZlcmlmeX0gZnJvbSBcIi4vZ3JvdGgxNl92ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRTb2xpZGl0eUNhbGxEYXRhfSBmcm9tIFwiLi9ncm90aDE2X2V4cG9ydHNvbGlkaXR5Y2FsbGRhdGEuanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBibGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcblxuaW1wb3J0IHsgQ2hhQ2hhIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzaFRvRzIoY3VydmUsIGhhc2gpIHtcbiAgICBjb25zdCBoYXNoViA9IG5ldyBEYXRhVmlldyhoYXNoLmJ1ZmZlciwgaGFzaC5ieXRlT2Zmc2V0LCBoYXNoLmJ5dGVMZW5ndGgpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWRbaV0gPSBoYXNoVi5nZXRVaW50MzIoaSo0KTtcbiAgICB9XG5cbiAgICBjb25zdCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgY29uc3QgZzJfc3AgPSBjdXJ2ZS5HMi5mcm9tUm5nKHJuZyk7XG5cbiAgICByZXR1cm4gZzJfc3A7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHMnNwKGN1cnZlLCBwZXJzaW5hbGl6YXRpb24sIGNoYWxsZW5nZSwgZzFzLCBnMXN4KSB7XG5cbiAgICBjb25zdCBoID0gYmxha2UyYig2NCk7XG4gICAgY29uc3QgYjEgPSBuZXcgVWludDhBcnJheShbcGVyc2luYWxpemF0aW9uXSk7XG4gICAgaC51cGRhdGUoYjEpO1xuICAgIGgudXBkYXRlKGNoYWxsZW5nZSk7XG4gICAgY29uc3QgYjMgPSBjdXJ2ZS5HMS50b1VuY29tcHJlc3NlZChnMXMpO1xuICAgIGgudXBkYXRlKCBiMyk7XG4gICAgY29uc3QgYjQgPSBjdXJ2ZS5HMS50b1VuY29tcHJlc3NlZChnMXN4KTtcbiAgICBoLnVwZGF0ZSggYjQpO1xuICAgIGNvbnN0IGhhc2ggPWguZGlnZXN0KCk7XG5cbiAgICByZXR1cm4gaGFzaFRvRzIoY3VydmUsIGhhc2gpO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVQdWJLZXkoaywgY3VydmUsIHBlcnNvbmFsaXphdGlvbiwgY2hhbGxlbmdlSGFzaCwgcm5nICkge1xuICAgIGsuZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgay5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoay5nMV9zLCBrLnBydktleSkpO1xuICAgIGsuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShnZXRHMnNwKGN1cnZlLCBwZXJzb25hbGl6YXRpb24sIGNoYWxsZW5nZUhhc2gsIGsuZzFfcywgay5nMV9zeCkpO1xuICAgIGsuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNGcihrLmcyX3NwLCBrLnBydktleSkpO1xuICAgIHJldHVybiBrO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKSB7XG4gICAgY29uc3Qga2V5ID0ge1xuICAgICAgICB0YXU6IHt9LFxuICAgICAgICBhbHBoYToge30sXG4gICAgICAgIGJldGE6IHt9XG4gICAgfTtcbiAgICBrZXkudGF1LnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBrZXkuYWxwaGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGtleS5iZXRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBjYWxjdWxhdGVQdWJLZXkoa2V5LnRhdSwgY3VydmUsIDAsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS5hbHBoYSwgY3VydmUsIDEsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS5iZXRhLCBjdXJ2ZSwgMiwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcbiAgICByZXR1cm4ga2V5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsdGFLZXkoY3VydmUsIHRyYW5zY3JpcHQsIHJuZykge1xuICAgIGNvbnN0IGRlbHRhID0ge307XG4gICAgZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGRlbHRhLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGRlbHRhLmcxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNTY2FsYXIoZGVsdGEuZzFfcywgZGVsdGEucHJ2S2V5KSk7XG4gICAgZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgdHJhbnNjcmlwdCk7XG4gICAgZGVsdGEuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNTY2FsYXIoZGVsdGEuZzJfc3AsIGRlbHRhLnBydktleSkpO1xuICAgIHJldHVybiBkZWx0YTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVBUYXVIZWFkZXIoZmQsIGN1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcikge1xuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuXG4gICAgaWYgKCEgY2VyZW1vbnlQb3dlcikgY2VyZW1vbnlQb3dlciA9IHBvd2VyO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMSk7IC8vIEhlYWRlciB0eXBlXG4gICAgY29uc3QgcEhlYWRlclNpemUgPSBmZC5wb3M7XG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NCgwKTsgLy8gVGVtcG9yYWxseSBzZXQgdG8gMCBsZW5ndGhcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY3VydmUuRjEubjY0KjgpO1xuXG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KTtcbiAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBjdXJ2ZS5xLCBjdXJ2ZS5GMS5uOCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihwb3dlcik7ICAgICAgICAgICAgICAgICAgICAvLyBwb3dlclxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2VyZW1vbnlQb3dlcik7ICAgICAgICAgICAgICAgLy8gcG93ZXJcblxuICAgIGNvbnN0IGhlYWRlclNpemUgPSBmZC5wb3MgLSBwSGVhZGVyU2l6ZSAtIDg7XG5cbiAgICBjb25zdCBvbGRQb3MgPSBmZC5wb3M7XG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KGhlYWRlclNpemUsIHBIZWFkZXJTaXplKTtcblxuICAgIGZkLnBvcyA9IG9sZFBvcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucykge1xuICAgIGlmICghc2VjdGlvbnNbMV0pICB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgKyBcIjogRmlsZSBoYXMgbm8gIGhlYWRlclwiKTtcbiAgICBpZiAoc2VjdGlvbnNbMV0ubGVuZ3RoPjEpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IEZpbGUgaGFzIG1vcmUgdGhhbiBvbmUgaGVhZGVyXCIpO1xuXG4gICAgZmQucG9zID0gc2VjdGlvbnNbMV1bMF0ucDtcbiAgICBjb25zdCBuOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKG44KTtcbiAgICBjb25zdCBxID0gU2NhbGFyLmZyb21ScHJMRShidWZmKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tUShxKTtcblxuICAgIGlmIChjdXJ2ZS5GMS5uNjQqOCAhPSBuOCkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogSW52YWxpZCBzaXplXCIpO1xuXG4gICAgY29uc3QgcG93ZXIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjZXJlbW9ueVBvd2VyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBpZiAoZmQucG9zLXNlY3Rpb25zWzFdWzBdLnAgIT0gc2VjdGlvbnNbMV1bMF0uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBQVGF1IGhlYWRlciBzaXplXCIpO1xuXG4gICAgcmV0dXJuIHtjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXJ9O1xufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUHRhdVB1YktleShmZCwgY3VydmUsIG1vbnRnb21lcnkpIHtcblxuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkYxLm44KjIqNiArIGN1cnZlLkYyLm44KjIqMyk7XG5cbiAgICByZXR1cm4gZnJvbVB0YXVQdWJLZXlScHIoYnVmZiwgMCwgY3VydmUsIG1vbnRnb21lcnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbVB0YXVQdWJLZXlScHIoYnVmZiwgcG9zLCBjdXJ2ZSwgbW9udGdvbWVyeSkge1xuXG4gICAgY29uc3Qga2V5ID0ge1xuICAgICAgICB0YXU6IHt9LFxuICAgICAgICBhbHBoYToge30sXG4gICAgICAgIGJldGE6IHt9XG4gICAgfTtcblxuICAgIGtleS50YXUuZzFfcyA9IHJlYWRHMSgpO1xuICAgIGtleS50YXUuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkuYWxwaGEuZzFfcyA9IHJlYWRHMSgpO1xuICAgIGtleS5hbHBoYS5nMV9zeCA9IHJlYWRHMSgpO1xuICAgIGtleS5iZXRhLmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkuYmV0YS5nMV9zeCA9IHJlYWRHMSgpO1xuICAgIGtleS50YXUuZzJfc3B4ID0gcmVhZEcyKCk7XG4gICAga2V5LmFscGhhLmcyX3NweCA9IHJlYWRHMigpO1xuICAgIGtleS5iZXRhLmcyX3NweCA9IHJlYWRHMigpO1xuXG4gICAgcmV0dXJuIGtleTtcblxuICAgIGZ1bmN0aW9uIHJlYWRHMSgpIHtcbiAgICAgICAgbGV0IHA7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzEuZnJvbVJwckxFTSggYnVmZiwgcG9zICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzEuZnJvbVJwclVuY29tcHJlc3NlZCggYnVmZiwgcG9zICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkcxLkYubjgqMjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZEcyKCkge1xuICAgICAgICBsZXQgcDtcbiAgICAgICAgaWYgKG1vbnRnb21lcnkpIHtcbiAgICAgICAgICAgIHAgPSBjdXJ2ZS5HMi5mcm9tUnByTEVNKCBidWZmLCBwb3MgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHAgPSBjdXJ2ZS5HMi5mcm9tUnByVW5jb21wcmVzc2VkKCBidWZmLCBwb3MgKTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgKz0gY3VydmUuRzIuRi5uOCoyO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1B0YXVQdWJLZXlScHIoYnVmZiwgcG9zLCBjdXJ2ZSwga2V5LCBtb250Z29tZXJ5KSB7XG5cbiAgICB3cml0ZUcxKGtleS50YXUuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkudGF1LmcxX3N4KTtcbiAgICB3cml0ZUcxKGtleS5hbHBoYS5nMV9zKTtcbiAgICB3cml0ZUcxKGtleS5hbHBoYS5nMV9zeCk7XG4gICAgd3JpdGVHMShrZXkuYmV0YS5nMV9zKTtcbiAgICB3cml0ZUcxKGtleS5iZXRhLmcxX3N4KTtcbiAgICB3cml0ZUcyKGtleS50YXUuZzJfc3B4KTtcbiAgICB3cml0ZUcyKGtleS5hbHBoYS5nMl9zcHgpO1xuICAgIHdyaXRlRzIoa2V5LmJldGEuZzJfc3B4KTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEocCkge1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkYxLm44KjI7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihwKSB7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBjdXJ2ZS5HMi50b1JwckxFTShidWZmLCBwb3MsIHApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgKz0gY3VydmUuRjIubjgqMjtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUHRhdVB1YktleShmZCwgY3VydmUsIGtleSwgbW9udGdvbWVyeSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKjYgKyBjdXJ2ZS5GMi5uOCoyKjMpO1xuICAgIHRvUHRhdVB1YktleVJwcihidWZmLCAwLCBjdXJ2ZSwga2V5LCBtb250Z29tZXJ5KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbihmZCwgY3VydmUpIHtcbiAgICBjb25zdCBjID0ge307XG5cbiAgICBjLnRhdUcxID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgYy50YXVHMiA9IGF3YWl0IHJlYWRHMigpO1xuICAgIGMuYWxwaGFHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMuYmV0YUcxID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgYy5iZXRhRzIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjLmtleSA9IGF3YWl0IHJlYWRQdGF1UHViS2V5KGZkLCBjdXJ2ZSwgdHJ1ZSk7XG4gICAgYy5wYXJ0aWFsSGFzaCA9IGF3YWl0IGZkLnJlYWQoMjE2KTtcbiAgICBjLm5leHRDaGFsbGVuZ2UgPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjLnR5cGUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGNvbnN0IGJ1ZmZWICA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMio2K2N1cnZlLkcyLkYubjgqMiozKTtcbiAgICB0b1B0YXVQdWJLZXlScHIoYnVmZlYsIDAsIGN1cnZlLCBjLmtleSwgZmFsc2UpO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICByZXNwb25zZUhhc2hlci5zZXRQYXJ0aWFsSGFzaChjLnBhcnRpYWxIYXNoKTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZlYpO1xuICAgIGMucmVzcG9uc2VIYXNoID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBjb25zdCBwYXJhbUxlbmd0aCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGNvbnN0IGN1clBvcyA9IGZkLnBvcztcbiAgICBsZXQgbGFzdFR5cGUgPTA7XG4gICAgd2hpbGUgKGZkLnBvcy1jdXJQb3MgPCBwYXJhbUxlbmd0aCkge1xuICAgICAgICBjb25zdCBidWZmVHlwZSA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPD0gbGFzdFR5cGUpIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgaW4gdGhlIGNvbnRyaWJ1dGlvbiBtdXN0IGJlIHNvcnRlZFwiKTtcbiAgICAgICAgbGFzdFR5cGUgPSBidWZmVHlwZVswXTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPT0xKSB7ICAgICAvLyBOYW1lXG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgcmVhZERWKDEpO1xuICAgICAgICAgICAgY29uc3QgYnVmZlN0ciA9IGF3YWl0IHJlYWREVihidWZmTGVuWzBdKTtcbiAgICAgICAgICAgIGMubmFtZSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShidWZmU3RyKTtcbiAgICAgICAgfSBlbHNlIGlmIChidWZmVHlwZVswXT09Mikge1xuICAgICAgICAgICAgY29uc3QgYnVmZkV4cCA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgICAgIGMubnVtSXRlcmF0aW9uc0V4cCA9IGJ1ZmZFeHBbMF07XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgICAgICBjLmJlYWNvbkhhc2ggPSBhd2FpdCByZWFkRFYoYnVmZkxlblswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXIgbm90IHJlY29nbml6ZWRcIik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGZkLnBvcyAhPSBjdXJQb3MgKyBwYXJhbUxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYztcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMSgpIHtcbiAgICAgICAgY29uc3QgcEJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcxLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMS5mcm9tUnByTEVNKCBwQnVmZiApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgY29uc3QgcEJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcyLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMi5mcm9tUnByTEVNKCBwQnVmZiApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWREVihuKSB7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKG4pO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucykge1xuICAgIGlmICghc2VjdGlvbnNbN10pICB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgKyBcIjogRmlsZSBoYXMgbm8gIGNvbnRyaWJ1dGlvbnNcIik7XG4gICAgaWYgKHNlY3Rpb25zWzddWzBdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGNvbnRyaWJ1dGlvbnMgc2VjdGlvblwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzddWzBdLnA7XG4gICAgY29uc3QgbkNvbnRyaWJ1dGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjb250cmlidXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5Db250cmlidXRpb25zOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKTtcbiAgICAgICAgYy5pZCA9IGkrMTtcbiAgICAgICAgY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cblxuICAgIGlmIChmZC5wb3Mtc2VjdGlvbnNbN11bMF0ucCAhPSBzZWN0aW9uc1s3XVswXS5zaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNvbnRyaWJ1dGlvbiBzZWN0aW9uIHNpemVcIik7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9ucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjb250cmlidXRpb24pIHtcblxuICAgIGNvbnN0IGJ1ZmZHMSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIpO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYyLm44KjIpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLnRhdUcxKTtcbiAgICBhd2FpdCB3cml0ZUcyKGNvbnRyaWJ1dGlvbi50YXVHMik7XG4gICAgYXdhaXQgd3JpdGVHMShjb250cmlidXRpb24uYWxwaGFHMSk7XG4gICAgYXdhaXQgd3JpdGVHMShjb250cmlidXRpb24uYmV0YUcxKTtcbiAgICBhd2FpdCB3cml0ZUcyKGNvbnRyaWJ1dGlvbi5iZXRhRzIpO1xuICAgIGF3YWl0IHdyaXRlUHRhdVB1YktleShmZCwgY3VydmUsIGNvbnRyaWJ1dGlvbi5rZXksIHRydWUpO1xuICAgIGF3YWl0IGZkLndyaXRlKGNvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCk7XG4gICAgYXdhaXQgZmQud3JpdGUoY29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29udHJpYnV0aW9uLnR5cGUgfHwgMCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoY29udHJpYnV0aW9uLm5hbWUpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMSk7ICAgICAgLy8gUGFyYW0gTmFtZVxuICAgICAgICBjb25zdCBuYW1lRGF0YSA9IG5ldyBUZXh0RW5jb2RlcihcInV0Zi04XCIpLmVuY29kZShjb250cmlidXRpb24ubmFtZS5zdWJzdHJpbmcoMCw2NCkpO1xuICAgICAgICBwYXJhbXMucHVzaChuYW1lRGF0YS5ieXRlTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5hbWVEYXRhLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2gobmFtZURhdGFbaV0pO1xuICAgIH1cbiAgICBpZiAoY29udHJpYnV0aW9uLnR5cGUgPT0gMSkge1xuICAgICAgICBwYXJhbXMucHVzaCgyKTsgICAgICAvLyBQYXJhbSBudW1JdGVyYXRpb25zRXhwXG4gICAgICAgIHBhcmFtcy5wdXNoKGNvbnRyaWJ1dGlvbi5udW1JdGVyYXRpb25zRXhwKTtcblxuICAgICAgICBwYXJhbXMucHVzaCgzKTsgICAgICAvLyBCZWFjb24gSGFzaFxuICAgICAgICBwYXJhbXMucHVzaChjb250cmlidXRpb24uYmVhY29uSGFzaC5ieXRlTGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2goY29udHJpYnV0aW9uLmJlYWNvbkhhc2hbaV0pO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLmxlbmd0aD4wKSB7XG4gICAgICAgIGNvbnN0IHBhcmFtc0J1ZmYgPSBuZXcgVWludDhBcnJheShwYXJhbXMpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHBhcmFtc0J1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKHBhcmFtc0J1ZmYpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZkcxLCAwLCBwKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcxKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcyKHApIHtcbiAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZkcyLCAwLCBwKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9ucyhmZCwgY3VydmUsIGNvbnRyaWJ1dGlvbnMpIHtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoNyk7IC8vIEhlYWRlciB0eXBlXG4gICAgY29uc3QgcENvbnRyaWJ1dGlvbnNTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvbnRyaWJ1dGlvbnMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IGNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cmlidXRpb24oZmQsIGN1cnZlLCBjb250cmlidXRpb25zW2ldKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9uc1NpemUgPSBmZC5wb3MgLSBwQ29udHJpYnV0aW9uc1NpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChjb250cmlidXRpb25zU2l6ZSwgcENvbnRyaWJ1dGlvbnNTaXplKTtcbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGluZyBGaXJzdCBDaGFsbGVuZ2UgSGFzaFwiKTtcblxuICAgIGNvbnN0IGhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcblxuICAgIGNvbnN0IHZHMSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMik7XG4gICAgY29uc3QgdkcyID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZCh2RzEsIDAsIGN1cnZlLkcxLmcpO1xuICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKHZHMiwgMCwgY3VydmUuRzIuZyk7XG5cbiAgICBoYXNoZXIudXBkYXRlKEJsYWtlMmIoNjQpLmRpZ2VzdCgpKTtcblxuICAgIGxldCBuO1xuXG4gICAgbj0oMiAqKiBwb3dlcikqMiAtMTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiB0YXVHMVwiKTtcbiAgICBoYXNoQmxvY2sodkcxLCBuKTtcbiAgICBuPSAyICoqIHBvd2VyO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IHRhdUcyXCIpO1xuICAgIGhhc2hCbG9jayh2RzIsIG4pO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IGFscGhhVGF1RzFcIik7XG4gICAgaGFzaEJsb2NrKHZHMSwgbik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRlIEluaXRpYWwgSGFzaDogYmV0YVRhdUcxXCIpO1xuICAgIGhhc2hCbG9jayh2RzEsIG4pO1xuICAgIGhhc2hlci51cGRhdGUodkcyKTtcblxuICAgIHJldHVybiBoYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBmdW5jdGlvbiBoYXNoQmxvY2soYnVmZiwgbikge1xuICAgICAgICAvLyB0aGlzIGJsb2NrIHNpemUgaXMgYSBnb29kIGNvbXByb21pc2UgYmV0d2VlbiBzcGVlZCBhbmQgdGhlIG1heGltdW1cbiAgICAgICAgLy8gaW5wdXQgc2l6ZSBvZiB0aGUgQmxha2UyYiB1cGRhdGUgbWV0aG9kICg2NSw1MzUsNzIwIGJ5dGVzKS5cbiAgICAgICAgY29uc3QgYmxvY2tTaXplID0gMzQxMDAwO1xuICAgICAgICBjb25zdCBuQmxvY2tzID0gTWF0aC5mbG9vcihuIC8gYmxvY2tTaXplKTtcbiAgICAgICAgY29uc3QgcmVtID0gbiAlIGJsb2NrU2l6ZTtcbiAgICAgICAgY29uc3QgYmlnQnVmZiA9IG5ldyBVaW50OEFycmF5KGJsb2NrU2l6ZSAqIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxibG9ja1NpemU7IGkrKykge1xuICAgICAgICAgICAgYmlnQnVmZi5zZXQoYnVmZiwgaSpidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQmxvY2tzOyBpKyspIHtcbiAgICAgICAgICAgIGhhc2hlci51cGRhdGUoYmlnQnVmZik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJJbml0aWFsIGhhc2g6IFwiICtpKmJsb2NrU2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlbTsgaSsrKSB7XG4gICAgICAgICAgICBoYXNoZXIudXBkYXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBrZXlGcm9tQmVhY29uKGN1cnZlLCBjaGFsbGVuZ2VIYXNoLCBiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKSB7XG5cbiAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICBjb25zdCBrZXkgPSBrZXlQYWlyLmNyZWF0ZVBUYXVLZXkoY3VydmUsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG5cbiAgICByZXR1cm4ga2V5O1xufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuSGVhZGVyKDEpXG4gICAgbjhcbiAgICBwcmltZVxuICAgIHBvd2VyXG50YXVHMSgyKVxuICAgIHsoMiAqKiBwb3dlcikqMi0xfSBbXG4gICAgICAgIEcxLCB0YXUqRzEsIHRhdV4yICogRzEsIC4uLi5cbiAgICBdXG50YXVHMigzKVxuICAgIHsyICoqIHBvd2VyfVtcbiAgICAgICAgRzIsIHRhdSpHMiwgdGF1XjIgKiBHMiwgLi4uXG4gICAgXVxuYWxwaGFUYXVHMSg0KVxuICAgIHsyICoqIHBvd2VyfVtcbiAgICAgICAgYWxwaGEqRzEsIGFscGhhKnRhdSpHMSwgYWxwaGEqdGF1XjIqRzEsLi4uLlxuICAgIF1cbmJldGFUYXVHMSg1KVxuICAgIHsyICoqIHBvd2VyfSBbXVxuICAgICAgICBiZXRhKkcxLCBiZXRhKnRhdSpHMSwgYmV0YSp0YXVeMipHMSwgLi4uLlxuICAgIF1cbmJldGFHMig2KVxuICAgIHsxfVtcbiAgICAgICAgYmV0YSpHMlxuICAgIF1cbmNvbnRyaWJ1dGlvbnMoNylcbiAgICBOQ29udHJpYnV0aW9uc1xuICAgIHtOQ29udHJpYnV0aW9uc31bXG4gICAgICAgIHRhdSpHMVxuICAgICAgICB0YXUqRzJcbiAgICAgICAgYWxwaGEqRzFcbiAgICAgICAgYmV0YSpHMVxuICAgICAgICBiZXRhKkcyXG4gICAgICAgIHB1YktleVxuICAgICAgICAgICAgdGF1X2cxc1xuICAgICAgICAgICAgdGF1X2cxc3hcbiAgICAgICAgICAgIHRhdV9nMnNweFxuICAgICAgICAgICAgYWxwaGFfZzFzXG4gICAgICAgICAgICBhbHBoYV9nMXN4XG4gICAgICAgICAgICBhbHBoYV9nMXNweFxuICAgICAgICAgICAgYmV0YV9nMXNcbiAgICAgICAgICAgIGJldGFfZzFzeFxuICAgICAgICAgICAgYmV0YV9nMXNweFxuICAgICAgICBwYXJ0aWFsSGFzaCAoMjE2IGJ5dGVzKSBTZWUgaHR0cHM6Ly9naXRodWIuY29tL21hZmludG9zaC9ibGFrZTJiLXdhc20vYmxvYi8yM2JlZTA2OTQ1ODA2MzA5OTc3YWY4MDJiYzM3NDcyNzU0MjYxN2M3L2JsYWtlMmIud2F0I0w5XG4gICAgICAgIGhhc2hOZXdDaGFsbGVuZ2VcbiAgICBdXG4gKi9cblxuaW1wb3J0ICogYXMgcHRhdVV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBuZXdBY2N1bXVsYXRvcihjdXJ2ZSwgcG93ZXIsIGZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoZmlsZU5hbWUsIFwicHRhdVwiLCAxLCA3KTtcblxuICAgIGF3YWl0IHB0YXVVdGlscy53cml0ZVBUYXVIZWFkZXIoZmQsIGN1cnZlLCBwb3dlciwgMCk7XG5cbiAgICBjb25zdCBidWZmRzEgPSBjdXJ2ZS5HMS5vbmVBZmZpbmU7XG4gICAgY29uc3QgYnVmZkcyID0gY3VydmUuRzIub25lQWZmaW5lO1xuXG4gICAgLy8gV3JpdGUgdGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMik7XG4gICAgY29uc3QgblRhdUcxID0gKDIgKiogcG93ZXIpICogMiAtMTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5UYXVHMTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKChpJTEwMDAwMCkgPT0gMCkmJmkpIGxvZ2dlci5sb2coXCJ0YXVHMTogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSB0YXVHMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAzKTtcbiAgICBjb25zdCBuVGF1RzIgPSAoMiAqKiBwb3dlcik7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuVGF1RzI7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzIpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwidGF1RzI6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgYWxwaGFUYXVHMVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA0KTtcbiAgICBjb25zdCBuQWxmYVRhdUcxID0gKDIgKiogcG93ZXIpO1xuICAgIGZvciAobGV0IGk9MDsgaTwgbkFsZmFUYXVHMTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKChpJTEwMDAwMCkgPT0gMCkmJmkpIGxvZ2dlci5sb2coXCJhbHBoYVRhdUcxOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGJldGFUYXVHMVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA1KTtcbiAgICBjb25zdCBuQmV0YVRhdUcxID0gKDIgKiogcG93ZXIpO1xuICAgIGZvciAobGV0IGk9MDsgaTwgbkJldGFUYXVHMTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKChpJTEwMDAwMCkgPT0gMCkmJmkpIGxvZ2dlci5sb2coXCJiZXRhVGF1RzE6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgYmV0YUcyXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDYpO1xuICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBDb250cmlidXRpb25zXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDcpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoMCk7IC8vIDAgQ29udHJpYnV0aW9uc1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIGNvbnN0IGZpcnN0Q2hhbGxlbmdlSGFzaCA9IHB0YXVVdGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKG1pc2MuZm9ybWF0SGFzaChCbGFrZTJiKDY0KS5kaWdlc3QoKSwgXCJCbGFuayBDb250cmlidXRpb24gSGFzaDpcIikpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGZpcnN0Q2hhbGxlbmdlSGFzaCwgXCJGaXJzdCBDb250cmlidXRpb24gSGFzaDpcIikpO1xuXG4gICAgcmV0dXJuIGZpcnN0Q2hhbGxlbmdlSGFzaDtcblxufVxuIiwiLy8gRm9ybWF0IG9mIHRoZSBvdXRwdVxuLy8gICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NEJ5dGVzXG4vLyAgICAgMl5OICogMiAtMSAgVGF1RzEgcG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgMl5OICBUYXVHMiBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAyXk4gIEFscGhhVGF1RzEgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgMl5OICBCZXRhVGF1RzEgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgQmV0YUcyICh1bmNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydENoYWxsZW5nZShwVGF1RmlsZW5hbWUsIGNoYWxsZW5nZUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG4gICAgY29uc3Qge2ZkOiBmZEZyb20sIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcblxuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRGcm9tLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmRGcm9tLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGxldCBsYXN0UmVzcG9uc2VIYXNoLCBjdXJDaGFsbGVuZ2VIYXNoO1xuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGxhc3RSZXNwb25zZUhhc2ggPSBCbGFrZTJiKDY0KS5kaWdlc3QoKTtcbiAgICAgICAgY3VyQ2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RSZXNwb25zZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLnJlc3BvbnNlSGFzaDtcbiAgICAgICAgY3VyQ2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobGFzdFJlc3BvbnNlSGFzaCwgXCJMYXN0IFJlc3BvbnNlIEhhc2g6IFwiKSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ2hhbGxlbmdlSGFzaCwgXCJOZXcgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cblxuICAgIGNvbnN0IGZkVG8gPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShjaGFsbGVuZ2VGaWxlbmFtZSk7XG5cbiAgICBjb25zdCB0b0hhc2ggPSBCbGFrZTJiKDY0KTtcbiAgICBhd2FpdCBmZFRvLndyaXRlKGxhc3RSZXNwb25zZUhhc2gpO1xuICAgIHRvSGFzaC51cGRhdGUobGFzdFJlc3BvbnNlSGFzaCk7XG5cbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDIsIFwiRzFcIiwgKDIgKiogcG93ZXIpICogMiAtMSwgXCJ0YXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDQsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIpO1xuICAgIGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMiAqKiBwb3dlcikgICAgICAgLCBcImJldGFUYXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDYsIFwiRzJcIiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcbiAgICBhd2FpdCBmZFRvLmNsb3NlKCk7XG5cbiAgICBjb25zdCBjYWxjQ3VyQ2hhbGxlbmdlSGFzaCA9IHRvSGFzaC5kaWdlc3QoKTtcblxuICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbCAoY3VyQ2hhbGxlbmdlSGFzaCwgY2FsY0N1ckNoYWxsZW5nZUhhc2gpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjYWxjQ3VyQ2hhbGxlbmdlSGFzaCwgXCJDYWxjIEN1cnJldCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQVGF1IGZpbGUgaXMgY29ycnVwdGVkLiBDYWxjdWxhdGVkIG5ldyBjaGFsbGVuZ2UgaGFzaCBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBlY2xhcmVkIG9uZVwiKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUFRhdSBmaWxlIGlzIGNvcnJ1cHRlZC4gQ2FsY3VsYXRlZCBuZXcgY2hhbGxlbmdlIGhhc2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgZWNsYXJlZCBvbmVcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1ckNoYWxsZW5nZUhhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBleHBvcnRTZWN0aW9uKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgblBvaW50c0NodW5rID0gTWF0aC5mbG9vcigoMTw8MjQpL3NHKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkrPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgRXhwb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG4gICAgICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChuKnNHKTtcbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmYpO1xuICAgICAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICAgICAgICAgIHRvSGFzaC51cGRhdGUoYnVmZik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkRnJvbSk7XG4gICAgfVxuXG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0UmVzcG9uc2Uob2xkUHRhdUZpbGVuYW1lLCBjb250cmlidXRpb25GaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBuYW1lLCBpbXBvcnRQb2ludHMsIGxvZ2dlcikge1xuXG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qgbm9IYXNoID0gbmV3IFVpbnQ4QXJyYXkoNjQpO1xuICAgIGZvciAobGV0IGk9MDsgaTw2NDsgaSsrKSBub0hhc2hbaV0gPSAweEZGO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKG9sZFB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmRPbGQsIGN1cnZlLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY3VycmVudENvbnRyaWJ1dGlvbiA9IHt9O1xuXG4gICAgaWYgKG5hbWUpIGN1cnJlbnRDb250cmlidXRpb24ubmFtZSA9IG5hbWU7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5GMS5uOCoyO1xuICAgIGNvbnN0IHNjRzEgPSBjdXJ2ZS5GMS5uODsgLy8gQ29tcHJlc3NlZCBzaXplXG4gICAgY29uc3Qgc0cyID0gY3VydmUuRjIubjgqMjtcbiAgICBjb25zdCBzY0cyID0gY3VydmUuRjIubjg7IC8vIENvbXByZXNzZWQgc2l6ZVxuXG4gICAgY29uc3QgZmRSZXNwb25zZSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjb250cmlidXRpb25GaWxlbmFtZSk7XG5cbiAgICBpZiAgKGZkUmVzcG9uc2UudG90YWxTaXplICE9XG4gICAgICAgIDY0ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gT2xkIEhhc2hcbiAgICAgICAgKCgyICoqIHBvd2VyKSoyLTEpKnNjRzEgK1xuICAgICAgICAoMiAqKiBwb3dlcikqc2NHMiArXG4gICAgICAgICgyICoqIHBvd2VyKSpzY0cxICtcbiAgICAgICAgKDIgKiogcG93ZXIpKnNjRzEgK1xuICAgICAgICBzY0cyICtcbiAgICAgICAgc0cxKjYgKyBzRzIqMylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBvZiB0aGUgY29udHJpYnV0aW9uIGlzIGludmFsaWRcIik7XG5cbiAgICBsZXQgbGFzdENoYWxsZW5nZUhhc2g7XG5cbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGg+MCkge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCBpbXBvcnRQb2ludHMgPyA3OiAyKTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25QcmV2aW91c0hhc2ggPSBhd2FpdCBmZFJlc3BvbnNlLnJlYWQoNjQpO1xuXG4gICAgaWYgKG1pc2MuaGFzaElzRXF1YWwobm9IYXNoLGxhc3RDaGFsbGVuZ2VIYXNoKSkge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaDtcbiAgICAgICAgY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5uZXh0Q2hhbGxlbmdlID0gbGFzdENoYWxsZW5nZUhhc2g7XG4gICAgfVxuXG4gICAgaWYoIW1pc2MuaGFzaElzRXF1YWwoY29udHJpYnV0aW9uUHJldmlvdXNIYXNoLGxhc3RDaGFsbGVuZ2VIYXNoKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV3JvbmcgY29udHJpYnV0aW9uLiBUaGlzIGNvbnRyaWJ1dGlvbiBpcyBub3QgYmFzZWQgb24gdGhlIHByZXZpb3VzIGhhc2hcIik7XG5cbiAgICBjb25zdCBoYXNoZXJSZXNwb25zZSA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoY29udHJpYnV0aW9uUHJldmlvdXNIYXNoKTtcblxuICAgIGNvbnN0IHN0YXJ0U2VjdGlvbnMgPSBbXTtcbiAgICBsZXQgcmVzO1xuICAgIHJlcyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKGZkUmVzcG9uc2UsIGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFsxXSwgXCJ0YXVHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLnRhdUcxID0gcmVzWzBdO1xuICAgIHJlcyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKGZkUmVzcG9uc2UsIGZkTmV3LCBcIkcyXCIsIDMsICgyICoqIHBvd2VyKSAgICAgICAsIFsxXSwgXCJ0YXVHMlwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLnRhdUcyID0gcmVzWzBdO1xuICAgIHJlcyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKGZkUmVzcG9uc2UsIGZkTmV3LCBcIkcxXCIsIDQsICgyICoqIHBvd2VyKSAgICAgICAsIFswXSwgXCJhbHBoYUcxXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24uYWxwaGFHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCA1LCAoMiAqKiBwb3dlcikgICAgICAgLCBbMF0sIFwiYmV0YUcxXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24uYmV0YUcxID0gcmVzWzBdO1xuICAgIHJlcyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKGZkUmVzcG9uc2UsIGZkTmV3LCBcIkcyXCIsIDYsIDEgICAgICAgICAgICAgICAgICAsIFswXSwgXCJiZXRhRzJcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5iZXRhRzIgPSByZXNbMF07XG5cbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLnBhcnRpYWxIYXNoID0gaGFzaGVyUmVzcG9uc2UuZ2V0UGFydGlhbEhhc2goKTtcblxuXG4gICAgY29uc3QgYnVmZktleSA9IGF3YWl0IGZkUmVzcG9uc2UucmVhZChjdXJ2ZS5GMS5uOCoyKjYrY3VydmUuRjIubjgqMiozKTtcblxuICAgIGN1cnJlbnRDb250cmlidXRpb24ua2V5ID0gdXRpbHMuZnJvbVB0YXVQdWJLZXlScHIoYnVmZktleSwgMCwgY3VydmUsIGZhbHNlKTtcblxuICAgIGhhc2hlclJlc3BvbnNlLnVwZGF0ZShuZXcgVWludDhBcnJheShidWZmS2V5KSk7XG4gICAgY29uc3QgaGFzaFJlc3BvbnNlID0gaGFzaGVyUmVzcG9uc2UuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goaGFzaFJlc3BvbnNlLCBcIkNvbnRyaWJ1dGlvbiBSZXNwb25zZSBIYXNoIGltcG9ydGVkOiBcIikpO1xuXG4gICAgaWYgKGltcG9ydFBvaW50cykge1xuICAgICAgICBjb25zdCBuZXh0Q2hhbGxlbmdlSGFzaGVyID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgICAgICBuZXh0Q2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShoYXNoUmVzcG9uc2UpO1xuXG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgICAgICBhd2FpdCBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIiwgbG9nZ2VyKTtcblxuICAgICAgICBjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UgPSBuZXh0Q2hhbGxlbmdlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UgPSBub0hhc2g7XG4gICAgfVxuXG4gICAgY29udHJpYnV0aW9ucy5wdXNoKGN1cnJlbnRDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZFJlc3BvbnNlLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRDb250cmlidXRpb24ubmV4dENoYWxsZW5nZTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKGZkRnJvbSwgZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAoaW1wb3J0UG9pbnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc1NlY3Rpb25JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBwcm9jZXNzU2VjdGlvbk5vSW1wb3J0UG9pbnRzKGZkRnJvbSwgZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbkltcG9ydFBvaW50cyhmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpIHtcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc2NHID0gRy5GLm44O1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHNpbmd1bGFyUG9pbnRzID0gW107XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkVG8sIHNlY3Rpb25JZCk7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdID0gZmRUby5wb3M7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpICs9IG5Qb2ludHNDaHVuaykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBJbXBvcnRpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkMgPSBhd2FpdCBmZEZyb20ucmVhZChuICogc2NHKTtcbiAgICAgICAgICAgIGhhc2hlclJlc3BvbnNlLnVwZGF0ZShidWZmQyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMRU0gPSBhd2FpdCBHLmJhdGNoQ3RvTEVNKGJ1ZmZDKTtcblxuICAgICAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmTEVNKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxzaW5ndWxhclBvaW50SW5kZXhlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwID0gc2luZ3VsYXJQb2ludEluZGV4ZXNbal07XG4gICAgICAgICAgICAgICAgaWYgKChzcCA+PWkpICYmIChzcCA8IGkrbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgUCA9IEcuZnJvbVJwckxFTShidWZmTEVNLCAoc3AtaSkqc0cpO1xuICAgICAgICAgICAgICAgICAgICBzaW5ndWxhclBvaW50cy5wdXNoKFApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRUbyk7XG5cbiAgICAgICAgcmV0dXJuIHNpbmd1bGFyUG9pbnRzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25Ob0ltcG9ydFBvaW50cyhmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpIHtcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc2NHID0gRy5GLm44O1xuXG4gICAgICAgIGNvbnN0IHNpbmd1bGFyUG9pbnRzID0gW107XG5cbiAgICAgICAgY29uc3QgblBvaW50c0NodW5rID0gTWF0aC5mbG9vcigoMTw8MjQpL3NjRyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpICs9IG5Qb2ludHNDaHVuaykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBJbXBvcnRpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkMgPSBhd2FpdCBmZEZyb20ucmVhZChuICogc2NHKTtcbiAgICAgICAgICAgIGhhc2hlclJlc3BvbnNlLnVwZGF0ZShidWZmQyk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxzaW5ndWxhclBvaW50SW5kZXhlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwID0gc2luZ3VsYXJQb2ludEluZGV4ZXNbal07XG4gICAgICAgICAgICAgICAgaWYgKChzcCA+PWkpICYmIChzcCA8IGkrbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgUCA9IEcuZnJvbVJwckNvbXByZXNzZWQoYnVmZkMsIChzcC1pKSpzY0cpO1xuICAgICAgICAgICAgICAgICAgICBzaW5ndWxhclBvaW50cy5wdXNoKFApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzaW5ndWxhclBvaW50cztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHsgQ2hhQ2hhLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmNvbnN0IHNhbWVSYXRpbyA9IG1pc2Muc2FtZVJhdGlvO1xuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlDb250cmlidXRpb24oY3VydmUsIGN1ciwgcHJldiwgbG9nZ2VyKSB7XG4gICAgbGV0IHNyO1xuICAgIGlmIChjdXIudHlwZSA9PSAxKSB7ICAgIC8vIFZlcmlmeSB0aGUgYmVhY29uLlxuICAgICAgICBjb25zdCBiZWFjb25LZXkgPSBhd2FpdCB1dGlscy5rZXlGcm9tQmVhY29uKGN1cnZlLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5iZWFjb25IYXNoLCBjdXIubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LnRhdS5nMV9zLCBiZWFjb25LZXkudGF1LmcxX3MpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKHRhdUcxX3MpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS50YXUuZzFfc3gsIGJlYWNvbktleS50YXUuZzFfc3gpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKHRhdUcxX3N4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ci5rZXkudGF1LmcyX3NweCwgYmVhY29uS2V5LnRhdS5nMl9zcHgpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKHRhdUcyX3NweCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYWxwaGEuZzFfcywgYmVhY29uS2V5LmFscGhhLmcxX3MpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGFscGhhRzFfcykgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmFscGhhLmcxX3N4LCBiZWFjb25LZXkuYWxwaGEuZzFfc3gpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGFscGhhRzFfc3gpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoY3VyLmtleS5hbHBoYS5nMl9zcHgsIGJlYWNvbktleS5hbHBoYS5nMl9zcHgpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGFscGhhRzJfc3B4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS5iZXRhLmcxX3MsIGJlYWNvbktleS5iZXRhLmcxX3MpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGJldGFHMV9zKSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYmV0YS5nMV9zeCwgYmVhY29uS2V5LmJldGEuZzFfc3gpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGJldGFHMV9zeCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXIua2V5LmJldGEuZzJfc3B4LCBiZWFjb25LZXkuYmV0YS5nMl9zcHgpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYEJFQUNPTiBrZXkgKGJldGFHMl9zcHgpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3VyLmtleS50YXUuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShrZXlQYWlyLmdldEcyc3AoY3VydmUsIDAsIHByZXYubmV4dENoYWxsZW5nZSwgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gpKTtcbiAgICBjdXIua2V5LmFscGhhLmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoa2V5UGFpci5nZXRHMnNwKGN1cnZlLCAxLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5rZXkuYWxwaGEuZzFfcywgY3VyLmtleS5hbHBoYS5nMV9zeCkpO1xuICAgIGN1ci5rZXkuYmV0YS5nMl9zcCA9IGN1cnZlLkcyLnRvQWZmaW5lKGtleVBhaXIuZ2V0RzJzcChjdXJ2ZSwgMiwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4KSk7XG5cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gsIGN1ci5rZXkudGF1LmcyX3NwLCBjdXIua2V5LnRhdS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAodGF1KSBpbiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VyLmtleS5hbHBoYS5nMV9zLCBjdXIua2V5LmFscGhhLmcxX3N4LCBjdXIua2V5LmFscGhhLmcyX3NwLCBjdXIua2V5LmFscGhhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQga2V5IChhbHBoYSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkuYmV0YS5nMV9zLCBjdXIua2V5LmJldGEuZzFfc3gsIGN1ci5rZXkuYmV0YS5nMl9zcCwgY3VyLmtleS5iZXRhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQga2V5IChiZXRhKSBpbiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgcHJldi50YXVHMSwgY3VyLnRhdUcxLCBjdXIua2V5LnRhdS5nMl9zcCwgY3VyLmtleS50YXUuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCB0YXUqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsICBjdXIua2V5LnRhdS5nMV9zLCBjdXIua2V5LnRhdS5nMV9zeCwgcHJldi50YXVHMiwgY3VyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCB0YXUqRzIuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYuYWxwaGFHMSwgY3VyLmFscGhhRzEsIGN1ci5rZXkuYWxwaGEuZzJfc3AsIGN1ci5rZXkuYWxwaGEuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBhbHBoYSpHMS4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCIgSXQgZG9lcyBub3QgZm9sbG93IHRoZSBwcmV2aW91cyBjb250cmlidXRpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgcHJldi5iZXRhRzEsIGN1ci5iZXRhRzEsIGN1ci5rZXkuYmV0YS5nMl9zcCwgY3VyLmtleS5iZXRhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYmV0YSpHMS4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCIgSXQgZG9lcyBub3QgZm9sbG93IHRoZSBwcmV2aW91cyBjb250cmlidXRpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgIGN1ci5rZXkuYmV0YS5nMV9zLCBjdXIua2V5LmJldGEuZzFfc3gsIHByZXYuYmV0YUcyLCBjdXIuYmV0YUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBiZXRhKkcyLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIkl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJQb3dlcnMgT2YgdGF1IGZpbGUgT0shXCIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB2ZXJpZnkodGF1RmlsZW5hbWUsIGxvZ2dlcikge1xuICAgIGxldCBzcjtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmQsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjb250cnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcInBvd2VyOiAyKipcIiArIHBvd2VyKTtcbiAgICAvLyBWZXJpZnkgTGFzdCBjb250cmlidXRpb25cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNvbXB1dGluZyBpbml0aWFsIGNvbnRyaWJ1dGlvbiBoYXNoXCIpO1xuICAgIGNvbnN0IGluaXRpYWxDb250cmlidXRpb24gPSB7XG4gICAgICAgIHRhdUcxOiBjdXJ2ZS5HMS5nLFxuICAgICAgICB0YXVHMjogY3VydmUuRzIuZyxcbiAgICAgICAgYWxwaGFHMTogY3VydmUuRzEuZyxcbiAgICAgICAgYmV0YUcxOiBjdXJ2ZS5HMS5nLFxuICAgICAgICBiZXRhRzI6IGN1cnZlLkcyLmcsXG4gICAgICAgIG5leHRDaGFsbGVuZ2U6IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgY2VyZW1vbnlQb3dlciwgbG9nZ2VyKSxcbiAgICAgICAgcmVzcG9uc2VIYXNoOiBCbGFrZTJiKDY0KS5kaWdlc3QoKVxuICAgIH07XG5cbiAgICBpZiAoY29udHJzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgbm8gY29udHJpYnV0aW9uISBJdCBjYW5ub3QgYmUgdXNlZCBpbiBwcm9kdWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbGV0IHByZXZDb250cjtcbiAgICBpZiAoY29udHJzLmxlbmd0aD4xKSB7XG4gICAgICAgIHByZXZDb250ciA9IGNvbnRyc1tjb250cnMubGVuZ3RoLTJdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZDb250ciA9IGluaXRpYWxDb250cmlidXRpb247XG4gICAgfVxuICAgIGNvbnN0IGN1ckNvbnRyID0gY29udHJzW2NvbnRycy5sZW5ndGgtMV07XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmFsaWRhdGluZyBjb250cmlidXRpb24gI1wiK2NvbnRyc1tjb250cnMubGVuZ3RoLTFdLmlkKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlDb250cmlidXRpb24oY3VydmUsIGN1ckNvbnRyLCBwcmV2Q29udHIsIGxvZ2dlcik7XG4gICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcblxuXG4gICAgY29uc3QgbmV4dENvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIG5leHRDb250cmlidXRpb25IYXNoZXIudXBkYXRlKGN1ckNvbnRyLnJlc3BvbnNlSGFzaCk7XG5cbiAgICAvLyBWZXJpZnkgcG93ZXJzIGFuZCBjb21wdXRlIG5leHRDaGFsbGVuZ2VIYXNoXG5cbiAgICAvLyBhd2FpdCB0ZXN0KCk7XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiB0YXUqRzFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJWZXJpZnlpbmcgcG93ZXJzIGluIHRhdSpHMSBzZWN0aW9uXCIpO1xuICAgIGNvbnN0IHJUYXUxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCBcInRhdUcxXCIsICgyICoqIHBvd2VyKSoyLTEsIFswLCAxXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgclRhdTEuUjEsIHJUYXUxLlIyLCBjdXJ2ZS5HMi5nLCBjdXJDb250ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInRhdUcxIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJ2ZS5HMS5nLCByVGF1MS5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiB0YXUqRzEgc2VjdGlvbiBtdXN0IGJlIHRoZSBnZW5lcmF0b3JcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJDb250ci50YXVHMSwgclRhdTEuc2luZ3VsYXJQb2ludHNbMV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlNlY29uZCBlbGVtZW50IG9mIHRhdSpHMSBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gYXdhaXQgdGVzdCgpO1xuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gdGF1KkcyXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiB0YXUqRzIgc2VjdGlvblwiKTtcbiAgICBjb25zdCByVGF1MiA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgXCJ0YXVHMlwiLCAyICoqIHBvd2VyLCBbMCwgMV0sICBsb2dnZXIpO1xuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXJ2ZS5HMS5nLCBjdXJDb250ci50YXVHMSwgclRhdTIuUjEsIHJUYXUyLlIyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwidGF1RzIgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1cnZlLkcyLmcsIHJUYXUyLnNpbmd1bGFyUG9pbnRzWzBdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJGaXJzdCBlbGVtZW50IG9mIHRhdSpHMiBzZWN0aW9uIG11c3QgYmUgdGhlIGdlbmVyYXRvclwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ckNvbnRyLnRhdUcyLCByVGF1Mi5zaW5ndWxhclBvaW50c1sxXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiU2Vjb25kIGVsZW1lbnQgb2YgdGF1KkcyIHNlY3Rpb24gZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiBhbHBoYSp0YXUqRzFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJWZXJpZnlpbmcgcG93ZXJzIGluIGFscGhhKnRhdSpHMSBzZWN0aW9uXCIpO1xuICAgIGNvbnN0IHJBbHBoYVRhdUcxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNCwgXCJHMVwiLCBcImFscGhhdGF1RzFcIiwgMiAqKiBwb3dlciwgWzBdLCBsb2dnZXIpO1xuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCByQWxwaGFUYXVHMS5SMSwgckFscGhhVGF1RzEuUjIsIGN1cnZlLkcyLmcsIGN1ckNvbnRyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiYWxwaGFUYXVHMSBzZWN0aW9uLiBQb3dlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VyQ29udHIuYWxwaGFHMSwgckFscGhhVGF1RzEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgYWxwaGEqdGF1KkcxIHNlY3Rpb24gKGFscGhhKkcxKSBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFZlcmlmeSBTZWN0aW9uIGJldGEqdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiBiZXRhKnRhdSpHMSBzZWN0aW9uXCIpO1xuICAgIGNvbnN0IHJCZXRhVGF1RzEgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsIFwiYmV0YXRhdUcxXCIsIDIgKiogcG93ZXIsIFswXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgckJldGFUYXVHMS5SMSwgckJldGFUYXVHMS5SMiwgY3VydmUuRzIuZywgY3VyQ29udHIudGF1RzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJiZXRhVGF1RzEgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ckNvbnRyLmJldGFHMSwgckJldGFUYXVHMS5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiBiZXRhKnRhdSpHMSBzZWN0aW9uIChiZXRhKkcxKSBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vVmVyaWZ5IEJldGEgRzJcbiAgICBjb25zdCBiZXRhRzIgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbkJldGFHMihsb2dnZXIpO1xuICAgIGlmICghY3VydmUuRzIuZXEoY3VyQ29udHIuYmV0YUcyLCBiZXRhRzIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImJldGFHMiBlbGVtZW50IGluIGJldGFHMiBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBjb25zdCBuZXh0Q29udHJpYnV0aW9uSGFzaCA9IG5leHRDb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICAvLyBDaGVjayB0aGUgbmV4dENoYWxsZW5nZUhhc2hcbiAgICBpZiAocG93ZXIgPT0gY2VyZW1vbnlQb3dlcikge1xuICAgICAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwobmV4dENvbnRyaWJ1dGlvbkhhc2gsY3VyQ29udHIubmV4dENoYWxsZW5nZSkpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkhhc2ggb2YgdGhlIHZhbHVlcyBkb2VzIG5vdCBtYXRjaCB0aGUgbmV4dCBjaGFsbGVuZ2Ugb2YgdGhlIGxhc3QgY29udHJpYnV0b3IgaW4gdGhlIGNvbnRyaWJ1dGlvbnMgc2VjdGlvblwiKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChuZXh0Q29udHJpYnV0aW9uSGFzaCwgXCJOZXh0IGNoYWxsZW5nZSBoYXNoOiBcIikpO1xuXG4gICAgLy8gVmVyaWZ5IFByZXZpb3VzIGNvbnRyaWJ1dGlvbnNcblxuICAgIHByaW50Q29udHJpYnV0aW9uKGN1ckNvbnRyLCBwcmV2Q29udHIpO1xuICAgIGZvciAobGV0IGkgPSBjb250cnMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tpXTtcbiAgICAgICAgY29uc3QgcHJldkNvbnRyID0gIChpPjApID8gY29udHJzW2ktMV0gOiBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlDb250cmlidXRpb24oY3VydmUsIGN1ckNvbnRyLCBwcmV2Q29udHIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHByaW50Q29udHJpYnV0aW9uKGN1ckNvbnRyLCBwcmV2Q29udHIsIGxvZ2dlcik7XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG5cbiAgICBpZiAoKCFzZWN0aW9uc1sxMl0pIHx8ICghc2VjdGlvbnNbMTNdKSB8fCAoIXNlY3Rpb25zWzE0XSkgfHwgKCFzZWN0aW9uc1sxNV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFxuICAgICAgICAgICAgXCJ0aGlzIGZpbGUgZG9lcyBub3QgY29udGFpbiBwaGFzZTIgcHJlY2FsY3VsYXRlZCB2YWx1ZXMuIFBsZWFzZSBydW46IFxcblwiICtcbiAgICAgICAgICAgIFwiICAgc25hcmtqcyBcXFwicG93ZXJzb2Z0YXUgcHJlcGFyZXBoYXNlMlxcXCIgdG8gcHJlcGFyZSB0aGlzIGZpbGUgdG8gYmUgdXNlZCBpbiB0aGUgcGhhc2UyIGNlcmVtb255LlwiXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDIsIDEyLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJlcyA9IGF3YWl0IHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoXCJHMlwiLCAzLCAxMywgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzFcIiwgNCwgMTQsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzFcIiwgNSwgMTUsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUG93ZXJzIG9mIFRhdSBPayFcIik7XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuICAgIGZ1bmN0aW9uIHByaW50Q29udHJpYnV0aW9uKGN1ckNvbnRyLCBwcmV2Q29udHIpIHtcbiAgICAgICAgaWYgKCFsb2dnZXIpIHJldHVybjtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYENvbnRyaWJ1dGlvbiAjJHtjdXJDb250ci5pZH06ICR7Y3VyQ29udHIubmFtZSB8fFwiXCJ9YCk7XG5cbiAgICAgICAgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGN1ckNvbnRyLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2U6IFwiKSk7XG5cbiAgICAgICAgY29uc3QgYnVmZlYgID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyKjYrY3VydmUuRzIuRi5uOCoyKjMpO1xuICAgICAgICB1dGlscy50b1B0YXVQdWJLZXlScHIoYnVmZlYsIDAsIGN1cnZlLCBjdXJDb250ci5rZXksIGZhbHNlKTtcblxuICAgICAgICBjb25zdCByZXNwb25zZUhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgICAgICByZXNwb25zZUhhc2hlci5zZXRQYXJ0aWFsSGFzaChjdXJDb250ci5wYXJ0aWFsSGFzaCk7XG4gICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmVik7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgICAgIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChyZXNwb25zZUhhc2gsIFwiUmVzcG9uc2UgSGFzaDpcIikpO1xuXG4gICAgICAgIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChwcmV2Q29udHIubmV4dENoYWxsZW5nZSwgXCJSZXNwb25zZSBIYXNoOlwiKSk7XG5cbiAgICAgICAgaWYgKGN1ckNvbnRyLnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEJlYWNvbiBnZW5lcmF0b3I6ICR7bWlzYy5ieXRlQXJyYXkyaGV4KGN1ckNvbnRyLmJlYWNvbkhhc2gpfWApO1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYEJlYWNvbiBpdGVyYXRpb25zIEV4cDogJHtjdXJDb250ci5udW1JdGVyYXRpb25zRXhwfWApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbkJldGFHMihsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlLkcyO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBidWZmVXYgPSBuZXcgVWludDhBcnJheShzRyk7XG5cbiAgICAgICAgaWYgKCFzZWN0aW9uc1s2XSkgIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkZpbGUgaGFzIG5vIEJldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBoYXMgbm8gQmV0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNlY3Rpb25zWzZdLmxlbmd0aD4xKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGaWxlIGhhcyBubyBCZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaGFzIG1vcmUgdGhhbiBvbmUgR2V0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgZmQucG9zID0gc2VjdGlvbnNbNl1bMF0ucDtcblxuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRyk7XG4gICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYnVmZik7XG5cbiAgICAgICAgRy50b1JwclVuY29tcHJlc3NlZChidWZmVXYsIDAsIFApO1xuICAgICAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShidWZmVXYpO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKGlkU2VjdGlvbiwgZ3JvdXBOYW1lLCBzZWN0aW9uTmFtZSwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDE8PDE2O1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGNvbnN0IHNpbmd1bGFyUG9pbnRzID0gW107XG5cbiAgICAgICAgbGV0IFIxID0gRy56ZXJvO1xuICAgICAgICBsZXQgUjIgPSBHLnplcm87XG5cbiAgICAgICAgbGV0IGxhc3RCYXNlID0gRy56ZXJvO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHBvaW50cyByZWxhdGlvbnM6ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c30gYCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VzID0gYXdhaXQgZmQucmVhZChuKnNHKTtcblxuICAgICAgICAgICAgY29uc3QgYmFzZXNVID0gYXdhaXQgRy5iYXRjaExFTXRvVShiYXNlcyk7XG4gICAgICAgICAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShiYXNlc1UpO1xuXG4gICAgICAgICAgICBjb25zdCBzY2FsYXJzID0gbWlzYy5nZXRSYW5kb21CeXRlcyg0KihuLTEpKTtcblxuICAgICAgICAgICAgaWYgKGk+MCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0QmFzZSA9IEcuZnJvbVJwckxFTShiYXNlcywgMCk7XG4gICAgICAgICAgICAgICAgY29uc3QgciA9IG1pc2MucmVhZFVJbnQzMkJFKG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCksIDApO1xuXG4gICAgICAgICAgICAgICAgUjEgPSBHLmFkZChSMSwgRy50aW1lc1NjYWxhcihsYXN0QmFzZSwgcikpO1xuICAgICAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIEcudGltZXNTY2FsYXIoZmlyc3RCYXNlLCByKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHIxID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlcy5zbGljZSgwLCAobi0xKSpzRyksIHNjYWxhcnMpO1xuICAgICAgICAgICAgY29uc3QgcjIgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJhc2VzLnNsaWNlKHNHKSwgc2NhbGFycyk7XG5cbiAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIHIxKTtcbiAgICAgICAgICAgIFIyID0gRy5hZGQoUjIsIHIyKTtcblxuICAgICAgICAgICAgbGFzdEJhc2UgPSBHLmZyb21ScHJMRU0oIGJhc2VzLCAobi0xKSpzRyk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxzaW5ndWxhclBvaW50SW5kZXhlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNwID0gc2luZ3VsYXJQb2ludEluZGV4ZXNbal07XG4gICAgICAgICAgICAgICAgaWYgKChzcCA+PWkpICYmIChzcCA8IGkrbikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgUCA9IEcuZnJvbVJwckxFTShiYXNlcywgKHNwLWkpKnNHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBSMTogUjEsXG4gICAgICAgICAgICBSMjogUjIsXG4gICAgICAgICAgICBzaW5ndWxhclBvaW50czogc2luZ3VsYXJQb2ludHNcbiAgICAgICAgfTtcblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoZ05hbWUsIHRhdVNlY3Rpb24sIGxhZ3JhbmdlU2VjdGlvbiwgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgVmVyaWZ5aW5nIHBoYXNlMiBjYWxjdWxhdGVkIHZhbHVlcyAke3NlY3Rpb25OYW1lfS4uLmApO1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ05hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHNlZWQ9IG5ldyBBcnJheSg4KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgc2VlZFtpXSA9IG1pc2MucmVhZFVJbnQzMkJFKG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCksIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgcD0wOyBwPD0gcG93ZXI7IHAgKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHZlcmlmeVBvd2VyKHApO1xuICAgICAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXVTZWN0aW9uID09IDIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHZlcmlmeVBvd2VyKHBvd2VyKzEpO1xuICAgICAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHZlcmlmeVBvd2VyKHApIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgUG93ZXIgJHtwfS4uLmApO1xuICAgICAgICAgICAgY29uc3QgbjhyID0gY3VydmUuRnIubjg7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMiAqKiBwO1xuICAgICAgICAgICAgbGV0IGJ1ZmZfciA9IG5ldyBVaW50MzJBcnJheShuUG9pbnRzKTtcbiAgICAgICAgICAgIGxldCBidWZmRztcblxuICAgICAgICAgICAgbGV0IHJuZyA9IG5ldyBDaGFDaGEoc2VlZCk7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgcmFuZG9tIG51bWJlcnMgUG93ZXJzJHtwfS4uLmApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgocCA9PSBwb3dlcisxKSYmKGkgPT0gblBvaW50cy0xKSkge1xuICAgICAgICAgICAgICAgICAgICBidWZmX3JbaV0gPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZfcltpXSA9IHJuZy5uZXh0VTMyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBidWZmX3IgPSBuZXcgVWludDhBcnJheShidWZmX3IuYnVmZmVyLCBidWZmX3IuYnl0ZU9mZnNldCwgYnVmZl9yLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHJlYWRpbmcgcG9pbnRzIFBvd2VycyR7cH0uLi5gKTtcbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgdGF1U2VjdGlvbik7XG4gICAgICAgICAgICBidWZmRyA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgICAgICBpZiAocCA9PSBwb3dlcisxKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmQucmVhZFRvQnVmZmVyKGJ1ZmZHLCAwLCAoblBvaW50cy0xKSpzRyk7XG4gICAgICAgICAgICAgICAgYnVmZkcuc2V0KGN1cnZlLkcxLnplcm9BZmZpbmUsIChuUG9pbnRzLTEpKnNHKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmQucmVhZFRvQnVmZmVyKGJ1ZmZHLCAwLCBuUG9pbnRzKnNHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc1RhdSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZkcsIGJ1ZmZfciwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiX1wiICsgcCk7XG5cbiAgICAgICAgICAgIGJ1ZmZfciA9IG5ldyBCaWdCdWZmZXIoblBvaW50cyAqIG44cik7XG5cbiAgICAgICAgICAgIHJuZyA9IG5ldyBDaGFDaGEoc2VlZCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmY0ID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgICAgICBjb25zdCBidWZmNFYgPSBuZXcgRGF0YVZpZXcoYnVmZjQuYnVmZmVyKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBDcmVhdGluZyByYW5kb20gbnVtYmVycyBQb3dlcnMke3B9Li4uYCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKChpICE9IG5Qb2ludHMtMSkgfHwgKHAgIT0gcG93ZXIrMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZjRWLnNldFVpbnQzMigwLCBybmcubmV4dFUzMigpLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgYnVmZl9yLnNldChidWZmNCwgaSpuOHIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBiYXRjaFRvTW9udGdvbWVyeSAke3B9Li4uYCk7XG4gICAgICAgICAgICBidWZmX3IgPSBhd2FpdCBjdXJ2ZS5Gci5iYXRjaFRvTW9udGdvbWVyeShidWZmX3IpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBmZnQgJHtwfS4uLmApO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuZmZ0KGJ1ZmZfcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYGJhdGNoRnJvbU1vbnRnb21lcnkgJHtwfS4uLmApO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuYmF0Y2hGcm9tTW9udGdvbWVyeShidWZmX3IpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHJlYWRpbmcgcG9pbnRzIExhZ3JhbmdlJHtwfS4uLmApO1xuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBsYWdyYW5nZVNlY3Rpb24pO1xuICAgICAgICAgICAgZmQucG9zICs9IHNHKigoMiAqKiBwKS0xKTtcbiAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgblBvaW50cypzRyk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNMYWdyYW5nZSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZkcsIGJ1ZmZfciwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiX1wiICsgcCArIFwiX3RyYW5zZm9ybWVkXCIpO1xuXG4gICAgICAgICAgICBpZiAoIUcuZXEocmVzVGF1LCByZXNMYWdyYW5nZSkpIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQaGFzZTIgY2FjbHV0YXRpb24gZG9lcyBub3QgbWF0Y2ggd2l0aCBwb3dlcnMgb2YgdGF1XCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuLypcbiAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgc2VjdGlvbiBpbiB0aGUgZmRUbyBmaWxlIHdpdGggaWQgaWRTZWN0aW9uLlxuICAgIEl0IG11bHRpcGxpZXMgdGhlIHBvaW50cyBpbiBmZEZyb20gYnkgZmlyc3QsIGZpcnN0KmluYywgZmlyc3QqaW5jXjIsIC4uLi5cbiAgICBuUG9pbnQgVGltZXMuXG4gICAgSXQgYWxzbyB1cGRhdGVzIHRoZSBuZXdDaGFsbGVuZ2VIYXNoZXIgd2l0aCB0aGUgbmV3IHBvaW50c1xuKi9cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIGlkU2VjdGlvbiwgY3VydmUsIGdyb3VwTmFtZSwgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAxNjtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgIGNvbnN0IG5Qb2ludHMgPSBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnNpemUgLyBzRztcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucyxpZFNlY3Rpb24gKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIGlkU2VjdGlvbik7XG5cbiAgICBsZXQgdCA9IGZpcnN0O1xuICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQXBwbHlpbmcga2V5OiAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgIGxldCBidWZmO1xuICAgICAgICBidWZmID0gYXdhaXQgZmRPbGQucmVhZChuKnNHKTtcbiAgICAgICAgYnVmZiA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmLCB0LCBpbmMpO1xuICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkT2xkKTtcbn1cblxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZE9sZCwgZmROZXcsIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBmaXJzdCwgaW5jLCBmb3JtYXRPdXQsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKDE8PDIwKSAvIHNHKTsgICAvLyAxMjhNYiBjaHVua3NcbiAgICBsZXQgdCA9IGZpcnN0O1xuICAgIGZvciAobGV0IGk9MCA7IGk8blBvaW50cyA7IGkrPSBjaHVua1NpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBBcHBseWluZyBrZXkgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihuUG9pbnRzLWksIGNodW5rU2l6ZSApO1xuICAgICAgICBjb25zdCBidWZmSW5VID0gYXdhaXQgZmRPbGQucmVhZChuICogc0cpO1xuICAgICAgICBjb25zdCBidWZmSW5MRU0gPSBhd2FpdCBHLmJhdGNoVXRvTEVNKGJ1ZmZJblUpO1xuICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbkxFTSwgdCwgaW5jKTtcbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChmb3JtYXRPdXQgPT0gXCJDT01QUkVTU0VEXCIpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBhd2FpdCBHLmJhdGNoTEVNdG9DKGJ1ZmZPdXRMRU0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZk91dExFTSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2VIYXNoZXIpIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0KTtcbiAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZk91dCk7XG4gICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgIH1cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRm9ybWF0IG9mIHRoZSBvdXRwdXRcbi8vICAgICAgSGFzaCBvZiB0aGUgbGFzdCBjb250cmlidXRpb24gIDY0IEJ5dGVzXG4vLyAgICAgIDJeTioyLTEgVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBCZXRhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICBQdWJsaWMgS2V5XG4vLyAgICAgICAgICBCZXRhRzIgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1KmJldGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMipzcCp0YXUgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip0cCphbHBoYSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnVwKmJldGEgKGNvbXByZXNzZWQpXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjaGFsbGVuZ2VDb250cmlidXRlKGN1cnZlLCBjaGFsbGVuZ2VGaWxlbmFtZSwgcmVzcG9uc2VGaWxlTmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3QgZmRGcm9tID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGNoYWxsZW5nZUZpbGVuYW1lKTtcblxuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjY0KjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5GMi5uNjQqOCoyO1xuICAgIGNvbnN0IGRvbWFpblNpemUgPSAoZmRGcm9tLnRvdGFsU2l6ZSArIHNHMSAtIDY0IC0gc0cyKSAvICg0KnNHMSArIHNHMik7XG4gICAgbGV0IGUgPSBkb21haW5TaXplO1xuICAgIGxldCBwb3dlciA9IDA7XG4gICAgd2hpbGUgKGU+MSkge1xuICAgICAgICBlID0gZSAvMjtcbiAgICAgICAgcG93ZXIgKz0gMTtcbiAgICB9XG5cbiAgICBpZiAoMiAqKiBwb3dlciAhPSBkb21haW5TaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZpbGUgc2l6ZVwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJQb3dlciB0byB0YXUgc2l6ZTogXCIrcG93ZXIpO1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBjb25zdCBmZFRvID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUocmVzcG9uc2VGaWxlTmFtZSk7XG5cbiAgICAvLyBDYWxjdWxhdGUgdGhlIGhhc2hcbiAgICBjb25zdCBjaGFsbGVuZ2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ZmRGcm9tLnRvdGFsU2l6ZTsgaSs9IGZkRnJvbS5wYWdlU2l6ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgY2hhbGxlbmdlICR7aX0vJHtmZEZyb20udG90YWxTaXplfWApO1xuICAgICAgICBjb25zdCBzID0gTWF0aC5taW4oZmRGcm9tLnRvdGFsU2l6ZSAtIGksIGZkRnJvbS5wYWdlU2l6ZSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChzKTtcbiAgICAgICAgY2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICB9XG5cbiAgICBjb25zdCBjbGFpbWVkSGFzaCA9IGF3YWl0IGZkRnJvbS5yZWFkKDY0LCAwKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY2xhaW1lZEhhc2gsIFwiQ2xhaW1lZCBQcmV2aW91cyBSZXNwb25zZSBIYXNoOiBcIikpO1xuXG4gICAgY29uc3QgY2hhbGxlbmdlSGFzaCA9IGNoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY2hhbGxlbmdlSGFzaCwgXCJDdXJyZW50IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG4gICAgY29uc3Qga2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBbXCJ0YXVcIiwgXCJhbHBoYVwiLCBcImJldGFcIl0uZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzFfczogXCIgKyBjdXJ2ZS5HMS50b1N0cmluZyhrZXlba10uZzFfcywgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzFfc3g6IFwiICsgY3VydmUuRzEudG9TdHJpbmcoa2V5W2tdLmcxX3N4LCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGsgKyBcIi5nMl9zcDogXCIgKyBjdXJ2ZS5HMi50b1N0cmluZyhrZXlba10uZzJfc3AsIDE2KSk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcyX3NweDogXCIgKyBjdXJ2ZS5HMi50b1N0cmluZyhrZXlba10uZzJfc3B4LCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiXCIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZUhhc2hlciA9IEJsYWtlMmIoNjQpO1xuXG4gICAgYXdhaXQgZmRUby53cml0ZShjaGFsbGVuZ2VIYXNoKTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUoY2hhbGxlbmdlSGFzaCk7XG5cbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMVwiLCAoMiAqKiBwb3dlcikqMi0xLCBjdXJ2ZS5Gci5vbmUgICAgLCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwidGF1RzFcIiAgICAgLCBsb2dnZXIgKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMlwiLCAoMiAqKiBwb3dlcikgICAgLCBjdXJ2ZS5Gci5vbmUgICAgLCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwidGF1RzJcIiAgICAgLCBsb2dnZXIgKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMVwiLCAoMiAqKiBwb3dlcikgICAgLCBrZXkuYWxwaGEucHJ2S2V5LCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIgKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMVwiLCAoMiAqKiBwb3dlcikgICAgLCBrZXkuYmV0YS5wcnZLZXkgLCBrZXkudGF1LnBydktleSwgXCJDT01QUkVTU0VEXCIsIFwiYmV0YVRhdUcxXCIgLCBsb2dnZXIgKTtcbiAgICBhd2FpdCBhcHBseUtleVRvQ2hhbGxlbmdlU2VjdGlvbihmZEZyb20sIGZkVG8sIHJlc3BvbnNlSGFzaGVyLCBjdXJ2ZSwgXCJHMlwiLCAxICAgICAgICAgICAgICwga2V5LmJldGEucHJ2S2V5ICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImJldGFUYXVHMlwiICwgbG9nZ2VyICk7XG5cbiAgICAvLyBXcml0ZSBhbmQgaGFzaCBrZXlcbiAgICBjb25zdCBidWZmS2V5ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBrZXksIGZhbHNlKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmZLZXkpO1xuICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmS2V5KTtcbiAgICBjb25zdCByZXNwb25zZUhhc2ggPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocmVzcG9uc2VIYXNoLCBcIkNvbnRyaWJ1dGlvbiBSZXNwb25zZSBIYXNoOiBcIikpO1xuXG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuICAgIGF3YWl0IGZkRnJvbS5jbG9zZSgpO1xufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYmVhY29uKG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBuYW1lLCAgYmVhY29uSGFzaFN0cixudW1JdGVyYXRpb25zRXhwLCBsb2dnZXIpIHtcbiAgICBjb25zdCBiZWFjb25IYXNoID0gbWlzYy5oZXgyQnl0ZUFycmF5KGJlYWNvbkhhc2hTdHIpO1xuICAgIGlmICggICAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoID09IDApXG4gICAgICAgIHx8IChiZWFjb25IYXNoLmJ5dGVMZW5ndGgqMiAhPWJlYWNvbkhhc2hTdHIubGVuZ3RoKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgQmVhY29uIEhhc2guIChJdCBtdXN0IGJlIGEgdmFsaWQgaGV4YWRlY2ltYWwgc2VxdWVuY2UpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChiZWFjb25IYXNoLmxlbmd0aD49MjU2KSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIk1heGltdW0gbGVuZ3RoIG9mIGJlYWNvbiBoYXNoIGlzIDI1NSBieXRlc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG51bUl0ZXJhdGlvbnNFeHAgPSBwYXJzZUludChudW1JdGVyYXRpb25zRXhwKTtcbiAgICBpZiAoKG51bUl0ZXJhdGlvbnNFeHA8MTApfHwobnVtSXRlcmF0aW9uc0V4cD42MykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1JdGVyYXRpb25zRXhwLiAoTXVzdCBiZSBiZXR3ZWVuIDEwIGFuZCA2MylcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgaWYgKHBvd2VyICE9IGNlcmVtb255UG93ZXIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiVGhpcyBmaWxlIGhhcyBiZWVuIHJlZHVjZWQuIFlvdSBjYW5ub3QgY29udHJpYnV0ZSBpbnRvIGEgcmVkdWNlZCBmaWxlLlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbnNbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFwiQ29udHJpYnV0aW5nIGludG8gYSBmaWxlIHRoYXQgaGFzIHBoYXNlMiBjYWxjdWxhdGVkLiBZb3Ugd2lsbCBoYXZlIHRvIHByZXBhcmUgcGhhc2UyIGFnYWluLlwiKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdHlwZTogMSwgLy8gQmVhY29uXG4gICAgICAgIG51bUl0ZXJhdGlvbnNFeHA6IG51bUl0ZXJhdGlvbnNFeHAsXG4gICAgICAgIGJlYWNvbkhhc2g6IGJlYWNvbkhhc2hcbiAgICB9O1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5rZXkgPSBhd2FpdCB1dGlscy5rZXlGcm9tQmVhY29uKGN1cnZlLCBsYXN0Q2hhbGxlbmdlSGFzaCwgYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICBjb25zdCByZXNwb25zZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobGFzdENoYWxsZW5nZUhhc2gpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCA3KTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG5cbiAgICBsZXQgZmlyc3RQb2ludHM7XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCBcIkcxXCIsICAoMiAqKiBwb3dlcikgKiAyIC0xLCBjdXJ2ZS5Gci5lKDEpLCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwidGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcxID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCBcIkcyXCIsICAoMiAqKiBwb3dlcikgLCBjdXJ2ZS5Gci5lKDEpLCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwidGF1RzJcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcyID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmFscGhhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmFscGhhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIFwiRzFcIiwgICgyICoqIHBvd2VyKSAsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmJldGFHMSA9IGZpcnN0UG9pbnRzWzBdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNiwgXCJHMlwiLCAgMSwgY3VyQ29udHJpYnV0aW9uLmtleS5iZXRhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImJldGFUYXVHMlwiLCBsb2dnZXIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcyID0gZmlyc3RQb2ludHNbMF07XG5cbiAgICBjdXJDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSByZXNwb25zZUhhc2hlci5nZXRQYXJ0aWFsSGFzaCgpO1xuXG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBjdXJDb250cmlidXRpb24ua2V5LCBmYWxzZSk7XG5cbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGNvbnN0IG5leHRDaGFsbGVuZ2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMlwiLCAzLCAoMiAqKiBwb3dlcikgICAgICAgLCBcInRhdUcyXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNCwgKDIgKiogcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMlwiLCA2LCAxICAgICAgICAgICAgICAgICAgLCBcImJldGFHMlwiLCBsb2dnZXIpO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UgPSBuZXh0Q2hhbGxlbmdlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGN1ckNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cbiAgICBjb250cmlidXRpb25zLnB1c2goY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyhmZE5ldywgY3VydmUsIGNvbnRyaWJ1dGlvbnMpO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGhhc2hSZXNwb25zZTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBOUG9pbnRzLCBmaXJzdCwgaW5jLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmZE9sZC5wb3MgPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnA7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBzZWN0aW9uSWQpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkTmV3LnBvcztcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcigoMTw8MjApIC8gc0cpOyAgIC8vIDEyOE1iIGNodW5rc1xuICAgICAgICBsZXQgdCA9IGZpcnN0O1xuICAgICAgICBmb3IgKGxldCBpPTAgOyBpPE5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYGFwcGx5aW5nIGtleSR7c2VjdGlvbk5hbWV9OiAke2l9LyR7TlBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKE5Qb2ludHMtaSwgY2h1bmtTaXplICk7XG4gICAgICAgICAgICBjb25zdCBidWZmSW4gPSBhd2FpdCBmZE9sZC5yZWFkKG4gKiBzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbiwgdCwgaW5jKTtcblxuICAgICAgICAgICAgLyogQ29kZSB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgdGhlIDJebS0yIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHNlY3Rpb25OYW1lPT0gXCJ0YXVHMVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnogPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICAgICAgICAgICAgYnVmZk91dExFTS5zZXQoYnosIDY0KigoMiAqKiBwb3dlcikgLSAxICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZVdyaXRlID0gZmROZXcud3JpdGUoYnVmZk91dExFTSk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0QyA9IGF3YWl0IEcuYmF0Y2hMRU10b0MoYnVmZk91dExFTSk7XG5cbiAgICAgICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0Qyk7XG4gICAgICAgICAgICBhd2FpdCBwcm9taXNlV3JpdGU7XG4gICAgICAgICAgICBpZiAoaT09MCkgICAvLyBSZXR1cm4gdGhlIDIgZmlyc3QgcG9pbnRzLlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxNYXRoLm1pbigyLCBOUG9pbnRzKTsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChHLmZyb21ScHJMRU0oYnVmZk91dExFTSwgaipzRykpO1xuICAgICAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaFNlY3Rpb24oZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgblBvaW50c0NodW5rID0gTWF0aC5mbG9vcigoMTw8MjQpL3NHKTtcblxuICAgICAgICBjb25zdCBvbGRQb3MgPSBmZFRvLnBvcztcbiAgICAgICAgZmRUby5wb3MgPSBzdGFydFNlY3Rpb25zW3NlY3Rpb25JZF07XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpICs9IG5Qb2ludHNDaHVuaykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMRU0gPSBhd2FpdCBmZFRvLnJlYWQobiAqIHNHKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZlUgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmZMRU0pO1xuXG4gICAgICAgICAgICBuZXh0Q2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShidWZmVSk7XG4gICAgICAgIH1cblxuICAgICAgICBmZFRvLnBvcyA9IG9sZFBvcztcbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdCBvZiB0aGUgb3V0cHV0XG4vLyAgICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NCBCeXRlc1xuLy8gICAgICAyXk4qMi0xIFRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgICAyXk4gVGF1RzIgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBBbHBoYVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQmV0YVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuXG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMga2V5UGFpciBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb250cmlidXRlKG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBuYW1lLCBlbnRyb3B5LCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgfVxuICAgIGlmIChzZWN0aW9uc1sxMl0pIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLndhcm4oXCJXQVJOSU5HOiBDb250cmlidXRpbmcgaW50byBhIGZpbGUgdGhhdCBoYXMgcGhhc2UyIGNhbGN1bGF0ZWQuIFlvdSB3aWxsIGhhdmUgdG8gcHJlcGFyZSBwaGFzZTIgYWdhaW4uXCIpO1xuICAgIH1cbiAgICBjb25zdCBjb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmRPbGQsIGN1cnZlLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge1xuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICB0eXBlOiAwLCAvLyBCZWFjb25cbiAgICB9O1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGg+MCkge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0Q2hhbGxlbmdlSGFzaCA9IHV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaChjdXJ2ZSwgcG93ZXIsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgLy8gR2VuZXJhdGUgYSByYW5kb20ga2V5XG5cblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5rZXkgPSBrZXlQYWlyLmNyZWF0ZVBUYXVLZXkoY3VydmUsIGxhc3RDaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG5cbiAgICBjb25zdCByZXNwb25zZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobGFzdENoYWxsZW5nZUhhc2gpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCA3KTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG5cbiAgICBsZXQgZmlyc3RQb2ludHM7XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCBcIkcxXCIsICAoMiAqKiBwb3dlcikgKiAyIC0xLCBjdXJ2ZS5Gci5lKDEpLCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwidGF1RzFcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMSA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMywgXCJHMlwiLCAgKDIgKiogcG93ZXIpICwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcyXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzIgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIFwiRzFcIiwgICgyICoqIHBvd2VyKSAsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYWxwaGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYWxwaGFUYXVHMVwiICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmFscGhhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIFwiRzFcIiwgICgyICoqIHBvd2VyKSAsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzFcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDYsIFwiRzJcIiwgIDEsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzJcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzIgPSBmaXJzdFBvaW50c1swXTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmdldFBhcnRpYWxIYXNoKCk7XG5cbiAgICBjb25zdCBidWZmS2V5ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG5cbiAgICB1dGlscy50b1B0YXVQdWJLZXlScHIoYnVmZktleSwgMCwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5rZXksIGZhbHNlKTtcblxuICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShuZXcgVWludDhBcnJheShidWZmS2V5KSk7XG4gICAgY29uc3QgaGFzaFJlc3BvbnNlID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goaGFzaFJlc3BvbnNlLCBcIkNvbnRyaWJ1dGlvbiBSZXNwb25zZSBIYXNoIGltcG9ydGVkOiBcIikpO1xuXG4gICAgY29uc3QgbmV4dENoYWxsZW5nZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShoYXNoUmVzcG9uc2UpO1xuXG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgMiwgKDIgKiogcG93ZXIpICogMiAtMSwgXCJ0YXVHMVwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMlwiLCAzLCAoMiAqKiBwb3dlcikgICAgICAgLCBcInRhdUcyXCIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDQsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA1LCAoMiAqKiBwb3dlcikgICAgICAgLCBcImJldGFUYXVHMVwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMlwiLCA2LCAxICAgICAgICAgICAgICAgICAgLCBcImJldGFHMlwiKTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSwgXCJOZXh0IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG4gICAgY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMoZmROZXcsIGN1cnZlLCBjb250cmlidXRpb25zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIHJldHVybiBoYXNoUmVzcG9uc2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgTlBvaW50cywgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGZkT2xkLnBvcyA9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0ucDtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIHNlY3Rpb25JZCk7XG5cbiAgICAgICAgc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdID0gZmROZXcucG9zO1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKCgxPDwyMCkgLyBzRyk7ICAgLy8gMTI4TWIgY2h1bmtzXG4gICAgICAgIGxldCB0ID0gZmlyc3Q7XG4gICAgICAgIGZvciAobGV0IGk9MCA7IGk8TlBvaW50cyA7IGkrPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgcHJvY2Vzc2luZzogJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtOUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oTlBvaW50cy1pLCBjaHVua1NpemUgKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZJbiA9IGF3YWl0IGZkT2xkLnJlYWQobiAqIHNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZPdXRMRU0gPSBhd2FpdCBHLmJhdGNoQXBwbHlLZXkoYnVmZkluLCB0LCBpbmMpO1xuXG4gICAgICAgICAgICAvKiBDb2RlIHRvIHRlc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZG9uJ3QgaGF2ZSB0aGUgMl5tLTIgY29tcG9uZW50XG4gICAgICAgICAgICBpZiAoc2VjdGlvbk5hbWU9PSBcInRhdUcxXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBieiA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICAgICAgICAgICAgICBidWZmT3V0TEVNLnNldChieiwgNjQqKCgyICoqIHBvd2VyKSAtIDEgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICBjb25zdCBwcm9taXNlV3JpdGUgPSBmZE5ldy53cml0ZShidWZmT3V0TEVNKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZPdXRDID0gYXdhaXQgRy5iYXRjaExFTXRvQyhidWZmT3V0TEVNKTtcblxuICAgICAgICAgICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZPdXRDKTtcbiAgICAgICAgICAgIGF3YWl0IHByb21pc2VXcml0ZTtcbiAgICAgICAgICAgIGlmIChpPT0wKSAgIC8vIFJldHVybiB0aGUgMiBmaXJzdCBwb2ludHMuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPE1hdGgubWluKDIsIE5Qb2ludHMpOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIHJlcy5wdXNoKEcuZnJvbVJwckxFTShidWZmT3V0TEVNLCBqKnNHKSk7XG4gICAgICAgICAgICB0ID0gY3VydmUuRnIubXVsKHQsIGN1cnZlLkZyLmV4cChpbmMsIG4pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoU2VjdGlvbihmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgblBvaW50c0NodW5rID0gTWF0aC5mbG9vcigoMTw8MjQpL3NHKTtcblxuICAgICAgICBjb25zdCBvbGRQb3MgPSBmZFRvLnBvcztcbiAgICAgICAgZmRUby5wb3MgPSBzdGFydFNlY3Rpb25zW3NlY3Rpb25JZF07XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpICs9IG5Qb2ludHNDaHVuaykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiZpKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgJHtzZWN0aW9uTmFtZX06IGAgKyBpKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMRU0gPSBhd2FpdCBmZFRvLnJlYWQobiAqIHNHKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZlUgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmZMRU0pO1xuXG4gICAgICAgICAgICBuZXh0Q2hhbGxlbmdlSGFzaGVyLnVwZGF0ZShidWZmVSk7XG4gICAgICAgIH1cblxuICAgICAgICBmZFRvLnBvcyA9IG9sZFBvcztcbiAgICB9XG5cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlUGhhc2UyKG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKG5ld1BUYXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDExKTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDYpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTtcblxuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIDEyLCBcIkcxXCIsIFwidGF1RzFcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIDEzLCBcIkcyXCIsIFwidGF1RzJcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIDE0LCBcIkcxXCIsIFwiYWxwaGFUYXVHMVwiICk7XG4gICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgMTUsIFwiRzFcIiwgXCJiZXRhVGF1RzFcIiApO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgLy8gYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKG5ld1BUYXVGaWxlbmFtZSsgXCIudG1wXCIpO1xuXG4gICAgcmV0dXJuO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24ob2xkU2VjdGlvbklkLCBuZXdTZWN0aW9uSWQsIEdzdHIsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlN0YXJ0aW5nIHNlY3Rpb246IFwiK3NlY3Rpb25OYW1lKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIG5ld1NlY3Rpb25JZCk7XG5cbiAgICAgICAgZm9yIChsZXQgcD0wOyBwPD1wb3dlcjsgcCsrKSB7XG4gICAgICAgICAgICBhd2FpdCBwcm9jZXNzU2VjdGlvblBvd2VyKHApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9sZFNlY3Rpb25JZCA9PSAyKSB7XG4gICAgICAgICAgICBhd2FpdCBwcm9jZXNzU2VjdGlvblBvd2VyKHBvd2VyKzEpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG5cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvblBvd2VyKHApIHtcbiAgICAgICAgICAgIGNvbnN0IG5Qb2ludHMgPSAyICoqIHA7XG4gICAgICAgICAgICBjb25zdCBHID0gY3VydmVbR3N0cl07XG4gICAgICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICAgICAgY29uc3Qgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgY29uc3Qgc0dtaWQgPSBHLkYubjgqMztcblxuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHaW4pO1xuXG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG9sZFNlY3Rpb25JZCk7XG4gICAgICAgICAgICBpZiAoKG9sZFNlY3Rpb25JZCA9PSAyKSYmKHA9PXBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsKG5Qb2ludHMtMSkqc0dpbiApO1xuICAgICAgICAgICAgICAgIGJ1ZmYuc2V0KGN1cnZlLkcxLnplcm9BZmZpbmUsIChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsblBvaW50cypzR2luICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQsIHRydWUpO1xuXG5cbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmxhZ3JhbmdlRXZhbHVhdGlvbnMoYnVmZiwgXCJhZmZpbmVcIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcblxuLypcbiAgICAgICAgICAgIGlmIChwIDw9IGN1cnZlLkZyLnMpIHtcbiAgICAgICAgICAgICAgICBidWZmID0gYXdhaXQgRy5pZmZ0KGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmYpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwID09IGN1cnZlLkZyLnMrMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNtYWxsTSA9IDE8PGN1cnZlLkZyLnM7XG4gICAgICAgICAgICAgICAgbGV0IHQwID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBuZXcgQmlnQnVmZmVyKCBzbWFsbE0gKiBzR21pZCApO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2hpZnRfdG9fc21hbGxfbSA9IEZyLmV4cChGci5zaGlmdCwgc21hbGxNKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvbmVfb3Zlcl9kZW5vbSA9IEZyLmludihGci5zdWIoc2hpZnRfdG9fc21hbGxfbSwgRnIub25lKSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc0ludkFjYyA9IEZyLm9uZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8c21hbGxNOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGkgPSAgYnVmZi5zbGljZShpKnNHaW4sIChpKzEpKnNHaW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bWkgPSBidWZmLnNsaWNlKChpK3NtYWxsTSkqc0dpbiwgKGkrc21hbGxNKzEpKnNHaW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIHQwLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKHRpICwgc2hpZnRfdG9fc21hbGxfbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lX292ZXJfZGVub21cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHQxLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YiggdG1pLCB0aSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnIubXVsKHNJbnZBY2MsIG9uZV9vdmVyX2Rlbm9tKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqc0dtaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHNJbnZBY2MgPSBGci5tdWwoc0ludkFjYywgRnIuc2hpZnRJbnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0MCA9IGF3YWl0IEcuaWZmdCh0MCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDBcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDApO1xuICAgICAgICAgICAgICAgIHQwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0MSA9IGF3YWl0IEcuaWZmdCh0MSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDBcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDEpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VyIHRvbyBiaWdcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG93ZXIgdG8gYmlnXCIpO1xuICAgICAgICAgICAgfVxuKi9cbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB0cnVuY2F0ZShwdGF1RmlsZW5hbWUsIHRlbXBsYXRlLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgZm9yIChsZXQgcD0xOyBwPHBvd2VyOyBwKyspIHtcbiAgICAgICAgYXdhaXQgZ2VuZXJhdGVUcnVuY2F0ZShwKTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVRydW5jYXRlKHApIHtcblxuICAgICAgICBsZXQgc1AgPSBwLnRvU3RyaW5nKCk7XG4gICAgICAgIHdoaWxlIChzUC5sZW5ndGg8Mikgc1AgPSBcIjBcIiArIHNQO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIldyaXRpbmcgUG93ZXI6IFwiK3NQKTtcblxuICAgICAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHRlbXBsYXRlICsgc1AgKyBcIi5wdGF1XCIsIFwicHRhdVwiLCAxLCAxMSk7XG4gICAgICAgIGF3YWl0IHV0aWxzLndyaXRlUFRhdUhlYWRlcihmZE5ldywgY3VydmUsIHAsIGNlcmVtb255UG93ZXIpO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAyLCAoKDIgKiogcCkqMi0xKSAqIHNHMSApOyAvLyB0YWdHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMywgKDIgKiogcCkgKiBzRzIpOyAvLyB0YXVHMlxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCwgKDIgKiogcCkgKiBzRzEpOyAvLyBhbGZhVGF1RzFcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUsICgyICoqIHApICogc0cxKTsgLy8gYmV0YVRhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2LCAgc0cyKTsgLy8gYmV0YVRhdUcyXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTsgLy8gY29udHJpYnV0aW9uc1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTIsICgoMiAqKiAocCsxKSkqMiAtMSkgKiBzRzEpOyAvLyBMX3RhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxMywgKCgyICoqIHApKjIgLTEpICogc0cyKTsgLy8gTF90YXVHMlxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTQsICgoMiAqKiBwKSoyIC0xKSAqIHNHMSk7IC8vIExfYWxmYVRhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxNSwgKCgyICoqIHApKjIgLTEpICogc0cxKTsgLy8gTF9iZXRhVGF1RzFcblxuICAgICAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuICAgIH1cblxuXG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7QmlnQnVmZmVyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGNvbnZlcnQob2xkUHRhdUZpbGVuYW1lLCBuZXdQVGF1RmlsZW5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKG9sZFB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgMTEpO1xuICAgIGF3YWl0IHV0aWxzLndyaXRlUFRhdUhlYWRlcihmZE5ldywgY3VydmUsIHBvd2VyKTtcblxuICAgIC8vIGNvbnN0IGZkVG1wID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUobmV3UFRhdUZpbGVuYW1lKyBcIi50bXBcIik7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDYpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTtcblxuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIDEyLCBcIkcxXCIsIFwidGF1RzFcIiApO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxMyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTUpO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgLy8gYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKG5ld1BUYXVGaWxlbmFtZSsgXCIudG1wXCIpO1xuXG4gICAgcmV0dXJuO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24ob2xkU2VjdGlvbklkLCBuZXdTZWN0aW9uSWQsIEdzdHIsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlN0YXJ0aW5nIHNlY3Rpb246IFwiK3NlY3Rpb25OYW1lKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmROZXcsIG5ld1NlY3Rpb25JZCk7XG5cbiAgICAgICAgY29uc3Qgc2l6ZSA9IHNlY3Rpb25zW25ld1NlY3Rpb25JZF1bMF0uc2l6ZTtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gZmRPbGQucGFnZVNpemU7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgbmV3U2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgcD0wOyBwPHNpemU7IHArPWNodW5rU2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgbCA9IE1hdGgubWluKHNpemUgLXAsIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRPbGQucmVhZChsKTtcbiAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZE9sZCk7XG5cbiAgICAgICAgaWYgKG9sZFNlY3Rpb25JZCA9PSAyKSB7XG4gICAgICAgICAgICBhd2FpdCBwcm9jZXNzU2VjdGlvblBvd2VyKHBvd2VyKzEpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKSB7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMiAqKiBwO1xuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3Qgc0dpbiA9IEcuRi5uOCoyO1xuXG4gICAgICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgICAgIGJ1ZmYgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0dpbik7XG5cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgb2xkU2VjdGlvbklkKTtcbiAgICAgICAgICAgIGlmICgob2xkU2VjdGlvbklkID09IDIpJiYocD09cG93ZXIrMSkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE9sZC5yZWFkVG9CdWZmZXIoYnVmZiwgMCwoblBvaW50cy0xKSpzR2luICk7XG4gICAgICAgICAgICAgICAgYnVmZi5zZXQoY3VydmUuRzEuemVyb0FmZmluZSwgKG5Qb2ludHMtMSkqc0dpbiApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE9sZC5yZWFkVG9CdWZmZXIoYnVmZiwgMCxuUG9pbnRzKnNHaW4gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZE9sZCwgdHJ1ZSk7XG5cbiAgICAgICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmxhZ3JhbmdlRXZhbHVhdGlvbnMoYnVmZiwgXCJhZmZpbmVcIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcblxuLypcbiAgICAgICAgICAgIGlmIChwIDw9IGN1cnZlLkZyLnMpIHtcbiAgICAgICAgICAgICAgICBidWZmID0gYXdhaXQgRy5pZmZ0KGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmYpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwID09IGN1cnZlLkZyLnMrMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNtYWxsTSA9IDE8PGN1cnZlLkZyLnM7XG4gICAgICAgICAgICAgICAgbGV0IHQwID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcbiAgICAgICAgICAgICAgICBsZXQgdDEgPSBuZXcgQmlnQnVmZmVyKCBzbWFsbE0gKiBzR21pZCApO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc2hpZnRfdG9fc21hbGxfbSA9IEZyLmV4cChGci5zaGlmdCwgc21hbGxNKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvbmVfb3Zlcl9kZW5vbSA9IEZyLmludihGci5zdWIoc2hpZnRfdG9fc21hbGxfbSwgRnIub25lKSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgc0ludkFjYyA9IEZyLm9uZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8c21hbGxNOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGklMTAwMDApIGxvZ2dlci5kZWJ1Zyhgc2VjdGlvbk5hbWUgcHJlcGFyZSBMIGNhbGM6ICR7c2VjdGlvbk5hbWV9LCAke2l9LyR7c21hbGxNfWApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0aSA9ICBidWZmLnNsaWNlKGkqc0dpbiwgKGkrMSkqc0dpbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtaSA9IGJ1ZmYuc2xpY2UoKGkrc21hbGxNKSpzR2luLCAoaStzbWFsbE0rMSkqc0dpbik7XG5cbiAgICAgICAgICAgICAgICAgICAgdDAuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcuc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIodGkgLCBzaGlmdF90b19zbWFsbF9tKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVfb3Zlcl9kZW5vbVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqc0dtaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgdDEuc2V0KFxuICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcuc3ViKCB0bWksIHRpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGci5tdWwoc0ludkFjYywgb25lX292ZXJfZGVub20pXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSpzR21pZFxuICAgICAgICAgICAgICAgICAgICApO1xuXG5cbiAgICAgICAgICAgICAgICAgICAgc0ludkFjYyA9IEZyLm11bChzSW52QWNjLCBGci5zaGlmdEludik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHQwID0gYXdhaXQgRy5pZmZ0KHQwLCBcImphY29iaWFuXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIiB0MFwiKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZSh0MCk7XG4gICAgICAgICAgICAgICAgdDAgPSBudWxsO1xuICAgICAgICAgICAgICAgIHQxID0gYXdhaXQgRy5pZmZ0KHQxLCBcImphY29iaWFuXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIiB0MVwiKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZSh0MSk7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUG93ZXIgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlciB0byBiaWdcIik7XG4gICAgICAgICAgICB9XG4qL1xuICAgICAgICB9XG5cblxuICAgIH1cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHsgc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZCB9IGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZXhwb3J0SnNvbihwVGF1RmlsZW5hbWUsIHZlcmJvc2UpIHtcbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcblxuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmQsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IHBUYXUgPSB7fTtcbiAgICBwVGF1LnEgPSBjdXJ2ZS5xO1xuICAgIHBUYXUucG93ZXIgPSBwb3dlcjtcbiAgICBwVGF1LmNvbnRyaWJ1dGlvbnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIHBUYXUudGF1RzEgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDIsIFwiRzFcIiwgKDIgKiogcG93ZXIpKjIgLTEsIFwidGF1RzFcIik7XG4gICAgcFRhdS50YXVHMiA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oMywgXCJHMlwiLCAoMiAqKiBwb3dlciksIFwidGF1RzJcIik7XG4gICAgcFRhdS5hbHBoYVRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbig0LCBcIkcxXCIsICgyICoqIHBvd2VyKSwgXCJhbHBoYVRhdUcxXCIpO1xuICAgIHBUYXUuYmV0YVRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbig1LCBcIkcxXCIsICgyICoqIHBvd2VyKSwgXCJiZXRhVGF1RzFcIik7XG4gICAgcFRhdS5iZXRhRzIgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDYsIFwiRzJcIiwgMSwgXCJiZXRhRzJcIik7XG5cbiAgICBwVGF1LmxUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDEyLCBcIkcxXCIsIFwibFRhdUcxXCIpO1xuICAgIHBUYXUubFRhdUcyID0gYXdhaXQgZXhwb3J0TGFncmFuZ2UoMTMsIFwiRzJcIiwgXCJsVGF1RzJcIik7XG4gICAgcFRhdS5sQWxwaGFUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDE0LCBcIkcxXCIsIFwibEFscGhhVGF1RzJcIik7XG4gICAgcFRhdS5sQmV0YVRhdUcxID0gYXdhaXQgZXhwb3J0TGFncmFuZ2UoMTUsIFwiRzFcIiwgXCJsQmV0YVRhdUcyXCIpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcblxuICAgIHJldHVybiBzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkKGN1cnZlLkZyLCBwVGF1KTtcblxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBleHBvcnRTZWN0aW9uKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKCh2ZXJib3NlKSYmaSYmKGklMTAwMDAgPT0gMCkpIGNvbnNvbGUubG9nKGAke3NlY3Rpb25OYW1lfTogYCArIGkpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cpO1xuICAgICAgICAgICAgcmVzLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0TGFncmFuZ2Uoc2VjdGlvbklkLCBncm91cE5hbWUsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIHNlY3Rpb25JZCk7XG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9cG93ZXI7IHArKykge1xuICAgICAgICAgICAgaWYgKHZlcmJvc2UpIGNvbnNvbGUubG9nKGAke3NlY3Rpb25OYW1lfTogUG93ZXI6ICR7cH1gKTtcbiAgICAgICAgICAgIHJlc1twXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9ICgyICoqIHApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgodmVyYm9zZSkmJmkmJihpJTEwMDAwID09IDApKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKTtcbiAgICAgICAgICAgICAgICByZXNbcF0ucHVzaChHLmZyb21ScHJMRU0oYnVmZiwgMCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbn1cblxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQge2RlZmF1bHQgYXMgbmV3QWNjdW11bGF0b3J9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X25ldy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydENoYWxsZW5nZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfZXhwb3J0X2NoYWxsZW5nZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGltcG9ydFJlc3BvbnNlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9pbXBvcnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnl9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNoYWxsZW5nZUNvbnRyaWJ1dGV9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X2NoYWxsZW5nZV9jb250cmlidXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYmVhY29ufSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9iZWFjb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb250cmlidXRlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jb250cmlidXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJlcGFyZVBoYXNlMn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHRydW5jYXRlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV90cnVuY2F0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNvbnZlcnR9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X2NvbnZlcnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRKc29ufSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9leHBvcnRfanNvbi5qc1wiO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcjFjc1ByaW50KHIxY3MsIHN5bXMsIGxvZ2dlcikge1xuICAgIGZvciAobGV0IGk9MDsgaTxyMWNzLmNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHByaW50Q29zdHJhaW50KHIxY3MuY29uc3RyYWludHNbaV0pO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwcmludENvc3RyYWludChjKSB7XG4gICAgICAgIGNvbnN0IGxjMnN0ciA9IChsYykgPT4ge1xuICAgICAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGxjKTtcbiAgICAgICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IHN5bXMudmFySWR4Mk5hbWVba107XG4gICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gXCJvbmVcIikgbmFtZSA9IFwiMVwiO1xuXG4gICAgICAgICAgICAgICAgbGV0IHZzID0gcjFjcy5jdXJ2ZS5Gci50b1N0cmluZyhsY1trXSk7XG4gICAgICAgICAgICAgICAgaWYgKHZzID09IFwiMVwiKSB2cyA9IFwiXCI7ICAvLyBEbyBub3Qgc2hvdyBvbmVzXG4gICAgICAgICAgICAgICAgaWYgKHZzID09IFwiLTFcIikgdnMgPSBcIi1cIjsgIC8vIERvIG5vdCBzaG93IG9uZXNcbiAgICAgICAgICAgICAgICBpZiAoKFMhPVwiXCIpJiYodnNbMF0hPVwiLVwiKSkgdnMgPSBcIitcIit2cztcbiAgICAgICAgICAgICAgICBpZiAoUyE9XCJcIikgdnMgPSBcIiBcIit2cztcbiAgICAgICAgICAgICAgICBTPSBTICsgdnMgICArIG5hbWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBTO1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCBTID0gYFsgJHtsYzJzdHIoY1swXSl9IF0gKiBbICR7bGMyc3RyKGNbMV0pfSBdIC0gWyAke2xjMnN0cihjWzJdKX0gXSA9IDBgO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhTKTtcbiAgICB9XG5cbn1cbiIsIi8qIGdsb2JhbCBCaWdJbnQgKi9cbmNvbnN0IGhleExlbiA9IFsgMCwgMSwgMiwgMiwgMywgMywgMywgMywgNCAsNCAsNCAsNCAsNCAsNCAsNCAsNF07XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcocywgcmFkaXgpIHtcbiAgICBpZiAoKCFyYWRpeCl8fChyYWRpeD09MTApKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQocyk7XG4gICAgfSBlbHNlIGlmIChyYWRpeD09MTYpIHtcbiAgICAgICAgaWYgKHMuc2xpY2UoMCwyKSA9PSBcIjB4XCIpIHtcbiAgICAgICAgICAgIHJldHVybiBCaWdJbnQocyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KFwiMHhcIitzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuY29uc3QgZSA9IGZyb21TdHJpbmc7XG5cbmZ1bmN0aW9uIGZyb21BcnJheShhLCByYWRpeCkge1xuICAgIGxldCBhY2MgPUJpZ0ludCgwKTtcbiAgICByYWRpeCA9IEJpZ0ludChyYWRpeCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYWNjID0gYWNjKnJhZGl4ICsgQmlnSW50KGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNihhKSB7XG4gICAgY29uc3QgYVMgPWEudG9TdHJpbmcoMTYpO1xuICAgIHJldHVybiAoYVMubGVuZ3RoLTEpKjQgK2hleExlbltwYXJzZUludChhU1swXSwgMTYpXTtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQ0KGEpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KDApO1xufVxuXG5mdW5jdGlvbiBpc1plcm8kMShhKSB7XG4gICAgcmV0dXJuICFhO1xufVxuXG5mdW5jdGlvbiBzaGlmdExlZnQoYSwgbikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPDwgQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBzaGlmdFJpZ2h0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4+IEJpZ0ludChuKTtcbn1cblxuY29uc3Qgc2hsID0gc2hpZnRMZWZ0O1xuY29uc3Qgc2hyID0gc2hpZnRSaWdodDtcblxuZnVuY3Rpb24gaXNPZGQkNShhKSB7XG4gICAgcmV0dXJuIChCaWdJbnQoYSkgJiBCaWdJbnQoMSkpID09IEJpZ0ludCgxKTtcbn1cblxuXG5mdW5jdGlvbiBuYWYobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgQmlnSW50KDEpKSB7XG4gICAgICAgICAgICBjb25zdCB6ID0gMiAtIE51bWJlcihFICUgQmlnSW50KDQpKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKCB6ICk7XG4gICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gQmlnSW50KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmZ1bmN0aW9uIGJpdHMobikge1xuICAgIGxldCBFID0gQmlnSW50KG4pO1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIHdoaWxlIChFKSB7XG4gICAgICAgIGlmIChFICYgQmlnSW50KDEpKSB7XG4gICAgICAgICAgICByZXMucHVzaCgxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgIH1cbiAgICAgICAgRSA9IEUgPj4gQmlnSW50KDEpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiB0b051bWJlciQxKHMpIHtcbiAgICBpZiAocz5CaWdJbnQoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIgKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICB9XG4gICAgcmV0dXJuIE51bWJlcihzKTtcbn1cblxuZnVuY3Rpb24gdG9BcnJheShzLCByYWRpeCkge1xuICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgIGxldCByZW0gPSBCaWdJbnQocyk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIHdoaWxlIChyZW0pIHtcbiAgICAgICAgcmVzLnVuc2hpZnQoIE51bWJlcihyZW0gJSByYWRpeCkpO1xuICAgICAgICByZW0gPSByZW0gLyByYWRpeDtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKyBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIHN1YihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAtIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbmVnKGEpIHtcbiAgICByZXR1cm4gLUJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gbXVsKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICogQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMihhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gcG93KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZXhwJDEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiogQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBhYnMkMShhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PSAwID8gQmlnSW50KGEpIDogLUJpZ0ludChhKTtcbn1cblxuZnVuY3Rpb24gZGl2KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIC8gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBtb2QoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID09IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbmVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICE9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbHQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPCBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGd0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPD0gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBnZXEoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBiYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBib3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfCBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGJ4b3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgXiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGxhbmQoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgJiYgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsb3IoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgfHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsbm90KGEpIHtcbiAgICByZXR1cm4gIUJpZ0ludChhKTtcbn1cblxuLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIHRvUnByTEUoYnVmZiwgbywgZSwgbjgpIHtcbiAgICBjb25zdCBzID0gXCIwMDAwMDAwXCIgKyBlLnRvU3RyaW5nKDE2KTtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQgKyBvLCBuOC80KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2W2ldID0gcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KTtcbiAgICBmb3IgKGxldCBpPWw7IGk8di5sZW5ndGg7IGkrKykgdltpXSA9IDA7XG4gICAgZm9yIChsZXQgaT12Lmxlbmd0aCo0OyBpPG44OyBpKyspIGJ1ZmZbaV0gPSB0b051bWJlciQxKGJhbmQoc2hpZnRSaWdodChlLCBpKjgpLCAweEZGKSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckJFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgpO1xuICAgIGNvbnN0IGwgPSAoKChzLmxlbmd0aC03KSo0IC0gMSkgPj4gNSkrMTsgICAgLy8gTnVtYmVyIG9mIDMyYml0IHdvcmRzO1xuICAgIGZvciAobGV0IGk9MDsgaTxsOyBpKyspIHYuc2V0VWludDMyKG44LWkqNCAtNCwgcGFyc2VJbnQocy5zdWJzdHJpbmcocy5sZW5ndGgtOCppLTgsIHMubGVuZ3RoLTgqaSksIDE2KSwgZmFsc2UpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80LWw7IGkrKykgdltpXSA9IDA7XG59XG5cbi8vIFBhc2VzIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gZnJvbVJwckxFKGJ1ZmYsIG8sIG44KSB7XG4gICAgbjggPSBuOCB8fCBidWZmLmJ5dGVMZW5ndGg7XG4gICAgbyA9IG8gfHwgMDtcbiAgICBjb25zdCB2ID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQgKyBvLCBuOC80KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIHYuZm9yRWFjaCggKGNoLGkpID0+IGFbYS5sZW5ndGgtaS0xXSA9IGNoLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LFwiMFwiKSApO1xuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJCRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgpO1xuICAgIGNvbnN0IGEgPSBuZXcgQXJyYXkobjgvNCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG44LzQ7IGkrKykge1xuICAgICAgICBhW2ldID0gdi5nZXRVaW50MzIoaSo0LCBmYWxzZSkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGZyb21TdHJpbmcoYS5qb2luKFwiXCIpLCAxNik7XG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgcmV0dXJuIGEudG9TdHJpbmcocmFkaXgpO1xufVxuXG5mdW5jdGlvbiB0b0xFQnVmZihhKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KGEpIC0gMSkgLyA4KSArMSk7XG4gICAgdG9ScHJMRShidWZmLCAwLCBhLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHJldHVybiBidWZmO1xufVxuXG5jb25zdCB6ZXJvID0gZSgwKTtcbmNvbnN0IG9uZSA9IGUoMSk7XG5cbnZhciBfU2NhbGFyID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhYnM6IGFicyQxLFxuICAgIGFkZDogYWRkLFxuICAgIGJhbmQ6IGJhbmQsXG4gICAgYml0TGVuZ3RoOiBiaXRMZW5ndGgkNixcbiAgICBiaXRzOiBiaXRzLFxuICAgIGJvcjogYm9yLFxuICAgIGJ4b3I6IGJ4b3IsXG4gICAgZGl2OiBkaXYsXG4gICAgZTogZSxcbiAgICBlcTogZXEsXG4gICAgZXhwOiBleHAkMSxcbiAgICBmcm9tQXJyYXk6IGZyb21BcnJheSxcbiAgICBmcm9tUnByQkU6IGZyb21ScHJCRSxcbiAgICBmcm9tUnByTEU6IGZyb21ScHJMRSxcbiAgICBmcm9tU3RyaW5nOiBmcm9tU3RyaW5nLFxuICAgIGdlcTogZ2VxLFxuICAgIGd0OiBndCxcbiAgICBpc05lZ2F0aXZlOiBpc05lZ2F0aXZlJDQsXG4gICAgaXNPZGQ6IGlzT2RkJDUsXG4gICAgaXNaZXJvOiBpc1plcm8kMSxcbiAgICBsYW5kOiBsYW5kLFxuICAgIGxlcTogbGVxLFxuICAgIGxub3Q6IGxub3QsXG4gICAgbG9yOiBsb3IsXG4gICAgbHQ6IGx0LFxuICAgIG1vZDogbW9kLFxuICAgIG11bDogbXVsLFxuICAgIG5hZjogbmFmLFxuICAgIG5lZzogbmVnLFxuICAgIG5lcTogbmVxLFxuICAgIG9uZTogb25lLFxuICAgIHBvdzogcG93LFxuICAgIHNoaWZ0TGVmdDogc2hpZnRMZWZ0LFxuICAgIHNoaWZ0UmlnaHQ6IHNoaWZ0UmlnaHQsXG4gICAgc2hsOiBzaGwsXG4gICAgc2hyOiBzaHIsXG4gICAgc3F1YXJlOiBzcXVhcmUkMixcbiAgICBzdWI6IHN1YixcbiAgICB0b0FycmF5OiB0b0FycmF5LFxuICAgIHRvTEVCdWZmOiB0b0xFQnVmZixcbiAgICB0b051bWJlcjogdG9OdW1iZXIkMSxcbiAgICB0b1JwckJFOiB0b1JwckJFLFxuICAgIHRvUnByTEU6IHRvUnByTEUsXG4gICAgdG9TdHJpbmc6IHRvU3RyaW5nLFxuICAgIHplcm86IHplcm9cbn0pO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuICAgIFRoaXMgbGlicmFyeSBkb2VzIG9wZXJhdGlvbnMgb24gcG9seW5vbWlhbHMgd2l0aCBjb2VmZmljaWVudHMgaW4gYSBmaWVsZCBGLlxuXG4gICAgQSBwb2x5bm9taWFsIFAoeCkgPSBwMCArIHAxICogeCArIHAyICogeF4yICsgLi4uICsgcG4gKiB4Xm4gIGlzIHJlcHJlc2VudGVkXG4gICAgYnkgdGhlIGFycmF5IFsgcDAsIHAxLCBwMiwgLi4uICwgcG4gXS5cbiAqL1xuXG5jbGFzcyBQb2xGaWVsZCB7XG4gICAgY29uc3RydWN0b3IgKEYpIHtcbiAgICAgICAgdGhpcy5GID0gRjtcblxuICAgICAgICBsZXQgcmVtID0gRi5zcXJ0X3Q7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3M7XG5cbiAgICAgICAgY29uc3QgZml2ZSA9IHRoaXMuRi5hZGQodGhpcy5GLmFkZCh0aGlzLkYudHdvLCB0aGlzLkYudHdvKSwgdGhpcy5GLm9uZSk7XG5cbiAgICAgICAgdGhpcy53ID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud2kgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53W3NdID0gdGhpcy5GLnBvdyhmaXZlLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuLyogICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBuID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290cy5wdXNoKHJvb3RzaSk7XG4gICAgICAgIH1cbiAgICAqL1xuICAgICAgICB0aGlzLl9zZXRSb290cygxNSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgaWYgKG4gPiB0aGlzLkYuc3FydF9zKSBuID0gdGhpcy5zO1xuICAgICAgICBmb3IgKGxldCBpPW47IChpPj0wKSAmJiAoIXRoaXMucm9vdHNbaV0pOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IG5yb290cyA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShucm9vdHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5yb290czsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5hZGQoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgY29uc3QgbSA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLnN1YihhW2ldIHx8IHRoaXMuRi56ZXJvLCBiW2ldIHx8IHRoaXMuRi56ZXJvKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIocCwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi56ZXJvKSkgcmV0dXJuIFtdO1xuICAgICAgICBpZiAodGhpcy5GLmVxKGIsIHRoaXMuRi5vbmUpKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5tdWwocFtpXSwgYik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGEubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihiLCBhWzBdKTtcbiAgICAgICAgaWYgKGIubGVuZ3RoID09IDEpIHJldHVybiB0aGlzLm11bFNjYWxhcihhLCBiWzBdKTtcblxuICAgICAgICBpZiAoYi5sZW5ndGggPiBhLmxlbmd0aCkge1xuICAgICAgICAgICAgW2IsIGFdID0gW2EsIGJdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChiLmxlbmd0aCA8PSAyKSB8fCAoYi5sZW5ndGggPCBsb2cyJDIoYS5sZW5ndGgpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsTm9ybWFsKGEsYik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWxGRlQoYSxiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG11bE5vcm1hbChhLCBiKSB7XG4gICAgICAgIGxldCByZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlcyA9IHRoaXMuYWRkKHJlcywgdGhpcy5zY2FsZVgodGhpcy5tdWxTY2FsYXIoYSwgYltpXSksIGkpICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBtdWxGRlQoYSxiKSB7XG4gICAgICAgIGNvbnN0IGxvbmdlc3ROID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgYml0c1Jlc3VsdCA9IGxvZzIkMihsb25nZXN0Ti0xKSsyO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzUmVzdWx0KTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzUmVzdWx0O1xuICAgICAgICBjb25zdCBlYSA9IHRoaXMuZXh0ZW5kKGEsbSk7XG4gICAgICAgIGNvbnN0IGViID0gdGhpcy5leHRlbmQoYixtKTtcblxuICAgICAgICBjb25zdCB0YSA9IF9fZmZ0JDEodGhpcywgZWEsIGJpdHNSZXN1bHQsIDAsIDEpO1xuICAgICAgICBjb25zdCB0YiA9IF9fZmZ0JDEodGhpcywgZWIsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHRyZXMgPSBuZXcgQXJyYXkobSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgdHJlc1tpXSA9IHRoaXMuRi5tdWwodGFbaV0sIHRiW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0JDEodGhpcywgdHJlcywgYml0c1Jlc3VsdCwgMCwgMSk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXNuKTtcbiAgICB9XG5cblxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsYSk7XG4gICAgfVxuXG4gICAgc2NhbGVYKHAsIG4pIHtcbiAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgIHJldHVybiBwO1xuICAgICAgICB9IGVsc2UgaWYgKG4+MCkge1xuICAgICAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShuKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgICAgIHJldHVybiB6LmNvbmNhdChwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICgtbiA+PSBwLmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICAgICAgcmV0dXJuIHAuc2xpY2UoLW4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXZhbDIocCwgeCkge1xuICAgICAgICBsZXQgdiA9IHRoaXMuRi56ZXJvO1xuICAgICAgICBsZXQgaXggPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdiA9IHRoaXMuRi5hZGQodiwgdGhpcy5GLm11bChwW2ldLCBpeCkpO1xuICAgICAgICAgICAgaXggPSB0aGlzLkYubXVsKGl4LCB4KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBldmFsdWF0ZShwLHgpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBGLnplcm87XG4gICAgICAgIGNvbnN0IG0gPSB0aGlzLl9uZXh0MlBvd2VyKHAubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcblxuICAgICAgICByZXR1cm4gX2V2YWwoZXAsIHgsIDAsIDEsIG0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIF9ldmFsKHAsIHgsIG9mZnNldCwgc3RlcCwgbikge1xuICAgICAgICAgICAgaWYgKG49PTEpIHJldHVybiBwW29mZnNldF07XG4gICAgICAgICAgICBjb25zdCBuZXdYID0gRi5zcXVhcmUoeCk7XG4gICAgICAgICAgICBjb25zdCByZXM9IEYuYWRkKFxuICAgICAgICAgICAgICAgIF9ldmFsKHAsIG5ld1gsIG9mZnNldCwgc3RlcCA8PCAxLCBuID4+IDEpLFxuICAgICAgICAgICAgICAgIEYubXVsKFxuICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQrc3RlcCAsIHN0ZXAgPDwgMSwgbiA+PiAxKSkpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhZ3JhbmdlKHBvaW50cykge1xuICAgICAgICBsZXQgcm9vdHMgPSBbdGhpcy5GLm9uZV07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJvb3RzID0gdGhpcy5tdWwocm9vdHMsIFt0aGlzLkYubmVnKHBvaW50c1tpXVswXSksIHRoaXMuRi5vbmVdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBzdW0gPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG1wb2wgPSB0aGlzLnJ1ZmZpbmkocm9vdHMsIHBvaW50c1tpXVswXSk7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IgPVxuICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5pbnYodGhpcy5ldmFsdWF0ZShtcG9sLCBwb2ludHNbaV1bMF0pKSxcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW2ldWzFdKTtcbiAgICAgICAgICAgIG1wb2wgPSB0aGlzLm11bFNjYWxhcihtcG9sLCBmYWN0b3IpO1xuICAgICAgICAgICAgc3VtID0gdGhpcy5hZGQoc3VtLCBtcG9sKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgIH1cblxuXG4gICAgZmZ0KHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0JDEodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZmdDIocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQyKHRoaXMsIGVwLCBiaXRzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGlmZnQocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0JDEodGhpcywgZXAsIGJpdHMsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuXG4gICAgaWZmdDIocCkge1xuXG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgZXAgPSB0aGlzLmV4dGVuZChwLCBtKTtcbiAgICAgICAgX19iaXRSZXZlcnNlKGVwLCBiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG5cbiAgICAgICAgY29uc3QgdHdvaW52bSA9IHRoaXMuRi5pbnYoIHRoaXMuRi5tdWxTY2FsYXIodGhpcy5GLm9uZSwgbSkgKTtcbiAgICAgICAgY29uc3QgcmVzbiA9IG5ldyBBcnJheShtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG07IGkrKykge1xuICAgICAgICAgICAgcmVzbltpXSA9IHRoaXMuRi5tdWwocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuXG4gICAgfVxuXG4gICAgX2ZmdChwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgICAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAobj09MSkge1xuICAgICAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICAgICAgY29uc3QgcDEgPSB0aGlzLl9mZnQocGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgICAgIGNvbnN0IHAyID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICAgICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgICAgIGxldCBtPSB0aGlzLkYub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICAgICAgb3V0W2ldID0gdGhpcy5GLmFkZChwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgb3V0W2krbmRpdjJdID0gdGhpcy5GLnN1YihwMVtpXSwgdGhpcy5GLm11bChtLCBwMltpXSkpO1xuICAgICAgICAgICAgbSA9IHRoaXMuRi5tdWwobSwgdGhpcy53W2JpdHNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgZXh0ZW5kKHAsIGUpIHtcbiAgICAgICAgaWYgKGUgPT0gcC5sZW5ndGgpIHJldHVybiBwO1xuICAgICAgICBjb25zdCB6ID0gbmV3IEFycmF5KGUtcC5sZW5ndGgpLmZpbGwodGhpcy5GLnplcm8pO1xuXG4gICAgICAgIHJldHVybiBwLmNvbmNhdCh6KTtcbiAgICB9XG5cbiAgICByZWR1Y2UocCkge1xuICAgICAgICBpZiAocC5sZW5ndGggPT0gMCkgcmV0dXJuIHA7XG4gICAgICAgIGlmICghIHRoaXMuRi5lcShwW3AubGVuZ3RoLTFdLCB0aGlzLkYuemVybykgKSByZXR1cm4gcDtcbiAgICAgICAgbGV0IGk9cC5sZW5ndGgtMTtcbiAgICAgICAgd2hpbGUoIGk+MCAmJiB0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pICkgaS0tO1xuICAgICAgICByZXR1cm4gcC5zbGljZSgwLCBpKzEpO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcGEgPSB0aGlzLnJlZHVjZShhKTtcbiAgICAgICAgY29uc3QgcGIgPSB0aGlzLnJlZHVjZShiKTtcblxuICAgICAgICBpZiAocGEubGVuZ3RoICE9IHBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBhW2ldLCBwYltpXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJ1ZmZpbmkocCwgcikge1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkocC5sZW5ndGgtMSk7XG4gICAgICAgIHJlc1tyZXMubGVuZ3RoLTFdID0gcFtwLmxlbmd0aC0xXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHJlcy5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKHRoaXMuRi5tdWwocmVzW2krMV0sIHIpLCBwW2krMV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgX25leHQyUG93ZXIodikge1xuICAgICAgICB2LS07XG4gICAgICAgIHYgfD0gdiA+PiAxO1xuICAgICAgICB2IHw9IHYgPj4gMjtcbiAgICAgICAgdiB8PSB2ID4+IDQ7XG4gICAgICAgIHYgfD0gdiA+PiA4O1xuICAgICAgICB2IHw9IHYgPj4gMTY7XG4gICAgICAgIHYrKztcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcocCkge1xuICAgICAgICBjb25zdCBhcCA9IHRoaXMubm9ybWFsaXplKHApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9YXAubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLkYuZXEocFtpXSwgdGhpcy5GLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIFMgKz0gXCIgKyBcIjtcbiAgICAgICAgICAgICAgICBTID0gUyArIHBbaV0udG9TdHJpbmcoMTApO1xuICAgICAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcInhcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGk+MSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgUyA9IFMgKyBcIl5cIiAraTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUztcbiAgICB9XG5cbiAgICBub3JtYWxpemUocCkge1xuICAgICAgICBjb25zdCByZXMgID0gbmV3IEFycmF5KHAubGVuZ3RoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5ub3JtYWxpemUocFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIF9yZWNpcHJvY2FsKHAsIGJpdHMpIHtcbiAgICAgICAgY29uc3QgayA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKGs9PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHRoaXMuRi5pbnYocFswXSkgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBucCA9IHRoaXMuc2NhbGVYKHAsIC1rLzIpO1xuICAgICAgICBjb25zdCBxID0gdGhpcy5fcmVjaXByb2NhbChucCwgYml0cy0xKTtcbiAgICAgICAgY29uc3QgYSA9IHRoaXMuc2NhbGVYKHRoaXMuZG91YmxlKHEpLCAzKmsvMi0yKTtcbiAgICAgICAgY29uc3QgYiA9IHRoaXMubXVsKCB0aGlzLnNxdWFyZShxKSwgcCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVYKHRoaXMuc3ViKGEsYiksICAgLShrLTIpKTtcbiAgICB9XG5cbiAgICAvLyBkaXZpZGVzIHhebSAvIHZcbiAgICBfZGl2MihtLCB2KSB7XG4gICAgICAgIGNvbnN0IGtiaXRzID0gbG9nMiQyKHYubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHNjYWxlViA9IGsgLSB2Lmxlbmd0aDtcblxuICAgICAgICAvLyByZWMgPSB4XihrIC0gMikgLyB2KiB4XnNjYWxlViA9PlxuICAgICAgICAvLyByZWMgPSB4XihrLTItc2NhbGVWKS8gdlxuICAgICAgICAvL1xuICAgICAgICAvLyByZXMgPSB4Xm0vdiA9IHheKG0gKyAoMiprLTIgLSBzY2FsZVYpIC0gKDIqay0yIC0gc2NhbGVWKSkgL3YgPT5cbiAgICAgICAgLy8gcmVzID0gcmVjICogeF4obSAtICgyKmstMiAtIHNjYWxlVikpID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAyKmsgKyAyICsgc2NhbGVWKVxuXG4gICAgICAgIGNvbnN0IHJlYyA9IHRoaXMuX3JlY2lwcm9jYWwodGhpcy5zY2FsZVgodiwgc2NhbGVWKSwga2JpdHMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnNjYWxlWChyZWMsIG0gLSAyKmsgKyAyICsgc2NhbGVWKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGRpdihfdSwgX3YpIHtcbiAgICAgICAgaWYgKF91Lmxlbmd0aCA8IF92Lmxlbmd0aCkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMihfdi5sZW5ndGgtMSkrMTtcbiAgICAgICAgY29uc3QgayA9IDEgPDwga2JpdHM7XG5cbiAgICAgICAgY29uc3QgdSA9IHRoaXMuc2NhbGVYKF91LCBrLV92Lmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLnNjYWxlWChfdiwgay1fdi5sZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IG4gPSB2Lmxlbmd0aC0xO1xuICAgICAgICBsZXQgbSA9IHUubGVuZ3RoLTE7XG5cbiAgICAgICAgY29uc3QgcyA9IHRoaXMuX3JlY2lwcm9jYWwodiwga2JpdHMpO1xuICAgICAgICBsZXQgdDtcbiAgICAgICAgaWYgKG0+MipuKSB7XG4gICAgICAgICAgICB0ID0gdGhpcy5zdWIodGhpcy5zY2FsZVgoW3RoaXMuRi5vbmVdLCAyKm4pLCB0aGlzLm11bChzLCB2KSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcSA9IFtdO1xuICAgICAgICBsZXQgcmVtID0gdTtcbiAgICAgICAgbGV0IHVzLCB1dDtcbiAgICAgICAgbGV0IGZpbmlzaCA9IGZhbHNlO1xuXG4gICAgICAgIHdoaWxlICghZmluaXNoKSB7XG4gICAgICAgICAgICB1cyA9IHRoaXMubXVsKHJlbSwgcyk7XG4gICAgICAgICAgICBxID0gdGhpcy5hZGQocSwgdGhpcy5zY2FsZVgodXMsIC0yKm4pKTtcblxuICAgICAgICAgICAgaWYgKCBtID4gMipuICkge1xuICAgICAgICAgICAgICAgIHV0ID0gdGhpcy5tdWwocmVtLCB0KTtcbiAgICAgICAgICAgICAgICByZW0gPSB0aGlzLnNjYWxlWCh1dCwgLTIqbik7XG4gICAgICAgICAgICAgICAgbSA9IHJlbS5sZW5ndGgtMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmluaXNoID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBxO1xuICAgIH1cblxuXG4gICAgLy8gcmV0dXJucyB0aGUgaXRoIG50aC1yb290IG9mIG9uZVxuICAgIG9uZVJvb3QobiwgaSkge1xuICAgICAgICBsZXQgbmJpdHMgPSBsb2cyJDIobi0xKSsxO1xuICAgICAgICBsZXQgcmVzID0gdGhpcy5GLm9uZTtcbiAgICAgICAgbGV0IHIgPSBpO1xuXG4gICAgICAgIGlmKGk+PW4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkdpdmVuICdpJyBzaG91bGQgYmUgbG93ZXIgdGhhbiAnbidcIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoMTw8bmJpdHMgIT09IG4pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgSW50ZXJuYWwgZXJybHI6ICR7bn0gc2hvdWxkIGVxdWFsICR7MTw8bmJpdHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBpZiAociAmIDEgPT0gMSkge1xuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMuRi5tdWwocmVzLCB0aGlzLndbbmJpdHNdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHIgPSByID4+IDE7XG4gICAgICAgICAgICBuYml0cyAtLTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGNvbXB1dGVWYW5pc2hpbmdQb2xpbm9taWFsKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0cztcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5zdWIodGhpcy5GLnBvdyh0LCBtKSwgdGhpcy5GLm9uZSk7XG4gICAgfVxuXG4gICAgZXZhbHVhdGVMYWdyYW5nZVBvbHlub21pYWxzKGJpdHMsIHQpIHtcbiAgICAgICAgY29uc3QgbT0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCB0bSA9IHRoaXMuRi5wb3codCwgbSk7XG4gICAgICAgIGNvbnN0IHU9IG5ldyBBcnJheShtKS5maWxsKHRoaXMuRi56ZXJvKTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG9tZWdhID0gdGhpcy53W2JpdHNdO1xuXG4gICAgICAgIGlmICh0aGlzLkYuZXEodG0sIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLkYuZXEodGhpcy5yb290c1tiaXRzXVswXSx0KSkgeyAvLyBpLmUuLCB0IGVxdWFscyBvbWVnYV5pXG4gICAgICAgICAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB6ID0gdGhpcy5GLnN1Yih0bSwgdGhpcy5GLm9uZSk7XG4gICAgICAgIC8vICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5wb3codGhpcy5GLnR3b2ludiwgbSkpO1xuICAgICAgICBsZXQgbCA9IHRoaXMuRi5tdWwoeiwgIHRoaXMuRi5pbnYodGhpcy5GLmUobSkpKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHVbaV0gPSB0aGlzLkYubXVsKGwsIHRoaXMuRi5pbnYodGhpcy5GLnN1Yih0LHRoaXMucm9vdHNbYml0c11baV0pKSk7XG4gICAgICAgICAgICBsID0gdGhpcy5GLm11bChsLCBvbWVnYSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdTtcbiAgICB9XG5cbiAgICBsb2cyKFYpIHtcbiAgICAgICAgcmV0dXJuIGxvZzIkMihWKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvZzIkMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMsIG9mZnNldCwgc3RlcCkge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsW29mZnNldF0gXTtcbiAgICB9IGVsc2UgaWYgKG49PTIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFBGLkYuYWRkKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSksXG4gICAgICAgICAgICBQRi5GLnN1YihwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQkMShQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cblxuZnVuY3Rpb24gX19mZnQyKFBGLCBwYWxsLCBiaXRzKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbMF0gXTtcbiAgICB9XG5cbiAgICBjb25zdCBuZGl2MiA9IG4gPj4gMTtcbiAgICBjb25zdCBwMSA9IF9fZmZ0MihQRiwgcGFsbC5zbGljZSgwLCBuZGl2MiksIGJpdHMtMSk7XG4gICAgY29uc3QgcDIgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UobmRpdjIpLCBiaXRzLTEpO1xuXG4gICAgY29uc3Qgb3V0ID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgb3V0W2ldID0gUEYuRi5hZGQocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5GLnN1YihwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuY29uc3QgX3JldlRhYmxlJDEgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZSQxW2ldID0gX3JldlNsb3ckMShpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3ckMShpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gcmV2KGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIF9yZXZUYWJsZSQxW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxWyhpZHggPj4+IDE2KSAmIDB4RkZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxWyhpZHggPj4+IDgpICYgMHhGRl0gPDwgMTYpIHxcbiAgICAgICAgKF9yZXZUYWJsZSQxW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuZnVuY3Rpb24gX19iaXRSZXZlcnNlKHAsIGJpdHMpIHtcbiAgICBmb3IgKGxldCBrPTA7IGs8cC5sZW5ndGg7IGsrKykge1xuICAgICAgICBjb25zdCByID0gcmV2KGssIGJpdHMpO1xuICAgICAgICBpZiAocj5rKSB7XG4gICAgICAgICAgICBjb25zdCB0bXA9IHBba107XG4gICAgICAgICAgICBwW2tdID0gcFtyXTtcbiAgICAgICAgICAgIHBbcl0gPSB0bXA7XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5cbmZ1bmN0aW9uIG11bFNjYWxhcihGLCBiYXNlLCBlKSB7XG4gICAgbGV0IHJlcztcblxuICAgIGlmIChpc1plcm8kMShlKSkgcmV0dXJuIEYuemVybztcblxuICAgIGNvbnN0IG4gPSBuYWYoZSk7XG5cbiAgICBpZiAobltuLmxlbmd0aC0xXSA9PSAxKSB7XG4gICAgICAgIHJlcyA9IGJhc2U7XG4gICAgfSBlbHNlIGlmIChuW24ubGVuZ3RoLTFdID09IC0xKSB7XG4gICAgICAgIHJlcyA9IEYubmVnKGJhc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmxhdWQgTkFGXCIpO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5kb3VibGUocmVzKTtcblxuICAgICAgICBpZiAobltpXSA9PSAxKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGJhc2UpO1xuICAgICAgICB9IGVsc2UgaWYgKG5baV0gPT0gLTEpIHtcbiAgICAgICAgICAgIHJlcyA9IEYuc3ViKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbi8qXG5leHBvcnRzLm11bFNjYWxhciA9IChGLCBiYXNlLCBlKSA9PntcbiAgICBsZXQgcmVzID0gRi56ZXJvO1xuICAgIGxldCByZW0gPSBiaWdJbnQoZSk7XG4gICAgbGV0IGV4cCA9IGJhc2U7XG5cbiAgICB3aGlsZSAoISByZW0uZXEoYmlnSW50Lnplcm8pKSB7XG4gICAgICAgIGlmIChyZW0uYW5kKGJpZ0ludC5vbmUpLmVxKGJpZ0ludC5vbmUpKSB7XG4gICAgICAgICAgICByZXMgPSBGLmFkZChyZXMsIGV4cCk7XG4gICAgICAgIH1cbiAgICAgICAgZXhwID0gRi5kb3VibGUoZXhwKTtcbiAgICAgICAgcmVtID0gcmVtLnNoaWZ0UmlnaHQoMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn07XG4qL1xuXG5cbmZ1bmN0aW9uIGV4cChGLCBiYXNlLCBlKSB7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLm9uZTtcblxuICAgIGNvbnN0IG4gPSBiaXRzKGUpO1xuXG4gICAgaWYgKG4ubGVuZ3RoPT0wKSByZXR1cm4gRi5vbmU7XG5cbiAgICBsZXQgcmVzID0gYmFzZTtcblxuICAgIGZvciAobGV0IGk9bi5sZW5ndGgtMjsgaT49MDsgaS0tKSB7XG5cbiAgICAgICAgcmVzID0gRi5zcXVhcmUocmVzKTtcblxuICAgICAgICBpZiAobltpXSkge1xuICAgICAgICAgICAgcmVzID0gRi5tdWwocmVzLCBiYXNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIENoZWNrIGhlcmU6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTIvNjg1LnBkZlxuXG5mdW5jdGlvbiBidWlsZFNxcnQgKEYpIHtcbiAgICBpZiAoKEYubSAlIDIpID09IDEpIHtcbiAgICAgICAgaWYgKGVxKG1vZChGLnAsIDQpLCAxICkpIHtcbiAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCA4KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVxKG1vZChGLnAsIDE2KSwgMSApKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsZzdfbXVsbGVyKEYpO1xuICAgICAgICAgICAgICAgICAgICBhbGc1X3RvbmVsbGlTaGFua3MoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcShtb2QoRi5wLCAxNiksIDkgKSkge1xuICAgICAgICAgICAgICAgICAgICBhbGc0X2tvbmcoRik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChlcShtb2QoRi5wLCA4KSwgNSApKSB7XG4gICAgICAgICAgICAgICAgYWxnM19hdGtpbihGKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmllbGQgd2l0aG90IHNxcnRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgNCksIDMgKSkge1xuICAgICAgICAgICAgYWxnMl9zaGFua3MoRik7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBwbTJtb2Q0ID0gbW9kKHBvdyhGLnAsIEYubS8yKSwgNCk7XG4gICAgICAgIGlmIChwbTJtb2Q0ID09IDEpIHtcbiAgICAgICAgICAgIGFsZzEwX2FkaihGKTtcbiAgICAgICAgfSBlbHNlIGlmIChwbTJtb2Q0ID09IDMpIHtcbiAgICAgICAgICAgIGFsZzlfYWRqKEYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYWxnOF9jb21wbGV4KEYpO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cblxuZnVuY3Rpb24gYWxnNV90b25lbGxpU2hhbmtzKEYpIHtcbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG5cbiAgICBGLnNxcnRfcyA9IDA7XG4gICAgRi5zcXJ0X3QgPSBzdWIoRi5zcXJ0X3EsIDEpO1xuXG4gICAgd2hpbGUgKCFpc09kZCQ1KEYuc3FydF90KSkge1xuICAgICAgICBGLnNxcnRfcyA9IEYuc3FydF9zICsgMTtcbiAgICAgICAgRi5zcXJ0X3QgPSBkaXYoRi5zcXJ0X3QsIDIpO1xuICAgIH1cblxuICAgIGxldCBjMCA9IEYub25lO1xuXG4gICAgd2hpbGUgKEYuZXEoYzAsIEYub25lKSkge1xuICAgICAgICBjb25zdCBjID0gRi5yYW5kb20oKTtcbiAgICAgICAgRi5zcXJ0X3ogPSBGLnBvdyhjLCBGLnNxcnRfdCk7XG4gICAgICAgIGMwID0gRi5wb3coRi5zcXJ0X3osIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgfVxuXG4gICAgRi5zcXJ0X3RtMWQyID0gZGl2KHN1YihGLnNxcnRfdCwgMSksMik7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGNvbnN0IEY9dGhpcztcbiAgICAgICAgaWYgKEYuaXNaZXJvKGEpKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBsZXQgdyA9IEYucG93KGEsIEYuc3FydF90bTFkMik7XG4gICAgICAgIGNvbnN0IGEwID0gRi5wb3coIEYubXVsKEYuc3F1YXJlKHcpLCBhKSwgMiAqKiAoRi5zcXJ0X3MtMSkgKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IHYgPSBGLnNxcnRfcztcbiAgICAgICAgbGV0IHggPSBGLm11bChhLCB3KTtcbiAgICAgICAgbGV0IGIgPSBGLm11bCh4LCB3KTtcbiAgICAgICAgbGV0IHogPSBGLnNxcnRfejtcbiAgICAgICAgd2hpbGUgKCFGLmVxKGIsIEYub25lKSkge1xuICAgICAgICAgICAgbGV0IGIyayA9IEYuc3F1YXJlKGIpO1xuICAgICAgICAgICAgbGV0IGs9MTtcbiAgICAgICAgICAgIHdoaWxlICghRi5lcShiMmssIEYub25lKSkge1xuICAgICAgICAgICAgICAgIGIyayA9IEYuc3F1YXJlKGIyayk7XG4gICAgICAgICAgICAgICAgaysrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB3ID0gejtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx2LWstMTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdyA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeiA9IEYuc3F1YXJlKHcpO1xuICAgICAgICAgICAgYiA9IEYubXVsKGIsIHopO1xuICAgICAgICAgICAgeCA9IEYubXVsKHgsIHcpO1xuICAgICAgICAgICAgdiA9IGs7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnNF9rb25nKEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgNCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnM19hdGtpbihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDMgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzJfc2hhbmtzKEYpIHtcblxuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tKTtcbiAgICBGLnNxcnRfZTEgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIC8vIFRlc3QgdGhhdCBoYXZlIHNvbHV0aW9uXG4gICAgICAgIGNvbnN0IGExID0gdGhpcy5wb3coYSwgdGhpcy5zcXJ0X2UxKTtcblxuICAgICAgICBjb25zdCBhMCA9IHRoaXMubXVsKHRoaXMuc3F1YXJlKGExKSwgYSk7XG5cbiAgICAgICAgaWYgKCB0aGlzLmVxKGEwLCB0aGlzLm5lZ29uZSkgKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCB4ID0gdGhpcy5tdWwoYTEsIGEpO1xuXG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzEwX2FkaihGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDEwIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGc5X2FkaihGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0vMik7XG4gICAgRi5zcXJ0X2UzNCA9IGRpdiggc3ViKEYuc3FydF9xLCAzKSAsIDQpO1xuICAgIEYuc3FydF9lMTIgPSBkaXYoIHN1YihGLnNxcnRfcSwgMSkgLCAyKTtcblxuICAgIEYuZnJvYmVuaXVzID0gZnVuY3Rpb24obiwgeCkge1xuICAgICAgICBpZiAoKG4lMikgPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIEYuY29uanVnYXRlKHgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGID0gdGhpcztcbiAgICAgICAgY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgY29uc3QgYWxmYSA9IEYubXVsKEYuc3F1YXJlKGExKSwgYSk7XG4gICAgICAgIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgeDAgPSBGLm11bChhMSwgYSk7XG4gICAgICAgIGxldCB4O1xuICAgICAgICBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHggPSBGLm11bCh4MCwgW0YuRi56ZXJvLCBGLkYub25lXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgIHggPSBGLm11bChiLCB4MCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEYuZ2VxKHgsIEYuemVybykgPyB4IDogRi5uZWcoeCk7XG4gICAgfTtcbn1cblxuXG5mdW5jdGlvbiBhbGc4X2NvbXBsZXgoRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyA4IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBxdWFydGVyUm91bmQoc3QsIGEsIGIsIGMsIGQpIHtcblxuICAgIHN0W2FdID0gKHN0W2FdICsgc3RbYl0pID4+PiAwO1xuICAgIHN0W2RdID0gKHN0W2RdIF4gc3RbYV0pID4+PiAwO1xuICAgIHN0W2RdID0gKChzdFtkXSA8PCAxNikgfCAoKHN0W2RdPj4+MTYpICYgMHhGRkZGKSkgPj4+IDA7XG5cbiAgICBzdFtjXSA9IChzdFtjXSArIHN0W2RdKSA+Pj4gMDtcbiAgICBzdFtiXSA9IChzdFtiXSBeIHN0W2NdKSA+Pj4gMDtcbiAgICBzdFtiXSA9ICgoc3RbYl0gPDwgMTIpIHwgKChzdFtiXT4+PjIwKSAmIDB4RkZGKSkgPj4+IDA7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgOCkgfCAoKHN0W2RdPj4+MjQpICYgMHhGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDcpIHwgKChzdFtiXT4+PjI1KSAmIDB4N0YpKSA+Pj4gMDtcbn1cblxuZnVuY3Rpb24gZG91YmxlUm91bmQoc3QpIHtcbiAgICBxdWFydGVyUm91bmQoc3QsIDAsIDQsIDgsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMSwgNSwgOSwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAyLCA2LDEwLDE0KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDMsIDcsMTEsMTUpO1xuXG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA1LDEwLDE1KTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDYsMTEsMTIpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNywgOCwxMyk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA0LCA5LDE0KTtcbn1cblxuY2xhc3MgQ2hhQ2hhIHtcblxuICAgIGNvbnN0cnVjdG9yKHNlZWQpIHtcbiAgICAgICAgc2VlZCA9IHNlZWQgfHwgWzAsMCwwLDAsMCwwLDAsMF07XG4gICAgICAgIHRoaXMuc3RhdGUgPSBbXG4gICAgICAgICAgICAweDYxNzA3ODY1LFxuICAgICAgICAgICAgMHgzMzIwNjQ2RSxcbiAgICAgICAgICAgIDB4Nzk2MjJEMzIsXG4gICAgICAgICAgICAweDZCMjA2NTc0LFxuICAgICAgICAgICAgc2VlZFswXSxcbiAgICAgICAgICAgIHNlZWRbMV0sXG4gICAgICAgICAgICBzZWVkWzJdLFxuICAgICAgICAgICAgc2VlZFszXSxcbiAgICAgICAgICAgIHNlZWRbNF0sXG4gICAgICAgICAgICBzZWVkWzVdLFxuICAgICAgICAgICAgc2VlZFs2XSxcbiAgICAgICAgICAgIHNlZWRbN10sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuaWR4ID0gMTY7XG4gICAgICAgIHRoaXMuYnVmZiA9IG5ldyBBcnJheSgxNik7XG4gICAgfVxuXG4gICAgbmV4dFUzMigpIHtcbiAgICAgICAgaWYgKHRoaXMuaWR4ID09IDE2KSB0aGlzLnVwZGF0ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5idWZmW3RoaXMuaWR4KytdO1xuICAgIH1cblxuICAgIG5leHRVNjQoKSB7XG4gICAgICAgIHJldHVybiBhZGQobXVsKHRoaXMubmV4dFUzMigpLCAweDEwMDAwMDAwMCksIHRoaXMubmV4dFUzMigpKTtcbiAgICB9XG5cbiAgICBuZXh0Qm9vbCgpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5leHRVMzIoKSAmIDEpID09IDE7XG4gICAgfVxuXG4gICAgdXBkYXRlKCkge1xuICAgICAgICAvLyBDb3B5IHRoZSBzdGF0ZVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykgdGhpcy5idWZmW2ldID0gdGhpcy5zdGF0ZVtpXTtcblxuICAgICAgICAvLyBBcHBseSB0aGUgcm91bmRzXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSBkb3VibGVSb3VuZCh0aGlzLmJ1ZmYpO1xuXG4gICAgICAgIC8vIEFkZCB0byB0aGUgaW5pdGlhbFxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykgdGhpcy5idWZmW2ldID0gKHRoaXMuYnVmZltpXSArIHRoaXMuc3RhdGVbaV0pID4+PiAwO1xuXG4gICAgICAgIHRoaXMuaWR4ID0gMDtcblxuICAgICAgICB0aGlzLnN0YXRlWzEyXSA9ICh0aGlzLnN0YXRlWzEyXSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxMl0gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzEzXSA9ICh0aGlzLnN0YXRlWzEzXSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxM10gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzE0XSA9ICh0aGlzLnN0YXRlWzE0XSArIDEpID4+PiAwO1xuICAgICAgICBpZiAodGhpcy5zdGF0ZVsxNF0gIT0gMCkgcmV0dXJuO1xuICAgICAgICB0aGlzLnN0YXRlWzE1XSA9ICh0aGlzLnN0YXRlWzE1XSArIDEpID4+PiAwO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2V0UmFuZG9tQnl0ZXMobikge1xuICAgIGxldCBhcnJheSA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgIHsgLy8gQnJvd3NlclxuICAgICAgICBpZiAodHlwZW9mIGdsb2JhbFRoaXMuY3J5cHRvICE9PSBcInVuZGVmaW5lZFwiKSB7IC8vIFN1cHBvcnRlZFxuICAgICAgICAgICAgZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGFycmF5KTtcbiAgICAgICAgfSBlbHNlIHsgLy8gZmFsbGJhY2tcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IChNYXRoLnJhbmRvbSgpKjQyOTQ5NjcyOTYpPj4+MDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbVNlZWQoKSB7XG4gICAgY29uc3QgYXJyID0gZ2V0UmFuZG9tQnl0ZXMoMzIpO1xuICAgIGNvbnN0IGFyclYgPSBuZXcgVWludDMyQXJyYXkoYXJyLmJ1ZmZlcik7XG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgc2VlZC5wdXNoKGFyclZbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gc2VlZDtcbn1cblxubGV0IHRocmVhZFJuZyA9IG51bGw7XG5cbmZ1bmN0aW9uIGdldFRocmVhZFJuZygpIHtcbiAgICBpZiAodGhyZWFkUm5nKSByZXR1cm4gdGhyZWFkUm5nO1xuICAgIHRocmVhZFJuZyA9IG5ldyBDaGFDaGEoZ2V0UmFuZG9tU2VlZCgpKTtcbiAgICByZXR1cm4gdGhyZWFkUm5nO1xufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKlxuICAgIFRoaXMgbGlicmFyeSBkb2VzIG9wZXJhdGlvbnMgb24gcG9seW5vbWlhbHMgd2l0aCBjb2VmZmljaWVudHMgaW4gYSBmaWVsZCBGLlxuXG4gICAgQSBwb2x5bm9taWFsIFAoeCkgPSBwMCArIHAxICogeCArIHAyICogeF4yICsgLi4uICsgcG4gKiB4Xm4gIGlzIHJlcHJlc2VudGVkXG4gICAgYnkgdGhlIGFycmF5IFsgcDAsIHAxLCBwMiwgLi4uICwgcG4gXS5cbiAqL1xuXG5jbGFzcyBGRlQge1xuICAgIGNvbnN0cnVjdG9yIChHLCBGLCBvcE11bEdGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuRyA9IEc7XG4gICAgICAgIHRoaXMub3BNdWxHRiA9IG9wTXVsR0Y7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90IHx8IEYudDtcbiAgICAgICAgbGV0IHMgPSBGLnNxcnRfcyB8fCBGLnM7XG5cbiAgICAgICAgbGV0IG5xciA9IEYub25lO1xuICAgICAgICB3aGlsZSAoRi5lcShGLnBvdyhucXIsIEYuaGFsZiksIEYub25lKSkgbnFyID0gRi5hZGQobnFyLCBGLm9uZSk7XG5cbiAgICAgICAgdGhpcy53ID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud2kgPSBuZXcgQXJyYXkocysxKTtcbiAgICAgICAgdGhpcy53W3NdID0gdGhpcy5GLnBvdyhucXIsIHJlbSk7XG4gICAgICAgIHRoaXMud2lbc10gPSB0aGlzLkYuaW52KHRoaXMud1tzXSk7XG5cbiAgICAgICAgbGV0IG49cy0xO1xuICAgICAgICB3aGlsZSAobj49MCkge1xuICAgICAgICAgICAgdGhpcy53W25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndbbisxXSk7XG4gICAgICAgICAgICB0aGlzLndpW25dID0gdGhpcy5GLnNxdWFyZSh0aGlzLndpW24rMV0pO1xuICAgICAgICAgICAgbi0tO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnJvb3RzID0gW107XG4gICAgICAgIC8qXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwxNjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBuID0gMSA8PCBpO1xuICAgICAgICAgICAgY29uc3Qgcm9vdHNpID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG47IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290cy5wdXNoKHJvb3RzaSk7XG4gICAgICAgIH1cbiAgICAgICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoTWF0aC5taW4ocywgMTUpKTtcbiAgICB9XG5cbiAgICBfc2V0Um9vdHMobikge1xuICAgICAgICBmb3IgKGxldCBpPW47IChpPj0wKSAmJiAoIXRoaXMucm9vdHNbaV0pOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCByID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IG5yb290cyA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShucm9vdHMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5yb290czsgaisrKSB7XG4gICAgICAgICAgICAgICAgcm9vdHNpW2pdID0gcjtcbiAgICAgICAgICAgICAgICByID0gdGhpcy5GLm11bChyLCB0aGlzLndbaV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJvb3RzW2ldID0gcm9vdHNpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmZ0KHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChwLmxlbmd0aCAhPSBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaXplIG11c3QgYmUgbXVsdGlwbGUgb2YgMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCh0aGlzLCBwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDEocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChwLmxlbmd0aCAhPSBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaXplIG11c3QgYmUgbXVsdGlwbGUgb2YgMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXMgPSAgX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLm9wTXVsR0YocmVzWyhtLWkpJW1dLCB0d29pbnZtKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXNuO1xuICAgIH1cblxuXG59XG5cbmZ1bmN0aW9uIGxvZzIkMSggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0KFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5HLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRy5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQsIHN0ZXAqMik7XG4gICAgY29uc3QgcDIgPSBfX2ZmdChQRiwgcGFsbCwgYml0cy0xLCBvZmZzZXQrc3RlcCwgc3RlcCoyKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkcuYWRkKHAxW2ldLCBQRi5vcE11bEdGKHAyW2ldLCBQRi5yb290c1tiaXRzXVtpXSkpO1xuICAgICAgICBvdXRbaStuZGl2Ml0gPSBQRi5HLnN1YihwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG4vKiBnbG9iYWwgQmlnSW50ICovXG5cbmNsYXNzIFpxRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKHApIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjFcIjtcbiAgICAgICAgdGhpcy5vbmUgPSBCaWdJbnQoMSk7XG4gICAgICAgIHRoaXMuemVybyA9IEJpZ0ludCgwKTtcbiAgICAgICAgdGhpcy5wID0gQmlnSW50KHApO1xuICAgICAgICB0aGlzLm0gPSAxO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMucC10aGlzLm9uZTtcbiAgICAgICAgdGhpcy50d28gPSBCaWdJbnQoMik7XG4gICAgICAgIHRoaXMuaGFsZiA9IHRoaXMucCA+PiB0aGlzLm9uZTtcbiAgICAgICAgdGhpcy5iaXRMZW5ndGggPSBiaXRMZW5ndGgkNih0aGlzLnApO1xuICAgICAgICB0aGlzLm1hc2sgPSAodGhpcy5vbmUgPDwgQmlnSW50KHRoaXMuYml0TGVuZ3RoKSkgLSB0aGlzLm9uZTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IoKHRoaXMuYml0TGVuZ3RoIC0gMSkgLyA2NCkrMTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICAgICAgdGhpcy5SID0gdGhpcy5lKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLm42NCo2NCkpO1xuICAgICAgICB0aGlzLlJpID0gdGhpcy5pbnYodGhpcy5SKTtcblxuICAgICAgICBjb25zdCBlID0gdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB3aGlsZSAoIXRoaXMuZXEociwgdGhpcy5uZWdvbmUpKSB7XG4gICAgICAgICAgICB0aGlzLm5xciA9IHRoaXMubnFyICsgdGhpcy5vbmU7XG4gICAgICAgICAgICByID0gdGhpcy5wb3codGhpcy5ucXIsIGUpO1xuICAgICAgICB9XG5cblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICB0aGlzLnQgPSB0aGlzLm5lZ29uZTtcblxuICAgICAgICB3aGlsZSAoKHRoaXMudCAmIHRoaXMub25lKSA9PSB0aGlzLnplcm8pIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucyArIDE7XG4gICAgICAgICAgICB0aGlzLnQgPSB0aGlzLnQgPj4gdGhpcy5vbmU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5xcl90b190ID0gdGhpcy5wb3codGhpcy5ucXIsIHRoaXMudCk7XG5cbiAgICAgICAgYnVpbGRTcXJ0KHRoaXMpO1xuXG4gICAgICAgIHRoaXMuRkZUID0gbmV3IEZGVCh0aGlzLCB0aGlzLCB0aGlzLm11bC5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLmZmdCA9IHRoaXMuRkZULmZmdC5iaW5kKHRoaXMuRkZUKTtcbiAgICAgICAgdGhpcy5pZmZ0ID0gdGhpcy5GRlQuaWZmdC5iaW5kKHRoaXMuRkZUKTtcbiAgICAgICAgdGhpcy53ID0gdGhpcy5GRlQudztcbiAgICAgICAgdGhpcy53aSA9IHRoaXMuRkZULndpOyBcbiAgICBcbiAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMuc3F1YXJlKHRoaXMubnFyKTtcbiAgICAgICAgdGhpcy5rID0gdGhpcy5leHAodGhpcy5ucXIsIDIqKnRoaXMucyk7XG4gICAgfVxuXG4gICAgZShhLGIpIHtcbiAgICAgICAgbGV0IHJlcztcbiAgICAgICAgaWYgKCFiKSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYj09MTYpIHtcbiAgICAgICAgICAgIHJlcyA9IEJpZ0ludChcIjB4XCIrYSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcyA8IDApIHtcbiAgICAgICAgICAgIGxldCBucmVzID0gLXJlcztcbiAgICAgICAgICAgIGlmIChucmVzID49IHRoaXMucCkgbnJlcyA9IG5yZXMgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbnJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAocmVzPj0gdGhpcy5wKSA/IHJlcyV0aGlzLnAgOiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgKyBiO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhID49IGIpID8gYS1iIDogdGhpcy5wLWIrYTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gYSA/IHRoaXMucC1hIDogYTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEqYikldGhpcy5wO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBzKSB7XG4gICAgICAgIHJldHVybiAoYmFzZSAqIHRoaXMuZShzKSkgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIChhKmEpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGE9PWI7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEhPWI7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPCBiYjtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA+IGJiO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFhID0gKGEgPiB0aGlzLmhhbGYpID8gYSAtIHRoaXMucCA6IGE7XG4gICAgICAgIGNvbnN0IGJiID0gKGIgPiB0aGlzLmhhbGYpID8gYiAtIHRoaXMucCA6IGI7XG4gICAgICAgIHJldHVybiBhYSA8PSBiYjtcbiAgICB9XG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPj0gYmI7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBpZGl2KGEsIGIpIHtcbiAgICAgICAgaWYgKCFiKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuICAgICAgICByZXR1cm4gYSAvIGI7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgaWYgKCFhKSB0aHJvdyBuZXcgRXJyb3IoXCJEaXZpc2lvbiBieSB6ZXJvXCIpO1xuXG4gICAgICAgIGxldCB0ID0gdGhpcy56ZXJvO1xuICAgICAgICBsZXQgciA9IHRoaXMucDtcbiAgICAgICAgbGV0IG5ld3QgPSB0aGlzLm9uZTtcbiAgICAgICAgbGV0IG5ld3IgPSBhICUgdGhpcy5wO1xuICAgICAgICB3aGlsZSAobmV3cikge1xuICAgICAgICAgICAgbGV0IHEgPSByL25ld3I7XG4gICAgICAgICAgICBbdCwgbmV3dF0gPSBbbmV3dCwgdC1xKm5ld3RdO1xuICAgICAgICAgICAgW3IsIG5ld3JdID0gW25ld3IsIHItcSpuZXdyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodDx0aGlzLnplcm8pIHQgKz0gdGhpcy5wO1xuICAgICAgICByZXR1cm4gdDtcbiAgICB9XG5cbiAgICBtb2QoYSwgYikge1xuICAgICAgICByZXR1cm4gYSAlIGI7XG4gICAgfVxuXG4gICAgcG93KGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBleHAoYiwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGIsIGUpO1xuICAgIH1cblxuICAgIGJhbmQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhICYgYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSB8IGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJ4b3IoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSAgKChhIF4gYikgJiB0aGlzLm1hc2spO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgYm5vdChhKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGEgXiB0aGlzLm1hc2s7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBzaGwoYSwgYikge1xuICAgICAgICBpZiAoTnVtYmVyKGIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IGIpICYgdGhpcy5tYXNrO1xuICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhID4+IG5iO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2hyKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYSA+PiBiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgbmIgPSB0aGlzLnAgLSBiO1xuICAgICAgICAgICAgaWYgKE51bWJlcihuYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IChhIDw8IG5iKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGFuZChhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSAmJiBiKSA/IHRoaXMub25lIDogdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGxvcihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSB8fCBiKSA/IHRoaXMub25lIDogdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGxub3QoYSkge1xuICAgICAgICByZXR1cm4gKGEpID8gdGhpcy56ZXJvIDogdGhpcy5vbmU7XG4gICAgfVxuXG4gICAgc3FydF9vbGQobikge1xuXG4gICAgICAgIGlmIChuID09IHRoaXMuemVybykgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnBvdyhuLCB0aGlzLm5lZ29uZSA+PiB0aGlzLm9uZSk7XG4gICAgICAgIGlmICggcmVzICE9IHRoaXMub25lICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgbGV0IG0gPSB0aGlzLnM7XG4gICAgICAgIGxldCBjID0gdGhpcy5ucXJfdG9fdDtcbiAgICAgICAgbGV0IHQgPSB0aGlzLnBvdyhuLCB0aGlzLnQpO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KG4sIHRoaXMuYWRkKHRoaXMudCwgdGhpcy5vbmUpID4+IHRoaXMub25lICk7XG5cbiAgICAgICAgd2hpbGUgKCB0ICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgbGV0IHNxID0gdGhpcy5zcXVhcmUodCk7XG4gICAgICAgICAgICBsZXQgaSA9IDE7XG4gICAgICAgICAgICB3aGlsZSAoc3EgIT0gdGhpcy5vbmUgKSB7XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIHNxID0gdGhpcy5zcXVhcmUoc3EpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBiID0gYyBeIG0taS0xXG4gICAgICAgICAgICBsZXQgYiA9IGM7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8IG0taS0xOyBqICsrKSBiID0gdGhpcy5zcXVhcmUoYik7XG5cbiAgICAgICAgICAgIG0gPSBpO1xuICAgICAgICAgICAgYyA9IHRoaXMuc3F1YXJlKGIpO1xuICAgICAgICAgICAgdCA9IHRoaXMubXVsKHQsIGMpO1xuICAgICAgICAgICAgciA9IHRoaXMubXVsKHIsIGIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHIgPiAodGhpcy5wID4+IHRoaXMub25lKSkge1xuICAgICAgICAgICAgciA9IHRoaXMubmVnKHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKGEsIGIpIHtcbiAgICAgICAgYSA9IEJpZ0ludChhLGIpO1xuICAgICAgICBpZiAoYSA8IDApIHtcbiAgICAgICAgICAgIGxldCBuYSA9IC1hO1xuICAgICAgICAgICAgaWYgKG5hID49IHRoaXMucCkgbmEgPSBuYSAlIHRoaXMucDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnAgLSBuYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoYT49IHRoaXMucCkgPyBhJXRoaXMucCA6IGE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIGNvbnN0IG5CeXRlcyA9ICh0aGlzLmJpdExlbmd0aCoyIC8gOCk7XG4gICAgICAgIGxldCByZXMgPXRoaXMuemVybztcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5CeXRlczsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSAocmVzIDw8IEJpZ0ludCg4KSkgKyBCaWdJbnQoZ2V0UmFuZG9tQnl0ZXMoMSlbMF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXMgJSB0aGlzLnA7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgYmFzZSkge1xuICAgICAgICBiYXNlID0gYmFzZSB8fCAxMDtcbiAgICAgICAgbGV0IHZzO1xuICAgICAgICBpZiAoKGEgPiB0aGlzLmhhbGYpJiYoYmFzZSA9PSAxMCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLnAtYTtcbiAgICAgICAgICAgIHZzID0gXCItXCIrdi50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZzID0gYS50b1N0cmluZyhiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdnM7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPT0gdGhpcy56ZXJvO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGxldCB2O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2PXRoaXMuemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiArPSBybmcubmV4dFU2NCgpIDw8IEJpZ0ludCg2NCAqaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ICY9IHRoaXMubWFzaztcbiAgICAgICAgfSB3aGlsZSAodiA+PSB0aGlzLnApO1xuICAgICAgICB2ID0gKHYgKiB0aGlzLlJpKSAlIHRoaXMucDsgICAvLyBDb252ZXJ0IGZyb20gbW9udGdvbWVyeVxuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICBmZnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GRlQuZmZ0KGEpO1xuICAgIH1cblxuICAgIGlmZnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GRlQuaWZmdChhKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggTGl0dGxlIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckxFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRvUnByQkUoYnVmZiwgbywgZSwgdGhpcy5uNjQqOCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gTW9udGdvbWVyeSBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9ScHJCRShidWZmLCBvLCB0aGlzLm11bCh0aGlzLlIsIGUpKTtcbiAgICB9XG5cbiAgICB0b1JwckxFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByTEUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckxFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIC8vIFBhc2VzIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByQkUoYnVmZiwgbywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJMRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bCh0aGlzLmZyb21ScHJCRShidWZmLCBvKSwgdGhpcy5SaSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgRjJGaWVsZCB7XG4gICAgY29uc3RydWN0b3IoRiwgbm9uUmVzaWR1ZSkge1xuICAgICAgICB0aGlzLnR5cGU9XCJGMlwiO1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy5ub25SZXNpZHVlID0gbm9uUmVzaWR1ZTtcbiAgICAgICAgdGhpcy5tID0gRi5tKjI7XG4gICAgICAgIHRoaXMucCA9IEYucDtcbiAgICAgICAgdGhpcy5uNjQgPSBGLm42NCoyO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSldO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBiWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzFdLCBiWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIGNvbmp1Z2F0ZShhKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBhWzBdLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyhhWzFdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGNvbnN0IGFBID0gdGhpcy5GLm11bChhWzBdICwgYlswXSk7XG4gICAgICAgIGNvbnN0IGJCID0gdGhpcy5GLm11bChhWzFdICwgYlsxXSk7XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoIGFBICwgdGhpcy5fbXVsQnlOb25SZXNpZHVlKGJCKSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYVsxXSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGJCKSldO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGNvbnN0IHQwID0gdGhpcy5GLnNxdWFyZShhWzBdKTtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pO1xuICAgICAgICBjb25zdCB0MiA9IHRoaXMuRi5zdWIodDAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0MSkpO1xuICAgICAgICBjb25zdCB0MyA9IHRoaXMuRi5pbnYodDIpO1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bChhWzBdLCB0MyksXG4gICAgICAgICAgICB0aGlzLkYubmVnKHRoaXMuRi5tdWwoIGFbMV0sIHQzKSkgXTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwoYSwgdGhpcy5pbnYoYikpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIGNvbnN0IGFiID0gdGhpcy5GLm11bChhWzBdICwgYVsxXSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgW1xuICAgICAgICAgICAgKGEgKyBiKSAqIChhICsgbm9uX3Jlc2lkdWUgKiBiKSAtIGFiIC0gbm9uX3Jlc2lkdWUgKiBhYixcbiAgICAgICAgICAgIGFiICsgYWJcbiAgICAgICAgXTtcbiAgICAgICAgKi9cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pICxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGFbMF0gLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKGFbMV0pKSksXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYWIsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhYikpKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYWIsIGFiKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKGFbMF0pICYmIHRoaXMuRi5pc1plcm8oYVsxXSk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmVxKGFbMF0sIGJbMF0pICYmIHRoaXMuRi5lcShhWzFdLCBiWzFdKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHBvdyhiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhKSB7XG4gICAgICAgIHJldHVybiBgWyAke3RoaXMuRi50b1N0cmluZyhhWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhhWzFdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3QoYSwgYikgfHwgdGhpcy5lcShhLCBiKTtcbiAgICB9XG5cbiAgICBsdChhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5nZXEoYSxiKTtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ3QoYSxiKTtcbiAgICB9XG5cbiAgICBuZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZXEoYSxiKTtcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLnJhbmRvbSgpLCB0aGlzLkYucmFuZG9tKCldO1xuICAgIH1cblxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJCRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgfVxuXG5cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzBdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBbYzAsIGMxXTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgIH1cblxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYzRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjNcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVybywgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm9uZSA9IFt0aGlzLkYub25lLCB0aGlzLkYuemVybywgdGhpcy5GLnplcm9dO1xuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy5ub25SZXNpZHVlID0gbm9uUmVzaWR1ZTtcbiAgICAgICAgdGhpcy5tID0gRi5tKjM7XG4gICAgICAgIHRoaXMucCA9IEYucDtcbiAgICAgICAgdGhpcy5uNjQgPSBGLm42NCozO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMubjY0KjI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLm42NCo4O1xuICAgIH1cblxuICAgIF9tdWxCeU5vblJlc2lkdWUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLm11bCh0aGlzLm5vblJlc2lkdWUsIGEpO1xuICAgIH1cblxuICAgIGNvcHkoYSkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5jb3B5KGFbMF0pLCB0aGlzLkYuY29weShhWzFdKSwgdGhpcy5GLmNvcHkoYVsyXSldO1xuICAgIH1cblxuICAgIGFkZChhLCBiKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGJbMF0pLFxuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBiWzFdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsyXSwgYlsyXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViKHRoaXMuemVybywgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcblxuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuICAgICAgICBjb25zdCBjQyA9IHRoaXMuRi5tdWwoYVsyXSAsIGJbMl0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIGFBLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzFdLCBhWzJdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMV0sIGJbMl0pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYkIsIGNDKSkpKSwgICAgLy8gYUEgKyBub25fcmVzaWR1ZSooKGIrYykqKEIrQyktYkItY0MpLFxuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzFdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGJCKSksXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKCBjQykpLCAgIC8vIChhK2IpKihBK0IpLWFBLWJCK25vbl9yZXNpZHVlKmNDXG5cbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVswXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMl0pKSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhQSwgY0MpKSxcbiAgICAgICAgICAgICAgICBiQildOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChhK2MpKihBK0MpLWFBK2JCLWNDKVxuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGNvbnN0IHQwID0gdGhpcy5GLnNxdWFyZShhWzBdKTsgICAgICAgICAgICAgLy8gdDAgPSBhXjIgO1xuICAgICAgICBjb25zdCB0MSA9IHRoaXMuRi5zcXVhcmUoYVsxXSk7ICAgICAgICAgICAgIC8vIHQxID0gYl4yIDtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAvLyB0MiA9IGNeMjtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYubXVsKGFbMF0sYVsxXSk7ICAgICAgICAgICAvLyB0MyA9IGFiXG4gICAgICAgIGNvbnN0IHQ0ID0gdGhpcy5GLm11bChhWzBdLGFbMl0pOyAgICAgICAgICAgLy8gdDQgPSBhY1xuICAgICAgICBjb25zdCB0NSA9IHRoaXMuRi5tdWwoYVsxXSxhWzJdKTsgICAgICAgICAgIC8vIHQ1ID0gYmM7XG4gICAgICAgIC8vIGMwID0gdDAgLSBub25fcmVzaWR1ZSAqIHQ1O1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5zdWIodDAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0NSkpO1xuICAgICAgICAvLyBjMSA9IG5vbl9yZXNpZHVlICogdDIgLSB0MztcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuc3ViKHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSh0MiksIHQzKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuc3ViKHQxLCB0NCk7ICAgICAgICAgICAgICAvLyBjMiA9IHQxLXQ0XG5cbiAgICAgICAgLy8gdDYgPSAoYSAqIGMwICsgbm9uX3Jlc2lkdWUgKiAoYyAqIGMxICsgYiAqIGMyKSkuaW52KCk7XG4gICAgICAgIGNvbnN0IHQ2ID1cbiAgICAgICAgICAgIHRoaXMuRi5pbnYoXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzBdLCBjMCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzJdLCBjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLm11bChhWzFdLCBjMikpKSkpO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMCksICAgICAgICAgLy8gdDYqYzBcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMxKSwgICAgICAgICAvLyB0NipjMVxuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzIpXTsgICAgICAgIC8vIHQ2KmMyXG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBzMCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgICAgICAgIC8vIHMwID0gYV4yXG4gICAgICAgIGNvbnN0IGFiID0gdGhpcy5GLm11bChhWzBdLCBhWzFdKTsgICAgICAgICAgICAgICAgLy8gYWIgPSBhKmJcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYuYWRkKGFiLCBhYik7ICAgICAgICAgICAgICAgICAgICAvLyBzMSA9IDJhYjtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYuc3F1YXJlKFxuICAgICAgICAgICAgdGhpcy5GLmFkZCh0aGlzLkYuc3ViKGFbMF0sYVsxXSksIGFbMl0pKTsgICAgIC8vIHMyID0gKGEgLSBiICsgYyleMjtcbiAgICAgICAgY29uc3QgYmMgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAgICAgICAvLyBiYyA9IGIqY1xuICAgICAgICBjb25zdCBzMyA9IHRoaXMuRi5hZGQoYmMsIGJjKTsgICAgICAgICAgICAgICAgICAgIC8vIHMzID0gMipiY1xuICAgICAgICBjb25zdCBzNCA9IHRoaXMuRi5zcXVhcmUoYVsyXSk7ICAgICAgICAgICAgICAgICAgIC8vIHM0ID0gY14yXG5cblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBzMCxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoczMpKSwgICAgICAgICAgIC8vIHMwICsgbm9uX3Jlc2lkdWUgKiBzMyxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczEsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHM0KSksICAgICAgICAgICAvLyBzMSArIG5vbl9yZXNpZHVlICogczQsXG4gICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoIHRoaXMuRi5hZGQoczEsIHMyKSAsIHMzICksXG4gICAgICAgICAgICAgICAgdGhpcy5GLmFkZChzMCwgczQpKV07ICAgICAgICAgICAgICAgICAgICAgIC8vIHMxICsgczIgKyBzMyAtIHMwIC0gczRcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pICYmIHRoaXMuRi5pc1plcm8oYVsyXSk7XG4gICAgfVxuXG4gICAgZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmVxKGFbMF0sIGJbMF0pICYmIHRoaXMuRi5lcShhWzFdLCBiWzFdKSAmJiB0aGlzLkYuZXEoYVsyXSwgYlsyXSk7XG4gICAgfVxuXG4gICAgYWZmaW5lKGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuYWZmaW5lKGFbMF0pLCB0aGlzLkYuYWZmaW5lKGFbMV0pLCB0aGlzLkYuYWZmaW5lKGFbMl0pXTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIHBvdyhiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICB0b1N0cmluZyhhKSB7XG4gICAgICAgIHJldHVybiBgWyAke3RoaXMuRi50b1N0cmluZyhhWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhhWzFdKX0sICR7dGhpcy5GLnRvU3RyaW5nKGFbMl0pfSBdYDtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGd0KGEsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzBdLCBiWzBdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYlswXSwgYVswXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzFdLCBiWzFdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYlsxXSwgYVsxXSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChhWzJdLCBiWzJdKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpLCB0aGlzLkYucmFuZG9tKCldO1xuICAgIH1cblxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMl0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzJdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzBdKTtcbiAgICB9XG5cbiAgICB0b1JwckxFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KjIsIGVbMl0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzBdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMubjgqMik7XG4gICAgICAgIHJldHVybiBbYzAsIGMxLCBjMl07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBpc0dyZWF0ZXN0KEYsIGEpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhKSkge1xuICAgICAgICBmb3IgKGxldCBpPWEubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKCFGLkYuaXNaZXJvKGFbaV0pKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGlzR3JlYXRlc3QoRi5GLCBhW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuYSA9IEYubmVnKGEpO1xuICAgICAgICByZXR1cm4gZ3QoYSwgbmEpO1xuICAgIH1cbn1cblxuXG5jbGFzcyBFQyB7XG5cbiAgICBjb25zdHJ1Y3RvcihGLCBnKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuZyA9IGc7XG4gICAgICAgIGlmICh0aGlzLmcubGVuZ3RoID09IDIpIHRoaXMuZ1syXSA9IHRoaXMuRi5vbmU7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLm9uZSwgdGhpcy5GLnplcm9dO1xuICAgIH1cblxuICAgIGFkZChwMSwgcDIpIHtcblxuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAxLCB0aGlzLnplcm8pKSByZXR1cm4gcDI7XG4gICAgICAgIGlmICh0aGlzLmVxKHAyLCB0aGlzLnplcm8pKSByZXR1cm4gcDE7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBGLnNxdWFyZSggcDFbMl0gKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IEYuc3F1YXJlKCBwMlsyXSApO1xuXG4gICAgICAgIGNvbnN0IFUxID0gRi5tdWwoIHAxWzBdICwgWjJaMiApOyAgICAgLy8gVTEgPSBYMSAgKiBaMloyXG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApOyAgICAgLy8gVTIgPSBYMiAgKiBaMVoxXG5cbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBGLm11bCggcDFbMl0gLCBaMVoxKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBGLm11bCggcDJbMl0gLCBaMloyKTtcblxuICAgICAgICBjb25zdCBTMSA9IEYubXVsKCBwMVsxXSAsIFoyX2N1YmVkKTsgIC8vIFMxID0gWTEgKiBaMiAqIFoyWjJcbiAgICAgICAgY29uc3QgUzIgPSBGLm11bCggcDJbMV0gLCBaMV9jdWJlZCk7ICAvLyBTMiA9IFkyICogWjEgKiBaMVoxXG5cbiAgICAgICAgaWYgKEYuZXEoVTEsVTIpICYmIEYuZXEoUzEsUzIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb3VibGUocDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgSCA9IEYuc3ViKCBVMiAsIFUxICk7ICAgICAgICAgICAgICAgICAgICAvLyBIID0gVTItVTFcblxuICAgICAgICBjb25zdCBTMl9taW51c19TMSA9IEYuc3ViKCBTMiAsIFMxICk7XG5cbiAgICAgICAgY29uc3QgSSA9IEYuc3F1YXJlKCBGLmFkZChILEgpICk7ICAgICAgICAgLy8gSSA9ICgyICogSCleMlxuICAgICAgICBjb25zdCBKID0gRi5tdWwoIEggLCBJICk7ICAgICAgICAgICAgICAgICAgICAgIC8vIEogPSBIICogSVxuXG4gICAgICAgIGNvbnN0IHIgPSBGLmFkZCggUzJfbWludXNfUzEgLCBTMl9taW51c19TMSApOyAgLy8gciA9IDIgKiAoUzItUzEpXG4gICAgICAgIGNvbnN0IFYgPSBGLm11bCggVTEgLCBJICk7ICAgICAgICAgICAgICAgICAgICAgLy8gViA9IFUxICogSVxuXG4gICAgICAgIHJlc1swXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnN1YiggRi5zcXVhcmUocikgLCBKICksXG4gICAgICAgICAgICAgICAgRi5hZGQoIFYgLCBWICkpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gWDMgPSByXjIgLSBKIC0gMiAqIFZcblxuICAgICAgICBjb25zdCBTMV9KID0gRi5tdWwoIFMxICwgSiApO1xuXG4gICAgICAgIHJlc1sxXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLm11bCggciAsIEYuc3ViKFYscmVzWzBdKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIFMxX0osUzFfSiApKTsgICAgICAgICAgICAgICAgICAgLy8gWTMgPSByICogKFYtWDMpLTIgUzEgSlxuXG4gICAgICAgIHJlc1syXSA9XG4gICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICBILFxuICAgICAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocDFbMl0scDJbMl0pICksXG4gICAgICAgICAgICAgICAgICAgIEYuYWRkKCBaMVoxICwgWjJaMiApKSk7ICAgICAgICAgICAgLy8gWjMgPSAoKFoxK1oyKV4yLVoxWjEtWjJaMikgKiBIXG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBuZWcocCkge1xuICAgICAgICByZXR1cm4gW3BbMF0sIHRoaXMuRi5uZWcocFsxXSksIHBbMl1dO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLCB0aGlzLm5lZyhiKSk7XG4gICAgfVxuXG4gICAgZG91YmxlKHApIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkoMyk7XG5cbiAgICAgICAgaWYgKHRoaXMuZXEocCwgdGhpcy56ZXJvKSkgcmV0dXJuIHA7XG5cbiAgICAgICAgY29uc3QgQSA9IEYuc3F1YXJlKCBwWzBdICk7ICAgICAgICAgICAgICAgICAgICAvLyBBID0gWDFeMlxuICAgICAgICBjb25zdCBCID0gRi5zcXVhcmUoIHBbMV0gKTsgICAgICAgICAgICAgICAgICAgIC8vIEIgPSBZMV4yXG4gICAgICAgIGNvbnN0IEMgPSBGLnNxdWFyZSggQiApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gQyA9IEJeMlxuXG4gICAgICAgIGxldCBEID1cbiAgICAgICAgICAgIEYuc3ViKFxuICAgICAgICAgICAgICAgIEYuc3F1YXJlKCBGLmFkZChwWzBdICwgQiApKSxcbiAgICAgICAgICAgICAgICBGLmFkZCggQSAsIEMpKTtcbiAgICAgICAgRCA9IEYuYWRkKEQsRCk7ICAgICAgICAgICAgICAgICAgICAvLyBEID0gMiAqICgoWDEgKyBCKV4yIC0gQSAtIEMpXG5cbiAgICAgICAgY29uc3QgRSA9IEYuYWRkKCBGLmFkZChBLEEpLCBBKTsgICAgICAgICAgLy8gRSA9IDMgKiBBXG4gICAgICAgIGNvbnN0IEZGID1GLnNxdWFyZSggRSApOyAgICAgICAgICAgICAgICAgICAgICAgLy8gRiA9IEVeMlxuXG4gICAgICAgIHJlc1swXSA9IEYuc3ViKCBGRiAsIEYuYWRkKEQsRCkgKTsgICAgICAgICAvLyBYMyA9IEYgLSAyIERcblxuICAgICAgICBsZXQgZWlnaHRDID0gRi5hZGQoIEMgLCBDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcbiAgICAgICAgZWlnaHRDID0gRi5hZGQoIGVpZ2h0QyAsIGVpZ2h0QyApO1xuXG4gICAgICAgIHJlc1sxXSA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgRSxcbiAgICAgICAgICAgICAgICAgICAgRi5zdWIoIEQsIHJlc1swXSApKSxcbiAgICAgICAgICAgICAgICBlaWdodEMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFkzID0gRSAqIChEIC0gWDMpIC0gOCAqIENcblxuICAgICAgICBjb25zdCBZMVoxID0gRi5tdWwoIHBbMV0gLCBwWzJdICk7XG4gICAgICAgIHJlc1syXSA9IEYuYWRkKCBZMVoxICwgWTFaMSApOyAgICAgICAgICAgICAgICAgLy8gWjMgPSAyICogWTEgKiBaMVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgdGltZXNTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIG11bFNjYWxhcihiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBtdWxTY2FsYXIodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgYWZmaW5lKHApIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9IGVsc2UgaWYgKEYuZXEocFsyXSwgRi5vbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IFpfaW52ID0gRi5pbnYocFsyXSk7XG4gICAgICAgICAgICBjb25zdCBaMl9pbnYgPSBGLnNxdWFyZShaX2ludik7XG4gICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuICAgICAgICAgICAgcmVzWzBdID0gRi5tdWwocFswXSxaMl9pbnYpO1xuICAgICAgICAgICAgcmVzWzFdID0gRi5tdWwocFsxXSxaM19pbnYpO1xuICAgICAgICAgICAgcmVzWzJdID0gRi5vbmU7XG5cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWx0aUFmZmluZShhcnIpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFycik7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IGFjY011bCA9IG5ldyBBcnJheShrZXlzLmxlbmd0aCsxKTtcbiAgICAgICAgYWNjTXVsWzBdID0gRi5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoRi5lcShhcnJba2V5c1tpXV1bMl0sIEYuemVybykpIHtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaSsxXSA9IGFjY011bFtpXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBGLm11bChhY2NNdWxbaV0sIGFycltrZXlzW2ldXVsyXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhY2NNdWxba2V5cy5sZW5ndGhdID0gRi5pbnYoYWNjTXVsW2tleXMubGVuZ3RoXSk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGtleXMubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2ldID0gYWNjTXVsW2krMV07XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dID0gdGhpcy56ZXJvO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBaX2ludiA9IEYubXVsKGFjY011bFtpXSwgYWNjTXVsW2krMV0pO1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IEYubXVsKGFycltrZXlzW2ldXVsyXSwgYWNjTXVsW2krMV0pO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgICAgIGNvbnN0IFozX2ludiA9IEYubXVsKFoyX2ludiwgWl9pbnYpO1xuXG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzBdID0gRi5tdWwoYXJyW2tleXNbaV1dWzBdLFoyX2ludik7XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzFdID0gRi5tdWwoYXJyW2tleXNbaV1dWzFdLFozX2ludik7XG4gICAgICAgICAgICAgICAgYXJyW2tleXNbaV1dWzJdID0gRi5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGVxKHAxLCBwMikge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuXG4gICAgICAgIGlmICh0aGlzLkYuZXEocDFbMl0sIHRoaXMuRi56ZXJvKSkgcmV0dXJuIHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pO1xuICAgICAgICBpZiAodGhpcy5GLmVxKHAyWzJdLCB0aGlzLkYuemVybykpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTtcbiAgICAgICAgY29uc3QgVTIgPSBGLm11bCggcDJbMF0gLCBaMVoxICk7XG5cbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBGLm11bCggcDFbMl0gLCBaMVoxKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBGLm11bCggcDJbMl0gLCBaMloyKTtcblxuICAgICAgICBjb25zdCBTMSA9IEYubXVsKCBwMVsxXSAsIFoyX2N1YmVkKTtcbiAgICAgICAgY29uc3QgUzIgPSBGLm11bCggcDJbMV0gLCBaMV9jdWJlZCk7XG5cbiAgICAgICAgcmV0dXJuIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSk7XG4gICAgfVxuXG4gICAgaXNaZXJvKHApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8ocFsyXSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcocCkge1xuICAgICAgICBjb25zdCBjcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoY3BbMF0pfSAsICR7dGhpcy5GLnRvU3RyaW5nKGNwWzFdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgbGV0IFAgPSBbXTtcbiAgICAgICAgbGV0IGdyZWF0ZXN0O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICBQWzBdID0gRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgICAgICBncmVhdGVzdCA9IHJuZy5uZXh0Qm9vbCgpO1xuICAgICAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICAgICAgUFsxXSA9IEYuc3FydCh4M2IpO1xuICAgICAgICB9IHdoaWxlICgoUFsxXSA9PSBudWxsKXx8KEYuaXNaZXJvW1BdKSk7XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQID0gdGhpcy5tdWxTY2FsYXIoUCwgdGhpcy5jb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICBQID0gdGhpcy5hZmZpbmUoUCk7XG5cbiAgICAgICAgcmV0dXJuIFA7XG5cbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckxFSk0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8rMip0aGlzLkYubjgsIHBbMl0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgcCkge1xuICAgICAgICBwID0gdGhpcy5hZmZpbmUocCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgY29uc3QgQnVmZlYgPSBuZXcgVWludDhBcnJheShidWZmLCBvLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBCdWZmVi5maWxsKDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVKTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5GLm44KjIpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJDb21wcmVzc2VkKGJ1ZmYsIG8pIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCBGLm44KTtcbiAgICAgICAgaWYgKHZbMF0gJiAweDQwKSByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICBjb25zdCBQID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGNvbnN0IGdyZWF0ZXN0ID0gKCh2WzBdICYgMHg4MCkgIT0gMCk7XG4gICAgICAgIHZbMF0gPSB2WzBdICYgMHg3RjtcbiAgICAgICAgUFswXSA9IEYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QpIHZbMF0gPSB2WzBdIHwgMHg4MDsgIC8vIHNldCBiYWNrIGFnYWluIHRoZSBvbGQgdmFsdWVcblxuICAgICAgICBjb25zdCB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBpZiAoUFsxXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBQb2ludCFcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzID0gaXNHcmVhdGVzdChGLCBQWzFdKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0IF4gcykgUFsxXSA9IEYubmVnKFBbMV0pO1xuICAgICAgICBQWzJdID0gRi5vbmU7XG5cbiAgICAgICAgcmV0dXJuIFA7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBjb25zdCB2ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZi5idWZmZXIsIG8sIHRoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgdi5maWxsKDApO1xuICAgICAgICAgICAgdlswXSA9IDB4NDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgcFswXSk7XG5cbiAgICAgICAgaWYgKGlzR3JlYXRlc3QodGhpcy5GLCBwWzFdKSkge1xuICAgICAgICAgICAgdlswXSA9IHZbMF0gfCAweDgwO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIG8pIHtcbiAgICAgICAgaWYgKGJ1ZmZbMF0gJiAweDQwKSByZXR1cm4gdGhpcy56ZXJvO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICB9XG5cbiAgICB0b1JwclVuY29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHRoaXMudG9ScHJCRShidWZmLCBvLCBwKTtcblxuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGJ1ZmZbb10gPSBidWZmW29dIHwgMHg0MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5cbnZhciB1dGlscyQ2ID0ge307XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudXRpbHMkNi5iaWdJbnQyQnl0ZXNMRSA9IGZ1bmN0aW9uIGJpZ0ludDJCeXRlc0xFKF9hLCBsZW4pIHtcbiAgICBjb25zdCBiID0gQXJyYXkobGVuKTtcbiAgICBsZXQgdiA9IEJpZ0ludChfYSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGxlbjsgaSsrKSB7XG4gICAgICAgIGJbaV0gPSBOdW1iZXIodiAmIDB4RkZuKTtcbiAgICAgICAgdiA9IHYgPj4gOG47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5iaWdJbnQyVTMyTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGRkZGRkZGbik7XG4gICAgICAgIHYgPSB2ID4+IDMybjtcbiAgICB9XG4gICAgcmV0dXJuIGI7XG59O1xuXG51dGlscyQ2LmlzT2NhbU51bSA9IGZ1bmN0aW9uKGEpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoYS5sZW5ndGggIT0gMykgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYVswXSAhPT0gXCJudW1iZXJcIikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2YgYVsxXSAhPT0gXCJudW1iZXJcIikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShhWzJdKSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfaW50ID0gZnVuY3Rpb24gYnVpbGRJbnQobW9kdWxlLCBuNjQsIF9wcmVmaXgpIHtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJpbnRcIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7fTtcblxuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXF6KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9lcVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGdldENvbXBDb2RlKG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICBjLnJldChjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR3RlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9ndGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSlcbiAgICAgICAgICAgICAgICApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2x0X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIiksIG4qOCApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfZ3RfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKCBcImNcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpLCA0KmkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIiksIDQqaSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5pMzJfd3JhcF9pNjQoYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl9zIChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5pNjRfYW5kKCBjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5pMzJfd3JhcF9pNjQgKCBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSkpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ5XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRZID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWVtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieVwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieVwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFlbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInlcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMF9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMV9vbGRcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbG9hZFggPSBbXTtcbiAgICAgICAgZnVuY3Rpb24gbXVsaWooaSwgaikge1xuICAgICAgICAgICAgbGV0IFgsWTtcbiAgICAgICAgICAgIGlmICghbG9hZFhbaV0pIHtcbiAgICAgICAgICAgICAgICBYID0gYy50ZWVMb2NhbChcInhcIitpLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGkqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWCA9IGMuZ2V0TG9jYWwoXCJ4XCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2pdKSB7XG4gICAgICAgICAgICAgICAgWSA9IGMudGVlTG9jYWwoXCJ4XCIraiwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBqKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtqXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFkgPSBjLmdldExvY2FsKFwieFwiK2opO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYy5pNjRfbXVsKCBYLCBZICk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcbiAgICAgICAgbGV0IGMwX29sZCA9IFwiYzBfb2xkXCI7XG4gICAgICAgIGxldCBjMV9vbGQgPSBcImMxX29sZFwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLCBjLmk2NF9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8KChrKzEpPj4xKSApJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBNdWx0aXBseSBieSAyXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChrJTIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaz4+MSwgaz4+MSlcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIG9sZCBjYXJyeVxuXG4gICAgICAgICAgICBpZiAoaz4wKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzFfb2xkKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICBrKjQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0KjItNCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmVPbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZU9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9idWlsZE11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X211bChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ5XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDQqaSwgMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdSAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9idWlsZEFkZDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19hZGQxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInB4XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ5XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgYy5pNjRfZXF6KGMuZ2V0TG9jYWwoXCJjXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJweFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg0KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwicHhcIiksIDAsIDApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRGl2KCkge1xuICAgICAgICBfYnVpbGRNdWwxKCk7XG4gICAgICAgIF9idWlsZEFkZDEoKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9kaXZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicnJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVYXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZVlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInN4XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZWNcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IENhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUmF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDID0gYy5nZXRMb2NhbChcImNjXCIpO1xuICAgICAgICBjb25zdCBSID0gYy5nZXRMb2NhbChcInJyXCIpO1xuICAgICAgICBjb25zdCBwcjEgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IFIxID0gYy5pMzJfY29uc3QocHIxKTtcbiAgICAgICAgY29uc3QgUjIgPSBjLmkzMl9jb25zdChwcjErbjgpO1xuXG4gICAgICAgIC8vIEljIGMgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjY1wiLCBjLmdldExvY2FsKFwiY1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgQ2F1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gSWMgciBpcyAwIHRoZW4gc3RvcmUgaXQgaW4gYW4gYXV4aWxpYXJ5IGJ1ZmZlclxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJyXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBSYXV4KVxuICAgICAgICApKTtcblxuICAgICAgICAvLyBDb3B5XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwieFwiKSwgUikpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInlcIiksIFkpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIEMpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIFIxKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVYXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfY29uc3QobjgtMSkpKTtcblxuICAgICAgICAvLyB3aGlsZSAoZVk+MykmJihZW2VZXT09MCkgZXktLTtcbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFkgLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVZXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN5XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFksIGMuZ2V0TG9jYWwoXCJlWVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBGb3JjZSBhIGRpdmlkZSBieSAwIGlmIHF1b3RpZW4gaXMgMFxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3lcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5pNjRfZGl2X3UoYy5pNjRfY29uc3QoMCksIGMuaTY0X2NvbnN0KDApKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG5cbiAgICAgICAgICAgIC8vIHdoaWxlIChlWD43KSYmKFlbZVhdPT0wKSBleC0tO1xuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChSICwgYy5nZXRMb2NhbChcImVYXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImVYXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiZVhcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeFwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZCggUiwgYy5nZXRMb2NhbChcImVYXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3lcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZVlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBXaGlsZSBncmVhdGVyIHRoYW4gMzIgYml0cyBvciBlYyBpcyBuZWcsIHNociBhbmQgaW5jIGV4cFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfZXF6KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkYwMDAwMDAwMFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiZWNcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pNjRfZXF6KGMuZ2V0TG9jYWwoXCJzeFwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIFIsIFkpKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic3hcIiwgYy5pNjRfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiZWNcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWwxXCIsIFksIGMuZ2V0TG9jYWwoXCJzeFwiKSwgUjIpLFxuICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICBSLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihSMiwgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBSXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fYWRkMVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChDLCBjLmdldExvY2FsKFwiZWNcIikpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW52ZXJzZU1vZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlTW9kXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwbVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwidFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJxclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5ld3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzd3BcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbnRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdubmV3dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ254XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgbXVsQnVmZiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG4gICAgICAgIGNvbnN0IGF1eDcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGF1eDEpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBhdXgyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYXV4MilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBhdXgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgYXV4MyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXdyXCIsIGF1eDQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInB4XCIpLCBhdXg0KVxuICAgICAgICApO1xuXG5cblxuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwicXFcIiwgYXV4NSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFyXCIsIGF1eDYpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ4XCIsIGF1eDcpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwibmV3clwiKSApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RpdlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcIm5ld3JcIiksIGMuZ2V0TG9jYWwoXCJxcVwiKSwgYy5nZXRMb2NhbChcInFyXCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJuZXd0XCIpLCBtdWxCdWZmKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbnRcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ25uZXd0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBjLmdldExvY2FsKFwidFwiKSwgbXVsQnVmZiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic3dwXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJ0XCIsIGMuZ2V0TG9jYWwoXCJuZXd0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXd0XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJ4XCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbnRcIiwgYy5nZXRMb2NhbChcInNpZ25uZXd0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdubmV3dFwiLCBjLmdldExvY2FsKFwic2lnbnhcIikpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic3dwXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyXCIsIGMuZ2V0TG9jYWwoXCJuZXdyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZXdyXCIsIGMuZ2V0TG9jYWwoXCJxclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicXJcIiwgYy5nZXRMb2NhbChcInN3cFwiKSksXG5cbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5nZXRMb2NhbChcInBtXCIpLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInByXCIpKVxuICAgICAgICApKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRHdGUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkU3F1YXJlT2xkKCk7XG4gICAgYnVpbGREaXYoKTtcbiAgICBidWlsZEludmVyc2VNb2QoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9ndGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9kaXZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlTW9kXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3RpbWVzc2NhbGFyID0gZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcihtb2R1bGUsIGZuTmFtZSwgZWxlbWVudExlbiwgb3BBQiwgb3BBQSwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImJcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGVsZW1lbnRMZW4pKTtcblxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pZihcbiAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICBdXG4gICAgICAgIClcbiAgICApO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BDb3B5LCBjLmdldExvY2FsKFwiYmFzZVwiKSwgYXV4KSk7XG4gICAgZi5hZGRDb2RlKGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJpXCIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpKTtcbiAgICBmLmFkZENvZGUoYy5ibG9jayhjLmxvb3AoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIC4uLmlubmVyTG9vcCgpLFxuICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICBjLmJyKDApXG4gICAgKSkpO1xuXG5cbiAgICBmdW5jdGlvbiBpbm5lckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGNvZGUgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgY29kZS5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEFBLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoIGMuZ2V0TG9jYWwoXCJiXCIpLCBjLmkzMl9jb25zdCgweDgwID4+IGkpKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwID4+IGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEFCLCBjLmdldExvY2FsKFwiclwiKSxhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29kZTtcbiAgICB9XG5cbn07XG5cbnZhciBidWlsZF9iYXRjaGludmVyc2UgPSBidWlsZEJhdGNoSW52ZXJzZSQzO1xuXG5mdW5jdGlvbiBidWlsZEJhdGNoSW52ZXJzZSQzKG1vZHVsZSwgcHJlZml4KSB7XG5cblxuICAgIGNvbnN0IG44ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQqODtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJpblN0ZXBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm91dFN0ZXBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0QXV4XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cblxuICAgIC8vIEFsbG9jIFdvcmtpbmcgc3BhY2UgZm9yIGFjY3VtdWxhdGVkIHVtbHRpcGxpY2F0aW9uc1xuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIGYuYWRkQ29kZShcblxuICAgICAgICAvLyBhdXhbMF0gPSBhO1xuICAgICAgICBjLmNhbGwocHJlZml4K1wiX29uZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIikpLFxuICAgICAgICAvLyBmb3IgKGk9MDtpPG47aSsrKSBhdXhbaV0gPSBhdXhbaS0xXSppbltpXVxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG5cbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4K1wiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXgrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpLFxuXG4gICAgICAgIC8vIHBvaW50IHRvIHRoZSBsYXN0XG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgIC8vIGl0T3V0ID0gcE91dCArIChuLTEpKnN0ZXBPdXQgICAvLyBQb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJpdE91dFwiLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvdXRTdGVwXCIpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcblxuICAgICAgICAvLyBhdXhbbi0xXSA9IDEvYXV4W24tMV1cbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pbnZlcnNlXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5nZXRMb2NhbChcIml0QXV4XCIpICksXG5cbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiggYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSwgQVVYKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0SW5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBBVVgsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwib3V0U3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKVxuXG4gICAgKTtcblxuXG4gICAgLy8gUmVjb3ZlciBPbGQgbWVtb3J5XG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgIClcbiAgICApO1xuXG59XG5cbnZhciBidWlsZF9iYXRjaGNvbnZlcnRpb24gPSBidWlsZEJhdGNoQ29udmVydGlvbiQzO1xuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydGlvbiQzKG1vZHVsZSwgZm5OYW1lLCBpbnRlcm5hbEZuTmFtZSwgc2l6ZUluLCBzaXplT3V0LCByZXZlcnNlKSB7XG4gICAgaWYgKHR5cGVvZiByZXZlcnNlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIC8vIFNldCB0aGUgcmV2ZXJzZSBpbiBhIHdheSB0aGF0IGFsbG93cyB0byB1c2UgdGhlIHNhbWUgYnVmZmVyIGFzIGluL291dC5cbiAgICAgICAgaWYgKHNpemVJbiA8IHNpemVPdXQpIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGlmIChyZXZlcnNlKSB7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplSW4pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZU91dClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbnZhciBidWlsZF9iYXRjaG9wID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMjtcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMihtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluMVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicE91dFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4yXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW4xXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplSW4pXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuaTMyX2NvbnN0KHNpemVPdXQpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmdldExvY2FsKFwicEluMVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5nZXRMb2NhbChcInBJbjJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbnZhciBiaWdpbnQgPSB7fTtcblxuLy8gTWFueSBvZiB0aGVzZSB1dGlsaXRpZXMgYXJlIGZyb20gdGhlIGBiaWctaW50ZWdlcmAgbGlicmFyeSxcbi8vIGJ1dCBhZGp1c3RlZCB0byBvbmx5IHdvcmsgd2l0aCBuYXRpdmUgQmlnSW50IHR5cGVcbi8vIFJlZiBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2Jsb2IvZTVkMjE1NGQzYzQxNzA2OWM1MWU3MTE2YmFmYzNiOTFkMGI5ZmU0MS9CaWdJbnRlZ2VyLmpzXG4vLyBPcmlnaW5hbGx5IGxpY2Vuc2VkIFRoZSBVbmxpY2Vuc2VcblxuZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIHNxdWFyZSQxKG4pIHtcbiAgICByZXR1cm4gbiAqIG47XG59XG5cbmZ1bmN0aW9uIGlzT2RkJDQobikge1xuICAgIHJldHVybiBuICUgMm4gIT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0V2ZW4obikge1xuICAgIHJldHVybiBuICUgMm4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlJDMobikge1xuICAgIHJldHVybiBuIDwgMG47XG59XG5cbmZ1bmN0aW9uIGlzUG9zaXRpdmUobikge1xuICAgIHJldHVybiBuID4gMG47XG59XG5cbmZ1bmN0aW9uIGJpdExlbmd0aCQ1KG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKG4pKSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aCAtIDE7IC8vIGRpc2NhcmQgdGhlIC0gc2lnblxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGFicyhuKSB7XG4gICAgcmV0dXJuIG4gPCAwbiA/IC1uIDogbjtcbn1cblxuZnVuY3Rpb24gaXNVbml0KG4pIHtcbiAgICByZXR1cm4gYWJzKG4pID09PSAxbjtcbn1cblxuZnVuY3Rpb24gbW9kSW52JDMoYSwgbikge1xuICAgIHZhciB0ID0gMG4sIG5ld1QgPSAxbiwgciA9IG4sIG5ld1IgPSBhYnMoYSksIHEsIGxhc3RULCBsYXN0UjtcbiAgICB3aGlsZSAobmV3UiAhPT0gMG4pIHtcbiAgICAgICAgcSA9IHIgLyBuZXdSO1xuICAgICAgICBsYXN0VCA9IHQ7XG4gICAgICAgIGxhc3RSID0gcjtcbiAgICAgICAgdCA9IG5ld1Q7XG4gICAgICAgIHIgPSBuZXdSO1xuICAgICAgICBuZXdUID0gbGFzdFQgLSAocSAqIG5ld1QpO1xuICAgICAgICBuZXdSID0gbGFzdFIgLSAocSAqIG5ld1IpO1xuICAgIH1cbiAgICBpZiAoIWlzVW5pdChyKSkgdGhyb3cgbmV3IEVycm9yKGEudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XG4gICAgaWYgKGNvbXBhcmUodCwgMG4pID09PSAtMSkge1xuICAgICAgICB0ID0gdCArIG47XG4gICAgfVxuICAgIGlmIChpc05lZ2F0aXZlJDMoYSkpIHtcbiAgICAgICAgcmV0dXJuIC10O1xuICAgIH1cbiAgICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gbW9kUG93JDIobiwgZXhwLCBtb2QpIHtcbiAgICBpZiAobW9kID09PSAwbikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHRha2UgbW9kUG93IHdpdGggbW9kdWx1cyAwXCIpO1xuICAgIHZhciByID0gMW4sXG4gICAgICAgIGJhc2UgPSBuICUgbW9kO1xuICAgIGlmIChpc05lZ2F0aXZlJDMoZXhwKSkge1xuICAgICAgICBleHAgPSBleHAgKiAtMW47XG4gICAgICAgIGJhc2UgPSBtb2RJbnYkMyhiYXNlLCBtb2QpO1xuICAgIH1cbiAgICB3aGlsZSAoaXNQb3NpdGl2ZShleHApKSB7XG4gICAgICAgIGlmIChiYXNlID09PSAwbikgcmV0dXJuIDBuO1xuICAgICAgICBpZiAoaXNPZGQkNChleHApKSByID0gciAqIGJhc2UgJSBtb2Q7XG4gICAgICAgIGV4cCA9IGV4cCAvIDJuO1xuICAgICAgICBiYXNlID0gc3F1YXJlJDEoYmFzZSkgJSBtb2Q7XG4gICAgfVxuICAgIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcbiAgICBhID0gYSA+PSAwbiA/IGEgOiAtYTtcbiAgICBiID0gYiA+PSAwbiA/IGIgOiAtYjtcbiAgICByZXR1cm4gYSA9PT0gYiA/IDAgOiBhID4gYiA/IDEgOiAtMTtcbn1cblxuZnVuY3Rpb24gaXNEaXZpc2libGVCeShhLCBuKSB7XG4gICAgaWYgKG4gPT09IDBuKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGlzVW5pdChuKSkgcmV0dXJuIHRydWU7XG4gICAgaWYgKGNvbXBhcmVBYnMobiwgMm4pID09PSAwKSByZXR1cm4gaXNFdmVuKGEpO1xuICAgIHJldHVybiBhICUgbiA9PT0gMG47XG59XG5cbmZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XG4gICAgdmFyIG4gPSBhYnModik7XG4gICAgaWYgKGlzVW5pdChuKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChuID09PSAybiB8fCBuID09PSAzbiB8fCBuID09PSA1bikgcmV0dXJuIHRydWU7XG4gICAgaWYgKGlzRXZlbihuKSB8fCBpc0RpdmlzaWJsZUJ5KG4sIDNuKSB8fCBpc0RpdmlzaWJsZUJ5KG4sIDVuKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChuIDwgNDluKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyB3ZSBkb24ndCBrbm93IGlmIGl0J3MgcHJpbWU6IGxldCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZpZ3VyZSBpdCBvdXRcbn1cblxuZnVuY3Rpb24gcHJldihuKSB7XG4gICAgcmV0dXJuIG4gLSAxbjtcbn1cblxuZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcbiAgICB2YXIgblByZXYgPSBwcmV2KG4pLFxuICAgICAgICBiID0gblByZXYsXG4gICAgICAgIHIgPSAwLFxuICAgICAgICBkLCBpLCB4O1xuICAgIHdoaWxlIChpc0V2ZW4oYikpIGIgPSBiIC8gMm4sIHIrKztcbiAgICBuZXh0OiBmb3IgKGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAobiA8IGFbaV0pIGNvbnRpbnVlO1xuICAgICAgICB4ID0gbW9kUG93JDIoQmlnSW50KGFbaV0pLCBiLCBuKTtcbiAgICAgICAgaWYgKGlzVW5pdCh4KSB8fCB4ID09PSBuUHJldikgY29udGludWU7XG4gICAgICAgIGZvciAoZCA9IHIgLSAxOyBkICE9IDA7IGQtLSkge1xuICAgICAgICAgICAgeCA9IHNxdWFyZSQxKHgpICUgbjtcbiAgICAgICAgICAgIGlmIChpc1VuaXQoeCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIGlmICh4ID09PSBuUHJldikgY29udGludWUgbmV4dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1ByaW1lJDEocCkge1xuICAgIHZhciBpc1ByaW1lID0gaXNCYXNpY1ByaW1lKHApO1xuICAgIGlmIChpc1ByaW1lICE9PSB1bmRlZmluZWQpIHJldHVybiBpc1ByaW1lO1xuICAgIHZhciBuID0gYWJzKHApO1xuICAgIHZhciBiaXRzID0gYml0TGVuZ3RoJDUobik7XG4gICAgaWYgKGJpdHMgPD0gNjQpXG4gICAgICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgWzIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzN10pO1xuICAgIHZhciBsb2dOID0gTWF0aC5sb2coMikgKiBOdW1iZXIoYml0cyk7XG4gICAgdmFyIHQgPSBNYXRoLmNlaWwobG9nTik7XG4gICAgZm9yICh2YXIgYSA9IFtdLCBpID0gMDsgaSA8IHQ7IGkrKykge1xuICAgICAgICBhLnB1c2goQmlnSW50KGkgKyAyKSk7XG4gICAgfVxuICAgIHJldHVybiBtaWxsZXJSYWJpblRlc3QobiwgYSk7XG59XG5cbmJpZ2ludC5iaXRMZW5ndGggPSBiaXRMZW5ndGgkNTtcbmJpZ2ludC5pc09kZCA9IGlzT2RkJDQ7XG5iaWdpbnQuaXNOZWdhdGl2ZSA9IGlzTmVnYXRpdmUkMztcbmJpZ2ludC5hYnMgPSBhYnM7XG5iaWdpbnQuaXNVbml0ID0gaXNVbml0O1xuYmlnaW50LmNvbXBhcmUgPSBjb21wYXJlO1xuYmlnaW50Lm1vZEludiA9IG1vZEludiQzO1xuYmlnaW50Lm1vZFBvdyA9IG1vZFBvdyQyO1xuYmlnaW50LmlzUHJpbWUgPSBpc1ByaW1lJDE7XG5iaWdpbnQuc3F1YXJlID0gc3F1YXJlJDE7XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRJbnQgPSBidWlsZF9pbnQ7XG5jb25zdCB1dGlscyQ1ID0gdXRpbHMkNjtcbmNvbnN0IGJ1aWxkRXhwJDIgPSBidWlsZF90aW1lc3NjYWxhcjtcbmNvbnN0IGJ1aWxkQmF0Y2hJbnZlcnNlJDIgPSBidWlsZF9iYXRjaGludmVyc2U7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiQxID0gYnVpbGRfYmF0Y2hjb252ZXJ0aW9uO1xuY29uc3QgYnVpbGRCYXRjaE9wID0gYnVpbGRfYmF0Y2hvcDtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkNCwgbW9kSW52OiBtb2RJbnYkMiwgbW9kUG93OiBtb2RQb3ckMSwgaXNQcmltZSwgaXNPZGQ6IGlzT2RkJDMsIHNxdWFyZSB9ID0gYmlnaW50O1xuXG52YXIgYnVpbGRfZjFtID0gZnVuY3Rpb24gYnVpbGRGMW0obW9kdWxlLCBfcSwgX3ByZWZpeCwgX2ludFByZWZpeCkge1xuICAgIGNvbnN0IHEgPSBCaWdJbnQoX3EpO1xuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ0KHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjMyID0gbjY0KjI7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJmMW1cIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgaW50UHJlZml4ID0gYnVpbGRJbnQobW9kdWxlLCBuNjQsIF9pbnRQcmVmaXgpO1xuICAgIGNvbnN0IHBxID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKHEsIG44KSk7XG5cbiAgICBjb25zdCBwUjIgPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShzcXVhcmUoMW4gPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcbiAgICBjb25zdCBwT25lID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcFplcm8gPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRSgwbiwgbjgpKTtcbiAgICBjb25zdCBfbWludXNPbmUgPSBxIC0gMW47XG4gICAgY29uc3QgX2UgPSBfbWludXNPbmUgPj4gMW47IC8vIGUgPSAocC0xKS8yXG4gICAgY29uc3QgcGUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2UsIG44KSk7XG5cbiAgICBjb25zdCBfZVBsdXNPbmUgPSBfZSArIDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShfZVBsdXNPbmUsIG44KSk7XG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBwcTogcHEsXG4gICAgICAgIHBSMjogcFIyLFxuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcTogcSxcbiAgICAgICAgcE9uZTogcE9uZSxcbiAgICAgICAgcFplcm86IHBaZXJvLFxuICAgICAgICBwZVBsdXNPbmU6IHBlUGx1c09uZVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE9uZSksIGMuZ2V0TG9jYWwoXCJwclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInhcIiksICBjLmdldExvY2FsKFwieVwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgYy5pMzJfY29uc3QocFplcm8pLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInhcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIEFVWCwgYy5pMzJfY29uc3QocGVQbHVzT25lKSApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIEFVWCwgYy5pMzJfY29uc3QocGVQbHVzT25lKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoLTEpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRNUmVkdWN0KCkge1xuICAgICAgICBjb25zdCBjYXJyaWVzID0gbW9kdWxlLmFsbG9jKG4zMipuMzIqOCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbVJlZHVjdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImNcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiY1wiLCBjLmk2NF9jb25zdCgwKSkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJtXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwidFwiKSwgaSo0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibnAzMlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG4zMjsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwidFwiKSwgKGkraikqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuaTMyX2NvbnN0KHBxKSwgaio0KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAoaStqKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4K1wiX2FkZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KGNhcnJpZXMpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG4zMio0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG5cblxuICAgICAgICBmb3IgKGxldCBpPTA7aTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInhcIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ5XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwibVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInFcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRZID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRRID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWVtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieVwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieVwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFlbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInlcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVscW0oaSwgaikge1xuICAgICAgICAgICAgbGV0IFEsTTtcbiAgICAgICAgICAgIGlmICghbG9hZFFbaV0pIHtcbiAgICAgICAgICAgICAgICBRID0gYy50ZWVMb2NhbChcInFcIitpLCBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdCgwKSwgcHEraSo0ICkpO1xuICAgICAgICAgICAgICAgIGxvYWRRW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUSA9IGMuZ2V0TG9jYWwoXCJxXCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBNID0gYy5nZXRMb2NhbChcIm1cIitqKTtcblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggUSwgTSApO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTw9aykmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgxLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHFtKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGs8bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtXCIrayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbSgwLGspXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBpZiAoaz49bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAoay1uMzIpKjQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFtjMCwgYzFdID0gW2MxLCBjMF07XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0LTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX3dyYXBfaTY0KGMuZ2V0TG9jYWwoYzEpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMF9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMV9vbGRcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwibVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcInFcIitpLCBcImk2NFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgbnAzMiA9IE51bWJlcigweDEwMDAwMDAwMG4gLSBtb2RJbnYkMihxLCAweDEwMDAwMDAwMG4pKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcIm5wMzJcIiwgYy5pNjRfY29uc3QobnAzMikpKTtcblxuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGNvbnN0IGxvYWRRID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVscW0oaSwgaikge1xuICAgICAgICAgICAgbGV0IFEsTTtcbiAgICAgICAgICAgIGlmICghbG9hZFFbaV0pIHtcbiAgICAgICAgICAgICAgICBRID0gYy50ZWVMb2NhbChcInFcIitpLCBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdCgwKSwgcHEraSo0ICkpO1xuICAgICAgICAgICAgICAgIGxvYWRRW2ldID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgUSA9IGMuZ2V0TG9jYWwoXCJxXCIraSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBNID0gYy5nZXRMb2NhbChcIm1cIitqKTtcblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggUSwgTSApO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgYzAgPSBcImMwXCI7XG4gICAgICAgIGxldCBjMSA9IFwiYzFcIjtcbiAgICAgICAgbGV0IGMwX29sZCA9IFwiYzBfb2xkXCI7XG4gICAgICAgIGxldCBjMV9vbGQgPSBcImMxX29sZFwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLCBjLmk2NF9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgxLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHFtKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGs8bjMyKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtXCIrayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbSgwLGspXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgYzBfb2xkLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgYzFfb2xkLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgIG4zMio0LTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxX29sZCkpLFxuICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX3N1YlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSkgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoaW50UHJlZml4K1wiX3N1YlwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwUjIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG5cbiAgICAgICAgY29uc3QgcEF1eDIgPSBtb2R1bGUuYWxsb2MobjgqMik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBBdXgyKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIGMuaTMyX2NvbnN0KHBBdXgyICsgbjgpICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCtcIl9tUmVkdWN0XCIsIGMuaTMyX2NvbnN0KHBBdXgyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgLy8gQ2FsY3VsYXRlIHZhcmlvdXMgdmFsdXNlIG5lZWRlZCBmb3Igc3FydFxuXG5cbiAgICBsZXQgX25xciA9IDJuO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIHdoaWxlIChtb2RQb3ckMShfbnFyLCBfZSwgcSkgIT09IF9taW51c09uZSkgX25xciA9IF9ucXIgKyAxbjtcbiAgICB9XG5cbiAgICBsZXQgczIgPSAwO1xuICAgIGxldCBfdCA9IF9taW51c09uZTtcblxuICAgIHdoaWxlICgoIWlzT2RkJDMoX3QpKSYmKF90ICE9PSAwbikpIHtcbiAgICAgICAgczIrKztcbiAgICAgICAgX3QgPSBfdCA+PiAxbjtcbiAgICB9XG4gICAgY29uc3QgcHQgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX3QsIG44KSk7XG5cbiAgICBjb25zdCBfbnFyVG9UID0gbW9kUG93JDEoX25xciwgX3QsIHEpO1xuICAgIGNvbnN0IHBOcXJUb1QgPSBtb2R1bGUuYWxsb2ModXRpbHMkNS5iaWdJbnQyQnl0ZXNMRSgoX25xclRvVCA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuXG4gICAgY29uc3QgX3RQbHVzT25lT3ZlcjIgPSAoX3QgKyAxbikgPj4gMW47XG4gICAgY29uc3QgcHRQbHVzT25lT3ZlcjIgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX3RQbHVzT25lT3ZlcjIsIG44KSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxcnQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3NxcnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9ORSA9IGMuaTMyX2NvbnN0KHBPbmUpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBJZiAobj09MCkgcmV0dXJuIDBcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtXCIsIGMuaTMyX2NvbnN0KHMyKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmkzMl9jb25zdChwTnFyVG9UKSwgQyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwdCksIGMuaTMyX2NvbnN0KG44KSwgVCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwdFBsdXNPbmVPdmVyMiksIGMuaTMyX2NvbnN0KG44KSwgUiksXG5cbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIFQsIE9ORSkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBULCBTUSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBTUSwgT05FKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgU1EsIFNRKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBDLCBCKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9zdWIoYy5pMzJfc3ViKCBjLmdldExvY2FsKFwibVwiKSwgYy5nZXRMb2NhbChcImlcIikpLCBjLmkzMl9jb25zdCgxKSkgKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooYy5nZXRMb2NhbChcImpcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBCLCBCKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmdldExvY2FsKFwiaVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFQsIEMsIFQpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgQiwgUiksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiLCBSKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIFIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJuXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChwZSksIGMuaTMyX2NvbnN0KG44KSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBBVVgsIE9ORSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9hZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbG9hZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcEF1eCA9IG1vZHVsZS5hbGxvYyhuOCk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KHBBdXgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZ3RfdShjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgUiksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInBcIiksIFIsIEFVWCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgQVVYLCBjLmdldExvY2FsKFwiclwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJsXCIsIGMuaTMyX3JlbV91KCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuaWYoYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJsXCIpKSwgYy5yZXQoW10pKSxcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl96ZXJvXCIsIEFVWCksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmdldExvY2FsKFwibFwiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgcEF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBSLCBjLmkzMl9jb25zdChwUjIpLCBSKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgQVVYLCBSLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwiclwiKSwgQVVYLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9sb2FkXCIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChpbnRQcmVmaXggKyBcIl9lcVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocE9uZSkpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGludFByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9lcVwiLCBwcmVmaXgrXCJfZXFcIik7XG5cbiAgICBidWlsZElzT25lKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRNUmVkdWN0KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkU3F1YXJlT2xkKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRJc05lZ2F0aXZlKCk7XG4gICAgYnVpbGRTaWduKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZExvYWQoKTtcbiAgICBidWlsZFRpbWVzU2NhbGFyKCk7XG4gICAgYnVpbGRCYXRjaEludmVyc2UkMihtb2R1bGUsIHByZWZpeCk7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24kMShtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIsIHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEZyb21Nb250Z29tZXJ5XCIsIHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIG44LCBuOCk7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24kMShtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoTmVnXCIsIHByZWZpeCArIFwiX25lZ1wiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQWRkXCIsIHByZWZpeCArIFwiX2FkZFwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoU3ViXCIsIHByZWZpeCArIFwiX3N1YlwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hPcChtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoTXVsXCIsIHByZWZpeCArIFwiX211bFwiLCBuOCwgbjgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tUmVkdWN0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2xvYWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRXhwJDIoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIG44LFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIGludFByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCIsXG4gICAgKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXhwXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgaWYgKGlzUHJpbWUocSkpIHtcbiAgICAgICAgYnVpbGRTcXJ0KCk7XG4gICAgICAgIGJ1aWxkSXNTcXVhcmUoKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxcnRcIik7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1NxdWFyZVwiKTtcbiAgICB9XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEZyb21Nb250Z29tZXJ5XCIpO1xuICAgIC8vIGNvbnNvbGUubG9nKG1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZSk7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZEYxbSQyID1idWlsZF9mMW07XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDMgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxID0gZnVuY3Rpb24gYnVpbGRGMShtb2R1bGUsIF9xLCBfcHJlZml4LCBfZjFtUHJlZml4LCBfaW50UHJlZml4KSB7XG5cbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMyhxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFcIjtcbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0XG4gICAgfTtcblxuICAgIGNvbnN0IGludFByZWZpeCA9IF9pbnRQcmVmaXggfHwgXCJpbnRcIjtcbiAgICBjb25zdCBmMW1QcmVmaXggPSBidWlsZEYxbSQyKG1vZHVsZSwgcSwgX2YxbVByZWZpeCwgaW50UHJlZml4KTtcblxuXG4gICAgY29uc3QgcFIyID0gICAgIG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucFIyO1xuICAgIGNvbnN0IHBxID0gICAgIG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucHE7XG4gICAgY29uc3QgcGVQbHVzT25lID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5wZVBsdXNPbmU7XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgcEF1eDEgPSBtb2R1bGUuYWxsb2MobjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChwQXV4MSkpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocEF1eDEpLCBjLmkzMl9jb25zdChwUjIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW52ZXJzZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfaW52ZXJzZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfaW52ZXJzZU1vZFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocHEpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNOZWdhdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9hZGRcIiwgcHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9zdWJcIiwgcHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9uZWdcIiwgcHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfY29weVwiLCBwcmVmaXgrXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfemVyb1wiLCBwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfb25lXCIsIHByZWZpeCtcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9lcVwiLCBwcmVmaXgrXCJfZXFcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZEV4cCQxID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQxID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgdXRpbHMkNCA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mMm0gPSBmdW5jdGlvbiBidWlsZEYybShtb2R1bGUsIG11bE5vblJlc2lkdWVGbiwgcHJlZml4LCBmMW1QcmVmaXgpIHtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBmMW44ID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqODtcbiAgICBjb25zdCBxID0gbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5xO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0OiBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCoyXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MCwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MSwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX25lZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvbmp1Z2F0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uanVnYXRlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNOZWdhdGl2ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNOZWdhdGl2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoZjFtUHJlZml4K1wiX2lzTmVnYXRpdmVcIiwgeDEpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MCwgeTAsIEEpLCAgICAgICAgICAgICAvLyBBID0geDAqeTBcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHkxLCBCKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnkxXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBDKSwgICAgICAgICAgICAgLy8gQyA9IHgwICsgeDFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgeTAsIHkxLCBEKSwgICAgICAgICAgICAgLy8gRCA9IHkwICsgeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQywgRCwgQyksICAgICAgICAgICAgICAgLy8gQyA9ICh4MCArIHgxKSooeTAgKyB5MSkgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MVxuXG4gICAgICAgICAgICAvLyAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBCLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgQiwgcjApLCAgLy8gcjAgPSBuciooeDEqeTEpXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIHIwLCByMCksICAgICAgICAgICAgIC8vIHIwID0geDAqeTAgKyBuciooeDEqeTEpXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEIsIHIxKSwgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MSp5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBDLCByMSwgcjEpICAgICAgICAgICAgICAvLyByMSA9IHgwKnkwK3gwKnkxK3gxKnkwK3gxKnkxIC0geDAqeTAreDEqeTEgPSB4MCp5MSt4MSp5MFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeSA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MCwgeSwgcjApLCAgICAgICAgICAgICAvLyBBID0geDAqeVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCB4MSwgeSwgcjEpLCAgICAgICAgICAgICAvLyBCID0geDEqeVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgY29uc3QgQUIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBUEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBUE5CID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQUJQTkFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIEFCID0geDAqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHgxLCBBQiksXG5cbiAgICAgICAgICAgIC8vIEFQQiA9IHgwK3kxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVBCKSxcblxuICAgICAgICAgICAgLy8gQVBCTjAgPSB4MCArIG5yKngxXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB4MSwgQVBOQiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCBBUE5CLCBBUE5CKSxcblxuICAgICAgICAgICAgLy8gQUJQTkFCID0gYWIgKyBuciphYlxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgQUIsIEFCUE5BQiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCUE5BQiwgQUIsIEFCUE5BQiksXG5cbiAgICAgICAgICAgIC8vIHIwID0gQVBCICogQVBOQiAtIEFCUE5BQlxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBBUEIsIEFQTkIsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIEFCUE5BQiwgcjApLFxuXG4gICAgICAgICAgICAvLyByMSA9IEFCICsgQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQUIsIEFCLCByMSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl90b01vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9lcVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgwLCB5MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MSwgdDEpLFxuICAgICAgICAgICAgLy8gYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDEsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlKSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2ludmVyc2VcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHQzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MSwgdDMsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHIxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NpZ25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgxKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc09uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNPbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNPbmVcIiwgeDApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIENoZWNrIGhlcmU6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTIvNjg1LnBkZlxuICAgIC8vIEFsZyA5YWRqXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxcnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAxbikgLyAybiwgZjFuOCApKSk7XG5cbiAgICAgICAgY29uc3QgYSA9IGMuZ2V0TG9jYWwoXCJhXCIpO1xuICAgICAgICBjb25zdCBhMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYWxwaGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGEwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBwbjEgPSBtb2R1bGUuYWxsb2MoZjFuOCoyKTtcbiAgICAgICAgY29uc3QgbjEgPSBjLmkzMl9jb25zdChwbjEpO1xuICAgICAgICBjb25zdCBuMWEgPSBjLmkzMl9jb25zdChwbjEpO1xuICAgICAgICBjb25zdCBuMWIgPSBjLmkzMl9jb25zdChwbjErZjFuOCk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBuMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIG4xLCBuMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXhwXCIsIGEsIGUzNCwgYy5pMzJfY29uc3QoZjFuOCksIGExKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgYTEsIGFscGhhKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYSwgYWxwaGEsIGFscGhhKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTAgPSBGLm11bChGLmZyb2Jlbml1cygxLCBhbGZhKSwgYWxmYSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29uanVnYXRlXCIsIGFscGhhLCBhMCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEwLCBhbHBoYSwgYTApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhMCwgRi5uZWdvbmUpKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIGMuaWYoYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsYTAsbjEpLCBjLnVucmVhY2hhYmxlKCkgKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgeDAgPSBGLm11bChhMSwgYSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGExLCBhLCB4MCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGFsZmEsIEYubmVnb25lKSkge1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgYWxwaGEsIG4xKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIHggPSBGLm11bCh4MCwgW0YuRi56ZXJvLCBGLkYub25lXSk7XG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMW1QcmVmaXggKyBcIl96ZXJvXCIsIG4xYSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMW1QcmVmaXggKyBcIl9vbmVcIiwgbjFiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBuMSwgeDAsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IGIgPSBGLnBvdyhGLmFkZChGLm9uZSwgYWxmYSksIEYuc3FydF9lMTIpO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGIpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGIsIGFscGhhLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBiLCBlMTIsIGMuaTMyX2NvbnN0KGYxbjgpLCBiKSxcblxuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGIsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1NxdWFyZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTM0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gM24pIC8gNG4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYTAsXG4gICAgICAgICAgICAgICAgICAgIG4xXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgYnVpbGRJc1plcm8oKTtcbiAgICBidWlsZElzT25lKCk7XG4gICAgYnVpbGRaZXJvKCk7XG4gICAgYnVpbGRPbmUoKTtcbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZE11bCgpO1xuICAgIGJ1aWxkTXVsMSgpO1xuICAgIGJ1aWxkU3F1YXJlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRDb25qdWdhdGUoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgYnVpbGRCYXRjaEludmVyc2UkMShtb2R1bGUsIHByZWZpeCk7XG4gICAgYnVpbGRFeHAkMShcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCoyLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCIsXG4gICAgKTtcbiAgICBidWlsZFNxcnQoKTtcbiAgICBidWlsZElzU3F1YXJlKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXhwXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcblxuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAgPSBidWlsZF90aW1lc3NjYWxhcjtcbmNvbnN0IGJ1aWxkQmF0Y2hJbnZlcnNlID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuXG52YXIgYnVpbGRfZjNtID0gZnVuY3Rpb24gYnVpbGRGM20obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0OiBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9hZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl90aW1lc1NjYWxhclwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MCwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MSwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90aW1lc1NjYWxhclwiLCB4MiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHkwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MSwgeTEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgyLCB5MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwoZjFtUHJlZml4K1wiX2lzTmVnYXRpdmVcIiwgeDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgyKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgY2QgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYSA9IGNkLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgYiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCBjID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInhcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgQSA9IGNkLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgQiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCBDID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInlcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjZC5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInJcIiksIGNkLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gY2QuaTMyX2FkZChjZC5nZXRMb2NhbChcInJcIiksIGNkLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCBhQSA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2IgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9CID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGFfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYl9jID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEJfQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhQV9iQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhQV9jQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiQl9jQyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBBVVggPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGEsIEEsIGFBKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGIsIEIsIGJCKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMsIEMsIGNDKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYiwgYV9iKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEIsIEFfQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhLCBjLCBhX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQSwgQywgQV9DKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGIsIGMsIGJfYyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBCLCBDLCBCX0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgYkIsIGFBX2JCKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCBjQywgYUFfY0MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYkIsIGNDLCBiQl9jQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGJfYywgQl9DLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMCwgYkJfY0MsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCByMCwgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIHIwLCByMCksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYiwgQV9CLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMSwgYUFfYkIsIHIxKSxcbiAgICAgICAgICAgIGNkLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBjQywgQVVYKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCBBVVgsIHIxKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgYV9jLCBBX0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIyLCBhQV9jQywgcjIpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIGJCLCByMiksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCBzMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGFiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBzMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJjID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zcXVhcmVcIiwgQSwgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBBLCBCLCBhYiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFiLCBhYiwgczEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIEEsIEIsIHMyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczIsIEMsIHMyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zcXVhcmVcIiwgczIsIHMyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBCLCBDLCBiYyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJjLCBiYywgczMpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEMsIHM0KSxcblxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgczMsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczAsIHIwLCByMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHM0LCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCBzNCwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBzMywgcjIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgczIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMxLCByMiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgyLCByMilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9vbmVcIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgxLCB5MSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2VxXCIsIHgyLCB5MilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNaZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDEsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB4MiwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHgyLCB0NSksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQ1LCBjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB0MCwgYzAsIGMwKSxcblxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDIsIGMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIGMxLCB0MywgYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB0MSwgdDQsIGMyKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDIsIGMxLCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MSwgYzIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB0NiwgQVVYLCB0NiksXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIGMwLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgQVVYLCB0NiwgdDYpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2ludmVyc2VcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNpZ24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NpZ25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDIpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRXEoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZFRpbWVzU2NhbGFyKCk7XG4gICAgYnVpbGRJc05lZ2F0aXZlKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgYnVpbGRCYXRjaEludmVyc2UobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBmMW44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX211bFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9zcXVhcmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9vbmVcIlxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNOZWdhdGl2ZVwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhcm5hZiA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXJOQUYobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQW1CLCBvcENvcHksIG9wSW5pdCkge1xuXG4gICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgIGYuYWRkUGFyYW0oXCJiYXNlXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhckxlbmd0aFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwib2xkMFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwibmJpdHNcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImN1clwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiY2FycnlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGVsZW1lbnRMZW4pKTtcblxuICAgIGZ1bmN0aW9uIGdldEJpdChJRFgpIHtcbiAgICAgICAgcmV0dXJuIGMuaTMyX2FuZChcbiAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkZGRkZGRkMpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgSURYLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDFGKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHB1c2hCaXQoYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4uYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KGIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInBcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApLFxuICAgICAgICBjLnNldExvY2FsKFwibmJpdHNcIiwgYy5pMzJfc2hsKGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIiksIGMuaTMyX2NvbnN0KDMpKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJvbGQwXCIsIGMuaTMyX2xvYWQoYy5pMzJfY29uc3QoMCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcIm9sZDBcIikpLFxuICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9sZDBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5iaXRzXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkY4KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgxKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcImxhc3RcIixnZXRCaXQoYy5pMzJfY29uc3QoMCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImNhcnJ5XCIsYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsIGdldEJpdChjLmdldExvY2FsKFwiaVwiKSkpLFxuICAgICAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImN1clwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgyNTUpXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwibGFzdFwiKSxcbiAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgyNTUpLFxuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApLFxuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuXG4gICAgICAgIC8vIHAgYWxyZWFkeSBwb2ludHMgdG8gdGhlIGxhc3QgYml0XG5cbiAgICAgICAgYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCksXG5cbiAgICAgICAgYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChvcEFBLCBjLmdldExvY2FsKFwiclwiKSwgYy5nZXRMb2NhbChcInJcIikpLFxuXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJjdXJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImN1clwiKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiY3VyXCIpLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChvcEFCLCAgYy5nZXRMb2NhbChcInJcIiksIGF1eCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBbUIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxKCBjLmdldExvY2FsKFwib2xkMFwiKSwgYy5nZXRMb2NhbChcInBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcblxuICAgICAgICApKSxcblxuICAgICAgICBjLmkzMl9zdG9yZSggYy5pMzJfY29uc3QoMCksIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKVxuXG4gICAgKTtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfbXVsdGlleHAgPSBmdW5jdGlvbiBidWlsZE11bHRpZXhwKG1vZHVsZSwgcHJlZml4LCBmbk5hbWUsIG9wQWRkLCBuOGIpIHtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhdLm42NDtcbiAgICBjb25zdCBuOGcgPSBuNjRnKjg7XG5cbiAgICBmdW5jdGlvbiBidWlsZEdldENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2dldENodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgYnl0ZXMgb2YgdGhlIHNjYWxhclxuICAgICAgICBmLmFkZFBhcmFtKFwic3RhcnRCaXRcIiwgXCJpMzJcIik7ICAvLyBCaXQgdG8gc3RhcnQgZXh0cmFjdFxuICAgICAgICBmLmFkZFBhcmFtKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpOyAgLy8gQ2h1bmsgc2l6ZSBpbiBiaXRzXG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzVG9FbmRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiYml0c1RvRW5kXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzdGFydEJpdFwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2d0X3MoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibWFza1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNUb0VuZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibWFza1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvLyBvZmZzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIDAgICAvLyBhbGlnbiB0byBieXRlLlxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtYXNrXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdXRpZXhwQ2h1bmsoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfY2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQmFzZXNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwU2NhbGFyc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgcG9pbnRzXG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwic3RhcnRCaXRcIiwgXCJpMzJcIik7ICAvLyBiaXQgd2hlcmUgaXQgc3RhcnRzIHRoZSBjaHVua1xuICAgICAgICBmLmFkZFBhcmFtKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSWR4VGFibGVcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5UYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBUYWJsZVwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5UYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIC8vIFJlc2V0IFRhYmxlXG4gICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5UYWJsZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIC8vIERpc3RyaWJ1dGUgZWxlbWVudHNcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEJhc2VcIiwgYy5nZXRMb2NhbChcInBCYXNlc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5nZXRMb2NhbChcInBTY2FsYXJzXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlbmRTY2FsYXJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVuZFNjYWxhclwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9nZXRDaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInBJZHhUYWJsZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wQWRkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSWR4VGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QmFzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFNjYWxhclwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0U2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyU2l6ZVwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEJhc2VcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksIGMuaTMyX2NvbnN0KG44YikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZuTmFtZSArIFwiX3JlZHVjZVRhYmxlXCIsIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bHRpZXhwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQmFzZXNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwU2NhbGFyc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclNpemVcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgcG9pbnRzXG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjaHVua1NpemVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuQ2h1bmtzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlbmRTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEJhc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGNvbnN0IHBUU2l6ZXMgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgMTcsIDE3LCAxNywgMTcsICAgMTcsIDE3LCAxNywgMTcsXG4gICAgICAgICAgICAxNywgMTcsIDE2LCAxNiwgICAxNSwgMTQsIDEzLCAxMyxcbiAgICAgICAgICAgIDEyLCAxMSwgMTAsICA5LCAgICA4LCAgNywgIDcsICA2LFxuICAgICAgICAgICAgNSAsICA0LCAgMywgIDIsICAgIDEsICAxLCAgMSwgIDFcbiAgICAgICAgXSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJuXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2h1bmtTaXplXCIsIGMuaTMyX2xvYWQ4X3UoIGMuaTMyX2NseihjLmdldExvY2FsKFwiblwiKSksICBwVFNpemVzICkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5DaHVua3NcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2Rpdl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIC8vIEFsbG9jYXRlIG1lbW9yeVxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXRCaXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ2h1bmtzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF9zKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAvLyBEb3VibGUgbkNodW5rIHRpbWVzXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZVwiLCBjLmdldExvY2FsKFwicHJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZuTmFtZSArIFwiX2NodW5rXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRCaXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCaXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSwgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZWR1Y2VUYWJsZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7ICAvLyBOdW1iZXIgb2YgYml0cyBvZiB0aGUgdGFibGVcbiAgICAgICAgZi5hZGRMb2NhbChcImhhbGZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQWNjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJoYWxmXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0MVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdDJcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJoYWxmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQWNjXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQWNjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQWNjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0MVwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDJcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGZuTmFtZSArIFwiX3JlZHVjZVRhYmxlXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZVwiLCBjLmdldExvY2FsKFwicEFjY1wiKSwgYy5nZXRMb2NhbChcInBBY2NcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwicEFjY1wiKSwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEdldENodW5rKCk7XG4gICAgYnVpbGRSZWR1Y2VUYWJsZSgpO1xuICAgIGJ1aWxkTXV0aWV4cENodW5rKCk7XG4gICAgYnVpbGRNdWx0aWV4cCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSArXCJfY2h1bmtcIik7XG5cblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBidWlsZFRpbWVzU2NhbGFyTkFGID0gYnVpbGRfdGltZXNzY2FsYXJuYWY7XG4vL2NvbnN0IGJ1aWxkVGltZXNTY2FsYXIgPSByZXF1aXJlKFwiLi9idWlsZF90aW1lc3NjYWxhclwiKTtcbmNvbnN0IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uID0gYnVpbGRfYmF0Y2hjb252ZXJ0aW9uO1xuY29uc3QgYnVpbGRNdWx0aWV4cCQxID0gYnVpbGRfbXVsdGlleHA7XG5cbnZhciBidWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMCA9IGZ1bmN0aW9uIGJ1aWxkQ3VydmUobW9kdWxlLCBwcmVmaXgsIHByZWZpeEZpZWxkLCBwQikge1xuXG5cbiAgICBjb25zdCBuNjQgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhGaWVsZF0ubjY0O1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0KjNcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCoyKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvcHkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicGRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjY0KjM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGRcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5QWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCoyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9vbmVcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfemVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfemVyb1wiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejEgPSBjLmdldExvY2FsKFwiejFcIik7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoyID0gYy5nZXRMb2NhbChcInoyXCIpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAyXCIpKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKHByZWZpeCArIFwiX2VxTWl4ZWRcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicDFcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInAyXCIpKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejEgPSBjLmdldExvY2FsKFwiejFcIik7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcUFmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoxLCBaMVoxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MiwgWjFaMSwgVTIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoxLCBaMVoxLCBaMV9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGREb3VibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0QyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6KSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHgsIEEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIEIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEIsIEMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeCwgQiwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRCwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgQSwgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgQywgRCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRCwgRCwgRCksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBBLCBBLCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBFLCBBLCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBFLCBGKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIHosIEcpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRCwgRCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEYsIHgzLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBDLCBDLCBlaWdodEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0QywgZWlnaHRDLCBlaWdodEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0QywgZWlnaHRDLCBlaWdodEMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgRCwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgRSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBlaWdodEMsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEcsIEcsIHozKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWFggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IE0gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgZWlnaHRZWVlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIC8vIFhYID0gWDFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHgsIFhYKSxcblxuICAgICAgICAgICAgLy8gWVkgPSBZMV4yXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeSwgWVkpLFxuXG4gICAgICAgICAgICAvLyBZWVlZID0gWVleMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIFlZLCBZWVlZKSxcblxuICAgICAgICAgICAgLy8gUyA9IDIqKChYMStZWSleMi1YWC1ZWVlZKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIFlZLCBTKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBTLCBTKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTLCBYWCwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWVlZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUywgUywgUyksXG5cbiAgICAgICAgICAgIC8vIE0gPSAzKlhYK2EgIChIZXJhIGE9MClcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBYWCwgWFgsIE0pLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIE0sIFhYLCBNKSxcblxuICAgICAgICAgICAgLy8gWjMgPSAyKlkxXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeSwgeSwgejMpLFxuXG4gICAgICAgICAgICAvLyBUID0gTV4yLTIqU1xuICAgICAgICAgICAgLy8gWDMgPSBUXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgTSwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFMsIHgzKSxcblxuICAgICAgICAgICAgLy8gWTMgPSBNKihTLVQpLTgqWVlZWVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFlZWVksIFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgZWlnaHRZWVlZLCBlaWdodFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgZWlnaHRZWVlZLCBlaWdodFlZWVksIGVpZ2h0WVlZWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgTSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBlaWdodFlZWVksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXFBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDJcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9lcVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwzOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9Nb250Z29tZXJ5QWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGkqbjgpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChpKm44KSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9mcm9tTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9mcm9tTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQWRkKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMloyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MiwgeDEsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejIpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIHgxLCB4MiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoxLCBaMVoxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MiwgWjJaMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIFoyWjIsIFUxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MiwgWjFaMSwgVTIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoxLCBaMVoxLCBaMV9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejIsIFoyWjIsIFoyX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MSwgWjJfY3ViZWQsIFMxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBVMSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFMxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIFUxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgUzEsIFMyX21pbnVzX1MxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBTMl9taW51c19TMSwgUzJfbWludXNfUzEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFUxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFMxLCBKLCBTMV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzFfSjIsIFMxX0oyLCBTMV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIFMxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB6MSwgejIsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MywgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMVoxLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgejMsIFoyWjIsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MywgSCwgejMpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZE1peGVkKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZEFmZmluZVwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2RvdWJsZUFmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBVMiwgeDEsIEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMyLCB5MSwgUzJfbWludXNfeTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEgsIEhIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBISCAsIEhILCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBJICwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfeTEsIFMyX21pbnVzX3kxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MSwgSiwgeTFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHkxX0oyLCB5MV9KMiwgeTFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCB5MV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIEgsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MywgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMVoxLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgejMsIEhILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZEFmZmluZSgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDEgPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBISCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5Ml9taW51c195MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgciA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHkxX0oyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weUFmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpICwgYy5pMzJfY29uc3QobjgqMikpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCB5MiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MiwgeTEsIHkyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHkyX21pbnVzX3kxLCB5Ml9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEgsIEgsIHozKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeiwgejMpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZ0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgeSwgeTMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJNaXhlZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJNaXhlZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YkFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZEFmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIiksIEFVWCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIHNldHMgWiB0byBPbmVcbiAgICBmdW5jdGlvbiBidWlsZE5vcm1hbGl6ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG5cbiAgICAgICAgY29uc3QgWl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFozX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9pbnZlcnNlXCIsIHosIFpfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIFpfaW52LCBaMl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgWl9pbnYsIFoyX2ludiwgWjNfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgsIFoyX2ludiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeSwgWjNfaW52LCB5MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gRG9lcyBub3Qgc2V0IFouXG4gICAgZnVuY3Rpb24gYnVpbGRUb0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgeDMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHkzKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9KYWNvYmlhbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b0phY29iaWFuXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIHozKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB5LCB5MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQmF0Y2hUb0FmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQXV4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QXV4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBBdXhcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoYy5nZXRMb2NhbChcIm5cIiksIGMuaTMyX2NvbnN0KG44KSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9iYXRjaEludmVyc2VcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjMpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRBdXhcIiwgYy5nZXRMb2NhbChcInBBdXhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX3NxdWFyZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQrXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KjMpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0T3V0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlKFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQXV4XCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHByaXZhdGUgYW5kIGRvZXMgbm90IGFsbG93IHRvIE9WRVJMQVAgYnVmZmVycy5cbiAgICBmdW5jdGlvbiBidWlsZFJldmVyc2VCeXRlcygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0SW5cIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9sdF9zKCBjLmdldExvY2FsKFwiaXRPdXRcIiksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpICkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9DKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDQwKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcCwgYy5pMzJfY29uc3QobjgpLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoLTEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRMRU10b1UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfTEVNdG9VXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicE91dFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHBUbXAgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFgsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgdG1wWSwgYy5pMzJfY29uc3QobjgpLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVXRvTEVNKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX1V0b0xFTVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwSW5cIikpLCBjLmkzMl9jb25zdCgweDQwKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCBjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KSksIGMuaTMyX2NvbnN0KG44KSwgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIsIHRtcCwgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3RvTEVNKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0N0b0xFTVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJmaXJzdEJ5dGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJncmVhdGVzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHBUbXAgPSBtb2R1bGUuYWxsb2MobjgqMik7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImZpcnN0Qnl0ZVwiLCBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwSW5cIikpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDQwKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiZ3JlYXRlc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuaTMyX3N0b3JlOCh0bXBZLCBjLmkzMl9hbmQoYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSwgYy5pMzJfY29uc3QoMHgzRikpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgdG1wWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIiwgdG1wWCwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIiksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZLCAgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgdG1wWSwgYy5pMzJfY29uc3QocEIpLCAgdG1wWSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxcnRcIiwgdG1wWSwgdG1wWSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgdG1wWCksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NpZ25cIiwgdG1wWSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHRtcFksIGMuaTMyX2FkZChjLmdldExvY2FsKFwicE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZ3JlYXRlc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHRtcFksIGMuaTMyX2FkZChjLmdldExvY2FsKFwicE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicEluXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeDNiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIHkyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCB4M2IpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgsIHgzYiwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4M2IsIGMuaTMyX2NvbnN0KHBCKSwgeDNiKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTIsIHgzYilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluQ3VydmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfdG9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYXV4KSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIiwgYXV4KSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRaZXJvQWZmaW5lKCk7XG4gICAgYnVpbGRaZXJvKCk7XG4gICAgYnVpbGRDb3B5QWZmaW5lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRUb0phY29iaWFuKCk7XG4gICAgYnVpbGRFcUFmZmluZSgpO1xuICAgIGJ1aWxkRXFNaXhlZCgpO1xuICAgIGJ1aWxkRXEoKTtcbiAgICBidWlsZERvdWJsZUFmZmluZSgpO1xuICAgIGJ1aWxkRG91YmxlKCk7XG4gICAgYnVpbGRBZGRBZmZpbmUoKTtcbiAgICBidWlsZEFkZE1peGVkKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZE5lZ0FmZmluZSgpO1xuICAgIGJ1aWxkTmVnKCk7XG4gICAgYnVpbGRTdWJBZmZpbmUoKTtcbiAgICBidWlsZFN1Yk1peGVkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5QWZmaW5lKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5QWZmaW5lKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvQWZmaW5lKCk7XG4gICAgYnVpbGRJbkN1cnZlQWZmaW5lKCk7XG4gICAgYnVpbGRJbkN1cnZlKCk7XG5cbiAgICBidWlsZEJhdGNoVG9BZmZpbmUoKTtcblxuICAgIGJ1aWxkTm9ybWFsaXplKCk7XG5cblxuICAgIGJ1aWxkUmV2ZXJzZUJ5dGVzKCk7XG5cbiAgICBidWlsZExFTXRvVSgpO1xuICAgIGJ1aWxkTEVNdG9DKCk7XG4gICAgYnVpbGRVdG9MRU0oKTtcbiAgICBidWlsZEN0b0xFTSgpO1xuXG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24obW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiLCBwcmVmaXggKyBcIl9MRU10b1VcIiwgbjgqMiwgbjgqMik7XG4gICAgYnVpbGRCYXRjaENvbnZlcnRpb24obW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvQ1wiLCBwcmVmaXggKyBcIl9MRU10b0NcIiwgbjgqMiwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgcHJlZml4ICsgXCJfVXRvTEVNXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIiwgcHJlZml4ICsgXCJfQ3RvTEVNXCIsIG44LCBuOCoyLCB0cnVlKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIsIHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgbjgqMiwgbjgqMywgdHJ1ZSk7XG5cbiAgICBidWlsZE11bHRpZXhwJDEobW9kdWxlLCBwcmVmaXgsIHByZWZpeCArIFwiX211bHRpZXhwXCIsIHByZWZpeCArIFwiX2FkZFwiLCBuOCozKTtcbiAgICBidWlsZE11bHRpZXhwJDEobW9kdWxlLCBwcmVmaXgsIHByZWZpeCArIFwiX211bHRpZXhwQWZmaW5lXCIsIHByZWZpeCArIFwiX2FkZE1peGVkXCIsIG44KjIpO1xuXG4gICAgLypcbiAgICBidWlsZFRpbWVzU2NhbGFyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyT2xkXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCIsXG4gICAgKTtcbiAgICAqL1xuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIixcbiAgICAgICAgbjgqMyxcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2RvdWJsZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCJcbiAgICApO1xuXG4gICAgYnVpbGRUaW1lc1NjYWxhck5BRihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiLFxuICAgICAgICBuOCoyLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfY29weUFmZmluZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl96ZXJvXCJcbiAgICApO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcU1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YkFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25vcm1hbGl6ZVwiKTtcblxuICAgIC8vIENvbnZlcnRpb24gZnVuY3Rpb25zXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0N0b0xFTVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEN0b0xFTVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiKTtcblxuICAgIC8qXG4gICAgYnVpbGRHMU11bFNjYWxhcihtb2R1bGUsIHpxKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oXCJnMU11bFNjYWxhclwiKTtcbiAgICAqL1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgeyBpc09kZDogaXNPZGQkMiwgbW9kSW52OiBtb2RJbnYkMSwgbW9kUG93IH0gPSBiaWdpbnQ7XG5jb25zdCB1dGlscyQzID0gdXRpbHMkNjtcblxudmFyIGJ1aWxkX2ZmdCA9IGZ1bmN0aW9uIGJ1aWxkRkZUKG1vZHVsZSwgcHJlZml4LCBnUHJlZml4LCBmUHJlZml4LCBvcEd0aW1lc0YpIHtcblxuICAgIGNvbnN0IG42NGYgPSBtb2R1bGUubW9kdWxlc1tmUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhmID0gbjY0Zio4O1xuXG4gICAgY29uc3QgbjY0ZyA9IG1vZHVsZS5tb2R1bGVzW2dQcmVmaXhdLm42NDtcbiAgICBjb25zdCBuOGcgPSBuNjRnKjg7XG5cbiAgICBjb25zdCBxID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ucTtcblxuICAgIGxldCByZW0gPSBxIC0gMW47XG4gICAgbGV0IG1heEJpdHMgPSAwO1xuICAgIHdoaWxlICghaXNPZGQkMihyZW0pKSB7XG4gICAgICAgIG1heEJpdHMgKys7XG4gICAgICAgIHJlbSA9IHJlbSA+PiAxbjtcbiAgICB9XG5cbiAgICBsZXQgbnIgPSAybjtcblxuICAgIHdoaWxlICggbW9kUG93KG5yLCBxID4+IDFuLCBxKSA9PT0gMW4gKSBuciA9IG5yICsgMW47XG5cbiAgICAvLyBjb25zb2xlLmxvZyhucik7XG5cbiAgICBjb25zdCB3ID0gbmV3IEFycmF5KG1heEJpdHMrMSk7XG4gICAgd1ttYXhCaXRzXSA9IG1vZFBvdyhuciwgcmVtLCBxKTtcblxuICAgIGxldCBuPW1heEJpdHMtMTtcbiAgICB3aGlsZSAobj49MCkge1xuICAgICAgICB3W25dID0gbW9kUG93KHdbbisxXSwgMm4sIHEpO1xuICAgICAgICBuLS07XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXMgPSBbXTtcbiAgICBjb25zdCBSID0gKDFuIDw8IEJpZ0ludChuOGYqOCkpICUgcTtcblxuICAgIGZvciAobGV0IGk9MDsgaTx3Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IG0gPSB3W2ldICogUiAlIHE7XG4gICAgICAgIGJ5dGVzLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBST09UcyA9IG1vZHVsZS5hbGxvYyhieXRlcyk7XG5cbiAgICBjb25zdCBpMiA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIGkyWzBdID0gMW47XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBpMltpXSA9IGkyW2ktMV0gKiAybjtcbiAgICB9XG5cbiAgICBjb25zdCBieXRlc2kyID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gbW9kSW52JDEoaTJbaV0sIHEpICogUiAlIHE7XG4gICAgICAgIGJ5dGVzaTIucHVzaCguLi51dGlscyQzLmJpZ0ludDJCeXRlc0xFKG0sIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IElOVjIgPSBtb2R1bGUuYWxsb2MoYnl0ZXNpMik7XG5cbiAgICBjb25zdCBzaGlmdCA9IG1vZFBvdyhuciwgMm4sIHEpO1xuICAgIGNvbnN0IGJ5dGVzU2hpZnRUb1NtYWxsTSA9W107XG4gICAgY29uc3QgYnl0ZXNTQ29uc3QgPVtdO1xuICAgIGZvciAobGV0IGk9MDsgaTw9bWF4Qml0czsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHNoaWZ0VG9TbWFsbE0gPSBtb2RQb3coc2hpZnQsIDJuICoqIEJpZ0ludChpKSwgcSk7XG4gICAgICAgIGNvbnN0IHNDb25zdCA9IG1vZEludiQxKHEgKyAxbiAtIHNoaWZ0VG9TbWFsbE0sIHEpO1xuICAgICAgICBieXRlc1NoaWZ0VG9TbWFsbE0ucHVzaCguLi51dGlscyQzLmJpZ0ludDJCeXRlc0xFKHNoaWZ0VG9TbWFsbE0gKiBSICUgcSwgbjhmKSk7XG4gICAgICAgIGJ5dGVzU0NvbnN0LnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzQ29uc3QgKiBSICUgcSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgU0hJRlRfVE9fTSA9IG1vZHVsZS5hbGxvYyggYnl0ZXNTaGlmdFRvU21hbGxNICApO1xuICAgIGNvbnN0IFNDT05TVCA9IG1vZHVsZS5hbGxvYyggYnl0ZXNTQ29uc3QgICk7XG5cbiAgICBmdW5jdGlvbiByZXYoeCkge1xuICAgICAgICBsZXQgcj0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoeCAmICgxIDw8IGkpKSB7XG4gICAgICAgICAgICAgICAgciA9IHIgfCAoMHg4MCA+PiBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcjtcbiAgICB9XG5cbiAgICBjb25zdCBydGFibGUgPSBBcnJheSgyNTYpO1xuICAgIGZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgICAgICBydGFibGVbaV0gPSByZXYoaSk7XG4gICAgfVxuXG4gICAgY29uc3QgUkVWVEFCTEUgPSBtb2R1bGUuYWxsb2MocnRhYmxlKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRMb2cyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbG9nMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJhdXhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYXV4XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJiaXRzXCIsIGMuaTMyX2NvbnN0KDApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiYXV4XCIpKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJiaXRzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuaTMyX25lKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMudW5yZWFjaGFibGUoKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuaTMyX2d0X3UoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobWF4Qml0cylcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuZ2V0TG9jYWwoXCJiaXRzXCIpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT25lID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJiaXRzXCIsXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fbG9nMlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX29uZVwiLCBPbmUpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgT25lXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEludjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInBJbnYyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChJTlYyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4K1wiX3Jhd2ZmdFwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEludjJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSYXdGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3Jhd2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTsgLy8gMiBwb3dlclxuICAgICAgICBmLmFkZFBhcmFtKFwicmV2ZXJzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm11bEZhY3RvclwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImtcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1kaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB3bVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VQZXJtdXRhdGlvblwiLCBjLmdldExvY2FsKFwicHhcIiksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobChjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtXCIsIGMuaTMyX3NobChjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcInNcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHdtXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFJPT1RzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJrXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJrXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1kaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJtXCIpLCBjLmkzMl9jb25zdCgxKSkgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJrXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHdtXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJrXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwia1wiKSwgYy5nZXRMb2NhbChcIm1cIikpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJzXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19mZnRGaW5hbFwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsSW52ZXJzZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicmV2ZXJzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm11bEZhY3RvclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1hc2tcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwicmV2ZXJzZVwiKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtYXNrXCIsIGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm5cIikgLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIm5kaXYyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyZXZlcnNlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9pc09uZVwiLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MVwiKSwgVCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgVCAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZyAoSXQgc2hvdWxkIG5vdCBiZSBoZXJlKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDFcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9pc09uZVwiLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiwgYy5nZXRMb2NhbChcInB4XCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFJldmVyc2VQZXJtdXRhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX3JldmVyc2VQZXJtdXRhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicmlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5cIiwgYy5pMzJfc2hsKCBjLmkzMl9jb25zdCgxKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInJpXCIsIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2XCIsIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJpXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiaWR4MVwiKSwgVCksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgVCAsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pMzJfcm90bChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgyNClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMTYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgyNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZUSm9pbkV4dCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmaXJzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImluY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRvdGFsQml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTaGlmdFRvTVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTaGlmdFRvTVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgV1xuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHRJbnYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmaXJzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImluY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInRvdGFsQml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTaGlmdFRvTVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBTQ29uc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTQ29uc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNDT05TVCksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgV1xuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVE1peCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0TWl4XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZXhwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkdyb3Vwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5QZXJHcm91cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5QZXJHcm91cERpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwYWlyT2Zmc2V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB3bVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5QZXJHcm91cFwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibkdyb3Vwc1wiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5nZXRMb2NhbChcImV4cFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBhaXJPZmZzZXRcIiwgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHdtXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJleHBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuR3JvdXBzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX29uZVwiLCBXKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5QZXJHcm91cERpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFpck9mZnNldFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHdtXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBSZXZlcnNlIGFsbCBhbmQgbXVsdGlwbHkgYnkgZmFjdG9yXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRGaW5hbCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0RmluYWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJmYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZGl2MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5kaXYyXCIsIGMuaTMyX3Nocl91KGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmFjdG9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmFjdG9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkUmV2KCk7XG4gICAgYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKTtcbiAgICBidWlsZEZpbmFsSW52ZXJzZSgpO1xuICAgIGJ1aWxkUmF3RkZUKCk7XG4gICAgYnVpbGRMb2cyKCk7XG4gICAgYnVpbGRGRlQoKTtcbiAgICBidWlsZElGRlQoKTtcbiAgICBidWlsZEZGVEpvaW4oKTtcbiAgICBidWlsZEZGVEpvaW5FeHQoKTtcbiAgICBidWlsZEZGVEpvaW5FeHRJbnYoKTtcbiAgICBidWlsZEZGVE1peCgpO1xuICAgIGJ1aWxkRkZURmluYWwoKTtcbiAgICBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaWZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3Jhd2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dEludlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiKTtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfcG9sID0gZnVuY3Rpb24gYnVpbGRQb2wobW9kdWxlLCBwcmVmaXgsIHByZWZpeEZpZWxkKSB7XG5cbiAgICBjb25zdCBuNjQgPSBtb2R1bGUubW9kdWxlc1twcmVmaXhGaWVsZF0ubjY0O1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdHBcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RwXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZENvbnN0cnVjdExDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb25zdHJ1Y3RMQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwb2x5bm9taWFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBzaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblNpZ25hbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcmVzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwcFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuY29lZnNcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHBcIiwgYy5nZXRMb2NhbChcInBwb2x5bm9taWFsc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5nZXRMb2NhbChcInBzaWduYWxzXCIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblNpZ25hbHNcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibmNvZWZzXCIsIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcInBwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5jb2Vmc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBcInBkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByZXNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcFwiKSwgYy5pMzJfY29uc3QoNCkpKSxcblxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHBcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwialwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImpcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwc1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBzXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29uc3RydWN0TEMoKTtcblxuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvbnN0cnVjdExDXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcblxuXG5cblxufTtcblxudmFyIGJ1aWxkX3FhcCA9IGZ1bmN0aW9uIGJ1aWxkUUFQKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEJ1aWxkQUJDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9idWlsZEFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5Db2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwib2Zmc2V0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibk91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldFdpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIFNldCBvdXRwdXQgYSBhbmQgYiB0byAwXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibk91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiaXRiXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRhXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRiXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDb2Vmc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBDb2Vmc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5Db2Vmc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KzEyKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJzXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA4KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2dlX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5XaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJtXCIpLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBPdXRcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIiksIDQpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJyKDEpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwicE91dFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJzXCIpLCBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdCgxMikpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QobjgrMTIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBBXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmdldExvY2FsKFwicENcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRKb2luQUJDKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9qb2luQUJDXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBBXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBCXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5nZXRMb2NhbChcInBQXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYXV4LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRjXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRwXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Y1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0Y1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0cFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0cFwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoQWRkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEFkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicGJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdGFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdGJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicGFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicGJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwYVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdHJcIiksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRhXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRiXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRyXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGJ1aWxkQnVpbGRBQkMoKTtcbiAgICBidWlsZEpvaW5BQkMoKTtcbiAgICBidWlsZEJhdGNoQWRkKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYnVpbGRBQkNcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2pvaW5BQkNcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoQWRkXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcblxufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfYXBwbHlrZXkgPSBmdW5jdGlvbiBidWlsZEFwcGx5S2V5KG1vZHVsZSwgZm5OYW1lLCBnUHJlZml4LCBmclByZWZpeCwgc2l6ZUdJbiwgc2l6ZUdPdXQsIHNpemVGLCBvcEd0aW1lc0YpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwRmlyc3RcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbmNcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBPbGRGcmVlXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwRnJvbVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicFRvXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IHQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2Moc2l6ZUYpKTtcblxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcInBGcm9tXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICBjLnNldExvY2FsKFwicFRvXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICApO1xuXG4gICAgLy8gdCA9IGZpcnN0XG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICBmclByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRmlyc3RcIiksXG4gICAgICAgICAgICB0XG4gICAgICAgIClcbiAgICApO1xuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBGcm9tXCIpLFxuICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUb1wiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBGcm9tXCIpLCBjLmkzMl9jb25zdChzaXplR0luKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBUb1wiKSwgYy5pMzJfY29uc3Qoc2l6ZUdPdXQpKSksXG5cbiAgICAgICAgICAgIC8vIHQgPSB0KiBpbmNcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmclByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIHQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbmNcIiksXG4gICAgICAgICAgICAgICAgdFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcbiAgICApO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG5cbn07XG5cbmNvbnN0IHV0aWxzJDIgPSB1dGlscyQ2O1xuXG5jb25zdCBidWlsZEYxbSQxID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxJDEgPWJ1aWxkX2YxO1xuY29uc3QgYnVpbGRGMm0kMSA9YnVpbGRfZjJtO1xuY29uc3QgYnVpbGRGM20kMSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSQxID1idWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMDtcbmNvbnN0IGJ1aWxkRkZUJDIgPSBidWlsZF9mZnQ7XG5jb25zdCBidWlsZFBvbCQxID0gYnVpbGRfcG9sO1xuY29uc3QgYnVpbGRRQVAkMSA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkkMSA9IGJ1aWxkX2FwcGx5a2V5O1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQyLCBtb2RJbnYsIGlzT2RkOiBpc09kZCQxLCBpc05lZ2F0aXZlOiBpc05lZ2F0aXZlJDIgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2JuMTI4ID0gZnVuY3Rpb24gYnVpbGRCTjEyOChtb2R1bGUsIF9wcmVmaXgpIHtcblxuICAgIGNvbnN0IHByZWZpeCA9IF9wcmVmaXggfHwgXCJibjEyOFwiO1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IHEgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M247XG4gICAgY29uc3QgciA9IDIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3bjtcblxuXG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDIocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuICAgIGNvbnN0IGZyc2l6ZSA9IG44O1xuICAgIGNvbnN0IGYxc2l6ZSA9IG44O1xuICAgIGNvbnN0IGYyc2l6ZSA9IGYxc2l6ZSAqIDI7XG4gICAgY29uc3QgZnRzaXplID0gZjFzaXplICogMTI7XG5cbiAgICBjb25zdCBwciA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCByLCBmcnNpemUgKSk7XG5cbiAgICBjb25zdCBmMW1QcmVmaXggPSBidWlsZEYxbSQxKG1vZHVsZSwgcSwgXCJmMW1cIik7XG4gICAgYnVpbGRGMSQxKG1vZHVsZSwgciwgXCJmclwiLCBcImZybVwiKTtcblxuICAgIGNvbnN0IHBHMWIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDNuKSwgZjFzaXplICkpO1xuICAgIGNvbnN0IGcxbVByZWZpeCA9IGJ1aWxkQ3VydmUkMShtb2R1bGUsIFwiZzFtXCIsIFwiZjFtXCIsIHBHMWIpO1xuXG4gICAgYnVpbGRGRlQkMihtb2R1bGUsIFwiZnJtXCIsIFwiZnJtXCIsIFwiZnJtXCIsIFwiZnJtX211bFwiKTtcblxuICAgIGJ1aWxkUG9sJDEobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUCQxKG1vZHVsZSwgXCJxYXBcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBmMm1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgXCJmMW1fbmVnXCIsIFwiZjJtXCIsIFwiZjFtXCIpO1xuICAgIGNvbnN0IHBHMmIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplIClcbiAgICBdKTtcbiAgICBjb25zdCBnMm1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXCJmcm1fZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBGclwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcE11bCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEdcIiksXG4gICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZm5OYW1lKTtcbiAgICB9XG4gICAgYnVpbGRHVGltZXNGcihcImcxbV90aW1lc0ZyXCIsIFwiZzFtX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImcxbVwiLCBcImcxbVwiLCBcImZybVwiLCBcImcxbV90aW1lc0ZyXCIpO1xuXG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyXCIsIFwiZzJtX3RpbWVzU2NhbGFyXCIpO1xuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImcybVwiLCBcImcybVwiLCBcImZybVwiLCBcImcybV90aW1lc0ZyXCIpO1xuXG4gICAgYnVpbGRHVGltZXNGcihcImcxbV90aW1lc0ZyQWZmaW5lXCIsIFwiZzFtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGckFmZmluZVwiLCBcImcybV90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjgsIG44LCBuOCwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjgqMywgbjgqMywgbjgsIFwiZzFtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleSQxKG1vZHVsZSwgXCJnMW1fYmF0Y2hBcHBseUtleU1peGVkXCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjIsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyQWZmaW5lXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMiozLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcybVwiLCBcImZybVwiLCBuOCoyKjIsIG44KjMqMiwgbjgsIFwiZzJtX3RpbWVzRnJBZmZpbmVcIik7XG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKCAxbiA8PCBCaWdJbnQoZjFzaXplKjgpKSAlIHE7XG4gICAgfVxuXG4gICAgY29uc3QgRzFnZW4gPSBbXG4gICAgICAgIDFuLFxuICAgICAgICAybixcbiAgICAgICAgMW5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxZ2VuID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzJdKSwgZjFzaXplICksXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzF6ZXJvID0gW1xuICAgICAgICAwbixcbiAgICAgICAgMW4sXG4gICAgICAgIDBuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMXplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMXplcm9bMl0pLCBmMXNpemUgKVxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyZ2VuID0gW1xuICAgICAgICBbXG4gICAgICAgICAgICAxMDg1NzA0Njk5OTAyMzA1NzEzNTk0NDU3MDc2MjIzMjgyOTQ4MTM3MDc1NjM1OTU3ODUxODA4Njk5MDUxOTk5MzI4NTY1NTg1Mjc4MW4sXG4gICAgICAgICAgICAxMTU1OTczMjAzMjk4NjM4NzEwNzk5MTAwNDAyMTM5MjI4NTc4MzkyNTgxMjg2MTgyMTE5MjUzMDkxNzQwMzE1MTQ1MjM5MTgwNTYzNG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgODQ5NTY1MzkyMzEyMzQzMTQxNzYwNDk3MzI0NzQ4OTI3MjQzODQxODE5MDU4NzI2MzYwMDE0ODc3MDI4MDY0OTMwNjk1ODEwMTkzMG4sXG4gICAgICAgICAgICA0MDgyMzY3ODc1ODYzNDMzNjgxMzMyMjAzNDAzMTQ1NDM1NTY4MzE2ODUxMzI3NTkzNDAxMjA4MTA1NzQxMDc2MjE0MTIwMDkzNTMxbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMmdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzFdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsyXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyemVybyA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMG4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF1cbiAgICBdO1xuXG4gICAgY29uc3QgcEcyemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IHBPbmVUID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDApLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBOb25SZXNpZHVlRjYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoOSksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMSksIGYxc2l6ZSApLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcFR3b0ludiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSggIG1vZEludigybiwgcSkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggMG4sIGYxc2l6ZSApXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQWx0Qm4xMjhUd2lzdCA9IHBOb25SZXNpZHVlRjY7XG5cbiAgICBjb25zdCBwVHdpc3RDb2VmQiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxOTQ4NTg3NDc1MTc1OTM1NDc3MTAyNDIzOTI2MTAyMTcyMDUwNTc5MDYxODQ2OTMwMTcyMTA2NTU2NDYzMTI5NjQ1MjQ1NzQ3ODM3M24pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDI2NjkyOTc5MTExOTk5MTE2MTI0NjkwNzM4NzEzNzI4Mzg0MjU0NTA3Njk2NTMzMjkwMDI4ODU2OTM3ODUxMDkxMDMwNzYzNjY5MG4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SNigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjZcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SNigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20kMShtb2R1bGUsIHByZWZpeCtcIl9tdWxOUjZcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjEyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX211bE5SMTJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCo0KSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCo0KSksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMTIoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlIxMlwiLCBcImZ0bVwiLCBmNm1QcmVmaXgpO1xuXG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAyOTc5Mzk2ODIwMzE1NzA5MzI4OG47XG4gICAgY29uc3QgYXRlTG9vcEJpdEJ5dGVzID0gYml0cyhhdGVMb29wQ291bnQpO1xuICAgIGNvbnN0IHBBdGVMb29wQml0Qnl0ZXMgPSBtb2R1bGUuYWxsb2MoYXRlTG9vcEJpdEJ5dGVzKTtcblxuICAgIGNvbnN0IGF0ZUNvZWZTaXplID0gMyAqIGYyc2l6ZTtcbiAgICBjb25zdCBhdGVORGJsQ29lZnMgPSBhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTE7XG4gICAgY29uc3QgYXRlTkFkZENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLnJlZHVjZSgoYWNjLCBiKSA9PiAgYWNjICsgKCBiIT0wID8gMSA6IDApICAgLDApO1xuICAgIGNvbnN0IGF0ZU5Db2VmcyA9IGF0ZU5BZGRDb2VmcyArIGF0ZU5EYmxDb2VmcyArIDE7XG4gICAgY29uc3QgcHJlUFNpemUgPSAzKjIqbjg7XG4gICAgY29uc3QgcHJlUVNpemUgPSAzKm44KjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG5cblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbjY0LFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplLFxuICAgICAgICByOiByLnRvU3RyaW5nKCksXG4gICAgICAgIHE6IHEudG9TdHJpbmcoKVxuICAgIH07XG5cbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVBTaXplOiBcIiArcHJlUFNpemUpO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiUHJlUVNpemU6IFwiICtwcmVRU2l6ZSk7XG5cbiAgICBjb25zdCBmaW5hbEV4cFogPSA0OTY1NjYxMzY3MTkyODQ4ODgxbjtcblxuICAgIGZ1bmN0aW9uIG5hZihuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkJDEoRSkpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMSApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5nZXRMb2NhbChcInBwcmVQXCIpKSwgIC8vIFRPRE8gUmVtb3ZlIGlmIGFscmVhZHkgaW4gYWZmaW5lXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwQWRkU3RlcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBBZGRTdGVwXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2VmXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWDIgID0gYy5nZXRMb2NhbChcInBRXCIpO1xuICAgICAgICBjb25zdCBZMiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBRXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEQgPSBFTExfVlc7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBEID0gWDEgLSBYMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMiwgWjEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBYMSwgRCwgRCksXG5cbiAgICAgICAgICAgIC8vIEUgPSBZMSAtIFkyKloxXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFkyLCBaMSwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFkxLCBFLCBFKSxcblxuICAgICAgICAgICAgLy8gRiA9IEReMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBELCBGKSxcblxuICAgICAgICAgICAgLy8gRyA9IEVeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBFLCBHKSxcblxuICAgICAgICAgICAgLy8gSCA9IEQqRlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBGLCBIKSxcblxuICAgICAgICAgICAgLy8gSSA9IFgxICogRlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMSwgRiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBIICsgWjEqRyAtIChJK0kpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEksIEksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBHLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgSCwgSiwgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEosIEFVWCwgSiksXG5cblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEQqSlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBKLCBYMSksXG5cbiAgICAgICAgICAgIC8vIFkzIChZMSkgPSBFKihJLUopLShIKlkxKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBILCBZMSwgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBJLCBKLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEFVWCwgWTEsIFkxKSxcblxuICAgICAgICAgICAgLy8gWjMgKFoxKSA9IFoxKkhcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWjEsIEgsIFoxKSxcblxuICAgICAgICAgICAgLy8gZWxsXzAgPSB4aSAqIChFICogWDIgLSBEICogWTIpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEQsIFkyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFLCBYMiwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBFTExfMCwgQVVYLCBFTExfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEVMTF8wLCBjLmkzMl9jb25zdChwQWx0Qm4xMjhUd2lzdCksIEVMTF8wKSxcblxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAtIEUgKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBFLCBFTExfVlYpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSBEIChsYXRlcjogKiB5UCAgICApXG4gICAgICAgICAgICAvLyBBbHJlYWR5IGFzc2lnbmVkXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwRG91YmxlU3RlcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBEYmxTdGVwXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgxICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgWTEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFoxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEEgPSBYMSAqIFkxIC8gMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMSwgYy5pMzJfY29uc3QocFR3b0ludiksIEEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYMSwgQSwgQSksXG5cbiAgICAgICAgICAgIC8vIEIgPSBZMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFkxLCBCKSxcblxuICAgICAgICAgICAgLy8gQyA9IFoxXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgWjEsIEMpLFxuXG4gICAgICAgICAgICAvLyBEID0gMyAqIENcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQywgQywgRCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQsIEMsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gdHdpc3RfYiAqIERcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocFR3aXN0Q29lZkIpLCBELCBFKSxcblxuICAgICAgICAgICAgLy8gRiA9IDMgKiBFXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUsIEUsIEYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBGLCBGKSxcblxuICAgICAgICAgICAgLy8gRyA9IChCK0YpLzJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgRiwgRyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEcsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBHKSxcblxuICAgICAgICAgICAgLy8gSCA9IChZMStaMSleMi0oQitDKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBCLCBDLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBZMSwgWjEsIEgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBILCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSCwgQVVYLCBIKSxcblxuICAgICAgICAgICAgLy8gSSA9IEUtQlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBFLCBCLCBJKSxcblxuICAgICAgICAgICAgLy8gSiA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgWDEsIEopLFxuXG4gICAgICAgICAgICAvLyBFX3NxdWFyZWQgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRTIpLFxuXG4gICAgICAgICAgICAvLyBYMyAoWDEpID0gQSAqIChCLUYpXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEIsIEYsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEEsIEFVWCwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gR14yIC0gMypFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEUyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFMiwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBHLCBZMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFkxLCBBVVgsIFkxKSxcblxuICAgICAgICAgICAgLy8gWjMgKFoxKSA9IEIgKiBIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEIsIEgsIFoxKSxcblxuICAgICAgICAgICAgLy8gZWxsXzAgPSB4aSAqIElcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBJLCBFTExfMCksXG5cbiAgICAgICAgICAgIC8vIGVsbF9WVyA9IC0gSCAobGF0ZXI6ICogeVApXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIEgsIEVMTF9WVyksXG5cbiAgICAgICAgICAgIC8vIGVsbF9WViA9IDMqSiAobGF0ZXI6ICogeFApXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEosIEosIEVMTF9WViksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEosIEVMTF9WViwgRUxMX1ZWKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsQnlRKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX211bEJ5UVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMikpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjE1NzU0NjM2MzgyODA4NDMwMTAzOTgzMjQyNjk0MzA4MjYwOTkyNjkwNDQyNzQzNDcyMTY4MjcyMTI2MTM4Njc4MzY0MzUwMjcyNjFcIiksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMTAzMDc2MDE1OTU4NzM3MDk3MDAxNTIyODQyNzM4MTYxMTIyNjQwNjkyMzAxMzA2MTY0MzY3NTU2MjUxOTQ4NTQ4MTU4NzU3MTM5NTRcIiksIGYxc2l6ZSApLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgTXVsQnlRWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIyODIxNTY1MTgyMTk0NTM2ODQ0NTQ4MTU5NTYxNjkzNTAyNjU5MzU5NjE3MTg1MjQ0MTIwMzY3MDc4MDc5NTU0MTg2NDg0MTI2NTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjM1MDU4NDM3Njc5MTE1NTYzNzg2ODcwMzAzMDk5ODQyNDg4NDU1NDAyNDM1MDk4OTkyNTk2NDEwMTM2NzgwOTMwMzMxMzA5MzA0MDNcIiksIGYxc2l6ZSApLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gVGhlIGZyb2Jlbml1c01hcCgxKSBpbiB0aGlzIGZpZWxkLCBpcyB0aGUgY29uanVnYXRlXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWCwgeDMsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeSwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBNdWxCeVFZLCB5MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB6LCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgYnVpbGRNdWxCeVEoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBRWCA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcblxuICAgICAgICBjb25zdCBwUiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChwUik7XG4gICAgICAgIGNvbnN0IFJYID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWSA9IGMuaTMyX2NvbnN0KHBSK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IFJaID0gYy5pMzJfY29uc3QocFIrMipmMnNpemUpO1xuXG4gICAgICAgIGNvbnN0IGNRWCA9IGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdCgwKSk7XG4gICAgICAgIGNvbnN0IGNRWSA9IGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBwUTEgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBRMSA9IGMuaTMyX2NvbnN0KHBRMSk7XG5cbiAgICAgICAgY29uc3QgcFEyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTIgPSBjLmkzMl9jb25zdChwUTIpO1xuICAgICAgICBjb25zdCBRMlkgPSBjLmkzMl9jb25zdChwUTIgKyBmMnNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9ub3JtYWxpemVcIiwgUVgsIGNRWCksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FYLCBSWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCBjUVksIFJZKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9vbmVcIiwgUlopLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBjUVgsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bEJ5UVwiLCBjUVgsIFExKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgUTEsIFEyKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgUTJZLCBRMlkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTEsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBRMiwgUiwgYy5nZXRMb2NhbChcInBDb2VmXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0T2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0T2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuXG4gICAgICAgIGNvbnN0IHBBVVgxMiA9IG1vZHVsZS5hbGxvYyhmdHNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMiA9IGMuaTMyX2NvbnN0KHBBVVgxMik7XG4gICAgICAgIGNvbnN0IEFVWDEyXzAgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8yID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzQgPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjIpO1xuICAgICAgICBjb25zdCBBVVgxMl82ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgQVVYMTJfOCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNCk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzEwID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSo1KTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgwLCBBVVgxMl8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDIsIEFVWDEyXzQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfNiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4NCwgQVVYMTJfOCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8xMCksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEFVWDEyLCB6MCwgejApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsQnkwMjQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fbXVsQnkwMjRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsMFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGxWV1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGxWVlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAgICAgICAgIC8vIFJlc3VsdCBpbiBGMTJcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwICA9IGMuZ2V0TG9jYWwoXCJwRWxsMFwiKTtcbiAgICAgICAgY29uc3QgeDIgID0gYy5nZXRMb2NhbChcInBFbGxWVlwiKTtcbiAgICAgICAgY29uc3QgeDQgID0gYy5nZXRMb2NhbChcInBFbGxWV1wiKTtcblxuICAgICAgICBjb25zdCB6MCAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHoxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDIqbjgpKTtcbiAgICAgICAgY29uc3QgejIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNCpuOCkpO1xuICAgICAgICBjb25zdCB6MyAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg2Km44KSk7XG4gICAgICAgIGNvbnN0IHo0ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDgqbjgpKTtcbiAgICAgICAgY29uc3QgejUgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMTAqbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBzMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgVDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBEMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gRDAgPSB6MCAqIHgwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MCwgeDAsIEQwKSxcbiAgICAgICAgICAgIC8vIEQyID0gejIgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejIsIHgyLCBEMiksXG4gICAgICAgICAgICAvLyBENCA9IHo0ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo0LCB4NCwgRDQpLFxuICAgICAgICAgICAgLy8gdDIgPSB6MCArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MCwgejQsIHQyKSxcbiAgICAgICAgICAgIC8vIHQxID0gejAgKyB6MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHoyLCB0MSksXG4gICAgICAgICAgICAvLyBzMCA9IHoxICsgejMgKyB6NTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejEsIHozLCBzMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCB6NSwgczApLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmFfLmFfID0gejAuXG4gICAgICAgICAgICAvLyBTMSA9IHoxICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MiwgUzEpLFxuICAgICAgICAgICAgLy8gVDMgPSBTMSArIEQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgRDQsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzICsgRDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgRDAsIHowKSxcbiAgICAgICAgICAgIC8vIHowID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmFfLmJfID0gejFcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHg0LCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDMgPSBUMyArIEQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUMywgRDIsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejEgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejEsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHoxKSxcbiAgICAgICAgICAgIC8vIHoxID0gVDQ7XG5cblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5jXyA9IHoyXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSB0MSAqIHQwIC0gRDAgLSBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQwLCBEMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSB6MyAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MywgeDQsIFQ0KSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQ0LCBTMSksXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYl8uYV8gPSB6MyAoejMgbmVlZHMgejIpXG4gICAgICAgICAgICAvLyB0MCA9IHoyICsgejQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoyLCB6NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSBUMyArIFQ0O1xuICAgICAgICAgICAgLy8gejIgPSBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIFQ0LCB6MiksXG4gICAgICAgICAgICAvLyB0MSA9IHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB4NCwgdDEpLFxuICAgICAgICAgICAgLy8gVDMgPSB0MCAqIHQxIC0gRDIgLSBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQyLCBENCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gVDMgPSB6MyAqIHgwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MywgeDAsIFQzKSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQzLCBTMSksXG4gICAgICAgICAgICAvLyBUNCA9IFQ0ICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQ0LCBUMywgejMpLFxuICAgICAgICAgICAgLy8gejMgPSBUNDtcblxuICAgICAgICAgICAgLy8gRm9yIHouYl8uYl8gPSB6NFxuICAgICAgICAgICAgLy8gVDMgPSB6NSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NSwgeDIsIFQzKSxcbiAgICAgICAgICAgIC8vIFMxID0gUzEgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIFQzLCBTMSksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSB0MiAqIHQwIC0gRDAgLSBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDIsIHQwLCBUMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEQwLCBENCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIEFVWCwgVDMpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHo0KSxcbiAgICAgICAgICAgIC8vIHo0ID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmNfID0gejUuXG4gICAgICAgICAgICAvLyB0MCA9IHgwICsgeDIgKyB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgyLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB4NCwgdDApLFxuICAgICAgICAgICAgLy8gVDMgPSBzMCAqIHQwIC0gUzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHMwLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBUMywgUzEsIHo1KSxcbiAgICAgICAgICAgIC8vIHo1ID0gVDM7XG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTWlsbGVyTG9vcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX21pbGxlckxvb3BcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHByZVBfUFggPSBjLmdldExvY2FsKFwicHByZVBcIik7XG4gICAgICAgIGNvbnN0IHByZVBfUFkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVQXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuXG4gICAgICAgIGNvbnN0IHBWVyA9IG1vZHVsZS5hbGxvYyhmMnNpemUpO1xuICAgICAgICBjb25zdCBWVyA9IGMuaTMyX2NvbnN0KHBWVyk7XG4gICAgICAgIGNvbnN0IHBWViA9IG1vZHVsZS5hbGxvYyhmMnNpemUpO1xuICAgICAgICBjb25zdCBWViA9IGMuaTMyX2NvbnN0KHBWVik7XG5cbiAgICAgICAgY29uc3QgRiA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCBGKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX3NxdWFyZVwiLCBGLCBGKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVyxwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwQXRlTG9vcEJpdEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZXLCBwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlYsIHByZVBfUFgsIFZWKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZXLCBwcmVQX1BZLCBWVyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlYsIHByZVBfUFgsIFZWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvYmVuaXVzTWFwKG4pIHtcbiAgICAgICAgY29uc3QgRjEyID0gW1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbODM3NjExODg2NTc2MzgyMTQ5NjU4Mzk3Mzg2NzYyNjM2NDA5MjU4OTkwNjA2NTg2ODI5ODc3NjkwOTYxNzkxNjAxODc2ODM0MDA4MG4sIDE2NDY5ODIzMzIzMDc3ODA4MjIzODg5MTM3MjQxMTc2NTM2Nzk5MDA5Mjg2NjQ2MTA4MTY5OTM1NjU5MzAxNjEzOTYxNzEyMTk4MzE2bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMTY5NzQyMzQ5NjM1ODE1NDMwNDgyNTc4MjkyMjU4NDcyNTMxMjkxMjM4MzQ0MTE1OTUwNTAzODc5NDAyNzEwNTc3ODk1NDE4NDMxOW4sIDMwMzg0NzM4OTEzNTA2NTg4NzQyMjc4MzQ1NDg3NzYwOTk0MTQ1NjM0OTE4ODkxOTcxOTI3MjM0NTA4Mzk1NDQzNzg2MDQwOTYwMW5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzMyMTMwNDYzMDU5NDMzMjgwODI0MTgwOTA1NDk1ODM2MTIyMDMyMjQ3NzM3NTI5MTIwNjI2MTg4NDQwOTE4OTc2MDE4NTg0NDIzOW4sIDU3MjIyNjY5Mzc4OTY1MzI4ODU3ODAwNTE5NTg5NTgzNDgyMzExNDMzNzM3MDAxMDkzNzI5OTkzNzQ4MjAyMzUxMjEzNzQ0MTk4NjhuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODJuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzNTEyMTI0MDA2MDc1NDUzNzI1NjYyNDMxODc3NjMwOTEwOTk2MTA2NDA1MDkxNDI5NTI0ODg1Nzc5NDE5OTc4NjI2NDU3ODY4NTAzbiwgNTQxODQxOTU0ODc2MTQ2Njk5ODM1NzI2ODUwNDA4MDczODI4OTY4NzAyNDUxMTE4OTY1MzcyNzAyOTczNjI4MDY4MzUxNDAxMDI2N25dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDE5MDgxOTM3NTQ4MTEyMDkxNzQyMDYyMjgyMjY3MjU0OTc3NTc4MzkyNzcxNjEzODMxODYyMzg5NTAxMDc4ODg2NjI3MjAyNDI2NG4sIDIxNTg0Mzk1NDgyNzA0MjA5MzM0ODIzNjIyMjkwMzc5NjY1MTQ3MjM5OTYxOTY4Mzc4MTA0MzkwMzQzOTUzOTQwMjA3MzY1Nzk4OTgybl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzE4NTY2OTM4MjQxMjQ0OTQyNDE0MDA0NTk2NjkwMjk4OTEzODY4MzczODMzNzgyMDA2NjE3NDAwODA0NjI4NzA0ODg1MDQwMzY0MzQ0biwgMTYxNjU5NzU5MzM5NDI3NDIzMzY0NjYzNTM3ODYyOTg5MjY4NTc1NTI5Mzc0NTcxODg0NTA2NjMzMTQyMTc2NTk1MjM4NTE3ODg3MTVuXSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGNiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxbiwgMTAzMDc2MDE1OTU4NzM3MDk3MDAxNTIyODQyNzM4MTYxMTIyNjQwNjkyMzAxMzA2MTY0MzY3NTU2MjUxOTQ4NTQ4MTU4NzU3MTM5NTRuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM3NzIwMDA4ODE5MTk4NTM3NzY0MzM2OTUxODY3MTM4NTgyMzkwMDkwNzM1OTM4MTcxOTU3NzE3NzMzODE5MTkzMTY0MTkzNDUyNjFuLCAyMjM2NTk1NDk1OTY3MjQ1MTg4MjgxNzAxMjQ4MjAzMTgxNzk1MTIxMDY4OTAyNjA1ODYxMjI3ODU1MjYxMTM3ODIwOTQ0MDA4OTI2bl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzE4NDI5MDIxMjIzNDc3ODUzNjU3NjYwNzkyMDM0MzY5ODY1ODM5MTE0NTA0NDQ2NDMxMjM0NzI2MzkyMDgwMDAyMTM3NTk4MDQ0NjQ0biwgOTM0NDA0NTc3OTk5ODMyMDMzMzgxMjQyMDIyMzIzNzk4MTAyOTUwNjAxMjEyNDA3NTUyNTY3OTIwODU4MTkwMjAwODQwNjQ4NTcwM25dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMjU4MTkxMTM0NDQ2NzAwOTMzNTI2NzMxMTExNTQ2ODgwMzA5OTU1MTY2NTYwNTA3NjE5Njc0MDg2NzgwNTI1ODU2ODIzNDM0NjMzOG4sIDE5OTM3NzU2OTcxNzc1NjQ3OTg3OTk1OTMyMTY5OTI5MzQxOTk0MzE0NjQwNjUyOTY0OTQ5NDQ4MzEzMzc0NDcyNDAwNzE2NjYxMDMwbl0sXG4gICAgICAgICAgICAgICAgWzIyMDM5NjA0ODUxNDgxMjE5MjE0MTg2MDM3NDI4MjU3NjIwMjA5NzQyNzkyNTg4ODAyMDU2NTE5NjZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzUzMjQ0NzkyMDI0NDk5MDM1NDI3MjY3ODMzOTU1MDYyMTQ0ODE5MjgyNTc3NjI0MDA2NDMyNzk3ODAzNDMzNjg1NTcyOTcxMzU3MThuLCAxNjIwODkwMDM4MDczNzY5MzA4NDkxOTQ5NTEyNzMzNDM4Nzk4MTM5MzcyNjQxOTg1Njg4ODc5OTkxNzkxNDE4MDk4ODg0NDEyMzAzOW5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTM5ODE4NTIzMjQ5MjIzNjIzNDQyNTIzMTEyMzQyODIyNTc1MDcyMTYzODc3ODk4MjA5ODM2NDIwNDA4ODkyNjc1MTk2OTQ3MjY1MjduLCA3NjI5ODI4MzkxMTY1MjA5MzcxNTc3Mzg0MTkzMjUwODIwMjAxNjg0MjU1MjQxNzczODA5MDc3MTQ2Nzg3MTM1OTAwODkxNjMzMDk3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19mcm9iZW5pdXNNYXBcIituKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDY7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgWCA9IChpPT0wKSA/IGMuZ2V0TG9jYWwoXCJ4XCIpIDogYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgWGMwID0gWDtcbiAgICAgICAgICAgIGNvbnN0IFhjMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUgKyBmMXNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFIgPSAoaT09MCkgPyBjLmdldExvY2FsKFwiclwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFJjMCA9IFI7XG4gICAgICAgICAgICBjb25zdCBSYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gbXVsMihGMTJbTWF0aC5mbG9vcihpLzMpXVtuJTEyXSAsIEY2W2klM11bbiU2XSk7XG4gICAgICAgICAgICBjb25zdCBwQ29lZiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlswXSksIDMyKSxcbiAgICAgICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShjb2VmWzFdKSwgMzIpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gQmlnSW50KGFbMF0pO1xuICAgICAgICAgICAgY29uc3QgYWMxID0gQmlnSW50KGFbMV0pO1xuICAgICAgICAgICAgY29uc3QgYmMwID0gQmlnSW50KGJbMF0pO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gQmlnSW50KGJbMV0pO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW1xuICAgICAgICAgICAgICAgIChhYzAgKiBiYzAgLSAoICBhYzEgKiBiYzEpICApICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKCAgYWMxICogYmMwKSAgKSAlIHEsXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgaWYgKGlzTmVnYXRpdmUkMihyZXNbMF0pKSByZXNbMF0gPSByZXNbMF0gKyBxO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuXG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmsoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19maW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGVsdEMwID0gZWx0O1xuICAgICAgICBjb25zdCBlbHRDMSA9IGMuaTMyX2FkZChlbHQsIGMuaTMyX2NvbnN0KG44KjYpKTtcbiAgICAgICAgY29uc3QgciA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBwQSA9IG1vZHVsZS5hbGxvYyhmdHNpemUpO1xuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QocEEpO1xuICAgICAgICBjb25zdCBBYzAgPSBBO1xuICAgICAgICBjb25zdCBBYzEgPSBjLmkzMl9jb25zdChwQSArIG44KjYpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEEgPSBhbHRfYm4xMjhfRnExMihlbHQuYzAsLWVsdC5jMSk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfY29weVwiLCBlbHRDMCwgQWMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9uZWdcIiwgZWx0QzEsIEFjMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEIgPSBlbHQuaW52ZXJzZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCBCKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgQyA9IEEgKiBCO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEQgPSBDLkZyb2Jlbml1c19tYXAoMik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcDJcIiwgQywgRCksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiByZXN1bHQgPSBEICogQztcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQywgRCwgciksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHg0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjQgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDMqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0KmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByNSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNSpmMnNpemUpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vICAgIC8vIHQwICsgdDEqeSA9ICh6MCArIHoxKnkpXjIgPSBhXjJcbiAgICAgICAgICAgIC8vICAgIHRtcCA9IHowICogejE7XG4gICAgICAgICAgICAvLyAgICB0MCA9ICh6MCArIHoxKSAqICh6MCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gICAgdDEgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDMsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDMsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBBVVgsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQzKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQ0ICsgdDUqeSA9ICh6NCArIHo1KnkpXjIgPSBjXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6NCAqIHo1O1xuICAgICAgICAgICAgLy8gIHQ0ID0gKHo0ICsgejUpICogKHo0ICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHo1KSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDUgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg0LCB4NSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDUsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCBBVVgsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQ1KSxcblxuICAgICAgICAgICAgLy8gRm9yIEFcbiAgICAgICAgICAgIC8vIHowID0gMyAqIHQwIC0gMiAqIHowXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMCwgcjAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHIwLCByMCksXG4gICAgICAgICAgICAvLyB6MSA9IDMgKiB0MSArIDIgKiB6MVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjEsIHIxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQlxuICAgICAgICAgICAgLy8gejIgPSAzICogKHhpICogdDUpICsgMiAqIHoyXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ1LCBjLmkzMl9jb25zdChwQWx0Qm4xMjhUd2lzdCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgeDIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgcjIsIHIyKSxcbiAgICAgICAgICAgIC8vIHozID0gMyAqIHQ0IC0gMiAqIHozXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCB4MywgcjMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMywgcjMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHIzLCByMyksXG5cbiAgICAgICAgICAgIC8vIEZvciBDXG4gICAgICAgICAgICAvLyB6NCA9IDMgKiB0MiAtIDIgKiB6NFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgeDQsIHI0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjQsIHI0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCByNCwgcjQpLFxuICAgICAgICAgICAgLy8gejUgPSAzICogdDMgKyAyICogejVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHg1LCByNSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI1LCByNSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgcjUsIHI1KSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljRXhwKGV4cG9uZW50LCBmbk5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb25lbnROYWZCeXRlcyA9IG5hZihleHBvbmVudCkubWFwKCAoYikgPT4gKGI9PS0xID8gMHhGRjogYikgKTtcbiAgICAgICAgY29uc3QgcEV4cG9uZW50TmFmQnl0ZXMgPSBtb2R1bGUuYWxsb2MoZXhwb25lbnROYWZCeXRlcyk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBcIncwXCIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBDID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBLID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBMID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBOID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBPID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBQID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBRID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBTID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuXG4gICAgICAgICAgICAvLyBBID0gZXhwX2J5X25lZ196KGVsdCkgIC8vID0gZWx0XigteilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBlbHQsIEEpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBBLCBBKSxcbiAgICAgICAgICAgIC8vIEIgPSBBXjIgICAgICAgICAgICAgICAgLy8gPSBlbHReKC0yKnopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgQSwgQiksXG4gICAgICAgICAgICAvLyBDID0gQl4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtNCp6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEIsIEMpLFxuICAgICAgICAgICAgLy8gRCA9IEMgKiBCICAgICAgICAgICAgICAvLyA9IGVsdF4oLTYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQywgQiwgRCksXG4gICAgICAgICAgICAvLyBFID0gZXhwX2J5X25lZ196KEQpICAgIC8vID0gZWx0Xig2KnpeMilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBELCBFKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRSwgRSksXG4gICAgICAgICAgICAvLyBGID0gRV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigxMip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgRSwgRiksXG4gICAgICAgICAgICAvLyBHID0gZXB4X2J5X25lZ196KEYpICAgIC8vID0gZWx0XigtMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBHKSxcbiAgICAgICAgICAgIC8vIEggPSBjb25qKEQpICAgICAgICAgICAgLy8gPSBlbHReKDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRCwgSCksXG4gICAgICAgICAgICAvLyBJID0gY29uaihHKSAgICAgICAgICAgIC8vID0gZWx0XigxMip6XjMpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEcsIEkpLFxuICAgICAgICAgICAgLy8gSiA9IEkgKiBFICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEksIEUsIEopLFxuICAgICAgICAgICAgLy8gSyA9IEogKiBIICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEosIEgsIEspLFxuICAgICAgICAgICAgLy8gTCA9IEsgKiBCICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA0KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEssIEIsIEwpLFxuICAgICAgICAgICAgLy8gTSA9IEsgKiBFICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgMTIqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBFLCBNKSxcblxuICAgICAgICAgICAgLy8gTiA9IE0gKiBlbHQgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgMTIqel4yICsgNip6ICsgMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTSwgZWx0LCBOKSxcblxuICAgICAgICAgICAgLy8gTyA9IEwuRnJvYmVuaXVzX21hcCgxKSAvLyA9IGVsdF4ocSooMTIqel4zICsgNip6XjIgKyA0KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAxXCIsIEwsIE8pLFxuICAgICAgICAgICAgLy8gUCA9IE8gKiBOICAgICAgICAgICAgICAvLyA9IGVsdF4ocSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBPLCBOLCBQKSxcbiAgICAgICAgICAgIC8vIFEgPSBLLkZyb2Jlbml1c19tYXAoMikgLy8gPSBlbHReKHFeMiAqICgxMip6XjMgKyA2KnpeMiArIDYqeikpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcDJcIiwgSywgUSksXG4gICAgICAgICAgICAvLyBSID0gUSAqIFAgICAgICAgICAgICAgIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopICsgcSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBRLCBQLCBSKSxcbiAgICAgICAgICAgIC8vIFMgPSBjb25qKGVsdCkgICAgICAgICAgLy8gPSBlbHReKC0xKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBlbHQsIFMpLFxuICAgICAgICAgICAgLy8gVCA9IFMgKiBMICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zICsgNip6XjIgKyA0KnogLSAxKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBTLCBMLCBUKSxcbiAgICAgICAgICAgIC8vIFUgPSBULkZyb2Jlbml1c19tYXAoMykgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAzXCIsIFQsIFUpLFxuICAgICAgICAgICAgLy8gViA9IFUgKiBSICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4zKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSkgKyBxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopICsgcSooMTIqel4zICsgNip6XjIgKyA0KnopICogKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBVLCBSLCByZXN1bHQpLFxuICAgICAgICAgICAgLy8gcmVzdWx0ID0gVlxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCkge1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCk7XG4gICAgICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVuaygpO1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCBlbHRUb0ZpcnN0Q2h1bmsgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19maW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVua1wiLCBlbHQsIGVsdFRvRmlyc3RDaHVuayApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19maW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rXCIsIGVsdFRvRmlyc3RDaHVuaywgcmVzdWx0IClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDU1MjQ4NDIzMzYxMzIyNDA5NjMxMjYxNzEyNjc4MzE3MzE0NzA5NzM4MjEwMzc2Mjk1NzY1NDE4ODg4MjczNDMxNDE5NjkxMDgzOTkwNzU0MTIxMzk3NDUwMjc2MTU0MDYyOTgxNzAwOTYwODU0ODY1NDY4MDM0MzYyNzcwMTE1MzgyOTQ0Njc0NzgxMDkwNzM3MzI1Njg0MTU1MTAwNjIwMTYzOTY3NzcyNjEzOTk0NjAyOTE5OTk2ODQxMjU5ODgwNDg4MjM5MTcwMjI3MzAxOTA4MzY1MzI3MjA0NzU2NjMxNjU4NDM2NTU1OTc3NjQ5MzAyNzQ5NTQ1ODIzODM3MzkwMjg3NTkzNzY1OTk0MzUwNDg3MzIyMDU1NDE2MTU1MDUyNTkyNjMwMjMwMzMzMTc0NzQ2MzUxNTY0NDcxMTg3NjY1MzE3NzEyOTU3ODMwMzE5MTA5NTkwMDkwOTE5MTYyNDgxNzgyNjU2NjY4ODI0MTgwNDQwODA4MTg5Mjc4NTcyNTk2NzkzMTcxNDA5NzcxNjcwOTUyNjA5MjI2MTI3ODA3MTk1MjU2MDE3MTExMTQ0NDA3MjA0OTIyOTEyMzU2NTA1NzQ4Mzc1MDE2MTQ2MDAyNDM1MzM0NjI4NDE2NzI4MjQ1Mjc1NjIxNzY2MjMzNTUyODgxMzUxOTEzOTgwODI5MTE3MDUzOTA3MjEyNTM4MTIzMDgxNTcyOTA3MTU0NDg2MTYwMjc1MDkzNjk2NDgyOTMxMzYwODEzNzMyNTQyNjM4MzczNTEyMjE3NTIyOTU0MTE1NTM3NjM0NjQzNjA5MzkzMDI4NzQwMjA4OTUxNzQyNjk3MzE3ODkxNzU2OTcxMzM4NDc0ODA4MTgyNzI1NTQ3MjU3NjkzNzQ3MTQ5NjE5NTc1MjcyNzE4ODI2MTQzNTYzMzI3MTIzODcxMDEzMTczNjA5NjI5OTc5ODE2ODg1MjkyNTU0MDU0OTM0MjMzMDc3NTI3OTg3NzAwNjc4NDM1NDgwMTQyMjI0OTcyMjU3Mzc4MzU2MTY4NTE3OTYxODgxNjQ4MDAzNzY5NTAwNTUxNTQyNjE2MjM2MjQzMTA3MjI0NTYzODMyNDc0NDQ4MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCAzNTIgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCgzNTIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuXG4gICAgY29uc3QgcFByZVAgPSBtb2R1bGUuYWxsb2MocHJlUFNpemUpO1xuICAgIGNvbnN0IHBQcmVRID0gbW9kdWxlLmFsbG9jKHByZVFTaXplKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZ0VxdWF0aW9uKG5QYWlyaW5ncykge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wYWlyaW5nRXFcIituUGFpcmluZ3MpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJwX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInFfXCIraSwgXCJpMzJcIik7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRQYXJhbShcImNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcmVzVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgYXV4VCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXNUICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiLCBjLmdldExvY2FsKFwicF9cIitpKSwgYy5pMzJfY29uc3QocFByZVApICkpO1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgYXV4VCApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzVCwgYXV4VCwgcmVzVCApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiLCByZXNULCByZXNUICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXFcIiwgcmVzVCwgYy5nZXRMb2NhbChcImNcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZygpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFcIiksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9taWxsZXJMb29wXCIsIGMuaTMyX2NvbnN0KHBQcmVQKSwgYy5pMzJfY29uc3QocFByZVEpLCByZXNUICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgYy5nZXRMb2NhbChcInJcIikgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZFByZXBBZGRTdGVwKCk7XG4gICAgYnVpbGRQcmVwRG91YmxlU3RlcCgpO1xuXG4gICAgYnVpbGRQcmVwYXJlRzEoKTtcbiAgICBidWlsZFByZXBhcmVHMigpO1xuXG4gICAgYnVpbGRNdWxCeTAyNCgpO1xuICAgIGJ1aWxkTXVsQnkwMjRPbGQoKTtcbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwXCIraSk7XG4gICAgfVxuXG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCk7XG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCk7XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PTU7IGkrKykge1xuICAgICAgICBidWlsZFBhaXJpbmdFcXVhdGlvbihpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdFcVwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkUGFpcmluZygpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX211bEJ5MDI0T2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQxID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0gPWJ1aWxkX2YxbTtcbmNvbnN0IGJ1aWxkRjEgPWJ1aWxkX2YxO1xuY29uc3QgYnVpbGRGMm0gPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtID1idWlsZF9mM207XG5jb25zdCBidWlsZEN1cnZlID1idWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMDtcbmNvbnN0IGJ1aWxkRkZUJDEgPSBidWlsZF9mZnQ7XG5jb25zdCBidWlsZFBvbCA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQID0gYnVpbGRfcWFwO1xuY29uc3QgYnVpbGRBcHBseUtleSA9IGJ1aWxkX2FwcGx5a2V5O1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQxLCBpc09kZCwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQxIH0gPSBiaWdpbnQ7XG5cbi8vIERlZmluaXRpb24gaGVyZTogaHR0cHM6Ly9lbGVjdHJpY2NvaW4uY28vYmxvZy9uZXctc25hcmstY3VydmUvXG5cbnZhciBidWlsZF9ibHMxMjM4MSA9IGZ1bmN0aW9uIGJ1aWxkQkxTMTIzODEobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYmxzMTIzODFcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMHgxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhYWJuO1xuICAgIGNvbnN0IHIgPSAweDczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFuO1xuXG4gICAgY29uc3QgbjY0cSA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQxKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjhxID0gbjY0cSo4O1xuICAgIGNvbnN0IGYxc2l6ZSA9IG44cTtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgbjY0ciA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQxKHIgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjhyID0gbjY0cio4O1xuICAgIGNvbnN0IGZyc2l6ZSA9IG44cjtcblxuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0obW9kdWxlLCBxLCBcImYxbVwiLCBcImludHFcIik7XG4gICAgYnVpbGRGMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIiwgXCJpbnRyXCIpO1xuICAgIGNvbnN0IHBHMWIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDRuKSwgZjFzaXplICkpO1xuICAgIGNvbnN0IGcxbVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDEobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbChtb2R1bGUsIFwicG9sXCIsIFwiZnJtXCIpO1xuICAgIGJ1aWxkUUFQKG1vZHVsZSwgXCJxYXBcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBmMm1QcmVmaXggPSBidWlsZEYybShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDRuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZShtb2R1bGUsIFwiZzJtXCIsIFwiZjJtXCIsIHBHMmIpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEdUaW1lc0ZyKGZuTmFtZSwgb3BNdWwpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEdcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRnJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOHIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXCJmcm1fZnJvbU1vbnRnb21lcnlcIiwgYy5nZXRMb2NhbChcInBGclwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBvcE11bCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEdcIiksXG4gICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ciksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5KG1vZHVsZSwgXCJmcm1fYmF0Y2hBcHBseUtleVwiLCBcImZtclwiLCBcImZybVwiLCBuOHIsIG44ciwgbjhyLCBcImZybV9tdWxcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjMsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOHEqMiwgbjhxKjMsIG44ciwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5KG1vZHVsZSwgXCJnMm1fYmF0Y2hBcHBseUtleVwiLCBcImcybVwiLCBcImZybVwiLCBuOHEqMiozLCBuOHEqMyoyLCBuOHIsIFwiZzJtX3RpbWVzRnJcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcybVwiLCBcImZybVwiLCBuOHEqMioyLCBuOHEqMyoyLCBuOHIsIFwiZzJtX3RpbWVzRnJBZmZpbmVcIik7XG5cblxuICAgIGZ1bmN0aW9uIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQoYSkgKiAoMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAzNjg1NDE2NzUzNzEzMzg3MDE2NzgxMDg4MzE1MTgzMDc3NzU3OTYxNjIwNzk1NzgyNTQ2NDA5ODk0NTc4Mzc4Njg4NjA3NTkyMzc4Mzc2MzE4ODM2MDU0OTQ3Njc2MzQ1ODIxNTQ4MTA0MTg1NDY0NTA3bixcbiAgICAgICAgMTMzOTUwNjU0NDk0NDQ3NjQ3MzAyMDQ3MTM3OTk0MTkyMTIyMTU4NDkzMzg3NTkzODM0OTYyMDQyNjU0MzczNjQxNjUxMTQyMzk1NjMzMzUwNjQ3MjcyNDY1NTM1MzM2NjUzNDk5MjM5MTc1NjQ0MTU2OW4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMzUyNzAxMDY5NTg3NDY2NjE4MTg3MTM5MTE2MDExMDYwMTQ0ODkwMDI5OTUyNzkyNzc1MjQwMjE5OTA4NjQ0MjM5NzkzNzg1NzM1NzE1MDI2ODczMzQ3NjAwMzQzODY1MTc1OTUyNzYxOTI2MzAzMTYwbixcbiAgICAgICAgICAgIDMwNTkxNDQzNDQyNDQyMTM3MDk5NzEyNTk4MTQ3NTM3ODE2MzY5ODY0NzAzMjU0NzY2NDc1NTg2NTkzNzMyMDYyOTE2MzUzMjQ3Njg5NTg0MzI0MzM1MDk1NjMxMDQzNDcwMTc4Mzc4ODU3NjMzNjU3NThuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDE5ODUxNTA2MDIyODcyOTE5MzU1NjgwNTQ1MjExNzcxNzE2MzgzMDA4Njg5NzgyMTU2NTU3MzA4NTkzNzg2NjUwNjYzNDQ3MjYzNzM4MjM3MTg0MjM4NjkxMDQyNjMzMzM5ODQ2NDE0OTQzNDAzNDc5MDVuLFxuICAgICAgICAgICAgOTI3NTUzNjY1NDkyMzMyNDU1NzQ3MjAxOTY1Nzc2MDM3ODgwNzU3NzQwMTkzNDUzNTkyOTcwMDI1MDI3OTc4NzkzOTc2ODc3MDAyNjc1NTY0OTgwOTQ5Mjg5NzI3OTU3NTY1NTc1NDMzMzQ0MjE5NTgybixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMmdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzFdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsyXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcyemVybyA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMG4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF1cbiAgICBdO1xuXG4gICAgY29uc3QgcEcyemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1swXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1sxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyemVyb1syXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IHBPbmVUID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBCbHMxMjM4MVR3aXN0ID0gIG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmMm1QcmVmaXggKyBcIl9tdWxOUlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHgwYyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeDEsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgwYywgeDEsIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRfbXVsTlIyKCk7XG5cbiAgICBjb25zdCBmNm1QcmVmaXggPSBidWlsZEYzbShtb2R1bGUsIGYybVByZWZpeCtcIl9tdWxOUlwiLCBcImY2bVwiLCBcImYybVwiKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkX211bE5SNigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWxOUlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGMwY29weSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYzBjb3B5XG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bE5SXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOHEqMikpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSo0KSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICBjMGNvcHksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SNigpO1xuXG4gICAgY29uc3QgZnRtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBmNm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuICAgIGNvbnN0IGF0ZUxvb3BDb3VudCA9IDB4ZDIwMTAwMDAwMDAxMDAwMG47XG4gICAgY29uc3QgYXRlTG9vcEJpdEJ5dGVzID0gYml0cyhhdGVMb29wQ291bnQpO1xuICAgIGNvbnN0IHBBdGVMb29wQml0Qnl0ZXMgPSBtb2R1bGUuYWxsb2MoYXRlTG9vcEJpdEJ5dGVzKTtcblxuICAgIGNvbnN0IGF0ZUNvZWZTaXplID0gMyAqIGYyc2l6ZTtcbiAgICBjb25zdCBhdGVORGJsQ29lZnMgPSBhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTE7XG4gICAgY29uc3QgYXRlTkFkZENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLnJlZHVjZSgoYWNjLCBiKSA9PiAgYWNjICsgKCBiIT0wID8gMSA6IDApICAgLDApO1xuICAgIGNvbnN0IGF0ZU5Db2VmcyA9IGF0ZU5BZGRDb2VmcyArIGF0ZU5EYmxDb2VmcyArIDE7XG4gICAgY29uc3QgcHJlUFNpemUgPSAzKjIqbjhxO1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOHEqMiArIGF0ZU5Db2VmcyphdGVDb2VmU2l6ZTtcbiAgICBjb25zdCBmaW5hbEV4cElzTmVnYXRpdmUgPSB0cnVlO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gMTUxMzIzNzYyMjI5NDE2NDI3NTJuO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjRxOiBuNjRxLFxuICAgICAgICBuNjRyOiBuNjRyLFxuICAgICAgICBuOHE6IG44cSxcbiAgICAgICAgbjhyOiBuOHIsXG4gICAgICAgIHBHMWdlbjogcEcxZ2VuLFxuICAgICAgICBwRzF6ZXJvOiBwRzF6ZXJvLFxuICAgICAgICBwRzFiOiBwRzFiLFxuICAgICAgICBwRzJnZW46IHBHMmdlbixcbiAgICAgICAgcEcyemVybzogcEcyemVybyxcbiAgICAgICAgcEcyYjogcEcyYixcbiAgICAgICAgcHE6IG1vZHVsZS5tb2R1bGVzW1wiZjFtXCJdLnBxLFxuICAgICAgICBwcjogcHIsXG4gICAgICAgIHBPbmVUOiBwT25lVCxcbiAgICAgICAgcjogcixcbiAgICAgICAgcTogcSxcbiAgICAgICAgcHJlUFNpemU6IHByZVBTaXplLFxuICAgICAgICBwcmVRU2l6ZTogcHJlUVNpemVcbiAgICB9O1xuXG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQoRSkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gMiAtIE51bWJlcihFICUgNG4pO1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKCB6ICk7XG4gICAgICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlcy5wdXNoKCAwICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBFID0gRSA+PiAxbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJpdHMobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQoRSkpIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMSApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBQXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5nZXRMb2NhbChcInBwcmVQXCIpKSwgIC8vIFRPRE8gUmVtb3ZlIGlmIGFscmVhZHkgaW4gYWZmaW5lXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIlJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUnggID0gYy5nZXRMb2NhbChcIlJcIik7XG4gICAgICAgIGNvbnN0IFJ5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgUnogID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHQwICA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCB0MyAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IHQ2ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnguc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ4LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSByLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ5LCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDIgPSB0bXAxLnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gKHRtcDEgKyByLngpLnNxdWFyZSgpIC0gdG1wMCAtIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCBSeCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MywgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgdDAsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDMgPSB0bXAzICsgdG1wMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHQzLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDQgPSB0bXAwICsgdG1wMCArIHRtcDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDAsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdG1wNiA9IHIueCArIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ4LCB0NCwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0bXA1ID0gdG1wNC5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDQsIHQ1KSxcblxuICAgICAgICAgICAgLy8genNxdWFyZWQgPSByLnouc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCB6c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHRtcDUgLSB0bXAzIC0gdG1wMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDUsIHQzLCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0MywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgci55KS5zcXVhcmUoKSAtIHRtcDEgLSB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIFJ5LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB0MSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgenNxdWFyZWQsIFJ6KSxcblxuICAgICAgICAgICAgLy8gci55ID0gKHRtcDMgLSByLngpICogdG1wNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIFJ4LCBSeSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NCwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMiArIHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyByLnkgLT0gdG1wMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnksIHQyLCBSeSksXG5cbiAgICAgICAgICAgIC8vIHRtcDMgPSB0bXA0ICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB6c3F1YXJlZCwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gLXRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQzLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2LnNxdWFyZSgpIC0gdG1wMCAtIHRtcDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ2LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCB0MCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDUsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wMSA9IHRtcDEgKyB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdG1wMSA9IHRtcDEgKyB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdG1wNiA9IHRtcDYgLSB0bXAxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDEsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wMCA9IHIueiAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeiwgenNxdWFyZWQsIHQwKSxcblxuICAgICAgICAgICAgLy8gdG1wMCA9IHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQwKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIlJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCBReCAgPSBjLmdldExvY2FsKFwiUVwiKTtcbiAgICAgICAgY29uc3QgUXkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJRXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuXG4gICAgICAgIGNvbnN0IHQxMCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0OSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgenNxdWFyZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6dHNxdWFyZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0OCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyB5c3F1YXJlZCA9IHEueS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUXksIHlzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDAgPSB6c3F1YXJlZCAqIHEueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgenNxdWFyZWQsIFF4LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHQxID0gKChxLnkgKyByLnopLnNxdWFyZSgpIC0geXNxdWFyZWQgLSB6c3F1YXJlZCkgKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUXksIFJ6LCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCB5c3F1YXJlZCwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgenNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHQyID0gdDAgLSByLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBSeCwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MyA9IHQyLnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IHQzICsgdDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IHQ0ICsgdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCB0NCwgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NSA9IHQ0ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0MiwgdDUpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQxIC0gci55IC0gci55O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgUnksIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIFJ5LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ5ID0gdDYgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCBReCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0NyA9IHQ0ICogci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgUngsIHQ3KSxcblxuICAgICAgICAgICAgLy8gci54ID0gdDYuc3F1YXJlKCkgLSB0NSAtIHQ3IC0gdDc7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ2LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NSwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDcsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG5cbiAgICAgICAgICAgIC8vIHIueiA9IChyLnogKyB0Mikuc3F1YXJlKCkgLSB6c3F1YXJlZCAtIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeiwgdDIsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB0MywgUnopLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSBxLnkgKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDggPSAodDcgLSByLngpICogdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ3LCBSeCwgdDgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0OCwgdDYsIHQ4KSxcblxuICAgICAgICAgICAgLy8gdDAgPSByLnkgKiB0NTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnksIHQ1LCB0MCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gdDAgKyB0MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHIueSA9IHQ4IC0gdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ4LCB0MCwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSB0MTAuc3F1YXJlKCkgLSB5c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEwLCB0MTApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHlzcXVhcmVkLCB0MTApLFxuXG4gICAgICAgICAgICAvLyB6dHNxdWFyZWQgPSByLnouc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCB6dHNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSB0MTAgLSB6dHNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxMCwgenRzcXVhcmVkLCB0MTApLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ5ICsgdDkgLSB0MTA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ5LCB0OSwgdDkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OSwgdDEwLCB0OSksXG5cbiAgICAgICAgICAgIC8vIHQxMCA9IHIueiArIHIuejtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIFJ6LCB0MTApLFxuXG4gICAgICAgICAgICAvLyB0NiA9IC10NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0NiArIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NiwgdDYsIHQxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcGFyZUcyKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcGFyZUcyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG5cbiAgICAgICAgY29uc3QgUSA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcblxuICAgICAgICBjb25zdCBwUiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChwUik7XG5cbiAgICAgICAgY29uc3QgYmFzZSA9IGMuZ2V0TG9jYWwoXCJwcHJlUVwiKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFEsIGJhc2UpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGJhc2UpLFxuICAgICAgICAgICAgICAgIGMucmV0KFtdKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9jb3B5XCIsIGJhc2UsIFIpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcERibFN0ZXBcIiwgUiwgYy5nZXRMb2NhbChcInBDb2VmXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwQXRlTG9vcEJpdEJ5dGVzKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFIsIGJhc2UsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXgrIFwiX211bDFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQVwiLCBcImkzMlwiKTsgICAgLy8gRjZcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQV9jMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYzEgID0gYy5nZXRMb2NhbChcInBDMVwiKTtcblxuICAgICAgICBjb25zdCB0MSA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IEFjMF9BYzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMxX0FjMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBX2MwLCBBX2MxLCBBYzBfQWMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMiwgQWMxX0FjMiksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMV9BYzIsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDIgPSAoc2VsZi5jMCArIHNlbGYuYzEpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMF9BYzEsIGMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGNk11bDEoKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkRjZNdWwwMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmNm1QcmVmaXgrIFwiX211bDAxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzBcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQV9jMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYzAgID0gYy5nZXRMb2NhbChcInBDMFwiKTtcbiAgICAgICAgY29uc3QgYzEgID0gYy5nZXRMb2NhbChcInBDMVwiKTtcblxuICAgICAgICBjb25zdCB0MSA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgYV9hID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IGJfYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMF9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYV9hID0gc2VsZi5jMCAqIGMwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MwLCBjMCwgYV9hKSxcblxuICAgICAgICAgICAgLy8gbGV0IGJfYiA9IHNlbGYuYzEgKiBjMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMSwgYzEsIGJfYiksXG5cblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBX2MwLCBBX2MxLCBBYzBfQWMxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMiwgQWMwX0FjMiksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IChzZWxmLmMxICsgc2VsZi5jMikgKiBjMSAtIGJfYjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MSwgYzEsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIGJfYiwgdDEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSB0MS5tdWxfYnlfbm9ucmVzaWR1ZSgpICsgYV9hO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHQxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCBhX2EsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKGMwICsgYzEpICogKHNlbGYuYzAgKyBzZWxmLmMxKSAtIGFfYSAtIGJfYjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzAsIGMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCBBYzBfQWMxLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBhX2EsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIGJfYiwgdDIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDMgPSAoc2VsZi5jMCArIHNlbGYuYzIpICogYzAgLSBhX2EgKyBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFjMF9BYzIsIGMwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBhX2EsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIGJfYiwgdDMpLFxuXG5cbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGNk11bDAxKCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRjEyTXVsMDE0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4KyBcIl9tdWwwMTRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQVwiLCBcImkzMlwiKTsgICAgLy8gRjEyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzBcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDMVwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEM0XCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgLy8gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IEFfYzAgPSBjLmdldExvY2FsKFwicEFcIik7XG4gICAgICAgIGNvbnN0IEFfYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNikpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG4gICAgICAgIGNvbnN0IGM0ICA9IGMuZ2V0TG9jYWwoXCJwQzRcIik7XG5cbiAgICAgICAgY29uc3QgYWEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjYpKTtcbiAgICAgICAgY29uc3QgYmIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjYpKTtcbiAgICAgICAgY29uc3QgbyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGNvbnN0IFJfYzAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFJfYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNikpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIGxldCBhYSA9IHNlbGYuYzAubXVsX2J5XzAxKGMwLCBjMSk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbXVsMDFcIiwgQV9jMCwgYzAsIGMxLCBhYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiYiA9IHNlbGYuYzEubXVsX2J5XzEoYzQpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDFcIiwgQV9jMSwgYzQsIGJiKSxcblxuICAgICAgICAgICAgLy8gbGV0IG8gPSBjMSArIGM0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBjMSwgYzQsIG8pLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBzZWxmLmMxICsgc2VsZi5jMDtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMSwgQV9jMCwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxLm11bF9ieV8wMShjMCwgJm8pO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIFJfYzEsIGMwLCBvLCBSX2MxKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gYzEgLSBhYSAtIGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBhYSwgUl9jMSksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfc3ViXCIsIFJfYzEsIGJiLCBSX2MxKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMwID0gYmI7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfY29weVwiLCBiYiwgUl9jMCksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGMwLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbXVsTlJcIiwgUl9jMCwgUl9jMCksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGMwICsgYWE7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIFJfYzAsIGFhLCBSX2MwKSxcbiAgICAgICAgKTtcbiAgICB9XG4gICAgYnVpbGRGMTJNdWwwMTQoKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFTEwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9lbGxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBDb2Vmc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUHggID0gYy5nZXRMb2NhbChcInBQXCIpO1xuICAgICAgICBjb25zdCBQeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBQXCIpLCBjLmkzMl9jb25zdChuOHEpKTtcblxuICAgICAgICBjb25zdCBGICA9IGMuZ2V0TG9jYWwoXCJwRlwiKTtcblxuICAgICAgICBjb25zdCBjb2VmMF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZnNcIik7XG4gICAgICAgIGNvbnN0IGNvZWYwXzEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuICAgICAgICBjb25zdCBjb2VmMV8wICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBjb2VmMV8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUqMykpO1xuICAgICAgICBjb25zdCBjb2VmMiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBwYzAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBjMCAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMCA9IGMuaTMyX2NvbnN0KHBjMCk7XG4gICAgICAgIGNvbnN0IGMwX2MxID0gYy5pMzJfY29uc3QocGMwK2Yxc2l6ZSk7XG5cbiAgICAgICAgY29uc3QgcGMxID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzEgID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzAgPSBjLmkzMl9jb25zdChwYzEpO1xuICAgICAgICBjb25zdCBjMV9jMSA9IGMuaTMyX2NvbnN0KHBjMStmMXNpemUpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAgbGV0IG11dCBjMCA9IGNvZWZmcy4wO1xuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzEgPSBjb2VmZnMuMTtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICBjMC5jMCAqPSBwLnk7XG4gICAgICAgICAgICAvLyAgICBjMC5jMSAqPSBwLnk7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzEuYzAgKj0gcC54O1xuICAgICAgICAgICAgLy8gICAgYzEuYzEgKj0gcC54O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgICBmLm11bF9ieV8wMTQoJmNvZWZmcy4yLCAmYzEsICZjMClcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMF8wLCBQeSwgYzBfYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMF8xLCBQeSwgYzBfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMV8wLCBQeCwgYzFfYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjb2VmMV8xLCBQeCwgYzFfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIsIEYsIGNvZWYyLCBjMSwgYzAsIEYpLFxuXG4gICAgICAgICk7XG5cbiAgICB9XG4gICAgYnVpbGRFTEwoKTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkTWlsbGVyTG9vcCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX21pbGxlckxvb3BcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBDb2VmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHByZVAgPSBjLmdldExvY2FsKFwicHByZVBcIik7XG5cbiAgICAgICAgY29uc3QgY29lZnMgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb1wiLCBwcmVQKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInBwcmVRXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX3NxdWFyZVwiLCBGLCBGKSxcblxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuXG4gICAgICAgICk7XG5cblxuICAgICAgICB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBGLCBGKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvYmVuaXVzTWFwKG4pIHtcbiAgICAgICAgY29uc3QgRjEyID0gW1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG4sIDE1MTY1NTE4NTE4NDQ5ODM4MTQ2NTY0Mjc0OTY4NDU0MDA5OTM5ODA3NTM5ODk2ODMyNTQ0NjY1NjAwNzYxMzUxMDQwMzIyNzI3MTIwMDEzOTM3MDUwNDkzMjAxNTk1Mjg4NjE0NjMwNDc2NjEzNTAyN25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI5NzM2Nzc0MDg5ODY1NjEwNDM0NDI0NjUzNDY1MjAxMDg4NzkxNzIwNDI4ODMwMDkyNDk5ODkxNzY0MTUwMTgwOTE0MjA4MDcxOTIxODI2Mzg1NjcxMTYzMTg1NzY0NzI2NDkzNDcwMTU5MTc2OTA1MzBuLCAxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3bl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMzEyNTMzMjU5NDE3MTA1OTQyNDkwODEwODA5NjIwNDY0ODk3ODU3MDExODI4MTk3NzU3NTQzNTgzMjQyMjYzMTYwMTgyNDAzNDQ2MzM4Mjc3NzkzNzYyMTI1MDU5MjQyNTUzNTQ5MzMyMDY4MzgyNTU1N24sIDg3NzA3Njk2MTA1MDYwNzk2ODUwOTY4MTcyOTUzMTI1NTE3Nzk4Njc2NDUzNzk2MTQzMjQ0OTQ5OTYzNTUwNDUyMjIwNzYxNjAyNzQ1NTA4NjUwNTA2NjM3ODUzNjU5MDEyODU0NDU3MzU4ODczNDIzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkzNDE3Nzg5ODI1NzM1OTA0MTU2NTU2ODgyODE5OTM5MDA3ODg1MzMyMDU4MTM2MTI0MDMxNjUwNDkwODM3ODY0NDQyNjg3NjI5MTI5MDE1NjY0MDM3ODk0MjcyNTU5Nzg2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduLCAzODUwNzU0MzcwMDM3MTY5MDExOTUyMTQ3MDc2MDUxMzY0MDU3MTU4ODA3NDIwOTcwNjgyNDM4Njc2MDUwNTIyNjEzNjI4NDIzMjE5NjM3NzI1MDcyMTgyNjk3MTEzMDYyNzc3ODkxNTg5NTA2NDI0NzYwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEwMjg3MzIxNDYyMzUxMDYzNDk5NzUzMjQ0NzkyMTU3OTUyNzczODQ4Mzk5MzY5Mjk3NTc4OTYxNTU2NDMxMTgwMzI2MTA4NDMyOTg2NTUyMjU4NzU1NzEzMTA1NTI1NDMwMTQ2OTA4NzgzNTQ4NjkyNTduLCAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzg3NzA3Njk2MTA1MDYwNzk2ODUwOTY4MTcyOTUzMTI1NTE3Nzk4Njc2NDUzNzk2MTQzMjQ0OTQ5OTYzNTUwNDUyMjIwNzYxNjAyNzQ1NTA4NjUwNTA2NjM3ODUzNjU5MDEyODU0NDU3MzU4ODczNDIzMG4sIDMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduXSxcbiAgICAgICAgICAgIF1cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGNiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMG4sIDFuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMG4sIDc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG5dLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbiwgMG5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTFuLCAwbl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIituKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDY7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgWCA9IChpPT0wKSA/IGMuZ2V0TG9jYWwoXCJ4XCIpIDogYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgWGMwID0gWDtcbiAgICAgICAgICAgIGNvbnN0IFhjMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUgKyBmMXNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFIgPSAoaT09MCkgPyBjLmdldExvY2FsKFwiclwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFJjMCA9IFI7XG4gICAgICAgICAgICBjb25zdCBSYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gbXVsMihGMTJbTWF0aC5mbG9vcihpLzMpXVtuJTEyXSAsIEY2W2klM11bbiU2XSk7XG4gICAgICAgICAgICBjb25zdCBwQ29lZiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlswXSksIG44cSksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIG44cSksXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIGlmIChuJTIgPT0gMSkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgWGMwLCBSYzApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbmVnXCIsIFhjMSwgUmMxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSLCBjLmkzMl9jb25zdChwQ29lZiksIFIpLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFgsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gbXVsMihhLCBiKSB7XG4gICAgICAgICAgICBjb25zdCBhYzAgPSBhWzBdO1xuICAgICAgICAgICAgY29uc3QgYWMxID0gYVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IGJbMF07XG4gICAgICAgICAgICBjb25zdCBiYzEgPSBiWzFdO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gW1xuICAgICAgICAgICAgICAgIChhYzAgKiBiYzAgLSAoYWMxICogYmMxKSkgJSBxLFxuICAgICAgICAgICAgICAgIChhYzAgKiBiYzEgKyAoYWMxICogYmMwKSkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDEocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljU3F1YXJlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHg0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjQgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDMqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0KmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByNSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNSpmMnNpemUpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vICAgIC8vIHQwICsgdDEqeSA9ICh6MCArIHoxKnkpXjIgPSBhXjJcbiAgICAgICAgICAgIC8vICAgIHRtcCA9IHowICogejE7XG4gICAgICAgICAgICAvLyAgICB0MCA9ICh6MCArIHoxKSAqICh6MCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gICAgdDEgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDAsIEFVWCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDEpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDIgKyB0Myp5ID0gKHoyICsgejMqeSleMiA9IGJeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHoyICogejM7XG4gICAgICAgICAgICAvLyAgdDIgPSAoejIgKyB6MykgKiAoejIgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejMpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0MyA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDIsIHgzLCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHgzLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgyLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDMsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDUsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB4NSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCBBVVgsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQ1KSxcblxuICAgICAgICAgICAgLy8gRm9yIEFcbiAgICAgICAgICAgIC8vIHowID0gMyAqIHQwIC0gMiAqIHowXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMCwgcjAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHIwLCByMCksXG4gICAgICAgICAgICAvLyB6MSA9IDMgKiB0MSArIDIgKiB6MVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjEsIHIxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQxLCByMSwgcjEpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQlxuICAgICAgICAgICAgLy8gejIgPSAzICogKHhpICogdDUpICsgMiAqIHoyXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQ1LCBjLmkzMl9jb25zdChwQmxzMTIzODFUd2lzdCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgeDIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjIsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFVWCwgcjIsIHIyKSxcbiAgICAgICAgICAgIC8vIHozID0gMyAqIHQ0IC0gMiAqIHozXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ0LCB4MywgcjMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByMywgcjMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHIzLCByMyksXG5cbiAgICAgICAgICAgIC8vIEZvciBDXG4gICAgICAgICAgICAvLyB6NCA9IDMgKiB0MiAtIDIgKiB6NFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgeDQsIHI0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjQsIHI0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQyLCByNCwgcjQpLFxuICAgICAgICAgICAgLy8gejUgPSAzICogdDMgKyAyICogejVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHg1LCByNSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI1LCByNSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgcjUsIHI1KSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRDeWNsb3RvbWljRXhwKGV4cG9uZW50LCBpc0V4cE5lZ2F0aXZlLCBmbk5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb25lbnROYWZCeXRlcyA9IG5hZihleHBvbmVudCkubWFwKCAoYikgPT4gKGI9PS0xID8gMHhGRjogYikgKTtcbiAgICAgICAgY29uc3QgcEV4cG9uZW50TmFmQnl0ZXMgPSBtb2R1bGUuYWxsb2MoZXhwb25lbnROYWZCeXRlcyk7XG4gICAgICAgIC8vIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscy5iaWdJbnQyQnl0ZXNMRShleHBvbmVudCwgbjgpKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2N5Y2xvdG9taWNFeHBfXCIrZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwieFwiKTtcblxuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcblxuICAgICAgICBjb25zdCBpbnZlcnNlID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCBpbnZlcnNlKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMSksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuZ2V0TG9jYWwoXCJpXCIpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6ICggYy5nZXRMb2NhbChcImlcIikgKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGlzRXhwTmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljU3F1YXJlKCk7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY0V4cChmaW5hbEV4cFosIGZpbmFsRXhwSXNOZWdhdGl2ZSwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgZWx0ID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ1ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDAgPSBmLmZyb2Jlbml1c19tYXAoNilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXA2XCIsIGVsdCwgdDApLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSBmLmludmVydCgpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfaW52ZXJzZVwiLCBlbHQsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0MiA9IHQwICogdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQwLCB0MSwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQyLmNsb25lKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29weVwiLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQyLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwMlwiLCB0MiwgdDIpLFxuXG4gICAgICAgICAgICAvLyB0MiAqPSB0MTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDIsIHQxLCB0MiksXG5cblxuICAgICAgICAgICAgLy8gdDEgPSBjeWNsb3RvbWljX3NxdWFyZSh0MikuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0MyA9IGN5Y29sb3RvbWljX2V4cCh0Mik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NCA9IGN5Y2xvdG9taWNfc3F1YXJlKHQzKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCB0MywgdDQpLFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQ1ID0gdDEgKiB0MztcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQzLCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljb2xvdG9taWNfZXhwKHQ1KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCB0NSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MCA9IGN5Y29sb3RvbWljX2V4cCh0MSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDEsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NiA9IGN5Y29sb3RvbWljX2V4cCh0MCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDAsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NCwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NCA9IGN5Y29sb3RvbWljX2V4cCh0Nik7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDYsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NS5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDUsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDQgKj0gdDUgKiB0MjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIHQ1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0MiwgdDQpLFxuXG4gICAgICAgICAgICAvLyB0NSA9IHQyLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB0MiwgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSAqPSB0MjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIHQyLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDEuZnJvYmVuaXVzX21hcCgpLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwM1wiLCB0MSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0NiAqPSB0NTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ID0gdDYuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDFcIiwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDA7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MCwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyA9IHQzLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwMlwiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0MTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQxLCB0MyksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDYsIHQzKSxcblxuICAgICAgICAgICAgLy8gZiA9IHQzICogdDQ7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0NCwgcmVzKSxcblxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZmluYWxFeHBvbmVudGlhdGlvbk9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGV4cG9uZW50ID0gMzIyMjc3MzYxNTE2OTM0MTQwNDYyODkxNTY0NTg2NTEwMTM5OTA4Mzc5OTY5NTE0ODI4NDk0MjE4MzY2Njg4MDI1Mjg4NjYxMDQxMTA0NjgyNzk0OTk4NjgwNDk3NTgwMDA4ODk5OTczMjQ5ODE0MTA0NDQ3NjkyNzc4OTg4MjA4Mzc2Nzc5NTczODE5NDg1MjYzMDI2MTU5NTg4NTEwNTEzODM0ODc2MzAzMDE0MDE2Nzk4ODA5OTE5MzQzNTMyODk5MTY0ODQ4NzMwMjgwOTQyNjA5OTU2NjcwOTE3NTY1NjE4MTE1ODY3Mjg3Mzk5NjIzMjg2ODEzMjcwMzU3OTAxNzMxNTEwMTg4MTQ5OTM0MzYzMzYwMzgxNjE0NTAxMzM0MDg2ODI1NDQyMjcxOTIwMDc5MzYzMjg5OTU0NTEwNTY1Mzc1Mzc4NDQzNzA0MzcyOTk0ODgxNDA2Nzk3ODgyNjc2OTcxMDgyMjAwNjI2NTQxOTE2NDEzMTg0NjQyNTIwMjY5Njc4ODk3NTU5NTMyMjYwOTQ5MzM0NzYwNjA0OTYyMDg2MzQ4ODk4MTE4OTgyMjQ4ODQyNjM0Mzc5NjM3NTk4NjY1NDY4ODE3NzY5MDc1ODc4NTU1NDkzNzUyMjE0NDkyNzkwMTIyNzg1ODUwMjAyOTU3NTc1MjAwMTc2MDg0MjA0NDIyNzUxNDg1OTU3MzM2NDY1NDcyMzI0ODEwOTgyODMzNjM4NDkwOTA0Mjc5MjgyNjk2MTM0MzIzMDcyNTE1MjIwMDQ0NDUxNTkyNjQ2ODg1NDEwNTcyMjM0NDUxNzMyNzkwNTkwMDEzNDc5MzU4MzQzODQxMjIwMDc0MTc0ODQ4MjIxNzIyMDE3MDgzNTk3ODcyMDE3NjM4NTE0MTAzMTc0MTIyNzg0ODQzOTI1NTc4MzcwNDMwODQzNTIyOTU5NjAwMDk1Njc2Mjg1NzIzNzM3MDQ5NDM4MzQ2NTQ0NzUzMTY4OTEyOTc0OTc2NzkxNTI4NTM1Mjc2MzE3MjU2OTA0MzM2NTIwMTc5MjgxMTQ1Mzk0Njg2NTY1MDUwNDE5MjUwNjE0MTA3ODAzMjMzMzE0NjU4ODI1NDYzMTE3OTAwMjUwNzAxMTk5MTgxNTI5MjA1OTQyMzYzMTU5MzI1NzY1OTkxODE5NDMzOTE0MzAzOTA4ODYwNDYwNzIwNTgxNDA4MjAxMzczMTY0MDQ3NzczNzk0ODI1NDExMDExOTIyMzA1ODIwMDY1NjExMTIxNTQ0NTYxODA4NDE0MDU1MzAyMjEyMDU3NDcxMzk1NzE5NDMyMDcyMjA5MjQ1NjAwMjU4MTM0MzY0NTg0NjM2ODEwMDkzNTIwMjg1NzExMDcyNTc4NzIxNDM1NTE3ODg0MTAzNTI2NDgzODMyNzMzMjg5ODAyNDI2MTU3MzAxNTQyNzQ0NDc2NzQwMDA4NDk0NzgwMzYzMzU0MzA1MTE2OTc4ODA1NjIwNjcxNDY3MDcxNDAwNzExMzU4ODM5NTUzMzc1MzQwNzI0ODk5NzM1NDYwNDgwMTQ0NTk5NzgyMDE0OTA2NTg2NTQzODEzMjkyMTU3OTIyMjIwNjQ1MDg5MTkyMTMwMjA5MzM0OTI2NjYxNTg4NzM3MDA3NzY4NTY1ODM4NTE5NDU2NjAxNTYwODA0OTU3OTg1NjY3ODgwMzk1MjIxMDQ5MjQ5ODAzNzUzNTgyNjM3NzA4NTYwbjtcblxuICAgICAgICBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggZXhwb25lbnQsIDU0NCApKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9leHBcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBFeHBvbmVudCksIGMuaTMyX2NvbnN0KDU0NCksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrc1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBjLmkzMl9jb25zdChwUHJlUCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVEpKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgYXV4VCApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzVCwgYXV4VCwgcmVzVCApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiLCByZXNULCByZXNUICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXFcIiwgcmVzVCwgYy5nZXRMb2NhbChcImNcIikpKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUGFpcmluZygpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzJcIiwgYy5nZXRMb2NhbChcInFcIiksIGMuaTMyX2NvbnN0KHBQcmVRKSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9taWxsZXJMb29wXCIsIGMuaTMyX2NvbnN0KHBQcmVQKSwgYy5pMzJfY29uc3QocFByZVEpLCByZXNUICkpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgYy5nZXRMb2NhbChcInJcIikgKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXSU5WID0gW1xuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5NG4sXG4gICAgICAgICAgICAyMDAxMjA0Nzc3NjEwODMzNjk2NzA4ODk0OTEyODY3OTUyMDc4Mjc4NDQxNDA5OTY5NTAzOTQyNjY2MDI5MDY4MDYyMDE1ODI1MjQ1NDE4OTMyMjIxMzQzODE0NTY0NTA3ODMyMDE4OTQ3MTM2Mjc5ODkzblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IEZST0IyWCA9IDQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuO1xuICAgICAgICBjb25zdCBGUk9CM1kgPSBbXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbixcbiAgICAgICAgICAgIDI5NzM2Nzc0MDg5ODY1NjEwNDM0NDI0NjUzNDY1MjAxMDg4NzkxNzIwNDI4ODMwMDkyNDk5ODkxNzY0MTUwMTgwOTE0MjA4MDcxOTIxODI2Mzg1NjcxMTYzMTg1NzY0NzI2NDkzNDcwMTU5MTc2OTA1MzBuXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgd0ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzBdKSwgbjhxKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KFdJTlZbMV0pLCBuOHEpLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgZnJvYjJYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KEZST0IyWCksIG44cSkpKTtcbiAgICAgICAgY29uc3QgZnJvYjNZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KEZST0IzWVswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMV0pLCBuOHEpLFxuICAgICAgICBdKSk7XG5cbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKGZpbmFsRXhwWiwgOCkpKTtcblxuICAgICAgICBjb25zdCBweCA9IGMuZ2V0TG9jYWwoXCJwXCIpO1xuICAgICAgICBjb25zdCBweSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHhfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeV93aW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBwZjIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjIpO1xuICAgICAgICBjb25zdCBmMiA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeCA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeF9jMSA9IGMuaTMyX2NvbnN0KHBmMik7XG4gICAgICAgIGNvbnN0IGYyeF9jMiA9IGMuaTMyX2NvbnN0KHBmMitmMXNpemUpO1xuICAgICAgICBjb25zdCBmMnkgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5X2MxID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMiA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUrZjFzaXplKTtcbiAgICAgICAgY29uc3QgcGYzID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgZjMgPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3ggPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3hfYzEgPSBjLmkzMl9jb25zdChwZjMpO1xuICAgICAgICBjb25zdCBmM3hfYzIgPSBjLmkzMl9jb25zdChwZjMrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjN5ID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeV9jMSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzIgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeiA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUqMik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcybVByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInBcIikpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIHdJbnYsIHhfd2ludiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB5LCB3SW52LCB5X3dpbnYpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCB4X3dpbnYsIGZyb2IyWCwgZjJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgeV93aW52LCBmMnkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHhfd2ludiwgZjN4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeV93aW52LCBmcm9iM1ksIGYzeSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjJ4X2MxLCBmMnhfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGYyeF9jMSwgZjJ4X2MyLCBmMnhfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmMnhfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeV9jMSwgZjJ5X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnlfYzEsIGYyeV9jMiwgZjJ5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3hfYzEsIGYzeF9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjN4X2MxLCBmM3hfYzIsIGYzeF9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYzeF9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgZjN5X2MyLCBmM3lfYzEsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGYzeV9jMSwgZjN5X2MyLCBmM3lfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3lfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIGYzeiksXG5cbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl90aW1lc1NjYWxhclwiLCBmMywgeiwgYy5pMzJfY29uc3QoOCksIGYzKSxcbiAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBmMywgZjIsIGYzKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2VxTWl4ZWRcIiwgZjMsIGMuZ2V0TG9jYWwoXCJwXCIpKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZJbkdyb3VwID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgICAgIGZJbkdyb3VwLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmSW5Hcm91cC5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMyID0gZkluR3JvdXAuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXgyID0gYzIuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUqMikpO1xuXG4gICAgICAgIGZJbkdyb3VwLmFkZENvZGUoXG4gICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMyLmdldExvY2FsKFwicEluXCIpLCBhdXgyKSxcblxuICAgICAgICAgICAgYzIucmV0KFxuICAgICAgICAgICAgICAgIGMyLmNhbGwoZzJtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBhdXgyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5Hcm91cEcxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcxbVByZWZpeCsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEJFVEEgPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgQkVUQTIgPSA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuO1xuICAgICAgICBjb25zdCBaMk0xRDMgPSAoZmluYWxFeHBaICogZmluYWxFeHBaIC0gMW4pIC8gM247XG5cbiAgICAgICAgY29uc3QgYmV0YSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShCRVRBKSwgbjhxKSkpO1xuICAgICAgICBjb25zdCBiZXRhMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShCRVRBMiksIG44cSkpKTtcblxuICAgICAgICBjb25zdCB6Mm0xZDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShaMk0xRDMsIDE2KSkpO1xuXG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHBzcCA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMyk7XG4gICAgICAgIGNvbnN0IHNwID0gYy5pMzJfY29uc3QocHNwKTtcbiAgICAgICAgY29uc3Qgc3B4ID0gYy5pMzJfY29uc3QocHNwKTtcbiAgICAgICAgY29uc3Qgc3B5ID0gYy5pMzJfY29uc3QocHNwK2Yxc2l6ZSk7XG5cbiAgICAgICAgY29uc3QgcHMycCA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IHMycCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB4ID0gYy5pMzJfY29uc3QocHMycCk7XG4gICAgICAgIGNvbnN0IHMycHkgPSBjLmkzMl9jb25zdChwczJwK2Yxc2l6ZSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMW1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEsIHNweCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBweSwgc3B5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBweCwgYmV0YTIsIHMycHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHMycHkpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgc3AsIHNwKSxcbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9zdWJNaXhlZFwiLCBzcCwgYy5nZXRMb2NhbChcInBcIiksIHNwKSxcbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9zdWJNaXhlZFwiLCBzcCwgczJwLCBzcCksXG5cbiAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl90aW1lc1NjYWxhclwiLCBzcCwgejJtMWQzLCBjLmkzMl9jb25zdCgxNiksIHNwKSxcblxuICAgICAgICAgICAgYy5yZXQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2VxTWl4ZWRcIiwgc3AsIHMycClcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZJbkdyb3VwID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgICAgIGZJbkdyb3VwLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmSW5Hcm91cC5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMyID0gZkluR3JvdXAuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXgyID0gYzIuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuXG4gICAgICAgIGZJbkdyb3VwLmFkZENvZGUoXG4gICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMyLmdldExvY2FsKFwicEluXCIpLCBhdXgyKSxcblxuICAgICAgICAgICAgYzIucmV0KFxuICAgICAgICAgICAgICAgIGMyLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiLCBhdXgyKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykge1xuICAgICAgICBidWlsZEZyb2Jlbml1c01hcChpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuXG4gICAgYnVpbGRJbkdyb3VwRzEoKTtcbiAgICBidWlsZEluR3JvdXBHMigpO1xuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTWlsbGVyTG9vcCgpO1xuXG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uT2xkKCk7XG4gICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uKCk7XG5cbiAgICBmb3IgKGxldCBpPTE7IGk8PTU7IGkrKykge1xuICAgICAgICBidWlsZFBhaXJpbmdFcXVhdGlvbihpKTtcbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdFcVwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkUGFpcmluZygpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3BhaXJpbmdcIik7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZmluYWxFeHBvbmVudGlhdGlvbk9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGY2bVByZWZpeCArIFwiX211bDFcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGY2bVByZWZpeCArIFwiX211bDAxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9tdWwwMTRcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzFtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzFtUHJlZml4ICsgXCJfaW5Hcm91cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzJtUHJlZml4ICsgXCJfaW5Hcm91cEFmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZzJtUHJlZml4ICsgXCJfaW5Hcm91cFwiKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKG1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZSk7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIG1vZHVsZS5leHBvcnRzLmJuMTI4X3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibjEyOF93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMuYmxzMTIzODFfd2FzbSA9IHJlcXVpcmUoXCIuL2J1aWxkL2JsczEyMzgxX3dhc20uanNcIik7XG4vLyBtb2R1bGUuZXhwb3J0cy5tbnQ2NzUzX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9tbnQ2NzUzX3dhc20uanNcIik7XG5cbnZhciBidWlsZEJuMTI4JDEgPSBidWlsZF9ibjEyODtcbnZhciBidWlsZEJsczEyMzgxJDEgPSBidWlsZF9ibHMxMjM4MTtcblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5mdW5jdGlvbiBzdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJiaWdpbnRcIiB8fCBvLmVxICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShvLCAwKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCByZXMgPSB7fTtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG8pO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5zdHJpbmdpZnlCaWdJbnRzKG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5QmlnSW50cyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChvID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUJpZ0ludHMob1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gYmVCdWZmMmludChidWZmKSB7XG4gICAgbGV0IHJlcyA9IEJpZ0ludCgwKTtcbiAgICBsZXQgaSA9IGJ1ZmYubGVuZ3RoO1xuICAgIGxldCBvZmZzZXQgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgd2hpbGUgKGkgPiAwKSB7XG4gICAgICAgIGlmIChpID49IDQpIHtcbiAgICAgICAgICAgIGkgLT0gNDtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpID49IDIpIHtcbiAgICAgICAgICAgIGkgLT0gMjtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDE2KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGkgLT0gMTtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSkpIDw8IEJpZ0ludChvZmZzZXQgKiA4KTtcbiAgICAgICAgICAgIG9mZnNldCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGJlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICBsZXQgbyA9IGxlbjtcbiAgICB3aGlsZSAobyA+IDApIHtcbiAgICAgICAgaWYgKG8gLSA0ID49IDApIHtcbiAgICAgICAgICAgIG8gLT0gNDtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmZmZmZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDMyKTtcbiAgICAgICAgfSBlbHNlIGlmIChvIC0gMiA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDI7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG8gLT0gMTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSk7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIGxlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgd2hpbGUgKGkgPCBidWZmLmxlbmd0aCkge1xuICAgICAgICBpZiAoaSArIDQgPD0gYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDMyKGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSA0O1xuICAgICAgICB9IGVsc2UgaWYgKGkgKyAyIDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcyArPSBCaWdJbnQoYnVmZlYuZ2V0VWludDgoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gbGVJbnQyQnVmZihuLCBsZW4pIHtcbiAgICBsZXQgciA9IG47XG4gICAgaWYgKHR5cGVvZiBsZW4gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgbGVuID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDYobikgLSAxKSAvIDgpICsgMTtcbiAgICAgICAgaWYgKGxlbiA9PSAwKSBsZW4gPSAxO1xuICAgIH1cbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSAwO1xuICAgIHdoaWxlIChvIDwgbGVuKSB7XG4gICAgICAgIGlmIChvICsgNCA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmZmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSA0O1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDMyKTtcbiAgICAgICAgfSBlbHNlIGlmIChvICsgMiA8PSBsZW4pIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQxNihvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDI7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoMTYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDgobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gMTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCg4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgZG9lcyBub3QgZml0IGluIHRoaXMgbGVuZ3RoXCIpO1xuICAgIH1cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJiaWdpbnRcIiB8fCBvLmVxICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG8udG9TdHJpbmcoMTApO1xuICAgIH0gZWxzZSBpZiAobyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIEYudG9TdHJpbmcoRi5lKG8pKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHN0cmluZ2lmeUZFbGVtZW50cy5iaW5kKHRoaXMsIEYpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgbykge1xuICAgIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eWzAtOV0rJC8udGVzdChvKSkge1xuICAgICAgICByZXR1cm4gRi5lKG8pO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXjB4WzAtOWEtZkEtRl0rJC8udGVzdChvKSkge1xuICAgICAgICByZXR1cm4gRi5lKG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAodW5zdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChvID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSB1bnN0cmluZ2lmeUZFbGVtZW50cyhGLCBvW2tdKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGVbaV0gPSBfcmV2U2xvdyhpLCA4KTtcbn1cblxuZnVuY3Rpb24gX3JldlNsb3coaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9IDA7XG4gICAgbGV0IGEgPSBpZHg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmIDEpO1xuICAgICAgICBhID4+PSAxO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiaXRSZXZlcnNlKGlkeCwgYml0cykge1xuICAgIHJldHVybiAoXG4gICAgICAgIChfcmV2VGFibGVbaWR4ID4+PiAyNF0gfFxuICAgICAgICAoX3JldlRhYmxlWyhpZHggPj4+IDE2KSAmIDB4ZmZdIDw8IDgpIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiA4KSAmIDB4ZmZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGVbaWR4ICYgMHhmZl0gPDwgMjQpKSA+Pj5cbiAgICAgICAgKDMyIC0gYml0cylcbiAgICApO1xufVxuXG5mdW5jdGlvbiBsb2cyKFYpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoKFYgJiAweGZmZmYwMDAwKSAhPT0gMCA/ICgoViAmPSAweGZmZmYwMDAwKSwgMTYpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGZmMDBmZjAwKSAhPT0gMCA/ICgoViAmPSAweGZmMDBmZjAwKSwgOCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4ZjBmMGYwZjApICE9PSAwID8gKChWICY9IDB4ZjBmMGYwZjApLCA0KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhjY2NjY2NjYykgIT09IDAgPyAoKFYgJj0gMHhjY2NjY2NjYyksIDIpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGFhYWFhYWFhKSAhPT0gMClcbiAgICApO1xufVxuXG5mdW5jdGlvbiBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgZVNpemUpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC8gZVNpemU7XG4gICAgY29uc3QgYml0cyA9IGxvZzIobik7XG4gICAgaWYgKG4gIT0gMSA8PCBiaXRzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50ZXJzXCIpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBjb25zdCByID0gYml0UmV2ZXJzZShpLCBiaXRzKTtcbiAgICAgICAgaWYgKGkgPiByKSB7XG4gICAgICAgICAgICBjb25zdCB0bXAgPSBidWZmLnNsaWNlKGkgKiBlU2l6ZSwgKGkgKyAxKSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KGJ1ZmYuc2xpY2UociAqIGVTaXplLCAociArIDEpICogZVNpemUpLCBpICogZVNpemUpO1xuICAgICAgICAgICAgYnVmZi5zZXQodG1wLCByICogZVNpemUpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhcnJheTJidWZmZXIoYXJyLCBzRykge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRyAqIGFyci5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpICogc0cpO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBidWZmZXIyYXJyYXkoYnVmZiwgc0cpIHtcbiAgICBjb25zdCBuID0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFycltpXSA9IGJ1ZmYuc2xpY2UoaSAqIHNHLCBpICogc0cgKyBzRyk7XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG59XG5cbnZhciBfdXRpbHMgPSAvKiNfX1BVUkVfXyovT2JqZWN0LmZyZWV6ZSh7XG4gICAgX19wcm90b19fOiBudWxsLFxuICAgIGFycmF5MmJ1ZmZlcjogYXJyYXkyYnVmZmVyLFxuICAgIGJlQnVmZjJpbnQ6IGJlQnVmZjJpbnQsXG4gICAgYmVJbnQyQnVmZjogYmVJbnQyQnVmZixcbiAgICBiaXRSZXZlcnNlOiBiaXRSZXZlcnNlLFxuICAgIGJ1ZmZSZXZlcnNlQml0czogYnVmZlJldmVyc2VCaXRzLFxuICAgIGJ1ZmZlcjJhcnJheTogYnVmZmVyMmFycmF5LFxuICAgIGxlQnVmZjJpbnQ6IGxlQnVmZjJpbnQsXG4gICAgbGVJbnQyQnVmZjogbGVJbnQyQnVmZixcbiAgICBsb2cyOiBsb2cyLFxuICAgIHN0cmluZ2lmeUJpZ0ludHM6IHN0cmluZ2lmeUJpZ0ludHMsXG4gICAgc3RyaW5naWZ5RkVsZW1lbnRzOiBzdHJpbmdpZnlGRWxlbWVudHMsXG4gICAgdW5zdHJpbmdpZnlCaWdJbnRzOiB1bnN0cmluZ2lmeUJpZ0ludHMsXG4gICAgdW5zdHJpbmdpZnlGRWxlbWVudHM6IHVuc3RyaW5naWZ5RkVsZW1lbnRzXG59KTtcblxuY29uc3QgUEFHRV9TSVpFID0gMTw8MzA7XG5cbmNsYXNzIEJpZ0J1ZmZlciB7XG5cbiAgICBjb25zdHJ1Y3RvcihzaXplKSB7XG4gICAgICAgIHRoaXMuYnVmZmVycyA9IFtdO1xuICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSBzaXplO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8c2l6ZTsgaSs9IFBBR0VfU0laRSkge1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHNpemUtaSwgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIHRoaXMuYnVmZmVycy5wdXNoKG5ldyBVaW50OEFycmF5KG4pKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgc2xpY2UoZnIsIHRvKSB7XG4gICAgICAgIGlmICggdG8gPT09IHVuZGVmaW5lZCApIHRvID0gdGhpcy5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoIGZyID09PSB1bmRlZmluZWQgKSBmciA9IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRvLWZyO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IoZnIgLyBQQUdFX1NJWkUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKGZyK2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKChmaXJzdFBhZ2UgPT0gbGFzdFBhZ2UpfHwobGVuPT0wKSlcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zbGljZShmciVQQUdFX1NJWkUsIGZyJVBBR0VfU0laRSArIGxlbik7XG5cbiAgICAgICAgbGV0IGJ1ZmY7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gZnIgJSBQQUdFX1NJWkU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICAvLyBieXRlcyB0byBjb3B5IGZyb20gdGhpcyBwYWdlXG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQrbywgbCk7XG4gICAgICAgICAgICBpZiAobCA9PSBsZW4pIHJldHVybiBzcmNWaWV3LnNsaWNlKCk7XG4gICAgICAgICAgICBpZiAoIWJ1ZmYpIHtcbiAgICAgICAgICAgICAgICBpZiAobGVuIDw9IFBBR0VfU0laRSkge1xuICAgICAgICAgICAgICAgICAgICBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihsZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJ1ZmYuc2V0KHNyY1ZpZXcsIGxlbi1yKTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBzZXQoYnVmZiwgb2Zmc2V0KSB7XG4gICAgICAgIGlmIChvZmZzZXQgPT09IHVuZGVmaW5lZCkgb2Zmc2V0ID0gMDtcblxuICAgICAgICBjb25zdCBsZW4gPSBidWZmLmJ5dGVMZW5ndGg7XG5cbiAgICAgICAgaWYgKGxlbj09MCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChvZmZzZXQrbGVuLTEpIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBpZiAoZmlyc3RQYWdlID09IGxhc3RQYWdlKSB7XG4gICAgICAgICAgICBpZiAoKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpJiYoYnVmZi5idWZmZXJzLmxlbmd0aD09MSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2V0KGJ1ZmYuYnVmZmVyc1swXSwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLCBvZmZzZXQgJSBQQUdFX1NJWkUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IG9mZnNldCAlIFBBR0VfU0laRTtcbiAgICAgICAgbGV0IHIgPSBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gUEFHRV9TSVpFKSA/IChQQUdFX1NJWkUgLW8pIDogcjtcbiAgICAgICAgICAgIGNvbnN0IHNyY1ZpZXcgPSBidWZmLnNsaWNlKCBsZW4gLXIsIGxlbiAtcitsKTtcbiAgICAgICAgICAgIGNvbnN0IGRzdFZpZXcgPSBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcnNbcF0uYnVmZmVyLCB0aGlzLmJ1ZmZlcnNbcF0uYnl0ZU9mZnNldCArIG8sIGwpO1xuICAgICAgICAgICAgZHN0Vmlldy5zZXQoc3JjVmlldyk7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBmbk5hbWUsIHNJbiwgc091dCkge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiBiYXRjaENvbnZlcnQoYnVmZkluKSB7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZJbi5ieXRlTGVuZ3RoIC8gc0luKTtcbiAgICAgICAgaWYgKCBuUG9pbnRzICogc0luICE9PSBidWZmSW4uYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZkluLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0luLCBpKnBvaW50c1BlckNodW5rKnNJbiArIG4qc0luKTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6YnVmZkNodW5rfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZkluIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG59XG5cbmNsYXNzIFdhc21GaWVsZDEge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgbjgsIHApIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLnAgPSBwO1xuICAgICAgICB0aGlzLm44ID0gbjg7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjFcIjtcbiAgICAgICAgdGhpcy5tID0gMTtcblxuICAgICAgICB0aGlzLmhhbGYgPSBzaGlmdFJpZ2h0KHAsIG9uZSk7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYocCk7XG4gICAgICAgIHRoaXMubWFzayA9IHN1YihzaGlmdExlZnQob25lLCB0aGlzLmJpdExlbmd0aCksIG9uZSk7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDIgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl9vbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcihuOC84KTtcbiAgICAgICAgdGhpcy5uMzIgPSBNYXRoLmZsb29yKG44LzQpO1xuXG4gICAgICAgIGlmKHRoaXMubjY0KjggIT0gdGhpcy5uOCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibjggbXVzdCBiZSBhIG11bHRpcGxlIG9mIDhcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbGYgPSBzaGlmdFJpZ2h0KHRoaXMucCwgb25lKTtcbiAgICAgICAgdGhpcy5ucXIgPSB0aGlzLnR3bztcbiAgICAgICAgbGV0IHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLmFkZCh0aGlzLm5xciwgdGhpcy5vbmUpO1xuICAgICAgICAgICAgciA9IHRoaXMuZXhwKHRoaXMubnFyLCB0aGlzLmhhbGYpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaGlmdCA9IHRoaXMubXVsKHRoaXMubnFyLCB0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuc2hpZnRJbnYgPSB0aGlzLmludih0aGlzLnNoaWZ0KTtcblxuICAgICAgICB0aGlzLnMgPSAwO1xuICAgICAgICBsZXQgdCA9IHN1Yih0aGlzLnAsIG9uZSk7XG5cbiAgICAgICAgd2hpbGUgKCAhaXNPZGQkNSh0KSApIHtcbiAgICAgICAgICAgIHRoaXMucyA9IHRoaXMucyArIDE7XG4gICAgICAgICAgICB0ID0gc2hpZnRSaWdodCh0LCBvbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy53ID0gW107XG4gICAgICAgIHRoaXMud1t0aGlzLnNdID0gdGhpcy5leHAodGhpcy5ucXIsIHQpO1xuXG4gICAgICAgIGZvciAobGV0IGk9IHRoaXMucy0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHRoaXMud1tpXSA9IHRoaXMuc3F1YXJlKHRoaXMud1tpKzFdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5lcSh0aGlzLndbMF0sIHRoaXMub25lKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXJyb3IgY2FsY3VsYXRpbmcgcm9vdHMgb2YgdW5pdHlcIik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJhdGNoVG9Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9Nb250Z29tZXJ5XCIsIHRoaXMubjgsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLmJhdGNoRnJvbU1vbnRnb21lcnkgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICB9XG5cblxuICAgIG9wMihvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AyQm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyKTtcbiAgICB9XG5cbiAgICBvcDEob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gdG9MRUJ1ZmYoZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGxldCByYSA9IGUoYSwgYik7XG4gICAgICAgIGlmIChpc05lZ2F0aXZlJDQocmEpKSB7XG4gICAgICAgICAgICByYSA9IG5lZyhyYSk7XG4gICAgICAgICAgICBpZiAoZ3QocmEsIHRoaXMucCkpIHtcbiAgICAgICAgICAgICAgICByYSA9IG1vZChyYSwgdGhpcy5wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJhID0gc3ViKHRoaXMucCwgcmEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYnVmZiA9IGxlSW50MkJ1ZmYocmEsIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkoYnVmZik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgYW4gPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICBjb25zdCBzID0gZnJvbVJwckxFKGFuLCAwKTtcbiAgICAgICAgcmV0dXJuIHRvU3RyaW5nKHMsIHJhZGl4KTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMubjgpO1xuICAgICAgICBkbyB7XG4gICAgICAgICAgICB2ID0gemVybztcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLm42NDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdiA9IGFkZCh2LCAgc2hpZnRMZWZ0KHJuZy5uZXh0VTY0KCksIDY0KmkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHYgPSBiYW5kKHYsIHRoaXMubWFzayk7XG4gICAgICAgIH0gd2hpbGUgKGdlcSh2LCB0aGlzLnApKTtcbiAgICAgICAgdG9ScHJMRShidWZmLCAwLCB2LCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUm5nKGdldFRocmVhZFJuZygpKTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShhbiwgMCk7XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgdG9ScHJMRShidWZmLCAwLCBhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvUnByTEUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGJ1ZmYuc2V0KHRoaXMuZnJvbU1vbnRnb21lcnkoYSksIG9mZnNldCk7XG4gICAgfVxuXG4gICAgdG9ScHJCRShidWZmLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgY29uc3QgYnVmZjIgPSB0aGlzLmZyb21Nb250Z29tZXJ5KGEpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uOC8yOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF1eCA9IGJ1ZmYyW2ldO1xuICAgICAgICAgICAgYnVmZjJbaV0gPSBidWZmMlt0aGlzLm44LTEtaV07XG4gICAgICAgICAgICBidWZmMlt0aGlzLm44LTEtaV0gPSBhdXg7XG4gICAgICAgIH1cbiAgICAgICAgYnVmZi5zZXQoYnVmZjIsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgcmVzID0gYnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMubjgpO1xuICAgICAgICByZXR1cm4gdGhpcy50b01vbnRnb21lcnkocmVzKTtcbiAgICB9XG5cbiAgICBhc3luYyBiYXRjaEludmVyc2UoYnVmZkluKSB7XG4gICAgICAgIGxldCByZXR1cm5BcnJheSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBzSW4gPSB0aGlzLm44O1xuICAgICAgICBjb25zdCBzT3V0ID0gdGhpcy5uODtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShidWZmSW4pKSB7XG4gICAgICAgICAgICBidWZmSW4gPSBhcnJheTJidWZmZXIoYnVmZkluLCBzSW4gKTtcbiAgICAgICAgICAgIHJldHVybkFycmF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZJbiA9IGJ1ZmZJbi5zbGljZSgwLCBidWZmSW4uYnl0ZUxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdGhpcy50bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMudG0uY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgdGhpcy50bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogdGhpcy5wcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzSW59LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNPdXR9LFxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLnRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZkluIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldHVybkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGZ1bGxCdWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21GaWVsZDIge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjJcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCoyO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMjtcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjI7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDJCb29sKFwiX2VxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbXVsMShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bDFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMikpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBGMlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9XWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUm5nKGdldFRocmVhZFJuZygpKTtcbiAgICB9XG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMikpO1xuICAgICAgICByZXR1cm4gW2MxLCBjMl07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCk7XG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21GaWVsZDMge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuXG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMudHlwZSA9IFwiRjNcIjtcbiAgICAgICAgdGhpcy5tID0gRi5tICogMztcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMuRi5uOCozO1xuICAgICAgICB0aGlzLm4zMiA9IHRoaXMuRi5uMzIqMztcbiAgICAgICAgdGhpcy5uNjQgPSB0aGlzLkYubjY0KjM7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuXG4gICAgICAgIHRoaXMubmVnb25lID0gdGhpcy5uZWcodGhpcy5vbmUpO1xuICAgICAgICB0aGlzLnR3byA9IHRoaXMuYWRkKHRoaXMub25lLCB0aGlzLm9uZSk7XG5cbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNOZWdhdGl2ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNOZWdhdGl2ZVwiLCBhKTtcbiAgICB9XG5cbiAgICB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfdG9Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIGZyb21Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2Zyb21Nb250Z29tZXJ5XCIsIGEpO1xuICAgIH1cblxuICAgIG11bChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX211bFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBkaXYoYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2ludmVyc2VcIl0odGhpcy5wT3AyLCB0aGlzLnBPcDIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9tdWxcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzU3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBzcXJ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxcnRcIiwgYSk7XG4gICAgfVxuXG4gICAgZXhwKGEsIGIpIHtcbiAgICAgICAgaWYgKCEoYiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBiID0gdG9MRUJ1ZmYoZShiKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9leHBcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIGIuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkpICYmIChhLmxlbmd0aCA9PSAzKSkge1xuICAgICAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZShhWzBdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmUoYVsxXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5lKGFbMl0sIGIpO1xuICAgICAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjNcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICBjb25zdCBzMyA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICByZXR1cm4gYFske3MxfSwgJHtzMn0sICR7czN9XWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjMpO1xuICAgICAgICByZXMuc2V0KGMxKTtcbiAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgcmVzLnNldChjMywgdGhpcy5GLm44KjIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzIsIGMzXTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgY29uc3QgYjEgPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgYjIgPSB0aGlzLkYuZnJvbU9iamVjdChhWzFdKTtcbiAgICAgICAgY29uc3QgYjMgPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgYnVmZi5zZXQoYjEpO1xuICAgICAgICBidWZmLnNldChiMiwgdGhpcy5GLm44KTtcbiAgICAgICAgYnVmZi5zZXQoYjMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgYzEoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgIH1cblxuICAgIGMyKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgYzMoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgqMik7XG4gICAgfVxuXG59XG5cbmNsYXNzIFdhc21DdXJ2ZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcih0bSwgcHJlZml4LCBGLCBwR2VuLCBwR2IsIGNvZmFjdG9yKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgdGhpcy5wT3AxID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy5wT3AzID0gdG0uYWxsb2MoRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9cIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCozKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX3plcm9BZmZpbmVcIl0odGhpcy5wT3AxKTtcbiAgICAgICAgdGhpcy56ZXJvQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5vbmUgPSB0aGlzLnRtLmdldEJ1ZmYocEdlbiwgRi5uOCozKTtcbiAgICAgICAgdGhpcy5nID0gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMub25lQWZmaW5lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMik7XG4gICAgICAgIHRoaXMuZ0FmZmluZSA9IHRoaXMub25lQWZmaW5lO1xuICAgICAgICB0aGlzLmIgPSB0aGlzLnRtLmdldEJ1ZmYocEdiLCBGLm44KTtcblxuICAgICAgICBpZiAoY29mYWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuY29mYWN0b3IgPSB0b0xFQnVmZihjb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b0MgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgRi5uOCoyLCBGLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaExFTXRvVSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaExFTXRvVVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hDdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIiwgRi5uOCwgRi5uOCoyKTtcbiAgICAgICAgdGhpcy5iYXRjaFV0b0xFTSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiLCBGLm44KjIsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0phY29iaWFuID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBGLm44KjIsIEYubjgqMyk7XG4gICAgICAgIHRoaXMuYmF0Y2hUb0FmZmluZSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvQWZmaW5lXCIsIEYubjgqMywgRi5uOCoyKTtcbiAgICB9XG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBvcDJib29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AxQWZmaW5lKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZEFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1Yk1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQWZmaW5lKFwiX25lZ0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9kb3VibGVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlQWZmaW5lXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGEsIHMpIHtcbiAgICAgICAgaWYgKCEocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpKSB7XG4gICAgICAgICAgICBzID0gdG9MRUJ1ZmYoZShzKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBzKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW2ZuTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHMuYnl0ZUxlbmd0aCwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICB0aW1lc0ZyKGEsIHMpIHtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSB0aGlzLnByZWZpeCArIFwiX3RpbWVzRnJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIGVxKGEsYikge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcU1peGVkXCIsIGIsIGEpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDJib29sKFwiX2VxQWZmaW5lXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b0FmZmluZShhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl90b0FmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9KYWNvYmlhbihhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiBhO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvSmFjb2JpYW5cIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1JwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfdG9BZmZpbmVcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCAhPSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0xFTXRvVVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBidWZmKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfVXRvTEVNXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICB9XG5cbiAgICB0b1JwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b0NcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgpO1xuICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChhcnIsIG9mZnNldCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXJyLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgdGhpcy5GLm44KTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX0N0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AyLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9VbmNvbXByZXNzZWQoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICB0aGlzLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIGEpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICB0b1JwckxFTShhcnIsIG9mZnNldCwgYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBhcnIuc2V0KGEsIG9mZnNldCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShhcnIsIG9mZnNldCkge1xuICAgICAgICBvZmZzZXQgPSBvZmZzZXQgfHwgMDtcbiAgICAgICAgcmV0dXJuIGFyci5zbGljZShvZmZzZXQsIG9mZnNldCt0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeiA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCoyKSwgcmFkaXgpO1xuICAgICAgICAgICAgcmV0dXJuIGBbICR7eH0sICR7eX0sICR7en0gXWA7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UoMCwgdGhpcy5GLm44KSwgcmFkaXgpO1xuICAgICAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9IF1gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNWYWxpZChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IGFhID0gdGhpcy50b0FmZmluZShhKTtcbiAgICAgICAgY29uc3QgeCA9IGFhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHkgPSBhYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoeCkseCksIHRoaXMuYik7XG4gICAgICAgIGNvbnN0IHkyID0gRi5zcXVhcmUoeSk7XG4gICAgICAgIHJldHVybiBGLmVxKHgzYiwgeTIpO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgbGV0IHgzYjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgfSB3aGlsZSAoIUYuaXNTcXVhcmUoeDNiKSk7XG5cbiAgICAgICAgUFsxXSA9IEYuc3FydCh4M2IpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBGLmlzTmVnYXRpdmUoUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcblxuICAgICAgICBsZXQgUGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIFBidWZmLnNldChQWzBdKTtcbiAgICAgICAgUGJ1ZmYuc2V0KFBbMV0sIHRoaXMuRi5uOCk7XG5cbiAgICAgICAgaWYgKHRoaXMuY29mYWN0b3IpIHtcbiAgICAgICAgICAgIFBidWZmID0gdGhpcy50aW1lc1NjYWxhcihQYnVmZiwgdGhpcy5jb2ZhY3Rvcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUGJ1ZmY7XG4gICAgfVxuXG5cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKGEpKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICAgICAgdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYuemVybyksXG4gICAgICAgICAgICBdO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgbGV0IHo7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgqMiwgdGhpcy5GLm44KjMpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYudG9PYmplY3QodGhpcy5GLm9uZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB6XTtcbiAgICB9XG5cbiAgICBmcm9tT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5sZW5ndGg9PTMpIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYuZnJvbU9iamVjdChhWzJdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHogPSB0aGlzLkYub25lO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHosIHRoaXMuRi5vbmUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvQWZmaW5lO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuRi5lcSh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHgpO1xuICAgICAgICAgICAgYnVmZi5zZXQoeSwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHosIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZShhKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21PYmplY3QoYSk7XG4gICAgfVxuXG4gICAgeChhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICB5KGEpIHtcbiAgICAgICAgY29uc3QgdG1wID0gdGhpcy50b0FmZmluZShhKTtcbiAgICAgICAgcmV0dXJuIHRtcC5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG4vKiBnbG9iYWwgV2ViQXNzZW1ibHkgKi9cblxuZnVuY3Rpb24gdGhyZWFkKHNlbGYpIHtcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcbiAgICBsZXQgaW5zdGFuY2U7XG4gICAgbGV0IG1lbW9yeTtcblxuICAgIGlmIChzZWxmKSB7XG4gICAgICAgIHNlbGYub25tZXNzYWdlID0gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoZS5kYXRhKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChkYXRhWzBdLmNtZCA9PSBcIklOSVRcIikge1xuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhLnJlc3VsdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFwiVEVSTUlOQVRFXCIpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHJ1blRhc2soZGF0YSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShyZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGluaXQoZGF0YSkge1xuICAgICAgICBjb25zdCBjb2RlID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5jb2RlKTtcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG4gICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6ZGF0YS5pbml0LCBtYXhpbXVtOiBNQVhNRU19KTtcblxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgICAgIGVudjoge1xuICAgICAgICAgICAgICAgIFwibWVtb3J5XCI6IG1lbW9yeVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYWxsb2MobGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHUzMiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXG4gICAgICAgIGNvbnN0IHJlcyA9IHUzMlswXTtcbiAgICAgICAgdTMyWzBdICs9IGxlbmd0aDtcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VzID0gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC8gMHgxMDAwMDtcbiAgICAgICAgICAgIGxldCByZXF1aXJlZFBhZ2VzID0gTWF0aC5mbG9vcigodTMyWzBdICsgbGVuZ3RoKSAvIDB4MTAwMDApKzE7XG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xuICAgICAgICAgICAgbWVtb3J5Lmdyb3cocmVxdWlyZWRQYWdlcy1jdXJyZW50UGFnZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHAgPSBhbGxvYyhidWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHNldEJ1ZmZlcihwLCBidWZmZXIpO1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheSh1OC5idWZmZXIsIHU4LmJ5dGVPZmZzZXQgKyBwb2ludGVyLCBsZW5ndGgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEJ1ZmZlcihwb2ludGVyLCBidWZmZXIpIHtcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcbiAgICAgICAgdTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2sodGFzaykge1xuICAgICAgICBpZiAodGFza1swXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBpbml0KHRhc2tbMF0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN0eCA9IHtcbiAgICAgICAgICAgIHZhcnM6IFtdLFxuICAgICAgICAgICAgb3V0OiBbXVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCB1MzJhID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xuICAgICAgICBjb25zdCBvbGRBbGxvYyA9IHUzMmFbMF07XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRhc2tbaV0uY21kKSB7XG4gICAgICAgICAgICBjYXNlIFwiQUxMT0NTRVRcIjpcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvY0J1ZmZlcih0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2ModGFza1tpXS5sZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIlNFVFwiOlxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiQ0FMTFwiOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gW107XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRhc2tbaV0ucGFyYW1zLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwLnZhciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcC52YWwgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFwiR0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4Lm91dFt0YXNrW2ldLm91dF0gPSBnZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmxlbikuc2xpY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjbWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgdTMyYlswXSA9IG9sZEFsbG9jO1xuICAgICAgICByZXR1cm4gY3R4Lm91dDtcbiAgICB9XG5cblxuICAgIHJldHVybiBydW5UYXNrO1xufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIGNvbnN0IE1FTV9TSVpFID0gMTAwMDsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoNTEyTWIpXG5jb25zdCBNRU1fU0laRSA9IDI1OyAgLy8gTWVtb3J5IHNpemUgaW4gNjRLIFBha2VzICgxNjAwS2IpXG5cbmNsYXNzIERlZmVycmVkIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PiB7XG4gICAgICAgICAgICB0aGlzLnJlamVjdCA9IHJlamVjdDtcbiAgICAgICAgICAgIHRoaXMucmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gc2xlZXAobXMpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XG59XG5cbmxldCB3b3JrZXJTb3VyY2U7XG5cbmNvbnN0IHRocmVhZFN0ciA9IGAoJHtcImZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XFxuICAgIGNvbnN0IE1BWE1FTSA9IDMyNzY3O1xcbiAgICBsZXQgaW5zdGFuY2U7XFxuICAgIGxldCBtZW1vcnk7XFxuXFxuICAgIGlmIChzZWxmKSB7XFxuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcXG4gICAgICAgICAgICBsZXQgZGF0YTtcXG4gICAgICAgICAgICBpZiAoZS5kYXRhKSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XFxuICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgIGlmIChkYXRhWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgaW5pdChkYXRhWzBdKS50aGVuKGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhLnJlc3VsdCk7XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIlRFUk1JTkFURVxcXCIpIHtcXG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHJ1blRhc2soZGF0YSk7XFxuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9O1xcbiAgICB9XFxuXFxuICAgIGFzeW5jIGZ1bmN0aW9uIGluaXQoZGF0YSkge1xcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XFxuICAgICAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZShjb2RlKTtcXG4gICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6ZGF0YS5pbml0LCBtYXhpbXVtOiBNQVhNRU19KTtcXG5cXG4gICAgICAgIGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xcbiAgICAgICAgICAgIGVudjoge1xcbiAgICAgICAgICAgICAgICBcXFwibWVtb3J5XFxcIjogbWVtb3J5XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG5cXG5cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2MobGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XFxuICAgICAgICB3aGlsZSAodTMyWzBdICYgMykgdTMyWzBdKys7ICAvLyBSZXR1cm4gYWx3YXlzIGFsaWduZWQgcG9pbnRlcnNcXG4gICAgICAgIGNvbnN0IHJlcyA9IHUzMlswXTtcXG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XFxuICAgICAgICBpZiAodTMyWzBdICsgbGVuZ3RoID4gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XFxuICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VzID0gbWVtb3J5LmJ1ZmZlci5ieXRlTGVuZ3RoIC8gMHgxMDAwMDtcXG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZFBhZ2VzPk1BWE1FTSkgcmVxdWlyZWRQYWdlcz1NQVhNRU07XFxuICAgICAgICAgICAgbWVtb3J5Lmdyb3cocmVxdWlyZWRQYWdlcy1jdXJyZW50UGFnZXMpO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHJlcztcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBhbGxvY0J1ZmZlcihidWZmZXIpIHtcXG4gICAgICAgIGNvbnN0IHAgPSBhbGxvYyhidWZmZXIuYnl0ZUxlbmd0aCk7XFxuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcXG4gICAgICAgIHJldHVybiBwO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIGdldEJ1ZmZlcihwb2ludGVyLCBsZW5ndGgpIHtcXG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgdTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xcbiAgICB9XFxuXFxuICAgIGZ1bmN0aW9uIHJ1blRhc2sodGFzaykge1xcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFxcXCJJTklUXFxcIikge1xcbiAgICAgICAgICAgIHJldHVybiBpbml0KHRhc2tbMF0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgY3R4ID0ge1xcbiAgICAgICAgICAgIHZhcnM6IFtdLFxcbiAgICAgICAgICAgIG91dDogW11cXG4gICAgICAgIH07XFxuICAgICAgICBjb25zdCB1MzJhID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRhc2subGVuZ3RoOyBpKyspIHtcXG4gICAgICAgICAgICBzd2l0Y2ggKHRhc2tbaV0uY21kKSB7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NTRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvY0J1ZmZlcih0YXNrW2ldLmJ1ZmYpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBjYXNlIFxcXCJBTExPQ1xcXCI6XFxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgc2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQ0FMTFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gW107XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcCA9IHRhc2tbaV0ucGFyYW1zW2pdO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwLnZhciAhPT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChjdHgudmFyc1twLnZhcl0gKyAocC5vZmZzZXQgfHwgMCkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcC52YWwgIT0gXFxcInVuZGVmaW5lZFxcXCIpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChwLnZhbCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZXhwb3J0c1t0YXNrW2ldLmZuTmFtZV0oLi4ucGFyYW1zKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNhc2UgXFxcIkdFVFxcXCI6XFxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGRlZmF1bHQ6XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwiSW52YWxpZCBjbWRcXFwiKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjb25zdCB1MzJiID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgdTMyYlswXSA9IG9sZEFsbG9jO1xcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XFxuICAgIH1cXG5cXG5cXG4gICAgcmV0dXJuIHJ1blRhc2s7XFxufVwifSkoc2VsZilgO1xue1xuICAgIGlmKGdsb2JhbFRoaXM/LkJsb2IpIHtcbiAgICAgICAgY29uc3QgdGhyZWFkQnl0ZXM9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0aHJlYWRTdHIpO1xuICAgICAgICBjb25zdCB3b3JrZXJCbG9iID0gbmV3IEJsb2IoW3RocmVhZEJ5dGVzXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2phdmFzY3JpcHRcIiB9KSA7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFVSTC5jcmVhdGVPYmplY3RVUkwod29ya2VyQmxvYik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgd29ya2VyU291cmNlID0gXCJkYXRhOmFwcGxpY2F0aW9uL2phdmFzY3JpcHQ7YmFzZTY0LFwiICsgZ2xvYmFsVGhpcy5idG9hKHRocmVhZFN0cik7XG4gICAgfVxufVxuXG5cblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRUaHJlYWRNYW5hZ2VyKHdhc20sIHNpbmdsZVRocmVhZCkge1xuICAgIGNvbnN0IHRtID0gbmV3IFRocmVhZE1hbmFnZXIoKTtcblxuICAgIHRtLm1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6TUVNX1NJWkV9KTtcbiAgICB0bS51OCA9IG5ldyBVaW50OEFycmF5KHRtLm1lbW9yeS5idWZmZXIpO1xuICAgIHRtLnUzMiA9IG5ldyBVaW50MzJBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcblxuICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKHdhc20uY29kZSk7XG5cbiAgICB0bS5pbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcbiAgICAgICAgZW52OiB7XG4gICAgICAgICAgICBcIm1lbW9yeVwiOiB0bS5tZW1vcnlcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIGlmKCFnbG9iYWxUaGlzPy5Xb3JrZXIpIHtcbiAgICAgICAgc2luZ2xlVGhyZWFkID0gdHJ1ZTtcbiAgICB9XG4gICAgXG4gICAgdG0uc2luZ2xlVGhyZWFkID0gc2luZ2xlVGhyZWFkO1xuICAgIHRtLmluaXRhbFBGcmVlID0gdG0udTMyWzBdOyAgIC8vIFNhdmUgdGhlIFBvaW50ZXIgdG8gZnJlZSBzcGFjZS5cbiAgICB0bS5wcSA9IHdhc20ucHE7XG4gICAgdG0ucHIgPSB3YXNtLnByO1xuICAgIHRtLnBHMWdlbiA9IHdhc20ucEcxZ2VuO1xuICAgIHRtLnBHMXplcm8gPSB3YXNtLnBHMXplcm87XG4gICAgdG0ucEcyZ2VuID0gd2FzbS5wRzJnZW47XG4gICAgdG0ucEcyemVybyA9IHdhc20ucEcyemVybztcbiAgICB0bS5wT25lVCA9IHdhc20ucE9uZVQ7XG5cbiAgICAvLyAgICB0bS5wVG1wMCA9IHRtLmFsbG9jKGN1cnZlLkcyLkYubjgqMyk7XG4gICAgLy8gICAgdG0ucFRtcDEgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuXG4gICAgaWYgKHNpbmdsZVRocmVhZCkge1xuICAgICAgICB0bS5jb2RlID0gd2FzbS5jb2RlO1xuICAgICAgICB0bS50YXNrTWFuYWdlciA9IHRocmVhZCgpO1xuICAgICAgICBhd2FpdCB0bS50YXNrTWFuYWdlcihbe1xuICAgICAgICAgICAgY21kOiBcIklOSVRcIixcbiAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgY29kZTogdG0uY29kZS5zbGljZSgpXG4gICAgICAgIH1dKTtcbiAgICAgICAgdG0uY29uY3VycmVuY3kgID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0bS53b3JrZXJzID0gW107XG4gICAgICAgIHRtLnBlbmRpbmdEZWZlcnJlZHMgPSBbXTtcbiAgICAgICAgdG0ud29ya2luZyA9IFtdO1xuXG4gICAgICAgIGxldCBjb25jdXJyZW5jeSA9IDI7XG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yID09PSBcIm9iamVjdFwiICYmIG5hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgY29uY3VycmVuY3kgPSBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGNvbmN1cnJlbmN5ID09IDApe1xuICAgICAgICAgICAgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTGltaXQgdG8gNjQgdGhyZWFkcyBmb3IgbWVtb3J5IHJlYXNvbnMuXG4gICAgICAgIGlmIChjb25jdXJyZW5jeT42NCkgY29uY3VycmVuY3k9NjQ7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ID0gY29uY3VycmVuY3k7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuXG4gICAgICAgICAgICB0bS53b3JrZXJzW2ldID0gbmV3IFdvcmtlcih3b3JrZXJTb3VyY2UpO1xuXG4gICAgICAgICAgICB0bS53b3JrZXJzW2ldLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGdldE9uTXNnKGkpKTtcblxuICAgICAgICAgICAgdG0ud29ya2luZ1tpXT1mYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXRQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dG0ud29ya2Vycy5sZW5ndGg7aSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb3B5Q29kZSA9IHdhc20uY29kZS5zbGljZSgpO1xuICAgICAgICAgICAgaW5pdFByb21pc2VzLnB1c2godG0ucG9zdEFjdGlvbihpLCBbe1xuICAgICAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICAgICAgaW5pdDogTUVNX1NJWkUsXG4gICAgICAgICAgICAgICAgY29kZTogY29weUNvZGVcbiAgICAgICAgICAgIH1dLCBbY29weUNvZGUuYnVmZmVyXSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoaW5pdFByb21pc2VzKTtcblxuICAgIH1cbiAgICByZXR1cm4gdG07XG5cbiAgICBmdW5jdGlvbiBnZXRPbk1zZyhpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBsZXQgZGF0YTtcbiAgICAgICAgICAgIGlmICgoZSkmJihlLmRhdGEpKSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YSA9IGU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzW2ldLnJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICB0bS5wcm9jZXNzV29ya3MoKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbn1cblxuY2xhc3MgVGhyZWFkTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUXVldWUgPSBbXTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgc3RhcnRTeW5jT3AoKSB7XG4gICAgICAgIGlmICh0aGlzLm9sZFBGcmVlICE9IDApIHRocm93IG5ldyBFcnJvcihcIlN5bmMgb3BlcmF0aW9uIGluIHByb2dyZXNzXCIpO1xuICAgICAgICB0aGlzLm9sZFBGcmVlID0gdGhpcy51MzJbMF07XG4gICAgfVxuXG4gICAgZW5kU3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSA9PSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJObyBzeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLm9sZFBGcmVlO1xuICAgICAgICB0aGlzLm9sZFBGcmVlID0gMDtcbiAgICB9XG5cbiAgICBwb3N0QWN0aW9uKHdvcmtlcklkLCBlLCB0cmFuc2ZlcnMsIF9kZWZlcnJlZCkge1xuICAgICAgICBpZiAodGhpcy53b3JraW5nW3dvcmtlcklkXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9zdGluZyBhIGpvYiB0IGEgd29ya2luZyB3b3JrZXJcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53b3JraW5nW3dvcmtlcklkXSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5wZW5kaW5nRGVmZXJyZWRzW3dvcmtlcklkXSA9IF9kZWZlcnJlZCA/IF9kZWZlcnJlZCA6IG5ldyBEZWZlcnJlZCgpO1xuICAgICAgICB0aGlzLndvcmtlcnNbd29ya2VySWRdLnBvc3RNZXNzYWdlKGUsIHRyYW5zZmVycyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0ucHJvbWlzZTtcbiAgICB9XG5cbiAgICBwcm9jZXNzV29ya3MoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgKGk8dGhpcy53b3JrZXJzLmxlbmd0aCkmJih0aGlzLmFjdGlvblF1ZXVlLmxlbmd0aCA+IDApOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLndvcmtpbmdbaV0gPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB3b3JrID0gdGhpcy5hY3Rpb25RdWV1ZS5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucG9zdEFjdGlvbihpLCB3b3JrLmRhdGEsIHdvcmsudHJhbnNmZXJzLCB3b3JrLmRlZmVycmVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHF1ZXVlQWN0aW9uKGFjdGlvbkRhdGEsIHRyYW5zZmVycykge1xuICAgICAgICBjb25zdCBkID0gbmV3IERlZmVycmVkKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRhc2tNYW5hZ2VyKGFjdGlvbkRhdGEpO1xuICAgICAgICAgICAgZC5yZXNvbHZlKHJlcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLnB1c2goe1xuICAgICAgICAgICAgICAgIGRhdGE6IGFjdGlvbkRhdGEsXG4gICAgICAgICAgICAgICAgdHJhbnNmZXJzOiB0cmFuc2ZlcnMsXG4gICAgICAgICAgICAgICAgZGVmZXJyZWQ6IGRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzV29ya3MoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZC5wcm9taXNlO1xuICAgIH1cblxuICAgIHJlc2V0TWVtb3J5KCkge1xuICAgICAgICB0aGlzLnUzMlswXSA9IHRoaXMuaW5pdGFsUEZyZWU7XG4gICAgfVxuXG4gICAgYWxsb2NCdWZmKGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgcG9pbnRlciA9IHRoaXMuYWxsb2MoYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy5zZXRCdWZmKHBvaW50ZXIsIGJ1ZmYpO1xuICAgICAgICByZXR1cm4gcG9pbnRlcjtcbiAgICB9XG5cbiAgICBnZXRCdWZmKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gdGhpcy51OC5zbGljZShwb2ludGVyLCBwb2ludGVyKyBsZW5ndGgpO1xuICAgIH1cblxuICAgIHNldEJ1ZmYocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIHRoaXMudTguc2V0KG5ldyBVaW50OEFycmF5KGJ1ZmZlciksIHBvaW50ZXIpO1xuICAgIH1cblxuICAgIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICB3aGlsZSAodGhpcy51MzJbMF0gJiAzKSB0aGlzLnUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudTMyWzBdO1xuICAgICAgICB0aGlzLnUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgdGVybWluYXRlKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy53b3JrZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLndvcmtlcnNbaV0ucG9zdE1lc3NhZ2UoW3tjbWQ6IFwiVEVSTUlOQVRFXCJ9XSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc2xlZXAoMjAwKTtcbiAgICB9XG5cbn1cblxuZnVuY3Rpb24gYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gY3VydmUudG07XG5cbiAgICBjdXJ2ZVtncm91cE5hbWVdLmJhdGNoQXBwbHlLZXkgPSBhc3luYyBmdW5jdGlvbihidWZmLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuQWZmaW5lO1xuICAgICAgICBsZXQgc0dpbiwgc0dtaWQsIHNHb3V0O1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNHbWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbkFmZmluZSA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIHNHaW4gPSBHLm44O1xuICAgICAgICAgICAgc0dtaWQgPSBHLm44O1xuICAgICAgICAgICAgc0dvdXQgPSBHLm44O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cDogXCIgKyBncm91cE5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHaW4pO1xuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cy90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgaW5jID0gRnIuZShpbmMpO1xuICAgICAgICBsZXQgdCA9IEZyLmUoZmlyc3QpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dG0uY29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgdG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkFMTE9DU0VUXCIsXG4gICAgICAgICAgICAgICAgdmFyOiAwLFxuICAgICAgICAgICAgICAgIGJ1ZmY6IGJ1ZmYuc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzR2luLCBpKnBvaW50c1BlckNodW5rKnNHaW4gKyBuKnNHaW4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogdH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBuKk1hdGgubWF4KHNHbWlkLCBzR291dCl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IGZuTmFtZSxcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6M31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChmbkFmZmluZSkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgICAgIGZuTmFtZTogZm5BZmZpbmUsXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDMsIGxlbjogbipzR291dH0pO1xuXG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICAgICAgdCA9IEZyLm11bCh0LCBGci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgb3V0QnVmZjtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb3V0QnVmZiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0QnVmZjtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZFBhaXJpbmcoY3VydmUpIHtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuICAgIGN1cnZlLnBhaXJpbmcgPSBmdW5jdGlvbiBwYWlyaW5nKGEsIGIpIHtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwQSA9IHRtLmFsbG9jQnVmZihjdXJ2ZS5HMS50b0phY29iaWFuKGEpKTtcbiAgICAgICAgY29uc3QgcEIgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzIudG9KYWNvYmlhbihiKSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0bS5hbGxvYyhjdXJ2ZS5HdC5uOCk7XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHNbY3VydmUubmFtZSArIFwiX3BhaXJpbmdcIl0ocEEsIHBCLCBwUmVzKTtcblxuICAgICAgICBjb25zdCByZXMgPSB0bS5nZXRCdWZmKHBSZXMsIGN1cnZlLkd0Lm44KTtcblxuICAgICAgICB0bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucGFpcmluZ0VxID0gYXN5bmMgZnVuY3Rpb24gcGFpcmluZ0VxKCkge1xuICAgICAgICBsZXQgIGJ1ZmZDdDtcbiAgICAgICAgbGV0IG5FcXM7XG4gICAgICAgIGlmICgoYXJndW1lbnRzLmxlbmd0aCAlIDIpID09IDEpIHtcbiAgICAgICAgICAgIGJ1ZmZDdCA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdO1xuICAgICAgICAgICAgbkVxcyA9IChhcmd1bWVudHMubGVuZ3RoIC0xKSAvMjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZDdCA9IGN1cnZlLkd0Lm9uZTtcbiAgICAgICAgICAgIG5FcXMgPSBhcmd1bWVudHMubGVuZ3RoIC8yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkVxczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZzFCdWZmID0gY3VydmUuRzEudG9KYWNvYmlhbihhcmd1bWVudHNbaSoyXSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGcxQnVmZn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IGN1cnZlLnByZVBTaXplfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGcyQnVmZiA9IGN1cnZlLkcyLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMiArMV0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBnMkJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMywgbGVuOiBjdXJ2ZS5wcmVRU2l6ZX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9wcmVwYXJlRzFcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAge3ZhcjogMX1cbiAgICAgICAgICAgIF19KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9wcmVwYXJlRzJcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgIF19KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGN1cnZlLm5hbWUgKyBcIl9taWxsZXJMb29wXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDR9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogNCwgbGVuOiBjdXJ2ZS5HdC5uOH0pO1xuXG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIHRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0bS5hbGxvYyhjdXJ2ZS5HdC5uOCk7XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX29uZShwUmVzKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwTVIgPSB0bS5hbGxvY0J1ZmYocmVzdWx0W2ldWzBdKTtcbiAgICAgICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX211bChwUmVzLCBwTVIsIHBSZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRtLmluc3RhbmNlLmV4cG9ydHNbY3VydmUubmFtZSArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIl0ocFJlcywgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcEN0ID0gdG0uYWxsb2NCdWZmKGJ1ZmZDdCk7XG5cbiAgICAgICAgY29uc3QgciA9ICEhdG0uaW5zdGFuY2UuZXhwb3J0cy5mdG1fZXEocFJlcywgcEN0KTtcblxuICAgICAgICB0bS5lbmRTeW5jT3AoKTtcblxuICAgICAgICByZXR1cm4gcjtcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcxID0gZnVuY3Rpb24ocCkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQID0gdGhpcy50bS5hbGxvY0J1ZmYocCk7XG4gICAgICAgIGNvbnN0IHBQcmVwUCA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVQU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzFcIl0ocFAsIHBQcmVwUCk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFAsIHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5wcmVwYXJlRzIgPSBmdW5jdGlvbihxKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFEgPSB0aGlzLnRtLmFsbG9jQnVmZihxKTtcbiAgICAgICAgY29uc3QgcFByZXBRID0gdGhpcy50bS5hbGxvYyh0aGlzLnByZVFTaXplKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX3ByZXBhcmVHMlwiXShwUSwgcFByZXBRKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBQcmVwUSwgdGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLm1pbGxlckxvb3AgPSBmdW5jdGlvbihwcmVQLCBwcmVRKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcFByZVAgPSB0aGlzLnRtLmFsbG9jQnVmZihwcmVQKTtcbiAgICAgICAgY29uc3QgcFByZVEgPSB0aGlzLnRtLmFsbG9jQnVmZihwcmVRKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9taWxsZXJMb29wXCJdKHBQcmVQLCBwUHJlUSwgcFJlcyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUmVzLCB0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUuZmluYWxFeHBvbmVudGlhdGlvbiA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwQSA9IHRoaXMudG0uYWxsb2NCdWZmKGEpO1xuICAgICAgICBjb25zdCBwUmVzID0gdGhpcy50bS5hbGxvYyh0aGlzLkd0Lm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMubmFtZSArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIl0ocEEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxufVxuXG5jb25zdCBwVFNpemVzID0gW1xuICAgIDEgLCAgMSwgIDEsICAxLCAgICAyLCAgMywgIDQsICA1LFxuICAgIDYgLCAgNywgIDcsICA4LCAgICA5LCAxMCwgMTEsIDEyLFxuICAgIDEzLCAxMywgMTQsIDE1LCAgIDE2LCAxNiwgMTcsIDE3LFxuICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3XG5dO1xuXG5mdW5jdGlvbiBidWlsZE11bHRpZXhwKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX211bHRpRXhwQ2h1bmsoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgaW5UeXBlLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgaWYgKCAhIChidWZmQmFzZXMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSApIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmQmFzZXMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmQmFzZXMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoICEgKGJ1ZmZTY2FsYXJzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtsb2dUZXh0fSBfbXVsdGlFeHBDaHVuayBidWZmU2NhbGFycyBpcyBub3QgVWludDhBcnJheWApO1xuICAgICAgICB9XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuXG4gICAgICAgIGxldCBzR0luO1xuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fbXVsdGlleHBBZmZpbmVfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkJhc2VzLmJ5dGVMZW5ndGggLyBzR0luKTtcblxuICAgICAgICBpZiAoblBvaW50cyA9PSAwKSByZXR1cm4gRy56ZXJvO1xuICAgICAgICBjb25zdCBzU2NhbGFyID0gTWF0aC5mbG9vcihidWZmU2NhbGFycy5ieXRlTGVuZ3RoIC8gblBvaW50cyk7XG4gICAgICAgIGlmKCBzU2NhbGFyICogblBvaW50cyAhPSBidWZmU2NhbGFycy5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTY2FsYXIgc2l6ZSBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJpdENodW5rU2l6ZSA9IHBUU2l6ZXNbbG9nMihuUG9pbnRzKV07XG4gICAgICAgIGNvbnN0IG5DaHVua3MgPSBNYXRoLmZsb29yKChzU2NhbGFyKjggLSAxKSAvIGJpdENodW5rU2l6ZSkgKzE7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQmFzZXN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmU2NhbGFyc30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc1NjYWxhcn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBpKmJpdENodW5rU2l6ZX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IE1hdGgubWluKHNTY2FsYXIqOCAtIGkqYml0Q2h1bmtTaXplLCBiaXRDaHVua1NpemUpfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMn1cbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBHLkYubjgqM31cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgRy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCByZXMgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRy5pc1plcm8ocmVzKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxiaXRDaHVua1NpemU7IGorKykgcmVzID0gRy5kb3VibGUocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IEcuYWRkKHJlcywgcmVzdWx0W2ldWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAyMjtcbiAgICAgICAgY29uc3QgTUlOX0NIVU5LX1NJWkUgPSAxIDw8IDEwO1xuICAgICAgICBsZXQgc0dJbjtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkJhc2VzLmJ5dGVMZW5ndGggLyBzR0luKTtcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGxldCBjaHVua1NpemU7XG4gICAgICAgIGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvICh0bS5jb25jdXJyZW5jeSAvbkNodW5rcykpO1xuICAgICAgICBpZiAoY2h1bmtTaXplPk1BWF9DSFVOS19TSVpFKSBjaHVua1NpemUgPSBNQVhfQ0hVTktfU0laRTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZTxNSU5fQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUlOX0NIVU5LX1NJWkU7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgTXVsdGlleHAgc3RhcnQ6ICR7bG9nVGV4dH06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cyAtIGksIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICBjb25zdCBidWZmQmFzZXNDaHVuayA9IGJ1ZmZCYXNlcy5zbGljZShpKnNHSW4sIChpK24pKnNHSW4pO1xuICAgICAgICAgICAgY29uc3QgYnVmZlNjYWxhcnNDaHVuayA9IGJ1ZmZTY2FsYXJzLnNsaWNlKGkqc1NjYWxhciwgKGkrbikqc1NjYWxhcik7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goX211bHRpRXhwQ2h1bmsoYnVmZkJhc2VzQ2h1bmssIGJ1ZmZTY2FsYXJzQ2h1bmssIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgTXVsdGlleHAgZW5kOiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCByZXMgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9cmVzdWx0Lmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIHJlcyA9IEcuYWRkKHJlcywgcmVzdWx0W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgRy5tdWx0aUV4cCA9IGFzeW5jIGZ1bmN0aW9uIG11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX211bHRpRXhwKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xuICAgIEcubXVsdGlFeHBBZmZpbmUgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImFmZmluZVwiLCBsb2dnZXIsIGxvZ1RleHQpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkRkZUKGN1cnZlLCBncm91cE5hbWUpIHtcbiAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHRtID0gRy50bTtcbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0KGJ1ZmYsIGludmVyc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcblxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgb3V0VHlwZSA9IG91dFR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgY29uc3QgTUFYX0JJVFNfVEhSRUFEID0gMTQ7XG5cbiAgICAgICAgbGV0IHNJbiwgc01pZCwgc091dCwgZm5JbjJNaWQsIGZuTWlkMk91dCwgZm5GRlRNaXgsIGZuRkZUSm9pbiwgZm5GRlRGaW5hbDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuSW4yTWlkID0gXCJnMW1fYmF0Y2hUb0phY29iaWFuXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgICAgICBmbkZGVEZpbmFsID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgICAgIGZuRkZUTWl4ID0gXCJnMW1fZmZ0TWl4XCI7XG5cbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzJtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBHLm44O1xuICAgICAgICAgICAgc01pZCA9IEcubjg7XG4gICAgICAgICAgICBzT3V0ID0gRy5uODtcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZnJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZikpIHtcbiAgICAgICAgICAgIGJ1ZmYgPSBhcnJheTJidWZmZXIoYnVmZiwgc0luKTtcbiAgICAgICAgICAgIHJldHVybkFycmF5ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmYgPSBidWZmLnNsaWNlKDAsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZi5ieXRlTGVuZ3RoIC8gc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAgKCgxIDw8IGJpdHMpICE9IG5Qb2ludHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImZmdCBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIiApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPT0gRnIucyArMSkge1xuICAgICAgICAgICAgbGV0IGJ1ZmZPdXQ7XG5cbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0SW52KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWZmT3V0ID0gIGF3YWl0IF9mZnRFeHQoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIyYXJyYXkoYnVmZk91dCwgc091dCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGludjtcbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGludiA9IEZyLmludihGci5lKG5Qb2ludHMpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgIGJ1ZmZSZXZlcnNlQml0cyhidWZmLCBzSW4pO1xuXG4gICAgICAgIGxldCBjaHVua3M7XG4gICAgICAgIGxldCBwb2ludHNJbkNodW5rID0gTWF0aC5taW4oMSA8PCBNQVhfQklUU19USFJFQUQsIG5Qb2ludHMpO1xuICAgICAgICBsZXQgbkNodW5rcyA9IG5Qb2ludHMgLyBwb2ludHNJbkNodW5rO1xuXG4gICAgICAgIHdoaWxlICgobkNodW5rcyA8IHRtLmNvbmN1cnJlbmN5KSYmKHBvaW50c0luQ2h1bms+PTE2KSkge1xuICAgICAgICAgICAgbkNodW5rcyAqPSAyO1xuICAgICAgICAgICAgcG9pbnRzSW5DaHVuayAvPSAyO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbDJDaHVuayA9IGxvZzIocG9pbnRzSW5DaHVuayk7XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAke2JpdHN9IG1peCBzdGFydDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDAsIGxlbjogc01pZCpwb2ludHNJbkNodW5rfSk7XG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmLnNsaWNlKCAocG9pbnRzSW5DaHVuayAqIGkpKnNJbiwgKHBvaW50c0luQ2h1bmsgKiAoaSsxKSkqc0luKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmZDaHVua30pO1xuICAgICAgICAgICAgaWYgKGZuSW4yTWlkKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5JbjJNaWQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGo9MTsgajw9bDJDaHVuaztqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkZGVE1peCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YWw6IGp9XX0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobDJDaHVuaz09Yml0cykge1xuICAgICAgICAgICAgICAgIGlmIChmbkZGVEZpbmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZm5NaWQyT3V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzSW5DaHVuaypzT3V0fSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6MCwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggZW5kOiAke2l9LyR7bkNodW5rc31gKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNodW5rcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGk8IG5DaHVua3M7IGkrKykgY2h1bmtzW2ldID0gY2h1bmtzW2ldWzBdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBsMkNodW5rKzE7ICAgaTw9Yml0czsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICAke2JpdHN9ICBqb2luOiAke2l9LyR7Yml0c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG5Hcm91cHMgPSAxIDw8IChiaXRzIC0gaSk7XG4gICAgICAgICAgICBjb25zdCBuQ2h1bmtzUGVyR3JvdXAgPSBuQ2h1bmtzIC8gbkdyb3VwcztcbiAgICAgICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmlyc3QgPSBGci5leHAoIEZyLndbaV0sIGsqcG9pbnRzSW5DaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPT1iaXRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogNCwgYnVmZjogaW52fSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogNH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjoxfSwge3ZhbDogcG9pbnRzSW5DaHVua30sIHt2YXI6IDF9XX0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc01pZH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c0luQ2h1bmsqc01pZH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAke2JpdHN9IGpvaW4gICR7aX0vJHtiaXRzfSAgJHtqKzF9LyR7bkdyb3Vwc30gJHtrfS8ke25DaHVua3NQZXJHcm91cC8yfWApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzQ2h1bmsgPSByZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28xXSA9IHJlc0NodW5rWzBdO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKChwb2ludHNJbkNodW5rLTEpKnNPdXQpKTtcbiAgICAgICAgICAgIGxldCBwPSBzT3V0O1xuICAgICAgICAgICAgZm9yIChsZXQgaT1uQ2h1bmtzLTE7IGk+MDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwKTtcbiAgICAgICAgICAgICAgICBwICs9IHBvaW50c0luQ2h1bmsqc091dDtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldOyAgLy8gTGliZXJhdGUgbWVtXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmT3V0LnNldChjaHVua3NbMF0uc2xpY2UoMCwgKHBvaW50c0luQ2h1bmstMSkqc091dCksIHApO1xuICAgICAgICAgICAgZGVsZXRlIGNodW5rc1swXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBidWZmT3V0LnNldChjaHVua3NbaV0sIHBvaW50c0luQ2h1bmsqc091dCppKTtcbiAgICAgICAgICAgICAgICBkZWxldGUgY2h1bmtzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJldHVybkFycmF5KSB7XG4gICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgbGV0IGIxLCBiMjtcbiAgICAgICAgYjEgPSBidWZmLnNsaWNlKCAwICwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBiMiA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgW2IxLCBiMl0gPSBhd2FpdCBfZmZ0Sm9pbkV4dChiMSwgYjIsIFwiZmZ0Sm9pbkV4dFwiLCBGci5vbmUsIEZyLnNoaWZ0LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIGZhbHNlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjIsIGZhbHNlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG5cbiAgICAgICAgY29uc3QgcmVzMSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHJlczFbMF0uYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHJlczFbMF0uYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldChyZXMxWzBdKTtcbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVsxXSwgcmVzMVswXS5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0RXh0SW52KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgbGV0IGIxLCBiMjtcbiAgICAgICAgYjEgPSBidWZmLnNsaWNlKCAwICwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBiMiA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdChiMSwgdHJ1ZSwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KSk7XG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjIsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBfZmZ0Sm9pbkV4dChiMSwgYjIsIFwiZmZ0Sm9pbkV4dEludlwiLCBGci5vbmUsIEZyLnNoaWZ0SW52LCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHJlczFbMF0uYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHJlczFbMF0uYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldChyZXMxWzBdKTtcbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVsxXSwgcmVzMVswXS5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9mZnRKb2luRXh0KGJ1ZmYxLCBidWZmMiwgZm4sIGZpcnN0LCBpbmMsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwxNjtcbiAgICAgICAgY29uc3QgTUlOX0NIVU5LX1NJWkUgPSAxPDw0O1xuXG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGxldCBmbkluMk1pZCwgZm5NaWQyT3V0O1xuICAgICAgICBsZXQgc091dCwgc0luLCBzTWlkO1xuXG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX1wiK2ZuO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzJtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX1wiK2ZuO1xuICAgICAgICAgICAgc01pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzJtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNPdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBGci5uODtcbiAgICAgICAgICAgIHNPdXQgPSBGci5uODtcbiAgICAgICAgICAgIHNNaWQgPSBGci5uODtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX1wiICsgZm47XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJ1ZmYxLmJ5dGVMZW5ndGggIT0gYnVmZjIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBidWZmZXIgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmMS5ieXRlTGVuZ3RoIC8gc0luKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgY2h1bmtTaXplID0gTWF0aC5mbG9vcihuUG9pbnRzIC90bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGlmIChjaHVua1NpemUgPCBNSU5fQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUlOX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemUgPiBNQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG5cbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdEpvaW5FeHQgU3RhcnQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cyAtIGksIGNodW5rU2l6ZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0Q2h1bmsgPSBGci5tdWwoZmlyc3QsIEZyLmV4cCggaW5jLCBpKSk7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGIxID0gYnVmZjEuc2xpY2UoaSpzSW4sIChpK24pKnNJbik7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDAsIGxlbjogc01pZCpufSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBiMX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBufSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5JbjJNaWQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgIHt2YWw6IEZyLnN9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuTWlkMk91dCwgcGFyYW1zOiBbe3ZhcjoxfSwge3ZhbDogbn0sIHt2YXI6IDF9XX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IG4qc091dH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IG4qc091dH0pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spLnRoZW4oIChyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IEVuZDogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0MTtcbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0MjtcbiAgICAgICAgaWYgKG5Qb2ludHMgKiBzT3V0ID4gMTw8MjgpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MS5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0Mi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtmdWxsQnVmZk91dDEsIGZ1bGxCdWZmT3V0Ml07XG4gICAgfVxuXG5cbiAgICBHLmZmdCA9IGFzeW5jIGZ1bmN0aW9uKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9mZnQoYnVmZiwgZmFsc2UsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgIH07XG5cbiAgICBHLmlmZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIHRydWUsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgIH07XG5cbiAgICBHLmxhZ3JhbmdlRXZhbHVhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiAoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcbiAgICAgICAgb3V0VHlwZSA9IG91dFR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0luO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBzSW4gPSBGci5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gYnVmZi5ieXRlTGVuZ3RoIC9zSW47XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGlmICgoMiAqKiBiaXRzKSpzSW4gIT0gYnVmZi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJsYWdyYW5nZUV2YWx1YXRpb25zIGlpbnZhbGlkIGlucHV0IHNpemVcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJsYWdyYW5nZUV2YWx1YXRpb25zIGludmFsaWQgSW5wdXQgc2l6ZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzIDw9IEZyLnMpIHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBHLmlmZnQoYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA+IEZyLnMrMSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnB1dCB0b28gYmlnXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnB1dCB0b28gYmlnXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHQwID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgvMik7XG4gICAgICAgIGxldCB0MSA9IGJ1ZmYuc2xpY2UoYnVmZi5ieXRlTGVuZ3RoLzIsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG5cblxuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gRnIuZXhwKEZyLnNoaWZ0LCBuUG9pbnRzLzIpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBGci5pbnYoIEZyLnN1YihGci5vbmUsIHNoaWZ0VG9TbWFsbE0pKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IF9mZnRKb2luRXh0KHQwLCB0MSwgXCJwcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uXCIsIHNDb25zdCwgRnIuc2hpZnRJbnYsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHByZXBcIik7XG5cbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KHQwLCB0cnVlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0ICsgXCIgdDBcIikpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KHQxLCB0cnVlLCBcImphY29iaWFuXCIsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0ICsgXCIgdDFcIikpO1xuXG4gICAgICAgIFt0MCwgdDFdID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAodDAuYnl0ZUxlbmd0aCA+ICgxPDwyOCkpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkodDAuYnl0ZUxlbmd0aCoyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQwKTtcbiAgICAgICAgYnVmZk91dC5zZXQodDEsIHQwLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgIH07XG5cbiAgICBHLmZmdE1peCA9IGFzeW5jIGZ1bmN0aW9uIGZmdE1peChidWZmKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWUsIGZuRkZUSm9pbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMW1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdE1peFwiO1xuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgY29uc3QgcG93ZXIgPSBsb2cyKG5Qb2ludHMpO1xuXG4gICAgICAgIGxldCBuQ2h1bmtzID0gMSA8PCBsb2cyKHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cbiAgICAgICAgY29uc3QgcG93ZXJDaHVuayA9IGxvZzIocG9pbnRzUGVyQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgY29uc3QgYiA9IGJ1ZmYuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBifSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PXBvd2VyQ2h1bms7IGorKykge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBqfVxuICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIGNodW5rc1tpXSA9IHJlc3VsdFtpXVswXTtcblxuXG4gICAgICAgIGZvciAobGV0IGkgPSBwb3dlckNodW5rKzE7IGk8PXBvd2VyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG5Hcm91cHMgPSAxIDw8IChwb3dlciAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c1BlckNodW5rKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5jID0gRnIud1tpXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGNodW5rc1tvMV19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBjaHVua3NbbzJdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3R9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZUSm9pbiwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzQ2h1bmsgPSByZXMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28xXSA9IHJlc0NodW5rWzBdO1xuICAgICAgICAgICAgICAgICAgICBjaHVua3NbbzJdID0gcmVzQ2h1bmtbMV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICBwKz1jaHVua3NbaV0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRKb2luID0gYXN5bmMgZnVuY3Rpb24gZmZ0Sm9pbihidWZmMSwgYnVmZjIsIGZpcnN0LCBpbmMpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJmcm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG4gICAgICAgIGlmIChuUG9pbnRzIDw9IG5DaHVua3MqMikgbkNodW5rcyA9IDE7XG5cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBuUG9pbnRzIC8gbkNodW5rcztcblxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoaW5jLCBpKnBvaW50c1BlckNodW5rKSk7XG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGIyID0gYnVmZjIuc2xpY2UoKGkqIHBvaW50c1BlckNodW5rKSpzRywgKChpKzEpKiBwb2ludHNQZXJDaHVuaykqc0cpO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBiMX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBiMn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdENodW5rfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuTmFtZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNQZXJDaHVuaypzR30pO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChidWZmMSBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MiA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0cpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MS5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0Mi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtmdWxsQnVmZk91dDEsIGZ1bGxCdWZmT3V0Ml07XG4gICAgfTtcblxuXG5cbiAgICBHLmZmdEZpbmFsID0gIGFzeW5jIGZ1bmN0aW9uIGZmdEZpbmFsKGJ1ZmYsIGZhY3Rvcikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBjb25zdCBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICBsZXQgZm5OYW1lLCBmblRvQWZmaW5lO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMW1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0RmluYWxcIjtcbiAgICAgICAgICAgIGZuVG9BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoIC8gc0cpO1xuICAgICAgICBpZiAoblBvaW50cyAhPSAxIDw8IGxvZzIoblBvaW50cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50c1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gdG0uY29uY3VycmVuY3kpO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csIChpKnBvaW50c1BlckNodW5rK24pKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBmYWN0b3J9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuVG9BZmZpbmUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IG4qc0dvdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGZ1bGxCdWZmT3V0O1xuICAgICAgICBpZiAoYnVmZiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0dvdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkRW5naW5lKHBhcmFtcykge1xuXG4gICAgY29uc3QgdG0gPSBhd2FpdCBidWlsZFRocmVhZE1hbmFnZXIocGFyYW1zLndhc20sIHBhcmFtcy5zaW5nbGVUaHJlYWQpO1xuXG5cbiAgICBjb25zdCBjdXJ2ZSA9IHt9O1xuXG4gICAgY3VydmUucSA9IGUocGFyYW1zLndhc20ucS50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5yID0gZShwYXJhbXMud2FzbS5yLnRvU3RyaW5nKCkpO1xuICAgIGN1cnZlLm5hbWUgPSBwYXJhbXMubmFtZTtcbiAgICBjdXJ2ZS50bSA9IHRtO1xuICAgIGN1cnZlLnByZVBTaXplID0gcGFyYW1zLndhc20ucHJlUFNpemU7XG4gICAgY3VydmUucHJlUVNpemUgPSBwYXJhbXMud2FzbS5wcmVRU2l6ZTtcbiAgICBjdXJ2ZS5GciA9IG5ldyBXYXNtRmllbGQxKHRtLCBcImZybVwiLCBwYXJhbXMubjhyLCBwYXJhbXMucik7XG4gICAgY3VydmUuRjEgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmMW1cIiwgcGFyYW1zLm44cSwgcGFyYW1zLnEpO1xuICAgIGN1cnZlLkYyID0gbmV3IFdhc21GaWVsZDIodG0sIFwiZjJtXCIsIGN1cnZlLkYxKTtcbiAgICBjdXJ2ZS5HMSA9IG5ldyBXYXNtQ3VydmUodG0sIFwiZzFtXCIsIGN1cnZlLkYxLCBwYXJhbXMud2FzbS5wRzFnZW4sIHBhcmFtcy53YXNtLnBHMWIsIHBhcmFtcy5jb2ZhY3RvckcxKTtcbiAgICBjdXJ2ZS5HMiA9IG5ldyBXYXNtQ3VydmUodG0sIFwiZzJtXCIsIGN1cnZlLkYyLCBwYXJhbXMud2FzbS5wRzJnZW4sIHBhcmFtcy53YXNtLnBHMmIsIHBhcmFtcy5jb2ZhY3RvckcyKTtcbiAgICBjdXJ2ZS5GNiA9IG5ldyBXYXNtRmllbGQzKHRtLCBcImY2bVwiLCBjdXJ2ZS5GMik7XG4gICAgY3VydmUuRjEyID0gbmV3IFdhc21GaWVsZDIodG0sIFwiZnRtXCIsIGN1cnZlLkY2KTtcblxuICAgIGN1cnZlLkd0ID0gY3VydmUuRjEyO1xuXG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkcxXCIpO1xuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMlwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcxXCIpO1xuICAgIGJ1aWxkTXVsdGlleHAoY3VydmUsIFwiRzJcIik7XG5cbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJHMlwiKTtcbiAgICBidWlsZEZGVChjdXJ2ZSwgXCJGclwiKTtcblxuICAgIGJ1aWxkUGFpcmluZyhjdXJ2ZSk7XG5cbiAgICBjdXJ2ZS5hcnJheTJidWZmZXIgPSBmdW5jdGlvbihhcnIsIHNHKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRyphcnIubGVuZ3RoKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBidWZmLnNldChhcnJbaV0sIGkqc0cpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfTtcblxuICAgIGN1cnZlLmJ1ZmZlcjJhcnJheSA9IGZ1bmN0aW9uKGJ1ZmYgLCBzRykge1xuICAgICAgICBjb25zdCBuPSBidWZmLmJ5dGVMZW5ndGggLyBzRztcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkqc0csIGkqc0crc0cpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZnVuY3Rpb24gdG9OdW1iZXIobikge1xuICAgIHJldHVybiBCaWdJbnQobik7XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUobikge1xuICAgIHJldHVybiBuIDwgMG47XG59XG5cbmZ1bmN0aW9uIGlzWmVybyhuKSB7XG4gICAgcmV0dXJuIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgobikge1xuICAgIGlmIChpc05lZ2F0aXZlKG4pKSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aCAtIDE7IC8vIGRpc2NhcmQgdGhlIC0gc2lnblxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuLnRvU3RyaW5nKDIpLmxlbmd0aDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHUzMihuKSB7XG4gICAgY29uc3QgYiA9IFtdO1xuICAgIGNvbnN0IHYgPSB0b051bWJlcihuKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiA4biAmIDB4RkZuKSk7XG4gICAgYi5wdXNoKE51bWJlcih2ID4+IDE2biAmIDB4RkZuKSk7XG4gICAgYi5wdXNoKE51bWJlcih2ID4+IDI0biAmIDB4RkZuKSk7XG4gICAgcmV0dXJuIGI7XG59XG5cbmZ1bmN0aW9uIHRvVVRGOEFycmF5KHN0cikge1xuICAgIHZhciB1dGY4ID0gW107XG4gICAgZm9yICh2YXIgaT0wOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGFyY29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICBpZiAoY2hhcmNvZGUgPCAweDgwKSB1dGY4LnB1c2goY2hhcmNvZGUpO1xuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ODAwKSB7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhjMCB8IChjaGFyY29kZSA+PiA2KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGNoYXJjb2RlIDwgMHhkODAwIHx8IGNoYXJjb2RlID49IDB4ZTAwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4ZTAgfCAoY2hhcmNvZGUgPj4gMTIpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlPj42KSAmIDB4M2YpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoY2hhcmNvZGUgJiAweDNmKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3Vycm9nYXRlIHBhaXJcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAvLyBVVEYtMTYgZW5jb2RlcyAweDEwMDAwLTB4MTBGRkZGIGJ5XG4gICAgICAgICAgICAvLyBzdWJ0cmFjdGluZyAweDEwMDAwIGFuZCBzcGxpdHRpbmcgdGhlXG4gICAgICAgICAgICAvLyAyMCBiaXRzIG9mIDB4MC0weEZGRkZGIGludG8gdHdvIGhhbHZlc1xuICAgICAgICAgICAgY2hhcmNvZGUgPSAweDEwMDAwICsgKCgoY2hhcmNvZGUgJiAweDNmZik8PDEwKVxuICAgICAgICAgICAgICAgICAgICAgIHwgKHN0ci5jaGFyQ29kZUF0KGkpICYgMHgzZmYpKTtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGYwIHwgKGNoYXJjb2RlID4+MTgpLFxuICAgICAgICAgICAgICAgIDB4ODAgfCAoKGNoYXJjb2RlPj4xMikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1dGY4O1xufVxuXG5mdW5jdGlvbiBzdHJpbmcoc3RyKSB7XG4gICAgY29uc3QgYnl0ZXMgPSB0b1VURjhBcnJheShzdHIpO1xuICAgIHJldHVybiBbIC4uLnZhcnVpbnQzMihieXRlcy5sZW5ndGgpLCAuLi5ieXRlcyBdO1xufVxuXG5mdW5jdGlvbiB2YXJ1aW50KG4pIHtcbiAgICBjb25zdCBjb2RlID0gW107XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAoaXNOZWdhdGl2ZSh2KSkgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGNhbm5vdCBiZSBuZWdhdGl2ZVwiKTtcbiAgICB3aGlsZSAoIWlzWmVybyh2KSkge1xuICAgICAgICBjb2RlLnB1c2goTnVtYmVyKHYgJiAweDdGbikpO1xuICAgICAgICB2ID0gdiA+PiA3bjtcbiAgICB9XG4gICAgaWYgKGNvZGUubGVuZ3RoPT0wKSBjb2RlLnB1c2goMCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGNvZGUubGVuZ3RoLTE7IGkrKykge1xuICAgICAgICBjb2RlW2ldID0gY29kZVtpXSB8IDB4ODA7XG4gICAgfVxuICAgIHJldHVybiBjb2RlO1xufVxuXG5mdW5jdGlvbiB2YXJpbnQoX24pIHtcbiAgICBsZXQgbiwgc2lnbjtcbiAgICBjb25zdCBiaXRzID0gYml0TGVuZ3RoKF9uKTtcbiAgICBpZiAoX248MCkge1xuICAgICAgICBzaWduID0gdHJ1ZTtcbiAgICAgICAgbiA9ICgxbiA8PCBCaWdJbnQoYml0cykpICsgX247XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2lnbiA9IGZhbHNlO1xuICAgICAgICBuID0gdG9OdW1iZXIoX24pO1xuICAgIH1cbiAgICBjb25zdCBwYWRkaW5nQml0cyA9IDcgLSAoYml0cyAlIDcpO1xuXG4gICAgY29uc3QgcGFkZGluZyA9ICgoMW4gPDwgQmlnSW50KHBhZGRpbmdCaXRzKSkgLSAxbikgPDwgQmlnSW50KGJpdHMpO1xuICAgIGNvbnN0IHBhZGRpbmdNYXNrID0gKCgxIDw8ICg3IC0gcGFkZGluZ0JpdHMpKS0xKSB8IDB4ODA7XG5cbiAgICBjb25zdCBjb2RlID0gdmFydWludChuICsgcGFkZGluZyk7XG5cbiAgICBpZiAoIXNpZ24pIHtcbiAgICAgICAgY29kZVtjb2RlLmxlbmd0aC0xXSA9IGNvZGVbY29kZS5sZW5ndGgtMV0gJiBwYWRkaW5nTWFzaztcbiAgICB9XG5cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50MzIobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGbikgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgaWYgKHYgPiAweDdGRkZGRkZGbikgdiA9IHYgLSAweDEwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwXCIsIDE2KSBhcyBiYXNlMTBcbiAgICBpZiAodiA8IC0yMTQ3NDgzNjQ4bikgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBzbWFsbFwiKTtcbiAgICByZXR1cm4gdmFyaW50KHYpO1xufVxuXG5mdW5jdGlvbiB2YXJpbnQ2NChuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRkZGRkZGRkZGbikgdiA9IHYgLSAweDEwMDAwMDAwMDAwMDAwMDAwbjtcbiAgICAvLyBiaWdJbnQoXCItODAwMDAwMDAwMDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtOTIyMzM3MjAzNjg1NDc3NTgwOG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFydWludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIHJldHVybiB2YXJ1aW50KHYpO1xufVxuXG5mdW5jdGlvbiB0b0hleFN0cmluZyhieXRlQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShieXRlQXJyYXksIGZ1bmN0aW9uKGJ5dGUpIHtcbiAgICAgICAgcmV0dXJuIChcIjBcIiArIChieXRlICYgMHhGRikudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG4gICAgfSkuam9pbihcIlwiKTtcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBDb2RlQnVpbGRlciB7XG4gICAgY29uc3RydWN0b3IoZnVuYykge1xuICAgICAgICB0aGlzLmZ1bmMgPSBmdW5jO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uTmFtZSA9IGZ1bmMuZnVuY3Rpb25OYW1lO1xuICAgICAgICB0aGlzLm1vZHVsZSA9IGZ1bmMubW9kdWxlO1xuICAgIH1cblxuICAgIHNldExvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMSwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgdGVlTG9jYWwobG9jYWxOYW1lLCB2YWxDb2RlKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsuLi52YWxDb2RlLCAweDIyLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbChsb2NhbE5hbWUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWzB4MjAsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkOF9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyA4IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMwLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyA4IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMxLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzIsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQxNl91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiBfYWxpZ247ICAvLyAxNiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM0LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMzJfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAyIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzUsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMyA6IF9hbGlnbjsgIC8vIDY0IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI5LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAzO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAzO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzNywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfc3RvcmUzMihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2UsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpNjRfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2QsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpNjRfc3RvcmU4KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYywgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmUsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQxNl91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDEgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAyIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MjgsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAyO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAyO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzNiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGkzMl9zdG9yZTE2KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAxO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAxO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYiwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfc3RvcmU4KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbiwgX2NvZGVWYWwpIHtcbiAgICAgICAgbGV0IG9mZnNldCwgYWxpZ24sIGNvZGVWYWw7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KF9vZmZzZXQpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSAwO1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9vZmZzZXQ7XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfYWxpZ24pKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSAwO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9hbGlnbjtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9jb2RlVmFsKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gX2FsaWduO1xuICAgICAgICAgICAgY29kZVZhbCA9IF9jb2RlVmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgLi4uY29kZVZhbCwgMHgzYSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBjYWxsKGZuTmFtZSwgLi4uYXJncykge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLm1vZHVsZS5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZ1bmN0aW9uIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHtmbk5hbWV9YCk7XG4gICAgICAgIHJldHVybiBbLi4uW10uY29uY2F0KC4uLmFyZ3MpLCAweDEwLCAuLi52YXJ1aW50MzIoaWR4KV07XG4gICAgfVxuXG4gICAgY2FsbF9pbmRpcmVjdChmbklkeCwgLi4uYXJncykge1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgLi4uZm5JZHgsIDB4MTEsIDAsIDBdO1xuICAgIH1cblxuICAgIGlmKGNvbmRDb2RlLCB0aGVuQ29kZSwgZWxzZUNvZGUpIHtcbiAgICAgICAgaWYgKGVsc2VDb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDA0LCAweDQwLCAuLi50aGVuQ29kZSwgMHgwNSwgLi4uZWxzZUNvZGUsIDB4MGJdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MGJdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYmxvY2soYkNvZGUpIHsgcmV0dXJuIFsweDAyLCAweDQwLCAuLi5iQ29kZSwgMHgwYl07IH1cbiAgICBsb29wKC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsweDAzLCAweDQwLCAuLi5bXS5jb25jYXQoLi4uWy4uLmFyZ3NdKSwgMHgwYl07XG4gICAgfVxuICAgIGJyX2lmKHJlbFBhdGgsIGNvbmRDb2RlKSB7IHJldHVybiBbLi4uY29uZENvZGUsIDB4MGQsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICBicihyZWxQYXRoKSB7IHJldHVybiBbMHgwYywgLi4udmFydWludDMyKHJlbFBhdGgpXTsgfVxuICAgIHJldChyQ29kZSkgeyByZXR1cm4gWy4uLnJDb2RlLCAweDBmXTsgfVxuICAgIGRyb3AoZENvZGUpIHsgcmV0dXJuIFsuLi5kQ29kZSwgIDB4MWFdOyB9XG5cbiAgICBpNjRfY29uc3QobnVtKSB7IHJldHVybiBbMHg0MiwgLi4udmFyaW50NjQobnVtKV07IH1cbiAgICBpMzJfY29uc3QobnVtKSB7IHJldHVybiBbMHg0MSwgLi4udmFyaW50MzIobnVtKV07IH1cblxuXG4gICAgaTY0X2VxeihvcGNvZGUpIHsgcmV0dXJuIFsuLi5vcGNvZGUsIDB4NTBdOyB9XG4gICAgaTY0X2VxKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDUxXTsgfVxuICAgIGk2NF9uZShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1Ml07IH1cbiAgICBpNjRfbHRfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1M107IH1cbiAgICBpNjRfbHRfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1NF07IH1cbiAgICBpNjRfZ3RfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1NV07IH1cbiAgICBpNjRfZ3RfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1Nl07IH1cbiAgICBpNjRfbGVfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1N107IH1cbiAgICBpNjRfbGVfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1OF07IH1cbiAgICBpNjRfZ2VfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1OV07IH1cbiAgICBpNjRfZ2VfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1YV07IH1cbiAgICBpNjRfYWRkKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdjXTsgfVxuICAgIGk2NF9zdWIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2RdOyB9XG4gICAgaTY0X211bChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3ZV07IH1cbiAgICBpNjRfZGl2X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2ZdOyB9XG4gICAgaTY0X2Rpdl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgwXTsgfVxuICAgIGk2NF9yZW1fcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MV07IH1cbiAgICBpNjRfcmVtX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODJdOyB9XG4gICAgaTY0X2FuZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4M107IH1cbiAgICBpNjRfb3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODRdOyB9XG4gICAgaTY0X3hvcihvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4NV07IH1cbiAgICBpNjRfc2hsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg2XTsgfVxuICAgIGk2NF9zaHJfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4N107IH1cbiAgICBpNjRfc2hyX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODhdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfcyhvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhY107IH1cbiAgICBpNjRfZXh0ZW5kX2kzMl91KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweGFkXTsgfVxuICAgIGk2NF9jbHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NzldOyB9XG4gICAgaTY0X2N0eihvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHg3YV07IH1cblxuICAgIGkzMl9lcXoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NDVdOyB9XG4gICAgaTMyX2VxKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDQ2XTsgfVxuICAgIGkzMl9uZShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0N107IH1cbiAgICBpMzJfbHRfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0OF07IH1cbiAgICBpMzJfbHRfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0OV07IH1cbiAgICBpMzJfZ3RfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0YV07IH1cbiAgICBpMzJfZ3RfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Yl07IH1cbiAgICBpMzJfbGVfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Y107IH1cbiAgICBpMzJfbGVfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0ZF07IH1cbiAgICBpMzJfZ2VfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0ZV07IH1cbiAgICBpMzJfZ2VfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Zl07IH1cbiAgICBpMzJfYWRkKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZhXTsgfVxuICAgIGkzMl9zdWIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmJdOyB9XG4gICAgaTMyX211bChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2Y107IH1cbiAgICBpMzJfZGl2X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmRdOyB9XG4gICAgaTMyX2Rpdl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZlXTsgfVxuICAgIGkzMl9yZW1fcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2Zl07IH1cbiAgICBpMzJfcmVtX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzBdOyB9XG4gICAgaTMyX2FuZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3MV07IH1cbiAgICBpMzJfb3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzJdOyB9XG4gICAgaTMyX3hvcihvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3M107IH1cbiAgICBpMzJfc2hsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc0XTsgfVxuICAgIGkzMl9zaHJfcyhvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NV07IH1cbiAgICBpMzJfc2hyX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzZdOyB9XG4gICAgaTMyX3JvdGwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzddOyB9XG4gICAgaTMyX3JvdHIob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzhdOyB9XG4gICAgaTMyX3dyYXBfaTY0KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweGE3XTsgfVxuICAgIGkzMl9jbHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjddOyB9XG4gICAgaTMyX2N0eihvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHg2OF07IH1cblxuICAgIHVucmVhY2hhYmxlKCkgeyByZXR1cm4gWyAweDAgXTsgfVxuXG4gICAgY3VycmVudF9tZW1vcnkoKSB7IHJldHVybiBbIDB4M2YsIDBdOyB9XG5cbiAgICBjb21tZW50KCkgeyByZXR1cm4gW107IH1cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21idWlsZGVyXG5cbiAgICB3YXNtYnVpbGRlciBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21idWlsZGVyIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21idWlsZGVyLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jb25zdCB0eXBlQ29kZXMgPSB7XG4gICAgXCJpMzJcIjogMHg3ZixcbiAgICBcImk2NFwiOiAweDdlLFxuICAgIFwiZjMyXCI6IDB4N2QsXG4gICAgXCJmNjRcIjogMHg3YyxcbiAgICBcImFueWZ1bmNcIjogMHg3MCxcbiAgICBcImZ1bmNcIjogMHg2MCxcbiAgICBcImVtcHR5YmxvY2tcIjogMHg0MFxufTtcblxuXG5jbGFzcyBGdW5jdGlvbkJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IgKG1vZHVsZSwgZm5OYW1lLCBmblR5cGUsIG1vZHVsZU5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICBpZiAoZm5UeXBlID09IFwiaW1wb3J0XCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm5UeXBlID0gXCJpbXBvcnRcIjtcbiAgICAgICAgICAgIHRoaXMubW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XG4gICAgICAgICAgICB0aGlzLmZpZWxkTmFtZSA9IGZpZWxkTmFtZTtcbiAgICAgICAgfSBlbHNlIGlmIChmblR5cGUgPT0gXCJpbnRlcm5hbFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW50ZXJuYWxcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZnVuY3Rpb24gZm5UeXBlOiBcIiArIGZuVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tb2R1bGUgPSBtb2R1bGU7XG4gICAgICAgIHRoaXMuZm5OYW1lID0gZm5OYW1lO1xuICAgICAgICB0aGlzLnBhcmFtcyA9IFtdO1xuICAgICAgICB0aGlzLmxvY2FscyA9IFtdO1xuICAgICAgICB0aGlzLmxvY2FsSWR4QnlOYW1lID0ge307XG4gICAgICAgIHRoaXMuY29kZSA9IFtdO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSBudWxsO1xuICAgICAgICB0aGlzLm5leHRMb2NhbCA9MDtcbiAgICB9XG5cbiAgICBhZGRQYXJhbShwYXJhbU5hbWUsIHBhcmFtVHlwZSkge1xuICAgICAgICBpZiAodGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBwYXJhbSBhbHJlYWR5IGV4aXN0cy4gRnVuY3Rpb246ICR7dGhpcy5mbk5hbWV9LCBQYXJhbTogJHtwYXJhbU5hbWV9IGApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLm5leHRMb2NhbCsrO1xuICAgICAgICB0aGlzLmxvY2FsSWR4QnlOYW1lW3BhcmFtTmFtZV0gPSBpZHg7XG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogcGFyYW1UeXBlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFkZExvY2FsKGxvY2FsTmFtZSwgbG9jYWxUeXBlLCBfbGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IF9sZW5ndGggfHwgMTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgbG9jYWwgYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLmxvY2Fscy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsVHlwZSxcbiAgICAgICAgICAgIGxlbmd0aDogbGVuZ3RoXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFJldHVyblR5cGUocmV0dXJuVHlwZSkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5UeXBlKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZXR1cm5UeXBlIGFscmVhZHkgZGVmaW5lZC4gRnVuY3Rpb246ICR7dGhpcy5mbk5hbWV9YCk7XG4gICAgICAgIHRoaXMucmV0dXJuVHlwZSA9IHJldHVyblR5cGU7XG4gICAgfVxuXG4gICAgZ2V0U2lnbmF0dXJlKCkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSBbLi4udmFydWludDMyKHRoaXMucGFyYW1zLmxlbmd0aCksIC4uLnRoaXMucGFyYW1zLm1hcCgocCkgPT4gdHlwZUNvZGVzW3AudHlwZV0pXTtcbiAgICAgICAgY29uc3QgcmV0dXJucyA9IHRoaXMucmV0dXJuVHlwZSA/IFsweDAxLCB0eXBlQ29kZXNbdGhpcy5yZXR1cm5UeXBlXV0gOiBbMF07XG4gICAgICAgIHJldHVybiBbMHg2MCwgLi4ucGFyYW1zLCAuLi5yZXR1cm5zXTtcbiAgICB9XG5cbiAgICBnZXRCb2R5KCkge1xuICAgICAgICBjb25zdCBsb2NhbHMgPSB0aGlzLmxvY2Fscy5tYXAoKGwpID0+IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMihsLmxlbmd0aCksXG4gICAgICAgICAgICB0eXBlQ29kZXNbbC50eXBlXVxuICAgICAgICBdKTtcblxuICAgICAgICBjb25zdCBib2R5ID0gW1xuICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMubG9jYWxzLmxlbmd0aCksXG4gICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4ubG9jYWxzKSxcbiAgICAgICAgICAgIC4uLnRoaXMuY29kZSxcbiAgICAgICAgICAgIDB4MGJcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMihib2R5Lmxlbmd0aCksXG4gICAgICAgICAgICAuLi5ib2R5XG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgYWRkQ29kZSguLi5jb2RlKSB7XG4gICAgICAgIHRoaXMuY29kZS5wdXNoKC4uLltdLmNvbmNhdCguLi5bLi4uY29kZV0pKTtcbiAgICB9XG5cbiAgICBnZXRDb2RlQnVpbGRlcigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2RlQnVpbGRlcih0aGlzKTtcbiAgICB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgTW9kdWxlQnVpbGRlciB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgPSAwO1xuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucyA9MDtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IDEsXG4gICAgICAgICAgICBtb2R1bGVOYW1lOiBcImVudlwiLFxuICAgICAgICAgICAgZmllbGROYW1lOiBcIm1lbW9yeVwiXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZnJlZSA9IDg7XG4gICAgICAgIHRoaXMuZGF0YXMgPSBbXTtcbiAgICAgICAgdGhpcy5tb2R1bGVzID0ge307XG4gICAgICAgIHRoaXMuZXhwb3J0cyA9IFtdO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uc1RhYmxlID0gW107XG4gICAgfVxuXG4gICAgYnVpbGQoKSB7XG4gICAgICAgIHRoaXMuX3NldFNpZ25hdHVyZXMoKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KFtcbiAgICAgICAgICAgIC4uLnUzMigweDZkNzM2MTAwKSxcbiAgICAgICAgICAgIC4uLnUzMigxKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkVHlwZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRJbXBvcnQoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRnVuY3Rpb25zVGFibGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRXhwb3J0cygpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRFbGVtZW50cygpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGRDb2RlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZERhdGEoKVxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBhZGRGdW5jdGlvbihmbk5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBhbHJlYWR5IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25zLmxlbmd0aDtcbiAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdID0gaWR4O1xuXG4gICAgICAgIHRoaXMuZnVuY3Rpb25zLnB1c2gobmV3IEZ1bmN0aW9uQnVpbGRlcih0aGlzLCBmbk5hbWUsIFwiaW50ZXJuYWxcIikpO1xuXG4gICAgICAgIHRoaXMubkludGVybmFsRnVuY3Rpb25zKys7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tpZHhdO1xuICAgIH1cblxuICAgIGFkZElpbXBvcnRGdW5jdGlvbihmbk5hbWUsIG1vZHVsZU5hbWUsIF9maWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pICE9PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBhbHJlYWR5IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGlmICggICh0aGlzLmZ1bmN0aW9ucy5sZW5ndGg+MClcbiAgICAgICAgICAgICYmKHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zLmxlbmd0aC0xXS50eXBlID09IFwiaW50ZXJuYWxcIikpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEltcG9ydCBmdW5jdGlvbnMgbXVzdCBiZSBkZWNsYXJlZCBiZWZvcmUgaW50ZXJuYWw6ICR7Zm5OYW1lfWApO1xuXG4gICAgICAgIGxldCBmaWVsZE5hbWUgPSBfZmllbGROYW1lIHx8IGZuTmFtZTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImltcG9ydFwiLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpKTtcblxuICAgICAgICB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgKys7XG4gICAgICAgIHJldHVybiB0aGlzLmZ1bmN0aW9uc1tpZHhdO1xuICAgIH1cblxuICAgIHNldE1lbW9yeShwYWdlc1NpemUsIG1vZHVsZU5hbWUsIGZpZWxkTmFtZSkge1xuICAgICAgICB0aGlzLm1lbW9yeSA9IHtcbiAgICAgICAgICAgIHBhZ2VzU2l6ZTogcGFnZXNTaXplLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogbW9kdWxlTmFtZSB8fCBcImVudlwiLFxuICAgICAgICAgICAgZmllbGROYW1lOiBmaWVsZE5hbWUgfHwgXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGV4cG9ydEZ1bmN0aW9uKGZuTmFtZSwgX2V4cG9ydE5hbWUpIHtcbiAgICAgICAgY29uc3QgZXhwb3J0TmFtZSA9IF9leHBvcnROYW1lIHx8IGZuTmFtZTtcbiAgICAgICAgaWYgKHR5cGVvZih0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0pID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogJHtmbk5hbWV9YCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGV4cG9ydE5hbWUgIT0gZm5OYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2V4cG9ydE5hbWVdID0gaWR4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhwb3J0cy5wdXNoKHtcbiAgICAgICAgICAgIGV4cG9ydE5hbWU6IGV4cG9ydE5hbWUsXG4gICAgICAgICAgICBpZHg6IGlkeFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRGdW5jdGlvblRvVGFibGUoZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZS5wdXNoKGlkeCk7XG4gICAgfVxuXG4gICAgYWRkRGF0YShvZmZzZXQsIGJ5dGVzKSB7XG4gICAgICAgIHRoaXMuZGF0YXMucHVzaCh7XG4gICAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcbiAgICAgICAgICAgIGJ5dGVzOiBieXRlc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhbGxvYyhhLCBiKSB7XG4gICAgICAgIGxldCBzaXplO1xuICAgICAgICBsZXQgYnl0ZXM7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSB8fCBBcnJheUJ1ZmZlci5pc1ZpZXcoYSkpICYmICh0eXBlb2YoYikgPT09IFwidW5kZWZpbmVkXCIpKSB7XG4gICAgICAgICAgICBzaXplID0gYS5sZW5ndGg7XG4gICAgICAgICAgICBieXRlcyA9IGE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaXplID0gYTtcbiAgICAgICAgICAgIGJ5dGVzID0gYjtcbiAgICAgICAgfVxuICAgICAgICBzaXplID0gKCgoc2l6ZS0xKT4+MykgKzEpPDwzOyAgICAgICAvLyBBbGlnbiB0byA2NCBiaXRzLlxuICAgICAgICBjb25zdCBwID0gdGhpcy5mcmVlO1xuICAgICAgICB0aGlzLmZyZWUgKz0gc2l6ZTtcbiAgICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgICAgICB0aGlzLmFkZERhdGEocCwgYnl0ZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGFsbG9jU3RyaW5nKHMpIHtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBnbG9iYWxUaGlzLlRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IHVpbnQ4YXJyYXkgPSBlbmNvZGVyLmVuY29kZShzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsb2MoWy4uLnVpbnQ4YXJyYXksIDBdKTtcbiAgICB9XG5cbiAgICBfc2V0U2lnbmF0dXJlcygpIHtcbiAgICAgICAgdGhpcy5zaWduYXR1cmVzID0gW107XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZUlkeEJ5TmFtZSA9IHt9O1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg+MCkge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gdGhpcy5mdW5jdGlvbnNbdGhpcy5mdW5jdGlvbnNUYWJsZVswXV0uZ2V0U2lnbmF0dXJlKCk7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmVOYW1lID0gXCJzX1wiK3RvSGV4U3RyaW5nKHNpZ25hdHVyZSk7XG4gICAgICAgICAgICBzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV0gPSAwO1xuICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW2ldLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZihzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV0pID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gdGhpcy5zaWduYXR1cmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB0aGlzLnNpZ25hdHVyZXMucHVzaChzaWduYXR1cmUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHggPSBzaWduYXR1cmVJZHhCeU5hbWVbc2lnbmF0dXJlTmFtZV07XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIF9idWlsZFNlY3Rpb24oc2VjdGlvblR5cGUsIHNlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIFtzZWN0aW9uVHlwZSwgLi4udmFydWludDMyKHNlY3Rpb24ubGVuZ3RoKSwgLi4uc2VjdGlvbl07XG4gICAgfVxuXG4gICAgX2J1aWxkVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDEsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuc2lnbmF0dXJlcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLltdLmNvbmNhdCguLi50aGlzLnNpZ25hdHVyZXMpXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkSW1wb3J0KCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5tZW1vcnkubW9kdWxlTmFtZSksXG4gICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5tZW1vcnkuZmllbGROYW1lKSxcbiAgICAgICAgICAgIDB4MDIsXG4gICAgICAgICAgICAweDAwLCAgIC8vRmxhZ3Mgbm8gaW5pdCB2YWx1YVxuICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMubWVtb3J5LnBhZ2VzU2l6ZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaChbXG4gICAgICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMuZnVuY3Rpb25zW2ldLm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5maWVsZE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zW2ldLnNpZ25hdHVyZUlkeClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgdmFydWludDMyKGVudHJpZXMubGVuZ3RoKS5jb25jYXQoLi4uZW50cmllcylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbkRlY2xhcmF0aW9ucygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMyxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLlsuLi5lbnRyaWVzXVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEZ1bmN0aW9uc1RhYmxlKCkge1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNCxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMSksXG4gICAgICAgICAgICAgICAgMHg3MCwgMCwgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEVsZW1lbnRzKCkge1xuICAgICAgICBpZiAodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGVbaV0pKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwOSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMSksICAgICAgLy8gMSBlbnRyeVxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMigwKSwgICAgICAvLyBUYWJsZSAoMCBpbiBNVlApXG4gICAgICAgICAgICAgICAgMHg0MSwgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mZnNldCAwXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIoMCksXG4gICAgICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGgpLCAvLyBOdW1iZXIgb2YgZWxlbWVudHNcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFeHBvcnRzKCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5leHBvcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmV4cG9ydHNbaV0uZXhwb3J0TmFtZSksXG4gICAgICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5leHBvcnRzW2ldLmlkeClcbiAgICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDA3LFxuICAgICAgICAgICAgdmFydWludDMyKGVudHJpZXMubGVuZ3RoKS5jb25jYXQoLi4uZW50cmllcylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRDb2RlKCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9dGhpcy5uSW1wb3J0RnVuY3Rpb25zOyBpPCB0aGlzLm5JbXBvcnRGdW5jdGlvbnMgKyB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2godGhpcy5mdW5jdGlvbnNbaV0uZ2V0Qm9keSgpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwYSxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRGF0YSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICAuLi51MzIodGhpcy5mcmVlKVxuICAgICAgICBdKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCB0aGlzLmRhdGFzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgMHg0MSxcbiAgICAgICAgICAgICAgICAuLi52YXJpbnQzMih0aGlzLmRhdGFzW2ldLm9mZnNldCksXG4gICAgICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIodGhpcy5kYXRhc1tpXS5ieXRlcy5sZW5ndGgpLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZGF0YXNbaV0uYnl0ZXMsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwYixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG59XG5cbmdsb2JhbFRoaXMuY3VydmVfYm4xMjggPSBudWxsO1xuXG5hc3luYyBmdW5jdGlvbiBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGlmICgoIXNpbmdsZVRocmVhZCkgJiYgKGdsb2JhbFRoaXMuY3VydmVfYm4xMjgpKSByZXR1cm4gZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyODtcblxuICAgIGNvbnN0IG1vZHVsZUJ1aWxkZXIgPSBuZXcgTW9kdWxlQnVpbGRlcigpO1xuICAgIG1vZHVsZUJ1aWxkZXIuc2V0TWVtb3J5KDI1KTtcbiAgICBidWlsZEJuMTI4JDEobW9kdWxlQnVpbGRlcik7XG5cbiAgICBpZiAocGx1Z2lucykgcGx1Z2lucyhtb2R1bGVCdWlsZGVyKTtcblxuICAgIGNvbnN0IGJuMTI4d2FzbSA9IHt9O1xuXG4gICAgYm4xMjh3YXNtLmNvZGUgPSBtb2R1bGVCdWlsZGVyLmJ1aWxkKCk7XG4gICAgYm4xMjh3YXNtLnBxID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmYxbS5wcTtcbiAgICBibjEyOHdhc20ucHIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZnJtLnBxO1xuICAgIGJuMTI4d2FzbS5wRzFnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcxZ2VuO1xuICAgIGJuMTI4d2FzbS5wRzF6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMXplcm87XG4gICAgYm4xMjh3YXNtLnBHMWIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcxYjtcbiAgICBibjEyOHdhc20ucEcyZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMmdlbjtcbiAgICBibjEyOHdhc20ucEcyemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJ6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzJiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMmI7XG4gICAgYm4xMjh3YXNtLnBPbmVUID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBPbmVUO1xuICAgIGJuMTI4d2FzbS5wcmVQU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wcmVQU2l6ZTtcbiAgICBibjEyOHdhc20ucHJlUVNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUVNpemU7XG4gICAgYm4xMjh3YXNtLm44cSA9IDMyO1xuICAgIGJuMTI4d2FzbS5uOHIgPSAzMjtcbiAgICBibjEyOHdhc20ucSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5xO1xuICAgIGJuMTI4d2FzbS5yID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnI7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYm4xMjhcIixcbiAgICAgICAgd2FzbTogYm4xMjh3YXNtLFxuICAgICAgICBxOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNcIiksXG4gICAgICAgIHI6IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN1wiKSxcbiAgICAgICAgbjhxOiAzMixcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMjogZShcIjMwNjQ0ZTcyZTEzMWEwMjliODUwNDViNjgxODE1ODVlMDZjZWVjZGE1NzJhMjQ4OTM0NWYyMjk5YzBmOWZhOGRcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG4gICAgY3VydmUudGVybWluYXRlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXBhcmFtcy5zaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3VydmVfYm4xMjggPSBudWxsO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50bS50ZXJtaW5hdGUoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIXNpbmdsZVRocmVhZCkge1xuICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gY3VydmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxKSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYmxzMTIzODE7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbHMxMjM4MSQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibHMxMjM4MXdhc20gPSB7fTtcblxuICAgIGJsczEyMzgxd2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJsczEyMzgxd2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibHMxMjM4MXdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMWdlbjtcbiAgICBibHMxMjM4MXdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzF6ZXJvO1xuICAgIGJsczEyMzgxd2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMWI7XG4gICAgYmxzMTIzODF3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzJnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyemVybztcbiAgICBibHMxMjM4MXdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzJiO1xuICAgIGJsczEyMzgxd2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wT25lVDtcbiAgICBibHMxMjM4MXdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucHJlUFNpemU7XG4gICAgYmxzMTIzODF3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVFTaXplO1xuICAgIGJsczEyMzgxd2FzbS5uOHEgPSA0ODtcbiAgICBibHMxMjM4MXdhc20ubjhyID0gMzI7XG4gICAgYmxzMTIzODF3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucTtcbiAgICBibHMxMjM4MXdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5yO1xuXG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIG5hbWU6IFwiYmxzMTIzODFcIixcbiAgICAgICAgd2FzbTogYmxzMTIzODF3YXNtLFxuICAgICAgICBxOiBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KSxcbiAgICAgICAgcjogZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpLFxuICAgICAgICBuOHE6IDQ4LFxuICAgICAgICBuOHI6IDMyLFxuICAgICAgICBjb2ZhY3RvckcxOiBlKFwiMHgzOTZjOGMwMDU1NTVlMTU2OGMwMGFhYWIwMDAwYWFhYlwiLCAxNiksXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIweDVkNTQzYTk1NDE0ZTdmMTA5MWQ1MDc5Mjg3NmEyMDJjZDkxZGU0NTQ3MDg1YWJhYTY4YTIwNWIyZTVhN2RkZmE2MjhmMWNiNGQ5ZTgyZWYyMTUzN2UyOTNhNjY5MWFlMTYxNmVjNmU3ODZmMGM3MGNmMWMzOGUzMWM3MjM4ZTVcIiwgMTYpLFxuICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCA/IHRydWUgOiBmYWxzZVxuICAgIH07XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGJ1aWxkRW5naW5lKHBhcmFtcyk7XG4gICAgY3VydmUudGVybWluYXRlID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoIXBhcmFtcy5zaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3VydmVfYmxzMTIzODEgPSBudWxsO1xuICAgICAgICAgICAgYXdhaXQgdGhpcy50bS50ZXJtaW5hdGUoKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIXNpbmdsZVRocmVhZCkge1xuICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gY3VydmU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5jb25zdCBibHMxMjM4MXIgPSBlKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIik7XG5cbmNvbnN0IGJsczEyMzgxcSA9IGUoXCIxYTAxMTFlYTM5N2ZlNjlhNGIxYmE3YjY0MzRiYWNkNzY0Nzc0Yjg0ZjM4NTEyYmY2NzMwZDJhMGY2YjBmNjI0MWVhYmZmZmViMTUzZmZmZmI5ZmVmZmZmZmZmZmFhYWJcIiwgMTYpO1xuY29uc3QgYm4xMjhxID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21SKHIsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEociwgYm4xMjhyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHIsIGJsczEyMzgxcikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbVEocSwgc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGlmIChlcShxLCBibjEyOHEpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoZXEocSwgYmxzMTIzODFxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7dG9TdHJpbmcocSwgMTYpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEN1cnZlRnJvbU5hbWUobmFtZSwgc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGNvbnN0IG5vcm1OYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICBpZiAoW1wiQk4xMjhcIiwgXCJCTjI1NFwiLCBcIkFMVEJOMTI4XCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChbXCJCTFMxMjM4MVwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtuYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG4pIHtcbiAgICAgICAgcmV0dXJuIG4udG9VcHBlckNhc2UoKS5tYXRjaCgvW0EtWmEtejAtOV0rL2cpLmpvaW4oXCJcIik7XG4gICAgfVxuXG59XG5cbmNvbnN0IFNjYWxhcj1fU2NhbGFyO1xuY29uc3QgdXRpbHMgPSBfdXRpbHM7XG5cbmV4cG9ydCB7IEJpZ0J1ZmZlciwgQ2hhQ2hhLCBFQywgWnFGaWVsZCBhcyBGMUZpZWxkLCBGMkZpZWxkLCBGM0ZpZWxkLCBQb2xGaWVsZCwgU2NhbGFyLCBacUZpZWxkLCBidWlsZEJsczEyMzgxLCBidWlsZEJuMTI4LCBnZXRDdXJ2ZUZyb21OYW1lLCBnZXRDdXJ2ZUZyb21RLCBnZXRDdXJ2ZUZyb21SLCB1dGlscyB9O1xuIiwiY29uc3QgU1VCQVJSQVlfU0laRSA9IDB4NDAwMDA7XG5cbmNvbnN0IEJpZ0FycmF5SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLmdldEVsZW1lbnQocHJvcCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gb2JqW3Byb3BdO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbihvYmosIHByb3AsIHZhbHVlKSB7XG4gICAgICAgIGlmICghaXNOYU4ocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouc2V0RWxlbWVudChwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuY2xhc3MgX0JpZ0FycmF5IHtcbiAgICBjb25zdHJ1Y3RvciAoaW5pdFNpemUpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBpbml0U2l6ZSB8fCAwO1xuICAgICAgICB0aGlzLmFyciA9IG5ldyBBcnJheShTVUJBUlJBWV9TSVpFKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aW5pdFNpemU7IGkrPVNVQkFSUkFZX1NJWkUpIHtcbiAgICAgICAgICAgIHRoaXMuYXJyW2kvU1VCQVJSQVlfU0laRV0gPSBuZXcgQXJyYXkoTWF0aC5taW4oU1VCQVJSQVlfU0laRSwgaW5pdFNpemUgLSBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHB1c2ggKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQgKHRoaXMubGVuZ3RoLCBhcmd1bWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2xpY2UgKGYsIHQpIHtcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KHQtZik7XG4gICAgICAgIGZvciAobGV0IGk9ZjsgaTwgdDsgaSsrKSBhcnJbaS1mXSA9IHRoaXMuZ2V0RWxlbWVudChpKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgZ2V0RWxlbWVudChpZHgpIHtcbiAgICAgICAgaWR4ID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgY29uc3QgaWR4MSA9IE1hdGguZmxvb3IoaWR4IC8gU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIGNvbnN0IGlkeDIgPSBpZHggJSBTVUJBUlJBWV9TSVpFO1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJbaWR4MV0gPyB0aGlzLmFycltpZHgxXVtpZHgyXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0RWxlbWVudChpZHgsIHZhbHVlKSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBpZiAoIXRoaXMuYXJyW2lkeDFdKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpZHgxXSA9IG5ldyBBcnJheShTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgdGhpcy5hcnJbaWR4MV1baWR4Ml0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKGlkeCA+PSB0aGlzLmxlbmd0aCkgdGhpcy5sZW5ndGggPSBpZHgrMTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldEtleXMoKSB7XG4gICAgICAgIGNvbnN0IG5ld0EgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcnJbaV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGhpcy5hcnJbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFycltpXVtqXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QS5wdXNoKGkqU1VCQVJSQVlfU0laRStqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3QTtcbiAgICB9XG59XG5cbmNsYXNzIEJpZ0FycmF5IHtcbiAgICBjb25zdHJ1Y3RvciggaW5pdFNpemUgKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IG5ldyBfQmlnQXJyYXkoaW5pdFNpemUpO1xuICAgICAgICBjb25zdCBleHRPYmogPSBuZXcgUHJveHkob2JqLCBCaWdBcnJheUhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZXh0T2JqO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQmlnQXJyYXk7XG4iLCJpbXBvcnQge0YxRmllbGQsIGdldEN1cnZlRnJvbVJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAgQmlnQXJyYXkgZnJvbSBcIkBpZGVuMy9iaWdhcnJheVwiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBSMUNTX0ZJTEVfSEVBREVSX1NFQ1RJT04gPSAxO1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9DT05TVFJBSU5UU19TRUNUSU9OID0gMjtcbmV4cG9ydCBjb25zdCBSMUNTX0ZJTEVfV0lSRTJMQUJFTElEX1NFQ1RJT04gPSAzO1xuZXhwb3J0IGNvbnN0IFIxQ1NfRklMRV9DVVNUT01fR0FURVNfTElTVF9TRUNUSU9OID0gNDtcbmV4cG9ydCBjb25zdCBSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX1VTRVNfU0VDVElPTiA9IDU7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUjFjc0hlYWRlcihmZCxzZWN0aW9ucyxzaW5nbGVUaHJlYWQpIHtcbiAgICBsZXQgb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIHNpbmdsZVRocmVhZCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBvcHRpb25zID0gc2luZ2xlVGhyZWFkO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHNpbmdsZVRocmVhZCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBvcHRpb25zPSB7XG4gICAgICAgICAgICBzaW5nbGVUaHJlYWQ6IGZhbHNlLFxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSB7fTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEpO1xuICAgIC8vIFJlYWQgSGVhZGVyXG4gICAgcmVzLm44ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLnByaW1lID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIHJlcy5uOCk7XG5cbiAgICBpZiAob3B0aW9ucy5GKSB7XG4gICAgICAgIGlmIChvcHRpb25zLkYucCAhPSByZXMucHJpbWUpIHRocm93IG5ldyBFcnJvcihcIkRpZmZlcmVudCBQcmltZVwiKTtcbiAgICAgICAgcmVzLkYgPSBvcHRpb25zLkY7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmdldEZpZWxkRnJvbVByaW1lKSB7XG4gICAgICAgIHJlcy5GID0gYXdhaXQgb3B0aW9ucy5nZXRGaWVsZEZyb21QcmltZShyZXMucHJpbWUsIG9wdGlvbnMuc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZ2V0Q3VydmVGcm9tUHJpbWUpIHtcbiAgICAgICAgcmVzLmN1cnZlID0gYXdhaXQgb3B0aW9ucy5nZXRDdXJ2ZUZyb21QcmltZShyZXMucHJpbWUsIG9wdGlvbnMuc2luZ2xlVGhyZWFkKTtcbiAgICAgICAgcmVzLkYgPSByZXMuY3VydmUuRnI7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlcy5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbVIocmVzLnByaW1lLCBvcHRpb25zLnNpbmdsZVRocmVhZCk7XG4gICAgICAgICAgICByZXMuRiA9IHJlcy5jdXJ2ZS5GcjtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICByZXMuRiA9IG5ldyBGMUZpZWxkKHJlcy5wcmltZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXMublZhcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMubk91dHB1dHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMublB1YklucHV0cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uUHJ2SW5wdXRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5MYWJlbHMgPSBhd2FpdCBmZC5yZWFkVUxFNjQoKTtcbiAgICByZXMubkNvbnN0cmFpbnRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLnVzZUN1c3RvbUdhdGVzID0gdHlwZW9mIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfTElTVF9TRUNUSU9OXSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWN0aW9uc1tSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX0xJU1RfU0VDVElPTl0gIT09IG51bGxcbiAgICAgICAgJiYgdHlwZW9mIHNlY3Rpb25zW1IxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OXSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWN0aW9uc1tSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX1VTRVNfU0VDVElPTl0gIT09IG51bGw7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb25zdHJhaW50cyhmZCxzZWN0aW9ucywgcjFjcywgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBsZXQgb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIGxvZ2dlciA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBvcHRpb25zID0gbG9nZ2VyO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvZ2dlciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBvcHRpb25zPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgbG9nZ2VyOiBsb2dnZXIsXG4gICAgICAgICAgICBsb2dnZXJDdHg6IGxvZ2dlckN0eCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBiUjFjcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGxldCBiUjFjc1BvcyA9IDA7XG4gICAgbGV0IGNvbnN0cmFpbnRzO1xuICAgIGlmIChyMWNzLm5Db25zdHJhaW50cz4xPDwyMCkge1xuICAgICAgICBjb25zdHJhaW50cyA9IG5ldyBCaWdBcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0cmFpbnRzID0gW107XG4gICAgfVxuICAgIGZvciAobGV0IGk9MDsgaTxyMWNzLm5Db25zdHJhaW50czsgaSsrKSB7XG4gICAgICAgIGlmICgob3B0aW9ucy5sb2dnZXIpJiYoaSUxMDAwMDAgPT0gMCkpIG9wdGlvbnMubG9nZ2VyLmluZm8oYCR7b3B0aW9ucy5sb2dnZXJDdHh9OiBMb2FkaW5nIGNvbnN0cmFpbnRzOiAke2l9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgIGNvbnN0IGMgPSByZWFkQ29uc3RyYWludCgpO1xuICAgICAgICBjb25zdHJhaW50cy5wdXNoKGMpO1xuICAgIH1cbiAgICByZXR1cm4gY29uc3RyYWludHM7XG5cblxuICAgIGZ1bmN0aW9uIHJlYWRDb25zdHJhaW50KCkge1xuICAgICAgICBjb25zdCBjID0gW107XG4gICAgICAgIGNbMF0gPSByZWFkTEMoKTtcbiAgICAgICAgY1sxXSA9IHJlYWRMQygpO1xuICAgICAgICBjWzJdID0gcmVhZExDKCk7XG4gICAgICAgIHJldHVybiBjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgY29uc3QgbGM9IHt9O1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZVTDMyID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zKzQpO1xuICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICBjb25zdCBidWZmVUwzMlYgPSBuZXcgRGF0YVZpZXcoYnVmZlVMMzIuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgbklkeCA9IGJ1ZmZVTDMyVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0K3IxY3MubjgpKm5JZHggKTtcbiAgICAgICAgYlIxY3NQb3MgKz0gKDQrcjFjcy5uOCkqbklkeDtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bklkeDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBidWZmVi5nZXRVaW50MzIoaSooNCtyMWNzLm44KSwgdHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSByMWNzLkYuZnJvbVJwckxFKGJ1ZmYsIGkqKDQrcjFjcy5uOCkrNCk7XG4gICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsYztcbiAgICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTWFwKGZkLCBzZWN0aW9ucywgcjFjcywgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBsZXQgb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIGxvZ2dlciA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBvcHRpb25zID0gbG9nZ2VyO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvZ2dlciA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBvcHRpb25zPSB7fTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgbG9nZ2VyOiBsb2dnZXIsXG4gICAgICAgICAgICBsb2dnZXJDdHg6IGxvZ2dlckN0eCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgYk1hcCA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIDMpO1xuICAgIGxldCBiTWFwUG9zID0gMDtcbiAgICBsZXQgbWFwO1xuXG4gICAgaWYgKHIxY3MublZhcnM+MTw8MjApIHtcbiAgICAgICAgbWFwID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWFwID0gW107XG4gICAgfVxuICAgIGZvciAobGV0IGk9MDsgaTxyMWNzLm5WYXJzOyBpKyspIHtcbiAgICAgICAgaWYgKChvcHRpb25zLmxvZ2dlcikmJihpJTEwMDAwID09IDApKSBvcHRpb25zLmxvZ2dlci5pbmZvKGAke29wdGlvbnMubG9nZ2VyQ3R4fTogTG9hZGluZyBtYXA6ICR7aX0vJHtyMWNzLm5WYXJzfWApO1xuICAgICAgICBjb25zdCBpZHggPSByZWFkVUxFNjQoKTtcbiAgICAgICAgbWFwLnB1c2goaWR4KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuXG4gICAgZnVuY3Rpb24gcmVhZFVMRTY0KCkge1xuICAgICAgICBjb25zdCBidWZmVUxFNjQgPSBiTWFwLnNsaWNlKGJNYXBQb3MsIGJNYXBQb3MrOCk7XG4gICAgICAgIGJNYXBQb3MgKz0gODtcbiAgICAgICAgY29uc3QgYnVmZlVMRTY0ViA9IG5ldyBEYXRhVmlldyhidWZmVUxFNjQuYnVmZmVyKTtcbiAgICAgICAgY29uc3QgTFNCID0gYnVmZlVMRTY0Vi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IE1TQiA9IGJ1ZmZVTEU2NFYuZ2V0VWludDMyKDQsIHRydWUpO1xuXG4gICAgICAgIHJldHVybiBNU0IgKiAweDEwMDAwMDAwMCArIExTQjtcbiAgICB9XG5cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRSMWNzRmQoZmQsIHNlY3Rpb25zLCBvcHRpb25zKSB7XG4gICAgLyoqXG4gICAgICogT3B0aW9ucyBwcm9wZXJ0aWVzOlxuICAgICAqICBsb2FkQ29uc3RyYWludHM6IDxib29sPiB0cnVlIGJ5IGRlZmF1bHRcbiAgICAgKiAgbG9hZE1hcDogICAgICAgICA8Ym9vbD4gZmFsc2UgYnkgZGVmYXVsdFxuICAgICAqICBsb2FkQ3VzdG9tR2F0ZXM6IDxib29sPiB0cnVlIGJ5IGRlZmF1bHRcbiAgICAgKi9cblxuICAgIGlmKHR5cGVvZiBvcHRpb25zICE9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInJlYWRSMWNzRmQ6IG9wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3RcIik7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5sb2FkQ29uc3RyYWludHMgPSBcImxvYWRDb25zdHJhaW50c1wiIGluIG9wdGlvbnMgPyBvcHRpb25zLmxvYWRDb25zdHJhaW50cyA6IHRydWU7XG4gICAgb3B0aW9ucy5sb2FkTWFwID0gXCJsb2FkTWFwXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubG9hZE1hcCA6IGZhbHNlO1xuICAgIG9wdGlvbnMubG9hZEN1c3RvbUdhdGVzID0gXCJsb2FkQ3VzdG9tR2F0ZXNcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5sb2FkQ3VzdG9tR2F0ZXMgOiB0cnVlO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVhZFIxY3NIZWFkZXIoZmQsIHNlY3Rpb25zLCBvcHRpb25zKTtcblxuICAgIGlmIChvcHRpb25zLmxvYWRDb25zdHJhaW50cykge1xuICAgICAgICByZXMuY29uc3RyYWludHMgPSBhd2FpdCByZWFkQ29uc3RyYWludHMoZmQsIHNlY3Rpb25zLCByZXMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8vIFJlYWQgTGFiZWxzXG5cbiAgICBpZiAob3B0aW9ucy5sb2FkTWFwKSB7XG4gICAgICAgIHJlcy5tYXAgPSBhd2FpdCByZWFkTWFwKGZkLCBzZWN0aW9ucywgcmVzLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5sb2FkQ3VzdG9tR2F0ZXMpIHtcbiAgICAgICAgaWYgKHJlcy51c2VDdXN0b21HYXRlcykge1xuICAgICAgICAgICAgcmVzLmN1c3RvbUdhdGVzID0gYXdhaXQgcmVhZEN1c3RvbUdhdGVzTGlzdFNlY3Rpb24oZmQsIHNlY3Rpb25zLCByZXMpO1xuICAgICAgICAgICAgcmVzLmN1c3RvbUdhdGVzVXNlcyA9IGF3YWl0IHJlYWRDdXN0b21HYXRlc1VzZXNTZWN0aW9uKGZkLCBzZWN0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXMgPSBbXTtcbiAgICAgICAgICAgIHJlcy5jdXN0b21HYXRlc1VzZXMgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFIxY3MoZmlsZU5hbWUsIGxvYWRDb25zdHJhaW50cywgbG9hZE1hcCwgc2luZ2xlVGhyZWFkLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGxldCBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbG9hZENvbnN0cmFpbnRzID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIG9wdGlvbnMgPSBsb2FkQ29uc3RyYWludHM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbG9hZENvbnN0cmFpbnRzID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIG9wdGlvbnM9IHtcbiAgICAgICAgICAgIGxvYWRDb25zdHJhaW50czogdHJ1ZSxcbiAgICAgICAgICAgIGxvYWRNYXA6IGZhbHNlLFxuICAgICAgICAgICAgbG9hZEN1c3RvbUdhdGVzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGxvYWRDb25zdHJhaW50czogbG9hZENvbnN0cmFpbnRzLFxuICAgICAgICAgICAgbG9hZE1hcDogbG9hZE1hcCxcbiAgICAgICAgICAgIHNpbmdsZVRocmVhZDogc2luZ2xlVGhyZWFkLFxuICAgICAgICAgICAgbG9nZ2VyOiBsb2dnZXIsXG4gICAgICAgICAgICBsb2dnZXJDdHg6IGxvZ2dlckN0eFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGZpbGVOYW1lLCBcInIxY3NcIiwgMSwgMTw8MjUsIDE8PDIyKTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlYWRSMWNzRmQoZmQsIHNlY3Rpb25zLCBvcHRpb25zKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEN1c3RvbUdhdGVzTGlzdFNlY3Rpb24oZmQsIHNlY3Rpb25zLCByZXMpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIFIxQ1NfRklMRV9DVVNUT01fR0FURVNfTElTVF9TRUNUSU9OKTtcblxuICAgIGxldCBudW0gPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGxldCBjdXN0b21HYXRlcyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICAgICAgbGV0IGN1c3RvbUdhdGUgPSB7fTtcbiAgICAgICAgY3VzdG9tR2F0ZS50ZW1wbGF0ZU5hbWUgPSBhd2FpdCBmZC5yZWFkU3RyaW5nKCk7XG4gICAgICAgIGxldCBudW1QYXJhbWV0ZXJzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICAgICAgY3VzdG9tR2F0ZS5wYXJhbWV0ZXJzID0gQXJyYXkobnVtUGFyYW1ldGVycyk7XG4gICAgICAgIGxldCBidWZmID0gYXdhaXQgZmQucmVhZChyZXMubjggKiBudW1QYXJhbWV0ZXJzKTtcblxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG51bVBhcmFtZXRlcnM7IGorKykge1xuICAgICAgICAgICAgY3VzdG9tR2F0ZS5wYXJhbWV0ZXJzW2pdID0gcmVzLkYuZnJvbVJwckxFKGJ1ZmYsIGogKiByZXMubjgsIHJlcy5uOCk7O1xuICAgICAgICB9XG4gICAgICAgIGN1c3RvbUdhdGVzLnB1c2goY3VzdG9tR2F0ZSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gY3VzdG9tR2F0ZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ3VzdG9tR2F0ZXNVc2VzU2VjdGlvbihmZCxzZWN0aW9ucywgb3B0aW9ucykge1xuICAgIGNvbnN0IGJSMWNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkLCBzZWN0aW9ucywgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19VU0VTX1NFQ1RJT04pO1xuICAgIGNvbnN0IGJSMWNzMzIgPSBuZXcgVWludDMyQXJyYXkoYlIxY3MuYnVmZmVyLCBiUjFjcy5ieXRlT2Zmc2V0LCBiUjFjcy5ieXRlTGVuZ3RoLzQpO1xuICAgIGNvbnN0IG5DdXN0b21HYXRlVXNlcyA9IGJSMWNzMzJbMF07XG4gICAgbGV0IGJSMWNzUG9zID0gMTtcbiAgICBsZXQgY3VzdG9tR2F0ZXNVc2VzO1xuICAgIGlmIChuQ3VzdG9tR2F0ZVVzZXM+MTw8MjApIHtcbiAgICAgICAgY3VzdG9tR2F0ZXNVc2VzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VzdG9tR2F0ZXNVc2VzID0gW107XG4gICAgfVxuICAgIGZvciAobGV0IGk9MDsgaTxuQ3VzdG9tR2F0ZVVzZXM7IGkrKykge1xuICAgICAgICBpZiAoKG9wdGlvbnMubG9nZ2VyKSYmKGklMTAwMDAwID09IDApKSBvcHRpb25zLmxvZ2dlci5pbmZvKGAke29wdGlvbnMubG9nZ2VyQ3R4fTogTG9hZGluZyBjdXN0b20gZ2F0ZSB1c2VzOiAke2l9LyR7bkN1c3RvbUdhdGVVc2VzfWApO1xuICAgICAgICBsZXQgYyA9IHt9O1xuICAgICAgICBjLmlkID0gYlIxY3MzMltiUjFjc1BvcysrXTtcbiAgICAgICAgbGV0IG51bVNpZ25hbHMgPSBiUjFjczMyW2JSMWNzUG9zKytdO1xuICAgICAgICBjLnNpZ25hbHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1TaWduYWxzOyBqKyspIHtcbiAgICAgICAgICAgIGNvbnN0IExTQiA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgICAgICBjb25zdCBNU0IgPSBiUjFjczMyW2JSMWNzUG9zKytdO1xuICAgICAgICAgICAgYy5zaWduYWxzLnB1c2goTVNCICogMHgxMDAwMDAwMDAgKyBMU0IpO1xuICAgICAgICB9XG4gICAgICAgIGN1c3RvbUdhdGVzVXNlcy5wdXNoKGMpO1xuICAgIH1cbiAgICByZXR1cm4gY3VzdG9tR2F0ZXNVc2VzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSMWNzSGVhZGVyKGZkLCBjaXIpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDEpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm44KTsgLy8gVGVtcG9yYWxseSBzZXQgdG8gMCBsZW5ndGhcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIGNpci5wcmltZSwgY2lyLm44KTtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm5WYXJzKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uT3V0cHV0cyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIublB1YklucHV0cyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIublBydklucHV0cyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChjaXIubkxhYmVscyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIuY29uc3RyYWludHMubGVuZ3RoKTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSMWNzQ29uc3RyYWludHMoZmQsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPGNpci5jb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwID09IDApKSBsb2dnZXIuaW5mbyhgJHtsb2dnZXJDdHh9OiB3cml0aW5nIGNvbnN0cmFpbnQ6ICR7aX0vJHtjaXIuY29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICBhd2FpdCB3cml0ZUNvbnN0cmFpbnQoY2lyLmNvbnN0cmFpbnRzW2ldKTtcbiAgICB9XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgZnVuY3Rpb24gd3JpdGVDb25zdHJhaW50KGMpIHtcbiAgICAgICAgY29uc3QgbjggPSBjaXIubjg7XG4gICAgICAgIGNvbnN0IEYgPSBjaXIuRiB8fCBjaXIuY3VydmUuRnI7XG4gICAgICAgIGNvbnN0IGlkeEEgPSBPYmplY3Qua2V5cyhjWzBdKTtcbiAgICAgICAgY29uc3QgaWR4QiA9IE9iamVjdC5rZXlzKGNbMV0pO1xuICAgICAgICBjb25zdCBpZHhDID0gT2JqZWN0LmtleXMoY1syXSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSgoaWR4QS5sZW5ndGgraWR4Qi5sZW5ndGgraWR4Qy5sZW5ndGgpKihuOCs0KSArIDEyKTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICBsZXQgbz0wO1xuXG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBpZHhBLmxlbmd0aCwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpZHhBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gaWR4QVtpXTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBjb2VmLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIEYudG9ScHJMRShidWZmLCBvLCBjWzBdW2NvZWZdKTsgbys9bjg7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmVi5zZXRVaW50MzIobywgaWR4Qi5sZW5ndGgsIHRydWUpOyBvKz00O1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aWR4Qi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IGlkeEJbaV07XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgY29lZiwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICBGLnRvUnByTEUoYnVmZiwgbywgY1sxXVtjb2VmXSk7IG8rPW44O1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGlkeEMubGVuZ3RoLCB0cnVlKTsgbys9NDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGlkeEMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBpZHhDW2ldO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGNvZWYsIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgRi50b1JwckxFKGJ1ZmYsIG8sIGNbMl1bY29lZl0pOyBvKz1uODtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmZC53cml0ZShidWZmKTtcbiAgICB9XG5cbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVSMWNzTWFwKGZkLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAzKTtcblxuICAgIGlmIChjaXIubWFwLmxlbmd0aCAhPSBjaXIublZhcnMpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWFwIHNpemVcIik7XG4gICAgZm9yIChsZXQgaT0wOyBpPGNpci5uVmFyczsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIGxvZ2dlci5pbmZvKGAke2xvZ2dlckN0eH06IHdyaXRpbmcgbWFwOiAke2l9LyR7Y2lyLm5WYXJzfWApO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTY0KGNpci5tYXBbaV0pO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xufVxuXG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUjFjcyhmaWxlTmFtZSwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShmaWxlTmFtZSwgXCJyMWNzXCIsIDEsIDMsIDE8PDI1LCAxPDwyMik7XG5cbiAgICBhd2FpdCB3cml0ZVIxY3NIZWFkZXIoZmQsIGNpcik7XG5cbiAgICBhd2FpdCB3cml0ZVIxY3NDb25zdHJhaW50cyhmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCk7XG5cbiAgICBhd2FpdCB3cml0ZVIxY3NNYXAoZmQsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7IHJlYWRSMWNzIH0gIGZyb20gXCJyMWNzZmlsZVwiO1xuXG5jb25zdCBibHMxMjM4MXIgPSBTY2FsYXIuZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gU2NhbGFyLmUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN1wiKTtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcjFjc0luZm8ocjFjc05hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgY2lyID0gYXdhaXQgcmVhZFIxY3MocjFjc05hbWUpO1xuXG4gICAgaWYgKFNjYWxhci5lcShjaXIucHJpbWUsIGJuMTI4cikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJDdXJ2ZTogYm4tMTI4XCIpO1xuICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKGNpci5wcmltZSwgYmxzMTIzODFyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkN1cnZlOiBibHMxMi0zODFcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYFVua25vd24gQ3VydmUuIFByaW1lOiAke1NjYWxhci50b1N0cmluZyhjaXIucHJpbWUpfWApO1xuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBXaXJlczogJHtjaXIublZhcnN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgQ29uc3RyYWludHM6ICR7Y2lyLm5Db25zdHJhaW50c31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBQcml2YXRlIElucHV0czogJHtjaXIublBydklucHV0c31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBQdWJsaWMgSW5wdXRzOiAke2Npci5uUHViSW5wdXRzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIExhYmVsczogJHtjaXIubkxhYmVsc31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBPdXRwdXRzOiAke2Npci5uT3V0cHV0c31gKTtcblxuICAgIHJldHVybiBjaXI7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge3JlYWRSMWNzfSAgZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgeyBzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHIxY3NFeHBvcnRKc29uKHIxY3NGaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBjaXIgPSBhd2FpdCByZWFkUjFjcyhyMWNzRmlsZU5hbWUsIHRydWUsIHRydWUsIHRydWUsIGxvZ2dlcik7XG4gICAgY29uc3QgRnI9Y2lyLmN1cnZlLkZyO1xuICAgIGRlbGV0ZSBjaXIuY3VydmU7XG4gICAgZGVsZXRlIGNpci5GO1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQoRnIsIGNpcik7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQge2RlZmF1bHQgYXMgcHJpbnR9IGZyb20gXCIuL3IxY3NfcHJpbnQuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbmZvfSBmcm9tIFwiLi9yMWNzX2luZm8uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRKc29ufSBmcm9tIFwiLi9yMWNzX2V4cG9ydF9qc29uLmpzXCI7XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBsb2FkU3ltYm9scyhzeW1GaWxlTmFtZSkge1xuICAgIGNvbnN0IHN5bSA9IHtcbiAgICAgICAgbGFiZWxJZHgyTmFtZTogWyBcIm9uZVwiIF0sXG4gICAgICAgIHZhcklkeDJOYW1lOiBbIFwib25lXCIgXSxcbiAgICAgICAgY29tcG9uZW50SWR4Mk5hbWU6IFtdXG4gICAgfTtcbiAgICBjb25zdCBmZCA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhzeW1GaWxlTmFtZSk7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoZmQudG90YWxTaXplKTtcbiAgICBjb25zdCBzeW1zU3RyID0gbmV3IFRleHREZWNvZGVyKFwidXRmLThcIikuZGVjb2RlKGJ1ZmYpO1xuICAgIGNvbnN0IGxpbmVzID0gc3ltc1N0ci5zcGxpdChcIlxcblwiKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYXJyID0gbGluZXNbaV0uc3BsaXQoXCIsXCIpO1xuICAgICAgICBpZiAoYXJyLmxlbmd0aCE9NCkgY29udGludWU7XG4gICAgICAgIGlmIChzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSkge1xuICAgICAgICAgICAgc3ltLnZhcklkeDJOYW1lW2FyclsxXV0gKz0gXCJ8XCIgKyBhcnJbM107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzeW0udmFySWR4Mk5hbWVbYXJyWzFdXSA9IGFyclszXTtcbiAgICAgICAgfVxuICAgICAgICBzeW0ubGFiZWxJZHgyTmFtZVthcnJbMF1dID0gYXJyWzNdO1xuICAgICAgICBpZiAoIXN5bS5jb21wb25lbnRJZHgyTmFtZVthcnJbMl1dKSB7XG4gICAgICAgICAgICBzeW0uY29tcG9uZW50SWR4Mk5hbWVbYXJyWzJdXSA9IGV4dHJhY3RDb21wb25lbnQoYXJyWzNdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gc3ltO1xuXG4gICAgZnVuY3Rpb24gZXh0cmFjdENvbXBvbmVudChuYW1lKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5hbWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBhcnIucG9wKCk7IC8vIFJlbW92ZSB0aGUgbGFzciBlbGVtZW50XG4gICAgICAgIHJldHVybiBhcnIuam9pbihcIi5cIik7XG4gICAgfVxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgeyBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIgfSBmcm9tIFwiY2lyY29tX3J1bnRpbWVcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCBsb2FkU3ltcyBmcm9tIFwiLi9sb2Fkc3ltcy5qc1wiO1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHd0bnNEZWJ1ZyhfaW5wdXQsIHdhc21GaWxlTmFtZSwgd3Ruc0ZpbGVOYW1lLCBzeW1OYW1lLCBvcHRpb25zLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCBmZFdhc20gPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3Rpbmcod2FzbUZpbGVOYW1lKTtcbiAgICBjb25zdCB3YXNtID0gYXdhaXQgZmRXYXNtLnJlYWQoZmRXYXNtLnRvdGFsU2l6ZSk7XG4gICAgYXdhaXQgZmRXYXNtLmNsb3NlKCk7XG5cbiAgICBjb25zdCB3Y09wcyA9IHsuLi5vcHRpb25zLCBzYW5pdHlDaGVjazogdHJ1ZX07XG4gICAgbGV0IHN5bSA9IGF3YWl0IGxvYWRTeW1zKHN5bU5hbWUpO1xuICAgIGlmIChvcHRpb25zLnNldCkge1xuICAgICAgICBpZiAoIXN5bSkgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgICAgIHdjT3BzLmxvZ1NldFNpZ25hbD0gZnVuY3Rpb24obGFiZWxJZHgsIHZhbHVlKSB7XG4gICAgICAgICAgICAvLyBUaGUgbGluZSBiZWxvdyBzcGxpdHMgdGhlIGFycm93IGxvZyBpbnRvIDIgc3RyaW5ncyB0byBhdm9pZCBzb21lIFNlY3VyZSBFQ01BU2NyaXB0IGlzc3Vlc1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJTRVQgXCIgKyBzeW0ubGFiZWxJZHgyTmFtZVtsYWJlbElkeF0gKyBcIiA8XCIgKyBcIi0tIFwiICsgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmdldCkge1xuICAgICAgICBpZiAoIXN5bSkgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgICAgIHdjT3BzLmxvZ0dldFNpZ25hbD0gZnVuY3Rpb24odmFySWR4LCB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gVGhlIGxpbmUgYmVsb3cgc3BsaXRzIHRoZSBhcnJvdyBsb2cgaW50byAyIHN0cmluZ3MgdG8gYXZvaWQgc29tZSBTZWN1cmUgRUNNQVNjcmlwdCBpc3N1ZXNcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiR0VUIFwiICsgc3ltLmxhYmVsSWR4Mk5hbWVbdmFySWR4XSArIFwiIC0tXCIgKyBcIj4gXCIgKyB2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJpZ2dlcikge1xuICAgICAgICBpZiAoIXN5bSkgc3ltID0gYXdhaXQgbG9hZFN5bXMoc3ltTmFtZSk7XG4gICAgICAgIHdjT3BzLmxvZ1N0YXJ0Q29tcG9uZW50PSBmdW5jdGlvbihjSWR4KSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlNUQVJUOiBcIiArIHN5bS5jb21wb25lbnRJZHgyTmFtZVtjSWR4XSk7XG4gICAgICAgIH07XG4gICAgICAgIHdjT3BzLmxvZ0ZpbmlzaENvbXBvbmVudD0gZnVuY3Rpb24oY0lkeCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGSU5JU0g6IFwiICsgc3ltLmNvbXBvbmVudElkeDJOYW1lW2NJZHhdKTtcbiAgICAgICAgfTtcbiAgICB9XG4gICAgd2NPcHMuc3ltID0gc3ltO1xuXG4gICAgY29uc3Qgd2MgPSBhd2FpdCBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIod2FzbSwgd2NPcHMpO1xuICAgIGNvbnN0IHcgPSBhd2FpdCB3Yy5jYWxjdWxhdGVXaXRuZXNzKGlucHV0LCB0cnVlKTtcblxuICAgIGNvbnN0IGZkV3RucyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHd0bnNGaWxlTmFtZSwgXCJ3dG5zXCIsIDIsIDIpO1xuXG4gICAgYXdhaXQgd3Ruc1V0aWxzLndyaXRlKGZkV3Rucywgdywgd2MucHJpbWUpO1xuXG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge3JlYWR9IGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gd3Ruc0V4cG9ydEpzb24od3Ruc0ZpbGVOYW1lKSB7XG5cbiAgICBjb25zdCB3ID0gYXdhaXQgcmVhZCh3dG5zRmlsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHc7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyByZWFkUjFjc0ZkIH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBjdXJ2ZXMgZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHd0bnNDaGVjayhyMWNzRmlsZW5hbWUsIHd0bnNGaWxlbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIldJVE5FU1MgQ0hFQ0tJTkcgU1RBUlRFRFwiKTtcblxuICAgIC8vIFJlYWQgcjFjcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgcjFjcyBmaWxlXCIpO1xuICAgIGNvbnN0IHtcbiAgICAgICAgZmQ6IGZkUjFjcyxcbiAgICAgICAgc2VjdGlvbnM6IHNlY3Rpb25zUjFjc1xuICAgIH0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocjFjc0ZpbGVuYW1lLCBcInIxY3NcIiwgMSwgMSA8PCAyMiwgMSA8PCAyNCk7XG4gICAgY29uc3QgcjFjcyA9IGF3YWl0IHJlYWRSMWNzRmQoZmRSMWNzLCBzZWN0aW9uc1IxY3MsIHsgbG9hZENvbnN0cmFpbnRzOiBmYWxzZSwgbG9hZEN1c3RvbUdhdGVzOiBmYWxzZSB9KTtcblxuICAgIC8vIFJlYWQgd2l0bmVzcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlXCIpO1xuICAgIGNvbnN0IHtcbiAgICAgICAgZmQ6IGZkV3RucyxcbiAgICAgICAgc2VjdGlvbnM6IHd0bnNTZWN0aW9uc1xuICAgIH0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUod3Ruc0ZpbGVuYW1lLCBcInd0bnNcIiwgMiwgMSA8PCAyMiwgMSA8PCAyNCk7XG4gICAgY29uc3Qgd3Ruc0hlYWRlciA9IGF3YWl0IHd0bnNVdGlscy5yZWFkSGVhZGVyKGZkV3Rucywgd3Ruc1NlY3Rpb25zKTtcblxuICAgIGlmICghU2NhbGFyLmVxKHIxY3MucHJpbWUsIHd0bnNIZWFkZXIucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHd0bnNTZWN0aW9ucywgMik7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGN1cnZlcy5nZXRDdXJ2ZUZyb21SKHIxY3MucHJpbWUpO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3Qgc0ZyID0gRnIubjg7XG5cbiAgICBjb25zdCBiUjFjcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFIxY3MsIHNlY3Rpb25zUjFjcywgMik7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIFdJVE5FU1MgQ0hFQ0tcIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIEN1cnZlOiAgICAgICAgICAke3IxY3MuY3VydmUubmFtZX1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgVmFycyAod2lyZXMpOiAgICR7cjFjcy5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgT3V0cHV0czogICAgICAgICR7cjFjcy5uT3V0cHV0c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHVibGljIElucHV0czogICR7cjFjcy5uUHViSW5wdXRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBQcml2YXRlIElucHV0czogJHtyMWNzLm5QcnZJbnB1dHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIExhYmVsczogICAgICAgICAke3IxY3MubkxhYmVsc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ29uc3RyYWludHM6ICAgICR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIEN1c3RvbSBHYXRlczogICAke3IxY3MudXNlQ3VzdG9tR2F0ZXN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ2hlY2tpbmcgd2l0bmVzcyBjb3JyZWN0bmVzc1wiKTtcblxuICAgIGxldCBiUjFjc1BvcyA9IDA7XG4gICAgbGV0IHJlcyA9IHRydWU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByMWNzLm5Db25zdHJhaW50czsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhgwrfCt8K3IHByb2Nlc3NpbmcgcjFjcyBjb25zdHJhaW50cyAke2l9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvL1JlYWQgdGhlIHRocmVlIGxpbmVhciBjb21iaW5hdGlvbnMgb2YgdGhlIGNvbnN0cmFpbnQgd2hlcmUgQSAqIEIgLSBDID0gMFxuICAgICAgICBjb25zdCBsY0EgPSByZWFkTEMoKTtcbiAgICAgICAgY29uc3QgbGNCID0gcmVhZExDKCk7XG4gICAgICAgIGNvbnN0IGxjQyA9IHJlYWRMQygpO1xuXG4gICAgICAgIC8vIEV2YWx1YXRlIHRoZSBsaW5lYXIgY29tYmluYXRpb25zXG4gICAgICAgIGNvbnN0IGV2YWxBID0gRXZhbHVhdGVMaW5lYXJDb21iaW5hdGlvbihsY0EpO1xuICAgICAgICBjb25zdCBldmFsQiA9IEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGNCKTtcbiAgICAgICAgY29uc3QgZXZhbEMgPSBFdmFsdWF0ZUxpbmVhckNvbWJpbmF0aW9uKGxjQyk7XG5cbiAgICAgICAgLy8gQ2hlY2sgdGhhdCBBICogQiAtIEMgPT0gMFxuICAgICAgICBpZiAoIUZyLmVxKEZyLnN1YihGci5tdWwoZXZhbEEsIGV2YWxCKSwgZXZhbEMpLCBGci56ZXJvKSkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCLCt8K3wrcgYWJvcnRpbmcgY2hlY2tpbmcgcHJvY2VzcyBhdCBjb25zdHJhaW50IFwiICsgaSk7XG4gICAgICAgICAgICByZXMgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmRSMWNzLmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiV0lUTkVTUyBJUyBDT1JSRUNUXCIpO1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJXSVRORVNTIENIRUNLSU5HIEZJTklTSEVEIFNVQ0NFU1NGVUxMWVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiV0lUTkVTUyBJUyBOT1QgQ09SUkVDVFwiKTtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiV0lUTkVTUyBDSEVDS0lORyBGSU5JU0hFRCBVTlNVQ0NFU1NGVUxMWVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG5cbiAgICBmdW5jdGlvbiBFdmFsdWF0ZUxpbmVhckNvbWJpbmF0aW9uKGxjKSB7XG4gICAgICAgIGxldCByZXMgPSBGci56ZXJvO1xuXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoc2lnbmFsSWQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbFZhbHVlID0gZ2V0V2l0bmVzc1ZhbHVlKHNpZ25hbElkKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbEZhY3RvciA9IGxjW3NpZ25hbElkXTtcblxuICAgICAgICAgICAgcmVzID0gRnIuYWRkKHJlcywgRnIubXVsKHNpZ25hbFZhbHVlLCBzaWduYWxGYWN0b3IpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkTEMoKSB7XG4gICAgICAgIGNvbnN0IGxjID0ge307XG5cbiAgICAgICAgY29uc3QgYnVmZlVMMzIgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MgKyA0KTtcbiAgICAgICAgYlIxY3NQb3MgKz0gNDtcbiAgICAgICAgY29uc3QgYnVmZlVMMzJWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTDMyLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IG5JZHggPSBidWZmVUwzMlYuZ2V0VWludDMyKDAsIHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MgKyAoNCArIHIxY3MubjgpICogbklkeCk7XG4gICAgICAgIGJSMWNzUG9zICs9ICg0ICsgcjFjcy5uOCkgKiBuSWR4O1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbklkeDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPSBidWZmVi5nZXRVaW50MzIoaSAqICg0ICsgcjFjcy5uOCksIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gcjFjcy5GLmZyb21ScHJMRShidWZmLCBpICogKDQgKyByMWNzLm44KSArIDQpO1xuICAgICAgICAgICAgbGNbaWR4XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2l0bmVzc1ZhbHVlKHNpZ25hbElkKSB7XG4gICAgICAgIHJldHVybiBGci5mcm9tUnByTEUoYnVmZldpdG5lc3Muc2xpY2Uoc2lnbmFsSWQgKiBzRnIsIHNpZ25hbElkICogc0ZyICsgc0ZyKSk7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBjYWxjdWxhdGV9IGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZGVidWd9IGZyb20gXCIuL3d0bnNfZGVidWcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRKc29ufSBmcm9tIFwiLi93dG5zX2V4cG9ydF9qc29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY2hlY2t9IGZyb20gXCIuL3d0bnNfY2hlY2suanNcIjsiLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5jb25zdCBTVUJBUlJBWV9TSVpFID0gMHg0MDAwMDtcblxuY29uc3QgQmlnQXJyYXlIYW5kbGVyID0ge1xuICAgIGdldDogZnVuY3Rpb24ob2JqLCBwcm9wKSB7XG4gICAgICAgIGlmICghaXNOYU4ocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouZ2V0RWxlbWVudChwcm9wKTtcbiAgICAgICAgfSBlbHNlIHJldHVybiBvYmpbcHJvcF07XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCwgdmFsdWUpIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5zZXRFbGVtZW50KHByb3AsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9ialtwcm9wXSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG5jbGFzcyBfQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yIChpbml0U2l6ZSkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGluaXRTaXplIHx8IDA7XG4gICAgICAgIHRoaXMuYXJyID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpbml0U2l6ZTsgaSs9U1VCQVJSQVlfU0laRSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaS9TVUJBUlJBWV9TSVpFXSA9IG5ldyBBcnJheShNYXRoLm1pbihTVUJBUlJBWV9TSVpFLCBpbml0U2l6ZSAtIGkpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgcHVzaCAoKSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RWxlbWVudCAodGhpcy5sZW5ndGgsIGFyZ3VtZW50c1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzbGljZSAoZiwgdCkge1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodC1mKTtcbiAgICAgICAgZm9yIChsZXQgaT1mOyBpPCB0OyBpKyspIGFycltpLWZdID0gdGhpcy5nZXRFbGVtZW50KGkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICBnZXRFbGVtZW50KGlkeCkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHJldHVybiB0aGlzLmFycltpZHgxXSA/IHRoaXMuYXJyW2lkeDFdW2lkeDJdIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgICBzZXRFbGVtZW50KGlkeCwgdmFsdWUpIHtcbiAgICAgICAgaWR4ID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgY29uc3QgaWR4MSA9IE1hdGguZmxvb3IoaWR4IC8gU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIGlmICghdGhpcy5hcnJbaWR4MV0pIHtcbiAgICAgICAgICAgIHRoaXMuYXJyW2lkeDFdID0gbmV3IEFycmF5KFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlkeDIgPSBpZHggJSBTVUJBUlJBWV9TSVpFO1xuICAgICAgICB0aGlzLmFycltpZHgxXVtpZHgyXSA9IHZhbHVlO1xuICAgICAgICBpZiAoaWR4ID49IHRoaXMubGVuZ3RoKSB0aGlzLmxlbmd0aCA9IGlkeCsxO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZ2V0S2V5cygpIHtcbiAgICAgICAgY29uc3QgbmV3QSA9IG5ldyBCaWdBcnJheSgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5hcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFycltpXSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0aGlzLmFycltpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXJyW2ldW2pdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdBLnB1c2goaSpTVUJBUlJBWV9TSVpFK2opO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdBO1xuICAgIH1cbn1cblxuY2xhc3MgQmlnQXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKCBpbml0U2l6ZSApIHtcbiAgICAgICAgY29uc3Qgb2JqID0gbmV3IF9CaWdBcnJheShpbml0U2l6ZSk7XG4gICAgICAgIGNvbnN0IGV4dE9iaiA9IG5ldyBQcm94eShvYmosIEJpZ0FycmF5SGFuZGxlcik7XG4gICAgICAgIHJldHVybiBleHRPYmo7XG4gICAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBCaWdBcnJheTtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3NIZWFkZXJ9IGZyb20gXCJyMWNzZmlsZVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCB7XG4gICAgcmVhZEJpbkZpbGUsXG4gICAgY3JlYXRlQmluRmlsZSxcbiAgICByZWFkU2VjdGlvbixcbiAgICB3cml0ZUJpZ0ludCxcbiAgICBzdGFydFdyaXRlU2VjdGlvbixcbiAgICBlbmRXcml0ZVNlY3Rpb24sXG59IGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgeyBsb2cyLCBmb3JtYXRIYXNoIH0gZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgU2NhbGFyLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBuZXdaS2V5KHIxY3NOYW1lLCBwdGF1TmFtZSwgemtleU5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgVEFVX0cxID0gMDtcbiAgICBjb25zdCBUQVVfRzIgPSAxO1xuICAgIGNvbnN0IEFMUEhBVEFVX0cxID0gMjtcbiAgICBjb25zdCBCRVRBVEFVX0cxID0gMztcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG4gICAgY29uc3QgY3NIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogc2VjdGlvbnNQVGF1fSA9IGF3YWl0IHJlYWRCaW5GaWxlKHB0YXVOYW1lLCBcInB0YXVcIiwgMSwgMTw8MjIsIDE8PDI0KTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkUFRhdSwgc2VjdGlvbnNQVGF1KTtcbiAgICBjb25zdCB7ZmQ6IGZkUjFjcywgc2VjdGlvbnM6IHNlY3Rpb25zUjFjc30gPSBhd2FpdCByZWFkQmluRmlsZShyMWNzTmFtZSwgXCJyMWNzXCIsIDEsIDE8PDIyLCAxPDwyNCk7XG4gICAgY29uc3QgcjFjcyA9IGF3YWl0IHJlYWRSMWNzSGVhZGVyKGZkUjFjcywgc2VjdGlvbnNSMWNzLCBmYWxzZSk7XG5cbiAgICBjb25zdCBmZFpLZXkgPSBhd2FpdCBjcmVhdGVCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMSwgMTAsIDE8PDIyLCAxPDwyNCk7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgaWYgKHIxY3MucHJpbWUgIT0gY3VydmUucikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJyMWNzIGN1cnZlIGRvZXMgbm90IG1hdGNoIHBvd2VycyBvZiB0YXUgY2VyZW1vbnkgY3VydmVcIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBjb25zdCBjaXJQb3dlciA9IGxvZzIocjFjcy5uQ29uc3RyYWludHMgKyByMWNzLm5QdWJJbnB1dHMgKyByMWNzLm5PdXRwdXRzICsxIC0xKSArMTtcblxuICAgIGlmIChjaXJQb3dlciA+IHBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgY2lyY3VpdCB0b28gYmlnIGZvciB0aGlzIHBvd2VyIG9mIHRhdSBjZXJlbW9ueS4gJHtyMWNzLm5Db25zdHJhaW50c30qMiA+IDIqKiR7cG93ZXJ9YCk7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBpZiAoIXNlY3Rpb25zUFRhdVsxMl0pIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUG93ZXJzIG9mIHRhdSBpcyBub3QgcHJlcGFyZWQuXCIpO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY29uc3QgblB1YmxpYyA9IHIxY3Mubk91dHB1dHMgKyByMWNzLm5QdWJJbnB1dHM7XG4gICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogY2lyUG93ZXI7XG5cbiAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDEpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKDEpOyAvLyBHcm90aFxuICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgLy8gV3JpdGUgdGhlIEdyb3RoIGhlYWRlciBzZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMik7XG4gICAgY29uc3QgcHJpbWVRID0gY3VydmUucTtcbiAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVRKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgY29uc3QgcHJpbWVSID0gY3VydmUucjtcbiAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVSKSAtIDEpIC8gNjQpICsxKSo4O1xuICAgIGNvbnN0IFJyID0gU2NhbGFyLm1vZChTY2FsYXIuc2hsKDEsIG44cio4KSwgcHJpbWVSKTtcbiAgICBjb25zdCBSMnIgPSBjdXJ2ZS5Gci5lKFNjYWxhci5tb2QoU2NhbGFyLm11bChScixSciksIHByaW1lUikpO1xuXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhxKTtcbiAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUSwgbjhxKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHIpO1xuICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVSLCBuOHIpO1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHIxY3MublZhcnMpOyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgYmFyc1xuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG5QdWJsaWMpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHB1YmxpYyB2YXJzIChub3QgaW5jbHVkaW5nIE9ORSlcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihkb21haW5TaXplKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG5cbiAgICBsZXQgYkFscGhhMTtcbiAgICBiQWxwaGExID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cxLCBzZWN0aW9uc1BUYXVbNF1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJBbHBoYTEpO1xuICAgIGJBbHBoYTEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShiQWxwaGExKTtcbiAgICBjc0hhc2hlci51cGRhdGUoYkFscGhhMSk7XG5cbiAgICBsZXQgYkJldGExO1xuICAgIGJCZXRhMSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMSwgc2VjdGlvbnNQVGF1WzVdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShiQmV0YTEpO1xuICAgIGJCZXRhMSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJCZXRhMSk7XG4gICAgY3NIYXNoZXIudXBkYXRlKGJCZXRhMSk7XG5cbiAgICBsZXQgYkJldGEyO1xuICAgIGJCZXRhMiA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMiwgc2VjdGlvbnNQVGF1WzZdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShiQmV0YTIpO1xuICAgIGJCZXRhMiA9IGF3YWl0IGN1cnZlLkcyLmJhdGNoTEVNdG9VKGJCZXRhMik7XG4gICAgY3NIYXNoZXIudXBkYXRlKGJCZXRhMik7XG5cbiAgICBjb25zdCBiZzEgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgIGN1cnZlLkcxLnRvUnByTEVNKGJnMSwgMCwgY3VydmUuRzEuZyk7XG4gICAgY29uc3QgYmcyID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICBjdXJ2ZS5HMi50b1JwckxFTShiZzIsIDAsIGN1cnZlLkcyLmcpO1xuICAgIGNvbnN0IGJnMVUgPSBuZXcgVWludDhBcnJheShzRzEpO1xuICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJnMVUsIDAsIGN1cnZlLkcxLmcpO1xuICAgIGNvbnN0IGJnMlUgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJnMlUsIDAsIGN1cnZlLkcyLmcpO1xuXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJnMik7ICAgICAgICAvLyBnYW1tYTJcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYmcxKTsgICAgICAgIC8vIGRlbHRhMVxuICAgIGF3YWl0IGZkWktleS53cml0ZShiZzIpOyAgICAgICAgLy8gZGVsdGEyXG4gICAgY3NIYXNoZXIudXBkYXRlKGJnMlUpOyAgICAgIC8vIGdhbW1hMlxuICAgIGNzSGFzaGVyLnVwZGF0ZShiZzFVKTsgICAgICAvLyBkZWx0YTFcbiAgICBjc0hhc2hlci51cGRhdGUoYmcyVSk7ICAgICAgLy8gZGVsdGEyXG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgcjFjc1wiKTtcbiAgICBsZXQgc1IxY3MgPSBhd2FpdCByZWFkU2VjdGlvbihmZFIxY3MsIHNlY3Rpb25zUjFjcywgMik7XG5cbiAgICBjb25zdCBBID0gbmV3IEJpZ0FycmF5KHIxY3MublZhcnMpO1xuICAgIGNvbnN0IEIxID0gbmV3IEJpZ0FycmF5KHIxY3MublZhcnMpO1xuICAgIGNvbnN0IEIyID0gbmV3IEJpZ0FycmF5KHIxY3MublZhcnMpO1xuICAgIGNvbnN0IEMgPSBuZXcgQmlnQXJyYXkocjFjcy5uVmFycy0gblB1YmxpYyAtMSk7XG4gICAgY29uc3QgSUMgPSBuZXcgQXJyYXkoblB1YmxpYysxKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyB0YXVHMVwiKTtcbiAgICBsZXQgc1RhdUcxID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRQVGF1LCBzZWN0aW9uc1BUYXUsIDEyLCAoZG9tYWluU2l6ZSAtMSkqc0cxLCBkb21haW5TaXplKnNHMSk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHRhdUcyXCIpO1xuICAgIGxldCBzVGF1RzIgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTMsIChkb21haW5TaXplIC0xKSpzRzIsIGRvbWFpblNpemUqc0cyKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgYWxwaGF0YXVHMVwiKTtcbiAgICBsZXQgc0FscGhhVGF1RzEgPSBhd2FpdCByZWFkU2VjdGlvbihmZFBUYXUsIHNlY3Rpb25zUFRhdSwgMTQsIChkb21haW5TaXplIC0xKSpzRzEsIGRvbWFpblNpemUqc0cxKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgYmV0YXRhdUcxXCIpO1xuICAgIGxldCBzQmV0YVRhdUcxID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRQVGF1LCBzZWN0aW9uc1BUYXUsIDE1LCAoZG9tYWluU2l6ZSAtMSkqc0cxLCBkb21haW5TaXplKnNHMSk7XG5cbiAgICBhd2FpdCBwcm9jZXNzQ29uc3RyYWludHMoKTtcblxuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cygzLCBcIkcxXCIsIElDLCBcIklDXCIpO1xuXG4gICAgYXdhaXQgd3JpdGVIcygpO1xuXG4gICAgYXdhaXQgaGFzaEhQb2ludHMoKTtcblxuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg4LCBcIkcxXCIsIEMsIFwiQ1wiKTtcbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoNSwgXCJHMVwiLCBBLCBcIkFcIik7XG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDYsIFwiRzFcIiwgQjEsIFwiQjFcIik7XG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDcsIFwiRzJcIiwgQjIsIFwiQjJcIik7XG5cbiAgICBjb25zdCBjc0hhc2ggPSBjc0hhc2hlci5kaWdlc3QoKTtcbiAgICAvLyBDb250cmlidXRpb25zIHNlY3Rpb25cbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDEwKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoY3NIYXNoKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMigwKTtcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGZvcm1hdEhhc2goY3NIYXNoLCBcIkNpcmN1aXQgaGFzaDogXCIpKTtcblxuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRSMWNzLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRQVGF1LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gY3NIYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVIcygpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCA5KTtcbiAgICAgICAgY29uc3QgYnVmZk91dCA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpzRzEpO1xuICAgICAgICBpZiAoY2lyUG93ZXIgPCBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICBsZXQgc1RhdUcxID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRQVGF1LCBzZWN0aW9uc1BUYXUsIDEyLCAoZG9tYWluU2l6ZSoyLTEpKnNHMSwgZG9tYWluU2l6ZSoyKnNHMSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8IGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgc3BsaXR0aW5nIGJ1ZmZlcjogJHtpfS8ke2RvbWFpblNpemV9YCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZiA9IHNUYXVHMS5zbGljZSggKGkqMisxKSpzRzEsIChpKjIrMSkqc0cxICsgc0cxICk7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoYnVmZiwgaSpzRzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNpclBvd2VyID09IGN1cnZlLkZyLnMpIHtcbiAgICAgICAgICAgIGNvbnN0IG8gPSBzZWN0aW9uc1BUYXVbMTJdWzBdLnAgKyAoKDIgKiogKGNpclBvd2VyKzEpKSAtMSkqc0cxO1xuICAgICAgICAgICAgYXdhaXQgZmRQVGF1LnJlYWRUb0J1ZmZlcihidWZmT3V0LCAwLCBkb21haW5TaXplKnNHMSwgbyArIGRvbWFpblNpemUqc0cxKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkNpcmN1aXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNpcmN1aXQgdG9vIGJpZyBmb3IgdGhpcyBjdXJ2ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZk91dCk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NDb25zdHJhaW50cygpIHtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZmID0gbmV3IFVpbnQ4QXJyYXkoMTIgKyBjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZDb2VmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZkNvZWZmLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IGJPbmUgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYk9uZSwgMCwgY3VydmUuRnIuZSgxKSk7XG5cbiAgICAgICAgbGV0IHIxY3NQb3MgPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIHIxY3NfcmVhZFVMRTMyKCkge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IHNSMWNzLnNsaWNlKHIxY3NQb3MsIHIxY3NQb3MrNCk7XG4gICAgICAgICAgICByMWNzUG9zICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZlYuZ2V0VWludDMyKDAsIHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29lZnMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICAgICAgZm9yIChsZXQgYz0wOyBjPHIxY3MubkNvbnN0cmFpbnRzOyBjKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGMlMTAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1ZyhgcHJvY2Vzc2luZyBjb25zdHJhaW50czogJHtjfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbkEgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5BOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2VmcCA9IHIxY3NQb3M7XG4gICAgICAgICAgICAgICAgcjFjc1BvcyArPSBjdXJ2ZS5Gci5uODtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGwxdCA9IFRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMSA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwydCA9IEJFVEFUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDIgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEFbc10gPT09IFwidW5kZWZpbmVkXCIpIEFbc10gPSBbXTtcbiAgICAgICAgICAgICAgICBBW3NdLnB1c2goW2wxdCwgbDEsIGNvZWZwXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocyA8PSBuUHVibGljKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICAgICAgICAgIElDW3NdLnB1c2goW2wydCwgbDIsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDW3MtIG5QdWJsaWMgLTFdID09PSBcInVuZGVmaW5lZFwiKSBDW3MtIG5QdWJsaWMgLTFdID0gW107XG4gICAgICAgICAgICAgICAgICAgIENbcyAtIG5QdWJsaWMgLTFdLnB1c2goW2wydCwgbDIsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvZWZzLnB1c2goWzAsIGMsIHMsIGNvZWZwXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG5CID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29lZnAgPSByMWNzUG9zO1xuICAgICAgICAgICAgICAgIHIxY3NQb3MgKz0gY3VydmUuRnIubjg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDEgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBjb25zdCBsMnQgPSBUQVVfRzI7XG4gICAgICAgICAgICAgICAgY29uc3QgbDIgPSBzRzIqYztcbiAgICAgICAgICAgICAgICBjb25zdCBsM3QgPSBBTFBIQVRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMyA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQjFbc10gPT09IFwidW5kZWZpbmVkXCIpIEIxW3NdID0gW107XG4gICAgICAgICAgICAgICAgQjFbc10ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEIyW3NdID09PSBcInVuZGVmaW5lZFwiKSBCMltzXSA9IFtdO1xuICAgICAgICAgICAgICAgIEIyW3NdLnB1c2goW2wydCwgbDIsIGNvZWZwXSk7XG5cbiAgICAgICAgICAgICAgICBpZiAocyA8PSBuUHVibGljKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICAgICAgICAgIElDW3NdLnB1c2goW2wzdCwgbDMsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBDW3MtIG5QdWJsaWMgLTFdID09PSBcInVuZGVmaW5lZFwiKSBDW3MtIG5QdWJsaWMgLTFdID0gW107XG4gICAgICAgICAgICAgICAgICAgIENbcy0gblB1YmxpYyAtMV0ucHVzaChbbDN0LCBsMywgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb2Vmcy5wdXNoKFsxLCBjLCBzLCBjb2VmcF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuQyA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZWZwID0gcjFjc1BvcztcbiAgICAgICAgICAgICAgICByMWNzUG9zICs9IGN1cnZlLkZyLm44O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbDF0ID0gVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwxID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgaWYgKHMgPD0gblB1YmxpYykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIElDW3NdID09PSBcInVuZGVmaW5lZFwiKSBJQ1tzXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBJQ1tzXS5wdXNoKFtsMXQsIGwxLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ1tzLSBuUHVibGljIC0xXSA9PT0gXCJ1bmRlZmluZWRcIikgQ1tzLSBuUHVibGljIC0xXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBDW3MtIG5QdWJsaWMgLTFdLnB1c2goW2wxdCwgbDEsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgcyA9IDA7IHMgPD0gblB1YmxpYyA7IHMrKykge1xuICAgICAgICAgICAgY29uc3QgbDF0ID0gVEFVX0cxO1xuICAgICAgICAgICAgY29uc3QgbDEgPSBzRzEqKHIxY3MubkNvbnN0cmFpbnRzICsgcyk7XG4gICAgICAgICAgICBjb25zdCBsMnQgPSBCRVRBVEFVX0cxO1xuICAgICAgICAgICAgY29uc3QgbDIgPSBzRzEqKHIxY3MubkNvbnN0cmFpbnRzICsgcyk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIEFbc10gPT09IFwidW5kZWZpbmVkXCIpIEFbc10gPSBbXTtcbiAgICAgICAgICAgIEFbc10ucHVzaChbbDF0LCBsMSwgLTFdKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgSUNbc10gPT09IFwidW5kZWZpbmVkXCIpIElDW3NdID0gW107XG4gICAgICAgICAgICBJQ1tzXS5wdXNoKFtsMnQsIGwyLCAtMV0pO1xuICAgICAgICAgICAgY29lZnMucHVzaChbMCwgcjFjcy5uQ29uc3RyYWludHMgKyBzLCBzLCAtMV0pO1xuICAgICAgICB9XG5cblxuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDQpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZTZWN0aW9uID0gbmV3IEJpZ0J1ZmZlcihjb2Vmcy5sZW5ndGgqKDEyK2N1cnZlLkZyLm44KSArIDQpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmY0ID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmY0ViA9IG5ldyBEYXRhVmlldyhidWZmNC5idWZmZXIpO1xuICAgICAgICBidWZmNFYuc2V0VWludDMyKDAsIGNvZWZzLmxlbmd0aCwgdHJ1ZSk7XG4gICAgICAgIGJ1ZmZTZWN0aW9uLnNldChidWZmNCk7XG4gICAgICAgIGxldCBjb2Vmc1BvcyA9IDQ7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb2Vmcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyBjb2VmZnM6ICR7aX0vJHtjb2Vmcy5sZW5ndGh9YCk7XG4gICAgICAgICAgICB3cml0ZUNvZWYoY29lZnNbaV0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZTZWN0aW9uKTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAgICAgZnVuY3Rpb24gd3JpdGVDb2VmKGMpIHtcbiAgICAgICAgICAgIGJ1ZmZDb2VmZlYuc2V0VWludDMyKDAsIGNbMF0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZkNvZWZmVi5zZXRVaW50MzIoNCwgY1sxXSwgdHJ1ZSk7XG4gICAgICAgICAgICBidWZmQ29lZmZWLnNldFVpbnQzMig4LCBjWzJdLCB0cnVlKTtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGNbM10+PTApIHtcbiAgICAgICAgICAgICAgICBuID0gY3VydmUuRnIuZnJvbVJwckxFKHNSMWNzLnNsaWNlKGNbM10sIGNbM10gKyBjdXJ2ZS5Gci5uOCksIDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gY3VydmUuRnIuZnJvbVJwckxFKGJPbmUsIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgblIyID0gY3VydmUuRnIubXVsKG4sIFIycik7XG4gICAgICAgICAgICBjdXJ2ZS5Gci50b1JwckxFKGJ1ZmZDb2VmZiwgMTIsIG5SMik7XG4gICAgICAgICAgICBidWZmU2VjdGlvbi5zZXQoYnVmZkNvZWZmLCBjb2Vmc1Bvcyk7XG4gICAgICAgICAgICBjb2Vmc1BvcyArPSBidWZmQ29lZmYubGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wb3NlQW5kV3JpdGVQb2ludHMoaWRTZWN0aW9uLCBncm91cE5hbWUsIGFyciwgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgQ0hVTktfU0laRT0gMTw8MTU7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuXG4gICAgICAgIGhhc2hVMzIoYXJyLmxlbmd0aCk7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgaWRTZWN0aW9uKTtcblxuICAgICAgICBsZXQgb3BQcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIGxldCBpPTA7XG4gICAgICAgIHdoaWxlIChpPGFyci5sZW5ndGgpIHtcblxuICAgICAgICAgICAgbGV0IHQ9MDtcbiAgICAgICAgICAgIHdoaWxlICgoaTxhcnIubGVuZ3RoKSYmKHQ8Y3VydmUudG0uY29uY3VycmVuY3kpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgIGxvZ2dlci5kZWJ1ZyhgV3JpdGluZyBwb2ludHMgc3RhcnQgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHthcnIubGVuZ3RofWApO1xuICAgICAgICAgICAgICAgIGxldCBuID0gMTtcbiAgICAgICAgICAgICAgICBsZXQgblAgPSAoYXJyW2ldID8gYXJyW2ldLmxlbmd0aCA6IDApO1xuICAgICAgICAgICAgICAgIHdoaWxlICgoaSArIG4gPCBhcnIubGVuZ3RoKSAmJiAoblAgKyAoYXJyW2krbl0gPyBhcnJbaStuXS5sZW5ndGggOiAwKSA8IENIVU5LX1NJWkUpICYmIChuPENIVU5LX1NJWkUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5QICs9IChhcnJbaStuXSA/IGFycltpK25dLmxlbmd0aCA6IDApO1xuICAgICAgICAgICAgICAgICAgICBuICsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBzdWJBcnIgPSBhcnIuc2xpY2UoaSwgaSArIG4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IF9pID0gaTtcbiAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2goY29tcG9zZUFuZFdyaXRlUG9pbnRzVGhyZWFkKGdyb3VwTmFtZSwgc3ViQXJyLCBsb2dnZXIsIHNlY3Rpb25OYW1lKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSAgbG9nZ2VyLmRlYnVnKGBXcml0aW5nIHBvaW50cyBlbmQgJHtzZWN0aW9uTmFtZX06ICR7X2l9LyR7YXJyLmxlbmd0aH1gKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIGkgKz0gbjtcbiAgICAgICAgICAgICAgICB0Kys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBrPTA7IGs8cmVzdWx0Lmxlbmd0aDsgaysrKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHJlc3VsdFtrXVswXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IEcuYmF0Y2hMRU10b1UocmVzdWx0W2tdWzBdKTtcbiAgICAgICAgICAgICAgICBjc0hhc2hlci51cGRhdGUoYnVmZik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcFByb21pc2VzID0gW107XG5cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXBvc2VBbmRXcml0ZVBvaW50c1RocmVhZChncm91cE5hbWUsIGFyciwgbG9nZ2VyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICBjb25zdCBzR291dCA9IEcuRi5uOCoyO1xuICAgICAgICBsZXQgZm5FeHAsIGZuTXVsdGlFeHAsIGZuQmF0Y2hUb0FmZmluZSwgZm5aZXJvO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgZm5FeHAgPSBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiO1xuICAgICAgICAgICAgZm5NdWx0aUV4cCA9IFwiZzFtX211bHRpZXhwQWZmaW5lXCI7XG4gICAgICAgICAgICBmbkJhdGNoVG9BZmZpbmUgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICBmblplcm8gPSBcImcxbV96ZXJvXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5FeHAgPSBcImcybV90aW1lc1NjYWxhckFmZmluZVwiO1xuICAgICAgICAgICAgZm5NdWx0aUV4cCA9IFwiZzJtX211bHRpZXhwQWZmaW5lXCI7XG4gICAgICAgICAgICBmbkJhdGNoVG9BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICBmblplcm8gPSBcImcybV96ZXJvXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBhY2MgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIGFjYyArPSBhcnJbaV0gPyBhcnJbaV0ubGVuZ3RoIDogMDtcbiAgICAgICAgbGV0IGJCYXNlcywgYlNjYWxhcnM7XG4gICAgICAgIGlmIChhY2M+IDI8PDE0KSB7XG4gICAgICAgICAgICBiQmFzZXMgPSBuZXcgQmlnQnVmZmVyKGFjYypzR2luKTtcbiAgICAgICAgICAgIGJTY2FsYXJzID0gbmV3IEJpZ0J1ZmZlcihhY2MqY3VydmUuRnIubjgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYkJhc2VzID0gbmV3IFVpbnQ4QXJyYXkoYWNjKnNHaW4pO1xuICAgICAgICAgICAgYlNjYWxhcnMgPSBuZXcgVWludDhBcnJheShhY2MqY3VydmUuRnIubjgpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwQiA9MDtcbiAgICAgICAgbGV0IHBTID0wO1xuXG4gICAgICAgIGNvbnN0IHNCdWZmcyA9IFtcbiAgICAgICAgICAgIHNUYXVHMSxcbiAgICAgICAgICAgIHNUYXVHMixcbiAgICAgICAgICAgIHNBbHBoYVRhdUcxLFxuICAgICAgICAgICAgc0JldGFUYXVHMVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGJPbmUgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5Gci5uOCk7XG4gICAgICAgIGN1cnZlLkZyLnRvUnByTEUoYk9uZSwgMCwgY3VydmUuRnIuZSgxKSk7XG5cbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghYXJyW2ldKSBjb250aW51ZTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxhcnJbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihqKSYmKGolMTAwMDAgPT0gMCkpICBsb2dnZXIuZGVidWcoYENvbmZpZ3VyaW5nIGJpZyBhcnJheSAke3NlY3Rpb25OYW1lfTogJHtqfS8ke2FycltpXS5sZW5ndGh9YCk7XG4gICAgICAgICAgICAgICAgYkJhc2VzLnNldChcbiAgICAgICAgICAgICAgICAgICAgc0J1ZmZzW2FycltpXVtqXVswXV0uc2xpY2UoXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV1bal1bMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV1bal1bMV0gKyBzR2luXG4gICAgICAgICAgICAgICAgICAgICksIG9mZnNldCpzR2luXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBpZiAoYXJyW2ldW2pdWzJdPj0wKSB7XG4gICAgICAgICAgICAgICAgICAgIGJTY2FsYXJzLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIHNSMWNzLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycltpXVtqXVsyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV1bal1bMl0gKyBjdXJ2ZS5Gci5uOFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCpjdXJ2ZS5Gci5uOFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGJTY2FsYXJzLnNldChiT25lLCBvZmZzZXQqY3VydmUuRnIubjgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvZmZzZXQgKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyLmxlbmd0aD4xKSB7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJCYXNlc30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBiU2NhbGFyc30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IGFyci5sZW5ndGgqc0dtaWR9KTtcbiAgICAgICAgICAgIHBCID0gMDtcbiAgICAgICAgICAgIHBTID0gMDtcbiAgICAgICAgICAgIGxldCBwRCA9MDtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoIWFycltpXSkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5aZXJvLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogcER9XG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgcEQgKz0gc0dtaWQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXJyW2ldLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkV4cCwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IHBCfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogcFN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogY3VydmUuRnIubjh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBwRH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk11bHRpRXhwLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDAsIG9mZnNldDogcEJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBwU30sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBjdXJ2ZS5Gci5uOH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBhcnJbaV0ubGVuZ3RofSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogcER9XG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcEIgKz0gc0dpbiphcnJbaV0ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHBTICs9IGN1cnZlLkZyLm44KmFycltpXS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgcEQgKz0gc0dtaWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5CYXRjaFRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBhcnIubGVuZ3RofSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBhcnIubGVuZ3RoKnNHb3V0fSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCByZXMgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJCYXNlcywgYlNjYWxhcnMsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgcmVzID0gWyBHLnRvQWZmaW5lKHJlcykgXTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hIUG9pbnRzKCkge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFID0gMTw8MTQ7XG5cbiAgICAgICAgaGFzaFUzMihkb21haW5TaXplLTEpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxkb21haW5TaXplLTE7IGkrPSBDSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSAgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nSFBvaW50czogJHtpfS8ke2RvbWFpblNpemV9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oZG9tYWluU2l6ZS0xLCBDSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGF3YWl0IGhhc2hIUG9pbnRzQ2h1bmsoaSwgbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoSFBvaW50c0NodW5rKG9mZnNldCwgblBvaW50cykge1xuICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkUFRhdS5yZWFkKG5Qb2ludHMgKnNHMSwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyAob2Zmc2V0ICsgZG9tYWluU2l6ZSkqc0cxKTtcbiAgICAgICAgY29uc3QgYnVmZjIgPSBhd2FpdCBmZFBUYXUucmVhZChuUG9pbnRzICpzRzEsIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgb2Zmc2V0KnNHMSk7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5PSBjdXJ2ZS50bS5jb25jdXJyZW5jeTtcbiAgICAgICAgY29uc3QgblBvaW50c1BlclRocmVhZCA9IE1hdGguZmxvb3IoblBvaW50cyAvIGNvbmN1cnJlbmN5KTtcbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjEgPSBidWZmMS5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMiA9IGJ1ZmYyLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChoYXNoSFBvaW50c1RocmVhZChzdWJCdWZmMSwgc3ViQnVmZjIpKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY3NIYXNoZXIudXBkYXRlKHJlc3VsdFtpXVswXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoSFBvaW50c1RocmVhZChidWZmMSwgYnVmZjIpIHtcbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYxLmJ5dGVMZW5ndGgvc0cxO1xuICAgICAgICBjb25zdCBzR21pZCA9IGN1cnZlLkcxLkYubjgqMztcbiAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmYxfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZjJ9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IG5Qb2ludHMqc0dtaWR9KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgdGFzay5wdXNoKHtcbiAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGZuTmFtZTogXCJnMW1fc3ViQWZmaW5lXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDAsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBpKnNHbWlkfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJnMW1fYmF0Y2hUb0FmZmluZVwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogblBvaW50c30sXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJnMW1fYmF0Y2hMRU10b1VcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG5Qb2ludHMqc0cxfSk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUudG0ucXVldWVBY3Rpb24odGFzayk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYXNoVTMyKG4pIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBidWZmVi5zZXRVaW50MzIoMCwgbiwgZmFsc2UpO1xuICAgICAgICBjc0hhc2hlci51cGRhdGUoYnVmZik7XG4gICAgfVxuXG59XG5cblxuIiwiXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UyZXhwb3J0TVBDUGFyYW1zKHprZXlOYW1lLCBtcGNwYXJhbXNOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogc2VjdGlvbnNaS2V5fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXksIHNlY3Rpb25zWktleSk7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRaS2V5LCBjdXJ2ZSwgc2VjdGlvbnNaS2V5KTtcblxuICAgIGNvbnN0IGZkTVBDUGFyYW1zID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUobXBjcGFyYW1zTmFtZSk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBWZXJpZmljYXRpb24gS2V5IFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCB3cml0ZUcxKHprZXkudmtfYWxwaGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMSh6a2V5LnZrX2JldGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMih6a2V5LnZrX2JldGFfMik7XG4gICAgYXdhaXQgd3JpdGVHMih6a2V5LnZrX2dhbW1hXzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoemtleS52a19kZWx0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKHprZXkudmtfZGVsdGFfMik7XG5cbiAgICAvLyBJQ1xuICAgIGxldCBidWZmQmFzZXNJQztcbiAgICBidWZmQmFzZXNJQyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgMyk7XG4gICAgYnVmZkJhc2VzSUMgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNJQyk7XG5cbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNJQyk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBoIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBjb25zdCBidWZmQmFzZXNIX0xvZGQgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDkpO1xuXG4gICAgbGV0IGJ1ZmZCYXNlc0hfVGF1O1xuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYXdhaXQgY3VydmUuRzEuZmZ0KGJ1ZmZCYXNlc0hfTG9kZCwgXCJhZmZpbmVcIiwgXCJqYWNvYmlhblwiLCBsb2dnZXIpO1xuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hBcHBseUtleShidWZmQmFzZXNIX1RhdSwgY3VydmUuRnIubmVnKGN1cnZlLkZyLmUoMikpLCBjdXJ2ZS5Gci53W3prZXkucG93ZXIrMV0sIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyKTtcblxuICAgIC8vIFJlbW92ZSBsYXN0IGVsZW1lbnQuICAoVGhlIGRlZ3JlZSBvZiBIIHdpbGwgYmUgYWx3YXlzIG0tMilcbiAgICBidWZmQmFzZXNIX1RhdSA9IGJ1ZmZCYXNlc0hfVGF1LnNsaWNlKDAsIGJ1ZmZCYXNlc0hfVGF1LmJ5dGVMZW5ndGggLSBzRzEpO1xuICAgIGJ1ZmZCYXNlc0hfVGF1ID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzSF9UYXUpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0hfVGF1KTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEwgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNDO1xuICAgIGJ1ZmZCYXNlc0MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDgpO1xuICAgIGJ1ZmZCYXNlc0MgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNDKTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNDKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEEgU2VjdGlvbiAoQyBzZWN0aW9uKVxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIGxldCBidWZmQmFzZXNBO1xuICAgIGJ1ZmZCYXNlc0EgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDUpO1xuICAgIGJ1ZmZCYXNlc0EgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShidWZmQmFzZXNBKTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNBKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEIxIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBsZXQgYnVmZkJhc2VzQjE7XG4gICAgYnVmZkJhc2VzQjEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDYpO1xuICAgIGJ1ZmZCYXNlc0IxID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQjEpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcxXCIsIGJ1ZmZCYXNlc0IxKTtcblxuICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEIyIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBsZXQgYnVmZkJhc2VzQjI7XG4gICAgYnVmZkJhc2VzQjIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDcpO1xuICAgIGJ1ZmZCYXNlc0IyID0gYXdhaXQgY3VydmUuRzIuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQjIpO1xuICAgIGF3YWl0IHdyaXRlUG9pbnRBcnJheShcIkcyXCIsIGJ1ZmZCYXNlc0IyKTtcblxuICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IHdyaXRlVTMyKG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGFBZnRlcik7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3N4KTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMihjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRNUENQYXJhbXMuY2xvc2UoKTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICAgICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICAgICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlUG9pbnRBcnJheShncm91cE5hbWUsIGJ1ZmYpIHtcbiAgICAgICAgbGV0IHNHO1xuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgc0cgPSBzRzE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzRyA9IHNHMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplViA9IG5ldyBEYXRhVmlldyhidWZmU2l6ZS5idWZmZXIsIGJ1ZmZTaXplLmJ5dGVPZmZzZXQsIGJ1ZmZTaXplLmJ5dGVMZW5ndGgpO1xuICAgICAgICBidWZmU2l6ZVYuc2V0VWludDMyKDAsIGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHLCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZlNpemUpO1xuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVUzMihuKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplID0gbmV3IFVpbnQ4QXJyYXkoNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZTaXplViA9IG5ldyBEYXRhVmlldyhidWZmU2l6ZS5idWZmZXIsIGJ1ZmZTaXplLmJ5dGVPZmZzZXQsIGJ1ZmZTaXplLmJ5dGVMZW5ndGgpO1xuICAgICAgICBidWZmU2l6ZVYuc2V0VWludDMyKDAsIG4sIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmU2l6ZSk7XG4gICAgfVxuXG5cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UyaW1wb3J0TVBDUGFyYW1zKHprZXlOYW1lT2xkLCBtcGNwYXJhbXNOYW1lLCB6a2V5TmFtZU5ldywgbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkWktleU9sZCwgc2VjdGlvbnM6IHNlY3Rpb25zWktleU9sZH0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWVPbGQsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5SGVhZGVyID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZhbHNlKTtcbiAgICBpZiAoemtleUhlYWRlci5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5SGVhZGVyLnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBvbGRNUENQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZFpLZXlPbGQsIGN1cnZlLCBzZWN0aW9uc1pLZXlPbGQpO1xuICAgIGNvbnN0IG5ld01QQ1BhcmFtcyA9IHt9O1xuXG4gICAgY29uc3QgZmRNUENQYXJhbXMgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcobXBjcGFyYW1zTmFtZSk7XG5cbiAgICBmZE1QQ1BhcmFtcy5wb3MgPVxuICAgICAgICBzRzEqMyArIHNHMiozICsgICAgICAgICAgICAgICAgICAgICAvLyB2S2V5XG4gICAgICAgIDggKyBzRzEqemtleUhlYWRlci5uVmFycyArICAgICAgICAgICAgICAvLyBJQyArIENcbiAgICAgICAgNCArIHNHMSooemtleUhlYWRlci5kb21haW5TaXplLTEpICsgICAgIC8vIEhcbiAgICAgICAgNCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIEFcbiAgICAgICAgNCArIHNHMSp6a2V5SGVhZGVyLm5WYXJzICsgICAgICAgICAgICAgIC8vIEIxXG4gICAgICAgIDQgKyBzRzIqemtleUhlYWRlci5uVmFyczsgICAgICAgICAgICAgICAvLyBCMlxuXG4gICAgLy8gY3NIYXNoXG4gICAgbmV3TVBDUGFyYW1zLmNzSGFzaCA9ICBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKDY0KTtcblxuICAgIGNvbnN0IG5Db250cmlidXRpb25zID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvbnRyaWJ1dGlvbnM7IGkrKykge1xuICAgICAgICBjb25zdCBjID0geyBkZWx0YTp7fSB9O1xuICAgICAgICBjLmRlbHRhQWZ0ZXIgPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKGZkTVBDUGFyYW1zKTtcbiAgICAgICAgYy5kZWx0YS5nMl9zcHggPSBhd2FpdCByZWFkRzIoZmRNUENQYXJhbXMpO1xuICAgICAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkKDY0KTtcbiAgICAgICAgaWYgKGk8b2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjLnR5cGUgPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS50eXBlO1xuICAgICAgICAgICAgaWYgKGMudHlwZT09MSkge1xuICAgICAgICAgICAgICAgIGMuYmVhY29uSGFzaCA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLmJlYWNvbkhhc2g7XG4gICAgICAgICAgICAgICAgYy5udW1JdGVyYXRpb25zRXhwID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0ubnVtSXRlcmF0aW9uc0V4cDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5uYW1lKSB7XG4gICAgICAgICAgICAgICAgYy5uYW1lID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0ubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgIH1cblxuICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChuZXdNUENQYXJhbXMuY3NIYXNoLCBvbGRNUENQYXJhbXMuY3NIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIYXNoIG9mIHRoZSBvcmlnaW5hbCBjaXJjdWl0IGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIE1QQyBvbmVcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAob2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoID4gbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoZSBpbXBvZXJ0ZWQgZmlsZSBkb2VzIG5vdCBpbmNsdWRlIG5ldyBjb250cmlidXRpb25zXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghY29udHJpYnV0aW9uSXNFcXVhbChvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXSwgbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0pKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYFByZXZpb3VzIGNvbnRyaWJ1dGlvbiAke2l9IGRvZXMgbm90IG1hdGNoYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIFNldCB0aGUgc2FtZSBuYW1lIHRvIGFsbCBuZXcgY29udHJpYnV0aW9uc1xuICAgIGlmIChuYW1lKSB7XG4gICAgICAgIGZvciAobGV0IGk9b2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpPG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBuZXdNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5uYW1lID0gbmFtZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZkWktleU5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHprZXlOYW1lTmV3LCBcInprZXlcIiwgMSwgMTApO1xuICAgIGZkTVBDUGFyYW1zLnBvcyA9IDA7XG5cbiAgICAvLyBIZWFkZXJcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxOyAgLy8gaWdub3JlIGFscGhhMSAoa2VlcCBvcmlnaW5hbClcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxOyAgLy8gaWdub3JlIGJldGExXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMjsgIC8vIGlnbm9yZSBiZXRhMlxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzI7ICAvLyBpZ25vcmUgZ2FtbWEyXG4gICAgemtleUhlYWRlci52a19kZWx0YV8xID0gYXdhaXQgcmVhZEcxKGZkTVBDUGFyYW1zKTtcbiAgICB6a2V5SGVhZGVyLnZrX2RlbHRhXzIgPSBhd2FpdCByZWFkRzIoZmRNUENQYXJhbXMpO1xuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZUhlYWRlcihmZFpLZXlOZXcsIHprZXlIZWFkZXIpO1xuXG4gICAgLy8gSUMgKEtlZXAgb3JpZ2luYWwpXG4gICAgY29uc3QgbklDID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5JQyAhPSB6a2V5SGVhZGVyLm5QdWJsaWMgKzEpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIElDXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzEqKHprZXlIZWFkZXIublB1YmxpYysxKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRaS2V5T2xkLCBzZWN0aW9uc1pLZXlPbGQsIGZkWktleU5ldywgMyk7XG5cbiAgICAvLyBDb2VmZnMgKEtlZXAgb3JpZ2luYWwpXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDQpO1xuXG4gICAgLy8gSCBTZWN0aW9uXG4gICAgY29uc3QgbkggPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkggIT0gemtleUhlYWRlci5kb21haW5TaXplLTEpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIEhcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGJ1ZmZIO1xuICAgIGNvbnN0IGJ1ZmZUYXVVID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZChzRzEqKHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSk7XG4gICAgY29uc3QgYnVmZlRhdUxFTSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoVXRvTEVNKGJ1ZmZUYXVVKTtcbiAgICBidWZmSCA9IG5ldyBVaW50OEFycmF5KHprZXlIZWFkZXIuZG9tYWluU2l6ZSpzRzEpO1xuICAgIGJ1ZmZILnNldChidWZmVGF1TEVNKTsgICAvLyBMZXQgdGhlIGxhc3Qgb25lIHRvIHplcm8uXG4gICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZkgsIHNHMSooemtleUhlYWRlci5kb21haW5TaXplLTEpLCBjdXJ2ZS5HMS56ZXJvQWZmaW5lKTtcbiAgICBjb25zdCBuMkludiA9IGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5pbnYoY3VydmUuRnIuZSgyKSkpO1xuICAgIGNvbnN0IHdJbnYgPSBjdXJ2ZS5Gci5pbnYoY3VydmUuRnIud1t6a2V5SGVhZGVyLnBvd2VyKzFdKTtcbiAgICBidWZmSCA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoQXBwbHlLZXkoYnVmZkgsIG4ySW52LCB3SW52LCBcImFmZmluZVwiLCBcImphY29iaWFuXCIsIGxvZ2dlcik7XG4gICAgYnVmZkggPSBhd2FpdCBjdXJ2ZS5HMS5pZmZ0KGJ1ZmZILCBcImphY29iaWFuXCIsIFwiYWZmaW5lXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleU5ldywgOSk7XG4gICAgYXdhaXQgZmRaS2V5TmV3LndyaXRlKGJ1ZmZIKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkWktleU5ldyk7XG5cbiAgICAvLyBDIFNlY3Rpb24gKEwgc2VjdGlvbilcbiAgICBjb25zdCBuTCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuTCAhPSAoemtleUhlYWRlci5uVmFycy16a2V5SGVhZGVyLm5QdWJsaWMtMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIExcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGJ1ZmZMO1xuICAgIGJ1ZmZMID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZChzRzEqKHprZXlIZWFkZXIublZhcnMtemtleUhlYWRlci5uUHVibGljLTEpKTtcbiAgICBidWZmTCA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoVXRvTEVNKGJ1ZmZMKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3LCA4KTtcbiAgICBhd2FpdCBmZFpLZXlOZXcud3JpdGUoYnVmZkwpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmRaS2V5TmV3KTtcblxuICAgIC8vIEEgU2VjdGlvblxuICAgIGNvbnN0IG5BID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5BICE9IHprZXlIZWFkZXIublZhcnMpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIEFcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDUpO1xuXG4gICAgLy8gQjEgU2VjdGlvblxuICAgIGNvbnN0IG5CMSA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuQjEgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQjFcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMSooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDYpO1xuXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIGNvbnN0IG5CMiA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuQjIgIT0gemtleUhlYWRlci5uVmFycykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHMgaW4gQjJcIik7XG4gICAgICAgIGF3YWl0IGZkWktleU5ldy5kaXNjYXJkKCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMiooemtleUhlYWRlci5uVmFycyk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDcpO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlTVBDUGFyYW1zKGZkWktleU5ldywgY3VydmUsIG5ld01QQ1BhcmFtcyk7XG5cbiAgICBhd2FpdCBmZE1QQ1BhcmFtcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkWktleU5ldy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkWktleU9sZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoZmQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcyKGZkKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcyLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMi5mcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gY29udHJpYnV0aW9uSXNFcXVhbChjMSwgYzIpIHtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjMS5kZWx0YUFmdGVyICAgLCBjMi5kZWx0YUFmdGVyKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGMxLmRlbHRhLmcxX3MgICAsIGMyLmRlbHRhLmcxX3MpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoYzEuZGVsdGEuZzFfc3ggICwgYzIuZGVsdGEuZzFfc3gpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoYzEuZGVsdGEuZzJfc3B4ICwgYzIuZGVsdGEuZzJfc3B4KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwoYzEudHJhbnNjcmlwdCwgYzIudHJhbnNjcmlwdCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBoYXNoVG9HMiBhcyBoYXNoVG9HMiB9IGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmNvbnN0IHNhbWVSYXRpbyA9IG1pc2Muc2FtZVJhdGlvO1xuaW1wb3J0IHtoYXNoRzEsIGhhc2hQdWJLZXl9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgQ2hhQ2hhLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJ2ZXJpZnlGcm9tSW5pdChpbml0RmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpIHtcblxuICAgIGxldCBzcjtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zLCBmYWxzZSk7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IGFjY3VtdWxhdGVkSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgYWNjdW11bGF0ZWRIYXNoZXIudXBkYXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGxldCBjdXJEZWx0YSA9IGN1cnZlLkcxLmc7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgY29uc3Qgb3VySGFzaGVyID0gbWlzYy5jbG9uZUhhc2hlcihhY2N1bXVsYXRlZEhhc2hlcik7XG5cbiAgICAgICAgaGFzaEcxKG91ckhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzFfcyk7XG4gICAgICAgIGhhc2hHMShvdXJIYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcblxuICAgICAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwob3VySGFzaGVyLmRpZ2VzdCgpLCBjLnRyYW5zY3JpcHQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogSW5jb25zaXN0ZW50IHRyYW5zY3JpcHQgYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZWx0YV9nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjLnRyYW5zY3JpcHQpO1xuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjLmRlbHRhLmcxX3MsIGMuZGVsdGEuZzFfc3gsIGRlbHRhX2cyX3NwLCBjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IHB1YmxpYyBrZXkgRzEgYW5kIEcyIGRvIG5vdCBoYXZlIHRoZSBzYW1lIHJhdGlvbiBgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXJEZWx0YSwgYy5kZWx0YUFmdGVyLCBkZWx0YV9nMl9zcCwgYy5kZWx0YS5nMl9zcHgpO1xuICAgICAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBkZWx0YUFmdGVyIGRvZXMgbm90IGZpbGxvdyB0aGUgcHVibGljIGtleSBgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjLnR5cGUgPT0gMSkge1xuICAgICAgICAgICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zKGMuYmVhY29uSGFzaCwgYy5udW1JdGVyYXRpb25zRXhwKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkX3BydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkX2cxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgICAgICAgICAgY29uc3QgZXhwZWN0ZWRfZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGV4cGVjdGVkX2cxX3MsIGV4cGVjdGVkX3BydktleSkpO1xuICAgICAgICAgICAgaWYgKGN1cnZlLkcxLmVxKGV4cGVjdGVkX2cxX3MsIGMuZGVsdGEuZzFfcykgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogS2V5IG9mIHRoZSBiZWFjb24gZG9lcyBub3QgbWF0Y2guIGcxX3MgYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGN1cnZlLkcxLmVxKGV4cGVjdGVkX2cxX3N4LCBjLmRlbHRhLmcxX3N4KSAhPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBLZXkgb2YgdGhlIGJlYWNvbiBkb2VzIG5vdCBtYXRjaC4gZzFfc3ggYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaGFzaFB1YktleShhY2N1bXVsYXRlZEhhc2hlciwgY3VydmUsIGMpO1xuXG4gICAgICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgICAgICBoYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGMpO1xuXG4gICAgICAgIGMuY29udHJpYnV0aW9uSGFzaCA9IGNvbnRyaWJ1dGlvbkhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBjdXJEZWx0YSA9IGMuZGVsdGFBZnRlcjtcbiAgICB9XG5cblxuICAgIGNvbnN0IHtmZDogZmRJbml0LCBzZWN0aW9uczogc2VjdGlvbnNJbml0fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShpbml0RmlsZU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5SW5pdCA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkSW5pdCwgc2VjdGlvbnNJbml0LCBmYWxzZSk7XG5cbiAgICBpZiAoemtleUluaXQucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleWluaXQgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBpZiAoICAoIVNjYWxhci5lcSh6a2V5SW5pdC5xLCB6a2V5LnEpKVxuICAgICAgICB8fCghU2NhbGFyLmVxKHprZXlJbml0LnIsIHprZXkucikpXG4gICAgICAgIHx8KHprZXlJbml0Lm44cSAhPSB6a2V5Lm44cSlcbiAgICAgICAgfHwoemtleUluaXQubjhyICE9IHprZXkubjhyKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBEaWZmZXJlbnQgY3VydmVzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCAgKHprZXlJbml0Lm5WYXJzICE9IHprZXkublZhcnMpXG4gICAgICAgIHx8KHprZXlJbml0Lm5QdWJsaWMgIT0gIHprZXkublB1YmxpYylcbiAgICAgICAgfHwoemtleUluaXQuZG9tYWluU2l6ZSAhPSB6a2V5LmRvbWFpblNpemUpKVxuICAgIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIERpZmZlcmVudCBjaXJjdWl0IHBhcmFtZXRlcnNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWN1cnZlLkcxLmVxKHprZXkudmtfYWxwaGFfMSwgemtleUluaXQudmtfYWxwaGFfMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgYWxwaGExXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19iZXRhXzEsIHprZXlJbml0LnZrX2JldGFfMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgYmV0YTFcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcSh6a2V5LnZrX2JldGFfMiwgemtleUluaXQudmtfYmV0YV8yKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBiZXRhMlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcyLmVxKHprZXkudmtfZ2FtbWFfMiwgemtleUluaXQudmtfZ2FtbWFfMikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgZ2FtbWEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoemtleS52a19kZWx0YV8xLCBjdXJEZWx0YSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgZGVsdGExXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXJ2ZS5HMS5nLCBjdXJEZWx0YSwgY3VydmUuRzIuZywgemtleS52a19kZWx0YV8yKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgZGVsdGEyXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgbXBjUGFyYW1zSW5pdCA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkSW5pdCwgY3VydmUsIHNlY3Rpb25zSW5pdCk7XG4gICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG1wY1BhcmFtcy5jc0hhc2gsIG1wY1BhcmFtc0luaXQuY3NIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgQ2lyY3VpdCBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIHNpemVzIG9mIHNlY3Rpb25zXG4gICAgaWYgKHNlY3Rpb25zWzhdWzBdLnNpemUgIT0gc0cxKih6a2V5Lm5WYXJzLXprZXkublB1YmxpYy0xKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBMIHNlY3Rpb24gc2l6ZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzZWN0aW9uc1s5XVswXS5zaXplICE9IHNHMSooemtleS5kb21haW5TaXplKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSW52YWxpZCBIIHNlY3Rpb24gc2l6ZVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBzcztcbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCAzKTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJQyBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA0KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkNvZWZmcyBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA1KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkEgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgNik7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJCMSBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5zZWN0aW9uSXNFcXVhbChmZCwgc2VjdGlvbnMsIGZkSW5pdCwgc2VjdGlvbnNJbml0LCA3KTtcbiAgICBpZiAoIXNzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkIyIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIExcbiAgICBzciA9IGF3YWl0IHNlY3Rpb25IYXNTYW1lUmF0aW8oXCJHMVwiLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgZmQsIHNlY3Rpb25zLCA4LCB6a2V5LnZrX2RlbHRhXzIsIHprZXlJbml0LnZrX2RlbHRhXzIsIFwiTCBzZWN0aW9uXCIpO1xuICAgIGlmIChzciE9PXRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiTCBzZWN0aW9uIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgSFxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvSCgpO1xuICAgIGlmIChzciE9PXRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSCBzZWN0aW9uIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKG1wY1BhcmFtcy5jc0hhc2gsIFwiQ2lyY3VpdCBIYXNoOiBcIikpO1xuXG4gICAgYXdhaXQgZmQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZEluaXQuY2xvc2UoKTtcblxuICAgIGZvciAobGV0IGk9bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGMuY29udHJpYnV0aW9uSGFzaCwgYGNvbnRyaWJ1dGlvbiAjJHtpKzF9ICR7Yy5uYW1lID8gYy5uYW1lIDogXCJcIn06YCkpO1xuICAgICAgICBpZiAoYy50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGBCZWFjb24gZ2VuZXJhdG9yOiAke21pc2MuYnl0ZUFycmF5MmhleChjLmJlYWNvbkhhc2gpfWApO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYEJlYWNvbiBpdGVyYXRpb25zIEV4cDogJHtjLm51bUl0ZXJhdGlvbnNFeHB9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJaS2V5IE9rIVwiKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBzZWN0aW9uSGFzU2FtZVJhdGlvKGdyb3VwTmFtZSwgZmQxLCBzZWN0aW9uczEsIGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24sIGcyc3AsIGcyc3B4LCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDE8PDIwO1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQxLCBzZWN0aW9uczEsIGlkU2VjdGlvbik7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBzZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplIC8gc0c7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgU2FtZSByYXRpbyBjaGVjayAke3NlY3Rpb25OYW1lfTogICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlczEgPSBhd2FpdCBmZDEucmVhZChuKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJhc2VzMiA9IGF3YWl0IGZkMi5yZWFkKG4qc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBzY2FsYXJzID0gbWlzYy5nZXRSYW5kb21CeXRlcyg0Km4pO1xuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMxLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlczIsIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkMSk7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZDIpO1xuXG4gICAgICAgIGlmIChuUG9pbnRzID09IDApIHJldHVybiB0cnVlO1xuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBSMSwgUjIsIGcyc3AsIGcyc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gc2FtZVJhdGlvSCgpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwyMDtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlLkcxO1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuXG4gICAgICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogc2VjdGlvbnNQVGF1fSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShwVGF1RmlsZU5hbWUsIFwicHRhdVwiLCAxKTtcblxuICAgICAgICBsZXQgYnVmZl9yID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiB6a2V5Lm44cik7XG5cbiAgICAgICAgY29uc3Qgc2VlZD0gbmV3IEFycmF5KDgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgICAgICBzZWVkW2ldID0gbWlzYy5yZWFkVUludDMyQkUobWlzYy5nZXRSYW5kb21CeXRlcyg0KSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZS0xOyBpKyspIHsgICAvLyBOb3RlIHRoYXQgbGFzdCBvbmUgaXMgemVyb1xuICAgICAgICAgICAgY29uc3QgZSA9IEZyLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIEZyLnRvUnByTEUoYnVmZl9yLCBpKnprZXkubjhyLCBlKTtcbiAgICAgICAgfVxuICAgICAgICBGci50b1JwckxFKGJ1ZmZfciwgKHprZXkuZG9tYWluU2l6ZS0xKSp6a2V5Lm44ciwgRnIuemVybyk7XG5cbiAgICAgICAgbGV0IFIxID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEggVmVyaWZpY2F0aW9uKHRhdSk6ICAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKHprZXkuZG9tYWluU2l6ZSAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZjEgPSBhd2FpdCBmZFBUYXUucmVhZChzRypuLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIHprZXkuZG9tYWluU2l6ZSpzRyArIGkqc0cpO1xuICAgICAgICAgICAgY29uc3QgYnVmZjIgPSBhd2FpdCBmZFBUYXUucmVhZChzRypuLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIGkqc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmQiA9IGF3YWl0IGJhdGNoU3VidHJhY3QoYnVmZjEsIGJ1ZmYyKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTID0gYnVmZl9yLnNsaWNlKGkqemtleS5uOHIsIChpK24pKnprZXkubjhyKTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZCLCBidWZmUyk7XG5cbiAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIHIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ2FsY3VsYXRlIG9kZCBjb2VmZmljaWVudHMgaW4gdHJhbnNmb3JtZWQgZG9tYWluXG5cbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZl9yKTtcbiAgICAgICAgLy8gY29uc3QgZmlyc3QgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuaW52KGN1cnZlLkZyLmUoMikpKTtcbiAgICAgICAgLy8gV29ya3MqMiAgIGNvbnN0IGZpcnN0ID0gY3VydmUuRnIubmVnKGN1cnZlLkZyLmUoMikpO1xuXG5cbiAgICAgICAgbGV0IGZpcnN0O1xuXG4gICAgICAgIGlmICh6a2V5LnBvd2VyIDwgRnIucykge1xuICAgICAgICAgICAgZmlyc3QgPSBGci5uZWcoRnIuZSgyKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzbWFsbF9tICA9IDIgKiogRnIucztcbiAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsX20pO1xuICAgICAgICAgICAgZmlyc3QgPSBGci5zdWIoIHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zdCBpbmMgPSBjdXJ2ZS5Gci5pbnYoY3VydmUuUEZyLndbemtleS5wb3dlcisxXSk7XG4gICAgICAgIGNvbnN0IGluYyA9IHprZXkucG93ZXIgPCBGci5zID8gRnIud1t6a2V5LnBvd2VyKzFdIDogRnIuc2hpZnQ7XG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZl9yLCBmaXJzdCwgaW5jKTtcbiAgICAgICAgYnVmZl9yID0gYXdhaXQgRnIuZmZ0KGJ1ZmZfcik7XG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IEZyLmJhdGNoRnJvbU1vbnRnb21lcnkoYnVmZl9yKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDkpO1xuICAgICAgICBsZXQgUjIgPSBHLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkgKz0gTUFYX0NIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSCBWZXJpZmljYXRpb24obGFncmFuZ2UpOiAgJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih6a2V5LmRvbWFpblNpemUgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKm4pO1xuICAgICAgICAgICAgY29uc3QgYnVmZlMgPSBidWZmX3Iuc2xpY2UoaSp6a2V5Lm44ciwgKGkrbikqemtleS5uOHIpO1xuICAgICAgICAgICAgY29uc3QgciA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYnVmZiwgYnVmZlMpO1xuXG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBSMSwgUjIsIHprZXkudmtfZGVsdGFfMiwgemtleUluaXQudmtfZGVsdGFfMik7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuXG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBiYXRjaFN1YnRyYWN0KGJ1ZmYxLCBidWZmMikge1xuICAgICAgICBjb25zdCBzRyA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRztcbiAgICAgICAgY29uc3QgY29uY3VycmVuY3k9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgICAgICBjb25zdCBuUG9pbnRzUGVyVGhyZWFkID0gTWF0aC5mbG9vcihuUG9pbnRzIC8gY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMSA9IGJ1ZmYxLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYyID0gYnVmZjIuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKGJhdGNoU3VidHJhY3RUaHJlYWQoc3ViQnVmZjEsIHN1YkJ1ZmYyKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dC5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgICAgIHArPXJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bGxCdWZmT3V0O1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gYmF0Y2hTdWJ0cmFjdFRocmVhZChidWZmMSwgYnVmZjIpIHtcbiAgICAgICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgICAgICBjb25zdCBzR21pZCA9IGN1cnZlLkcxLkYubjgqMztcbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYxLmJ5dGVMZW5ndGgvc0cxO1xuICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZjF9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAxLCBidWZmOiBidWZmMn0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogblBvaW50cypzR21pZH0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSsrKSB7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBcImcxbV9zdWJBZmZpbmVcIixcbiAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IGkqc0dtaWR9LFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcImcxbV9iYXRjaFRvQWZmaW5lXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHMX0pO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBuZXdaS2V5IGZyb20gXCIuL3prZXlfbmV3LmpzXCI7XG5pbXBvcnQgcGhhc2UydmVyaWZ5RnJvbUluaXQgZnJvbSBcIi4vemtleV92ZXJpZnlfZnJvbWluaXQuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UydmVyaWZ5RnJvbVIxY3MocjFjc0ZpbGVOYW1lLCBwVGF1RmlsZU5hbWUsIHprZXlGaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAvLyBjb25zdCBpbml0RmlsZU5hbWUgPSBcIn5cIiArIHprZXlGaWxlTmFtZSArIFwiLmluaXRcIjtcbiAgICBjb25zdCBpbml0RmlsZU5hbWUgPSB7dHlwZTogXCJiaWdNZW1cIn07XG4gICAgYXdhaXQgbmV3WktleShyMWNzRmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgaW5pdEZpbGVOYW1lLCBsb2dnZXIpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHBoYXNlMnZlcmlmeUZyb21Jbml0KGluaXRGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCB6a2V5RmlsZU5hbWUsIGxvZ2dlcik7XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwaGFzZTJjb250cmlidXRlKHprZXlOYW1lT2xkLCB6a2V5TmFtZU5ldywgbmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnM6IHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWVOZXcsIFwiemtleVwiLCAxLCAxMCk7XG5cblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgdHJhbnNjcmlwdEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIHRyYW5zY3JpcHRIYXNoZXIudXBkYXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1dGlscy5oYXNoUHViS2V5KHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcywgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4KTtcbiAgICBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCA9IHRyYW5zY3JpcHRIYXNoZXIuZGlnZXN0KCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0KTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpKTtcblxuICAgIHprZXkudmtfZGVsdGFfMSA9IGN1cnZlLkcxLnRpbWVzRnIoemtleS52a19kZWx0YV8xLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICB6a2V5LnZrX2RlbHRhXzIgPSBjdXJ2ZS5HMi50aW1lc0ZyKHprZXkudmtfZGVsdGFfMiwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG5cbiAgICBjdXJDb250cmlidXRpb24uZGVsdGFBZnRlciA9IHprZXkudmtfZGVsdGFfMTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi50eXBlID0gMDtcbiAgICBpZiAobmFtZSkgY3VyQ29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlSGVhZGVyKGZkTmV3LCB6a2V5KTtcblxuICAgIC8vIElDXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuXG4gICAgLy8gQ29lZmZzIChLZWVwIG9yaWdpbmFsKVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcblxuICAgIC8vIEEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1KTtcblxuICAgIC8vIEIxIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNik7XG5cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDcpO1xuXG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOCwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiTCBTZWN0aW9uXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOSwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiSCBTZWN0aW9uXCIsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMoZmROZXcsIGN1cnZlLCBtcGNQYXJhbXMpO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdXRpbHMuaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24pO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaCA9IGNvbnRyaWJ1dGlvbkhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChtcGNQYXJhbXMuY3NIYXNoLCBcIkNpcmN1aXQgSGFzaDogXCIpKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY29udHJpYnV0aW9uSGFzaCwgXCJDb250cmlidXRpb24gSGFzaDogXCIpKTtcblxuICAgIHJldHVybiBjb250cmlidXRpb25IYXNoO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBoYXNoVG9HMiBhcyBoYXNoVG9HMiB9IGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9TZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYmVhY29uKHprZXlOYW1lT2xkLCB6a2V5TmFtZU5ldywgbmFtZSwgYmVhY29uSGFzaFN0ciwgbnVtSXRlcmF0aW9uc0V4cCwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3QgYmVhY29uSGFzaCA9IG1pc2MuaGV4MkJ5dGVBcnJheShiZWFjb25IYXNoU3RyKTtcbiAgICBpZiAoICAgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCA9PSAwKVxuICAgICAgICB8fCAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoKjIgIT1iZWFjb25IYXNoU3RyLmxlbmd0aCkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIEJlYWNvbiBIYXNoLiAoSXQgbXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIHNlcXVlbmNlKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYmVhY29uSGFzaC5sZW5ndGg+PTI1Nikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJNYXhpbXVtIGxlbmd0aCBvZiBiZWFjb24gaGFzaCBpcyAyNTUgYnl0ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBudW1JdGVyYXRpb25zRXhwID0gcGFyc2VJbnQobnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgaWYgKChudW1JdGVyYXRpb25zRXhwPDEwKXx8KG51bUl0ZXJhdGlvbnNFeHA+NjMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtSXRlcmF0aW9uc0V4cC4gKE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNjMpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uczogc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lT2xkLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoemtleU5hbWVOZXcsIFwiemtleVwiLCAxLCAxMCk7XG5cbiAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMoYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdHJhbnNjcmlwdEhhc2hlci51cGRhdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHV0aWxzLmhhc2hQdWJLZXkodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuXG4gICAgemtleS52a19kZWx0YV8xID0gY3VydmUuRzEudGltZXNGcih6a2V5LnZrX2RlbHRhXzEsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIHprZXkudmtfZGVsdGFfMiA9IGN1cnZlLkcyLnRpbWVzRnIoemtleS52a19kZWx0YV8yLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YUFmdGVyID0gemtleS52a19kZWx0YV8xO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAxO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5udW1JdGVyYXRpb25zRXhwID0gbnVtSXRlcmF0aW9uc0V4cDtcbiAgICBjdXJDb250cmlidXRpb24uYmVhY29uSGFzaCA9IGJlYWNvbkhhc2g7XG5cbiAgICBpZiAobmFtZSkgY3VyQ29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlSGVhZGVyKGZkTmV3LCB6a2V5KTtcblxuICAgIC8vIElDXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMpO1xuXG4gICAgLy8gQ29lZmZzIChLZWVwIG9yaWdpbmFsKVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA0KTtcblxuICAgIC8vIEEgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1KTtcblxuICAgIC8vIEIxIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNik7XG5cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDcpO1xuXG4gICAgY29uc3QgaW52RGVsdGEgPSBjdXJ2ZS5Gci5pbnYoY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOCwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiTCBTZWN0aW9uXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgYXBwbHlLZXlUb1NlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgOSwgY3VydmUsIFwiRzFcIiwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiSCBTZWN0aW9uXCIsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVNUENQYXJhbXMoZmROZXcsIGN1cnZlLCBtcGNQYXJhbXMpO1xuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcbiAgICBhd2FpdCBmZE5ldy5jbG9zZSgpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgdXRpbHMuaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24pO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaCA9IGNvbnRyaWJ1dGlvbkhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjb250cmlidXRpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbkhhc2g7XG59XG4iLCJpbXBvcnQgeyByZWFkWktleSBhcyByZWFkWktleSB9IGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB6a2V5RXhwb3J0SnNvbih6a2V5RmlsZU5hbWUpIHtcblxuICAgIGNvbnN0IHpLZXkgPSBhd2FpdCByZWFkWktleSh6a2V5RmlsZU5hbWUsIHRydWUpO1xuICAgIGRlbGV0ZSB6S2V5LmN1cnZlO1xuICAgIGRlbGV0ZSB6S2V5LkY7XG5cbiAgICByZXR1cm4gdXRpbHMuc3RyaW5naWZ5QmlnSW50cyh6S2V5KTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdCBvZiB0aGUgb3V0cHV0XG4vLyAgICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NCBCeXRlc1xuLy8gICAgICAyXk4qMi0xIFRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEFscGhhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQmV0YVRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgUHVibGljIEtleVxuLy8gICAgICAgICAgQmV0YUcyIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnMqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnQqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdSpiZXRhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqc3AqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqdHAqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip1cCpiZXRhIChjb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcbmltcG9ydCB7IGhhc2hQdWJLZXkgfSBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBoYXNoVG9HMiBhcyBoYXNoVG9HMiB9IGZyb20gXCIuL2tleXBhaXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYmVsbG1hbkNvbnRyaWJ1dGUoY3VydmUsIGNoYWxsZW5nZUZpbGVuYW1lLCByZXNwb25zZUZpbGVOYW1lLCBlbnRyb3B5LCBsb2dnZXIpIHtcbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLmdldFJhbmRvbVJuZyhlbnRyb3B5KTtcblxuICAgIGNvbnN0IGRlbHRhID0gY3VydmUuRnIuZnJvbVJuZyhybmcpO1xuICAgIGNvbnN0IGludkRlbHRhID0gY3VydmUuRnIuaW52KGRlbHRhKTtcblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG5cbiAgICBjb25zdCBmZEZyb20gPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoY2hhbGxlbmdlRmlsZW5hbWUpO1xuICAgIGNvbnN0IGZkVG8gPSBhd2FpdCBmYXN0RmlsZS5jcmVhdGVPdmVycmlkZShyZXNwb25zZUZpbGVOYW1lKTtcblxuXG4gICAgYXdhaXQgY29weShzRzEpOyAvLyBhbHBoYTFcbiAgICBhd2FpdCBjb3B5KHNHMSk7IC8vIGJldGExXG4gICAgYXdhaXQgY29weShzRzIpOyAvLyBiZXRhMlxuICAgIGF3YWl0IGNvcHkoc0cyKTsgLy8gZ2FtbWEyXG4gICAgY29uc3Qgb2xkRGVsdGExID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgY29uc3QgZGVsdGExID0gY3VydmUuRzEudGltZXNGcihvbGREZWx0YTEsIGRlbHRhKTtcbiAgICBhd2FpdCB3cml0ZUcxKGRlbHRhMSk7XG4gICAgY29uc3Qgb2xkRGVsdGEyID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgY29uc3QgZGVsdGEyID0gY3VydmUuRzIudGltZXNGcihvbGREZWx0YTIsIGRlbHRhKTtcbiAgICBhd2FpdCB3cml0ZUcyKGRlbHRhMik7XG5cbiAgICAvLyBJQ1xuICAgIGNvbnN0IG5JQyA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobklDKTtcbiAgICBhd2FpdCBjb3B5KG5JQypzRzEpO1xuXG4gICAgLy8gSFxuICAgIGNvbnN0IG5IID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuSCk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCBudWxsLCBjdXJ2ZSwgXCJHMVwiLCBuSCwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiVU5DT01QUkVTU0VEXCIsIFwiSFwiLCBsb2dnZXIpO1xuXG4gICAgLy8gTFxuICAgIGNvbnN0IG5MID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuTCk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCBudWxsLCBjdXJ2ZSwgXCJHMVwiLCBuTCwgaW52RGVsdGEsIGN1cnZlLkZyLmUoMSksIFwiVU5DT01QUkVTU0VEXCIsIFwiTFwiLCBsb2dnZXIpO1xuXG4gICAgLy8gQVxuICAgIGNvbnN0IG5BID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuQSk7XG4gICAgYXdhaXQgY29weShuQSpzRzEpO1xuXG4gICAgLy8gQjFcbiAgICBjb25zdCBuQjEgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5CMSk7XG4gICAgYXdhaXQgY29weShuQjEqc0cxKTtcblxuICAgIC8vIEIyXG4gICAgY29uc3QgbkIyID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuQjIpO1xuICAgIGF3YWl0IGNvcHkobkIyKnNHMik7XG5cblxuICAgIC8vLy8vLy8vLy9cbiAgICAvLy8gUmVhZCBjb250cmlidXRpb25zXG4gICAgLy8vLy8vLy8vL1xuICAgIGNvbnN0IHRyYW5zY3JpcHRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IHt9O1xuICAgIC8vIGNzSGFzaFxuICAgIG1wY1BhcmFtcy5jc0hhc2ggPSAgYXdhaXQgZmRGcm9tLnJlYWQoNjQpO1xuICAgIHRyYW5zY3JpcHRIYXNoZXIudXBkYXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuXG4gICAgY29uc3QgbkNvbnRyaWJ1dGlvbnMgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvbnRyaWJ1dGlvbnM7IGkrKykge1xuICAgICAgICBjb25zdCBjID0geyBkZWx0YTp7fSB9O1xuICAgICAgICBjLmRlbHRhQWZ0ZXIgPSBhd2FpdCByZWFkRzEoKTtcbiAgICAgICAgYy5kZWx0YS5nMV9zID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgICAgIGMuZGVsdGEuZzFfc3ggPSBhd2FpdCByZWFkRzEoKTtcbiAgICAgICAgYy5kZWx0YS5nMl9zcHggPSBhd2FpdCByZWFkRzIoKTtcbiAgICAgICAgYy50cmFuc2NyaXB0ID0gYXdhaXQgZmRGcm9tLnJlYWQoNjQpO1xuICAgICAgICBtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5wdXNoKGMpO1xuICAgICAgICBoYXNoUHViS2V5KHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEgPSB7fTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5ID0gZGVsdGE7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MsIGRlbHRhKSk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyk7XG4gICAgdXRpbHMuaGFzaEcxKHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3gpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0ID0gdHJhbnNjcmlwdEhhc2hlci5kaWdlc3QoKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcHggPSBjdXJ2ZS5HMi50b0FmZmluZShjdXJ2ZS5HMi50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCwgZGVsdGEpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGFBZnRlciA9IGRlbHRhMTtcbiAgICBjdXJDb250cmlidXRpb24udHlwZSA9IDA7XG4gICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG5cbiAgICAvLy8vLy8vLy8vXG4gICAgLy8vIFdyaXRlIENvbnRyaWJ1dGlvblxuICAgIC8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGZkVG8ud3JpdGUobXBjUGFyYW1zLmNzSGFzaCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGFBZnRlcik7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zKTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhLmcxX3N4KTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMihjLmRlbHRhLmcyX3NweCk7XG4gICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYy50cmFuc2NyaXB0KTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBoYXNoUHViS2V5KGNvbnRyaWJ1dGlvbkhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBjb25zdCBjb250cmlidXRpb25IYXNoID0gY29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNvbnRyaWJ1dGlvbkhhc2gsIFwiQ29udHJpYnV0aW9uIEhhc2g6IFwiKSk7XG5cbiAgICBhd2FpdCBmZFRvLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRGcm9tLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9uSGFzaDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvcHkobkJ5dGVzKSB7XG4gICAgICAgIGNvbnN0IENIVU5LX1NJWkUgPSBmZEZyb20ucGFnZVNpemUqMjtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5CeXRlczsgaSs9IENIVU5LX1NJWkUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuQnl0ZXMgLWksIENIVU5LX1NJWkUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkRnJvbS5yZWFkKG4pO1xuICAgICAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMSgpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkRnJvbS5yZWFkKGN1cnZlLkcxLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMS5mcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkRnJvbS5yZWFkKGN1cnZlLkcyLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMi5mcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICAgICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihQKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShzRzIpO1xuICAgICAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBQKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG5cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHtnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7RkZMT05LX1BST1RPQ09MX0lEfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuXG5jb25zdCB7c3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gemtleUV4cG9ydFZlcmlmaWNhdGlvbktleSh6a2V5TmFtZSwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJFWFBPUlQgVkVSSUZJQ0FUSU9OIEtFWSBTVEFSVEVEXCIpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBEZXRlY3RlZCBwcm90b2NvbDogXCIgKyB6a2V5LnByb3RvY29sKTtcblxuICAgIGxldCByZXM7XG4gICAgaWYgKHprZXkucHJvdG9jb2wgPT09IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHJlcyA9IGF3YWl0IGdyb3RoMTZWayh6a2V5LCBmZCwgc2VjdGlvbnMpO1xuICAgIH0gZWxzZSBpZiAoemtleS5wcm90b2NvbCA9PT0gXCJwbG9ua1wiKSB7XG4gICAgICAgIHJlcyA9IGF3YWl0IHBsb25rVmsoemtleSk7XG4gICAgfSBlbHNlIGlmICh6a2V5LnByb3RvY29sSWQgJiYgemtleS5wcm90b2NvbElkID09PSBGRkxPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmVzID0gYXdhaXQgZXhwb3J0RkZsb25rVmsoemtleSwgbG9nZ2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgcHJvdG9jb2wgdW5yZWNvZ25pemVkXCIpO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkVYUE9SVCBWRVJJRklDQVRJT04gS0VZIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5hc3luYyBmdW5jdGlvbiBncm90aDE2VmsoemtleSwgZmQsIHNlY3Rpb25zKSB7XG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjggKiAyO1xuXG4gICAgY29uc3QgYWxwaGFCZXRhID0gYXdhaXQgY3VydmUucGFpcmluZyh6a2V5LnZrX2FscGhhXzEsIHprZXkudmtfYmV0YV8yKTtcblxuICAgIGxldCB2S2V5ID0ge1xuICAgICAgICBwcm90b2NvbDogemtleS5wcm90b2NvbCxcbiAgICAgICAgY3VydmU6IGN1cnZlLm5hbWUsXG4gICAgICAgIG5QdWJsaWM6IHprZXkublB1YmxpYyxcblxuICAgICAgICB2a19hbHBoYV8xOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LnZrX2FscGhhXzEpLFxuXG4gICAgICAgIHZrX2JldGFfMjogY3VydmUuRzIudG9PYmplY3QoemtleS52a19iZXRhXzIpLFxuICAgICAgICB2a19nYW1tYV8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LnZrX2dhbW1hXzIpLFxuICAgICAgICB2a19kZWx0YV8yOiBjdXJ2ZS5HMi50b09iamVjdCh6a2V5LnZrX2RlbHRhXzIpLFxuXG4gICAgICAgIHZrX2FscGhhYmV0YV8xMjogY3VydmUuR3QudG9PYmplY3QoYWxwaGFCZXRhKVxuICAgIH07XG5cbiAgICAvLyBSZWFkIElDIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgMyk7XG4gICAgdktleS5JQyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHMSk7XG4gICAgICAgIGNvbnN0IFAgPSBjdXJ2ZS5HMS50b09iamVjdChidWZmKTtcbiAgICAgICAgdktleS5JQy5wdXNoKFApO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgdktleSA9IHN0cmluZ2lmeUJpZ0ludHModktleSk7XG5cbiAgICByZXR1cm4gdktleTtcbn1cblxuXG5hc3luYyBmdW5jdGlvbiBwbG9ua1ZrKHprZXkpIHtcbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBsZXQgdktleSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHprZXkucHJvdG9jb2wsXG4gICAgICAgIGN1cnZlOiBjdXJ2ZS5uYW1lLFxuICAgICAgICBuUHVibGljOiB6a2V5Lm5QdWJsaWMsXG4gICAgICAgIHBvd2VyOiB6a2V5LnBvd2VyLFxuXG4gICAgICAgIGsxOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LmsxKSxcbiAgICAgICAgazI6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkuazIpLFxuXG4gICAgICAgIFFtOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFtKSxcbiAgICAgICAgUWw6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUWwpLFxuICAgICAgICBRcjogY3VydmUuRzEudG9PYmplY3QoemtleS5RciksXG4gICAgICAgIFFvOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFvKSxcbiAgICAgICAgUWM6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUWMpLFxuICAgICAgICBTMTogY3VydmUuRzEudG9PYmplY3QoemtleS5TMSksXG4gICAgICAgIFMyOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlMyKSxcbiAgICAgICAgUzM6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUzMpLFxuXG4gICAgICAgIFhfMjogY3VydmUuRzIudG9PYmplY3QoemtleS5YXzIpLFxuXG4gICAgICAgIHc6IGN1cnZlLkZyLnRvT2JqZWN0KGN1cnZlLkZyLndbemtleS5wb3dlcl0pXG4gICAgfTtcblxuICAgIHZLZXkgPSBzdHJpbmdpZnlCaWdJbnRzKHZLZXkpO1xuXG4gICAgcmV0dXJuIHZLZXk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4cG9ydEZGbG9ua1ZrKHprZXksIGxvZ2dlcikge1xuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIGxldCB2S2V5ID0ge1xuICAgICAgICBwcm90b2NvbDogemtleS5wcm90b2NvbCxcbiAgICAgICAgY3VydmU6IGN1cnZlLm5hbWUsXG4gICAgICAgIG5QdWJsaWM6IHprZXkublB1YmxpYyxcbiAgICAgICAgcG93ZXI6IHprZXkucG93ZXIsXG5cbiAgICAgICAgazE6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkuazEpLFxuICAgICAgICBrMjogY3VydmUuRnIudG9PYmplY3QoemtleS5rMiksXG5cbiAgICAgICAgdzogY3VydmUuRnIudG9PYmplY3QoY3VydmUuRnIud1t6a2V5LnBvd2VyXSksXG4gICAgICAgIC8vd1c6IGN1cnZlLkZyLnRvT2JqZWN0KGN1cnZlLkZyLndbemtleS5wb3dlciArIDFdKSxcbiAgICAgICAgdzM6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkudzMpLFxuICAgICAgICB3NDogY3VydmUuRnIudG9PYmplY3QoemtleS53NCksXG4gICAgICAgIHc4OiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5Lnc4KSxcbiAgICAgICAgd3I6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkud3IpLFxuXG4gICAgICAgIFhfMjogY3VydmUuRzIudG9PYmplY3QoemtleS5YXzIpLFxuXG4gICAgICAgIEMwOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LkMwKSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0cmluZ2lmeUJpZ0ludHModktleSk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZWpzIGZyb20gXCJlanNcIjtcbmltcG9ydCB7Z2V0Q3VydmVGcm9tTmFtZX0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHMsIHN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua0V4cG9ydFNvbGlkaXR5VmVyaWZpZXIodmssIHRlbXBsYXRlcywgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgRVhQT1JUIFNPTElESVRZIFZFUklGSUVSIFNUQVJURURcIik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbU5hbWUodmsuY3VydmUpO1xuXG4gICAgLy8gUHJlY29tcHV0ZSB3M18yLCB3NF8yIGFuZCB3NF8zXG4gICAgbGV0IHczID0gZnJvbVZrZXkodmsudzMpO1xuICAgIHZrLnczXzIgPSB0b1ZrZXkoY3VydmUuRnIuc3F1YXJlKHczKSk7XG5cbiAgICBsZXQgdzQgPSBmcm9tVmtleSh2ay53NCk7XG4gICAgdmsudzRfMiA9IHRvVmtleShjdXJ2ZS5Gci5zcXVhcmUodzQpKTtcbiAgICB2ay53NF8zID0gdG9Wa2V5KGN1cnZlLkZyLm11bChjdXJ2ZS5Gci5zcXVhcmUodzQpLCB3NCkpO1xuXG4gICAgbGV0IHc4ID0gZnJvbVZrZXkodmsudzgpO1xuICAgIGxldCBhY2MgPSBjdXJ2ZS5Gci5vbmU7XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDg7IGkrKykge1xuICAgICAgICBhY2MgPSBjdXJ2ZS5Gci5tdWwoYWNjLCB3OCk7XG4gICAgICAgIHZrW1widzhfXCIgKyBpXSA9IHRvVmtleShhY2MpO1xuICAgIH1cblxuICAgIGxldCB0ZW1wbGF0ZSA9IHRlbXBsYXRlc1t2ay5wcm90b2NvbF07XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBFWFBPUlQgU09MSURJVFkgVkVSSUZJRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gZWpzLnJlbmRlcih0ZW1wbGF0ZSwgdmspO1xuXG4gICAgZnVuY3Rpb24gZnJvbVZrZXkoc3RyKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHVuc3RyaW5naWZ5QmlnSW50cyhzdHIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRnIuZnJvbU9iamVjdCh2YWwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHRvVmtleSh2YWwpIHtcbiAgICAgICAgY29uc3Qgc3RyID0gY3VydmUuRnIudG9PYmplY3QodmFsKTtcbiAgICAgICAgcmV0dXJuIHN0cmluZ2lmeUJpZ0ludHMoc3RyKTtcbiAgICB9XG59XG5cbiIsImltcG9ydCBlanMgZnJvbSBcImVqc1wiO1xuXG5pbXBvcnQgZXhwb3J0VmVyaWZpY2F0aW9uS2V5IGZyb20gXCIuL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qc1wiO1xuaW1wb3J0IGZmbG9ua0V4cG9ydFNvbGlkaXR5VmVyaWZpZXJDbWQgZnJvbSBcIi4vZmZsb25rX2V4cG9ydF9zb2xpZGl0eV92ZXJpZmllci5qc1wiO1xuLy8gTm90IHJlYWR5IHlldFxuLy8gbW9kdWxlLmV4cG9ydHMuZ2VuZXJhdGVWZXJpZmllcl9raW1sZWVvaCA9IGdlbmVyYXRlVmVyaWZpZXJfa2ltbGVlb2g7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydFNvbGlkaXR5VmVyaWZpZXIoektleU5hbWUsIHRlbXBsYXRlcywgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB2ZXJpZmljYXRpb25LZXkgPSBhd2FpdCBleHBvcnRWZXJpZmljYXRpb25LZXkoektleU5hbWUsIGxvZ2dlcik7XG5cbiAgICBpZiAoXCJmZmxvbmtcIiA9PT0gdmVyaWZpY2F0aW9uS2V5LnByb3RvY29sKSB7XG4gICAgICAgIHJldHVybiBmZmxvbmtFeHBvcnRTb2xpZGl0eVZlcmlmaWVyQ21kKHZlcmlmaWNhdGlvbktleSwgdGVtcGxhdGVzLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGxldCB0ZW1wbGF0ZSA9IHRlbXBsYXRlc1t2ZXJpZmljYXRpb25LZXkucHJvdG9jb2xdO1xuXG4gICAgcmV0dXJuIGVqcy5yZW5kZXIodGVtcGxhdGUsIHZlcmlmaWNhdGlvbktleSk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBuZXdaS2V5fSBmcm9tIFwiLi96a2V5X25ldy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEJlbGxtYW59IGZyb20gXCIuL3prZXlfZXhwb3J0X2JlbGxtYW4uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbXBvcnRCZWxsbWFufSBmcm9tIFwiLi96a2V5X2ltcG9ydF9iZWxsbWFuLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5RnJvbVIxY3N9IGZyb20gXCIuL3prZXlfdmVyaWZ5X2Zyb21yMWNzLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5RnJvbUluaXR9IGZyb20gXCIuL3prZXlfdmVyaWZ5X2Zyb21pbml0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29udHJpYnV0ZX0gZnJvbSBcIi4vemtleV9jb250cmlidXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYmVhY29ufSBmcm9tIFwiLi96a2V5X2JlYWNvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydEpzb259IGZyb20gXCIuL3prZXlfZXhwb3J0X2pzb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBiZWxsbWFuQ29udHJpYnV0ZX0gZnJvbSBcIi4vemtleV9iZWxsbWFuX2NvbnRyaWJ1dGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRWZXJpZmljYXRpb25LZXl9IGZyb20gXCIuL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5VmVyaWZpZXJ9IGZyb20gXCIuL3prZXlfZXhwb3J0X3NvbGlkaXR5dmVyaWZpZXIuanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qIEltcGxlbWVudGF0aW9uIG9mIHRoaXMgcGFwZXI6IGh0dHBzOi8vZXByaW50LmlhY3Iub3JnLzIwMTkvOTUzLnBkZiAqL1xuXG5pbXBvcnQge3JlYWRSMWNzRmR9IGZyb20gXCJyMWNzZmlsZVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCB7XG4gICAgcmVhZEJpbkZpbGUsXG4gICAgY3JlYXRlQmluRmlsZSxcbiAgICByZWFkU2VjdGlvbixcbiAgICB3cml0ZUJpZ0ludCxcbiAgICBzdGFydFdyaXRlU2VjdGlvbixcbiAgICBlbmRXcml0ZVNlY3Rpb24sXG59IGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgeyBsb2cyICB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0IEJpZ0FycmF5IGZyb20gXCIuL2JpZ2FycmF5LmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGxvbmtTZXR1cChyMWNzTmFtZSwgcHRhdU5hbWUsIHprZXlOYW1lLCBsb2dnZXIpIHtcblxuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogc2VjdGlvbnNQVGF1fSA9IGF3YWl0IHJlYWRCaW5GaWxlKHB0YXVOYW1lLCBcInB0YXVcIiwgMSwgMTw8MjIsIDE8PDI0KTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkUFRhdSwgc2VjdGlvbnNQVGF1KTtcbiAgICBjb25zdCB7ZmQ6IGZkUjFjcywgc2VjdGlvbnM6IHNlY3Rpb25zUjFjc30gPSBhd2FpdCByZWFkQmluRmlsZShyMWNzTmFtZSwgXCJyMWNzXCIsIDEsIDE8PDIyLCAxPDwyNCk7XG5cbiAgICBjb25zdCByMWNzID0gYXdhaXQgcmVhZFIxY3NGZChmZFIxY3MsIHNlY3Rpb25zUjFjcywge2xvYWRDb25zdHJhaW50czogdHJ1ZSwgbG9hZEN1c3RvbUdhdGVzOiB0cnVlfSk7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44KjI7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBuOHIgPSBjdXJ2ZS5Gci5uODtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyByMWNzXCIpO1xuICAgIGxldCBzUjFjcyA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUjFjcywgc2VjdGlvbnNSMWNzLCAyKTtcblxuICAgIGNvbnN0IHBsb25rQ29uc3RyYWludHMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICBjb25zdCBwbG9ua0FkZGl0aW9ucyA9IG5ldyBCaWdBcnJheSgpO1xuICAgIGxldCBwbG9ua05WYXJzID0gcjFjcy5uVmFycztcblxuICAgIGNvbnN0IG5QdWJsaWMgPSByMWNzLm5PdXRwdXRzICsgcjFjcy5uUHViSW5wdXRzO1xuXG4gICAgYXdhaXQgcHJvY2Vzc0NvbnN0cmFpbnRzKGN1cnZlLkZyLCByMWNzLCBsb2dnZXIpO1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG4gICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgY3JlYXRlQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDEsIDE0LCAxPDwyMiwgMTw8MjQpO1xuXG5cbiAgICBpZiAocjFjcy5wcmltZSAhPSBjdXJ2ZS5yKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInIxY3MgY3VydmUgZG9lcyBub3QgbWF0Y2ggcG93ZXJzIG9mIHRhdSBjZXJlbW9ueSBjdXJ2ZVwiKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGxldCBjaXJQb3dlciA9IGxvZzIocGxvbmtDb25zdHJhaW50cy5sZW5ndGggLTEpICsxO1xuICAgIGlmIChjaXJQb3dlciA8IDMpIGNpclBvd2VyID0gMzsgICAvLyBBcyB0aGUgdCBwb2x5bm9taWFsIGlzIG4rNSB3ZSBuZWVkIGF0IGxlYXN0IGEgcG93ZXIgb2YgNFxuICAgIGNvbnN0IGRvbWFpblNpemUgPSAyICoqIGNpclBvd2VyO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJQbG9uayBjb25zdHJhaW50czogXCIgKyBwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCk7XG4gICAgaWYgKGNpclBvd2VyID4gcG93ZXIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBjaXJjdWl0IHRvbyBiaWcgZm9yIHRoaXMgcG93ZXIgb2YgdGF1IGNlcmVtb255LiAke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofSA+IDIqKiR7cG93ZXJ9YCk7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBpZiAoIXNlY3Rpb25zUFRhdVsxMl0pIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUG93ZXJzIG9mIHRhdSBpcyBub3QgcHJlcGFyZWQuXCIpO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG5cbiAgICBjb25zdCBMUG9pbnRzID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKnNHMSk7XG4gICAgY29uc3QgbyA9IHNlY3Rpb25zUFRhdVsxMl1bMF0ucCArICgoMiAqKiAoY2lyUG93ZXIpKSAtMSkqc0cxO1xuICAgIGF3YWl0IGZkUFRhdS5yZWFkVG9CdWZmZXIoTFBvaW50cywgMCwgZG9tYWluU2l6ZSpzRzEsIG8pO1xuXG4gICAgY29uc3QgW2sxLCBrMl0gPSBnZXRLMUsyKCk7XG5cbiAgICBjb25zdCB2ayA9IHt9O1xuXG5cbiAgICBhd2FpdCB3cml0ZUFkZGl0aW9ucygzLCBcIkFkZGl0aW9uc1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVXaXRuZXNzTWFwKDQsIDAsIFwiQW1hcFwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVXaXRuZXNzTWFwKDUsIDEsIFwiQm1hcFwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVXaXRuZXNzTWFwKDYsIDIsIFwiQ21hcFwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDcsIDMsIFwiUW1cIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCg4LCA0LCBcIlFsXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoOSwgNSwgXCJRclwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDEwLCA2LCBcIlFvXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoMTEsIDcsIFwiUWNcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlU2lnbWEoMTIsIFwic2lnbWFcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlTHMoMTMsIFwibGFncmFuZ2UgcG9seW5vbWlhbHNcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG4gICAgLy8gV3JpdGUgUFRhdSBwb2ludHNcbiAgICAvLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMTQpO1xuICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKChkb21haW5TaXplKzYpKnNHMSk7XG4gICAgYXdhaXQgZmRQVGF1LnJlYWRUb0J1ZmZlcihidWZmT3V0LCAwLCAoZG9tYWluU2l6ZSs2KSpzRzEsIHNlY3Rpb25zUFRhdVsyXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYnVmZk91dCk7XG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG5cbiAgICBhd2FpdCB3cml0ZUhlYWRlcnMoKTtcblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJTZXR1cCBGaW5pc2hlZFwiKTtcblxuICAgIHJldHVybiA7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ29uc3RyYWludHMoRnIsIHIxY3MsIGxvZ2dlcikge1xuXG4gICAgICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZShsaW5lYXJDb21iKSB7XG4gICAgICAgICAgICBjb25zdCBzcyA9IE9iamVjdC5rZXlzKGxpbmVhckNvbWIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsaW5lYXJDb21iW3NzW2ldXSA9PSAwbikgZGVsZXRlIGxpbmVhckNvbWJbc3NbaV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gam9pbihsaW5lYXJDb21iMSwgaywgbGluZWFyQ29tYjIpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBzIGluIGxpbmVhckNvbWIxKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBGci5tdWwoaywgbGluZWFyQ29tYjFbc10pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1tzXSA9IEZyLmFkZChyZXNbc10sIEZyLm11bChrLCBsaW5lYXJDb21iMVtzXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5lYXJDb21iMikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzW3NdID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3NdID0gbGluZWFyQ29tYjJbc107XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3NdID0gRnIuYWRkKHJlc1tzXSwgbGluZWFyQ29tYjJbc10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vcm1hbGl6ZShyZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlZHVjZUNvZWZzKGxpbmVhckNvbWIsIG1heEMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IHtcbiAgICAgICAgICAgICAgICBrOiBGci56ZXJvLFxuICAgICAgICAgICAgICAgIHM6IFtdLFxuICAgICAgICAgICAgICAgIGNvZWZzOiBbXVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGNzID0gW107XG5cbiAgICAgICAgICAgIGZvciAobGV0IHMgaW4gbGluZWFyQ29tYikge1xuICAgICAgICAgICAgICAgIGlmIChzID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzLmsgPSBGci5hZGQocmVzLmssIGxpbmVhckNvbWJbc10pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZWFyQ29tYltzXSAhPSAwbikge1xuICAgICAgICAgICAgICAgICAgICBjcy5wdXNoKFtOdW1iZXIocyksIGxpbmVhckNvbWJbc11dKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjcy5sZW5ndGggPiBtYXhDKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYzEgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMyID0gY3Muc2hpZnQoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNsID0gYzFbMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc3IgPSBjMlswXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzbyA9IHBsb25rTlZhcnMrKztcbiAgICAgICAgICAgICAgICBjb25zdCBxbSA9IEZyLnplcm87XG4gICAgICAgICAgICAgICAgY29uc3QgcWwgPSBGci5uZWcoYzFbMV0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFyID0gRnIubmVnKGMyWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxbyA9IEZyLm9uZTtcbiAgICAgICAgICAgICAgICBjb25zdCBxYyA9IEZyLnplcm87XG5cbiAgICAgICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goW3NsLCBzciwgc28sIHFtLCBxbCwgcXIsIHFvLCBxY10pO1xuXG4gICAgICAgICAgICAgICAgcGxvbmtBZGRpdGlvbnMucHVzaChbc2wsIHNyLCBjMVsxXSwgYzJbMV1dKTtcblxuICAgICAgICAgICAgICAgIGNzLnB1c2goW3NvLCBGci5vbmVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXMuc1tpXSA9IGNzW2ldWzBdO1xuICAgICAgICAgICAgICAgIHJlcy5jb2Vmc1tpXSA9IGNzW2ldWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKHJlcy5jb2Vmcy5sZW5ndGggPCBtYXhDKSB7XG4gICAgICAgICAgICAgICAgcmVzLnMucHVzaCgwKTtcbiAgICAgICAgICAgICAgICByZXMuY29lZnMucHVzaChGci56ZXJvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBhZGRDb25zdHJhaW50U3VtKGxjKSB7XG4gICAgICAgICAgICBjb25zdCBDID0gcmVkdWNlQ29lZnMobGMsIDMpO1xuICAgICAgICAgICAgY29uc3Qgc2wgPSBDLnNbMF07XG4gICAgICAgICAgICBjb25zdCBzciA9IEMuc1sxXTtcbiAgICAgICAgICAgIGNvbnN0IHNvID0gQy5zWzJdO1xuICAgICAgICAgICAgY29uc3QgcW0gPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcWwgPSBDLmNvZWZzWzBdO1xuICAgICAgICAgICAgY29uc3QgcXIgPSBDLmNvZWZzWzFdO1xuICAgICAgICAgICAgY29uc3QgcW8gPSBDLmNvZWZzWzJdO1xuICAgICAgICAgICAgY29uc3QgcWMgPSBDLms7XG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goW3NsLCBzciwgc28sIHFtLCBxbCwgcXIsIHFvLCBxY10pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYWRkQ29uc3RyYWludE11bChsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgICAgICBjb25zdCBBID0gcmVkdWNlQ29lZnMobGNBLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IEIgPSByZWR1Y2VDb2VmcyhsY0IsIDEpO1xuICAgICAgICAgICAgY29uc3QgQyA9IHJlZHVjZUNvZWZzKGxjQywgMSk7XG5cblxuICAgICAgICAgICAgY29uc3Qgc2wgPSBBLnNbMF07XG4gICAgICAgICAgICBjb25zdCBzciA9IEIuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHNvID0gQy5zWzBdO1xuICAgICAgICAgICAgY29uc3QgcW0gPSBGci5tdWwoQS5jb2Vmc1swXSwgQi5jb2Vmc1swXSk7XG4gICAgICAgICAgICBjb25zdCBxbCA9IEZyLm11bChBLmNvZWZzWzBdLCBCLmspO1xuICAgICAgICAgICAgY29uc3QgcXIgPSBGci5tdWwoQS5rLCBCLmNvZWZzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHFvID0gRnIubmVnKEMuY29lZnNbMF0pO1xuICAgICAgICAgICAgY29uc3QgcWMgPSBGci5zdWIoRnIubXVsKEEuaywgQi5rKSwgQy5rKTtcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRMaW5lYXJDb21iaW5hdGlvblR5cGUobGMpIHtcbiAgICAgICAgICAgIGxldCBrID0gRnIuemVybztcbiAgICAgICAgICAgIGxldCBuID0gMDtcbiAgICAgICAgICAgIGNvbnN0IHNzID0gT2JqZWN0LmtleXMobGMpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsY1tzc1tpXV0gPT0gMG4pIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxjW3NzW2ldXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNzW2ldID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgayA9IEZyLmFkZChrLCBsY1tzc1tpXV0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG4rKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobiA+IDApIHJldHVybiBuLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBpZiAoayAhPSBGci56ZXJvKSByZXR1cm4gXCJrXCI7XG4gICAgICAgICAgICByZXR1cm4gXCIwXCI7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBwcm9jZXNzKGxjQSwgbGNCLCBsY0MpIHtcbiAgICAgICAgICAgIGNvbnN0IGxjdEEgPSBnZXRMaW5lYXJDb21iaW5hdGlvblR5cGUobGNBKTtcbiAgICAgICAgICAgIGNvbnN0IGxjdEIgPSBnZXRMaW5lYXJDb21iaW5hdGlvblR5cGUobGNCKTtcbiAgICAgICAgICAgIGlmICgobGN0QSA9PT0gXCIwXCIpIHx8IChsY3RCID09PSBcIjBcIikpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemUobGNDKTtcbiAgICAgICAgICAgICAgICBhZGRDb25zdHJhaW50U3VtKGxjQyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxjdEEgPT09IFwia1wiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGNDQyA9IGpvaW4obGNCLCBsY0FbMF0sIGxjQyk7XG4gICAgICAgICAgICAgICAgYWRkQ29uc3RyYWludFN1bShsY0NDKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobGN0QiA9PT0gXCJrXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBsY0NDID0gam9pbihsY0EsIGxjQlswXSwgbGNDKTtcbiAgICAgICAgICAgICAgICBhZGRDb25zdHJhaW50U3VtKGxjQ0MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhZGRDb25zdHJhaW50TXVsKGxjQSwgbGNCLCBsY0MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgcyA9IDE7IHMgPD0gblB1YmxpYzsgcysrKSB7XG4gICAgICAgICAgICBjb25zdCBzbCA9IHM7XG4gICAgICAgICAgICBjb25zdCBzciA9IDA7XG4gICAgICAgICAgICBjb25zdCBzbyA9IDA7XG4gICAgICAgICAgICBjb25zdCBxbSA9IEZyLnplcm87XG4gICAgICAgICAgICBjb25zdCBxbCA9IEZyLm9uZTtcbiAgICAgICAgICAgIGNvbnN0IHFyID0gRnIuemVybztcbiAgICAgICAgICAgIGNvbnN0IHFvID0gRnIuemVybztcbiAgICAgICAgICAgIGNvbnN0IHFjID0gRnIuemVybztcblxuICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKFtzbCwgc3IsIHNvLCBxbSwgcWwsIHFyLCBxbywgcWNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGMgPSAwOyBjIDwgcjFjcy5jb25zdHJhaW50cy5sZW5ndGg7IGMrKykge1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpICYmIChjICUgMTAwMDAgPT09IDApKSBsb2dnZXIuZGVidWcoYHByb2Nlc3NpbmcgY29uc3RyYWludHM6ICR7Y30vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgICAgIHByb2Nlc3MoLi4ucjFjcy5jb25zdHJhaW50c1tjXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVdpdG5lc3NNYXAoc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGxvbmtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSk7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVRTWFwKHNlY3Rpb25OdW0sIHBvc0NvbnN0cmFpbnQsIG5hbWUpIHtcbiAgICAgICAgbGV0IFEgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqbjhyKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFEuc2V0KHBsb25rQ29uc3RyYWludHNbaV1bcG9zQ29uc3RyYWludF0sIGkqbjhyKTtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBhd2FpdCB3cml0ZVA0KFEpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICAgICAgUSA9IGF3YWl0IEZyLmJhdGNoRnJvbU1vbnRnb21lcnkoUSk7XG4gICAgICAgIHZrW25hbWVdPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShMUG9pbnRzLCBRLCBsb2dnZXIsIFwibXVsdGlleHAgXCIrbmFtZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQNChidWZmKSB7XG4gICAgICAgIGNvbnN0IHEgPSBhd2FpdCBGci5pZmZ0KGJ1ZmYpO1xuICAgICAgICBjb25zdCBxNCA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpuOHIqNCk7XG4gICAgICAgIHE0LnNldChxLCAwKTtcbiAgICAgICAgY29uc3QgUTQgPSBhd2FpdCBGci5mZnQocTQpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUocSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShRNCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVBZGRpdGlvbnMoc2VjdGlvbk51bSwgbmFtZSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIHNlY3Rpb25OdW0pO1xuICAgICAgICBjb25zdCBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoKDIqNCsyKm44cikpO1xuICAgICAgICBjb25zdCBidWZmT3V0ViA9IG5ldyBEYXRhVmlldyhidWZmT3V0LmJ1ZmZlcik7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwbG9ua0FkZGl0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgYWRkaXRpb249cGxvbmtBZGRpdGlvbnNbaV07XG4gICAgICAgICAgICBsZXQgbz0wO1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKG8sIGFkZGl0aW9uWzBdLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIGJ1ZmZPdXRWLnNldFVpbnQzMihvLCBhZGRpdGlvblsxXSwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICAvLyBUaGUgdmFsdWUgaXMgc3RvcmVkIGluIE1vbnRnb21lcnkuIHN0b3JlZCA9IHYqUlxuICAgICAgICAgICAgLy8gc28gd2hlbiBtb250Z29tZXJ5IG11bHRpcGxpZWQgYnkgdGhlIHdpdG5lc3MsIGl0J3MgcmVzdWx0ID0gdipSKncvUiA9IHYqd1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoYWRkaXRpb25bMl0sIG8pOyBvKz0gbjhyO1xuICAgICAgICAgICAgYnVmZk91dC5zZXQoYWRkaXRpb25bM10sIG8pOyBvKz0gbjhyO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfTogJHtpfS8ke3Bsb25rQWRkaXRpb25zLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVNpZ21hKHNlY3Rpb25OdW0sIG5hbWUpIHtcbiAgICAgICAgY29uc3Qgc2lnbWEgPSBuZXcgQmlnQnVmZmVyKG44cipkb21haW5TaXplKjMpO1xuICAgICAgICBjb25zdCBsYXN0QXBhcmVuY2UgPSAgbmV3IEJpZ0FycmF5KHBsb25rTlZhcnMpO1xuICAgICAgICBjb25zdCBmaXJzdFBvcyA9IG5ldyBCaWdBcnJheShwbG9ua05WYXJzKTtcbiAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxkb21haW5TaXplO2krKykge1xuICAgICAgICAgICAgaWYgKGk8cGxvbmtDb25zdHJhaW50cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMF0sIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVsxXSwgZG9tYWluU2l6ZSArIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEocGxvbmtDb25zdHJhaW50c1tpXVsyXSwgZG9tYWluU2l6ZSoyICsgaSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBkb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBkb21haW5TaXplKjIgKyBpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1tjaXJQb3dlcl0pO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfSBwaGFzZTE6ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBzPTA7IHM8cGxvbmtOVmFyczsgcysrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpcnN0UG9zW3NdICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RBcGFyZW5jZVtzXSwgZmlyc3RQb3Nbc10qbjhyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJWYXJpYWJsZSBub3QgdXNlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKHMlMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX0gcGhhc2UyOiAke3N9LyR7cGxvbmtOVmFyc31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgbGV0IFMxID0gc2lnbWEuc2xpY2UoMCwgZG9tYWluU2l6ZSpuOHIpO1xuICAgICAgICBhd2FpdCB3cml0ZVA0KFMxKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICBsZXQgUzIgPSBzaWdtYS5zbGljZShkb21haW5TaXplKm44ciwgZG9tYWluU2l6ZSpuOHIqMik7XG4gICAgICAgIGF3YWl0IHdyaXRlUDQoUzIpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGxldCBTMyA9IHNpZ21hLnNsaWNlKGRvbWFpblNpemUqbjhyKjIsIGRvbWFpblNpemUqbjhyKjMpO1xuICAgICAgICBhd2FpdCB3cml0ZVA0KFMzKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgICAgICBTMSA9IGF3YWl0IEZyLmJhdGNoRnJvbU1vbnRnb21lcnkoUzEpO1xuICAgICAgICBTMiA9IGF3YWl0IEZyLmJhdGNoRnJvbU1vbnRnb21lcnkoUzIpO1xuICAgICAgICBTMyA9IGF3YWl0IEZyLmJhdGNoRnJvbU1vbnRnb21lcnkoUzMpO1xuXG4gICAgICAgIHZrLlMxPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShMUG9pbnRzLCBTMSwgbG9nZ2VyLCBcIm11bHRpZXhwIFMxXCIpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIHZrLlMyPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShMUG9pbnRzLCBTMiwgbG9nZ2VyLCBcIm11bHRpZXhwIFMyXCIpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIHZrLlMzPSBhd2FpdCBjdXJ2ZS5HMS5tdWx0aUV4cEFmZmluZShMUG9pbnRzLCBTMywgbG9nZ2VyLCBcIm11bHRpZXhwIFMzXCIpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRTaWdtYShzLCBwKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RBcGFyZW5jZVtzXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIGZpcnN0UG9zW3NdID0gcDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RBcGFyZW5jZVtzXSwgcCpuOHIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHY7XG4gICAgICAgICAgICBpZiAocDxkb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdiA9IHc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHA8Mipkb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHYgPSBGci5tdWwodywgazIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdEFwYXJlbmNlW3NdPXY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUxzKHNlY3Rpb25OdW0sIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgY29uc3QgbD1NYXRoLm1heChuUHVibGljLCAxKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykge1xuICAgICAgICAgICAgbGV0IGJ1ZmYgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqbjhyKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KEZyLm9uZSwgaSpuOHIpO1xuICAgICAgICAgICAgYXdhaXQgd3JpdGVQNChidWZmKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9ICR7aX0vJHtsfWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlSGVhZGVycygpIHtcblxuICAgICAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgICAgIC8vLy8vLy8vLy8vXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgMSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKDIpOyAvLyBQbG9ua1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgICAgICAvLyBXcml0ZSB0aGUgUGxvbmsgaGVhZGVyIHNlY3Rpb25cbiAgICAgICAgLy8vLy8vLy8vLy9cblxuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDIpO1xuICAgICAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgICAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVRKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZVIpIC0gMSkgLyA2NCkgKzEpKjg7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhxKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVEsIG44cSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cik7XG4gICAgICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVSLCBuOHIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua05WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoblB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihkb21haW5TaXplKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQWRkaXRpb25zLmxlbmd0aCk7ICAgICAgICAgICAgICAgICAgLy8gZG9tYWluU2l6ZVxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCk7IFxuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShrMSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShrMik7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFtKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RbCkpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUXIpKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFvKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RYykpO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5TMSkpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUzIpKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlMzKSk7XG5cbiAgICAgICAgbGV0IGJYXzI7XG4gICAgICAgIGJYXzIgPSBhd2FpdCBmZFBUYXUucmVhZChzRzIsIHNlY3Rpb25zUFRhdVszXVswXS5wICsgc0cyKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJYXzIpO1xuXG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEsxSzIoKSB7XG4gICAgICAgIGxldCBrMSA9IEZyLnR3bztcbiAgICAgICAgd2hpbGUgKGlzSW5jbHVkZWQoazEsIFtdLCBjaXJQb3dlcikpIEZyLmFkZChrMSwgRnIub25lKTtcbiAgICAgICAgbGV0IGsyID0gRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMiwgW2sxXSwgY2lyUG93ZXIpKSBGci5hZGQoazIsIEZyLm9uZSk7XG4gICAgICAgIHJldHVybiBbazEsIGsyXTtcblxuXG4gICAgICAgIGZ1bmN0aW9uIGlzSW5jbHVkZWQoaywga0FyciwgcG93KSB7XG4gICAgICAgICAgICBjb25zdCBkb21haW5TaXplPSAyKipwb3c7XG4gICAgICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxkb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoRnIuZXEoaywgdykpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxrQXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCBGci5tdWwoa0FycltqXSwgdykpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3Bvd10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBjbGFzcyBQcm9vZiB7XG4gICAgY29uc3RydWN0b3IoY3VydmUsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLmN1cnZlID0gY3VydmU7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuXG4gICAgICAgIHRoaXMucmVzZXRQcm9vZigpO1xuICAgIH1cblxuICAgIHJlc2V0UHJvb2YoKSB7XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHMgPSB7fTtcbiAgICAgICAgdGhpcy5ldmFsdWF0aW9ucyA9IHt9O1xuICAgIH1cblxuICAgIGFkZFBvbHlub21pYWwoa2V5LCBwb2x5bm9taWFsKSB7XG4gICAgICAgIGlmIChrZXkgaW4gdGhpcy5wb2x5bm9taWFscykge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgcHJvb2Y6IHBvbHlub21pYWwuJHtrZXl9IGFscmVhZHkgZXhpc3QgaW4gcHJvb2ZgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBvbHlub21pYWxzW2tleV0gPSBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIGdldFBvbHlub21pYWwoa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiB0aGlzLnBvbHlub21pYWxzKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgcHJvb2Y6IHBvbHlub21pYWwgJHtrZXl9IGRvZXMgbm90IGV4aXN0IGluIHByb29mYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucG9seW5vbWlhbHNba2V5XTtcbiAgICB9XG5cbiAgICBhZGRFdmFsdWF0aW9uKGtleSwgZXZhbHVhdGlvbikge1xuICAgICAgICBpZiAoa2V5IGluIHRoaXMuZXZhbHVhdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYHByb29mOiBldmFsdWF0aW9ucy4ke2tleX0gYWxyZWFkeSBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXZhbHVhdGlvbnNba2V5XSA9IGV2YWx1YXRpb247XG4gICAgfVxuXG4gICAgZ2V0RXZhbHVhdGlvbihrZXkpIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIHRoaXMuZXZhbHVhdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogZXZhbHVhdGlvbiAke2tleX0gZG9lcyBub3QgZXhpc3QgaW4gcHJvb2ZgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5ldmFsdWF0aW9uc1trZXldO1xuICAgIH1cblxuICAgIHRvT2JqZWN0UHJvb2Yoc3BsaXRGaWVsZHMgPSB0cnVlKSB7XG4gICAgICAgIGxldCByZXMgPSBzcGxpdEZpZWxkcyA/IHtwb2x5bm9taWFsczoge30sIGV2YWx1YXRpb25zOiB7fX0gOiB7fTtcblxuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLnBvbHlub21pYWxzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuY3VydmUuRzEudG9PYmplY3QodGhpcy5wb2x5bm9taWFsc1trZXldKTtcbiAgICAgICAgICAgIGlmKHNwbGl0RmllbGRzKSB7XG4gICAgICAgICAgICAgICAgcmVzLnBvbHlub21pYWxzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5ldmFsdWF0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmN1cnZlLkZyLnRvT2JqZWN0KHRoaXMuZXZhbHVhdGlvbnNba2V5XSk7XG4gICAgICAgICAgICBpZihzcGxpdEZpZWxkcykge1xuICAgICAgICAgICAgICAgIHJlcy5ldmFsdWF0aW9uc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdFByb29mKG9iamVjdFByb29mKSB7XG4gICAgICAgIHRoaXMucmVzZXRQcm9vZigpO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKG9iamVjdFByb29mLnBvbHlub21pYWxzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBvbHlub21pYWxzW2tleV0gPSB0aGlzLmN1cnZlLkcxLmZyb21PYmplY3Qob2JqZWN0UHJvb2YucG9seW5vbWlhbHNba2V5XSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKG9iamVjdFByb29mLmV2YWx1YXRpb25zKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICB0aGlzLmV2YWx1YXRpb25zW2tleV0gPSB0aGlzLmN1cnZlLkZyLmZyb21PYmplY3Qob2JqZWN0UHJvb2YuZXZhbHVhdGlvbnNba2V5XSk7XG4gICAgICAgIH0pO1xuICAgIH1cbn0iLCIvKipcbiAqIFtqcy1zaGEzXXtAbGluayBodHRwczovL2dpdGh1Yi5jb20vZW1uMTc4L2pzLXNoYTN9XG4gKlxuICogQHZlcnNpb24gMC44LjBcbiAqIEBhdXRob3IgQ2hlbiwgWWktQ3l1YW4gW2VtbjE3OEBnbWFpbC5jb21dXG4gKiBAY29weXJpZ2h0IENoZW4sIFlpLUN5dWFuIDIwMTUtMjAxOFxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbi8qanNsaW50IGJpdHdpc2U6IHRydWUgKi9cbihmdW5jdGlvbiAoKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICB2YXIgSU5QVVRfRVJST1IgPSAnaW5wdXQgaXMgaW52YWxpZCB0eXBlJztcbiAgdmFyIEZJTkFMSVpFX0VSUk9SID0gJ2ZpbmFsaXplIGFscmVhZHkgY2FsbGVkJztcbiAgdmFyIFdJTkRPVyA9IHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnO1xuICB2YXIgcm9vdCA9IFdJTkRPVyA/IHdpbmRvdyA6IHt9O1xuICBpZiAocm9vdC5KU19TSEEzX05PX1dJTkRPVykge1xuICAgIFdJTkRPVyA9IGZhbHNlO1xuICB9XG4gIHZhciBXRUJfV09SS0VSID0gIVdJTkRPVyAmJiB0eXBlb2Ygc2VsZiA9PT0gJ29iamVjdCc7XG4gIHZhciBOT0RFX0pTID0gIXJvb3QuSlNfU0hBM19OT19OT0RFX0pTICYmIHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiBwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZTtcbiAgaWYgKE5PREVfSlMpIHtcbiAgICByb290ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFdFQl9XT1JLRVIpIHtcbiAgICByb290ID0gc2VsZjtcbiAgfVxuICB2YXIgQ09NTU9OX0pTID0gIXJvb3QuSlNfU0hBM19OT19DT01NT05fSlMgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHM7XG4gIHZhciBBTUQgPSB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQ7XG4gIHZhciBBUlJBWV9CVUZGRVIgPSAhcm9vdC5KU19TSEEzX05PX0FSUkFZX0JVRkZFUiAmJiB0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnO1xuICB2YXIgSEVYX0NIQVJTID0gJzAxMjM0NTY3ODlhYmNkZWYnLnNwbGl0KCcnKTtcbiAgdmFyIFNIQUtFX1BBRERJTkcgPSBbMzEsIDc5MzYsIDIwMzE2MTYsIDUyMDA5MzY5Nl07XG4gIHZhciBDU0hBS0VfUEFERElORyA9IFs0LCAxMDI0LCAyNjIxNDQsIDY3MTA4ODY0XTtcbiAgdmFyIEtFQ0NBS19QQURESU5HID0gWzEsIDI1NiwgNjU1MzYsIDE2Nzc3MjE2XTtcbiAgdmFyIFBBRERJTkcgPSBbNiwgMTUzNiwgMzkzMjE2LCAxMDA2NjMyOTZdO1xuICB2YXIgU0hJRlQgPSBbMCwgOCwgMTYsIDI0XTtcbiAgdmFyIFJDID0gWzEsIDAsIDMyODk4LCAwLCAzMjkwNiwgMjE0NzQ4MzY0OCwgMjE0NzUxNjQxNiwgMjE0NzQ4MzY0OCwgMzI5MDcsIDAsIDIxNDc0ODM2NDksXG4gICAgMCwgMjE0NzUxNjU0NSwgMjE0NzQ4MzY0OCwgMzI3NzcsIDIxNDc0ODM2NDgsIDEzOCwgMCwgMTM2LCAwLCAyMTQ3NTE2NDI1LCAwLFxuICAgIDIxNDc0ODM2NTgsIDAsIDIxNDc1MTY1NTUsIDAsIDEzOSwgMjE0NzQ4MzY0OCwgMzI5MDUsIDIxNDc0ODM2NDgsIDMyNzcxLFxuICAgIDIxNDc0ODM2NDgsIDMyNzcwLCAyMTQ3NDgzNjQ4LCAxMjgsIDIxNDc0ODM2NDgsIDMyNzc4LCAwLCAyMTQ3NDgzNjU4LCAyMTQ3NDgzNjQ4LFxuICAgIDIxNDc1MTY1NDUsIDIxNDc0ODM2NDgsIDMyODk2LCAyMTQ3NDgzNjQ4LCAyMTQ3NDgzNjQ5LCAwLCAyMTQ3NTE2NDI0LCAyMTQ3NDgzNjQ4XTtcbiAgdmFyIEJJVFMgPSBbMjI0LCAyNTYsIDM4NCwgNTEyXTtcbiAgdmFyIFNIQUtFX0JJVFMgPSBbMTI4LCAyNTZdO1xuICB2YXIgT1VUUFVUX1RZUEVTID0gWydoZXgnLCAnYnVmZmVyJywgJ2FycmF5QnVmZmVyJywgJ2FycmF5JywgJ2RpZ2VzdCddO1xuICB2YXIgQ1NIQUtFX0JZVEVQQUQgPSB7XG4gICAgJzEyOCc6IDE2OCxcbiAgICAnMjU2JzogMTM2XG4gIH07XG5cbiAgaWYgKHJvb3QuSlNfU0hBM19OT19OT0RFX0pTIHx8ICFBcnJheS5pc0FycmF5KSB7XG4gICAgQXJyYXkuaXNBcnJheSA9IGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbiAgICB9O1xuICB9XG5cbiAgaWYgKEFSUkFZX0JVRkZFUiAmJiAocm9vdC5KU19TSEEzX05PX0FSUkFZX0JVRkZFUl9JU19WSUVXIHx8ICFBcnJheUJ1ZmZlci5pc1ZpZXcpKSB7XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3ID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iai5idWZmZXIgJiYgb2JqLmJ1ZmZlci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXI7XG4gICAgfTtcbiAgfVxuXG4gIHZhciBjcmVhdGVPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZywgb3V0cHV0VHlwZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgICAgcmV0dXJuIG5ldyBLZWNjYWsoYml0cywgcGFkZGluZywgYml0cykudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlU2hha2VPdXRwdXRNZXRob2QgPSBmdW5jdGlvbiAoYml0cywgcGFkZGluZywgb3V0cHV0VHlwZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAobWVzc2FnZSwgb3V0cHV0Qml0cykge1xuICAgICAgcmV0dXJuIG5ldyBLZWNjYWsoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cykudXBkYXRlKG1lc3NhZ2UpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlQ3NoYWtlT3V0cHV0TWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcsIG91dHB1dFR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG1lc3NhZ2UsIG91dHB1dEJpdHMsIG4sIHMpIHtcbiAgICAgIHJldHVybiBtZXRob2RzWydjc2hha2UnICsgYml0c10udXBkYXRlKG1lc3NhZ2UsIG91dHB1dEJpdHMsIG4sIHMpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlS21hY091dHB1dE1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nLCBvdXRwdXRUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChrZXksIG1lc3NhZ2UsIG91dHB1dEJpdHMsIHMpIHtcbiAgICAgIHJldHVybiBtZXRob2RzWydrbWFjJyArIGJpdHNdLnVwZGF0ZShrZXksIG1lc3NhZ2UsIG91dHB1dEJpdHMsIHMpW291dHB1dFR5cGVdKCk7XG4gICAgfTtcbiAgfTtcblxuICB2YXIgY3JlYXRlT3V0cHV0TWV0aG9kcyA9IGZ1bmN0aW9uIChtZXRob2QsIGNyZWF0ZU1ldGhvZCwgYml0cywgcGFkZGluZykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgT1VUUFVUX1RZUEVTLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgdHlwZSA9IE9VVFBVVF9UWVBFU1tpXTtcbiAgICAgIG1ldGhvZFt0eXBlXSA9IGNyZWF0ZU1ldGhvZChiaXRzLCBwYWRkaW5nLCB0eXBlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1ldGhvZDtcbiAgfTtcblxuICB2YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIG5ldyBLZWNjYWsoYml0cywgcGFkZGluZywgYml0cyk7XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKCkudXBkYXRlKG1lc3NhZ2UpO1xuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZU91dHB1dE1ldGhvZHMobWV0aG9kLCBjcmVhdGVPdXRwdXRNZXRob2QsIGJpdHMsIHBhZGRpbmcpO1xuICB9O1xuXG4gIHZhciBjcmVhdGVTaGFrZU1ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nKSB7XG4gICAgdmFyIG1ldGhvZCA9IGNyZWF0ZVNoYWtlT3V0cHV0TWV0aG9kKGJpdHMsIHBhZGRpbmcsICdoZXgnKTtcbiAgICBtZXRob2QuY3JlYXRlID0gZnVuY3Rpb24gKG91dHB1dEJpdHMpIHtcbiAgICAgIHJldHVybiBuZXcgS2VjY2FrKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpO1xuICAgIH07XG4gICAgbWV0aG9kLnVwZGF0ZSA9IGZ1bmN0aW9uIChtZXNzYWdlLCBvdXRwdXRCaXRzKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZShvdXRwdXRCaXRzKS51cGRhdGUobWVzc2FnZSk7XG4gICAgfTtcbiAgICByZXR1cm4gY3JlYXRlT3V0cHV0TWV0aG9kcyhtZXRob2QsIGNyZWF0ZVNoYWtlT3V0cHV0TWV0aG9kLCBiaXRzLCBwYWRkaW5nKTtcbiAgfTtcblxuICB2YXIgY3JlYXRlQ3NoYWtlTWV0aG9kID0gZnVuY3Rpb24gKGJpdHMsIHBhZGRpbmcpIHtcbiAgICB2YXIgdyA9IENTSEFLRV9CWVRFUEFEW2JpdHNdO1xuICAgIHZhciBtZXRob2QgPSBjcmVhdGVDc2hha2VPdXRwdXRNZXRob2QoYml0cywgcGFkZGluZywgJ2hleCcpO1xuICAgIG1ldGhvZC5jcmVhdGUgPSBmdW5jdGlvbiAob3V0cHV0Qml0cywgbiwgcykge1xuICAgICAgaWYgKCFuICYmICFzKSB7XG4gICAgICAgIHJldHVybiBtZXRob2RzWydzaGFrZScgKyBiaXRzXS5jcmVhdGUob3V0cHV0Qml0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IEtlY2NhayhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKS5ieXRlcGFkKFtuLCBzXSwgdyk7XG4gICAgICB9XG4gICAgfTtcbiAgICBtZXRob2QudXBkYXRlID0gZnVuY3Rpb24gKG1lc3NhZ2UsIG91dHB1dEJpdHMsIG4sIHMpIHtcbiAgICAgIHJldHVybiBtZXRob2QuY3JlYXRlKG91dHB1dEJpdHMsIG4sIHMpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIHJldHVybiBjcmVhdGVPdXRwdXRNZXRob2RzKG1ldGhvZCwgY3JlYXRlQ3NoYWtlT3V0cHV0TWV0aG9kLCBiaXRzLCBwYWRkaW5nKTtcbiAgfTtcblxuICB2YXIgY3JlYXRlS21hY01ldGhvZCA9IGZ1bmN0aW9uIChiaXRzLCBwYWRkaW5nKSB7XG4gICAgdmFyIHcgPSBDU0hBS0VfQllURVBBRFtiaXRzXTtcbiAgICB2YXIgbWV0aG9kID0gY3JlYXRlS21hY091dHB1dE1ldGhvZChiaXRzLCBwYWRkaW5nLCAnaGV4Jyk7XG4gICAgbWV0aG9kLmNyZWF0ZSA9IGZ1bmN0aW9uIChrZXksIG91dHB1dEJpdHMsIHMpIHtcbiAgICAgIHJldHVybiBuZXcgS21hYyhiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKS5ieXRlcGFkKFsnS01BQycsIHNdLCB3KS5ieXRlcGFkKFtrZXldLCB3KTtcbiAgICB9O1xuICAgIG1ldGhvZC51cGRhdGUgPSBmdW5jdGlvbiAoa2V5LCBtZXNzYWdlLCBvdXRwdXRCaXRzLCBzKSB7XG4gICAgICByZXR1cm4gbWV0aG9kLmNyZWF0ZShrZXksIG91dHB1dEJpdHMsIHMpLnVwZGF0ZShtZXNzYWdlKTtcbiAgICB9O1xuICAgIHJldHVybiBjcmVhdGVPdXRwdXRNZXRob2RzKG1ldGhvZCwgY3JlYXRlS21hY091dHB1dE1ldGhvZCwgYml0cywgcGFkZGluZyk7XG4gIH07XG5cbiAgdmFyIGFsZ29yaXRobXMgPSBbXG4gICAgeyBuYW1lOiAna2VjY2FrJywgcGFkZGluZzogS0VDQ0FLX1BBRERJTkcsIGJpdHM6IEJJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlTWV0aG9kIH0sXG4gICAgeyBuYW1lOiAnc2hhMycsIHBhZGRpbmc6IFBBRERJTkcsIGJpdHM6IEJJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlTWV0aG9kIH0sXG4gICAgeyBuYW1lOiAnc2hha2UnLCBwYWRkaW5nOiBTSEFLRV9QQURESU5HLCBiaXRzOiBTSEFLRV9CSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZVNoYWtlTWV0aG9kIH0sXG4gICAgeyBuYW1lOiAnY3NoYWtlJywgcGFkZGluZzogQ1NIQUtFX1BBRERJTkcsIGJpdHM6IFNIQUtFX0JJVFMsIGNyZWF0ZU1ldGhvZDogY3JlYXRlQ3NoYWtlTWV0aG9kIH0sXG4gICAgeyBuYW1lOiAna21hYycsIHBhZGRpbmc6IENTSEFLRV9QQURESU5HLCBiaXRzOiBTSEFLRV9CSVRTLCBjcmVhdGVNZXRob2Q6IGNyZWF0ZUttYWNNZXRob2QgfVxuICBdO1xuXG4gIHZhciBtZXRob2RzID0ge30sIG1ldGhvZE5hbWVzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGdvcml0aG1zLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIGFsZ29yaXRobSA9IGFsZ29yaXRobXNbaV07XG4gICAgdmFyIGJpdHMgPSBhbGdvcml0aG0uYml0cztcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJpdHMubGVuZ3RoOyArK2opIHtcbiAgICAgIHZhciBtZXRob2ROYW1lID0gYWxnb3JpdGhtLm5hbWUgKyAnXycgKyBiaXRzW2pdO1xuICAgICAgbWV0aG9kTmFtZXMucHVzaChtZXRob2ROYW1lKTtcbiAgICAgIG1ldGhvZHNbbWV0aG9kTmFtZV0gPSBhbGdvcml0aG0uY3JlYXRlTWV0aG9kKGJpdHNbal0sIGFsZ29yaXRobS5wYWRkaW5nKTtcbiAgICAgIGlmIChhbGdvcml0aG0ubmFtZSAhPT0gJ3NoYTMnKSB7XG4gICAgICAgIHZhciBuZXdNZXRob2ROYW1lID0gYWxnb3JpdGhtLm5hbWUgKyBiaXRzW2pdO1xuICAgICAgICBtZXRob2ROYW1lcy5wdXNoKG5ld01ldGhvZE5hbWUpO1xuICAgICAgICBtZXRob2RzW25ld01ldGhvZE5hbWVdID0gbWV0aG9kc1ttZXRob2ROYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBLZWNjYWsoYml0cywgcGFkZGluZywgb3V0cHV0Qml0cykge1xuICAgIHRoaXMuYmxvY2tzID0gW107XG4gICAgdGhpcy5zID0gW107XG4gICAgdGhpcy5wYWRkaW5nID0gcGFkZGluZztcbiAgICB0aGlzLm91dHB1dEJpdHMgPSBvdXRwdXRCaXRzO1xuICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgIHRoaXMuZmluYWxpemVkID0gZmFsc2U7XG4gICAgdGhpcy5ibG9jayA9IDA7XG4gICAgdGhpcy5zdGFydCA9IDA7XG4gICAgdGhpcy5ibG9ja0NvdW50ID0gKDE2MDAgLSAoYml0cyA8PCAxKSkgPj4gNTtcbiAgICB0aGlzLmJ5dGVDb3VudCA9IHRoaXMuYmxvY2tDb3VudCA8PCAyO1xuICAgIHRoaXMub3V0cHV0QmxvY2tzID0gb3V0cHV0Qml0cyA+PiA1O1xuICAgIHRoaXMuZXh0cmFCeXRlcyA9IChvdXRwdXRCaXRzICYgMzEpID4+IDM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUwOyArK2kpIHtcbiAgICAgIHRoaXMuc1tpXSA9IDA7XG4gICAgfVxuICB9XG5cbiAgS2VjY2FrLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAobWVzc2FnZSkge1xuICAgIGlmICh0aGlzLmZpbmFsaXplZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKEZJTkFMSVpFX0VSUk9SKTtcbiAgICB9XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBtZXNzYWdlO1xuICAgIGlmICh0eXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGlmIChtZXNzYWdlID09PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgICAgfSBlbHNlIGlmIChBUlJBWV9CVUZGRVIgJiYgbWVzc2FnZS5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBtZXNzYWdlID0gbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkobWVzc2FnZSkpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KG1lc3NhZ2UpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKElOUFVUX0VSUk9SKTtcbiAgICAgIH1cbiAgICAgIG5vdFN0cmluZyA9IHRydWU7XG4gICAgfVxuICAgIHZhciBibG9ja3MgPSB0aGlzLmJsb2NrcywgYnl0ZUNvdW50ID0gdGhpcy5ieXRlQ291bnQsIGxlbmd0aCA9IG1lc3NhZ2UubGVuZ3RoLFxuICAgICAgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgaW5kZXggPSAwLCBzID0gdGhpcy5zLCBpLCBjb2RlO1xuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5yZXNldCkge1xuICAgICAgICB0aGlzLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIGJsb2Nrc1swXSA9IHRoaXMuYmxvY2s7XG4gICAgICAgIGZvciAoaSA9IDE7IGkgPCBibG9ja0NvdW50ICsgMTsgKytpKSB7XG4gICAgICAgICAgYmxvY2tzW2ldID0gMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG5vdFN0cmluZykge1xuICAgICAgICBmb3IgKGkgPSB0aGlzLnN0YXJ0OyBpbmRleCA8IGxlbmd0aCAmJiBpIDwgYnl0ZUNvdW50OyArK2luZGV4KSB7XG4gICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gbWVzc2FnZVtpbmRleF0gPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoaSA9IHRoaXMuc3RhcnQ7IGluZGV4IDwgbGVuZ3RoICYmIGkgPCBieXRlQ291bnQ7ICsraW5kZXgpIHtcbiAgICAgICAgICBjb2RlID0gbWVzc2FnZS5jaGFyQ29kZUF0KGluZGV4KTtcbiAgICAgICAgICBpZiAoY29kZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9IGNvZGUgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweGMwIHwgKGNvZGUgPj4gNikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweGUwIHwgKGNvZGUgPj4gMTIpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICAgIGJsb2Nrc1tpID4+IDJdIHw9ICgweDgwIHwgKChjb2RlID4+IDYpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoY29kZSAmIDB4M2YpKSA8PCBTSElGVFtpKysgJiAzXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29kZSA9IDB4MTAwMDAgKyAoKChjb2RlICYgMHgzZmYpIDw8IDEwKSB8IChtZXNzYWdlLmNoYXJDb2RlQXQoKytpbmRleCkgJiAweDNmZikpO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ZjAgfCAoY29kZSA+PiAxOCkpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gMTIpICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgICAgYmxvY2tzW2kgPj4gMl0gfD0gKDB4ODAgfCAoKGNvZGUgPj4gNikgJiAweDNmKSkgPDwgU0hJRlRbaSsrICYgM107XG4gICAgICAgICAgICBibG9ja3NbaSA+PiAyXSB8PSAoMHg4MCB8IChjb2RlICYgMHgzZikpIDw8IFNISUZUW2krKyAmIDNdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5sYXN0Qnl0ZUluZGV4ID0gaTtcbiAgICAgIGlmIChpID49IGJ5dGVDb3VudCkge1xuICAgICAgICB0aGlzLnN0YXJ0ID0gaSAtIGJ5dGVDb3VudDtcbiAgICAgICAgdGhpcy5ibG9jayA9IGJsb2Nrc1tibG9ja0NvdW50XTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2NrQ291bnQ7ICsraSkge1xuICAgICAgICAgIHNbaV0gXj0gYmxvY2tzW2ldO1xuICAgICAgICB9XG4gICAgICAgIGYocyk7XG4gICAgICAgIHRoaXMucmVzZXQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydCA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gKHgsIHJpZ2h0KSB7XG4gICAgdmFyIG8gPSB4ICYgMjU1LCBuID0gMTtcbiAgICB2YXIgYnl0ZXMgPSBbb107XG4gICAgeCA9IHggPj4gODtcbiAgICBvID0geCAmIDI1NTtcbiAgICB3aGlsZSAobyA+IDApIHtcbiAgICAgIGJ5dGVzLnVuc2hpZnQobyk7XG4gICAgICB4ID0geCA+PiA4O1xuICAgICAgbyA9IHggJiAyNTU7XG4gICAgICArK247XG4gICAgfVxuICAgIGlmIChyaWdodCkge1xuICAgICAgYnl0ZXMucHVzaChuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYnl0ZXMudW5zaGlmdChuKTtcbiAgICB9XG4gICAgdGhpcy51cGRhdGUoYnl0ZXMpO1xuICAgIHJldHVybiBieXRlcy5sZW5ndGg7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5lbmNvZGVTdHJpbmcgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgdmFyIG5vdFN0cmluZywgdHlwZSA9IHR5cGVvZiBzdHI7XG4gICAgaWYgKHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKHN0ciA9PT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgIH0gZWxzZSBpZiAoQVJSQVlfQlVGRkVSICYmIHN0ci5jb25zdHJ1Y3RvciA9PT0gQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICBzdHIgPSBuZXcgVWludDhBcnJheShzdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KHN0cikpIHtcbiAgICAgICAgICBpZiAoIUFSUkFZX0JVRkZFUiB8fCAhQXJyYXlCdWZmZXIuaXNWaWV3KHN0cikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihJTlBVVF9FUlJPUik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSU5QVVRfRVJST1IpO1xuICAgICAgfVxuICAgICAgbm90U3RyaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgdmFyIGJ5dGVzID0gMCwgbGVuZ3RoID0gc3RyLmxlbmd0aDtcbiAgICBpZiAobm90U3RyaW5nKSB7XG4gICAgICBieXRlcyA9IGxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNvZGUgPCAweDgwKSB7XG4gICAgICAgICAgYnl0ZXMgKz0gMTtcbiAgICAgICAgfSBlbHNlIGlmIChjb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICBieXRlcyArPSAyO1xuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPCAweGQ4MDAgfHwgY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICBieXRlcyArPSAzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvZGUgPSAweDEwMDAwICsgKCgoY29kZSAmIDB4M2ZmKSA8PCAxMCkgfCAoc3RyLmNoYXJDb2RlQXQoKytpKSAmIDB4M2ZmKSk7XG4gICAgICAgICAgYnl0ZXMgKz0gNDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBieXRlcyArPSB0aGlzLmVuY29kZShieXRlcyAqIDgpO1xuICAgIHRoaXMudXBkYXRlKHN0cik7XG4gICAgcmV0dXJuIGJ5dGVzO1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuYnl0ZXBhZCA9IGZ1bmN0aW9uIChzdHJzLCB3KSB7XG4gICAgdmFyIGJ5dGVzID0gdGhpcy5lbmNvZGUodyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJzLmxlbmd0aDsgKytpKSB7XG4gICAgICBieXRlcyArPSB0aGlzLmVuY29kZVN0cmluZyhzdHJzW2ldKTtcbiAgICB9XG4gICAgdmFyIHBhZGRpbmdCeXRlcyA9IHcgLSBieXRlcyAlIHc7XG4gICAgdmFyIHplcm9zID0gW107XG4gICAgemVyb3MubGVuZ3RoID0gcGFkZGluZ0J5dGVzO1xuICAgIHRoaXMudXBkYXRlKHplcm9zKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLmZpbmFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmZpbmFsaXplZCA9IHRydWU7XG4gICAgdmFyIGJsb2NrcyA9IHRoaXMuYmxvY2tzLCBpID0gdGhpcy5sYXN0Qnl0ZUluZGV4LCBibG9ja0NvdW50ID0gdGhpcy5ibG9ja0NvdW50LCBzID0gdGhpcy5zO1xuICAgIGJsb2Nrc1tpID4+IDJdIHw9IHRoaXMucGFkZGluZ1tpICYgM107XG4gICAgaWYgKHRoaXMubGFzdEJ5dGVJbmRleCA9PT0gdGhpcy5ieXRlQ291bnQpIHtcbiAgICAgIGJsb2Nrc1swXSA9IGJsb2Nrc1tibG9ja0NvdW50XTtcbiAgICAgIGZvciAoaSA9IDE7IGkgPCBibG9ja0NvdW50ICsgMTsgKytpKSB7XG4gICAgICAgIGJsb2Nrc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGJsb2Nrc1tibG9ja0NvdW50IC0gMV0gfD0gMHg4MDAwMDAwMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgYmxvY2tDb3VudDsgKytpKSB7XG4gICAgICBzW2ldIF49IGJsb2Nrc1tpXTtcbiAgICB9XG4gICAgZihzKTtcbiAgfTtcblxuICBLZWNjYWsucHJvdG90eXBlLnRvU3RyaW5nID0gS2VjY2FrLnByb3RvdHlwZS5oZXggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5maW5hbGl6ZSgpO1xuXG4gICAgdmFyIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnMsIG91dHB1dEJsb2NrcyA9IHRoaXMub3V0cHV0QmxvY2tzLFxuICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xuICAgIHZhciBoZXggPSAnJywgYmxvY2s7XG4gICAgd2hpbGUgKGogPCBvdXRwdXRCbG9ja3MpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50ICYmIGogPCBvdXRwdXRCbG9ja3M7ICsraSwgKytqKSB7XG4gICAgICAgIGJsb2NrID0gc1tpXTtcbiAgICAgICAgaGV4ICs9IEhFWF9DSEFSU1soYmxvY2sgPj4gNCkgJiAweDBGXSArIEhFWF9DSEFSU1tibG9jayAmIDB4MEZdICtcbiAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDEyKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiA4KSAmIDB4MEZdICtcbiAgICAgICAgICBIRVhfQ0hBUlNbKGJsb2NrID4+IDIwKSAmIDB4MEZdICsgSEVYX0NIQVJTWyhibG9jayA+PiAxNikgJiAweDBGXSArXG4gICAgICAgICAgSEVYX0NIQVJTWyhibG9jayA+PiAyOCkgJiAweDBGXSArIEhFWF9DSEFSU1soYmxvY2sgPj4gMjQpICYgMHgwRl07XG4gICAgICB9XG4gICAgICBpZiAoaiAlIGJsb2NrQ291bnQgPT09IDApIHtcbiAgICAgICAgZihzKTtcbiAgICAgICAgaSA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChleHRyYUJ5dGVzKSB7XG4gICAgICBibG9jayA9IHNbaV07XG4gICAgICBoZXggKz0gSEVYX0NIQVJTWyhibG9jayA+PiA0KSAmIDB4MEZdICsgSEVYX0NIQVJTW2Jsb2NrICYgMHgwRl07XG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDEpIHtcbiAgICAgICAgaGV4ICs9IEhFWF9DSEFSU1soYmxvY2sgPj4gMTIpICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDgpICYgMHgwRl07XG4gICAgICB9XG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDIpIHtcbiAgICAgICAgaGV4ICs9IEhFWF9DSEFSU1soYmxvY2sgPj4gMjApICYgMHgwRl0gKyBIRVhfQ0hBUlNbKGJsb2NrID4+IDE2KSAmIDB4MEZdO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGV4O1xuICB9O1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5maW5hbGl6ZSgpO1xuXG4gICAgdmFyIGJsb2NrQ291bnQgPSB0aGlzLmJsb2NrQ291bnQsIHMgPSB0aGlzLnMsIG91dHB1dEJsb2NrcyA9IHRoaXMub3V0cHV0QmxvY2tzLFxuICAgICAgZXh0cmFCeXRlcyA9IHRoaXMuZXh0cmFCeXRlcywgaSA9IDAsIGogPSAwO1xuICAgIHZhciBieXRlcyA9IHRoaXMub3V0cHV0Qml0cyA+PiAzO1xuICAgIHZhciBidWZmZXI7XG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigob3V0cHV0QmxvY2tzICsgMSkgPDwgMik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcyk7XG4gICAgfVxuICAgIHZhciBhcnJheSA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICAgIHdoaWxlIChqIDwgb3V0cHV0QmxvY2tzKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYmxvY2tDb3VudCAmJiBqIDwgb3V0cHV0QmxvY2tzOyArK2ksICsraikge1xuICAgICAgICBhcnJheVtqXSA9IHNbaV07XG4gICAgICB9XG4gICAgICBpZiAoaiAlIGJsb2NrQ291bnQgPT09IDApIHtcbiAgICAgICAgZihzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcbiAgICAgIGFycmF5W2ldID0gc1tpXTtcbiAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5zbGljZSgwLCBieXRlcyk7XG4gICAgfVxuICAgIHJldHVybiBidWZmZXI7XG4gIH07XG5cbiAgS2VjY2FrLnByb3RvdHlwZS5idWZmZXIgPSBLZWNjYWsucHJvdG90eXBlLmFycmF5QnVmZmVyO1xuXG4gIEtlY2Nhay5wcm90b3R5cGUuZGlnZXN0ID0gS2VjY2FrLnByb3RvdHlwZS5hcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZpbmFsaXplKCk7XG5cbiAgICB2YXIgYmxvY2tDb3VudCA9IHRoaXMuYmxvY2tDb3VudCwgcyA9IHRoaXMucywgb3V0cHV0QmxvY2tzID0gdGhpcy5vdXRwdXRCbG9ja3MsXG4gICAgICBleHRyYUJ5dGVzID0gdGhpcy5leHRyYUJ5dGVzLCBpID0gMCwgaiA9IDA7XG4gICAgdmFyIGFycmF5ID0gW10sIG9mZnNldCwgYmxvY2s7XG4gICAgd2hpbGUgKGogPCBvdXRwdXRCbG9ja3MpIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBibG9ja0NvdW50ICYmIGogPCBvdXRwdXRCbG9ja3M7ICsraSwgKytqKSB7XG4gICAgICAgIG9mZnNldCA9IGogPDwgMjtcbiAgICAgICAgYmxvY2sgPSBzW2ldO1xuICAgICAgICBhcnJheVtvZmZzZXRdID0gYmxvY2sgJiAweEZGO1xuICAgICAgICBhcnJheVtvZmZzZXQgKyAxXSA9IChibG9jayA+PiA4KSAmIDB4RkY7XG4gICAgICAgIGFycmF5W29mZnNldCArIDJdID0gKGJsb2NrID4+IDE2KSAmIDB4RkY7XG4gICAgICAgIGFycmF5W29mZnNldCArIDNdID0gKGJsb2NrID4+IDI0KSAmIDB4RkY7XG4gICAgICB9XG4gICAgICBpZiAoaiAlIGJsb2NrQ291bnQgPT09IDApIHtcbiAgICAgICAgZihzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGV4dHJhQnl0ZXMpIHtcbiAgICAgIG9mZnNldCA9IGogPDwgMjtcbiAgICAgIGJsb2NrID0gc1tpXTtcbiAgICAgIGFycmF5W29mZnNldF0gPSBibG9jayAmIDB4RkY7XG4gICAgICBpZiAoZXh0cmFCeXRlcyA+IDEpIHtcbiAgICAgICAgYXJyYXlbb2Zmc2V0ICsgMV0gPSAoYmxvY2sgPj4gOCkgJiAweEZGO1xuICAgICAgfVxuICAgICAgaWYgKGV4dHJhQnl0ZXMgPiAyKSB7XG4gICAgICAgIGFycmF5W29mZnNldCArIDJdID0gKGJsb2NrID4+IDE2KSAmIDB4RkY7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheTtcbiAgfTtcblxuICBmdW5jdGlvbiBLbWFjKGJpdHMsIHBhZGRpbmcsIG91dHB1dEJpdHMpIHtcbiAgICBLZWNjYWsuY2FsbCh0aGlzLCBiaXRzLCBwYWRkaW5nLCBvdXRwdXRCaXRzKTtcbiAgfVxuXG4gIEttYWMucHJvdG90eXBlID0gbmV3IEtlY2NhaygpO1xuXG4gIEttYWMucHJvdG90eXBlLmZpbmFsaXplID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZW5jb2RlKHRoaXMub3V0cHV0Qml0cywgdHJ1ZSk7XG4gICAgcmV0dXJuIEtlY2Nhay5wcm90b3R5cGUuZmluYWxpemUuY2FsbCh0aGlzKTtcbiAgfTtcblxuICB2YXIgZiA9IGZ1bmN0aW9uIChzKSB7XG4gICAgdmFyIGgsIGwsIG4sIGMwLCBjMSwgYzIsIGMzLCBjNCwgYzUsIGM2LCBjNywgYzgsIGM5LFxuICAgICAgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNSwgYjYsIGI3LCBiOCwgYjksIGIxMCwgYjExLCBiMTIsIGIxMywgYjE0LCBiMTUsIGIxNiwgYjE3LFxuICAgICAgYjE4LCBiMTksIGIyMCwgYjIxLCBiMjIsIGIyMywgYjI0LCBiMjUsIGIyNiwgYjI3LCBiMjgsIGIyOSwgYjMwLCBiMzEsIGIzMiwgYjMzLFxuICAgICAgYjM0LCBiMzUsIGIzNiwgYjM3LCBiMzgsIGIzOSwgYjQwLCBiNDEsIGI0MiwgYjQzLCBiNDQsIGI0NSwgYjQ2LCBiNDcsIGI0OCwgYjQ5O1xuICAgIGZvciAobiA9IDA7IG4gPCA0ODsgbiArPSAyKSB7XG4gICAgICBjMCA9IHNbMF0gXiBzWzEwXSBeIHNbMjBdIF4gc1szMF0gXiBzWzQwXTtcbiAgICAgIGMxID0gc1sxXSBeIHNbMTFdIF4gc1syMV0gXiBzWzMxXSBeIHNbNDFdO1xuICAgICAgYzIgPSBzWzJdIF4gc1sxMl0gXiBzWzIyXSBeIHNbMzJdIF4gc1s0Ml07XG4gICAgICBjMyA9IHNbM10gXiBzWzEzXSBeIHNbMjNdIF4gc1szM10gXiBzWzQzXTtcbiAgICAgIGM0ID0gc1s0XSBeIHNbMTRdIF4gc1syNF0gXiBzWzM0XSBeIHNbNDRdO1xuICAgICAgYzUgPSBzWzVdIF4gc1sxNV0gXiBzWzI1XSBeIHNbMzVdIF4gc1s0NV07XG4gICAgICBjNiA9IHNbNl0gXiBzWzE2XSBeIHNbMjZdIF4gc1szNl0gXiBzWzQ2XTtcbiAgICAgIGM3ID0gc1s3XSBeIHNbMTddIF4gc1syN10gXiBzWzM3XSBeIHNbNDddO1xuICAgICAgYzggPSBzWzhdIF4gc1sxOF0gXiBzWzI4XSBeIHNbMzhdIF4gc1s0OF07XG4gICAgICBjOSA9IHNbOV0gXiBzWzE5XSBeIHNbMjldIF4gc1szOV0gXiBzWzQ5XTtcblxuICAgICAgaCA9IGM4IF4gKChjMiA8PCAxKSB8IChjMyA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjOSBeICgoYzMgPDwgMSkgfCAoYzIgPj4+IDMxKSk7XG4gICAgICBzWzBdIF49IGg7XG4gICAgICBzWzFdIF49IGw7XG4gICAgICBzWzEwXSBePSBoO1xuICAgICAgc1sxMV0gXj0gbDtcbiAgICAgIHNbMjBdIF49IGg7XG4gICAgICBzWzIxXSBePSBsO1xuICAgICAgc1szMF0gXj0gaDtcbiAgICAgIHNbMzFdIF49IGw7XG4gICAgICBzWzQwXSBePSBoO1xuICAgICAgc1s0MV0gXj0gbDtcbiAgICAgIGggPSBjMCBeICgoYzQgPDwgMSkgfCAoYzUgPj4+IDMxKSk7XG4gICAgICBsID0gYzEgXiAoKGM1IDw8IDEpIHwgKGM0ID4+PiAzMSkpO1xuICAgICAgc1syXSBePSBoO1xuICAgICAgc1szXSBePSBsO1xuICAgICAgc1sxMl0gXj0gaDtcbiAgICAgIHNbMTNdIF49IGw7XG4gICAgICBzWzIyXSBePSBoO1xuICAgICAgc1syM10gXj0gbDtcbiAgICAgIHNbMzJdIF49IGg7XG4gICAgICBzWzMzXSBePSBsO1xuICAgICAgc1s0Ml0gXj0gaDtcbiAgICAgIHNbNDNdIF49IGw7XG4gICAgICBoID0gYzIgXiAoKGM2IDw8IDEpIHwgKGM3ID4+PiAzMSkpO1xuICAgICAgbCA9IGMzIF4gKChjNyA8PCAxKSB8IChjNiA+Pj4gMzEpKTtcbiAgICAgIHNbNF0gXj0gaDtcbiAgICAgIHNbNV0gXj0gbDtcbiAgICAgIHNbMTRdIF49IGg7XG4gICAgICBzWzE1XSBePSBsO1xuICAgICAgc1syNF0gXj0gaDtcbiAgICAgIHNbMjVdIF49IGw7XG4gICAgICBzWzM0XSBePSBoO1xuICAgICAgc1szNV0gXj0gbDtcbiAgICAgIHNbNDRdIF49IGg7XG4gICAgICBzWzQ1XSBePSBsO1xuICAgICAgaCA9IGM0IF4gKChjOCA8PCAxKSB8IChjOSA+Pj4gMzEpKTtcbiAgICAgIGwgPSBjNSBeICgoYzkgPDwgMSkgfCAoYzggPj4+IDMxKSk7XG4gICAgICBzWzZdIF49IGg7XG4gICAgICBzWzddIF49IGw7XG4gICAgICBzWzE2XSBePSBoO1xuICAgICAgc1sxN10gXj0gbDtcbiAgICAgIHNbMjZdIF49IGg7XG4gICAgICBzWzI3XSBePSBsO1xuICAgICAgc1szNl0gXj0gaDtcbiAgICAgIHNbMzddIF49IGw7XG4gICAgICBzWzQ2XSBePSBoO1xuICAgICAgc1s0N10gXj0gbDtcbiAgICAgIGggPSBjNiBeICgoYzAgPDwgMSkgfCAoYzEgPj4+IDMxKSk7XG4gICAgICBsID0gYzcgXiAoKGMxIDw8IDEpIHwgKGMwID4+PiAzMSkpO1xuICAgICAgc1s4XSBePSBoO1xuICAgICAgc1s5XSBePSBsO1xuICAgICAgc1sxOF0gXj0gaDtcbiAgICAgIHNbMTldIF49IGw7XG4gICAgICBzWzI4XSBePSBoO1xuICAgICAgc1syOV0gXj0gbDtcbiAgICAgIHNbMzhdIF49IGg7XG4gICAgICBzWzM5XSBePSBsO1xuICAgICAgc1s0OF0gXj0gaDtcbiAgICAgIHNbNDldIF49IGw7XG5cbiAgICAgIGIwID0gc1swXTtcbiAgICAgIGIxID0gc1sxXTtcbiAgICAgIGIzMiA9IChzWzExXSA8PCA0KSB8IChzWzEwXSA+Pj4gMjgpO1xuICAgICAgYjMzID0gKHNbMTBdIDw8IDQpIHwgKHNbMTFdID4+PiAyOCk7XG4gICAgICBiMTQgPSAoc1syMF0gPDwgMykgfCAoc1syMV0gPj4+IDI5KTtcbiAgICAgIGIxNSA9IChzWzIxXSA8PCAzKSB8IChzWzIwXSA+Pj4gMjkpO1xuICAgICAgYjQ2ID0gKHNbMzFdIDw8IDkpIHwgKHNbMzBdID4+PiAyMyk7XG4gICAgICBiNDcgPSAoc1szMF0gPDwgOSkgfCAoc1szMV0gPj4+IDIzKTtcbiAgICAgIGIyOCA9IChzWzQwXSA8PCAxOCkgfCAoc1s0MV0gPj4+IDE0KTtcbiAgICAgIGIyOSA9IChzWzQxXSA8PCAxOCkgfCAoc1s0MF0gPj4+IDE0KTtcbiAgICAgIGIyMCA9IChzWzJdIDw8IDEpIHwgKHNbM10gPj4+IDMxKTtcbiAgICAgIGIyMSA9IChzWzNdIDw8IDEpIHwgKHNbMl0gPj4+IDMxKTtcbiAgICAgIGIyID0gKHNbMTNdIDw8IDEyKSB8IChzWzEyXSA+Pj4gMjApO1xuICAgICAgYjMgPSAoc1sxMl0gPDwgMTIpIHwgKHNbMTNdID4+PiAyMCk7XG4gICAgICBiMzQgPSAoc1syMl0gPDwgMTApIHwgKHNbMjNdID4+PiAyMik7XG4gICAgICBiMzUgPSAoc1syM10gPDwgMTApIHwgKHNbMjJdID4+PiAyMik7XG4gICAgICBiMTYgPSAoc1szM10gPDwgMTMpIHwgKHNbMzJdID4+PiAxOSk7XG4gICAgICBiMTcgPSAoc1szMl0gPDwgMTMpIHwgKHNbMzNdID4+PiAxOSk7XG4gICAgICBiNDggPSAoc1s0Ml0gPDwgMikgfCAoc1s0M10gPj4+IDMwKTtcbiAgICAgIGI0OSA9IChzWzQzXSA8PCAyKSB8IChzWzQyXSA+Pj4gMzApO1xuICAgICAgYjQwID0gKHNbNV0gPDwgMzApIHwgKHNbNF0gPj4+IDIpO1xuICAgICAgYjQxID0gKHNbNF0gPDwgMzApIHwgKHNbNV0gPj4+IDIpO1xuICAgICAgYjIyID0gKHNbMTRdIDw8IDYpIHwgKHNbMTVdID4+PiAyNik7XG4gICAgICBiMjMgPSAoc1sxNV0gPDwgNikgfCAoc1sxNF0gPj4+IDI2KTtcbiAgICAgIGI0ID0gKHNbMjVdIDw8IDExKSB8IChzWzI0XSA+Pj4gMjEpO1xuICAgICAgYjUgPSAoc1syNF0gPDwgMTEpIHwgKHNbMjVdID4+PiAyMSk7XG4gICAgICBiMzYgPSAoc1szNF0gPDwgMTUpIHwgKHNbMzVdID4+PiAxNyk7XG4gICAgICBiMzcgPSAoc1szNV0gPDwgMTUpIHwgKHNbMzRdID4+PiAxNyk7XG4gICAgICBiMTggPSAoc1s0NV0gPDwgMjkpIHwgKHNbNDRdID4+PiAzKTtcbiAgICAgIGIxOSA9IChzWzQ0XSA8PCAyOSkgfCAoc1s0NV0gPj4+IDMpO1xuICAgICAgYjEwID0gKHNbNl0gPDwgMjgpIHwgKHNbN10gPj4+IDQpO1xuICAgICAgYjExID0gKHNbN10gPDwgMjgpIHwgKHNbNl0gPj4+IDQpO1xuICAgICAgYjQyID0gKHNbMTddIDw8IDIzKSB8IChzWzE2XSA+Pj4gOSk7XG4gICAgICBiNDMgPSAoc1sxNl0gPDwgMjMpIHwgKHNbMTddID4+PiA5KTtcbiAgICAgIGIyNCA9IChzWzI2XSA8PCAyNSkgfCAoc1syN10gPj4+IDcpO1xuICAgICAgYjI1ID0gKHNbMjddIDw8IDI1KSB8IChzWzI2XSA+Pj4gNyk7XG4gICAgICBiNiA9IChzWzM2XSA8PCAyMSkgfCAoc1szN10gPj4+IDExKTtcbiAgICAgIGI3ID0gKHNbMzddIDw8IDIxKSB8IChzWzM2XSA+Pj4gMTEpO1xuICAgICAgYjM4ID0gKHNbNDddIDw8IDI0KSB8IChzWzQ2XSA+Pj4gOCk7XG4gICAgICBiMzkgPSAoc1s0Nl0gPDwgMjQpIHwgKHNbNDddID4+PiA4KTtcbiAgICAgIGIzMCA9IChzWzhdIDw8IDI3KSB8IChzWzldID4+PiA1KTtcbiAgICAgIGIzMSA9IChzWzldIDw8IDI3KSB8IChzWzhdID4+PiA1KTtcbiAgICAgIGIxMiA9IChzWzE4XSA8PCAyMCkgfCAoc1sxOV0gPj4+IDEyKTtcbiAgICAgIGIxMyA9IChzWzE5XSA8PCAyMCkgfCAoc1sxOF0gPj4+IDEyKTtcbiAgICAgIGI0NCA9IChzWzI5XSA8PCA3KSB8IChzWzI4XSA+Pj4gMjUpO1xuICAgICAgYjQ1ID0gKHNbMjhdIDw8IDcpIHwgKHNbMjldID4+PiAyNSk7XG4gICAgICBiMjYgPSAoc1szOF0gPDwgOCkgfCAoc1szOV0gPj4+IDI0KTtcbiAgICAgIGIyNyA9IChzWzM5XSA8PCA4KSB8IChzWzM4XSA+Pj4gMjQpO1xuICAgICAgYjggPSAoc1s0OF0gPDwgMTQpIHwgKHNbNDldID4+PiAxOCk7XG4gICAgICBiOSA9IChzWzQ5XSA8PCAxNCkgfCAoc1s0OF0gPj4+IDE4KTtcblxuICAgICAgc1swXSA9IGIwIF4gKH5iMiAmIGI0KTtcbiAgICAgIHNbMV0gPSBiMSBeICh+YjMgJiBiNSk7XG4gICAgICBzWzEwXSA9IGIxMCBeICh+YjEyICYgYjE0KTtcbiAgICAgIHNbMTFdID0gYjExIF4gKH5iMTMgJiBiMTUpO1xuICAgICAgc1syMF0gPSBiMjAgXiAofmIyMiAmIGIyNCk7XG4gICAgICBzWzIxXSA9IGIyMSBeICh+YjIzICYgYjI1KTtcbiAgICAgIHNbMzBdID0gYjMwIF4gKH5iMzIgJiBiMzQpO1xuICAgICAgc1szMV0gPSBiMzEgXiAofmIzMyAmIGIzNSk7XG4gICAgICBzWzQwXSA9IGI0MCBeICh+YjQyICYgYjQ0KTtcbiAgICAgIHNbNDFdID0gYjQxIF4gKH5iNDMgJiBiNDUpO1xuICAgICAgc1syXSA9IGIyIF4gKH5iNCAmIGI2KTtcbiAgICAgIHNbM10gPSBiMyBeICh+YjUgJiBiNyk7XG4gICAgICBzWzEyXSA9IGIxMiBeICh+YjE0ICYgYjE2KTtcbiAgICAgIHNbMTNdID0gYjEzIF4gKH5iMTUgJiBiMTcpO1xuICAgICAgc1syMl0gPSBiMjIgXiAofmIyNCAmIGIyNik7XG4gICAgICBzWzIzXSA9IGIyMyBeICh+YjI1ICYgYjI3KTtcbiAgICAgIHNbMzJdID0gYjMyIF4gKH5iMzQgJiBiMzYpO1xuICAgICAgc1szM10gPSBiMzMgXiAofmIzNSAmIGIzNyk7XG4gICAgICBzWzQyXSA9IGI0MiBeICh+YjQ0ICYgYjQ2KTtcbiAgICAgIHNbNDNdID0gYjQzIF4gKH5iNDUgJiBiNDcpO1xuICAgICAgc1s0XSA9IGI0IF4gKH5iNiAmIGI4KTtcbiAgICAgIHNbNV0gPSBiNSBeICh+YjcgJiBiOSk7XG4gICAgICBzWzE0XSA9IGIxNCBeICh+YjE2ICYgYjE4KTtcbiAgICAgIHNbMTVdID0gYjE1IF4gKH5iMTcgJiBiMTkpO1xuICAgICAgc1syNF0gPSBiMjQgXiAofmIyNiAmIGIyOCk7XG4gICAgICBzWzI1XSA9IGIyNSBeICh+YjI3ICYgYjI5KTtcbiAgICAgIHNbMzRdID0gYjM0IF4gKH5iMzYgJiBiMzgpO1xuICAgICAgc1szNV0gPSBiMzUgXiAofmIzNyAmIGIzOSk7XG4gICAgICBzWzQ0XSA9IGI0NCBeICh+YjQ2ICYgYjQ4KTtcbiAgICAgIHNbNDVdID0gYjQ1IF4gKH5iNDcgJiBiNDkpO1xuICAgICAgc1s2XSA9IGI2IF4gKH5iOCAmIGIwKTtcbiAgICAgIHNbN10gPSBiNyBeICh+YjkgJiBiMSk7XG4gICAgICBzWzE2XSA9IGIxNiBeICh+YjE4ICYgYjEwKTtcbiAgICAgIHNbMTddID0gYjE3IF4gKH5iMTkgJiBiMTEpO1xuICAgICAgc1syNl0gPSBiMjYgXiAofmIyOCAmIGIyMCk7XG4gICAgICBzWzI3XSA9IGIyNyBeICh+YjI5ICYgYjIxKTtcbiAgICAgIHNbMzZdID0gYjM2IF4gKH5iMzggJiBiMzApO1xuICAgICAgc1szN10gPSBiMzcgXiAofmIzOSAmIGIzMSk7XG4gICAgICBzWzQ2XSA9IGI0NiBeICh+YjQ4ICYgYjQwKTtcbiAgICAgIHNbNDddID0gYjQ3IF4gKH5iNDkgJiBiNDEpO1xuICAgICAgc1s4XSA9IGI4IF4gKH5iMCAmIGIyKTtcbiAgICAgIHNbOV0gPSBiOSBeICh+YjEgJiBiMyk7XG4gICAgICBzWzE4XSA9IGIxOCBeICh+YjEwICYgYjEyKTtcbiAgICAgIHNbMTldID0gYjE5IF4gKH5iMTEgJiBiMTMpO1xuICAgICAgc1syOF0gPSBiMjggXiAofmIyMCAmIGIyMik7XG4gICAgICBzWzI5XSA9IGIyOSBeICh+YjIxICYgYjIzKTtcbiAgICAgIHNbMzhdID0gYjM4IF4gKH5iMzAgJiBiMzIpO1xuICAgICAgc1szOV0gPSBiMzkgXiAofmIzMSAmIGIzMyk7XG4gICAgICBzWzQ4XSA9IGI0OCBeICh+YjQwICYgYjQyKTtcbiAgICAgIHNbNDldID0gYjQ5IF4gKH5iNDEgJiBiNDMpO1xuXG4gICAgICBzWzBdIF49IFJDW25dO1xuICAgICAgc1sxXSBePSBSQ1tuICsgMV07XG4gICAgfVxuICB9O1xuXG4gIGlmIChDT01NT05fSlMpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IG1ldGhvZHM7XG4gIH0gZWxzZSB7XG4gICAgZm9yIChpID0gMDsgaSA8IG1ldGhvZE5hbWVzLmxlbmd0aDsgKytpKSB7XG4gICAgICByb290W21ldGhvZE5hbWVzW2ldXSA9IG1ldGhvZHNbbWV0aG9kTmFtZXNbaV1dO1xuICAgIH1cbiAgICBpZiAoQU1EKSB7XG4gICAgICBkZWZpbmUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbWV0aG9kcztcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSkoKTtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7U2NhbGFyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQganNTaGEzIGZyb20gXCJqcy1zaGEzXCI7XG5jb25zdCB7IGtlY2NhazI1NiB9ID0ganNTaGEzO1xuXG5jb25zdCBQT0xZTk9NSUFMID0gMDtcbmNvbnN0IFNDQUxBUiA9IDE7XG5cbmV4cG9ydCBjbGFzcyBLZWNjYWsyNTZUcmFuc2NyaXB0IHtcbiAgICBjb25zdHJ1Y3RvcihjdXJ2ZSkge1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMuRnIgPSBjdXJ2ZS5GcjtcblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIH1cblxuICAgIGFkZFBvbENvbW1pdG1lbnQocG9seW5vbWlhbENvbW1pdG1lbnQpIHtcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goe3R5cGU6IFBPTFlOT01JQUwsIGRhdGE6IHBvbHlub21pYWxDb21taXRtZW50fSk7XG4gICAgfVxuXG4gICAgYWRkU2NhbGFyKHNjYWxhcikge1xuICAgICAgICB0aGlzLmRhdGEucHVzaCh7dHlwZTogU0NBTEFSLCBkYXRhOiBzY2FsYXJ9KTtcbiAgICB9XG5cbiAgICBnZXRDaGFsbGVuZ2UoKSB7XG4gICAgICAgIGlmKDAgPT09IHRoaXMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIktlY2NhazI1NlRyYW5zY3JpcHQ6IE5vIGRhdGEgdG8gZ2VuZXJhdGUgYSB0cmFuc2NyaXB0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5Qb2x5bm9taWFscyA9IDA7XG4gICAgICAgIGxldCBuU2NhbGFycyA9IDA7XG5cbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiBQT0xZTk9NSUFMID09PSBlbGVtZW50LnR5cGUgPyBuUG9seW5vbWlhbHMrKyA6IG5TY2FsYXJzKyspO1xuXG4gICAgICAgIGxldCBidWZmZXIgPSBuZXcgVWludDhBcnJheShuU2NhbGFycyAqIHRoaXMuRnIubjggKyBuUG9seW5vbWlhbHMgKiB0aGlzLkcxLkYubjggKiAyKTtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChQT0xZTk9NSUFMID09PSB0aGlzLmRhdGFbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuRzEudG9ScHJVbmNvbXByZXNzZWQoYnVmZmVyLCBvZmZzZXQsIHRoaXMuZGF0YVtpXS5kYXRhKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5HMS5GLm44ICogMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5Gci50b1JwckJFKGJ1ZmZlciwgb2Zmc2V0LCB0aGlzLmRhdGFbaV0uZGF0YSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHRoaXMuRnIubjg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IFNjYWxhci5mcm9tUnByQkUobmV3IFVpbnQ4QXJyYXkoa2VjY2FrMjU2LmFycmF5QnVmZmVyKGJ1ZmZlcikpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuRnIuZSh2YWx1ZSk7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBjbGFzcyBNdWxaIHtcbiAgICBzdGF0aWMgZ2V0WjEoRnIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEZyLnplcm8sXG4gICAgICAgICAgICBGci5hZGQoRnIuZSgtMSksIEZyLndbMl0pLFxuICAgICAgICAgICAgRnIuZSgtMiksXG4gICAgICAgICAgICBGci5zdWIoRnIuZSgtMSksIEZyLndbMl0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRaMihGcikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgRnIuemVybyxcbiAgICAgICAgICAgIEZyLmFkZChGci56ZXJvLCBGci5tdWwoRnIuZSgtMiksIEZyLndbMl0pKSxcbiAgICAgICAgICAgIEZyLmUoNCksXG4gICAgICAgICAgICBGci5zdWIoRnIuemVybywgRnIubXVsKEZyLmUoLTIpLCBGci53WzJdKSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFozKEZyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBGci56ZXJvLFxuICAgICAgICAgICAgRnIuYWRkKEZyLmUoMiksIEZyLm11bChGci5lKDIpLCBGci53WzJdKSksXG4gICAgICAgICAgICBGci5lKC04KSxcbiAgICAgICAgICAgIEZyLnN1YihGci5lKDIpLCBGci5tdWwoRnIuZSgyKSwgRnIud1syXSkpLFxuICAgICAgICBdO1xuXG4gICAgfVxuXG4gICAgc3RhdGljIG11bDIoYSwgYiwgYXAsIGJwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgciA9IGFfYjtcblxuICAgICAgICBsZXQgYTAgPSBGci5hZGQoYV9icCwgYXBfYik7XG5cbiAgICAgICAgbGV0IGExID0gYXBfYnA7XG5cbiAgICAgICAgcnogPSBhMDtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjFbcF0sIGExKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsMyhhLCBiLCBjLCBhcCwgYnAsIGNwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBjb25zdCBaMiA9IHRoaXMuZ2V0WjIoRnIpO1xuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgciA9IEZyLm11bChhX2IsIGMpO1xuXG4gICAgICAgIGxldCBhMCA9IEZyLm11bChhcF9iLCBjKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2JwLCBjKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjcCkpO1xuXG4gICAgICAgIGxldCBhMSA9IEZyLm11bChhcF9icCwgYyk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY3ApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhcF9iLCBjcCkpO1xuXG4gICAgICAgIHJ6ID0gYTA7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBjb25zdCBhMiA9IEZyLm11bChhcF9icCwgY3ApO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjJbcF0sIGEyKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsNChhLCBiLCBjLCBkLCBhcCwgYnAsIGNwLCBkcCwgcCwgRnIpIHtcbiAgICAgICAgY29uc3QgWjEgPSB0aGlzLmdldFoxKEZyKTtcbiAgICAgICAgY29uc3QgWjIgPSB0aGlzLmdldFoyKEZyKTtcbiAgICAgICAgY29uc3QgWjMgPSB0aGlzLmdldFozKEZyKTtcblxuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgY29uc3QgY19kID0gRnIubXVsKGMsIGQpO1xuICAgICAgICBjb25zdCBjX2RwID0gRnIubXVsKGMsIGRwKTtcbiAgICAgICAgY29uc3QgY3BfZCA9IEZyLm11bChjcCwgZCk7XG4gICAgICAgIGNvbnN0IGNwX2RwID0gRnIubXVsKGNwLCBkcCk7XG5cbiAgICAgICAgciA9IEZyLm11bChhX2IsIGNfZCk7XG5cbiAgICAgICAgbGV0IGEwID0gRnIubXVsKGFwX2IsIGNfZCk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9icCwgY19kKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjcF9kKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjX2RwKSk7XG5cbiAgICAgICAgbGV0IGExID0gRnIubXVsKGFwX2JwLCBjX2QpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNwX2QpKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhcF9iLCBjX2RwKSk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY3BfZCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFfYnAsIGNfZHApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2IsIGNwX2RwKSk7XG5cbiAgICAgICAgbGV0IGEyID0gRnIubXVsKGFfYnAsIGNwX2RwKTtcbiAgICAgICAgYTIgPSBGci5hZGQoYTIsIEZyLm11bChhcF9iLCBjcF9kcCkpO1xuICAgICAgICBhMiA9IEZyLmFkZChhMiwgRnIubXVsKGFwX2JwLCBjX2RwKSk7XG4gICAgICAgIGEyID0gRnIuYWRkKGEyLCBGci5tdWwoYXBfYnAsIGNwX2QpKTtcblxuICAgICAgICBsZXQgYTMgPSBGci5tdWwoYXBfYnAsIGNwX2RwKTtcblxuICAgICAgICByeiA9IGEwO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjJbcF0sIGEyKSk7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFozW3BdLCBhMykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtyLCByel07XG4gICAgfVxufSIsImV4cG9ydCBjb25zdCBaS0VZX1BMX05TRUNUSU9OUyA9IDEzO1xuXG5leHBvcnQgY29uc3QgWktFWV9QTF9IRUFERVJfU0VDVElPTiA9IDI7XG5leHBvcnQgY29uc3QgWktFWV9QTF9BRERJVElPTlNfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgWktFWV9QTF9BX01BUF9TRUNUSU9OID0gNDtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0JfTUFQX1NFQ1RJT04gPSA1O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfQ19NQVBfU0VDVElPTiA9IDY7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RTV9TRUNUSU9OID0gNztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FMX1NFQ1RJT04gPSA4O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfUVJfU0VDVElPTiA9IDk7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RT19TRUNUSU9OID0gMTA7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RQ19TRUNUSU9OID0gMTE7XG5leHBvcnQgY29uc3QgWktFWV9QTF9TSUdNQV9TRUNUSU9OID0gMTI7XG5leHBvcnQgY29uc3QgWktFWV9QTF9MQUdSQU5HRV9TRUNUSU9OID0gMTM7XG5leHBvcnQgY29uc3QgWktFWV9QTF9QVEFVX1NFQ1RJT04gPSAxNDtcblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGNsYXNzIFBvbHlub21pYWwge1xuICAgIGNvbnN0cnVjdG9yKGNvZWZmaWNpZW50cywgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLmNvZWYgPSBjb2VmZmljaWVudHM7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBmcm9tRXZhbHVhdGlvbnMoYnVmZmVyLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGxldCBjb2VmZmljaWVudHMgPSBhd2FpdCBjdXJ2ZS5Gci5pZmZ0KGJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGNvZWZmaWNpZW50cywgY3VydmUsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21Db2VmZmljaWVudHNBcnJheShhcnJheSwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgYnVmZiA9IGFycmF5Lmxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcihhcnJheS5sZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShhcnJheS5sZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIGJ1ZmYuc2V0KGFycmF5W2ldLCBpICogRnIubjgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbVBvbHlub21pYWwocG9seW5vbWlhbCwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBsZXQgbGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgbGV0IEZyID0gY3VydmUuRnI7XG5cbiAgICAgICAgbGV0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIobGVuZ3RoICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkobGVuZ3RoICogRnIubjgpO1xuICAgICAgICBidWZmLnNldChwb2x5bm9taWFsLmNvZWYuc2xpY2UoKSwgMCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGlzRXF1YWwocG9seW5vbWlhbCkge1xuICAgICAgICBjb25zdCBkZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBpZiAoZGVncmVlICE9PSBwb2x5bm9taWFsLmRlZ3JlZSgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWdyZWUgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5Gci5lcSh0aGlzLmdldENvZWYoaSksIHBvbHlub21pYWwuZ2V0Q29lZihpKSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGJsaW5kQ29lZmZpY2llbnRzKGJsaW5kaW5nRmFjdG9ycykge1xuICAgICAgICBibGluZGluZ0ZhY3RvcnMgPSBibGluZGluZ0ZhY3RvcnMgfHwgW107XG5cbiAgICAgICAgY29uc3QgYmxpbmRlZENvZWZmaWNpZW50cyA9ICh0aGlzLmxlbmd0aCgpICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIHRoaXMuRnIubjgpIDpcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KCh0aGlzLmxlbmd0aCgpICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiB0aGlzLkZyLm44KTtcblxuICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldCh0aGlzLmNvZWYsIDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5Gci5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2xpY2UoKHRoaXMubGVuZ3RoKCkgKyBpKSAqIHRoaXMuRnIubjgsICh0aGlzLmxlbmd0aCgpICsgaSArIDEpICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKHRoaXMubGVuZ3RoKCkgKyBpKSAqIHRoaXMuRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zbGljZShpICogdGhpcy5Gci5uOCwgKGkgKyAxKSAqIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICBibGluZGluZ0ZhY3RvcnNbaV1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGkgKiB0aGlzLkZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29lZiA9IGJsaW5kZWRDb2VmZmljaWVudHM7XG4gICAgfVxuXG4gICAgZ2V0Q29lZihpbmRleCkge1xuICAgICAgICBjb25zdCBpX244ID0gaW5kZXggKiB0aGlzLkZyLm44O1xuXG4gICAgICAgIGlmIChpX244ICsgdGhpcy5Gci5uOCA+IHRoaXMuY29lZi5ieXRlTGVuZ3RoKSByZXR1cm4gdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpO1xuICAgIH1cblxuICAgIHNldENvZWYoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpbmRleCA+ICh0aGlzLmxlbmd0aCgpIC0gMSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvZWYgaW5kZXggaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29lZi5zZXQodmFsdWUsIGluZGV4ICogdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIHRvNFQoYnVmZmVyLCBkb21haW5TaXplLCBibGluZGluZ0ZhY3RvcnMsIEZyKSB7XG4gICAgICAgIGJsaW5kaW5nRmFjdG9ycyA9IGJsaW5kaW5nRmFjdG9ycyB8fCBbXTtcbiAgICAgICAgbGV0IGEgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZlcik7XG5cbiAgICAgICAgY29uc3QgYTQgPSAoZG9tYWluU2l6ZSAqIDQpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUgKiA0ICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoZG9tYWluU2l6ZSAqIDQgKiBGci5uOCk7XG4gICAgICAgIGE0LnNldChhLCAwKTtcblxuICAgICAgICBjb25zdCBBNCA9IGF3YWl0IEZyLmZmdChhNCk7XG5cbiAgICAgICAgaWYgKGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbYSwgQTRdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYTEgPSBkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoZG9tYWluU2l6ZSArIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGgpICogRnIubjgpIDpcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KChkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiBGci5uOCk7XG5cbiAgICAgICAgYTEuc2V0KGEsIDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYTEuc2V0KFxuICAgICAgICAgICAgICAgIEZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYTEuc2xpY2UoKGRvbWFpblNpemUgKyBpKSAqIEZyLm44LCAoZG9tYWluU2l6ZSArIGkgKyAxKSAqIEZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAoZG9tYWluU2l6ZSArIGkpICogRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhMS5zZXQoXG4gICAgICAgICAgICAgICAgRnIuc3ViKFxuICAgICAgICAgICAgICAgICAgICBhMS5zbGljZShpICogRnIubjgsIChpICsgMSkgKiBGci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaSAqIEZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFthMSwgQTRdO1xuICAgIH1cblxuICAgIGxlbmd0aCgpIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgaWYgKGxlbmd0aCAhPT0gTWF0aC5mbG9vcih0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGNvZWZmaWNpZW50cyBidWZmZXIgaGFzIGluY29ycmVjdCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgwID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJQb2x5bm9taWFsIGhhcyBsZW5ndGggemVyb1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cblxuICAgIGRlZ3JlZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRnIuZXEodGhpcy5Gci56ZXJvLCB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocG9pbnQpIHtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRnIuemVybztcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kZWdyZWUoKSArIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29lZmZpY2llbnQgPSB0aGlzLmNvZWYuc2xpY2UoaV9uOCAtIHRoaXMuRnIubjgsIGlfbjgpO1xuICAgICAgICAgICAgcmVzID0gdGhpcy5Gci5hZGQoY3VycmVudENvZWZmaWNpZW50LCB0aGlzLkZyLm11bChyZXMsIHBvaW50KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZhc3RFdmFsdWF0ZShwb2ludCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGxldCBuVGhyZWFkcyA9IDM7XG5cbiAgICAgICAgbGV0IG5Db2VmcyA9IHRoaXMuZGVncmVlKCkgKyAxO1xuICAgICAgICBsZXQgY29lZnNUaHJlYWQgPSBwYXJzZUludChuQ29lZnMgLyBuVGhyZWFkcyk7XG4gICAgICAgIGxldCByZXNpZHVhbENvZWZzID0gbkNvZWZzIC0gY29lZnNUaHJlYWQgKiBuVGhyZWFkcztcblxuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGxldCB4TiA9IFtdO1xuXG4gICAgICAgIHhOWzBdID0gRnIub25lO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblRocmVhZHM7IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gRnIuemVybztcblxuICAgICAgICAgICAgbGV0IG5Db2VmcyA9IGkgPT09IChuVGhyZWFkcyAtIDEpID8gY29lZnNUaHJlYWQgKyByZXNpZHVhbENvZWZzIDogY29lZnNUaHJlYWQ7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gbkNvZWZzOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldID0gRnIuYWRkKHRoaXMuZ2V0Q29lZigoaSAqIGNvZWZzVGhyZWFkKSArIGogLSAxKSwgRnIubXVsKHJlc1tpXSwgcG9pbnQpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB4TlswXSA9IEZyLm11bCh4TlswXSwgcG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBuVGhyZWFkczsgaSsrKSB7XG4gICAgICAgICAgICByZXNbMF0gPSBGci5hZGQocmVzWzBdLCBGci5tdWwoeE5baSAtIDFdLCByZXNbaV0pKTtcbiAgICAgICAgICAgIHhOW2ldID0gRnIubXVsKHhOW2kgLSAxXSwgeE5bMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc1swXTtcbiAgICB9XG5cbiAgICBhZGQocG9seW5vbWlhbCwgYmxpbmRpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgb3RoZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAocG9seW5vbWlhbC5sZW5ndGgoKSA+IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIG90aGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoaXNMZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBwb2x5TGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heCh0aGlzTGVuZ3RoLCBwb2x5TGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSBpIDwgdGhpc0xlbmd0aCA/IHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkgOiB0aGlzLkZyLnplcm87XG4gICAgICAgICAgICBsZXQgYiA9IGkgPCBwb2x5TGVuZ3RoID8gcG9seW5vbWlhbC5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcblxuICAgICAgICAgICAgaWYgKGJsaW5kaW5nVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLkZyLm11bChiLCBibGluZGluZ1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgICAgIHBvbHlub21pYWwuY29lZi5zZXQodGhpcy5Gci5hZGQoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuYWRkKGEsIGIpLCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2x5bm9taWFsLmNvZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdWIocG9seW5vbWlhbCwgYmxpbmRpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgb3RoZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAocG9seW5vbWlhbC5sZW5ndGgoKSA+IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIG90aGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoaXNMZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBwb2x5TGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heCh0aGlzTGVuZ3RoLCBwb2x5TGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSBpIDwgdGhpc0xlbmd0aCA/IHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkgOiB0aGlzLkZyLnplcm87XG4gICAgICAgICAgICBsZXQgYiA9IGkgPCBwb2x5TGVuZ3RoID8gcG9seW5vbWlhbC5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcblxuICAgICAgICAgICAgaWYgKGJsaW5kaW5nVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLkZyLm11bChiLCBibGluZGluZ1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgICAgIHBvbHlub21pYWwuY29lZi5zZXQodGhpcy5Gci5zdWIoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuc3ViKGEsIGIpLCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2x5bm9taWFsLmNvZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxTY2FsYXIodmFsdWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgdGhpcy5jb2VmLnNldCh0aGlzLkZyLm11bCh0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpLCB2YWx1ZSksIGlfbjgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkU2NhbGFyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IDAgPT09IHRoaXMubGVuZ3RoKCkgPyB0aGlzLkZyLnplcm8gOiB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCk7XG4gICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5hZGQoY3VycmVudFZhbHVlLCB2YWx1ZSksIDApO1xuICAgIH1cblxuICAgIHN1YlNjYWxhcih2YWx1ZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAwID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5Gci56ZXJvIDogdGhpcy5jb2VmLnNsaWNlKDAsIHRoaXMuRnIubjgpO1xuICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuc3ViKGN1cnJlbnRWYWx1ZSwgdmFsdWUpLCAwKTtcbiAgICB9XG5cbiAgICAvLyBNdWx0aXBseSBjdXJyZW50IHBvbHlub21pYWwgYnkgdGhlIHBvbHlub21pYWwgKFggLSB2YWx1ZSlcbiAgICBieVhTdWJWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9ICFGci5lcShGci56ZXJvLCB0aGlzLmdldENvZWYodGhpcy5sZW5ndGgoKSAtIDEpKTtcblxuICAgICAgICBjb25zdCBsZW5ndGggPSByZXNpemUgPyB0aGlzLmxlbmd0aCgpICsgMSA6IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2wgPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBTZXQgY3VycmVudCBjb2VmZmljaWVudHMgdG8gdGhlIG5ldyBidWZmZXIgc2hpZnRlZCBvbmUgcG9zaXRpb25cbiAgICAgICAgcG9sLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZSgwLCAobGVuZ3RoIC0gMSkgKiBGci5uOCksIDMyKTtcblxuICAgICAgICAvLyBTdGVwIDE6IG11bHRpcGx5IGVhY2ggY29lZmZpY2llbnQgYnkgKC12YWx1ZSlcbiAgICAgICAgdGhpcy5tdWxTY2FsYXIoRnIubmVnKHZhbHVlKSk7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBBZGQgY3VycmVudCBwb2x5bm9taWFsIHRvIGRlc3RpbmF0aW9uIHBvbHlub21pYWxcbiAgICAgICAgcG9sLmFkZCh0aGlzKTtcblxuICAgICAgICAvLyBTd2FwIGJ1ZmZlcnNcbiAgICAgICAgdGhpcy5jb2VmID0gcG9sLmNvZWY7XG4gICAgfVxuXG4gICAgLy8gTXVsdGlwbHkgY3VycmVudCBwb2x5bm9taWFsIGJ5IHRoZSBwb2x5bm9taWFsIChYXm4gKyB2YWx1ZSlcbiAgICBieVhOU3ViVmFsdWUobiwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuICAgICAgICBjb25zdCByZXNpemUgPSAhKHRoaXMubGVuZ3RoKCkgLSBuIC0gMSA+PSB0aGlzLmRlZ3JlZSgpKTtcblxuICAgICAgICBjb25zdCBsZW5ndGggPSByZXNpemUgPyB0aGlzLmxlbmd0aCgpICsgbiA6IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2wgPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBTZXQgY3VycmVudCBjb2VmZmljaWVudHMgdG8gdGhlIG5ldyBidWZmZXIgc2hpZnRlZCBvbmUgcG9zaXRpb25cbiAgICAgICAgcG9sLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZSgwLCAodGhpcy5kZWdyZWUoKSArIDEpICogMzIsICksIG4gKiAzMik7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBtdWx0aXBseSBlYWNoIGNvZWZmaWNpZW50IGJ5ICgtIHZhbHVlKVxuICAgICAgICB0aGlzLm11bFNjYWxhcih2YWx1ZSk7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBBZGQgY3VycmVudCBwb2x5bm9taWFsIHRvIGRlc3RpbmF0aW9uIHBvbHlub21pYWxcbiAgICAgICAgcG9sLmFkZCh0aGlzKTtcblxuICAgICAgICAvLyBTd2FwIGJ1ZmZlcnNcbiAgICAgICAgdGhpcy5jb2VmID0gcG9sLmNvZWY7XG4gICAgfVxuXG4gICAgLy8gRXVjbGlkZWFuIGRpdmlzaW9uXG4gICAgZGl2QnkocG9seW5vbWlhbCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IGRlZ3JlZUEgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBjb25zdCBkZWdyZWVCID0gcG9seW5vbWlhbC5kZWdyZWUoKTtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGRlZ3JlZUEgLSBkZWdyZWVCOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGksIEZyLmRpdihwb2xSLmdldENvZWYoaSArIGRlZ3JlZUIpLCBwb2x5bm9taWFsLmdldENvZWYoZGVncmVlQikpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGRlZ3JlZUI7IGorKykge1xuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpICsgaiwgRnIuc3ViKHBvbFIuZ2V0Q29lZihpICsgaiksIEZyLm11bCh0aGlzLmdldENvZWYoaSksIHBvbHlub21pYWwuZ2V0Q29lZihqKSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb2xSO1xuICAgIH1cblxuICAgIC8vIERpdmlzaW9uIGJ5IGEgUG9seW5vbWlhbCBvZiB0aGUgZm9ybSAoeF5tIC0gYmV0YSlcbiAgICBkaXZCeU1vbmljKG0sIGJldGEpIHtcbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuXG4gICAgICAgIGxldCBkID0gdGhpcy5kZWdyZWUoKTtcblxuICAgICAgICBsZXQgYnVmZmVyID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcbiAgICAgICAgbGV0IHF1b3RpZW50ID0gbmV3IFBvbHlub21pYWwoYnVmZmVyLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgbGV0IGJBcnIgPSBbXTtcblxuICAgICAgICAvLyBBZGQgdGhlIG0gbGVhZGluZyBjb2VmZmljaWVudHMgb2YgdGhpcyB0byBxdW90aWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcXVvdGllbnQuc2V0Q29lZigoZCAtIGkpIC0gbSwgdGhpcy5nZXRDb2VmKGQgLSBpKSk7XG4gICAgICAgICAgICBiQXJyW2ldID0gdGhpcy5nZXRDb2VmKGQgLSBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuVGhyZWFkcyA9IG07XG5cbiAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBkIC0gMiAqIG0gLSBrOyBpID49IDA7IGkgPSBpIC0gblRocmVhZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IDApIGJyZWFrO1xuICAgICAgICAgICAgICAgIGxldCBpZHggPSBrO1xuICAgICAgICAgICAgICAgIGJBcnJbaWR4XSA9IEZyLmFkZCh0aGlzLmdldENvZWYoaSArIG0pLCBGci5tdWwoYkFycltpZHhdLCBiZXRhKSk7XG5cbiAgICAgICAgICAgICAgICBxdW90aWVudC5zZXRDb2VmKGksIGJBcnJbaWR4XSk7XG4gICAgICAgICAgICAgICAgaiA9IChqICsgMSkgJSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmID0gcXVvdGllbnQuY29lZjtcbiAgICB9XG5cbiAgICBkaXZCeVZhbmlzaGluZyhuLCBiZXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZ3JlZSgpIDwgbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGl2QnlWYW5pc2hpbmcgcG9seW5vbWlhbCBkaXZpc29yIG11c3QgYmUgb2YgZGVncmVlIGxvd2VyIHRoYW4gdGhlIGRpdmlkZW5kIHBvbHlub21pYWxcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgbGV0IHBvbFIgPSBuZXcgUG9seW5vbWlhbCh0aGlzLmNvZWYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICB0aGlzLmNvZWYgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCgpIC0gMTsgaSA+PSBuOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBsZWFkaW5nQ29lZiA9IHBvbFIuZ2V0Q29lZihpKTtcbiAgICAgICAgICAgIGlmIChGci5lcShGci56ZXJvLCBsZWFkaW5nQ29lZikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBwb2xSLnNldENvZWYoaSwgRnIuemVybyk7XG4gICAgICAgICAgICBwb2xSLnNldENvZWYoaSAtIG4sIEZyLmFkZChwb2xSLmdldENvZWYoaSAtIG4pLCBGci5tdWwoYmV0YSwgbGVhZGluZ0NvZWYpKSk7XG4gICAgICAgICAgICB0aGlzLnNldENvZWYoaSAtIG4sIEZyLmFkZCh0aGlzLmdldENvZWYoaSAtIG4pLCBsZWFkaW5nQ29lZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbFI7XG4gICAgfVxuXG4gICAgZGl2QnlWYW5pc2hpbmcyKG0sIGJldGEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgbGV0IG5UaHJlYWRzID0gMztcbiAgICAgICAgbGV0IG5Ub3RhbCA9IHRoaXMubGVuZ3RoKCkgLSBtO1xuICAgICAgICBsZXQgbkVsZW1lbnRzQ2h1bmsgPSBNYXRoLmZsb29yKG5Ub3RhbCAvIG5UaHJlYWRzKTtcbiAgICAgICAgbGV0IG5FbGVtZW50c0xhc3QgPSBuVG90YWwgLSAoblRocmVhZHMgLSAxKSAqIG5FbGVtZW50c0NodW5rO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKG5Ub3RhbCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG5FbGVtZW50c0NodW5rICsgXCIgIFwiICsgbkVsZW1lbnRzTGFzdCk7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCI+IFRocmVhZCBcIiArIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IChrID09PSAwID8gbkVsZW1lbnRzTGFzdCA6IG5FbGVtZW50c0NodW5rKTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBpZHhEc3QgPSBpIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoayAhPT0gMCkgaWR4RHN0ICs9IChrIC0gMSkgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgbGV0IGlkeFNyYyA9IGlkeERzdCArIG07XG5cbiAgICAgICAgICAgICAgICBsZXQgbGVhZGluZ0NvZWYgPSBwb2xSLmdldENvZWYoaWR4U3JjKTtcbiAgICAgICAgICAgICAgICBpZiAoRnIuZXEoRnIuemVybywgbGVhZGluZ0NvZWYpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpZHhTcmMsIEZyLnplcm8pO1xuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpZHhEc3QsIEZyLmFkZChwb2xSLmdldENvZWYoaWR4RHN0KSwgRnIubXVsKGJldGEsIGxlYWRpbmdDb2VmKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpZHhEc3QsIEZyLmFkZCh0aGlzLmdldENvZWYoaWR4RHN0KSwgbGVhZGluZ0NvZWYpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpZHhEc3QgKyBcIiA8LS0gXCIgKyBpZHhTcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmludCgpO1xuICAgICAgICByZXR1cm4gcG9sUjtcbiAgICB9XG5cbiAgICBmYXN0RGl2QnlWYW5pc2hpbmcoZGF0YSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGxldCBtID0gZGF0YVtpXVswXTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gZGF0YVtpXVsxXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBtKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGl2QnlWYW5pc2hpbmcgcG9seW5vbWlhbCBkaXZpc29yIG11c3QgYmUgb2YgZGVncmVlIGxvd2VyIHRoYW4gdGhlIGRpdmlkZW5kIHBvbHlub21pYWxcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBuVGhyZWFkcyA9IDU7XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzID0gdGhpcy5sZW5ndGgoKSAtIG07XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzQnVja2V0ID0gTWF0aC5mbG9vcihuRWxlbWVudHMgLyBuVGhyZWFkcyAvIG0pO1xuICAgICAgICAgICAgbGV0IG5FbGVtZW50c0NodW5rID0gbkVsZW1lbnRzQnVja2V0ICogbTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHNMYXN0ID0gbkVsZW1lbnRzIC0gblRocmVhZHMgKiBuRWxlbWVudHNDaHVuaztcblxuICAgICAgICAgICAgLy9JbiBDKysgaW1wbGVtZW50YXRpb24gdGhpcyBidWZmZXIgd2lsbCBiZSBhbGxvY2F0ZWQgb25seSBvbmNlIG91dHNpZGUgdGhlIGxvb3BcbiAgICAgICAgICAgIGxldCBwb2xUbXAgPSBuZXcgUG9seW5vbWlhbCh0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KSwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgICAgICBsZXQgcHRyID0gdGhpcy5jb2VmO1xuICAgICAgICAgICAgdGhpcy5jb2VmID0gcG9sVG1wLmNvZWY7XG4gICAgICAgICAgICBwb2xUbXAuY29lZiA9IHB0cjtcblxuICAgICAgICAgICAgLy8gU1RFUCAxOiBTZXRlamFyIGVscyBtIHZhbG9ycyBkZWwgc2Vnw7xlbnQgYnVja2V0IGFsIGNodW5rIGFjdHVhbCwgUEFSQUxFTMK3TElUWkFSXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgaWR4MCA9IChrICsgMSkgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGlkeDAgKyBpIC0gbSwgcG9sVG1wLmdldENvZWYoaWR4MCArIGkpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5FbGVtZW50c0NodW5rIC0gbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpZHgwIC0gaSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBGci5hZGQocG9sVG1wLmdldENvZWYob2Zmc2V0KSwgRnIubXVsKGJldGEsIHRoaXMuZ2V0Q29lZihvZmZzZXQpKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihvZmZzZXQgLSBtLCB2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TVEVQIDI6IFNldGVqYXIgZWxzIHZhbG9ycyBkZWwgZWxlbWVudHMgbGFzdCBOTyBQQVJBTMK3TEVMSVRaQVJcbiAgICAgICAgICAgIGxldCBpZHgwID0gbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgIGxldCBwZW5kaW5nID0gbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbSAmJiBwZW5kaW5nOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYoaWR4MCAtIGkgLSAxLCBwb2xUbXAuZ2V0Q29lZihpZHgwICsgbSAtIGkgLSAxKSk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlbmRpbmc7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpZHgwIC0gaSAtIDE7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZChwb2xUbXAuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoYmV0YSwgdGhpcy5nZXRDb2VmKG9mZnNldCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYob2Zmc2V0IC0gbSwgdmFsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TdGVwIDM6IGNhbGN1bGFyIGFjdW11bGF0cyBOTyAgUEFSQUxFTMK3TElUWkFSXG5cbiAgICAgICAgICAgIGxldCBhY2MgPSBbXTtcbiAgICAgICAgICAgIGxldCBiZXRhUG93ID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuRWxlbWVudHNCdWNrZXQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGJldGFQb3cgPSBGci5tdWwoYmV0YVBvdywgYmV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY3VycmVudEJldGEgPSBGci5vbmU7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGsgPSBuVGhyZWFkczsgayA+IDA7IGstLSkge1xuICAgICAgICAgICAgICAgIGxldCBpZFRocmVhZCA9IGsgLSAxO1xuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gaWRUaHJlYWQgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgYWNjW2lkVGhyZWFkXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYWNjW2lkVGhyZWFkXVtpXSA9IHRoaXMuZ2V0Q29lZihpZHgwICsgaSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGsgIT09IG5UaHJlYWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdW2ldID0gRnIuYWRkKGFjY1tpZFRocmVhZF1baV0sIEZyLm11bChiZXRhUG93LCBhY2NbaWRUaHJlYWQgKyAxXVtpXSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRCZXRhID0gRnIubXVsKGN1cnJlbnRCZXRhLCBiZXRhUG93KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TVEVQIDQgcmVjYWxjdWxhciAgUEFSQUxFTMK3TElUWkFSXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcblxuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gayAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudEJldGEgPSBiZXRhOyAvL1F1YW4gaG9wYXNzZW0gYSBDKysgaSBobyBwYXJhbGVsaXR6ZW0gYXF1ZXN0YSB2YXJpYWJsZSBoYSBkZSBzZXIgcHJpdmFkYVxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50TSA9IG0gLSAxO1xuXG4gICAgICAgICAgICAgICAgbGV0IGxpbWl0ID0gayA9PT0gMCA/IG5FbGVtZW50c0xhc3QgOiBuRWxlbWVudHNDaHVuaztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZCh0aGlzLmdldENvZWYob2Zmc2V0KSwgRnIubXVsKGN1cnJlbnRCZXRhLCBhY2Nba11bY3VycmVudE1dKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKG9mZnNldCwgdmFsKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBtb2R1bGFyIG9wZXJhdGlvbnMgaW4gZWFjaCBsb29wLi4uXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE0gPSBtIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCZXRhID0gRnIubXVsKGN1cnJlbnRCZXRhLCBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIERpdmlkZSBwb2x5bm9taWFsIGJ5IFggLSB2YWx1ZVxuICAgIGRpdkJ5WFN1YlZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvZWZzID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgY29lZnMuc2V0KHRoaXMuRnIuemVybywgKHRoaXMubGVuZ3RoKCkgLSAxKSAqIHRoaXMuRnIubjgpO1xuICAgICAgICBjb2Vmcy5zZXQodGhpcy5jb2VmLnNsaWNlKCh0aGlzLmxlbmd0aCgpIC0gMSkgKiB0aGlzLkZyLm44LCB0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCksICh0aGlzLmxlbmd0aCgpIC0gMikgKiB0aGlzLkZyLm44KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAzOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvZWZzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNsaWNlKGlfbjggKyB0aGlzLkZyLm44LCBpX244ICsgMiAqIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkZyLm11bCh2YWx1ZSwgY29lZnMuc2xpY2UoaV9uOCArIHRoaXMuRnIubjgsIGlfbjggKyAyICogdGhpcy5Gci5uOCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpICogdGhpcy5Gci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuRnIuZXEoXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCksXG4gICAgICAgICAgICB0aGlzLkZyLm11bCh0aGlzLkZyLm5lZyh2YWx1ZSksIGNvZWZzLnNsaWNlKDAsIHRoaXMuRnIubjgpKVxuICAgICAgICApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGRvZXMgbm90IGRpdmlkZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZzO1xuICAgIH1cblxuICAgIGRpdlpoKGRvbWFpblNpemUsIGV4dGVuc2lvbnMgPSA0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIubmVnKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpLCBpX244KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwcGVyQm91bmQgPSB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGZvciAobGV0IGkgPSBkb21haW5TaXplOyBpIDwgdXBwZXJCb3VuZDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoKGkgLSBkb21haW5TaXplKSAqIHRoaXMuRnIubjgsIChpIC0gZG9tYWluU2l6ZSkgKiB0aGlzLkZyLm44ICsgdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQoYSwgaV9uOCk7XG4gICAgICAgICAgICBpZiAoaSA+IChkb21haW5TaXplICogKGV4dGVuc2lvbnMtMSkgLSBleHRlbnNpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Gci5pc1plcm8oYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBpcyBub3QgZGl2aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGRpdkJ5WmVyb2ZpZXIobiwgYmV0YSkge1xuICAgICAgICBsZXQgRnIgPSB0aGlzLkZyO1xuICAgICAgICBjb25zdCBpbnZCZXRhID0gRnIuaW52KGJldGEpO1xuICAgICAgICBjb25zdCBpbnZCZXRhTmVnID0gRnIubmVnKGludkJldGEpO1xuXG4gICAgICAgIGxldCBpc09uZSA9IEZyLmVxKEZyLm9uZSwgaW52QmV0YU5lZyk7XG4gICAgICAgIGxldCBpc05lZ09uZSA9IEZyLmVxKEZyLm5lZ29uZSwgaW52QmV0YU5lZyk7XG5cbiAgICAgICAgaWYgKCFpc09uZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBpbnZCZXRhTmVnID09PSAtMSB3ZSdsbCBzYXZlIGEgbXVsdGlwbGljYXRpb24gY2hhbmdpbmcgaXQgYnkgYSBuZWcgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgICAgIGlmIChpc05lZ09uZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gRnIubmVnKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5tdWwoaW52QmV0YU5lZywgdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNldChlbGVtZW50LCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlzT25lID0gRnIuZXEoRnIub25lLCBpbnZCZXRhKTtcbiAgICAgICAgaXNOZWdPbmUgPSBGci5lcShGci5uZWdvbmUsIGludkJldGEpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBuOyBpIDwgdGhpcy5sZW5ndGgoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBjb25zdCBpX3ByZXZfbjggPSAoaSAtIG4pICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9wcmV2X244LCBpX3ByZXZfbjggKyB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBJZiBpbnZCZXRhID09PSAxIHdlJ2xsIG5vdCBkbyBhbnl0aGluZ1xuICAgICAgICAgICAgaWYoIWlzT25lKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgaW52QmV0YSA9PT0gLTEgd2UnbGwgc2F2ZSBhIG11bHRpcGxpY2F0aW9uIGNoYW5naW5nIGl0IGJ5IGEgbmVnIGZ1bmN0aW9uIGNhbGxcbiAgICAgICAgICAgICAgICBpZihpc05lZ09uZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gRnIubmVnKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5tdWwoaW52QmV0YSwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KGVsZW1lbnQsIGlfbjgpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBwb2x5bm9taWFsIGlzIGRpdmlzaWJsZSBieSBjaGVja2luZyBpZiBuIGhpZ2ggY29lZmZpY2llbnRzIGFyZSB6ZXJvXG4gICAgICAgICAgICBpZiAoaSA+IHRoaXMubGVuZ3RoKCkgLSBuIC0gMSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Gci5pc1plcm8oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBpcyBub3QgZGl2aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuLy8gZnVuY3Rpb24gZGl2aWRlQnlWYW5pc2hpbmcoZiwgbiwgcCkge1xuLy8gICAgIC8vIHBvbHlub21pYWwgZGl2aXNpb24gZihYKSAvIChYXm4gLSAxKSB3aXRoIHJlbWFpbmRlclxuLy8gICAgIC8vIHZlcnkgY2hlYXAsIDAgbXVsdGlwbGljYXRpb25zXG4vLyAgICAgLy8gc3RyYXRlZ3k6XG4vLyAgICAgLy8gc3RhcnQgd2l0aCBxKFgpID0gMCwgcihYKSA9IGYoWClcbi8vICAgICAvLyB0aGVuIHN0YXJ0IGNoYW5naW5nIHEsIHIgd2hpbGUgcHJlc2VydmluZyB0aGUgaWRlbnRpdHk6XG4vLyAgICAgLy8gZihYKSA9IHEoWCkgKiAoWF5uIC0gMSkgKyByKFgpXG4vLyAgICAgLy8gaW4gZXZlcnkgc3RlcCwgbW92ZSBoaWdoZXN0LWRlZ3JlZSB0ZXJtIG9mIHIgaW50byB0aGUgcHJvZHVjdFxuLy8gICAgIC8vID0+IHIgZXZlbnR1YWxseSBoYXMgZGVncmVlIDwgbiBhbmQgd2UncmUgZG9uZVxuLy8gICAgIGxldCBxID0gQXJyYXkoZi5sZW5ndGgpLmZpbGwoMG4pO1xuLy8gICAgIGxldCByID0gWy4uLmZdO1xuLy8gICAgIGZvciAobGV0IGkgPSBmLmxlbmd0aCAtIDE7IGkgPj0gbjsgaS0tKSB7XG4vLyAgICAgICAgIGxldCBsZWFkaW5nQ29lZmYgPSByW2ldO1xuLy8gICAgICAgICBpZiAobGVhZGluZ0NvZWZmID09PSAwbikgY29udGludWU7XG4vLyAgICAgICAgIHJbaV0gPSAwbjtcbi8vICAgICAgICAgcltpIC0gbl0gPSBtb2QocltpIC0gbl0gKyBsZWFkaW5nQ29lZmYsIHApO1xuLy8gICAgICAgICBxW2kgLSBuXSA9IG1vZChxW2kgLSBuXSArIGxlYWRpbmdDb2VmZiwgcCk7XG4vLyAgICAgfVxuLy8gICAgIHJldHVybiBbcSwgcl07XG4vLyB9XG5cbiAgICBieVgoKSB7XG4gICAgICAgIGNvbnN0IGNvZWZzID0gKHRoaXMubGVuZ3RoKCkgKyAxKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmNvZWYuYnl0ZUxlbmd0aCArIHRoaXMuRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5jb2VmLmJ5dGVMZW5ndGggKyB0aGlzLkZyLm44KTtcbiAgICAgICAgY29lZnMuc2V0KHRoaXMuRnIuemVybywgMCk7XG4gICAgICAgIGNvZWZzLnNldCh0aGlzLmNvZWYsIHRoaXMuRnIubjgpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZzO1xuICAgIH1cblxuLy8gQ29tcHV0ZSBhIG5ldyBwb2x5bm9taWFsIGYoeF5uKSBmcm9tIGYoeClcbi8vIGYoeCkgICA9IGFfMCArIGFfMcK3eCArIGFfMsK3eF4yICsgLi4uICsgYV9qwrd4Xmpcbi8vIGYoeF5uKSA9IGFfMCArIGFfMcK3eF5uICsgYV8ywrd4XjJuICsgLi4uICsgYV9qwrd4XmpuXG4gICAgc3RhdGljXG4gICAgYXN5bmMgZXhwWChwb2x5bm9taWFsLCBuLCB0cnVuY2F0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gcG9seW5vbWlhbC5GcjtcblxuICAgICAgICBpZiAobiA8IDEpIHtcbiAgICAgICAgICAgIC8vIG4gPT0gMCBub3QgYWxsb3dlZCBiZWNhdXNlIGl0IGhhcyBubyBzZW5zZSwgYnV0IGlmIGl0J3MgbmVjZXNzYXJ5IHdlIGhhdmUgdG8gcmV0dXJuXG4gICAgICAgICAgICAvLyBhIHplcm8gZGVncmVlIHBvbHlub21pYWwgd2l0aCBhIGNvbnN0YW50IGNvZWZmaWNpZW50IGVxdWFscyB0byB0aGUgc3VtIG9mIGFsbCB0aGUgb3JpZ2luYWwgY29lZmZpY2llbnRzXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb21wdXRlIGEgbmV3IHBvbHlub21pYWwgdG8gYSB6ZXJvIG9yIG5lZ2F0aXZlIG51bWJlciBpcyBub3QgYWxsb3dlZFwiKTtcbiAgICAgICAgfSBlbHNlIGlmICgxID09PSBuKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMocG9seW5vbWlhbC5jb2VmLCBjdXJ2ZSwgcG9seW5vbWlhbC5sb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGVuZ3RoIGlzIHRoZSBsZW5ndGggb2Ygbm9uLWNvbnN0YW50IGNvZWZmaWNpZW50c1xuICAgICAgICAvLyBpZiB0cnVuY2F0ZSA9PT0gdHJ1ZSwgdGhlIGhpZ2hlc3QgemVybyBjb2VmZmljaWVudHMgKGlmIGV4aXN0KSB3aWxsIGJlIHJlbW92ZWRcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdHJ1bmNhdGUgPyBwb2x5bm9taWFsLmRlZ3JlZSgpIDogKHBvbHlub21pYWwubGVuZ3RoKCkgLSAxKTtcbiAgICAgICAgY29uc3QgYnVmZmVyRHN0ID0gKGxlbmd0aCAqIG4gKyAxKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigobGVuZ3RoICogbiArIDEpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKGxlbmd0aCAqIG4gKyAxKSAqIEZyLm44KTtcblxuICAgICAgICAvLyBDb3B5IGNvbnN0YW50IGNvZWZmaWNpZW50IGFzIGlzIGJlY2F1c2UgaXMgbm90IHJlbGF0ZWQgdG8geFxuICAgICAgICBidWZmZXJEc3Quc2V0KHBvbHlub21pYWwuZ2V0Q29lZigwKSwgMCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIEZyLm44O1xuXG4gICAgICAgICAgICBjb25zdCBjb2VmID0gcG9seW5vbWlhbC5nZXRDb2VmKGkpO1xuICAgICAgICAgICAgYnVmZmVyRHN0LnNldChjb2VmLCBpX3NGciAqIG4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmZlckRzdCwgcG9seW5vbWlhbC5jdXJ2ZSwgcG9seW5vbWlhbC5sb2dnZXIpO1xuICAgIH1cblxuICAgIHNwbGl0KG51bVBvbHMsIGRlZ1BvbHMsIGJsaW5kaW5nRmFjdG9ycykge1xuICAgICAgICBpZiAobnVtUG9scyA8IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbHMgY2FuJ3QgYmUgc3BsaXQgaW4gJHtudW1Qb2xzfSBwYXJ0c2ApO1xuICAgICAgICB9IGVsc2UgaWYgKDEgPT09IG51bVBvbHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpc107XG4gICAgICAgIH1cblxuICAgICAgICAvL2JsaW5kaW5nIGZhY3RvcnMgY2FuIGJlIHZvaWQgb3IgbXVzdCBoYXZlIGEgbGVuZ3RoIG9mIG51bVBvbHMgLSAxXG4gICAgICAgIGlmICgwICE9PSBibGluZGluZ0ZhY3RvcnMubGVuZ3RoICYmIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPCBudW1Qb2xzIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCbGluZGluZyBmYWN0b3JzIGxlbmd0aCBtdXN0IGJlICR7bnVtUG9scyAtIDF9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaHVua0J5dGVMZW5ndGggPSAoZGVnUG9scyArIDEpICogdGhpcy5Gci5uODtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuXG4gICAgICAgIC8vIENoZWNrIHBvbHlub21pYWwgY2FuIGJlIHNwbGl0IGluIG51bUNodW5rcyBwYXJ0cyBvZiBjaHVua1NpemUgYnl0ZXMuLi5cbiAgICAgICAgY29uc3QgbnVtUmVhbFBvbHMgPSBNYXRoLmNlaWwoKHRoaXMuZGVncmVlKCkgKyAxKSAqIHRoaXMuRnIubjggLyBjaHVua0J5dGVMZW5ndGgpO1xuICAgICAgICBpZiAobnVtUmVhbFBvbHMgPCBudW1Qb2xzKSB7XG4gICAgICAgICAgICAvL3Rocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbCBpcyBzaG9ydCB0byBiZSBzcGxpdCBpbiAke251bVBvbHN9IHBhcnRzIG9mICR7ZGVnUG9sc30gY29lZmZpY2llbnRzIGVhY2guYCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbnVtUmVhbFBvbHM7IGkgPCBudW1Qb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXNbaV0gPSBuZXcgUG9seW5vbWlhbChuZXcgVWludDhBcnJheSh0aGlzLkZyLm44KSwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbnVtUG9scyA9IE1hdGgubWluKG51bVBvbHMsIG51bVJlYWxQb2xzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Qb2xzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IChudW1Qb2xzIC0gMSkgPT09IGk7XG4gICAgICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gaXNMYXN0ID8gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLSAoKG51bVBvbHMgLSAxKSAqIGNodW5rQnl0ZUxlbmd0aCkgOiBjaHVua0J5dGVMZW5ndGggKyB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICBsZXQgYnVmZiA9IChieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkgPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihieXRlTGVuZ3RoKSA6IG5ldyBVaW50OEFycmF5KGJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgcmVzW2ldID0gbmV3IFBvbHlub21pYWwoYnVmZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBmciA9IGkgKiBjaHVua0J5dGVMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCB0byA9IGlzTGFzdCA/IHRoaXMuY29lZi5ieXRlTGVuZ3RoIDogKGkgKyAxKSAqIGNodW5rQnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldCh0aGlzLmNvZWYuc2xpY2UoZnIsIHRvKSwgMCk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBhIGJsaW5kaW5nIGZhY3RvciBhcyBoaWdoZXIgZGVncmVlXG4gICAgICAgICAgICBpZiAoIWlzTGFzdCkge1xuICAgICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChibGluZGluZ0ZhY3RvcnNbaV0sIGNodW5rQnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN1YiBibGluZGluZyBmYWN0b3IgdG8gdGhlIGxvd2VzdCBkZWdyZWVcbiAgICAgICAgICAgIGlmICgwICE9PSBpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXN0RGVncmVlID0gdGhpcy5Gci5zdWIocmVzW2ldLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCksIGJsaW5kaW5nRmFjdG9yc1tpIC0gMV0pO1xuICAgICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChsb3dlc3REZWdyZWUsIDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldLnRydW5jYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9sb3coWClcbiAgICAgICAgLy8gbGV0IHBvbFRMb3cgPSBuZXcgQmlnQnVmZmVyKChjaHVua1NpemUgKyAxKSAqIG44cik7XG4gICAgICAgIC8vIHBvbFRMb3cuc2V0KHQuc2xpY2UoMCwgemtleS5kb21haW5TaXplICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vIEFkZCBibGluZGluZyBzY2FsYXIgYl8xMCBhcyBhIG5ldyBjb2VmZmljaWVudCBuXG4gICAgICAgIC8vIHBvbFRMb3cuc2V0KGNoLmJbMTBdLCB6a2V5LmRvbWFpblNpemUgKiBuOHIpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAvLyBjb21wdXRlIHRfbWlkKFgpXG4gICAgICAgIC8vIGxldCBwb2xUTWlkID0gbmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgMSkgKiBuOHIpO1xuICAgICAgICAvLyBwb2xUTWlkLnNldCh0LnNsaWNlKHprZXkuZG9tYWluU2l6ZSAqIG44ciwgemtleS5kb21haW5TaXplICogMiAqIG44ciksIDApO1xuICAgICAgICAvLyAvLyBTdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMCB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfbWlkXG4gICAgICAgIC8vIGNvbnN0IGxvd2VzdE1pZCA9IEZyLnN1Yihwb2xUTWlkLnNsaWNlKDAsIG44ciksIGNoLmJbMTBdKTtcbiAgICAgICAgLy8gcG9sVE1pZC5zZXQobG93ZXN0TWlkLCAwKTtcbiAgICAgICAgLy8gLy8gQWRkIGJsaW5kaW5nIHNjYWxhciBiXzExIGFzIGEgbmV3IGNvZWZmaWNpZW50IG5cbiAgICAgICAgLy8gcG9sVE1pZC5zZXQoY2guYlsxMV0sIHprZXkuZG9tYWluU2l6ZSAqIG44cik7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9oaWdoKFgpXG4gICAgICAgIC8vIGxldCBwb2xUSGlnaCA9IG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDYpICogbjhyKTtcbiAgICAgICAgLy8gcG9sVEhpZ2guc2V0KHQuc2xpY2UoemtleS5kb21haW5TaXplICogMiAqIG44ciwgKHprZXkuZG9tYWluU2l6ZSAqIDMgKyA2KSAqIG44ciksIDApO1xuICAgICAgICAvLyAvL1N1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzExIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9oaWdoXG4gICAgICAgIC8vIGNvbnN0IGxvd2VzdEhpZ2ggPSBGci5zdWIocG9sVEhpZ2guc2xpY2UoMCwgbjhyKSwgY2guYlsxMV0pO1xuICAgICAgICAvLyBwb2xUSGlnaC5zZXQobG93ZXN0SGlnaCwgMCk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHByb29mLlQxID0gYXdhaXQgZXhwVGF1KHBvbFRMb3csIFwibXVsdGlleHAgVDFcIik7XG4gICAgICAgIC8vIHByb29mLlQyID0gYXdhaXQgZXhwVGF1KHBvbFRNaWQsIFwibXVsdGlleHAgVDJcIik7XG4gICAgICAgIC8vIHByb29mLlQzID0gYXdhaXQgZXhwVGF1KHBvbFRIaWdoLCBcIm11bHRpZXhwIFQzXCIpO1xuICAgIH1cblxuLy8gc3BsaXQyKGRlZ1BvbHMsIGJsaW5kaW5nRmFjdG9ycykge1xuLy8gICAgIGxldCBjdXJyZW50RGVncmVlID0gdGhpcy5kZWdyZWUoKTtcbi8vICAgICBjb25zdCBudW1GaWxsZWRQb2xzID0gTWF0aC5jZWlsKChjdXJyZW50RGVncmVlICsgMSkgLyAoZGVnUG9scyArIDEpKTtcbi8vXG4vLyAgICAgLy9ibGluZGluZyBmYWN0b3JzIGNhbiBiZSB2b2lkIG9yIG11c3QgaGF2ZSBhIGxlbmd0aCBvZiBudW1Qb2xzIC0gMVxuLy8gICAgIGlmICgwICE9PSBibGluZGluZ0ZhY3RvcnMubGVuZ3RoICYmIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPCBudW1GaWxsZWRQb2xzIC0gMSkge1xuLy8gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJsaW5kaW5nIGZhY3RvcnMgbGVuZ3RoIG11c3QgYmUgJHtudW1GaWxsZWRQb2xzIC0gMX1gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IGNodW5rQnl0ZUxlbmd0aCA9IChkZWdQb2xzICsgMSkgKiB0aGlzLkZyLm44O1xuLy9cbi8vICAgICAvLyBDaGVjayBwb2x5bm9taWFsIGNhbiBiZSBzcGxpdCBpbiBudW1DaHVua3MgcGFydHMgb2YgY2h1bmtTaXplIGJ5dGVzLi4uXG4vLyAgICAgaWYgKHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gY2h1bmtCeXRlTGVuZ3RoIDw9IG51bUZpbGxlZFBvbHMgLSAxKSB7XG4vLyAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbCBpcyBzaG9ydCB0byBiZSBzcGxpdCBpbiAke251bUZpbGxlZFBvbHN9IHBhcnRzIG9mICR7ZGVnUG9sc30gY29lZmZpY2llbnRzIGVhY2guYCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICBsZXQgcmVzID0gW107XG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1GaWxsZWRQb2xzOyBpKyspIHtcbi8vICAgICAgICAgY29uc3QgaXNMYXN0ID0gKG51bUZpbGxlZFBvbHMgLSAxKSA9PT0gaTtcbi8vICAgICAgICAgY29uc3QgYnl0ZUxlbmd0aCA9IGlzTGFzdCA/IChjdXJyZW50RGVncmVlICsgMSkgKiB0aGlzLkZyLm44IC0gKChudW1GaWxsZWRQb2xzIC0gMSkgKiBjaHVua0J5dGVMZW5ndGgpIDogY2h1bmtCeXRlTGVuZ3RoICsgdGhpcy5Gci5uODtcbi8vXG4vLyAgICAgICAgIHJlc1tpXSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoYnl0ZUxlbmd0aCksIHRoaXMuRnIsIHRoaXMubG9nZ2VyKTtcbi8vICAgICAgICAgY29uc3QgZnIgPSBpICogY2h1bmtCeXRlTGVuZ3RoO1xuLy8gICAgICAgICBjb25zdCB0byA9IGlzTGFzdCA/IChjdXJyZW50RGVncmVlICsgMSkgKiB0aGlzLkZyLm44IDogKGkgKyAxKSAqIGNodW5rQnl0ZUxlbmd0aDtcbi8vICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZShmciwgdG8pLCAwKTtcbi8vXG4vLyAgICAgICAgIC8vIEFkZCBhIGJsaW5kaW5nIGZhY3RvciBhcyBoaWdoZXIgZGVncmVlXG4vLyAgICAgICAgIGlmICghaXNMYXN0KSB7XG4vLyAgICAgICAgICAgICByZXNbaV0uY29lZi5zZXQoYmxpbmRpbmdGYWN0b3JzW2ldLCBjaHVua0J5dGVMZW5ndGgpO1xuLy8gICAgICAgICB9XG4vL1xuLy8gICAgICAgICAvLyBTdWIgYmxpbmRpbmcgZmFjdG9yIHRvIHRoZSBsb3dlc3QgZGVncmVlXG4vLyAgICAgICAgIGlmICgwICE9PSBpKSB7XG4vLyAgICAgICAgICAgICBjb25zdCBsb3dlc3REZWdyZWUgPSB0aGlzLkZyLnN1YihyZXNbaV0uY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSwgYmxpbmRpbmdGYWN0b3JzW2kgLSAxXSk7XG4vLyAgICAgICAgICAgICByZXNbaV0uY29lZi5zZXQobG93ZXN0RGVncmVlLCAwKTtcbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIHJlcztcbi8vIH1cblxuLy8gbWVyZ2UocG9scywgb3ZlcmxhcCA9IHRydWUpIHtcbi8vICAgICBsZXQgbGVuZ3RoID0gMDtcbi8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvbHMubGVuZ3RoOyBpKyspIHtcbi8vICAgICAgICAgbGVuZ3RoICs9IHBvbHNbaV0ubGVuZ3RoKCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICBpZiAob3ZlcmxhcCkge1xuLy8gICAgICAgICBsZW5ndGggLT0gcG9scy5sZW5ndGggLSAxO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgbGV0IHJlcyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIobGVuZ3RoICogdGhpcy5Gci5uOCkpO1xuLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9scy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gcG9sc1tpXS5jb2VmLmJ5dGVMZW5ndGg7XG4vLyAgICAgICAgIGlmICgwID09PSBpKSB7XG4vLyAgICAgICAgICAgICByZXMuY29lZi5zZXQocG9sc1tpXS5jb2VmLCAwKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vXG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiByZXM7XG4vLyB9XG5cbiAgICB0cnVuY2F0ZSgpIHtcbiAgICAgICAgY29uc3QgZGVnID0gdGhpcy5kZWdyZWUoKTtcbiAgICAgICAgaWYgKGRlZyArIDEgPCB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvZWZzID0gKGRlZyArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoZGVnICsgMSkgKiB0aGlzLkZyLm44KSA6IG5ldyBVaW50OEFycmF5KChkZWcgKyAxKSAqIHRoaXMuRnIubjgpO1xuXG4gICAgICAgICAgICBuZXdDb2Vmcy5zZXQodGhpcy5jb2VmLnNsaWNlKDAsIChkZWcgKyAxKSAqIHRoaXMuRnIubjgpLCAwKTtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IG5ld0NvZWZzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oeEFyciwgeUFyciwgY3VydmUpIHtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBjb21wdXRlTGFncmFuZ2VQb2x5bm9taWFsKDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHhBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBvbHlub21pYWwuYWRkKGNvbXB1dGVMYWdyYW5nZVBvbHlub21pYWwoaSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlUG9seW5vbWlhbChpKSB7XG4gICAgICAgICAgICBsZXQgcG9seW5vbWlhbDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB4QXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBvbHlub21pYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYnVmZiA9ICh4QXJyLmxlbmd0aCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHhBcnIubGVuZ3RoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KCh4QXJyLmxlbmd0aCkgKiBGci5uOCk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigwLCBGci5uZWcoeEFycltqXSkpO1xuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFsLnNldENvZWYoMSwgRnIub25lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFsLmJ5WFN1YlZhbHVlKHhBcnJbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gcG9seW5vbWlhbC5ldmFsdWF0ZSh4QXJyW2ldKTtcbiAgICAgICAgICAgIGRlbm9taW5hdG9yID0gRnIuaW52KGRlbm9taW5hdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IG11bEZhY3RvciA9IEZyLm11bCh5QXJyW2ldLCBkZW5vbWluYXRvcik7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWwubXVsU2NhbGFyKG11bEZhY3Rvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBwb2x5bm9taWFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHplcm9maWVyUG9seW5vbWlhbCh4QXJyLCBjdXJ2ZSkge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgYnVmZiA9ICh4QXJyLmxlbmd0aCArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKCh4QXJyLmxlbmd0aCArIDEpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKHhBcnIubGVuZ3RoICsgMSkgKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2x5bm9taWFsID0gbmV3IFBvbHlub21pYWwoYnVmZiwgY3VydmUpO1xuXG4gICAgICAgIC8vIEJ1aWxkIGEgemVyb2ZpZXIgcG9seW5vbWlhbCB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybTpcbiAgICAgICAgLy8gemVyb2ZpZXIoWCkgPSAoWC14QXJyWzBdKShYLXhBcnJbMV0pLi4uKFgteEFycltuXSlcbiAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDAsIEZyLm5lZyh4QXJyWzBdKSk7XG4gICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigxLCBGci5vbmUpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgeEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcG9seW5vbWlhbC5ieVhTdWJWYWx1ZSh4QXJyW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIHByaW50KCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGxldCByZXMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kZWdyZWUoKTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSB0aGlzLmdldENvZWYoaSk7XG4gICAgICAgICAgICBpZiAoIUZyLmVxKEZyLnplcm8sIGNvZWYpKSB7XG4gICAgICAgICAgICAgICAgaWYgKEZyLmlzTmVnYXRpdmUoY29lZikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiIC0gXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICE9PSB0aGlzLmRlZ3JlZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIiArIFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXMgKz0gRnIudG9TdHJpbmcoY29lZik7XG4gICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBpID4gMSA/IFwieF5cIiArIGkgOiBcInhcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICB9XG5cbiAgICBhc3luYyBtdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIG5hbWUpIHtcbiAgICAgICAgY29uc3QgbiA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgY29uc3QgUFRhdU4gPSBQVGF1LnNsaWNlKDAsIG4gKiB0aGlzLkcxLkYubjggKiAyKTtcbiAgICAgICAgY29uc3QgYm0gPSBhd2FpdCB0aGlzLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkodGhpcy5jb2VmKTtcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMuRzEubXVsdGlFeHBBZmZpbmUoUFRhdU4sIGJtLCB0aGlzLmxvZ2dlciwgbmFtZSk7XG4gICAgICAgIHJlcyA9IHRoaXMuRzEudG9BZmZpbmUocmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihldmFsdWF0aW9ucywgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLmV2YWwgPSBldmFsdWF0aW9ucztcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLkZyID0gY3VydmUuRnI7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBmcm9tUG9seW5vbWlhbChwb2x5bm9taWFsLCBleHRlbnNpb24sIGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgY29lZmZpY2llbnRzTiA9IG5ldyBCaWdCdWZmZXIocG9seW5vbWlhbC5sZW5ndGgoKSAqIGV4dGVuc2lvbiAqIGN1cnZlLkZyLm44KTtcbiAgICAgICAgY29lZmZpY2llbnRzTi5zZXQocG9seW5vbWlhbC5jb2VmLCAwKTtcblxuICAgICAgICBjb25zdCBldmFsdWF0aW9ucyA9IGF3YWl0IGN1cnZlLkZyLmZmdChjb2VmZmljaWVudHNOKTtcblxuICAgICAgICByZXR1cm4gbmV3IEV2YWx1YXRpb25zKGV2YWx1YXRpb25zLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBnZXRFdmFsdWF0aW9uKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGlfbjggPSBpbmRleCAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgaWYgKGlfbjggKyB0aGlzLkZyLm44ID4gdGhpcy5ldmFsLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV2YWx1YXRpb25zLmdldEV2YWx1YXRpb24oKSBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbC5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgbGVuZ3RoKCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5ldmFsLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBpZiAobGVuZ3RoICE9PSBNYXRoLmZsb29yKHRoaXMuZXZhbC5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgZXZhbHVhdGlvbnMgYnVmZmVyIGhhcyBpbmNvcnJlY3Qgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoMCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiUG9seW5vbWlhbCBoYXMgbGVuZ3RoIHplcm9cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogSW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXBlcjogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxOS85NTMucGRmIHNlY3Rpb24gOC40ICovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIHV0aWxzLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7c3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5pbXBvcnQgeyBNdWxaIH0gZnJvbSBcIi4vbXVsX3ouanNcIjtcbmltcG9ydCB7ICBaS0VZX1BMX0hFQURFUl9TRUNUSU9OLFxuICAgIFpLRVlfUExfQURESVRJT05TX1NFQ1RJT04sXG4gICAgWktFWV9QTF9BX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfUExfQl9NQVBfU0VDVElPTixcbiAgICBaS0VZX1BMX0NfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RTV9TRUNUSU9OLFxuICAgIFpLRVlfUExfUUxfU0VDVElPTixcbiAgICBaS0VZX1BMX1FSX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RT19TRUNUSU9OLFxuICAgIFpLRVlfUExfUUNfU0VDVElPTixcbiAgICBaS0VZX1BMX1NJR01BX1NFQ1RJT04sXG4gICAgWktFWV9QTF9MQUdSQU5HRV9TRUNUSU9OLFxuICAgIFpLRVlfUExfUFRBVV9TRUNUSU9OLFxufSBmcm9tIFwiLi9wbG9ua19jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCB7IEV2YWx1YXRpb25zIH0gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuICAgIFxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGxvbmsxNlByb3ZlKHprZXlGaWxlTmFtZSwgd2l0bmVzc0ZpbGVOYW1lLCBsb2dnZXIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7ZmQ6IGZkV3Rucywgc2VjdGlvbnM6IHNlY3Rpb25zV3Ruc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUod2l0bmVzc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIC8vIFJlYWQgd2l0bmVzcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZVwiKTtcbiAgICBjb25zdCB3dG5zID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCBzZWN0aW9uc1d0bnMpO1xuXG4gICAgLy8gUmVhZCB6a2V5IGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgemtleSBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogemtleVNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgemtleVNlY3Rpb25zLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwicGxvbmtcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IHBsb25rXCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgIHd0bnMucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBpZiAod3Rucy5uV2l0bmVzcyAhPSB6a2V5Lm5WYXJzIC16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgbGVuZ3RoLiBDaXJjdWl0OiAke3prZXkublZhcnN9LCB3aXRuZXNzOiAke3d0bnMubldpdG5lc3N9LCAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNEb21haW4gPSB6a2V5LmRvbWFpblNpemUgKiBuOHI7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIiAgUExPTksgUFJPVkUgU0VUVElOR1NcIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDaXJjdWl0IHBvd2VyOiAke3prZXkucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBEb21haW4gc2l6ZTogICAke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFZhcnM6ICAgICAgICAgICR7emtleS5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFB1YmxpYyB2YXJzOiAgICR7emtleS5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgQ29uc3RyYWludHM6ICAgJHt6a2V5Lm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIEFkZGl0aW9uczogICAgICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vUmVhZCB3aXRuZXNzIGRhdGFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlIGRhdGFcIik7XG4gICAgY29uc3QgYnVmZldpdG5lc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRXdG5zLCBzZWN0aW9uc1d0bnMsIDIpO1xuXG4gICAgLy8gRmlyc3QgZWxlbWVudCBpbiBwbG9uayBpcyBub3QgdXNlZCBhbmQgY2FuIGJlIGFueSB2YWx1ZS4gKEJ1dCBhbHdheXMgdGhlIHNhbWUpLlxuICAgIC8vIFdlIHNldCBpdCB0byB6ZXJvIHRvIGdvIGZhc3RlciBpbiB0aGUgZXhwb25lbnRpYXRpb25zLlxuICAgIGJ1ZmZXaXRuZXNzLnNldChGci56ZXJvLCAwKTtcbiAgICBjb25zdCBidWZmSW50ZXJuYWxXaXRuZXNzID0gbmV3IEJpZ0J1ZmZlcihuOHIqemtleS5uQWRkaXRpb25zKTtcblxuICAgIGxldCBidWZmZXJzID0ge307XG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG5cbiAgICBsZXQgY2hhbGxlbmdlcyA9IHt9O1xuICAgIGxldCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfUExfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICBhd2FpdCBjYWxjdWxhdGVBZGRpdGlvbnMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1NJR01BX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBwb2x5bm9taWFscyBcIik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWExID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEyID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNSAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEzLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyAxMCAqIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IFJlYWRpbmcgU2lnbWEgZXZhbHVhdGlvbnNcIik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWExID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTIgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlNpZ21hMS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfU0lHTUFfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEyLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNiAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEzLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgMTEgKiBzRG9tYWluKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICBjb25zdCBQVGF1ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX1BUQVVfU0VDVElPTik7XG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHViID0gYnVmZldpdG5lc3Muc2xpY2UoaSpGci5uOCwgaSpGci5uOCtGci5uOCk7XG4gICAgICAgIHB1YmxpY1NpZ25hbHMucHVzaChTY2FsYXIuZnJvbVJwckxFKHB1YikpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDFcIik7XG4gICAgYXdhaXQgcm91bmQxKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDJcIik7XG4gICAgYXdhaXQgcm91bmQyKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDNcIik7XG4gICAgYXdhaXQgcm91bmQzKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDRcIik7XG4gICAgYXdhaXQgcm91bmQ0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDVcIik7XG4gICAgYXdhaXQgcm91bmQ1KCk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEZpbmFsIGFkanVzdG1lbnRzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgLy8gUHJlcGFyZSBwcm9vZlxuICAgIGxldCBfcHJvb2YgPSBwcm9vZi50b09iamVjdFByb29mKGZhbHNlKTtcbiAgICBfcHJvb2YucHJvdG9jb2wgPSBcInBsb25rXCI7XG4gICAgX3Byb29mLmN1cnZlID0gY3VydmUubmFtZTtcbiAgICBcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJQTE9OSyBQUk9WRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9vZjogc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpLFxuICAgICAgICBwdWJsaWNTaWduYWxzOiBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpXG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUFkZGl0aW9ucygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBhZGRpdGlvbnNcIik7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0J1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIHNpemVzOiB3aXJlSWRfeCA9IDQgYnl0ZXMgKDMyIGJpdHMpLCBmYWN0b3JfeCA9IGZpZWxkIHNpemUgYml0c1xuICAgICAgICAvLyBBZGRpdGlvbiBmb3JtOiB3aXJlSWRfYSB3aXJlSWRfYiBmYWN0b3JfYSBmYWN0b3JfYiAoc2l6ZSBpcyA0ICsgNCArIHNGciArIHNGcilcbiAgICAgICAgY29uc3Qgc1N1bSA9IDggKyBuOHIgKiAyO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmRlYnVnKGAgICAgYWRkaXRpb24gJHtpfS8ke3prZXkubkFkZGl0aW9uc31gKTtcblxuICAgICAgICAgICAgLy8gUmVhZCBhZGRpdGlvbiB2YWx1ZXNcbiAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpICogc1N1bTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkMSA9IHJlYWRVSW50MzIoYWRkaXRpb25zQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQyID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IxID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIG44cik7XG4gICAgICAgICAgICBvZmZzZXQgKz0gbjhyO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yMiA9IGFkZGl0aW9uc0J1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBuOHIpO1xuXG4gICAgICAgICAgICAvLyBHZXQgd2l0bmVzcyB2YWx1ZVxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzczEgPSBnZXRXaXRuZXNzKHNpZ25hbElkMSk7XG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMiA9IGdldFdpdG5lc3Moc2lnbmFsSWQyKTtcblxuICAgICAgICAgICAgLy9DYWxjdWxhdGUgZmluYWwgcmVzdWx0XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBGci5hZGQoRnIubXVsKGZhY3RvcjEsIHdpdG5lc3MxKSwgRnIubXVsKGZhY3RvcjIsIHdpdG5lc3MyKSk7XG5cbiAgICAgICAgICAgIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2V0KHJlc3VsdCwgbjhyICogaSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkVUludDMyKGIsIG8pIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGIuc2xpY2Uobywgbys0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzKGlkeCkge1xuICAgICAgICBpZiAoaWR4IDwgemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmV2l0bmVzcy5zbGljZShpZHgqbjhyLCBpZHgqbjhyK244cik7XG4gICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgemtleS5uVmFycykge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2xpY2UoKGlkeCAtICh6a2V5Lm5WYXJzLXprZXkubkFkZGl0aW9ucykpKm44ciwgKGlkeC0oemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpKSpuOHIgKyBuOHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnZlLkZyLnplcm87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDEoKSB7XG4gICAgICAgIC8vIFNURVAgMS4xIC0gR2VuZXJhdGUgcmFuZG9tIGJsaW5kaW5nIHNjYWxhcnMgKGIxLCAuLi4sIGIxMSkg4oiIIEZcbiAgICAgICAgY2hhbGxlbmdlcy5iID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTw9MTE7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy5iW2ldID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDEuMiAtIENvbXB1dGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgd2lyZSBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVdpcmVQb2x5bm9taWFscygpO1xuXG4gICAgICAgIC8vIFNURVAgMS4zIC0gQ29tcHV0ZSBbYV1fMSwgW2JdXzEsIFtjXV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0QSA9IGF3YWl0IHBvbHlub21pYWxzLkEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIkFcIik7XG4gICAgICAgIGxldCBjb21taXRCID0gYXdhaXQgcG9seW5vbWlhbHMuQi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQlwiKTtcbiAgICAgICAgbGV0IGNvbW1pdEMgPSBhd2FpdCBwb2x5bm9taWFscy5DLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDXCIpO1xuXG4gICAgICAgIC8vIEZpcnN0IG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQV1fMSwgW0JdXzEsIFtDXV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiQVwiLCBjb21taXRBKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkJcIiwgY29tbWl0Qik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDXCIsIGNvbW1pdEMpO1xuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVXaXJlUG9seW5vbWlhbHMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBSZWFkaW5nIGRhdGEgZnJvbSB6a2V5IGZpbGVcIik7XG5cbiAgICAgICAgLy8gQnVpbGQgQSwgQiBhbmQgQyBldmFsdWF0aW9ucyBidWZmZXIgZnJvbSB6a2V5IGFuZCB3aXRuZXNzIGZpbGVzXG4gICAgICAgIGJ1ZmZlcnMuQSA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQyA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCB6a2V5IGZpbGUgdG8gdGhlIGJ1ZmZlcnNcbiAgICAgICAgY29uc3QgYU1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQV9NQVBfU0VDVElPTik7XG4gICAgICAgIGNvbnN0IGJNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX0JfTUFQX1NFQ1RJT04pO1xuICAgICAgICBjb25zdCBjTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9QTF9DX01BUF9TRUNUSU9OKTtcblxuICAgICAgICAvLyBDb21wdXRlIGFsbCB3aXRuZXNzIGZyb20gc2lnbmFsIGlkcyBhbmQgc2V0IHRoZW0gdG8gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogbjhyO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaSAqIDQ7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgQSB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZEEgPSByZWFkVUludDMyKGFNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgYnVmZmVycy5BLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQSksIGlfc0ZyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBCIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQiA9IHJlYWRVSW50MzIoYk1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBidWZmZXJzLkIuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRCKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIEMgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRDID0gcmVhZFVJbnQzMihjTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEMpLCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmZXJzLkEgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkEpO1xuICAgICAgICBidWZmZXJzLkIgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkIpO1xuICAgICAgICBidWZmZXJzLkMgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkMpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpIGZyb20gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5BID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5BLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkIgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLkIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgaWZmdFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQyA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBmZnRcIik7XG4gICAgICAgIGV2YWx1YXRpb25zLkEgPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5BLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGZmdFwiKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuQiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkIsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5DID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQywgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgYShYKSwgYihYKSBhbmQgYyhYKSBwb2x5bm9taWFscyBjb2VmZmljaWVudHMgd2l0aCBibGluZGluZyBzY2FsYXJzIGJcbiAgICAgICAgcG9seW5vbWlhbHMuQS5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzJdLCBjaGFsbGVuZ2VzLmJbMV1dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQi5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzRdLCBjaGFsbGVuZ2VzLmJbM11dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQy5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzZdLCBjaGFsbGVuZ2VzLmJbNV1dKTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVzXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5BLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5CLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5DLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9ICAgICAgICBcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDIoKSB7XG4gICAgICAgIC8vIFNURVAgMi4xIC0gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YSBhbmQgZ2FtbWEg4oiIIEZcbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBjaGFsbGVuZ2VzIGJldGEgYW5kIGdhbW1hXCIpO1xuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG5cbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW0pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RbCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlFyKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW8pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RYyk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlMxKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUzIpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5TMyk7XG5cbiAgICAgICAgLy8gQWRkIEEgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoYnVmZmVycy5BLnNsaWNlKGkgKiBuOHIsIGkgKiBuOHIgKyBuOHIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBBLCBCLCBDIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQ1wiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy5iZXRhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmJldGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgZ2FtbWFcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSwgMTYpKTtcbiAgICBcbiAgICAgICAgLy8gU1RFUCAyLjIgLSBDb21wdXRlIHBlcm11dGF0aW9uIHBvbHlub21pYWwgeihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBaIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVaKCk7XG5cbiAgICAgICAgLy8gU1RFUCAyLjMgLSBDb21wdXRlIHBlcm11dGF0aW9uIFt6XV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFogTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0WiA9IGF3YWl0IHBvbHlub21pYWxzLloubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlpcIik7XG5cbiAgICAgICAgLy8gU2Vjb25kIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbWl1fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlpcIiwgY29tbWl0Wik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVooKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICBsZXQgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgbGV0IGRlbkFyciA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCB2YWx1ZXMgdG8gMVxuICAgICAgICBudW1BcnIuc2V0KEZyLm9uZSwgMCk7XG4gICAgICAgIGRlbkFyci5zZXQoRnIub25lLCAwKTtcblxuICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9uOHIgPSBpICogbjhyO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBhID0gYnVmZmVycy5BLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZmVycy5CLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBjID0gYnVmZmVycy5DLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG5cbiAgICAgICAgICAgIC8vIFooWCkgOj0gbnVtQXJyIC8gZGVuQXJyXG4gICAgICAgICAgICAvLyBudW1BcnIgOj0gKGEgKyBiZXRhwrfPiSArIGdhbW1hKShiICsgYmV0YcK3z4nCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrfPicK3azIgKyBnYW1tYSlcbiAgICAgICAgICAgIGNvbnN0IGJldGF3ID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgdyk7XG5cbiAgICAgICAgICAgIGxldCBuMSA9IEZyLmFkZChhLCBiZXRhdyk7XG4gICAgICAgICAgICBuMSA9IEZyLmFkZChuMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBuMiA9IEZyLmFkZChiLCBGci5tdWwoemtleS5rMSwgYmV0YXcpKTtcbiAgICAgICAgICAgIG4yID0gRnIuYWRkKG4yLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IG4zID0gRnIuYWRkKGMsIEZyLm11bCh6a2V5LmsyLCBiZXRhdykpO1xuICAgICAgICAgICAgbjMgPSBGci5hZGQobjMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgbnVtID0gRnIubXVsKG4xLCBGci5tdWwobjIsIG4zKSk7XG5cbiAgICAgICAgICAgIC8vIGRlbkFyciA6PSAoYSArIGJldGHCt3NpZ21hMSArIGdhbW1hKShiICsgYmV0YcK3c2lnbWEyICsgZ2FtbWEpKGMgKyBiZXRhwrdzaWdtYTMgKyBnYW1tYSlcbiAgICAgICAgICAgIGxldCBkMSA9IEZyLmFkZChhLCBGci5tdWwoZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSAqIDQpLCBjaGFsbGVuZ2VzLmJldGEpKTtcbiAgICAgICAgICAgIGQxID0gRnIuYWRkKGQxLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGQyID0gRnIuYWRkKGIsIEZyLm11bChldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpICogNCksIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICAgICAgZDIgPSBGci5hZGQoZDIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZDMgPSBGci5hZGQoYywgRnIubXVsKGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkgKiA0KSwgY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgICAgICBkMyA9IEZyLmFkZChkMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBkZW4gPSBGci5tdWwoZDEsIEZyLm11bChkMiwgZDMpKTtcblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBudW0gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIG51bUFyclxuICAgICAgICAgICAgbnVtID0gRnIubXVsKG51bUFyci5zbGljZShpX244ciwgaV9uOHIgKyBuOHIpLCBudW0pO1xuICAgICAgICAgICAgbnVtQXJyLnNldChudW0sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIG44cik7XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgZGVuIHZhbHVlIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzYXZlZCBpbiBkZW5BcnJcbiAgICAgICAgICAgIGRlbiA9IEZyLm11bChkZW5BcnIuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKSwgZGVuKTtcbiAgICAgICAgICAgIGRlbkFyci5zZXQoZGVuLCAoKGkgKyAxKSAlIHprZXkuZG9tYWluU2l6ZSkgKiBuOHIpO1xuXG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaW52ZXJzZSBvZiBkZW5BcnIgdG8gY29tcHV0ZSBpbiB0aGUgbmV4dCBjb21tYW5kIHRoZVxuICAgICAgICAvLyBkaXZpc2lvbiBudW1BcnIvZGVuQXJyIGJ5IG11bHRpcGx5aW5nIG51bSDCtyAxL2RlbkFyclxuICAgICAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgICAgICAvLyBUT0RPOiBEbyBpdCBpbiBhc3NlbWJseSBhbmQgaW4gcGFyYWxsZWxcbiAgICAgICAgLy8gTXVsdGlwbHkgbnVtQXJyIMK3IGRlbkFyciB3aGVyZSBkZW5BcnIgd2FzIGludmVydGVkIGluIHRoZSBwcmV2aW91cyBjb21tYW5kXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIG44cjtcblxuICAgICAgICAgICAgY29uc3QgeiA9IEZyLm11bChudW1BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgbjhyKSwgZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIG44cikpO1xuICAgICAgICAgICAgbnVtQXJyLnNldCh6LCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGcm9tIG5vdyBvbiB0aGUgdmFsdWVzIHNhdmVkIG9uIG51bUFyciB3aWxsIGJlIFooWCkgYnVmZmVyXG4gICAgICAgIGJ1ZmZlcnMuWiA9IG51bUFycjtcblxuICAgICAgICBpZiAoIUZyLmVxKG51bUFyci5zbGljZSgwLCBuOHIpLCBGci5vbmUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3B5IGNvbnN0cmFpbnRzIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB6KFgpIGZyb20gYnVmZmVycy5aXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5aID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5aLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIHooWCkgcG9seW5vbWlhbFxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFogZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5aID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuWiwgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgeihYKSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICBwb2x5bm9taWFscy5aLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbOV0sIGNoYWxsZW5nZXMuYls4XSwgY2hhbGxlbmdlcy5iWzddXSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5aLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlogUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuWjtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSBhbHBoYVwiKTtcblxuICAgICAgICAvLyBTVEVQIDMuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgYWxwaGEg4oiIIEZcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJaXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgY2hhbGxlbmdlcy5hbHBoYTIgPSBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmFscGhhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYWxwaGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBxdW90aWVudCBwb2x5bm9taWFsIFQoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgVCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVCgpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgW1QxXV8xLCBbVDJdXzEsIFtUM11fMVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBUIE1TTVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFQxID0gYXdhaXQgcG9seW5vbWlhbHMuVDEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlQxXCIpO1xuICAgICAgICBsZXQgY29tbWl0VDIgPSBhd2FpdCBwb2x5bm9taWFscy5UMi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVDJcIik7XG4gICAgICAgIGxldCBjb21taXRUMyA9IGF3YWl0IHBvbHlub21pYWxzLlQzLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJUM1wiKTtcblxuICAgICAgICAvLyBUaGlyZCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1QxXV8xLCBbVDJdXzEsIFtUM11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQxXCIsIGNvbW1pdFQxKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQyXCIsIGNvbW1pdFQyKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQzXCIsIGNvbW1pdFQzKTsgICAgICAgIFxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUKCkge1xuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGDCt8K3wrcgUmVhZGluZyBzZWN0aW9ucyAke1pLRVlfUExfUUxfU0VDVElPTn0sICR7WktFWV9QTF9RUl9TRUNUSU9OfWAgK1xuICAgICAgICAgICAgICAgIGAsICR7WktFWV9QTF9RTV9TRUNUSU9OfSwgJHtaS0VZX1BMX1FPX1NFQ1RJT059LCAke1pLRVlfUExfUUNfU0VDVElPTn0uIFEgc2VsZWN0b3JzYCk7XG4gICAgICAgIC8vIFJlc2VydmUgbWVtb3J5IGZvciBRJ3MgZXZhbHVhdGlvbnNcbiAgICAgICAgZXZhbHVhdGlvbnMuUUwgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RUiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zLlFNID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuUU8gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RQyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTC5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFSLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RUl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuUU0uZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1FNX1NFQ1RJT05dWzBdLnAgKyBzRG9tYWluKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFDLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RQ19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCBMYWdyYW5nZSBwb2x5bm9taWFscyAmIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGV2YWx1YXRpb25zLkxhZ3JhbmdlID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQgKiB6a2V5Lm5QdWJsaWMpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLkxhZ3JhbmdlLmV2YWwsIGkgKiBzRG9tYWluICogNCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT05dWzBdLnAgKyBpICogNSAqIHNEb21haW4gKyBzRG9tYWluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZlcnMuVCA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpO1xuICAgICAgICBidWZmZXJzLlR6ID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZSAqIDQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKVxuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgICAgICAgVCBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICBjb25zdCBhID0gZXZhbHVhdGlvbnMuQS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgYiA9IGV2YWx1YXRpb25zLkIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCB6ID0gZXZhbHVhdGlvbnMuWi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgencgPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oKHprZXkuZG9tYWluU2l6ZSAqIDQgKyA0ICsgaSkgJSAoemtleS5kb21haW5TaXplICogNCkpO1xuXG4gICAgICAgICAgICBjb25zdCBxbSA9IGV2YWx1YXRpb25zLlFNLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbCA9IGV2YWx1YXRpb25zLlFMLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxciA9IGV2YWx1YXRpb25zLlFSLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbyA9IGV2YWx1YXRpb25zLlFPLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxYyA9IGV2YWx1YXRpb25zLlFDLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBzMSA9IGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgczIgPSBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHMzID0gZXZhbHVhdGlvbnMuU2lnbWEzLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwID0gRnIuYWRkKGNoYWxsZW5nZXMuYlsyXSwgRnIubXVsKGNoYWxsZW5nZXMuYlsxXSwgdykpO1xuICAgICAgICAgICAgY29uc3QgYnAgPSBGci5hZGQoY2hhbGxlbmdlcy5iWzRdLCBGci5tdWwoY2hhbGxlbmdlcy5iWzNdLCB3KSk7XG4gICAgICAgICAgICBjb25zdCBjcCA9IEZyLmFkZChjaGFsbGVuZ2VzLmJbNl0sIEZyLm11bChjaGFsbGVuZ2VzLmJbNV0sIHcpKTtcblxuICAgICAgICAgICAgY29uc3QgdzIgPSBGci5zcXVhcmUodyk7XG4gICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgdzIpLCBGci5tdWwoY2hhbGxlbmdlcy5iWzhdLCB3KSksIGNoYWxsZW5nZXMuYls5XSk7XG4gICAgICAgICAgICBjb25zdCB3VyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgICAgIGNvbnN0IHdXMiA9IEZyLnNxdWFyZSh3Vyk7XG4gICAgICAgICAgICBjb25zdCB6V3AgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIHdXMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIHdXKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgIGxldCBwaSA9IEZyLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHprZXkublB1YmxpYzsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKGogKiA0ICogemtleS5kb21haW5TaXplKSArIGk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsUG9sID0gZXZhbHVhdGlvbnMuTGFncmFuZ2UuZ2V0RXZhbHVhdGlvbihvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFWYWwgPSBidWZmZXJzLkEuc2xpY2UoaiAqIG44ciwgKGogKyAxKSAqIG44cik7XG5cbiAgICAgICAgICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKGxQb2wsIGFWYWwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZTEgOj0gYShYKWIoWClxTShYKSArIGEoWClxTChYKSArIGIoWClxUihYKSArIGMoWClxTyhYKSArIFBJKFgpICsgcUMoWClcbiAgICAgICAgICAgIGxldCBbZTEsIGUxel0gPSBNdWxaLm11bDIoYSwgYiwgYXAsIGJwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTEgPSBGci5tdWwoZTEsIHFtKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLm11bChlMXosIHFtKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIEZyLm11bChhLCBxbCkpO1xuICAgICAgICAgICAgZTF6ID0gRnIuYWRkKGUxeiwgRnIubXVsKGFwLCBxbCkpO1xuXG4gICAgICAgICAgICBlMSA9IEZyLmFkZChlMSwgRnIubXVsKGIsIHFyKSk7XG4gICAgICAgICAgICBlMXogPSBGci5hZGQoZTF6LCBGci5tdWwoYnAsIHFyKSk7XG5cbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBGci5tdWwoYywgcW8pKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLmFkZChlMXosIEZyLm11bChjcCwgcW8pKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIHBpKTtcbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBxYyk7XG5cbiAgICAgICAgICAgIC8vIGUyIDo9IM6xWyhhKFgpICsgzrJYICsgzrMpKGIoWCkgKyDOsmsxWCArIM6zKShjKFgpICsgzrJrMlggKyDOsyl6KFgpXVxuICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcbiAgICAgICAgICAgIGxldCBlMmEgPSBhO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgYmV0YXcpO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlMmIgPSBiO1xuICAgICAgICAgICAgZTJiID0gRnIuYWRkKGUyYiwgRnIubXVsKGJldGF3LCB6a2V5LmsxKSk7XG4gICAgICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUyYyA9IGM7XG4gICAgICAgICAgICBlMmMgPSBGci5hZGQoZTJjLCBGci5tdWwoYmV0YXcsIHprZXkuazIpKTtcbiAgICAgICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTJkID0gejtcblxuICAgICAgICAgICAgbGV0IFtlMiwgZTJ6XSA9IE11bFoubXVsNChlMmEsIGUyYiwgZTJjLCBlMmQsIGFwLCBicCwgY3AsIHpwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTIgPSBGci5tdWwoZTIsIGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZTJ6ID0gRnIubXVsKGUyeiwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICAgICAgICAgIC8vIGUzIDo9IM6xWyhhKFgpICsgzrJTz4MxKFgpICsgzrMpKGIoWCkgKyDOslPPgzIoWCkgKyDOsykoYyhYKSArIM6yU8+DMyhYKSArIM6zKXooWM+JKV1cbiAgICAgICAgICAgIGxldCBlM2EgPSBhO1xuICAgICAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgczEpKTtcbiAgICAgICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTNiID0gYjtcbiAgICAgICAgICAgIGUzYiA9IEZyLmFkZChlM2IsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHMyKSk7XG4gICAgICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUzYyA9IGM7XG4gICAgICAgICAgICBlM2MgPSBGci5hZGQoZTNjLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzMykpO1xuICAgICAgICAgICAgZTNjID0gRnIuYWRkKGUzYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlM2QgPSB6dztcbiAgICAgICAgICAgIGxldCBbZTMsIGUzel0gPSBNdWxaLm11bDQoZTNhLCBlM2IsIGUzYywgZTNkLCBhcCwgYnAsIGNwLCB6V3AsIGkgJSA0LCBGcik7XG5cbiAgICAgICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgICAgIGUzeiA9IEZyLm11bChlM3osIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgICAgICAvLyBlNCA6PSDOsV4yKHooWCniiJIxKUwxKFgpXG4gICAgICAgICAgICBsZXQgZTQgPSBGci5zdWIoeiwgRnIub25lKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBldmFsdWF0aW9ucy5MYWdyYW5nZS5nZXRFdmFsdWF0aW9uKGkpKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgICAgIGxldCBlNHogPSBGci5tdWwoenAsIGV2YWx1YXRpb25zLkxhZ3JhbmdlLmdldEV2YWx1YXRpb24oaSkpO1xuICAgICAgICAgICAgZTR6ID0gRnIubXVsKGU0eiwgY2hhbGxlbmdlcy5hbHBoYTIpO1xuXG5cbiAgICAgICAgICAgIGxldCB0ID0gRnIuYWRkKEZyLnN1YihGci5hZGQoZTEsIGUyKSwgZTMpLCBlNCk7XG4gICAgICAgICAgICBsZXQgdHogPSBGci5hZGQoRnIuc3ViKEZyLmFkZChlMXosIGUyeiksIGUzeiksIGU0eik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuVC5zZXQodCwgaSAqIG44cik7XG4gICAgICAgICAgICBidWZmZXJzLlR6LnNldCh0eiwgaSAqIG44cik7XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1t6a2V5LnBvd2VyICsgMl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQwKFgpIGZyb20gYnVmZmVycy5UMFxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlQgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMCBieSBaX0goWClcbiAgICAgICAgaWYgKGxvZ2dlcilcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVCAvIFpIXCIpO1xuICAgICAgICBwb2x5bm9taWFscy5ULmRpdlpoKHprZXkuZG9tYWluU2l6ZSwgNCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFR6KFgpIGZyb20gYnVmZmVycy5UelxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUeiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5UeiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVHosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgcG9seW5vbWlhbCBUMXogdG8gVDEgdG8gZ2V0IHRoZSBmaW5hbCBwb2x5bm9taWFsIFQxXG4gICAgICAgIHBvbHlub21pYWxzLlQuYWRkKHBvbHlub21pYWxzLlR6KTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgaWYgKHBvbHlub21pYWxzLlQuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICogMyArIDYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlQgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdCh4KSBoYXMgZGVncmVlIDNuICsgNSwgd2UgYXJlIGdvaW5nIHRvIHNwbGl0IHQoeCkgaW50byB0aHJlZSBzbWFsbGVyIHBvbHlub21pYWxzOlxuICAgICAgICAvLyBUMScgYW5kIFQyJyAgd2l0aCBhIGRlZ3JlZSA8IG4gYW5kIFQzJyB3aXRoIGEgZGVncmVlIG4rNVxuICAgICAgICAvLyBzdWNoIHRoYXQgdCh4KSA9IFQxJyhYKSArIFhebiBUMicoWCkgKyBYXnsybn0gVDMnKFgpXG4gICAgICAgIC8vIFRvIHJhbmRvbWl6ZSB0aGUgcGFydHMgd2UgdXNlIGJsaW5kaW5nIHNjYWxhcnMgYl8xMCBhbmQgYl8xMSBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgY2hhbmdlIHQoWCk6XG4gICAgICAgIC8vIFQxKFgpID0gVDEnKFgpICsgYl8xMCBYXm5cbiAgICAgICAgLy8gVDIoWCkgPSBUMicoWCkgLSBiXzEwICsgYl8xMSBYXm5cbiAgICAgICAgLy8gVDMoWCkgPSBUMycoWCkgLSBiXzExXG4gICAgICAgIC8vIHN1Y2ggdGhhdFxuICAgICAgICAvLyB0KFgpID0gVDEoWCkgKyBYXm4gVDIoWCkgKyBYXjJuIFQzKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVDEsIFQyLCBUMyBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyAxKSAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5UMiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDEpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlQzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBwb2x5bm9taWFscy5UMS5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2UoMCwgc0RvbWFpbiksIDApO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2Uoc0RvbWFpbiwgc0RvbWFpbiAqIDIpLCAwKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDMuY29lZi5zZXQocG9seW5vbWlhbHMuVC5jb2VmLnNsaWNlKHNEb21haW4gKiAyLCBzRG9tYWluICogMyArIDYgKiBuOHIpLCAwKTtcblxuICAgICAgICAvLyBBZGQgYmxpbmRpbmcgc2NhbGFyIGJfMTAgYXMgYSBuZXcgY29lZmZpY2llbnQgblxuICAgICAgICBwb2x5bm9taWFscy5UMS5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzEwXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X21pZChYKVxuICAgICAgICAvLyBTdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMCB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfbWlkXG4gICAgICAgIGNvbnN0IGxvd2VzdE1pZCA9IEZyLnN1Yihwb2x5bm9taWFscy5UMi5nZXRDb2VmKDApLCBjaGFsbGVuZ2VzLmJbMTBdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDIuc2V0Q29lZigwLCBsb3dlc3RNaWQpO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzExXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X2hpZ2goWClcbiAgICAgICAgLy9TdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMSB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfaGlnaFxuICAgICAgICBjb25zdCBsb3dlc3RIaWdoID0gRnIuc3ViKHBvbHlub21pYWxzLlQzLmdldENvZWYoMCksIGNoYWxsZW5nZXMuYlsxMV0pO1xuICAgICAgICBwb2x5bm9taWFscy5UMy5zZXRDb2VmKDAsIGxvd2VzdEhpZ2gpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNCgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHhpXCIpO1xuXG4gICAgICAgIC8vIFNURVAgNC4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB4aSDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIlQxXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJUMlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVDNcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGksIDE2KSk7ICBcblxuICAgICAgICAvLyBGb3VydGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKCBhKHhpKSwgYih4aSksIGMoeGkpLCBzMSh4aSksIHMyKHhpKSwgeih4aXcpIClcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYVwiLCBwb2x5bm9taWFscy5BLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYlwiLCBwb2x5bm9taWFscy5CLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfY1wiLCBwb2x5bm9taWFscy5DLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczFcIiwgcG9seW5vbWlhbHMuU2lnbWExLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczJcIiwgcG9seW5vbWlhbHMuU2lnbWEyLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfendcIiwgcG9seW5vbWlhbHMuWi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHZcIik7XG4gICAgICAgIFxuICAgICAgICAvLyBTVEVQIDUuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgdiDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMueGkpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9hXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfYlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX2NcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9zMVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX3MyXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfendcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMudiA9IFtdO1xuICAgICAgICBjaGFsbGVuZ2VzLnZbMV0gPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgY2hhbGxlbmdlcy52OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMudlsxXSwgMTYpKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMjsgaSA8IDY7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy52W2ldID0gRnIubXVsKGNoYWxsZW5nZXMudltpIC0gMV0sIGNoYWxsZW5nZXMudlsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDUuMiBDb21wdXRlIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCByKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCBSKFgpXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlUigpO1xuXG4gICAgICAgIC8vU1RFUCA1LjMgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGkoWCkgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVd4aSgpO1xuXG4gICAgICAgIC8vU1RFUCA1LjQgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb21wdXRlV3hpdygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFd4aSwgV3hpdyBNU01cIik7XG4gICAgICAgIGxldCBjb21taXRXeGkgPSBhd2FpdCBwb2x5bm9taWFscy5XeGkubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIld4aVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFd4aXcgPSBhd2FpdCBwb2x5bm9taWFscy5XeGl3Lm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJXeGl3XCIpO1xuXG4gICAgICAgIC8vIEZpZnRoIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbV3hpXV8xLCBbV3hpd11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIld4aVwiLCBjb21taXRXeGkpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiV3hpd1wiLCBjb21taXRXeGl3KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlUigpIHtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBcbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBwb2x5bm9taWFsc1xuICAgICAgICBwb2x5bm9taWFscy5RTCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RQyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUwuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUVIuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUVJfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU0uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU1fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU8uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUNfU0VDVElPTl1bMF0ucCk7ICAgXG4gICAgICAgIFxuICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IGNoYWxsZW5nZXMueGk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKGNoYWxsZW5nZXMueGluLCBGci5vbmUpO1xuXG4gICAgICAgIGNvbnN0IEwgPSBbXTtcblxuICAgICAgICBjb25zdCBuID0gRnIuZSh6a2V5LmRvbWFpblNpemUpO1xuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gTWF0aC5tYXgoMSwgemtleS5uUHVibGljKTsgaSsrKSB7XG4gICAgICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2YWxfbDEgPSBGci5kaXYoXG4gICAgICAgICAgICBGci5zdWIoY2hhbGxlbmdlcy54aW4sIEZyLm9uZSksXG4gICAgICAgICAgICBGci5tdWwobiwgRnIuc3ViKGNoYWxsZW5nZXMueGksIEZyLm9uZSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiTGFncmFuZ2UgRXZhbHVhdGlvbnM6IFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MTsgaTxMLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBMJHtpfSh4aSk9YCArIEZyLnRvU3RyaW5nKExbaV0sIDE2KSk7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV2YWxfcGkgPSBGci56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgICAgICBldmFsX3BpID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bCh3LCBMW2krMV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlBJOiBcIiArIEZyLnRvU3RyaW5nKGV2YWxfcGksIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBjb25zdGFudCBwYXJ0cyBvZiBSKFgpXG4gICAgICAgIGNvbnN0IGNvZWZfYWIgPSBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2IpO1xuXG4gICAgICAgIGxldCBlMmEgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBiZXRheGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTJiID0gcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iO1xuICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBGci5tdWwoYmV0YXhpLCB6a2V5LmsxKSk7XG4gICAgICAgIGUyYiA9IEZyLmFkZChlMmIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgIGxldCBlMmMgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2M7XG4gICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIEZyLm11bChiZXRheGksIHprZXkuazIpKTtcbiAgICAgICAgZTJjID0gRnIuYWRkKGUyYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgY29uc3QgZTIgPSBGci5tdWwoRnIubXVsKEZyLm11bChlMmEsIGUyYiksIGUyYyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgIGxldCBlM2EgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgbGV0IGUzYiA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYjtcbiAgICAgICAgZTNiID0gRnIuYWRkKGUzYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9zMikpO1xuICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTMgPSBGci5tdWwoZTNhLCBlM2IpO1xuICAgICAgICBlMyA9IEZyLm11bChlMywgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF96dyk7XG4gICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgICAgICBjb25zdCBlNCA9IEZyLm11bChldmFsX2wxLCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDYpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUU0sIGNvZWZfYWIpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RTCwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUVIsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYik7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlFPLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2MpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RQyk7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlosIGUyKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5zdWIocG9seW5vbWlhbHMuU2lnbWEzLCBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5aLCBlNCk7XG5cbiAgICAgICAgbGV0IHRtcCA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuVDMsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgICAgICB0bXAuYWRkKHBvbHlub21pYWxzLlQyLCBjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIHRtcC5hZGQocG9seW5vbWlhbHMuVDEpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKGNoYWxsZW5nZXMuemgpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLlIuc3ViKHRtcCk7XG5cbiAgICAgICAgbGV0IHIwID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bChlMywgRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmV2YWxfYywgY2hhbGxlbmdlcy5nYW1tYSkpKTtcbiAgICAgICAgcjAgPSBGci5zdWIocjAsIGU0KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcblxuICAgICAgICBwb2x5bm9taWFscy5SLmFkZFNjYWxhcihyMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVd4aSgpIHtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluICsgNiAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuUik7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuQSwgY2hhbGxlbmdlcy52WzFdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5CLCBjaGFsbGVuZ2VzLnZbMl0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLkMsIGNoYWxsZW5nZXMudlszXSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuU2lnbWExLCBjaGFsbGVuZ2VzLnZbNF0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLlNpZ21hMiwgY2hhbGxlbmdlcy52WzVdKTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMV0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYSkpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMl0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYikpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYykpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbNF0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLnN1YlNjYWxhcihGci5tdWwoY2hhbGxlbmdlcy52WzVdLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3MyKSk7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVd4aXcoKSB7XG4gICAgICAgIHBvbHlub21pYWxzLld4aXcgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLlosIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGl3LnN1YlNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3p3KTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGl3LmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aXcpO1xuICAgIH1cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBwbG9ua19wcm92ZSBmcm9tIFwiLi9wbG9ua19wcm92ZS5qc1wiO1xuaW1wb3J0IHd0bnNfY2FsY3VsYXRlIGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua0Z1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlLCB6a2V5RmlsZU5hbWUsIGxvZ2dlciwgd3Ruc0NhbGNPcHRpb25zLCBwcm92ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IHd0bnM9IHtcbiAgICAgICAgdHlwZTogXCJtZW1cIlxuICAgIH07XG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlLCB3dG5zLCB3dG5zQ2FsY09wdGlvbnMpO1xuICAgIHJldHVybiBhd2FpdCBwbG9ua19wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgKi9cbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua1ZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuICAgIGxldCB2a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIF9wcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGxldCBwdWJsaWNTaWduYWxzID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWJsaWNTaWduYWxzKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbU5hbWUodmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJQTE9OSyBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgbGV0IHByb29mID0gZnJvbU9iamVjdFByb29mKGN1cnZlLF9wcm9vZik7XG4gICAgdmtfdmVyaWZpZXIgPSBmcm9tT2JqZWN0VmsoY3VydmUsIHZrX3ZlcmlmaWVyKTtcblxuICAgIGlmICghaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoXCJQcm9vZiBpcyBub3Qgd2VsbCBjb25zdHJ1Y3RlZFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHB1YmxpYyBpbnB1dHNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2hhbGxlbmdlcyA9IGNhbGN1bGF0ZWNoYWxsZW5nZXMoY3VydmUsIHByb29mLCBwdWJsaWNTaWduYWxzLCB2a192ZXJpZmllcik7XG4gICAgXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJiZXRhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSwgMTYpKTsgICAgXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEsIDE2KSk7ICAgIFxuICAgICAgICBsb2dnZXIuZGVidWcoXCJhbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhLCAxNikpOyAgICBcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwieGk6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy54aSwgMTYpKTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTw2O2krKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwidjogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnZbaV0sIDE2KSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwidTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnUsIDE2KSk7ICAgIFxuICAgIH1cbiAgICBjb25zdCBMID0gY2FsY3VsYXRlTGFncmFuZ2VFdmFsdWF0aW9ucyhjdXJ2ZSwgY2hhbGxlbmdlcywgdmtfdmVyaWZpZXIpO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPEwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgTCR7aX0oeGkpPWAgKyBGci50b1N0cmluZyhMW2ldLCAxNikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIk51bWJlciBvZiBwdWJsaWMgc2lnbmFscyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZrXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcGkgPSBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgTCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJQSSh4aSk6IFwiICsgRnIudG9TdHJpbmcocGksIDE2KSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHIwID0gY2FsY3VsYXRlUjAoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCBwaSwgTFsxXSk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBEID0gY2FsY3VsYXRlRChjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBMWzFdKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIkQ6IFwiICsgRzEudG9TdHJpbmcoRzEudG9BZmZpbmUoRCksIDE2KSk7XG4gICAgfVxuXG4gICAgY29uc3QgRiA9IGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2a192ZXJpZmllciwgRCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJGOiBcIiArIEcxLnRvU3RyaW5nKEcxLnRvQWZmaW5lKEYpLCAxNikpO1xuICAgIH1cblxuICAgIGNvbnN0IEUgPSBjYWxjdWxhdGVFKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcjApO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRTogXCIgKyBHMS50b1N0cmluZyhHMS50b0FmZmluZShFKSwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBFLCBGKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIkludmFsaWQgUHJvb2ZcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmZ1bmN0aW9uIGZyb21PYmplY3RQcm9vZihjdXJ2ZSwgcHJvb2YpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgcmVzID0ge307XG4gICAgcmVzLkEgPSBHMS5mcm9tT2JqZWN0KHByb29mLkEpO1xuICAgIHJlcy5CID0gRzEuZnJvbU9iamVjdChwcm9vZi5CKTtcbiAgICByZXMuQyA9IEcxLmZyb21PYmplY3QocHJvb2YuQyk7XG4gICAgcmVzLlogPSBHMS5mcm9tT2JqZWN0KHByb29mLlopO1xuICAgIHJlcy5UMSA9IEcxLmZyb21PYmplY3QocHJvb2YuVDEpO1xuICAgIHJlcy5UMiA9IEcxLmZyb21PYmplY3QocHJvb2YuVDIpO1xuICAgIHJlcy5UMyA9IEcxLmZyb21PYmplY3QocHJvb2YuVDMpO1xuICAgIHJlcy5ldmFsX2EgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfYSk7XG4gICAgcmVzLmV2YWxfYiA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9iKTtcbiAgICByZXMuZXZhbF9jID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX2MpO1xuICAgIHJlcy5ldmFsX3p3ID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX3p3KTtcbiAgICByZXMuZXZhbF9zMSA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9zMSk7XG4gICAgcmVzLmV2YWxfczIgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfczIpO1xuICAgIHJlcy5XeGkgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aSk7XG4gICAgcmVzLld4aXcgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aXcpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3RWayhjdXJ2ZSwgdmspIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCByZXMgPSB2aztcbiAgICByZXMuUW0gPSBHMS5mcm9tT2JqZWN0KHZrLlFtKTtcbiAgICByZXMuUWwgPSBHMS5mcm9tT2JqZWN0KHZrLlFsKTtcbiAgICByZXMuUXIgPSBHMS5mcm9tT2JqZWN0KHZrLlFyKTtcbiAgICByZXMuUW8gPSBHMS5mcm9tT2JqZWN0KHZrLlFvKTtcbiAgICByZXMuUWMgPSBHMS5mcm9tT2JqZWN0KHZrLlFjKTtcbiAgICByZXMuUzEgPSBHMS5mcm9tT2JqZWN0KHZrLlMxKTtcbiAgICByZXMuUzIgPSBHMS5mcm9tT2JqZWN0KHZrLlMyKTtcbiAgICByZXMuUzMgPSBHMS5mcm9tT2JqZWN0KHZrLlMzKTtcbiAgICByZXMuazEgPSBGci5mcm9tT2JqZWN0KHZrLmsxKTtcbiAgICByZXMuazIgPSBGci5mcm9tT2JqZWN0KHZrLmsyKTtcbiAgICByZXMuWF8yID0gRzIuZnJvbU9iamVjdCh2ay5YXzIpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuWikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuVDEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFHMS5pc1ZhbGlkKHByb29mLlQyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5UMykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuV3hpKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5XeGl3KSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVjaGFsbGVuZ2VzKGN1cnZlLCBwcm9vZiwgcHVibGljU2lnbmFscywgdmspIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMjogYmV0YSBhbmQgZ2FtbWFcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW0pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RbCk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlFyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW8pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlMxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUzIpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5TMyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoRnIuZShwdWJsaWNTaWduYWxzW2ldKSk7XG4gICAgfVxuXG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLkEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5CKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuQyk7XG5cbiAgICByZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHJlcy5nYW1tYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMzogYWxwaGFcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy5nYW1tYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlopO1xuICAgIHJlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgNDogeGlcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmFscGhhKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuVDEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5UMik7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlQzKTtcbiAgICByZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIFxuICAgIC8vIENoYWxsZW5nZSByb3VuZCA1OiB2XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy54aSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX2IpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWxfYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF96dyk7XG4gICAgcmVzLnYgPSBbXTtcbiAgICByZXMudlsxXSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICBmb3IgKGxldCBpPTI7IGk8NjsgaSsrICkgcmVzLnZbaV0gPSBGci5tdWwocmVzLnZbaS0xXSwgcmVzLnZbMV0pO1xuXG4gICAgLy8gQ2hhbGxlbmdlOiB1XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGkpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGl3KTtcbiAgICByZXMudSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgeGluID0gY2hhbGxlbmdlcy54aTtcbiAgICBsZXQgZG9tYWluU2l6ZSA9IDE7XG4gICAgZm9yIChsZXQgaT0wOyBpPHZrLnBvd2VyOyBpKyspIHtcbiAgICAgICAgeGluID0gRnIuc3F1YXJlKHhpbik7XG4gICAgICAgIGRvbWFpblNpemUgKj0gMjtcbiAgICB9XG4gICAgY2hhbGxlbmdlcy54aW4gPSB4aW47XG5cbiAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKHhpbiwgRnIub25lKTtcblxuICAgIGNvbnN0IEwgPSBbXTtcblxuICAgIGNvbnN0IG4gPSBGci5lKGRvbWFpblNpemUpO1xuICAgIGxldCB3ID0gRnIub25lO1xuICAgIGZvciAobGV0IGk9MTsgaTw9TWF0aC5tYXgoMSwgdmsublB1YmxpYyk7IGkrKykge1xuICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbdmsucG93ZXJdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIEwpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IHBpID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykgeyAgICAgICAgXG4gICAgICAgIGNvbnN0IHcgPSBGci5lKHB1YmxpY1NpZ25hbHNbaV0pO1xuICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKHcsIExbaSsxXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGk7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVIwKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcGksIGwxKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IGUxID0gcGk7XG5cbiAgICBjb25zdCBlMiA9IEZyLm11bChsMSwgRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpKTtcblxuICAgIGxldCBlM2EgPSBGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSk7XG4gICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBsZXQgZTNiID0gRnIuYWRkKHByb29mLmV2YWxfYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUzYiA9IEZyLmFkZChlM2IsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzYyA9IEZyLmFkZChwcm9vZi5ldmFsX2MsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzID0gRnIubXVsKEZyLm11bChlM2EsIGUzYiksIGUzYyk7XG4gICAgZTMgPSBGci5tdWwoZTMsIHByb29mLmV2YWxfencpO1xuICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgIGNvbnN0IHIwID0gRnIuc3ViKEZyLnN1YihlMSwgZTIpLCBlMyk7XG5cbiAgICByZXR1cm4gcjA7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUQoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgbDEpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgXG4gICAgbGV0IGQxID0gRzEudGltZXNGcih2ay5RbSwgRnIubXVsKHByb29mLmV2YWxfYSwgcHJvb2YuZXZhbF9iKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIEcxLnRpbWVzRnIodmsuUWwsIHByb29mLmV2YWxfYSkpO1xuICAgIGQxID0gRzEuYWRkKGQxLCBHMS50aW1lc0ZyKHZrLlFyLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBkMSA9IEcxLmFkZChkMSwgRzEudGltZXNGcih2ay5RbywgcHJvb2YuZXZhbF9jKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIHZrLlFjKTtcblxuICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuXG4gICAgY29uc3QgZDJhMSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBiZXRheGkpLCBjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICBjb25zdCBkMmEyID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2IsIEZyLm11bChiZXRheGksIHZrLmsxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQyYTMgPSBGci5hZGQoRnIuYWRkKHByb29mLmV2YWxfYywgRnIubXVsKGJldGF4aSwgdmsuazIpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBjb25zdCBkMmEgPSBGci5tdWwoRnIubXVsKEZyLm11bChkMmExLCBkMmEyKSwgZDJhMyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgY29uc3QgZDJiID0gRnIubXVsKGwxLCBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgY29uc3QgZDIgPSBHMS50aW1lc0ZyKHByb29mLlosIEZyLmFkZChGci5hZGQoZDJhLCBkMmIpLCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGNvbnN0IGQzYSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYiA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9iLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MyKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYyA9IEZyLm11bChGci5tdWwoY2hhbGxlbmdlcy5hbHBoYSwgY2hhbGxlbmdlcy5iZXRhKSwgcHJvb2YuZXZhbF96dyk7XG5cbiAgICBjb25zdCBkMyA9IEcxLnRpbWVzRnIodmsuUzMsIEZyLm11bChGci5tdWwoZDNhLCBkM2IpLCBkM2MpKTtcbiAgICBcbiAgICBjb25zdCBkNGxvdyA9IHByb29mLlQxO1xuICAgIGNvbnN0IGQ0bWlkID0gRzEudGltZXNGcihwcm9vZi5UMiwgY2hhbGxlbmdlcy54aW4pO1xuICAgIGNvbnN0IGQ0aGlnaCA9IEcxLnRpbWVzRnIocHJvb2YuVDMsIEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgIGxldCBkNCA9IEcxLmFkZChkNGxvdywgRzEuYWRkKGQ0bWlkLCBkNGhpZ2gpKTtcbiAgICBkNCA9IEcxLnRpbWVzRnIoZDQsIGNoYWxsZW5nZXMuemgpO1xuXG4gICAgY29uc3QgZCA9IEcxLnN1YihHMS5zdWIoRzEuYWRkKGQxLCBkMiksIGQzKSwgZDQpO1xuXG4gICAgcmV0dXJuIGQ7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRCkge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBsZXQgcmVzID0gRzEuYWRkKEQsIEcxLnRpbWVzRnIocHJvb2YuQSwgY2hhbGxlbmdlcy52WzFdKSk7XG4gICAgcmVzID0gRzEuYWRkKHJlcywgRzEudGltZXNGcihwcm9vZi5CLCBjaGFsbGVuZ2VzLnZbMl0pKTtcbiAgICByZXMgPSBHMS5hZGQocmVzLCBHMS50aW1lc0ZyKHByb29mLkMsIGNoYWxsZW5nZXMudlszXSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzEsIGNoYWxsZW5nZXMudls0XSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzIsIGNoYWxsZW5nZXMudls1XSkpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHIwKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGUgPSBGci5hZGQoRnIubmVnKHIwKSwgRnIubXVsKGNoYWxsZW5nZXMudlsxXSwgcHJvb2YuZXZhbF9hKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy52WzJdLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBlID0gRnIuYWRkKGUsIEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWxfYykpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls0XSwgcHJvb2YuZXZhbF9zMSkpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls1XSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudSwgcHJvb2YuZXZhbF96dykpO1xuXG4gICAgY29uc3QgcmVzID0gRzEudGltZXNGcihHMS5vbmUsIGUpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRSwgRikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBBMSA9IHByb29mLld4aTtcbiAgICBBMSA9IEcxLmFkZChBMSwgRzEudGltZXNGcihwcm9vZi5XeGl3LCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGxldCBCMSA9IEcxLnRpbWVzRnIocHJvb2YuV3hpLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICBjb25zdCBzID0gRnIubXVsKEZyLm11bChjaGFsbGVuZ2VzLnUsIGNoYWxsZW5nZXMueGkpLCBGci53W3ZrLnBvd2VyXSk7XG4gICAgQjEgPSBHMS5hZGQoQjEsIEcxLnRpbWVzRnIocHJvb2YuV3hpdywgcykpO1xuICAgIEIxID0gRzEuYWRkKEIxLCBGKTtcbiAgICBCMSA9IEcxLnN1YihCMSwgRSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoXG4gICAgICAgIEcxLm5lZyhBMSkgLCB2ay5YXzIsXG4gICAgICAgIEIxICwgY3VydmUuRzIub25lXG4gICAgKTtcblxuICAgIHJldHVybiByZXM7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21OYW1lIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5mdW5jdGlvbiBpMmhleChpKSB7XG4gICAgcmV0dXJuIChcIjBcIiArIGkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG59XG5cbmZ1bmN0aW9uIHAyNTYobikge1xuICAgIGxldCBuc3RyID0gbi50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKG5zdHIubGVuZ3RoIDwgNjQpIG5zdHIgPSBcIjBcIituc3RyO1xuICAgIG5zdHIgPSBgXCIweCR7bnN0cn1cImA7XG4gICAgcmV0dXJuIG5zdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rRXhwb3J0U29saWRpdHlDYWxsRGF0YShfcHJvb2YsIF9wdWIpIHtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHViKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tTmFtZShwcm9vZi5jdXJ2ZSk7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGlucHV0cyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaT0wOyBpPHB1Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5wdXRzICE9IFwiXCIpIGlucHV0cyA9IGlucHV0cyArIFwiLFwiO1xuICAgICAgICBpbnB1dHMgPSBpbnB1dHMgKyBwMjU2KHB1YltpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBbJHtwMjU2KHByb29mLkFbMF0pfSwgJHtwMjU2KHByb29mLkFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLkJbMF0pfSwke3AyNTYocHJvb2YuQlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuQ1swXSl9LCR7cDI1Nihwcm9vZi5DWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5aWzBdKX0sJHtwMjU2KHByb29mLlpbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLlQxWzBdKX0sJHtwMjU2KHByb29mLlQxWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5UMlswXSl9LCR7cDI1Nihwcm9vZi5UMlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuVDNbMF0pfSwke3AyNTYocHJvb2YuVDNbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aVswXSl9LCR7cDI1Nihwcm9vZi5XeGlbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aXdbMF0pfSwke3AyNTYocHJvb2YuV3hpd1sxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbF9hKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9iKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9jKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9zMSl9LGAgKyBcbiAgICBgJHtwMjU2KHByb29mLmV2YWxfczIpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX3p3KX1dYCArIFxuICAgIGBbJHtpbnB1dHN9XWA7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBaS0VZIGNvbnN0YW50c1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNldHVwfSBmcm9tIFwiLi9wbG9ua19zZXR1cC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxQcm92ZX0gZnJvbSBcIi4vcGxvbmtfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL3Bsb25rX3Byb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wbG9ua192ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRTb2xpZGl0eUNhbGxEYXRhfSBmcm9tIFwiLi9wbG9ua19leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBXZSBleHBvcnQgdG8gemtleSB0aGUgc2lnbmFscyBhbmQgdmFsdWVzIG9mIHRoZSBhLCBiLCBjLCBxbCwgcXIsIHFtLCBxbyBhbmQgcWNcblxuLy8gYSwgYiBhbmQgYyBhcmUgc2lnbmFscyBpZCAoMzItYml0IGludGVnZXJzKVxuLy8gcWwsIHFyLCBxbSwgcW8gYW5kIHFjIGFyZSBmaWVsZCB2YWx1ZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludChzaWduYWwxLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgMCwgMCwgRnIub25lLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0FkZGl0aW9uQ29uc3RyYWludChzaWduYWwxLCBzaWduYWwyLCBzaWduYWxPdXQsIHFsLCBxciwgcW0sIHFvLCBxYykge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RkZsb25rTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNpZ25hbDEsIHNpZ25hbDIsIHNpZ25hbE91dCwgcWwsIHFyLCBxbSwgcW8sIHFjLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFID0gMDtcbmNvbnN0IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCA9IDE7XG5jb25zdCBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEUgPSAyO1xuXG5leHBvcnQgY2xhc3MgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKEZyLCBmbkdldENvbnN0YW50Q29uc3RyYWludCwgZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQsIGZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50LCBsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5GciA9IEZyO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICAgICAgdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludCA9IGZuR2V0QWRkaXRpb25Db25zdHJhaW50O1xuICAgICAgICB0aGlzLmZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50ID0gZm5HZXRNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQ7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1IxY3NDb25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplTGluZWFyQ29tYmluYXRpb24obGNBKTtcbiAgICAgICAgdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihsY0IpO1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxjQyk7XG5cbiAgICAgICAgY29uc3QgbGN0QSA9IHRoaXMuZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQSk7XG4gICAgICAgIGNvbnN0IGxjdEIgPSB0aGlzLmdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0IpO1xuXG4gICAgICAgIGlmICgobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSB8fCAobGN0QiA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UKSB7XG4gICAgICAgICAgICBjb25zdCBsY0NDID0gdGhpcy5qb2luTGluZWFyQ29tYmluYXRpb25zKGxjQiwgbGNDLCBsY0FbMF0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQ0MpO1xuICAgICAgICB9IGVsc2UgaWYgKGxjdEIgPT09IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCkge1xuICAgICAgICAgICAgY29uc3QgbGNDQyA9IHRoaXMuam9pbkxpbmVhckNvbWJpbmF0aW9ucyhsY0EsIGxjQywgbGNCWzBdKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzQWRkaXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0NDKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsaW5Db20pIHtcbiAgICAgICAgLy8gbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGNvbnN0IHNpZ25hbElkcyA9IE9iamVjdC5rZXlzKGxpbkNvbSk7XG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmFsSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vICAgICBpZiAoc2lnbmFsSWRzW2ldID09PSBcIjBcIikge1xuICAgICAgICAvLyAgICAgICAgIGsgPSB0aGlzLkZyLmFkZChrLCBsaW5Db21bc2lnbmFsSWRzW2ldXSk7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKCF0aGlzLkZyLmVxKGssIHRoaXMuRnIuemVybykpIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fQ09OU1RBTlQ7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEU7XG5cbiAgICAgICAgbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIGxldCBuID0gMDtcbiAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluQ29tW3NzW2ldXSA9PSAwbikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsaW5Db21bc3NbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzc1tpXSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgayA9IHRoaXMuRnIuYWRkKGssIGxpbkNvbVtzc1tpXV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX1ZBUklBQkxFO1xuICAgICAgICBpZiAoIXRoaXMuRnIuaXNaZXJvKGspKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UO1xuICAgICAgICByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxpbkNvbSkge1xuICAgICAgICBjb25zdCBzaWduYWxJZHMgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hbElkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuRnIuaXNaZXJvKGxpbkNvbVtzaWduYWxJZHNbaV1dKSkgZGVsZXRlIGxpbkNvbVtzaWduYWxJZHNbaV1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbkNvbTtcbiAgICB9XG5cbiAgICBqb2luTGluZWFyQ29tYmluYXRpb25zKGxpbkNvbTEsIGxpbkNvbTIsIGspIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG5cbiAgICAgICAgLy8gZm9yIChsZXQgcyBpbiBsaW5Db20xKSB7XG4gICAgICAgIC8vICAgICBjb25zdCB2YWwgPSB0aGlzLkZyLm11bChrLCBsaW5Db20xW3NdKTtcbiAgICAgICAgLy8gICAgIHJlc1tzXSA9ICEocyBpbiByZXMpID8gdmFsIDogdGhpcy5Gci5hZGQodmFsLCByZXNbc10pO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAvLyAgICAgY29uc3QgdmFsID0gdGhpcy5Gci5tdWwoaywgbGluQ29tMltzXSk7XG4gICAgICAgIC8vICAgICByZXNbc10gPSAhKHMgaW4gcmVzKSA/IHZhbCA6IHRoaXMuRnIuYWRkKHZhbCwgcmVzW3NdKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNbc10gPSB0aGlzLkZyLmFkZChyZXNbc10sIHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IGxpbkNvbTJbc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIuYWRkKHJlc1tzXSwgbGluQ29tMltzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihyZXMpO1xuICAgIH1cblxuICAgIHJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIG1heEMpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgazogdGhpcy5Gci56ZXJvLFxuICAgICAgICAgICAgc2lnbmFsczogW10sXG4gICAgICAgICAgICBjb2VmczogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY3MgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBzaWduYWxJZCBpbiBsaW5Db20pIHtcbiAgICAgICAgICAgIGlmIChzaWduYWxJZCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzLmsgPSB0aGlzLkZyLmFkZChyZXMuaywgbGluQ29tW3NpZ25hbElkXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpbkNvbVtzaWduYWxJZF0gIT0gMG4pIHtcbiAgICAgICAgICAgICAgICBjcy5wdXNoKFtOdW1iZXIoc2lnbmFsSWQpLCBsaW5Db21bc2lnbmFsSWRdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3MubGVuZ3RoID4gbWF4Qykge1xuICAgICAgICAgICAgY29uc3QgYzEgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBzZXR0aW5ncy5uVmFycysrO1xuXG4gICAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IHRoaXMuZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQoXG4gICAgICAgICAgICAgICAgYzFbMF0sIGMyWzBdLCBzbyxcbiAgICAgICAgICAgICAgICB0aGlzLkZyLm5lZyhjMVsxXSksIHRoaXMuRnIubmVnKGMyWzFdKSwgdGhpcy5Gci56ZXJvLCB0aGlzLkZyLm9uZSwgdGhpcy5Gci56ZXJvKTtcblxuICAgICAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG4gICAgICAgICAgICBhZGRpdGlvbnNBcnIucHVzaChbYzFbMF0sIGMyWzBdLCBjMVsxXSwgYzJbMV1dKTtcblxuICAgICAgICAgICAgY3MucHVzaChbc28sIHRoaXMuRnIub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMuc2lnbmFsc1tpXSA9IGNzW2ldWzBdO1xuICAgICAgICAgICAgcmVzLmNvZWZzW2ldID0gY3NbaV1bMV07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocmVzLmNvZWZzLmxlbmd0aCA8IG1heEMpIHtcbiAgICAgICAgICAgIHJlcy5zaWduYWxzLnB1c2goMCk7XG4gICAgICAgICAgICByZXMuY29lZnMucHVzaCh0aGlzLkZyLnplcm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc0FkZGl0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGluQ29tKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzQXJyID0gW107XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0FyciA9IFtdO1xuXG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIDMpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEMuc2lnbmFsc1swXSwgQy5zaWduYWxzWzFdLCBDLnNpZ25hbHNbMl0sXG4gICAgICAgICAgICBDLmNvZWZzWzBdLCBDLmNvZWZzWzFdLCB0aGlzLkZyLnplcm8sIEMuY29lZnNbMl0sIEMuayk7XG5cbiAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG5cbiAgICAgICAgcmV0dXJuIFtjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyXTtcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc011bHRpcGxpY2F0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGNBLCBsY0IsIGxjQykge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50c0FyciA9IFtdO1xuICAgICAgICBjb25zdCBhZGRpdGlvbnNBcnIgPSBbXTtcblxuICAgICAgICBjb25zdCBBID0gdGhpcy5yZWR1Y2VDb2VmcyhzZXR0aW5ncywgY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0FyciwgbGNBLCAxKTtcbiAgICAgICAgY29uc3QgQiA9IHRoaXMucmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxjQiwgMSk7XG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsY0MsIDEpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldE11bHRpcGxpY2F0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEEuc2lnbmFsc1swXSwgQi5zaWduYWxzWzBdLCBDLnNpZ25hbHNbMF0sXG4gICAgICAgICAgICB0aGlzLkZyLm11bChBLmNvZWZzWzBdLCBCLmspLFxuICAgICAgICAgICAgdGhpcy5Gci5tdWwoQS5rLCBCLmNvZWZzWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKEEuY29lZnNbMF0sIEIuY29lZnNbMF0pLFxuICAgICAgICAgICAgdGhpcy5Gci5uZWcoQy5jb2Vmc1swXSksXG4gICAgICAgICAgICB0aGlzLkZyLnN1Yih0aGlzLkZyLm11bChBLmssIEIuayksIEMuaykpO1xuXG4gICAgICAgIGNvbnN0cmFpbnRzQXJyLnB1c2goY29uc3RyYWludHMpO1xuXG4gICAgICAgIHJldHVybiBbY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0Fycl07XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIENQb2x5bm9taWFsIGlzIGEgQ29tYmluZWQgUG9seW5vbWlhbCBvZiB0aGUgdHlwZSA6XG4vLyBDUG9seW5vbWlhbChYKSA6PSBQXzAoWF5uKSArIFjCt1BfMShYXm4pICsgLi4uICsgWF57bi0xfcK3UF97bi0xfShYXm4pXG4vLyBXZSBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBiaWcgbWVtb3J5IGJ1ZmZlclxuLy8gZm9yIHRoZSBjb2VmZmljaWVudHMgYmVjYXVzZSBpbiBzb21lIGNhc2VzIGEgYmlnIG51bWJlciBvZiB0aGUgY29lZmZpY2llbnRzIGFyZSB6ZXJvXG5cbmltcG9ydCB7QmlnQnVmZmVyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQge2xvZzJ9IGZyb20gXCIuLi9taXNjLmpzXCI7XG5pbXBvcnQge1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwuanNcIjtcblxuZXhwb3J0IGNsYXNzIENQb2x5bm9taWFsIHtcbiAgICBjb25zdHJ1Y3RvcihuLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMubiA9IG47XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHMgPSBBcnJheShuKS5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIGFkZFBvbHlub21pYWwocG9zaXRpb24sIHBvbHlub21pYWwpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uID4gdGhpcy5uIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ1BvbHlub21pYWw6YWRkUG9seW5vbWlhbCwgY2Fubm90IGFkZCBhIHBvbHlub21pYWwgdG8gYSBwb3NpdGlvbiBncmVhdGVyIHRoYW4gbi0xXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb2x5bm9taWFsc1twb3NpdGlvbl0gPSBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIGRlZ3JlZSgpIHtcbiAgICAgICAgbGV0IGRlZ3JlZXMgPSB0aGlzLnBvbHlub21pYWxzLm1hcChcbiAgICAgICAgICAgIChwb2x5bm9taWFsLCBpbmRleCkgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkgKiB0aGlzLm4gKyBpbmRleCk7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5kZWdyZWVzKTtcbiAgICB9XG5cbiAgICBnZXRQb2x5bm9taWFsKCkge1xuICAgICAgICBsZXQgZGVncmVlcyA9IHRoaXMucG9seW5vbWlhbHMubWFwKHBvbHlub21pYWwgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkpO1xuICAgICAgICBjb25zdCBtYXhEZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBjb25zdCBsZW5ndGhCdWZmZXIgPSAyICoqIChsb2cyKG1heERlZ3JlZSAtIDEpICsgMSk7XG4gICAgICAgIGNvbnN0IHNGciA9IHRoaXMuRnIubjg7XG5cbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKGxlbmd0aEJ1ZmZlciAqIHNGciksIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heERlZ3JlZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHNGcjtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaV9uOCAqIHRoaXMubjtcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm47IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvbHlub21pYWxzW2pdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gZGVncmVlc1tqXSkgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLnBvbHlub21pYWxzW2pdLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHNGciksIGlfc0ZyICsgaiAqIHNGcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgYXN5bmMgbXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBuYW1lKSB7XG4gICAgICAgIGxldCBwb2x5bm9taWFsID0gdGhpcy5nZXRQb2x5bm9taWFsKCk7XG4gICAgICAgIGNvbnN0IG4gPSBwb2x5bm9taWFsLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGNvbnN0IFBUYXVOID0gUFRhdS5zbGljZSgwLCBuICogdGhpcy5HMS5GLm44ICogMik7XG4gICAgICAgIGNvbnN0IGJtID0gYXdhaXQgdGhpcy5Gci5iYXRjaEZyb21Nb250Z29tZXJ5KHBvbHlub21pYWwuY29lZik7XG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLkcxLm11bHRpRXhwQWZmaW5lKFBUYXVOLCBibSwgdGhpcy5sb2dnZXIsIG5hbWUpO1xuICAgICAgICByZXMgPSB0aGlzLkcxLnRvQWZmaW5lKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3NGZH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtjcmVhdGVCaW5GaWxlLCBlbmRXcml0ZVNlY3Rpb24sIHJlYWRCaW5GaWxlLCBzdGFydFdyaXRlU2VjdGlvbiwgd3JpdGVCaWdJbnQsfSBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHtsb2cyfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQge0JpZ0J1ZmZlciwgU2NhbGFyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcbmltcG9ydCB7XG4gICAgWktFWV9GRl9IRUFERVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OLFxuICAgIFpLRVlfRkZfQV9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FSX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RTV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUU9fU0VDVElPTixcbiAgICBaS0VZX0ZGX1FDX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTFfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMl9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEzX1NFQ1RJT04sXG4gICAgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUFRBVV9TRUNUSU9OLFxuICAgIEZGX1RfUE9MX0RFR19NSU4sXG4gICAgWktFWV9GRl9OU0VDVElPTlMsXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxufSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQge0ZGTE9OS19QUk9UT0NPTF9JRCwgSEVBREVSX1pLRVlfU0VDVElPTn0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7XG4gICAgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LFxuICAgIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCxcbiAgICBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnRcbn0gZnJvbSBcIi4vcGxvbmtfZXF1YXRpb24uanNcIjtcbmltcG9ydCB7cjFjc0NvbnN0cmFpbnRQcm9jZXNzb3J9IGZyb20gXCIuL3IxY3NfY29uc3RyYWludF9wcm9jZXNzb3IuanNcIjtcbmltcG9ydCB7UG9seW5vbWlhbH0gZnJvbSBcIi4vcG9seW5vbWlhbC9wb2x5bm9taWFsLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7RXZhbHVhdGlvbnN9IGZyb20gXCIuL3BvbHlub21pYWwvZXZhbHVhdGlvbnMuanNcIjtcbmltcG9ydCB7Q1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwvY3BvbHlub21pYWwuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtTZXR1cChyMWNzRmlsZW5hbWUsIHB0YXVGaWxlbmFtZSwgemtleUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBTRVRVUCBTVEFSVEVEXCIpO1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJlYWQgUFRhdSBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgUFRhdSBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogcFRhdVNlY3Rpb25zfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGlmICghcFRhdVNlY3Rpb25zWzEyXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDEyIG1pc3NpbmcuXCIpO1xuICAgIH1cblxuICAgIC8vIEdldCBjdXJ2ZSBkZWZpbmVkIGluIFBUYXVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gR2V0dGluZyBjdXJ2ZSBmcm9tIFBUYXUgc2V0dGluZ3NcIik7XG4gICAgY29uc3Qge2N1cnZlfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkUFRhdSwgcFRhdVNlY3Rpb25zKTtcblxuICAgIC8vIFJlYWQgcjFjcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgcjFjcyBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NGaWxlbmFtZSwgXCJyMWNzXCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7bG9hZENvbnN0cmFpbnRzOiBmYWxzZSwgbG9hZEN1c3RvbUdhdGVzOiB0cnVlfSk7XG5cbiAgICAvLyBQb3RlbnRpYWwgZXJyb3IgY2hlY2tzXG4gICAgaWYgKHIxY3MucHJpbWUgIT09IGN1cnZlLnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemF0aW9uc1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBzRnIgPSBjdXJ2ZS5Gci5uODtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44ICogMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44ICogMjtcblxuICAgIGxldCBwb2x5bm9taWFscyA9IHt9O1xuICAgIGxldCBldmFsdWF0aW9ucyA9IHt9O1xuICAgIGxldCBQVGF1O1xuXG4gICAgbGV0IHNldHRpbmdzID0ge1xuICAgICAgICBuVmFyczogcjFjcy5uVmFycyxcbiAgICAgICAgblB1YmxpYzogcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0c1xuICAgIH07XG5cbiAgICBjb25zdCBwbG9ua0NvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgbGV0IHBsb25rQWRkaXRpb25zID0gbmV3IEJpZ0FycmF5KCk7XG5cbiAgICAvLyBQcm9jZXNzIGNvbnN0cmFpbnRzIGluc2lkZSByMWNzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFByb2Nlc3NpbmcgRkZsb25rIGNvbnN0cmFpbnRzXCIpO1xuICAgIGF3YWl0IGNvbXB1dGVGRkNvbnN0cmFpbnRzKGN1cnZlLkZyLCByMWNzLCBsb2dnZXIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBBcyB0aGUgdCBwb2x5bm9taWFsIGlzIG4rNSB3ZSBuZWVkIGF0IGxlYXN0IGEgcG93ZXIgb2YgNFxuICAgIC8vVE9ETyBjaGVjayEhISFcbiAgICAvLyBOT1RFIDogcGxvbmtDb25zdHJhaW50cyArIDIgPSAjY29uc3RyYWludHMgKyBibGluZGluZyBjb2VmZmljaWVudHMgZm9yIGVhY2ggd2lyZSBwb2x5bm9taWFsXG4gICAgc2V0dGluZ3MuY2lyUG93ZXIgPSBNYXRoLm1heChGRl9UX1BPTF9ERUdfTUlOLCBsb2cyKChwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCArIDIpIC0gMSkgKyAxKTtcbiAgICBzZXR0aW5ncy5kb21haW5TaXplID0gMiAqKiBzZXR0aW5ncy5jaXJQb3dlcjtcblxuICAgIGlmIChwVGF1U2VjdGlvbnNbMl1bMF0uc2l6ZSA8IChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGlzIGNpcmN1aXQgc2l6ZS4gU2VjdGlvbiAyIHRvbyBzbWFsbC5cIik7XG4gICAgfVxuICAgIGlmIChwVGF1U2VjdGlvbnNbM11bMF0uc2l6ZSA8IHNHMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDMgdG9vIHNtYWxsLlwiKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIEZGTE9OSyBTRVRVUCBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3NldHRpbmdzLmNpclBvd2VyfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBEb21haW4gc2l6ZTogICAke3NldHRpbmdzLmRvbWFpblNpemV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnM6ICAgICAgICAgICR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7c2V0dGluZ3MublB1YmxpY31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ29uc3RyYWludHM6ICAgJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQWRkaXRpb25zOiAgICAgJHtwbG9ua0FkZGl0aW9ucy5sZW5ndGh9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGsxIGFuZCBrMiB0byBiZSB1c2VkIGluIHRoZSBwZXJtdXRhdGlvbiBjaGVja3NcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIGsxIGFuZCBrMlwiKTtcbiAgICBjb25zdCBbazEsIGsyXSA9IGNvbXB1dGVLMUsyKCk7XG5cbiAgICAvLyBDb21wdXRlIG9tZWdhIDMgKHczKSBhbmQgb21lZ2EgNCAodzQpIHRvIGJlIHVzZWQgaW4gdGhlIHByb3ZlciBhbmQgdGhlIHZlcmlmaWVyXG4gICAgLy8gdzNeMyA9IDEgYW5kICB3NF40ID0gMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgdzNcIik7XG4gICAgY29uc3QgdzMgPSBjb21wdXRlVzMoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIHc0XCIpO1xuICAgIGNvbnN0IHc0ID0gY29tcHV0ZVc0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IGNvbXB1dGluZyB3OFwiKTtcbiAgICBjb25zdCB3OCA9IGNvbXB1dGVXOCgpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgd3JcIik7XG4gICAgY29uc3Qgd3IgPSBnZXRPbWVnYUN1YmljUm9vdChzZXR0aW5ncy5jaXJQb3dlciwgY3VydmUuRnIpO1xuXG4gICAgLy8gV3JpdGUgb3V0cHV0IHprZXkgZmlsZVxuICAgIGF3YWl0IHdyaXRlWmtleUZpbGUoKTtcblxuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgU0VUVVAgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gMDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGRkNvbnN0cmFpbnRzKEZyLCByMWNzLCBsb2dnZXIpIHtcbiAgICAgICAgLy8gQWRkIHB1YmxpYyBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uUHVibGljOyBpKyspIHtcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChnZXRGRmxvbmtDb25zdGFudENvbnN0cmFpbnQoaSArIDEsIEZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYWxsIGNvbnN0cmFpbnRzIGZyb20gcjFjcyBmaWxlXG4gICAgICAgIGNvbnN0IHIxY3NQcm9jZXNzb3IgPSBuZXcgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3IoRnIsIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCwgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LCBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQsIGxvZ2dlcik7XG5cbiAgICAgICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuICAgICAgICBsZXQgYlIxY3NQb3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYCAgICBwcm9jZXNzaW5nIHIxY3MgY29uc3RyYWludHMgJHtpfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2NvbnN0cmFpbnRzLCBhZGRpdGlvbnNdID0gcjFjc1Byb2Nlc3Nvci5wcm9jZXNzUjFjc0NvbnN0cmFpbnQoc2V0dGluZ3MsIC4uLnJlYWRDb25zdHJhaW50KCkpO1xuXG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goLi4uY29uc3RyYWludHMpO1xuICAgICAgICAgICAgcGxvbmtBZGRpdGlvbnMucHVzaCguLi5hZGRpdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gW107XG4gICAgICAgICAgICBjWzBdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzFdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzJdID0gcmVhZExDKCk7XG4gICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgICAgIGNvbnN0IGxjID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVTDMyID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgNCk7XG4gICAgICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICAgICAgY29uc3QgYnVmZlVMMzJWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTDMyLmJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0ICsgcjFjcy5uOCkgKiBuSWR4KTtcbiAgICAgICAgICAgIGJSMWNzUG9zICs9ICg0ICsgcjFjcy5uOCkgKiBuSWR4O1xuICAgICAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSWR4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHggPSBidWZmVi5nZXRVaW50MzIoaSAqICg0ICsgcjFjcy5uOCksIHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSAqICg0ICsgcjFjcy5uOCkgKyA0KTtcbiAgICAgICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxjO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5RmlsZSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFdyaXRpbmcgdGhlIHprZXkgZmlsZVwiKTtcbiAgICAgICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgY3JlYXRlQmluRmlsZSh6a2V5RmlsZW5hbWUsIFwiemtleVwiLCAxLCBaS0VZX0ZGX05TRUNUSU9OUywgMSA8PCAyMiwgMSA8PCAyNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtIRUFERVJfWktFWV9TRUNUSU9OfS4gWmtleSBIZWFkZXJgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVaa2V5SGVhZGVyKGZkWktleSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OfS4gQWRkaXRpb25zYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQWRkaXRpb25zKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FfTUFQX1NFQ1RJT059LiBBIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sIDAsIFwiQSBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0JfTUFQX1NFQ1RJT059LiBCIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sIDEsIFwiQiBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0NfTUFQX1NFQ1RJT059LiBDIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04sIDIsIFwiQyBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FMX1NFQ1RJT059LiBRTGApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FMX1NFQ1RJT04sIDMsIFwiUUxcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FSX1NFQ1RJT059LiBRUmApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FSX1NFQ1RJT04sIDQsIFwiUVJcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FNX1NFQ1RJT059LiBRTWApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FNX1NFQ1RJT04sIDUsIFwiUU1cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FPX1NFQ1RJT059LiBRT2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FPX1NFQ1RJT04sIDYsIFwiUU9cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FDX1NFQ1RJT059LiBRQ2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FDX1NFQ1RJT04sIDcsIFwiUUNcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb25zICR7WktFWV9GRl9TSUdNQTFfU0VDVElPTn0sJHtaS0VZX0ZGX1NJR01BMl9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEzX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVTaWdtYShmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGDCt8K3wrcgV3JpdGluZyBTZWN0aW9uICR7WktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OfS4gTGFncmFuZ2UgUG9seW5vbWlhbHNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVMYWdyYW5nZVBvbHlub21pYWxzKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQdGF1KGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0MwX1NFQ1RJT059LiBDMGApO1xuICAgICAgICBhd2FpdCB3cml0ZUMwKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0hFQURFUl9TRUNUSU9OfS4gRkZsb25rIEhlYWRlcmApO1xuICAgICAgICBhd2FpdCB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBXcml0aW5nIHRoZSB6a2V5IGZpbGUgZmluaXNoZWRcIik7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5SGVhZGVyKGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIEhFQURFUl9aS0VZX1NFQ1RJT04pO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihGRkxPTktfUFJPVE9DT0xfSUQpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUFkZGl0aW9ucyhmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OKTtcblxuICAgICAgICAvLyBXcml0dGVuIHZhbHVlcyBhcmUgMiAqIDMyIGJpdCBpbnRlZ2VycyAoMiAqIDQgYnl0ZXMpICsgMiBmaWVsZCBzaXplIHZhbHVlcyAoIDIgKiBzRnIgYnl0ZXMpXG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheSg4ICsgMiAqIHNGcik7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXRWID0gbmV3IERhdGFWaWV3KGJ1ZmZPdXQuYnVmZmVyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQWRkaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgQWRkaXRpb25zOiAke2l9LyR7cGxvbmtBZGRpdGlvbnMubGVuZ3RofWApO1xuXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbiA9IHBsb25rQWRkaXRpb25zW2ldO1xuXG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIoMCwgYWRkaXRpb25bMF0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKDQsIGFkZGl0aW9uWzFdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzJdLCA4KTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzNdLCA4ICsgc0ZyKTtcblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2l0bmVzc01hcChmZFpLZXksIHNlY3Rpb25OdW0sIHBvc0NvbnN0cmFpbnQsIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyB3aXRuZXNzICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVRTWFwKGZkWktleSwgc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICAvLyBDb21wdXRlIFEgZnJvbSBxIGV2YWx1YXRpb25zXG4gICAgICAgIGxldCBRID0gbmV3IEJpZ0J1ZmZlcihzZXR0aW5ncy5kb21haW5TaXplICogc0ZyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFEuc2V0KHBsb25rQ29uc3RyYWludHNbaV1bcG9zQ29uc3RyYWludF0sIGkgKiBzRnIpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2x5bm9taWFsc1tuYW1lXSA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKFEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBXcml0ZSBRIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzW25hbWVdLmNvZWYpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoZXZhbHVhdGlvbnNbbmFtZV0uZXZhbCk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlU2lnbWEoZmRaS2V5KSB7XG4gICAgICAgIC8vIENvbXB1dGUgc2lnbWFcbiAgICAgICAgY29uc3Qgc2lnbWEgPSBuZXcgQmlnQnVmZmVyKHNGciAqIHNldHRpbmdzLmRvbWFpblNpemUgKiAzKTtcbiAgICAgICAgY29uc3QgbGFzdFNlZW4gPSBuZXcgQmlnQXJyYXkoc2V0dGluZ3MublZhcnMpO1xuICAgICAgICBjb25zdCBmaXJzdFBvcyA9IG5ldyBCaWdBcnJheShzZXR0aW5ncy5uVmFycyk7XG5cbiAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3MuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzBdLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMV0sIHNldHRpbmdzLmRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMl0sIHNldHRpbmdzLmRvbWFpblNpemUgKiAyICsgaSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCBzZXR0aW5ncy5kb21haW5TaXplIC0gMikge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICogMiArIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQodywgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KEZyLm11bCh3LCBrMSksIChzZXR0aW5ncy5kb21haW5TaXplICsgaSkgKiBzRnIpO1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldChGci5tdWwodywgazIpLCAoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDIgKyBpKSAqIHNGcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1tzZXR0aW5ncy5jaXJQb3dlcl0pO1xuXG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGAgICAgICB3cml0aW5nIHNpZ21hIHBoYXNlMTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uVmFyczsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpcnN0UG9zW2ldICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW2ldLCBmaXJzdFBvc1tpXSAqIHNGcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgc2lnbWEgcGhhc2UyOiAke2l9LyR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIC8vIFdyaXRlIHNpZ21hIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25JZCA9IDAgPT09IGkgPyBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OIDogMSA9PT0gaSA/IFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04gOiBaS0VZX0ZGX1NJR01BM19TRUNUSU9OO1xuXG4gICAgICAgICAgICBsZXQgbmFtZSA9IFwiU1wiICsgKGkgKyAxKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzW25hbWVdID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoc2lnbWEuc2xpY2Uoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGciAqIGksIHNldHRpbmdzLmRvbWFpblNpemUgKiBzRnIgKiAoaSArIDEpKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbklkKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShwb2x5bm9taWFsc1tuYW1lXS5jb2VmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShldmFsdWF0aW9uc1tuYW1lXS5ldmFsKTtcbiAgICAgICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRTaWdtYShzaWduYWxJZCwgaWR4KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RTZWVuW3NpZ25hbElkXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIGZpcnN0UG9zW3NpZ25hbElkXSA9IGlkeDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW3NpZ25hbElkXSwgaWR4ICogc0ZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2O1xuICAgICAgICAgICAgaWYgKGlkeCA8IHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgMiAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RTZWVuW3NpZ25hbElkXSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUxhZ3JhbmdlUG9seW5vbWlhbHMoZmRaS2V5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBsID0gTWF0aC5tYXgoc2V0dGluZ3MublB1YmxpYywgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYnVmZiA9IG5ldyBCaWdCdWZmZXIoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGcik7XG4gICAgICAgICAgICBidWZmLnNldChGci5vbmUsIGkgKiBzRnIpO1xuXG4gICAgICAgICAgICBhd2FpdCB3cml0ZVA0KGZkWktleSwgYnVmZik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQdGF1KGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIFpLRVlfRkZfUFRBVV9TRUNUSU9OKTtcblxuICAgICAgICAvLyBkb21haW5TaXplICogOSArIDE4ID0gbWF4aW11bSBTUlMgbGVuZ3RoIG5lZWRlZCwgc3BlY2lmaWNhbGx5IHRvIGNvbW1pdCBDMlxuICAgICAgICBQVGF1ID0gbmV3IEJpZ0J1ZmZlcigoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDkgKyAxOCkgKiBzRzEpO1xuICAgICAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKFBUYXUsIDAsIChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSwgcFRhdVNlY3Rpb25zWzJdWzBdLnApO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShQVGF1KTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVDMChmZFpLZXkpIHtcbiAgICAgICAgLy8gQzAoWCkgOj0gUUwoWF44KSArIFggwrcgUVIoWF44KSArIFheMiDCtyBRTyhYXjgpICsgWF4zIMK3IFFNKFheOCkgKyBYXjQgwrcgUUMoWF44KVxuICAgICAgICAvLyAgICAgICAgICAgICsgWF41IMK3IFNJR01BMShYXjgpICsgWF42IMK3IFNJR01BMihYXjgpICsgWF43IMK3IFNJR01BMyhYXjgpXG4gICAgICAgIGxldCBDMCA9IG5ldyBDUG9seW5vbWlhbCg4LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgwLCBwb2x5bm9taWFscy5RTCk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoMSwgcG9seW5vbWlhbHMuUVIpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDIsIHBvbHlub21pYWxzLlFPKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgzLCBwb2x5bm9taWFscy5RTSk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNCwgcG9seW5vbWlhbHMuUUMpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDUsIHBvbHlub21pYWxzLlMxKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCg2LCBwb2x5bm9taWFscy5TMik7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNywgcG9seW5vbWlhbHMuUzMpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLkMwID0gQzAuZ2V0UG9seW5vbWlhbCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICBpZiAocG9seW5vbWlhbHMuQzAuZGVncmVlKCkgPj0gOCAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMwIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9DMF9TRUNUSU9OKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzLkMwLmNvZWYpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgICAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKyAxKSAqIDg7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cSk7XG4gICAgICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuXG4gICAgICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArIDEpICogODtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG5cbiAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHIxY3MgdmFyc1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihzZXR0aW5ncy5uVmFycyk7XG4gICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiByMWNzIHB1YmxpYyB2YXJzID0gb3V0cHV0cyArIHB1YmxpYyBpbnB1dHNcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoc2V0dGluZ3MublB1YmxpYyk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHNldHRpbmdzLmRvbWFpblNpemUpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0FkZGl0aW9ucy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsyKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzMpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzQpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUod3IpO1xuXG4gICAgICAgIGxldCBiWF8yO1xuICAgICAgICBiWF8yID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBwVGF1U2VjdGlvbnNbM11bMF0ucCArIHNHMik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShiWF8yKTtcblxuICAgICAgICBsZXQgY29tbWl0QzAgPSBhd2FpdCBwb2x5bm9taWFscy5DMC5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzBcIik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShjb21taXRDMCk7XG5cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQNChmZFpLZXksIGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgW2NvZWZmaWNpZW50cywgZXZhbHVhdGlvbnM0XSA9IGF3YWl0IFBvbHlub21pYWwudG80VChidWZmLCBzZXR0aW5ncy5kb21haW5TaXplLCBbXSwgRnIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoY29lZmZpY2llbnRzKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGV2YWx1YXRpb25zNCk7XG5cbiAgICAgICAgcmV0dXJuIFtjb2VmZmljaWVudHMsIGV2YWx1YXRpb25zNF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZUsxSzIoKSB7XG4gICAgICAgIGxldCBrMSA9IEZyLnR3bztcbiAgICAgICAgd2hpbGUgKGlzSW5jbHVkZWQoazEsIFtdLCBzZXR0aW5ncy5jaXJQb3dlcikpIEZyLmFkZChrMSwgRnIub25lKTtcbiAgICAgICAgbGV0IGsyID0gRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMiwgW2sxXSwgc2V0dGluZ3MuY2lyUG93ZXIpKSBGci5hZGQoazIsIEZyLm9uZSk7XG4gICAgICAgIHJldHVybiBbazEsIGsyXTtcblxuICAgICAgICBmdW5jdGlvbiBpc0luY2x1ZGVkKGssIGtBcnIsIHBvdykge1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogcG93O1xuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCB3KSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrQXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCBGci5tdWwoa0FycltqXSwgdykpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3Bvd10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVczKCkge1xuICAgICAgICBsZXQgZ2VuZXJhdG9yID0gRnIuZSgzMTYyNCk7XG5cbiAgICAgICAgLy8gRXhwb25lbnQgaXMgb3JkZXIociAtIDEpIC8gM1xuICAgICAgICBsZXQgb3JkZXJSc3ViMSA9IDM2NDgwNDA0Nzg2Mzk4NzkyMDM3MDc3MzQyOTA4NzYyMTI1MTQ3NTgwNjA3MzM0MDI2NzIzOTA2MTYzNjczNjQ0MjkzMDE0MTU5MzZuO1xuICAgICAgICBsZXQgZXhwb25lbnQgPSBTY2FsYXIuZGl2KG9yZGVyUnN1YjEsIFNjYWxhci5lKDMpKTtcblxuICAgICAgICByZXR1cm4gRnIuZXhwKGdlbmVyYXRvciwgZXhwb25lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXNCgpIHtcbiAgICAgICAgcmV0dXJuIEZyLndbMl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVc4KCkge1xuICAgICAgICByZXR1cm4gRnIud1szXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPbWVnYUN1YmljUm9vdChwb3dlciwgRnIpIHtcbiAgICAgICAgLy8gSGFyZGNvcmRlZCAzdGgtcm9vdCBvZiBGci53WzI4XVxuICAgICAgICBjb25zdCBmaXJzdFJvb3QgPSBGci5lKDQ2Nzc5OTE2NTg4NjA2OTYxMDAzNjA0Njg2Njc5OTI2NDAyNjQ4MTM0NDI5OTA3OTAxMTc2MjAyNjc3NDUzMzc3NDM0NTk4ODA4MG4pO1xuXG4gICAgICAgIHJldHVybiBGci5leHAoZmlyc3RSb290LCAyICoqICgyOCAtIHBvd2VyKSk7XG4gICAgfVxufVxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBCaWdCdWZmZXIsIFNjYWxhciwgdXRpbHMgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBGRkxPTktfUFJPVE9DT0xfSUQgfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtcbiAgICBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfQ19NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9GRl9QVEFVX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RQ19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FNX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RT19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTNfU0VDVElPTixcbn0gZnJvbSBcIi4vZmZsb25rX2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IFBvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCB7IEV2YWx1YXRpb25zIH0gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuaW1wb3J0IHsgQ1BvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzXCI7XG5cbmNvbnN0IHsgc3RyaW5naWZ5QmlnSW50cyB9ID0gdXRpbHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rUHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlciwgb3B0aW9ucykge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFBST1ZFUiBTVEFSVEVEXCIpO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRXdG5zLFxuICAgICAgICBzZWN0aW9uczogd3Ruc1NlY3Rpb25zXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxIDw8IDI1LCAxIDw8IDIzKTtcbiAgICBjb25zdCB3dG5zID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCB3dG5zU2VjdGlvbnMpO1xuXG4gICAgLy9SZWFkIHprZXkgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHprZXkgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFpLZXksXG4gICAgICAgIHNlY3Rpb25zOiB6a2V5U2VjdGlvbnNcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIsIDEgPDwgMjUsIDEgPDwgMjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgemtleVNlY3Rpb25zLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHprZXkucHJvdG9jb2xJZCAhPT0gRkZMT05LX1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZmZsb25rXCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgd3Rucy5xKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJ2ZSBvZiB0aGUgd2l0bmVzcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIHByb3Zpbmcga2V5XCIpO1xuICAgIH1cblxuICAgIGlmICh3dG5zLm5XaXRuZXNzICE9PSB6a2V5Lm5WYXJzIC0gemtleS5uQWRkaXRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRuZXNzIGxlbmd0aC4gQ2lyY3VpdDogJHt6a2V5Lm5WYXJzfSwgd2l0bmVzczogJHt3dG5zLm5XaXRuZXNzfSwgJHt6a2V5Lm5BZGRpdGlvbnN9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSB6a2V5LmN1cnZlO1xuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IHNGciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjggKiAyO1xuICAgIGNvbnN0IHNEb21haW4gPSB6a2V5LmRvbWFpblNpemUgKiBzRnI7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIEZGTE9OSyBQUk9WRSBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3prZXkucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIERvbWFpbiBzaXplOiAgICR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBWYXJzOiAgICAgICAgICAke3prZXkublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7emtleS5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDb25zdHJhaW50czogICAke3prZXkubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBBZGRpdGlvbnM6ICAgICAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vUmVhZCB3aXRuZXNzIGRhdGFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGUgZGF0YVwiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHd0bnNTZWN0aW9ucywgMik7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbiAgICAvLyBGaXJzdCBlbGVtZW50IGluIHBsb25rIGlzIG5vdCB1c2VkIGFuZCBjYW4gYmUgYW55IHZhbHVlLiAoQnV0IGFsd2F5cyB0aGUgc2FtZSkuXG4gICAgLy8gV2Ugc2V0IGl0IHRvIHplcm8gdG8gZ28gZmFzdGVyIGluIHRoZSBleHBvbmVudGlhdGlvbnMuXG4gICAgYnVmZldpdG5lc3Muc2V0KEZyLnplcm8sIDApO1xuICAgIGNvbnN0IGJ1ZmZJbnRlcm5hbFdpdG5lc3MgPSBuZXcgQmlnQnVmZmVyKHprZXkubkFkZGl0aW9ucyAqIHNGcik7XG5cbiAgICBsZXQgYnVmZmVycyA9IHt9O1xuICAgIGxldCBwb2x5bm9taWFscyA9IHt9O1xuICAgIGxldCBldmFsdWF0aW9ucyA9IHt9O1xuXG4gICAgLy8gVG8gZGl2aWRlIHByaW1lIGZpZWxkcyB0aGUgRXh0ZW5kZWQgRXVjbGlkZWFuIEFsZ29yaXRobSBmb3IgY29tcHV0aW5nIG1vZHVsYXIgaW52ZXJzZXMgaXMgbmVlZGVkLlxuICAgIC8vIE5PVEU6IFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY29tcHV0ZSAxL2Rlbm9taW5hdG9yIGFuZCB0aGVuIG11bHRpcGx5IGl0IGJ5IHRoZSBudW1lcmF0b3IuXG4gICAgLy8gVGhlIEV4dGVuZGVkIEV1Y2xpZGVhbiBBbGdvcml0aG0gaXMgZXhwZW5zaXZlIGluIHRlcm1zIG9mIGNvbXB1dGF0aW9uLlxuICAgIC8vIEZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIG5lZWQgdG8gZG8gbWFueSBtb2R1bGFyIGludmVyc2VzLCB0aGVyZSdzIGEgc2ltcGxlIG1hdGhlbWF0aWNhbCB0cmlja1xuICAgIC8vIHRoYXQgYWxsb3dzIHVzIHRvIGNvbXB1dGUgbWFueSBpbnZlcnNlcywgY2FsbGVkIE1vbnRnb21lcnkgYmF0Y2ggaW52ZXJzaW9uLlxuICAgIC8vIE1vcmUgaW5mbzogaHR0cHM6Ly92aXRhbGlrLmNhL2dlbmVyYWwvMjAxOC8wNy8yMS9zdGFya3NfcGFydF8zLmh0bWxcbiAgICAvLyBNb250Z29tZXJ5IGJhdGNoIGludmVyc2lvbiByZWR1Y2VzIHRoZSBuIGludmVyc2UgY29tcHV0YXRpb25zIHRvIGEgc2luZ2xlIG9uZVxuICAgIC8vIFRvIHNhdmUgdGhpcyAoc2luZ2xlKSBpbnZlcnNlIGNvbXB1dGF0aW9uIG9uLWNoYWluLCB3aWxsIGNvbXB1dGUgaXQgaW4gcHJvdmluZyB0aW1lIGFuZCBzZW5kIGl0IHRvIHRoZSB2ZXJpZmllci5cbiAgICAvLyBUaGUgdmVyaWZpZXIgd2lsbCBoYXZlIHRvIGNoZWNrOlxuICAgIC8vIDEpIHRoZSBkZW5vbWluYXRvciBpcyBjb3JyZWN0IG11bHRpcGx5aW5nIGJ5IGhpbXNlbGYgbm9uLWludmVydGVkIC0+IGEgKiAxL2EgPT0gMVxuICAgIC8vIDIpIGNvbXB1dGUgdGhlIHJlc3Qgb2YgdGhlIGRlbm9taW5hdG9ycyB1c2luZyB0aGUgTW9udGdvbWVyeSBiYXRjaCBpbnZlcnNpb25cbiAgICAvLyBUaGUgaW52ZXJzaW9ucyBhcmU6XG4gICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCA4IGFuZCA5IG9mIHRoZSB2ZXJpZmllciB0byBtdWx0aXBseSBieSAxL1pfSCh4aSlcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiBzdGVwIDEwIGFuZCAxMSBvZiB0aGUgdmVyaWZpZXJcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiB0aGUgdmVyaWZpZXIgd2hlbiBjb21wdXRpbmcgTF9pXntTMX0oWCkgYW5kIExfaV57UzJ9KFgpXG4gICAgLy8gICDCtyBMX2kgaT0xIHRvIG51bSBwdWJsaWMgaW5wdXRzLCBuZWVkZWQgaW4gc3RlcCA2IGFuZCA3IG9mIHRoZSB2ZXJpZmllciB0byBjb21wdXRlIExfMSh4aSkgYW5kIFBJKHhpKVxuICAgIGxldCB0b0ludmVyc2UgPSB7fTtcblxuICAgIGxldCBjaGFsbGVuZ2VzID0ge307XG4gICAgbGV0IHJvb3RzID0ge307XG5cbiAgICBsZXQgcHJvb2YgPSBuZXcgUHJvb2YoY3VydmUsIGxvZ2dlcik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OfS4gQWRkaXRpb25zYCk7XG4gICAgYXdhaXQgY2FsY3VsYXRlQWRkaXRpb25zKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb25zICR7WktFWV9GRl9TSUdNQTFfU0VDVElPTn0sJHtaS0VZX0ZGX1NJR01BMl9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEzX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBSZWFkaW5nIFNpZ21hIHBvbHlub21pYWxzIFwiKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTIgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTMgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWExLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMV9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTJfU0VDVElPTl1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5TaWdtYTMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfU0lHTUEzX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBldmFsdWF0aW9uc1wiKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTEgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWEzID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWExLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTFfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEyLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTJfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEzLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTNfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYD4gUmVhZGluZyBTZWN0aW9uICR7WktFWV9GRl9QVEFVX1NFQ1RJT059LiBQb3dlcnMgb2YgVGF1YCk7XG4gICAgY29uc3QgUFRhdSA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogMTYgKiBzRzEpO1xuICAgIC8vIGRvbWFpblNpemUgKiA5ICsgMTggPSBTUlMgbGVuZ3RoIGluIHRoZSB6a2V5IHNhdmVkIGluIHNldHVwIHByb2Nlc3MuXG4gICAgLy8gaXQgY29ycmVzcG9uZHMgdG8gdGhlIG1heGltdW0gU1JTIGxlbmd0aCBuZWVkZWQsIHNwZWNpZmljYWxseSB0byBjb21taXQgQzJcbiAgICAvLyBub3RpY2UgdGhhdCB0aGUgcmVzZXJ2ZWQgYnVmZmVycyBzaXplIGlzIHprZXkuZG9tYWluU2l6ZSAqIDE2ICogc0cxIGJlY2F1c2UgYSBwb3dlciBvZiB0d28gYnVmZmVyIHNpemUgaXMgbmVlZGVkXG4gICAgLy8gdGhlIHJlbWFpbmluZyBidWZmZXIgbm90IGZpbGxlZCBmcm9tIFNSUyBhcmUgc2V0IHRvIDBcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKFBUYXUsIDAsICh6a2V5LmRvbWFpblNpemUgKiA5ICsgMTgpICogc0cxLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9QVEFVX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgLy8gU1RBUlQgRkZMT05LIFBST1ZFUiBQUk9UT0NPTFxuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCAxLiBDb21wdXRlIEMxKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgMVwiKTtcbiAgICBhd2FpdCByb3VuZDEoKTtcblxuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMDtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUUw7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFSO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUU87XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFDO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCAyLiBDb21wdXRlIEMyKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgMlwiKTtcbiAgICBhd2FpdCByb3VuZDIoKTtcblxuICAgIGRlbGV0ZSBidWZmZXJzLkE7XG4gICAgZGVsZXRlIGJ1ZmZlcnMuQjtcbiAgICBkZWxldGUgYnVmZmVycy5DO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5BO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5CO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5DO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5TaWdtYTE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlNpZ21hMjtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuU2lnbWEzO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5sYWdyYW5nZTE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlo7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDMuIENvbXB1dGUgb3BlbmluZyBldmFsdWF0aW9uc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAzXCIpO1xuICAgIGF3YWl0IHJvdW5kMygpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkM7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlo7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQxO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuU2lnbWExO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5TaWdtYTI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlNpZ21hMztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUUw7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFSO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RTTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUUM7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFPO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCA0LiBDb21wdXRlIFcoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCA0XCIpO1xuICAgIGF3YWl0IHJvdW5kNCgpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCA1LiBDb21wdXRlIFcnKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgNVwiKTtcbiAgICBhd2FpdCByb3VuZDUoKTtcblxuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5DMDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQzE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkMyO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5SMTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUjI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkY7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkw7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlpUO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5aVFMyO1xuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiaW52XCIsIGdldE1vbnRnb21lcnlCYXRjaGVkSW52ZXJzZSgpKTtcblxuICAgIC8vIFByZXBhcmUgcHJvb2ZcbiAgICBsZXQgX3Byb29mID0gcHJvb2YudG9PYmplY3RQcm9vZigpO1xuICAgIF9wcm9vZi5wcm90b2NvbCA9IFwiZmZsb25rXCI7XG4gICAgX3Byb29mLmN1cnZlID0gY3VydmUubmFtZTtcblxuICAgIC8vIFByZXBhcmUgcHVibGljIGlucHV0c1xuICAgIGxldCBwdWJsaWNTaWduYWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG5cbiAgICAgICAgY29uc3QgcHViID0gYnVmZldpdG5lc3Muc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgcHVibGljU2lnbmFscy5wdXNoKFNjYWxhci5mcm9tUnByTEUocHViKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgUFJPVkVSIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvb2Y6IHN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKSxcbiAgICAgICAgcHVibGljU2lnbmFsczogc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKVxuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVBZGRpdGlvbnMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBhZGRpdGlvbnNcIik7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0J1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIHNpemVzOiB3aXJlSWRfeCA9IDQgYnl0ZXMgKDMyIGJpdHMpLCBmYWN0b3JfeCA9IGZpZWxkIHNpemUgYml0c1xuICAgICAgICAvLyBBZGRpdGlvbiBmb3JtOiB3aXJlSWRfYSB3aXJlSWRfYiBmYWN0b3JfYSBmYWN0b3JfYiAoc2l6ZSBpcyA0ICsgNCArIHNGciArIHNGcilcbiAgICAgICAgY29uc3Qgc1N1bSA9IDggKyBzRnIgKiAyO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICBhZGRpdGlvbiAke2l9LyR7emtleS5uQWRkaXRpb25zfWApO1xuXG4gICAgICAgICAgICAvLyBSZWFkIGFkZGl0aW9uIHZhbHVlc1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IGkgKiBzU3VtO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQxID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZDIgPSByZWFkVUludDMyKGFkZGl0aW9uc0J1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcjEgPSBhZGRpdGlvbnNCdWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcbiAgICAgICAgICAgIG9mZnNldCArPSBzRnI7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IyID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIHNGcik7XG5cbiAgICAgICAgICAgIC8vIEdldCB3aXRuZXNzIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMSA9IGdldFdpdG5lc3Moc2lnbmFsSWQxKTtcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3MyID0gZ2V0V2l0bmVzcyhzaWduYWxJZDIpO1xuXG4gICAgICAgICAgICAvL0NhbGN1bGF0ZSBmaW5hbCByZXN1bHRcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEZyLmFkZChGci5tdWwoZmFjdG9yMSwgd2l0bmVzczEpLCBGci5tdWwoZmFjdG9yMiwgd2l0bmVzczIpKTtcblxuICAgICAgICAgICAgYnVmZkludGVybmFsV2l0bmVzcy5zZXQocmVzdWx0LCBzRnIgKiBpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRVSW50MzIoYiwgbykge1xuICAgICAgICBjb25zdCBidWZmID0gYi5zbGljZShvLCBvICsgNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHJldHVybiBidWZmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2l0bmVzcyhpZHgpIHtcbiAgICAgICAgbGV0IGRpZmYgPSB6a2V5Lm5WYXJzIC0gemtleS5uQWRkaXRpb25zO1xuICAgICAgICBpZiAoaWR4IDwgZGlmZikge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZXaXRuZXNzLnNsaWNlKGlkeCAqIHNGciwgaWR4ICogc0ZyICsgc0ZyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpZHggPCB6a2V5Lm5WYXJzKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAoaWR4IC0gZGlmZikgKiBzRnI7XG4gICAgICAgICAgICByZXR1cm4gYnVmZkludGVybmFsV2l0bmVzcy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNGcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRnIuemVybztcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDEoKSB7XG4gICAgICAgIC8vIFNURVAgMS4xIC0gR2VuZXJhdGUgcmFuZG9tIGJsaW5kaW5nIHNjYWxhcnMgKGJfMSwgLi4uLCBiOSkg4oiIIEZcbiAgICAgICAgY2hhbGxlbmdlcy5iID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDk7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy5iW2ldID0gRnIucmFuZG9tKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDEuMiAtIENvbXB1dGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQSwgQiwgQyB3aXJlIHBvbHlub21pYWxzXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlV2lyZVBvbHlub21pYWxzKCk7XG5cbiAgICAgICAgLy8gU1RFUCAxLjMgLSBDb21wdXRlIHRoZSBxdW90aWVudCBwb2x5bm9taWFsIFQwKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVDAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVQwKCk7XG5cbiAgICAgICAgLy8gU1RFUCAxLjQgLSBDb21wdXRlIHRoZSBGRlQtc3R5bGUgY29tYmluYXRpb24gcG9seW5vbWlhbCBDMShYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVDMSgpO1xuXG4gICAgICAgIC8vIFRoZSBmaXJzdCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW0MxXV8xKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMxIG11bHRpIGV4cG9uZW50aWF0aW9uXCIpO1xuICAgICAgICBsZXQgY29tbWl0QzEgPSBhd2FpdCBwb2x5bm9taWFscy5DMS5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzFcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDMVwiLCBjb21taXRDMSk7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVdpcmVQb2x5bm9taWFscygpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IFJlYWRpbmcgZGF0YSBmcm9tIHprZXkgZmlsZVwiKTtcbiAgICAgICAgICAgIC8vIEJ1aWxkIEEsIEIgYW5kIEMgZXZhbHVhdGlvbnMgYnVmZmVyIGZyb20gemtleSBhbmQgd2l0bmVzcyBmaWxlc1xuICAgICAgICAgICAgYnVmZmVycy5BID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgICAgICBidWZmZXJzLkMgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBSZWFkIHprZXkgc2VjdGlvbnMgYW5kIGZpbGwgdGhlIGJ1ZmZlcnNcbiAgICAgICAgICAgIGNvbnN0IGFNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04pO1xuICAgICAgICAgICAgY29uc3QgYk1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQl9NQVBfU0VDVElPTik7XG4gICAgICAgICAgICBjb25zdCBjTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9DX01BUF9TRUNUSU9OKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBhbGwgd2l0bmVzcyBmcm9tIHNpZ25hbCBpZHMgYW5kIHNldCB0aGVtIHRvIEEsQiAmIEMgYnVmZmVyc1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5Db25zdHJhaW50czsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogc0ZyO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGkgKiA0O1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBBIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduYWxJZEEgPSByZWFkVUludDMyKGFNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuQS5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEEpLCBpX3NGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIEIgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQiA9IHJlYWRVSW50MzIoYk1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5CLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQiksIGlfc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgQyB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRDID0gcmVhZFVJbnQzMihjTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLkMuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRDKSwgaV9zRnIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBCbGluZCBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICAgICAgYnVmZmVycy5BLnNldChjaGFsbGVuZ2VzLmJbMV0sIHNEb21haW4gLSA2NCk7XG4gICAgICAgICAgICBidWZmZXJzLkEuc2V0KGNoYWxsZW5nZXMuYlsyXSwgc0RvbWFpbiAtIDMyKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQi5zZXQoY2hhbGxlbmdlcy5iWzNdLCBzRG9tYWluIC0gNjQpO1xuICAgICAgICAgICAgYnVmZmVycy5CLnNldChjaGFsbGVuZ2VzLmJbNF0sIHNEb21haW4gLSAzMik7XG4gICAgICAgICAgICBidWZmZXJzLkMuc2V0KGNoYWxsZW5nZXMuYls1XSwgc0RvbWFpbiAtIDY0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoY2hhbGxlbmdlcy5iWzZdLCBzRG9tYWluIC0gMzIpO1xuXG4gICAgICAgICAgICBidWZmZXJzLkEgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkEpO1xuICAgICAgICAgICAgYnVmZmVycy5CID0gYXdhaXQgRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZmVycy5CKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQyA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQyk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpIGZyb20gQSxCICYgQyBidWZmZXJzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQSBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQSA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQyBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQyA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgZXh0ZW5kZWQgZXZhbHVhdGlvbnMgb2YgYShYKSwgYihYKSBhbmQgYyhYKSBwb2x5bm9taWFsc1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEEgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkEsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEIgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkIsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQyA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMsIDQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVzXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQS5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5CLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkMuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQyBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlVDAoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFJlYWRpbmcgc2VjdGlvbnMgJHtaS0VZX0ZGX1FMX1NFQ1RJT059LCAke1pLRVlfRkZfUVJfU0VDVElPTn1gICtcbiAgICAgICAgICAgICAgICBgLCAke1pLRVlfRkZfUU1fU0VDVElPTn0sICR7WktFWV9GRl9RT19TRUNUSU9OfSwgJHtaS0VZX0ZGX1FDX1NFQ1RJT059LiBRIHNlbGVjdG9yc2ApO1xuICAgICAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBldmFsdWF0aW9uc1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUUwgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUVIgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUU0gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUU8gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUUMgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBSZWFkIFEncyBldmFsdWF0aW9ucyBmcm9tIHprZXkgZmlsZVxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTC5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUxfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RUi5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUVJfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU1fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU9fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RQy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUNfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBSZWFkIExhZ3JhbmdlIHBvbHlub21pYWxzICYgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgICAgIGNvbnN0IGxhZ3JhbmdlUG9seW5vbWlhbHMgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfTEFHUkFOR0VfU0VDVElPTik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5sYWdyYW5nZTEgPSBuZXcgRXZhbHVhdGlvbnMobGFncmFuZ2VQb2x5bm9taWFscywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIFJlc2VydmUgbWVtb3J5IGZvciBidWZmZXJzIFQwXG4gICAgICAgICAgICBidWZmZXJzLlQwID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMCBldmFsdWF0aW9uc1wiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgICAgVDAgZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplICogNH1gKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCByZWxhdGVkIGV2YWx1YXRpb25zIHRvIGNvbXB1dGUgY3VycmVudCBUMCBldmFsdWF0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGV2YWx1YXRpb25zLkEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gZXZhbHVhdGlvbnMuQi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBxbCA9IGV2YWx1YXRpb25zLlFMLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcXIgPSBldmFsdWF0aW9ucy5RUi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFtID0gZXZhbHVhdGlvbnMuUU0uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxbyA9IGV2YWx1YXRpb25zLlFPLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcWMgPSBldmFsdWF0aW9ucy5RQy5nZXRFdmFsdWF0aW9uKGkpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBjdXJyZW50IHB1YmxpYyBpbnB1dFxuICAgICAgICAgICAgICAgIGxldCBwaSA9IEZyLnplcm87XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB6a2V5Lm5QdWJsaWM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAoaiAqIDUgKiB6a2V5LmRvbWFpblNpemUpICsgemtleS5kb21haW5TaXplICsgaTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsUG9sID0gZXZhbHVhdGlvbnMubGFncmFuZ2UxLmdldEV2YWx1YXRpb24ob2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYVZhbCA9IGJ1ZmZlcnMuQS5zbGljZShqICogc0ZyLCAoaiArIDEpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKGxQb2wsIGFWYWwpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL1QwKFgpID0gW3FfTChYKcK3YShYKSArIHFfUihYKcK3YihYKSArIHFfTShYKcK3YShYKcK3YihYKSArIHFfTyhYKcK3YyhYKSArIHFfQyhYKSArIFBJKFgpXSDCtyAxL1pfSChYKVxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgZmlyc3QgVDAoWCnCt1pfSChYKSwgc28gZGl2aWRlIGxhdGVyIHRoZSByZXN1bHRpbmcgcG9seW5vbWlhbCBieSBaX0goWClcbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDEgLT4gcV9MKFgpwrdhKFgpXG4gICAgICAgICAgICAgICAgY29uc3QgZTEgPSBGci5tdWwoYSwgcWwpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAyIC0+IHFfUihYKcK3YihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGUyID0gRnIubXVsKGIsIHFyKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMyAtPiBxX00oWCnCt2EoWCnCt2IoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlMyA9IEZyLm11bChGci5tdWwoYSwgYiksIHFtKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gNCAtPiBxX08oWCnCt2MoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlNCA9IEZyLm11bChjLCBxbyk7XG5cbiAgICAgICAgICAgICAgICAvLyB0MCA9IGV4cHJlc3Npb25zIDEgKyBleHByZXNzaW9uIDIgKyBleHByZXNzaW9uIDMgKyBleHByZXNzaW9uIDQgKyBxYyArIHBpXG4gICAgICAgICAgICAgICAgY29uc3QgdDAgPSBGci5hZGQoZTEsIEZyLmFkZChlMiwgRnIuYWRkKGUzLCBGci5hZGQoZTQsIEZyLmFkZChxYywgcGkpKSkpKTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDAuc2V0KHQwLCBpICogc0ZyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJidWZmZXIgVDA6IFwiICsgYnVmZmVycy5UMC5ieXRlTGVuZ3RoIC8gc0ZyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQwKFgpIGZyb20gYnVmZmVycy5UMFxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMCA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVDAsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlQwIGxlbmd0aDogXCIgKyBwb2x5bm9taWFscy5UMC5sZW5ndGgoKSk7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlQwIGRlZ3JlZTogXCIgKyBwb2x5bm9taWFscy5UMC5kZWdyZWUoKSk7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMCBieSBaX0goWClcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMCAvIFpIXCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDAuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQwLmRlZ3JlZSgpID49IDIgKiB6a2V5LmRvbWFpblNpemUgLSAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUMCBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWQgKGRlZ3JlZSBpcyAke3BvbHlub21pYWxzLlQwLmRlZ3JlZSgpfSBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gJHsyICogemtleS5kb21haW5TaXplICsgMn1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDA7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlQzEoKSB7XG4gICAgICAgICAgICBsZXQgQzEgPSBuZXcgQ1BvbHlub21pYWwoNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDAsIHBvbHlub21pYWxzLkEpO1xuICAgICAgICAgICAgQzEuYWRkUG9seW5vbWlhbCgxLCBwb2x5bm9taWFscy5CKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMiwgcG9seW5vbWlhbHMuQyk7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDMsIHBvbHlub21pYWxzLlQwKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbHMuQzEgPSBDMS5nZXRQb2x5bm9taWFsKCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkMxLmRlZ3JlZSgpID49IDggKiB6a2V5LmRvbWFpblNpemUgLSA4KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQzEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQyKCkge1xuICAgICAgICAvLyBTVEVQIDIuMSAtIENvbXB1dGUgcGVybXV0YXRpb24gY2hhbGxlbmdlIGJldGEgYW5kIGdhbW1hIOKIiCBGXG4gICAgICAgIC8vIENvbXB1dGUgcGVybXV0YXRpb24gY2hhbGxlbmdlIGJldGFcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2VzIGJldGEgYW5kIGdhbW1hXCIpO1xuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgICAgIC8vIEFkZCBDMCB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5DMCk7XG5cbiAgICAgICAgLy8gQWRkIEEgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoYnVmZmVycy5BLnNsaWNlKGkgKiBzRnIsIGkgKiBzRnIgKyBzRnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBDMSB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIkMxXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmJldGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmJldGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5iZXRhKSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgZ2FtbWFcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5nYW1tYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmdhbW1hKSk7XG5cbiAgICAgICAgLy8gU1RFUCAyLjIgLSBDb21wdXRlIHBlcm11dGF0aW9uIHBvbHlub21pYWwgeihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFogcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVooKTtcblxuICAgICAgICAvLyBTVEVQIDIuMyAtIENvbXB1dGUgcXVvdGllbnQgcG9seW5vbWlhbCBUMShYKSBhbmQgVDIoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDEoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDIoKTtcblxuICAgICAgICAvLyBTVEVQIDIuNCAtIENvbXB1dGUgdGhlIEZGVC1zdHlsZSBjb21iaW5hdGlvbiBwb2x5bm9taWFsIEMyKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUMyKCk7XG5cbiAgICAgICAgLy8gVGhlIHNlY29uZCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW0MyXV8xKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMyIG11bHRpIGV4cG9uZW50aWF0aW9uXCIpO1xuICAgICAgICBsZXQgY29tbWl0QzIgPSBhd2FpdCBwb2x5bm9taWFscy5DMi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzJcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDMlwiLCBjb21taXRDMik7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVooKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgWiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgbGV0IG51bUFyciA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgICAgICBsZXQgZGVuQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCB2YWx1ZXMgdG8gMVxuICAgICAgICAgICAgbnVtQXJyLnNldChGci5vbmUsIDApO1xuICAgICAgICAgICAgZGVuQXJyLnNldChGci5vbmUsIDApO1xuXG4gICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFogZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICAgICAgICAgIC8vIFooWCkgOj0gbnVtQXJyIC8gZGVuQXJyXG4gICAgICAgICAgICAgICAgLy8gbnVtQXJyIDo9IChhICsgYmV0YcK3z4kgKyBnYW1tYSkoYiArIGJldGHCt8+JwrdrMSArIGdhbW1hKShjICsgYmV0YcK3z4nCt2syICsgZ2FtbWEpXG4gICAgICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0xID0gYnVmZmVycy5BLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgbnVtMSA9IEZyLmFkZChudW0xLCBiZXRhdyk7XG4gICAgICAgICAgICAgICAgbnVtMSA9IEZyLmFkZChudW0xLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0yID0gYnVmZmVycy5CLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgbnVtMiA9IEZyLmFkZChudW0yLCBGci5tdWwoemtleS5rMSwgYmV0YXcpKTtcbiAgICAgICAgICAgICAgICBudW0yID0gRnIuYWRkKG51bTIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTMgPSBidWZmZXJzLkMuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0zID0gRnIuYWRkKG51bTMsIEZyLm11bCh6a2V5LmsyLCBiZXRhdykpO1xuICAgICAgICAgICAgICAgIG51bTMgPSBGci5hZGQobnVtMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbnVtID0gRnIubXVsKG51bTEsIEZyLm11bChudW0yLCBudW0zKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBkZW5BcnIgOj0gKGEgKyBiZXRhwrdzaWdtYTEgKyBnYW1tYSkoYiArIGJldGHCt3NpZ21hMiArIGdhbW1hKShjICsgYmV0YcK3c2lnbWEzICsgZ2FtbWEpXG4gICAgICAgICAgICAgICAgbGV0IGRlbjEgPSBidWZmZXJzLkEuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBkZW4xID0gRnIuYWRkKGRlbjEsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkgKiA0KSkpO1xuICAgICAgICAgICAgICAgIGRlbjEgPSBGci5hZGQoZGVuMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVuMiA9IGJ1ZmZlcnMuQi5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIGRlbjIgPSBGci5hZGQoZGVuMiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgZXZhbHVhdGlvbnMuU2lnbWEyLmdldEV2YWx1YXRpb24oaSAqIDQpKSk7XG4gICAgICAgICAgICAgICAgZGVuMiA9IEZyLmFkZChkZW4yLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBkZW4zID0gYnVmZmVycy5DLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgZGVuMyA9IEZyLmFkZChkZW4zLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBldmFsdWF0aW9ucy5TaWdtYTMuZ2V0RXZhbHVhdGlvbihpICogNCkpKTtcbiAgICAgICAgICAgICAgICBkZW4zID0gRnIuYWRkKGRlbjMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGRlbiA9IEZyLm11bChkZW4xLCBGci5tdWwoZGVuMiwgZGVuMykpO1xuXG4gICAgICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBudW0gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIG51bUFyclxuICAgICAgICAgICAgICAgIG51bSA9IEZyLm11bChudW1BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSwgbnVtKTtcbiAgICAgICAgICAgICAgICBudW1BcnIuc2V0KG51bSwgKChpICsgMSkgJSB6a2V5LmRvbWFpblNpemUpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgZGVuIHZhbHVlIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzYXZlZCBpbiBkZW5BcnJcbiAgICAgICAgICAgICAgICBkZW4gPSBGci5tdWwoZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGciksIGRlbik7XG4gICAgICAgICAgICAgICAgZGVuQXJyLnNldChkZW4sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBOZXh0IG9tZWdhXG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGludmVyc2Ugb2YgZGVuQXJyIHRvIGNvbXB1dGUgaW4gdGhlIG5leHQgY29tbWFuZCB0aGVcbiAgICAgICAgICAgIC8vIGRpdmlzaW9uIG51bUFyci9kZW5BcnIgYnkgbXVsdGlwbHlpbmcgbnVtIMK3IDEvZGVuQXJyXG4gICAgICAgICAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgICAgICAgICAgLy8gVE9ETzogRG8gaXQgaW4gYXNzZW1ibHkgYW5kIGluIHBhcmFsbGVsXG4gICAgICAgICAgICAvLyBNdWx0aXBseSBudW1BcnIgwrcgZGVuQXJyIHdoZXJlIGRlbkFyciB3YXMgaW52ZXJ0ZWQgaW4gdGhlIHByZXZpb3VzIGNvbW1hbmRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpLCBkZW5BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSk7XG4gICAgICAgICAgICAgICAgbnVtQXJyLnNldCh6LCBpX3NGcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGcm9tIG5vdyBvbiB0aGUgdmFsdWVzIHNhdmVkIG9uIG51bUFyciB3aWxsIGJlIFooWCkgYnVmZmVyXG4gICAgICAgICAgICBidWZmZXJzLlogPSBudW1BcnI7XG5cbiAgICAgICAgICAgIGlmICghRnIuZXEobnVtQXJyLnNsaWNlKDAsIHNGciksIEZyLm9uZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3B5IGNvbnN0cmFpbnRzIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHooWCkgZnJvbSBidWZmZXJzLlpcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5aID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5aLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiB6KFgpIHBvbHlub21pYWxcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGZmdFwiKTtcbiAgICAgICAgICAgIGV2YWx1YXRpb25zLlogPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5aLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQmxpbmQgeihYKSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICAgICAgcG9seW5vbWlhbHMuWi5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzldLCBjaGFsbGVuZ2VzLmJbOF0sIGNoYWxsZW5nZXMuYls3XV0pO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5aLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJaIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuWjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMSgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMSBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgYnVmZmVycy5UMSA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDIpO1xuICAgICAgICAgICAgYnVmZmVycy5UMXogPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiAyKTtcblxuICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgb21lZ2FcbiAgICAgICAgICAgIGxldCBvbWVnYSA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFQxIGV2YWx1YXRpb24gJHtpfS8ke3prZXkuZG9tYWluU2l6ZSAqIDR9YCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYTIgPSBGci5zcXVhcmUob21lZ2EpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbihpICogMik7XG4gICAgICAgICAgICAgICAgY29uc3QgenAgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIG9tZWdhKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUMShYKSA6PSAoeihYKSAtIDEpIMK3IExfMShYKVxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgZmlyc3QgVDEoWCnCt1pfSChYKSwgc28gZGl2aWRlIGxhdGVyIHRoZSByZXN1bHRpbmcgcG9seW5vbWlhbCBieSBaX0goWClcbiAgICAgICAgICAgICAgICBjb25zdCBsYWdyYW5nZTEgPSBldmFsdWF0aW9ucy5sYWdyYW5nZTEuZ2V0RXZhbHVhdGlvbih6a2V5LmRvbWFpblNpemUgKyBpICogMik7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gRnIubXVsKEZyLnN1Yih6LCBGci5vbmUpLCBsYWdyYW5nZTEpO1xuICAgICAgICAgICAgICAgIGxldCB0MXogPSBGci5tdWwoenAsIGxhZ3JhbmdlMSk7XG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLlQxLnNldCh0MSwgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMXouc2V0KHQxeiwgaSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICBvbWVnYSA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyICsgMV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDEoWCkgZnJvbSBidWZmZXJzLlQxXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDEgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMSBieSBaX0goWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxLmRpdkJ5WmVyb2ZpZXIoemtleS5kb21haW5TaXplLCBGci5vbmUpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDF6KFgpIGZyb20gYnVmZmVycy5UMXpcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMXogaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxeiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVDF6LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBwb2x5bm9taWFsIFQxeiB0byBUMSB0byBnZXQgdGhlIGZpbmFsIHBvbHlub21pYWwgVDFcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxLmFkZChwb2x5bm9taWFscy5UMXopO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5UMS5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUgKyAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVDEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMTtcbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQxejtcbiAgICAgICAgICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMXo7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlVDIoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDIgZXZhbHVhdGlvbnNcIik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuVDIgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuVDJ6ID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIG9tZWdhXG4gICAgICAgICAgICBsZXQgb21lZ2EgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZSAqIDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICBUMiBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb21lZ2EyID0gRnIuc3F1YXJlKG9tZWdhKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYVcgPSBGci5tdWwob21lZ2EsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhVzIgPSBGci5zcXVhcmUob21lZ2FXKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBldmFsdWF0aW9ucy5BLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYiA9IGV2YWx1YXRpb25zLkIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gZXZhbHVhdGlvbnMuQy5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgelcgPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oKHprZXkuZG9tYWluU2l6ZSAqIDQgKyA0ICsgaSkgJSAoemtleS5kb21haW5TaXplICogNCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgenAgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIG9tZWdhKSksIGNoYWxsZW5nZXMuYls5XSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeldwID0gRnIuYWRkKEZyLmFkZChGci5tdWwoY2hhbGxlbmdlcy5iWzddLCBvbWVnYVcyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2FXKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTEgPSBldmFsdWF0aW9ucy5TaWdtYTEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTIgPSBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTMgPSBldmFsdWF0aW9ucy5TaWdtYTMuZ2V0RXZhbHVhdGlvbihpKTtcblxuICAgICAgICAgICAgICAgIC8vIFQyKFgpIDo9IFsgKGEoWCkgKyBiZXRhwrdYICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdrMcK3WCArIGdhbW1hKShjKFgpICsgYmV0YcK3azLCt1ggKyBnYW1tYSl6KFgpXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIC0oYShYKSArIGJldGHCt3NpZ21hMShYKSArIGdhbW1hKShiKFgpICsgYmV0YcK3c2lnbWEyKFgpICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdzaWdtYTMoWCkgKyBnYW1tYSl6KFjPiSldIMK3IDEvWl9IKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMihYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAxIC0+IChhKFgpICsgYmV0YcK3WCArIGdhbW1hKShiKFgpICsgYmV0YcK3azHCt1ggKyBnYW1tYSkoYyhYKSArIGJldGHCt2sywrdYICsgZ2FtbWEpeihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGJldGFYID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgb21lZ2EpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxMSA9IEZyLmFkZChhLCBiZXRhWCk7XG4gICAgICAgICAgICAgICAgZTExID0gRnIuYWRkKGUxMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTEyID0gRnIuYWRkKGIsIEZyLm11bChiZXRhWCwgemtleS5rMSkpO1xuICAgICAgICAgICAgICAgIGUxMiA9IEZyLmFkZChlMTIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxMyA9IEZyLmFkZChjLCBGci5tdWwoYmV0YVgsIHprZXkuazIpKTtcbiAgICAgICAgICAgICAgICBlMTMgPSBGci5hZGQoZTEzLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMSA9IEZyLm11bChGci5tdWwoRnIubXVsKGUxMSwgZTEyKSwgZTEzKSwgeik7XG4gICAgICAgICAgICAgICAgbGV0IGUxeiA9IEZyLm11bChGci5tdWwoRnIubXVsKGUxMSwgZTEyKSwgZTEzKSwgenApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IFtlMSwgZTF6XSA9IE11bFoubXVsNChlMTEsIGUxMiwgZTEzLCB6LCBhcCwgYnAsIGNwLCB6cCwgaSAlIDQsIEZyKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMiAtPiAoYShYKSArIGJldGHCt3NpZ21hMShYKSArIGdhbW1hKShiKFgpICsgYmV0YcK3c2lnbWEyKFgpICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdzaWdtYTMoWCkgKyBnYW1tYSl6KFjPiSlcbiAgICAgICAgICAgICAgICBsZXQgZTIxID0gRnIuYWRkKGEsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHNpZ21hMSkpO1xuICAgICAgICAgICAgICAgIGUyMSA9IEZyLmFkZChlMjEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUyMiA9IEZyLmFkZChiLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzaWdtYTIpKTtcbiAgICAgICAgICAgICAgICBlMjIgPSBGci5hZGQoZTIyLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMjMgPSBGci5hZGQoYywgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgc2lnbWEzKSk7XG4gICAgICAgICAgICAgICAgZTIzID0gRnIuYWRkKGUyMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTIgPSBGci5tdWwoRnIubXVsKEZyLm11bChlMjEsIGUyMiksIGUyMyksIHpXKTtcbiAgICAgICAgICAgICAgICBsZXQgZTJ6ID0gRnIubXVsKEZyLm11bChGci5tdWwoZTIxLCBlMjIpLCBlMjMpLCB6V3ApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IFtlMiwgZTJ6XSA9IE11bFoubXVsNChlMjEsIGUyMiwgZTIzLCB6VywgYXAsIGJwLCBjcCwgeldwLCBpICUgNCwgRnIpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHQyID0gRnIuc3ViKGUxLCBlMik7XG4gICAgICAgICAgICAgICAgbGV0IHQyeiA9IEZyLnN1YihlMXosIGUyeik7XG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLlQyLnNldCh0MiwgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMnouc2V0KHQyeiwgaSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICBvbWVnYSA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyICsgMl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDIoWCkgZnJvbSBidWZmZXJzLlQyXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDIgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQyID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMiwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMiBieSBaX0goWClcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiAvIFpIXCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMnooWCkgZnJvbSBidWZmZXJzLlQyelxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyeiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDJ6ID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMnosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIHBvbHlub21pYWwgVDJ6IHRvIFQyIHRvIGdldCB0aGUgZmluYWwgcG9seW5vbWlhbCBUMlxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIuYWRkKHBvbHlub21pYWxzLlQyeik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQyLmRlZ3JlZSgpID49IDMgKiB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUMiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQyO1xuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDJ6O1xuICAgICAgICAgICAgZGVsZXRlIHBvbHlub21pYWxzLlQyejtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVDMigpIHtcbiAgICAgICAgICAgIGxldCBDMiA9IG5ldyBDUG9seW5vbWlhbCgzLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMCwgcG9seW5vbWlhbHMuWik7XG4gICAgICAgICAgICBDMi5hZGRQb2x5bm9taWFsKDEsIHBvbHlub21pYWxzLlQxKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMiwgcG9seW5vbWlhbHMuVDIpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5DMiA9IEMyLmdldFBvbHlub21pYWwoKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQzIuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgeGlcIik7XG4gICAgICAgIC8vIFNURVAgMy4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB4aSDiiIggU1xuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJDMlwiKSk7XG5cbiAgICAgICAgLy8gT2J0YWluIGEgeGlfc2VlZGVyIGZyb20gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgLy8gVG8gZm9yY2UgaDFeNCA9IHhpLCBoMl4zID0geGkgYW5kIGhfM14yID0geGnPiVxuICAgICAgICAvLyB3ZSBjb21wdXRlIHhpID0geGlfc2VlZGVyXjEyLCBoMSA9IHhpX3NlZWRlcl4zLCBoMiA9IHhpX3NlZWRlcl40IGFuZCBoMyA9IHhpX3NlZWRlcl42XG4gICAgICAgIGNoYWxsZW5nZXMueGlTZWVkID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgY29uc3QgeGlTZWVkMiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpU2VlZCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBvbWVnYTgsIG9tZWdhNCBhbmQgb21lZ2EzXG4gICAgICAgIHJvb3RzLnc4ID0gW107XG4gICAgICAgIHJvb3RzLnc4WzBdID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDg7IGkrKykge1xuICAgICAgICAgICAgcm9vdHMudzhbaV0gPSBGci5tdWwocm9vdHMudzhbaSAtIDFdLCB6a2V5Lnc4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RzLnc0ID0gW107XG4gICAgICAgIHJvb3RzLnc0WzBdID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgcm9vdHMudzRbaV0gPSBGci5tdWwocm9vdHMudzRbaSAtIDFdLCB6a2V5Lnc0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RzLnczID0gW107XG4gICAgICAgIHJvb3RzLnczWzBdID0gRnIub25lO1xuICAgICAgICByb290cy53M1sxXSA9IHprZXkudzM7XG4gICAgICAgIHJvb3RzLnczWzJdID0gRnIuc3F1YXJlKHprZXkudzMpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgaDAgPSB4aVNlZWRlcl4zXG4gICAgICAgIHJvb3RzLlMwID0ge307XG4gICAgICAgIHJvb3RzLlMwLmgwdzggPSBbXTtcbiAgICAgICAgcm9vdHMuUzAuaDB3OFswXSA9IEZyLm11bCh4aVNlZWQyLCBjaGFsbGVuZ2VzLnhpU2VlZCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICByb290cy5TMC5oMHc4W2ldID0gRnIubXVsKHJvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLnc4W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbXB1dGUgaDEgPSB4aV9zZWVkZXJeNlxuICAgICAgICByb290cy5TMSA9IHt9O1xuICAgICAgICByb290cy5TMS5oMXc0ID0gW107XG4gICAgICAgIHJvb3RzLlMxLmgxdzRbMF0gPSBGci5zcXVhcmUocm9vdHMuUzAuaDB3OFswXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICByb290cy5TMS5oMXc0W2ldID0gRnIubXVsKHJvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLnc0W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbXB1dGUgaDIgPSB4aV9zZWVkZXJeOFxuICAgICAgICByb290cy5TMiA9IHt9O1xuICAgICAgICByb290cy5TMi5oMnczID0gW107XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMF0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgeGlTZWVkMik7XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMudzNbMV0pO1xuICAgICAgICByb290cy5TMi5oMnczWzJdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLnczWzJdKTtcblxuICAgICAgICByb290cy5TMi5oM3czID0gW107XG4gICAgICAgIC8vIE11bHRpcGx5IGgzIGJ5IHRoaXJkLXJvb3Qtb21lZ2EgdG8gb2J0YWluIGhfM14zID0geGnPiVxuICAgICAgICAvLyBTbywgaDMgPSB4aV9zZWVkZXJeOCDPiV57MS8zfVxuICAgICAgICByb290cy5TMi5oM3czWzBdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHprZXkud3IpO1xuICAgICAgICByb290cy5TMi5oM3czWzFdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLnczWzFdKTtcbiAgICAgICAgcm9vdHMuUzIuaDN3M1syXSA9IEZyLm11bChyb290cy5TMi5oM3czWzBdLCByb290cy53M1syXSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB4aSA9IHhpX3NlZWRlcl4yNFxuICAgICAgICBjaGFsbGVuZ2VzLnhpID0gRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oMnczWzBdKSwgcm9vdHMuUzIuaDJ3M1swXSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy54aTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnhpKSk7XG5cbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBwb2x5bm9taWFsc1xuICAgICAgICBwb2x5bm9taWFscy5RTCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RQyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUwuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUxfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUVIuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUVJfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU0uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU1fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU8uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU9fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUNfU0VDVElPTl1bMF0ucCk7XG5cbiAgICAgICAgLy8gU1RFUCAzLjIgLSBDb21wdXRlIG9wZW5pbmcgZXZhbHVhdGlvbnMgYW5kIGFkZCB0aGVtIHRvIHRoZSBwcm9vZiAodGhpcmQgb3V0cHV0IG9mIHRoZSBwcm92ZXIpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBldmFsdWF0aW9uc1wiKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFsXCIsIHBvbHlub21pYWxzLlFMLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFyXCIsIHBvbHlub21pYWxzLlFSLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFtXCIsIHBvbHlub21pYWxzLlFNLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFvXCIsIHBvbHlub21pYWxzLlFPLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFjXCIsIHBvbHlub21pYWxzLlFDLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInMxXCIsIHBvbHlub21pYWxzLlNpZ21hMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJzMlwiLCBwb2x5bm9taWFscy5TaWdtYTIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiczNcIiwgcG9seW5vbWlhbHMuU2lnbWEzLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImFcIiwgcG9seW5vbWlhbHMuQS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJiXCIsIHBvbHlub21pYWxzLkIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiY1wiLCBwb2x5bm9taWFscy5DLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInpcIiwgcG9seW5vbWlhbHMuWi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy54aXcgPSBGci5tdWwoY2hhbGxlbmdlcy54aSwgRnIud1t6a2V5LnBvd2VyXSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJ6d1wiLCBwb2x5bm9taWFscy5aLmV2YWx1YXRlKGNoYWxsZW5nZXMueGl3KSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJ0MXdcIiwgcG9seW5vbWlhbHMuVDEuZXZhbHVhdGUoY2hhbGxlbmdlcy54aXcpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInQyd1wiLCBwb2x5bm9taWFscy5UMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNCgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgYWxwaGFcIik7XG4gICAgICAgIC8vIFNURVAgNC4xIC0gQ29tcHV0ZSBjaGFsbGVuZ2UgYWxwaGEg4oiIIEZcbiAgICAgICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy54aVNlZWQpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicWxcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicXJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicW1cIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicW9cIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicWNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczFcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiYVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJiXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwielwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ6d1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ0MXdcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwidDJ3XCIpKTtcbiAgICAgICAgY2hhbGxlbmdlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYWxwaGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgICAgIC8vIFNURVAgNC4yIC0gQ29tcHV0ZSBGKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIEMwIHBvbHlub21pYWxcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkMwID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogOCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLkMwLmNvZWYsIDAsIHNEb21haW4gKiA4LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9DMF9TRUNUSU9OXVswXS5wKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIwIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMCgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMigpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlRigpO1xuXG4gICAgICAgIC8vIFRoZSBmb3VydGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtXMV1fMSksIHdoZXJlIFcxOj0oZi9aX3QpKHgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVzEgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRXMSA9IGF3YWl0IHBvbHlub21pYWxzLkYubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlcxXCIpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVzFcIiwgY29tbWl0VzEpO1xuXG4gICAgICAgIHJldHVybiAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVSMCgpIHtcbiAgICAgICAgICAgIC8vIENPTVBVVEUgUjBcbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiBSMChYKSBmcm9tIDggZXZhbHVhdGlvbnMgdXNpbmcgbGFncmFuZ2UgaW50ZXJwb2xhdGlvbi4gUjAoWCkg4oiIIEZfezw4fVtYXVxuICAgICAgICAgICAgLy8gV2UgZGVjaWRlIHRvIHVzZSBMYWdyYW5nZSBpbnRlcnBvbGF0aW9ucyBiZWNhdXNlIHRoZSBSMCBkZWdyZWUgaXMgdmVyeSBzbWFsbCAoZGVnKFIwKT09PTcpLFxuICAgICAgICAgICAgLy8gYW5kIHdlIHdlcmUgbm90IGFibGUgdG8gY29tcHV0ZSBpdCB1c2luZyBjdXJyZW50IGlmZnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB0aGUgb21lZ2EgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgcG9seW5vbWlhbHMuUjAgPSBQb2x5bm9taWFsLmxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLlMwLmgwdzhbMV0sIHJvb3RzLlMwLmgwdzhbMl0sIHJvb3RzLlMwLmgwdzhbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbNF0sIHJvb3RzLlMwLmgwdzhbNV0sIHJvb3RzLlMwLmgwdzhbNl0sIHJvb3RzLlMwLmgwdzhbN11dLFxuICAgICAgICAgICAgICAgIFtwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzBdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFsxXSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbMl0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzNdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs0XSksIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbNV0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzZdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs3XSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjAoWCkgPCA4XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjAuZGVncmVlKCkgPiA3KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjAgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIxKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMVxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIFIxKFgpIGZyb20gNCBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiBSMShYKSDiiIggRl97PDR9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIxIGRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjEpPT09MyksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMSA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzEuaDF3NFswXSwgcm9vdHMuUzEuaDF3NFsxXSwgcm9vdHMuUzEuaDF3NFsyXSwgcm9vdHMuUzEuaDF3NFszXV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbMF0pLCBwb2x5bm9taWFscy5DMS5ldmFsdWF0ZShyb290cy5TMS5oMXc0WzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFsyXSksIHBvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbM10pXSwgY3VydmUpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgZGVncmVlIG9mIHIxKFgpIDwgNFxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlIxLmRlZ3JlZSgpID4gMykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlIxIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVSMigpIHtcbiAgICAgICAgICAgIC8vIENPTVBVVEUgUjJcbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiByMihYKSBmcm9tIDYgZXZhbHVhdGlvbnMgdXNpbmcgbGFncmFuZ2UgaW50ZXJwb2xhdGlvbi4gcjIoWCkg4oiIIEZfezw2fVtYXVxuICAgICAgICAgICAgLy8gV2UgZGVjaWRlIHRvIHVzZSBMYWdyYW5nZSBpbnRlcnBvbGF0aW9ucyBiZWNhdXNlIHRoZSBSMi5kZWdyZWUgaXMgdmVyeSBzbWFsbCAoZGVnKFIyKT09PTUpLFxuICAgICAgICAgICAgLy8gYW5kIHdlIHdlcmUgbm90IGFibGUgdG8gY29tcHV0ZSBpdCB1c2luZyBjdXJyZW50IGlmZnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB0aGUgb21lZ2EgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgcG9seW5vbWlhbHMuUjIgPSBQb2x5bm9taWFsLmxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLFxuICAgICAgICAgICAgICAgIFtwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oMnczWzBdKSwgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDJ3M1sxXSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgydzNbMl0pLCBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oM3czWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDN3M1sxXSksIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgzdzNbMl0pXSwgY3VydmUpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgZGVncmVlIG9mIHIyKFgpIDwgNlxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlIyLmRlZ3JlZSgpID4gNSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlIyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEYgcG9seW5vbWlhbFwiKTtcblxuICAgICAgICAgICAgLy8gQ09NUFVURSBGKFgpXG4gICAgICAgICAgICBwb2x5bm9taWFscy5GID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLnN1Yihwb2x5bm9taWFscy5SMCk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmRpdkJ5WmVyb2ZpZXIoOCwgY2hhbGxlbmdlcy54aSk7XG5cbiAgICAgICAgICAgIGxldCBmMiA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZjIuc3ViKHBvbHlub21pYWxzLlIxKTtcbiAgICAgICAgICAgIGYyLm11bFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgICAgIGYyLmRpdkJ5WmVyb2ZpZXIoNCwgY2hhbGxlbmdlcy54aSk7XG5cbiAgICAgICAgICAgIGxldCBmMyA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZjMuc3ViKHBvbHlub21pYWxzLlIyKTtcbiAgICAgICAgICAgIGYzLm11bFNjYWxhcihGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuICAgICAgICAgICAgZjMuZGl2QnlaZXJvZmllcigzLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICAgICAgICAgIGYzLmRpdkJ5WmVyb2ZpZXIoMywgY2hhbGxlbmdlcy54aXcpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmFkZChmMik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmFkZChmMyk7XG5cbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5GLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUgLSA2KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDUoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHlcIik7XG5cbiAgICAgICAgLy8gU1RFUCA1LjEgLSBDb21wdXRlIHJhbmRvbSBldmFsdWF0aW9uIHBvaW50IHkg4oiIIEZcbiAgICAgICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVzFcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMueSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMueTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnkpKTtcblxuICAgICAgICAvLyBTVEVQIDUuMiAtIENvbXB1dGUgTChYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEwgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUwoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFpUUzIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVpUUzIoKTtcblxuICAgICAgICBsZXQgWlRTMlkgPSBwb2x5bm9taWFscy5aVFMyLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgIFpUUzJZID0gRnIuaW52KFpUUzJZKTtcbiAgICAgICAgcG9seW5vbWlhbHMuTC5tdWxTY2FsYXIoWlRTMlkpO1xuXG4gICAgICAgIGNvbnN0IHBvbERpdmlkZW5kID0gUG9seW5vbWlhbC5mcm9tQ29lZmZpY2llbnRzQXJyYXkoW0ZyLm5lZyhjaGFsbGVuZ2VzLnkpLCBGci5vbmVdLCBjdXJ2ZSk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVycgPSBMIC8gWlRTMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb25zdCBwb2xSZW1haW5kZXIgPSBwb2x5bm9taWFscy5MLmRpdkJ5KHBvbERpdmlkZW5kKTtcblxuICAgICAgICAvL0NoZWNrIHBvbFJlbWluZGVyIGRlZ3JlZSBpcyBlcXVhbCB0byB6ZXJvXG4gICAgICAgIGlmIChwb2xSZW1haW5kZXIuZGVncmVlKCkgPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlZ3JlZSBvZiBMKFgpLyhaVFMyKHkpKFgteSkpIHJlbWFpbmRlciBpcyAke3BvbFJlbWFpbmRlci5kZWdyZWUoKX0gYW5kIHNob3VsZCBiZSAwYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9seW5vbWlhbHMuTC5kZWdyZWUoKSA+PSA5ICogemtleS5kb21haW5TaXplIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGVncmVlIG9mIEwoWCkvKFpUUzIoeSkoWC15KSkgaXMgbm90IGNvcnJlY3RcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZmlmdGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtXMl1fMSksIHdoZXJlIFcyOj0oZi9aX3QpKHgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVycgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRXMiA9IGF3YWl0IHBvbHlub21pYWxzLkwubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlcyXCIpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVzJcIiwgY29tbWl0VzIpO1xuXG4gICAgICAgIHJldHVybiAwO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVMKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEwgcG9seW5vbWlhbFwiKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFIwWSA9IHBvbHlub21pYWxzLlIwLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgICAgICBjb25zdCBldmFsUjFZID0gcG9seW5vbWlhbHMuUjEuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIGNvbnN0IGV2YWxSMlkgPSBwb2x5bm9taWFscy5SMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnkpO1xuXG4gICAgICAgICAgICBsZXQgbXVsTDAgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMC5oMHc4WzBdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsTDAgPSBGci5tdWwobXVsTDAsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbaV0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG11bEwxID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzEuaDF3NFswXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwxID0gRnIubXVsKG11bEwxLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0W2ldKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtdWxMMiA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbMF0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMiA9IEZyLm11bChtdWxMMiwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1tpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMiA9IEZyLm11bChtdWxMMiwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDN3M1tpXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJlTDAgPSBGci5tdWwobXVsTDEsIG11bEwyKTtcbiAgICAgICAgICAgIGxldCBwcmVMMSA9IEZyLm11bChjaGFsbGVuZ2VzLmFscGhhLCBGci5tdWwobXVsTDAsIG11bEwyKSk7XG4gICAgICAgICAgICBsZXQgcHJlTDIgPSBGci5tdWwoRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpLCBGci5tdWwobXVsTDAsIG11bEwxKSk7XG5cbiAgICAgICAgICAgIHRvSW52ZXJzZVtcImRlbkgxXCJdID0gbXVsTDE7XG4gICAgICAgICAgICB0b0ludmVyc2VbXCJkZW5IMlwiXSA9IG11bEwyO1xuXG4gICAgICAgICAgICAvLyBDT01QVVRFIEwoWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMwLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwuc3ViU2NhbGFyKGV2YWxSMFkpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5tdWxTY2FsYXIocHJlTDApO1xuXG4gICAgICAgICAgICBsZXQgbDIgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMxLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGwyLnN1YlNjYWxhcihldmFsUjFZKTtcbiAgICAgICAgICAgIGwyLm11bFNjYWxhcihwcmVMMSk7XG5cbiAgICAgICAgICAgIGxldCBsMyA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgbDMuc3ViU2NhbGFyKGV2YWxSMlkpO1xuICAgICAgICAgICAgbDMubXVsU2NhbGFyKHByZUwyKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5hZGQobDIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5hZGQobDMpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFpUIHBvbHlub21pYWxcIik7XG4gICAgICAgICAgICBhd2FpdCBjb21wdXRlWlQoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFpUWSA9IHBvbHlub21pYWxzLlpULmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLm11bFNjYWxhcihldmFsWlRZKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwuc3ViKHBvbHlub21pYWxzLkYpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5MLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuTDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVaVCgpIHtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlpUID0gUG9seW5vbWlhbC56ZXJvZmllclBvbHlub21pYWwoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICByb290cy5TMC5oMHc4WzBdLCByb290cy5TMC5oMHc4WzFdLCByb290cy5TMC5oMHc4WzJdLCByb290cy5TMC5oMHc4WzNdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMC5oMHc4WzRdLCByb290cy5TMC5oMHc4WzVdLCByb290cy5TMC5oMHc4WzZdLCByb290cy5TMC5oMHc4WzddLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMS5oMXc0WzBdLCByb290cy5TMS5oMXc0WzFdLCByb290cy5TMS5oMXc0WzJdLCByb290cy5TMS5oMXc0WzNdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMi5oMnczWzBdLCByb290cy5TMi5oMnczWzFdLCByb290cy5TMi5oMnczWzJdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMi5oM3czWzBdLCByb290cy5TMi5oM3czWzFdLCByb290cy5TMi5oM3czWzJdXSwgY3VydmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVpUUzIoKSB7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5aVFMyID0gUG9seW5vbWlhbC56ZXJvZmllclBvbHlub21pYWwoXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLlMxLmgxdzRbMV0sIHJvb3RzLlMxLmgxdzRbMl0sIHJvb3RzLlMxLmgxdzRbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLCBjdXJ2ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNb250Z29tZXJ5QmF0Y2hlZEludmVyc2UoKSB7XG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgOCBhbmQgOSBvZiB0aGUgdmVyaWZpZXIgdG8gbXVsdGlwbHkgYnkgMS9aX0goeGkpXG4gICAgICAgIGxldCB4aU4gPSBjaGFsbGVuZ2VzLnhpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkucG93ZXI7IGkrKykge1xuICAgICAgICAgICAgeGlOID0gRnIuc3F1YXJlKHhpTik7XG4gICAgICAgIH1cbiAgICAgICAgdG9JbnZlcnNlW1wiemhcIl0gPSBGci5zdWIoeGlOLCBGci5vbmUpO1xuXG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgMTAgYW5kIDExIG9mIHRoZSB2ZXJpZmllclxuICAgICAgICAvLyAgICAgdG9JbnZlcnNlLmRlbkgxICYgdG9JbnZlcnNlLmRlbkgyICAtPiBDb21wdXRlZCBpbiByb3VuZDUsIGNvbXB1dGVMKClcblxuICAgICAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiB0aGUgdmVyaWZpZXIgd2hlbiBjb21wdXRpbmcgTF9pXntTMH0oWCksIExfaV57UzF9KFgpIGFuZCBMX2lee1MyfShYKVxuICAgICAgICBjb21wdXRlTGlTMCh0b0ludmVyc2UsIHJvb3RzLlMwLmgwdzgsIGNoYWxsZW5nZXMueSwgY3VydmUpO1xuXG4gICAgICAgIGNvbXB1dGVMaVMxKHRvSW52ZXJzZSwgcm9vdHMuUzEuaDF3NCwgY2hhbGxlbmdlcy55LCBjdXJ2ZSk7XG5cbiAgICAgICAgY29tcHV0ZUxpUzIodG9JbnZlcnNlLCByb290cy5TMi5oMnczLCByb290cy5TMi5oM3czLCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGNoYWxsZW5nZXMueGl3LCBjdXJ2ZSk7XG5cbiAgICAgICAgLy8gICDCtyBMX2kgaT0xIHRvIG51bSBwdWJsaWMgaW5wdXRzLCBuZWVkZWQgaW4gc3RlcCA2IGFuZCA3IG9mIHRoZSB2ZXJpZmllciB0byBjb21wdXRlIExfMSh4aSkgYW5kIFBJKHhpKVxuICAgICAgICBjb25zdCBzaXplID0gTWF0aC5tYXgoMSwgemtleS5uUHVibGljKTtcblxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHRvSW52ZXJzZVtcIkxpX1wiICsgKGkgKyAxKV0gPSBGci5tdWwoRnIuZSh6a2V5LmRvbWFpblNpemUpLCBGci5zdWIoY2hhbGxlbmdlcy54aSwgdykpO1xuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtdWxBY2N1bXVsYXRvciA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIE9iamVjdC52YWx1ZXModG9JbnZlcnNlKSkge1xuICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViRWxlbWVudCBvZiBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG11bEFjY3VtdWxhdG9yID0gRnIubXVsKG11bEFjY3VtdWxhdG9yLCBzdWJFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG11bEFjY3VtdWxhdG9yID0gRnIubXVsKG11bEFjY3VtdWxhdG9yLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRnIuaW52KG11bEFjY3VtdWxhdG9yKTtcblxuICAgICAgICBcbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxpUzAodG9JbnZlcnNlLCByb290cywgeCwgY3VydmUpIHtcbiAgICAgICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZGVuMSA9IEZyLm11bChGci5lKGxlbiksIEZyLmV4cChyb290c1swXSwgbGVuIC0gMikpO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMwX1wiICsgKGkgKyAxKV1dID0gRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIExpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxpUzEodG9JbnZlcnNlLCByb290cywgeCwgY3VydmUpIHtcbiAgICAgICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZGVuMSA9IEZyLm11bChGci5lKGxlbiksIEZyLmV4cChyb290c1swXSwgbGVuIC0gMikpO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMxX1wiICsgKGkgKyAxKV1dID0gRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMyk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMih0b0ludmVyc2UsIFMyLCBTMnAsIHZhbHVlLCB4aSwgeGl3LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBMaSA9IFtdO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IF8zaDIgPSBGci5tdWwoRnIuZSgzKSwgUzJbMF0pO1xuICAgICAgICAgICAgY29uc3QgeGlzdWJ4aXcgPSBGci5zdWIoeGksIHhpdyk7XG4gICAgICAgICAgICBsZXQgZGVuMSA9IEZyLm11bChfM2gyLCB4aXN1Ynhpdyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjIgPSBTMlsyICogaSAlIDNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIodmFsdWUsIFMyW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzJfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoZGVuMSxGci5tdWwoZGVuMiwgZGVuMykpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IF8zaDMgPSBGci5tdWwoRnIuZSgzKSwgUzJwWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHhpd3N1YnhpID0gRnIuc3ViKHhpdywgeGkpO1xuICAgICAgICAgICAgZGVuMSA9IEZyLm11bChfM2gzLCB4aXdzdWJ4aSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjIgPSBTMnBbMiAqIGkgJSAzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCBTMnBbaV0pO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICB0b0ludmVyc2VbW1wiTGlTMl9cIiArIChpICsgMSArIDMpXV0gPSBGci5tdWwoZGVuMSxGci5tdWwoZGVuMiwgZGVuMykpOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IGZmbG9ua1Byb3ZlIGZyb20gXCIuL2ZmbG9ua19wcm92ZS5qc1wiO1xuaW1wb3J0IHd0bnNfY2FsY3VsYXRlIGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtGdWxsUHJvdmUoX2lucHV0LCB3YXNtRmlsZW5hbWUsIHprZXlGaWxlbmFtZSwgbG9nZ2VyLCB3dG5zQ2FsY09wdGlvbnMsIHByb3Zlck9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3Qgd3Rucz0ge3R5cGU6IFwibWVtXCJ9O1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgd2l0bmVzc1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZW5hbWUsIHd0bnMsIHd0bnNDYWxjT3B0aW9ucyk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBwcm9vZlxuICAgIHJldHVybiBhd2FpdCBmZmxvbmtQcm92ZSh6a2V5RmlsZW5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgY3VydmVzIGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgQmlnQnVmZmVyLCB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzIH0gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rVmVyaWZ5KF92a192ZXJpZmllciwgX3B1YmxpY1NpZ25hbHMsIF9wcm9vZiwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgVkVSSUZJRVIgU1RBUlRFRFwiKTtcblxuICAgIF92a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIF9wcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZShfdmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgdmsgPSBmcm9tT2JqZWN0VmsoY3VydmUsIF92a192ZXJpZmllcik7XG5cbiAgICAvLyBUT0RPID8/PyBDb21wdXRlIHdyXjMgYW5kIGNoZWNrIGlmIGl0IG1hdGNoZXMgd2l0aCB3XG5cbiAgICBjb25zdCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwcm9vZi5mcm9tT2JqZWN0UHJvb2YoX3Byb29mKTtcblxuICAgIGNvbnN0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgaWYgKHB1YmxpY1NpZ25hbHMubGVuZ3RoICE9PSB2ay5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIk51bWJlciBvZiBwdWJsaWMgc2lnbmFscyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZrXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgRkZMT05LIFZFUklGWSBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3ZrLnBvd2VyfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBEb21haW4gc2l6ZTogICAkezIgKiogdmsucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7dmsublB1YmxpY31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vIFNURVAgMSAtIFZhbGlkYXRlIHRoYXQgYWxsIHBvbHlub21pYWwgY29tbWl0bWVudHMg4oiIIEdfMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyBjb21taXRtZW50cyBiZWxvbmcgdG8gRzFcIik7XG4gICAgaWYgKCFjb21taXRtZW50c0JlbG9uZ1RvRzEoY3VydmUsIHByb29mLCB2aykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHJvb2YgY29tbWl0bWVudHMgYXJlIG5vdCB2YWxpZFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNURVAgMiAtIFZhbGlkYXRlIHRoYXQgYWxsIGV2YWx1YXRpb25zIOKIiCBGXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIGV2YWx1YXRpb25zIGJlbG9uZyB0byBGXCIpO1xuICAgIGlmICghZXZhbHVhdGlvbnNBcmVWYWxpZChjdXJ2ZSwgcHJvb2YpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlByb29mIGV2YWx1YXRpb25zIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAzIC0gVmFsaWRhdGUgdGhhdCB3X2kg4oiIIEYgZm9yIGkg4oiIIFtsXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyBwdWJsaWMgaW5wdXRzIGJlbG9uZyB0byBGXCIpO1xuICAgIGlmICghcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY1NpZ25hbHMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlB1YmxpYyBpbnB1dHMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTVEVQIDQgLSBDb21wdXRlIHRoZSBjaGFsbGVuZ2VzOiBiZXRhLCBnYW1tYSwgeGksIGFscGhhIGFuZCB5IOKIiCBGXG4gICAgLy8gYXMgaW4gcHJvdmVyIGRlc2NyaXB0aW9uLCBmcm9tIHRoZSBjb21tb24gcHJlcHJvY2Vzc2VkIGlucHV0cywgcHVibGljIGlucHV0cyBhbmQgZWxlbWVudHMgb2Ygz4BfU05BUktcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZXNcIik7XG4gICAgY29uc3QgeyBjaGFsbGVuZ2VzLCByb290cyB9ID0gY29tcHV0ZUNoYWxsZW5nZXMoY3VydmUsIHByb29mLCB2aywgcHVibGljU2lnbmFscywgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgNSAtIENvbXB1dGUgdGhlIHplcm8gcG9seW5vbWlhbCBldmFsdWF0aW9uIFpfSCh4aSkgPSB4aV5uIC0gMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWmVybyBwb2x5bm9taWFsIGV2YWx1YXRpb24gWl9IKHhpKVwiKTtcbiAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKGNoYWxsZW5nZXMueGlOLCBGci5vbmUpO1xuICAgIGNoYWxsZW5nZXMuaW52emggPSBGci5pbnYoY2hhbGxlbmdlcy56aCk7XG5cbiAgICAvLyBTVEVQIDYgLSBDb21wdXRlIHRoZSBsYWdyYW5nZSBwb2x5bm9taWFsIGV2YWx1YXRpb24gTF8xKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgTGFncmFuZ2UgZXZhbHVhdGlvbnNcIik7XG4gICAgY29uc3QgbGFncmFuZ2VFdmFscyA9IGF3YWl0IGNvbXB1dGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2ayk7XG5cbiAgICAvLyBTVEVQIDcgLSBDb21wdXRlIHB1YmxpYyBpbnB1dCBldmFsdWF0aW9uIFBJKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcG9seW5vbWlhbCBpZGVudGl0aWVzIFBJKFgpXCIpO1xuICAgIGNvbnN0IHBpID0gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIGxhZ3JhbmdlRXZhbHMpO1xuXG4gICAgLy8gU1RFUCA4IC0gQ29tcHV0ZSBwb2x5bm9taWFsIHIwIOKIiCBGX3s8NH1bWF1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIHIwKHkpXCIpO1xuICAgIGNvbnN0IHIwID0gY29tcHV0ZVIwKHByb29mLCBjaGFsbGVuZ2VzLCByb290cywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAvLyBTVEVQIDkgLSBDb21wdXRlIHBvbHlub21pYWwgcjEg4oiIIEZfezw0fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjEoeSlcIik7XG4gICAgY29uc3QgcjEgPSBjb21wdXRlUjEocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBwaSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAvLyBTVEVQIDkgLSBDb21wdXRlIHBvbHlub21pYWwgcjIg4oiIIEZfezw2fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjIoeSlcIik7XG4gICAgY29uc3QgcjIgPSBjb21wdXRlUjIocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBsYWdyYW5nZUV2YWxzWzFdLCB2aywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEZcIik7XG4gICAgY29uc3QgRiA9IGNvbXB1dGVGKGN1cnZlLCBwcm9vZiwgdmssIGNoYWxsZW5nZXMsIHJvb3RzKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRVwiKTtcbiAgICBjb25zdCBFID0gY29tcHV0ZUUoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgcjAsIHIxLCByMik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEpcIik7XG4gICAgY29uc3QgSiA9IGNvbXB1dGVKKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gVmFsaWRhdGUgYWxsIGV2YWx1YXRpb25zIHdpdGggYSBwYWlyaW5nXCIpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGlzVmFsaWRQYWlyaW5nKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgdmssIEYsIEUsIEopO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIlBST09GIFZFUklGSUVEIFNVQ0NFU1NGVUxMWVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiSW52YWxpZCBQcm9vZlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFZFUklGSUVSIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIHJlcztcblxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0VmsoY3VydmUsIHZrKSB7XG4gICAgY29uc3QgcmVzID0gdms7XG4gICAgcmVzLmsxID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay5rMSk7XG4gICAgcmVzLmsyID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay5rMik7XG4gICAgcmVzLncgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLncpO1xuICAgIC8vIHJlcy53VyA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsud1cpO1xuICAgIHJlcy53MyA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzMpO1xuICAgIHJlcy53NCA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzQpO1xuICAgIHJlcy53OCA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzgpO1xuICAgIHJlcy53ciA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsud3IpO1xuICAgIHJlcy5YXzIgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHZrLlhfMik7XG4gICAgcmVzLkMwID0gY3VydmUuRzEuZnJvbU9iamVjdCh2ay5DMCk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29tbWl0bWVudHNCZWxvbmdUb0cxKGN1cnZlLCBwcm9vZiwgdmspIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIHJldHVybiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLkMxKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLkMyKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLlcxKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLlcyKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHZrLkMwKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tWYWx1ZUJlbG9uZ1RvRmllbGQoY3VydmUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIFNjYWxhci5sdCh2YWx1ZSwgY3VydmUucik7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIGV2YWx1YXRpb24pIHtcbiAgICByZXR1cm4gY2hlY2tWYWx1ZUJlbG9uZ1RvRmllbGQoY3VydmUsIFNjYWxhci5mcm9tUnByTEUoZXZhbHVhdGlvbikpO1xufVxuXG5mdW5jdGlvbiBldmFsdWF0aW9uc0FyZVZhbGlkKGN1cnZlLCBwcm9vZikge1xuICAgIHJldHVybiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xbClcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucXIpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFtKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xbylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucWMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnMxKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5zMilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuczMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmEpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmIpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnopXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnp3KVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy50MXcpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnQydyk7XG59XG5cbmZ1bmN0aW9uIHB1YmxpY0lucHV0c0FyZVZhbGlkKGN1cnZlLCBwdWJsaWNJbnB1dHMpIHtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgcHVibGljSW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmKCFjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgcHVibGljSW5wdXRzW2ldKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQ2hhbGxlbmdlcyhjdXJ2ZSwgcHJvb2YsIHZrLCBwdWJsaWNTaWduYWxzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgY2hhbGxlbmdlcyA9IHt9O1xuICAgIGNvbnN0IHJvb3RzID0ge307XG4gICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcblxuICAgIC8vIEFkZCBDMCB0byB0aGUgdHJhbnNjcmlwdFxuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5DMCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoRnIuZShwdWJsaWNTaWduYWxzW2ldKSk7XG4gICAgfVxuXG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLkMxKTtcbiAgICBjaGFsbGVuZ2VzLmJldGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcblxuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgY2hhbGxlbmdlcy5nYW1tYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5nYW1tYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLkMyKTtcbiAgICBjb25zdCB4aVNlZWQgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIGNvbnN0IHhpU2VlZDIgPSBGci5zcXVhcmUoeGlTZWVkKTtcblxuICAgIGxldCB3OCA9IFtdO1xuICAgIHc4WzFdID0gdmsudzg7XG4gICAgdzhbMl0gPSBGci5zcXVhcmUodmsudzgpO1xuICAgIHc4WzNdID0gRnIubXVsKHc4WzJdLCB2ay53OCk7XG4gICAgdzhbNF0gPSBGci5tdWwodzhbM10sIHZrLnc4KTtcbiAgICB3OFs1XSA9IEZyLm11bCh3OFs0XSwgdmsudzgpO1xuICAgIHc4WzZdID0gRnIubXVsKHc4WzVdLCB2ay53OCk7XG4gICAgdzhbN10gPSBGci5tdWwodzhbNl0sIHZrLnc4KTtcbiAgICBsZXQgdzQgPSBbXTtcbiAgICB3NFsxXSA9IHZrLnc0O1xuICAgIHc0WzJdID0gRnIuc3F1YXJlKHZrLnc0KTtcbiAgICB3NFszXSA9IEZyLm11bCh3NFsyXSwgdmsudzQpO1xuICAgIGxldCB3MyA9IFtdO1xuICAgIHczWzFdID0gdmsudzM7XG4gICAgdzNbMl0gPSBGci5zcXVhcmUodmsudzMpO1xuXG4gICAgLy8gY29uc3QgdzRfMiA9IEZyLnNxdWFyZSh2ay53NCk7XG4gICAgLy8gY29uc3QgdzRfMyA9IEZyLm11bCh3NF8yLCB2ay53NCk7XG4gICAgLy8gY29uc3QgdzNfMiA9IEZyLnNxdWFyZSh2ay53Myk7XG5cbiAgICAvLyBDb21wdXRlIGgwID0geGlTZWVkZXJeM1xuICAgIHJvb3RzLlMwID0ge307XG4gICAgcm9vdHMuUzAuaDB3OCA9IFtdO1xuICAgIHJvb3RzLlMwLmgwdzhbMF0gPSBGci5tdWwoeGlTZWVkMiwgeGlTZWVkKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDg7IGkrKykge1xuICAgICAgICByb290cy5TMC5oMHc4W2ldID0gRnIubXVsKHJvb3RzLlMwLmgwdzhbMF0sIHc4W2ldKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGgxID0geGlfc2VlZGVyXjZcbiAgICByb290cy5TMSA9IHt9O1xuICAgIHJvb3RzLlMxLmgxdzQgPSBbXTtcbiAgICByb290cy5TMS5oMXc0WzBdID0gRnIuc3F1YXJlKHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHJvb3RzLlMxLmgxdzRbaV0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgdzRbaV0pO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgaDIgPSB4aV9zZWVkZXJeOFxuICAgIHJvb3RzLlMyID0ge307XG4gICAgcm9vdHMuUzIuaDJ3MyA9IFtdO1xuICAgIHJvb3RzLlMyLmgydzNbMF0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgeGlTZWVkMik7XG4gICAgcm9vdHMuUzIuaDJ3M1sxXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCB3M1sxXSk7XG4gICAgcm9vdHMuUzIuaDJ3M1syXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCB3M1syXSk7XG5cbiAgICByb290cy5TMi5oM3czID0gW107XG4gICAgLy8gTXVsdGlwbHkgaDMgYnkgdGhpcmQtcm9vdC1vbWVnYSB0byBvYnRhaW4gaF8zXjMgPSB4ac+JXG4gICAgLy8gU28sIGgzID0geGlfc2VlZGVyXjggz4leezEvM31cbiAgICByb290cy5TMi5oM3czWzBdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHZrLndyKTtcbiAgICByb290cy5TMi5oM3czWzFdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHczWzFdKTtcbiAgICByb290cy5TMi5oM3czWzJdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHczWzJdKTtcblxuICAgIC8vIENvbXB1dGUgeGkgPSB4aV9zZWVkZXJeMTJcbiAgICBjaGFsbGVuZ2VzLnhpID0gRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oMnczWzBdKSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgY2hhbGxlbmdlcy54aXcgPSBGci5tdWwoY2hhbGxlbmdlcy54aSwgRnIud1t2ay5wb3dlcl0pO1xuXG4gICAgY2hhbGxlbmdlcy54aU4gPSBjaGFsbGVuZ2VzLnhpO1xuICAgIHZrLmRvbWFpblNpemUgPSAxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmsucG93ZXI7IGkrKykge1xuICAgICAgICBjaGFsbGVuZ2VzLnhpTiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpTik7XG4gICAgICAgIHZrLmRvbWFpblNpemUgKj0gMjtcbiAgICB9XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoeGlTZWVkKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xbCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucXIpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFtKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xbyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucWMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnMxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5zMik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuczMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmIpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnopO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnp3KTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy50MXcpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnQydyk7XG4gICAgY2hhbGxlbmdlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLlcxKTtcbiAgICBjaGFsbGVuZ2VzLnkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmJldGE6ICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy54aTogICAgXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYWxwaGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5hbHBoYSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnk6ICAgICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNoYWxsZW5nZXM6IGNoYWxsZW5nZXMsIHJvb3RzOiByb290cyB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VFdmFsdWF0aW9ucyhjdXJ2ZSwgY2hhbGxlbmdlcywgdmspIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3Qgc2l6ZSA9IE1hdGgubWF4KDEsIHZrLm5QdWJsaWMpO1xuICAgIGNvbnN0IG51bUFyciA9IG5ldyBCaWdCdWZmZXIoc2l6ZSAqIEZyLm44KTtcbiAgICBsZXQgZGVuQXJyID0gbmV3IEJpZ0J1ZmZlcihzaXplICogRnIubjgpO1xuXG4gICAgbGV0IHcgPSBGci5vbmU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG4gICAgICAgIG51bUFyci5zZXQoRnIubXVsKHcsIGNoYWxsZW5nZXMuemgpLCBpX3NGcik7XG4gICAgICAgIGRlbkFyci5zZXQoRnIubXVsKEZyLmUodmsuZG9tYWluU2l6ZSksIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSksIGlfc0ZyKTtcbiAgICAgICAgdyA9IEZyLm11bCh3LCB2ay53KTtcbiAgICB9XG5cbiAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgIGxldCBMID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG4gICAgICAgIExbaSArIDFdID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBGci5uOCksIGRlbkFyci5zbGljZShpX3NGciwgaV9zRnIgKyBGci5uOCkpO1xuICAgIH1cbiAgICByZXR1cm4gTDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIGxhZ3JhbmdlRXZhbHMpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IHBpID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwodywgbGFncmFuZ2VFdmFsc1tpICsgMV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHBpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjAocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpID0gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cy5TMC5oMHc4LCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGN1cnZlKTtcblxuICAgIC8vIHIwKHkpID0g4oiRXzFeOCBDXzAoaF8wIM+JXzhee2ktMX0pIExfaSh5KS4gVG8gdGhpcyBlbmQgd2UgbmVlZCB0byBjb21wdXRlXG5cbiAgICAvLyBDb21wdXRlIHRoZSA4IEMwIHZhbHVlc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyByMCh5KVwiKTtcblxuICAgIGxldCByZXMgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGxldCBjb2VmVmFsdWVzID0gW107XG4gICAgICAgIGNvZWZWYWx1ZXNbMV0gPSByb290cy5TMC5oMHc4W2ldO1xuICAgICAgICBmb3IgKGxldCBqID0gMjsgaiA8IDg7IGorKykge1xuICAgICAgICAgICAgY29lZlZhbHVlc1tqXSA9IEZyLm11bChjb2VmVmFsdWVzW2ogLSAxXSwgcm9vdHMuUzAuaDB3OFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYzAgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMucWwsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xciwgY29lZlZhbHVlc1sxXSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFvLCBjb2VmVmFsdWVzWzJdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW0sIGNvZWZWYWx1ZXNbM10pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xYywgY29lZlZhbHVlc1s0XSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnMxLCBjb2VmVmFsdWVzWzVdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuczIsIGNvZWZWYWx1ZXNbNl0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5zMywgY29lZlZhbHVlc1s3XSkpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMCwgTGlbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjEocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBwaSwgY3VydmUsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaSA9IGNvbXB1dGVMYWdyYW5nZUxpU2kocm9vdHMuUzEuaDF3NCwgY2hhbGxlbmdlcy55LCBjaGFsbGVuZ2VzLnhpLCBjdXJ2ZSk7XG5cbiAgICAvLyByMSh5KSA9IOKIkV8xXjQgQ18xKGhfMSDPiV80XntpLTF9KSBMX2koeSkuIFRvIHRoaXMgZW5kIHdlIG5lZWQgdG8gY29tcHV0ZVxuICAgIC8vIFoxID0ge0MxKGhfMX0sIEMxKGhfMSDPiV80KSwgQzEoaF8xIM+JXzReMiksIEMxKGhfMSDPiV80XjMpfVxuICAgIC8vIHdoZXJlIENfMShoXzEgz4lfNF57aS0xfSkgPSBldmFsLmEgKyBoXzEgz4lfNF5pIGV2YWwuYiArIChoXzEgz4lfNF5pKV4yIGV2YWwuYyArIChoXzEgz4lfNF5pKV4zIFQwKHhpKSxcbiAgICAvLyB3aGVyZSBUMCh4aSkgPSBbIHFMwrdhICsgcVLCt2IgKyBxTcK3YcK3YiArIHFPwrdjICsgcUMgKyBQSSh4aSkgXSAvIFpfSCh4aSlcblxuICAgIC8vIENvbXB1dGUgVDAoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwKHhpKVwiKTtcbiAgICBsZXQgdDAgPSBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucWwsIHByb29mLmV2YWx1YXRpb25zLmEpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucXIsIHByb29mLmV2YWx1YXRpb25zLmIpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFtLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuYSwgcHJvb2YuZXZhbHVhdGlvbnMuYikpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFvLCBwcm9vZi5ldmFsdWF0aW9ucy5jKSk7XG4gICAgdDAgPSBGci5hZGQodDAsIHByb29mLmV2YWx1YXRpb25zLnFjKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgcGkpO1xuICAgIHQwID0gRnIubXVsKHQwLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIDQgQzEgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMxKGhfMc+JXzReaSkgdmFsdWVzXCIpO1xuXG4gICAgbGV0IHJlcyA9IEZyLnplcm87XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgbGV0IGMxID0gcHJvb2YuZXZhbHVhdGlvbnMuYTtcbiAgICAgICAgYzEgPSBGci5hZGQoYzEsIEZyLm11bChyb290cy5TMS5oMXc0W2ldLCBwcm9vZi5ldmFsdWF0aW9ucy5iKSk7XG4gICAgICAgIGNvbnN0IGgxdzRTcXVhcmVkID0gRnIuc3F1YXJlKHJvb3RzLlMxLmgxdzRbaV0pO1xuICAgICAgICBjMSA9IEZyLmFkZChjMSwgRnIubXVsKGgxdzRTcXVhcmVkLCBwcm9vZi5ldmFsdWF0aW9ucy5jKSk7XG4gICAgICAgIGMxID0gRnIuYWRkKGMxLCBGci5tdWwoRnIubXVsKGgxdzRTcXVhcmVkLCByb290cy5TMS5oMXc0W2ldKSwgdDApKTtcblxuICAgICAgICByZXMgPSBGci5hZGQocmVzLCBGci5tdWwoYzEsIExpW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVIyKHByb29mLCBjaGFsbGVuZ2VzLCByb290cywgbGFncmFuZ2UxLCB2aywgY3VydmUsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaVMyID0gY29tcHV0ZUxhZ3JhbmdlTGlTMihbcm9vdHMuUzIuaDJ3Mywgcm9vdHMuUzIuaDN3M10sIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY2hhbGxlbmdlcy54aXcsIGN1cnZlKTtcblxuICAgIC8vIHIyKHkpID0g4oiRXzFeMyBDXzIoaF8yIM+JXzNee2ktMX0pIExfaSh5KSArIOKIkV8xXjMgQ18yKGhfMyDPiV8zXntpLTF9KSBMX3tpKzN9KHkpLiBUbyB0aGlzIGVuZCB3ZSBuZWVkIHRvIGNvbXB1dGVcbiAgICAvLyBaMiA9IHtbQzIoaF8yfSwgQzIoaF8yIM+JXzMpLCBDMihoXzIgz4lfM14yKV0sIFtDMihoXzN9LCBDMihoXzMgz4lfMyksIEMyKGhfMyDPiV8zXjIpXX1cbiAgICAvLyB3aGVyZSBDXzIoaF8yIM+JXzNee2ktMX0pID0gZXZhbC56ICsgaF8yIM+JXzJeaSBUMSh4aSkgKyAoaF8yIM+JXzNeaSleMiBUMih4aSksXG4gICAgLy8gd2hlcmUgQ18yKGhfMyDPiV8zXntpLTF9KSA9IGV2YWwueiArIGhfMyDPiV8yXmkgVDEoeGkpICsgKGhfMyDPiV8zXmkpXjIgVDIoeGkpLFxuICAgIC8vIHdoZXJlIFQxKHhpKSA9IFsgTF8xKHhpKSh6LTEpXSAvIFpfSCh4aSlcbiAgICAvLyBhbmQgVDIoeGkpID0gWyAgKGEgKyBiZXRhwrd4aSArIGdhbW1hKShiICsgYmV0YcK3eGnCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrd4acK3azIgKyBnYW1tYSl6XG4gICAgLy8gICAgICAgICAgICAgICAtIChhICsgYmV0YcK3c2lnbWExICsgZ2FtbWEpKGIgKyBiZXRhwrdzaWdtYTIgKyBnYW1tYSkoYyArIGJldGHCt3NpZ21hMyArIGdhbW1hKXrPiSAgXSAvIFpfSCh4aSlcblxuICAgIC8vIENvbXB1dGUgVDEoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxKHhpKVwiKTtcbiAgICBsZXQgdDEgPSBGci5zdWIocHJvb2YuZXZhbHVhdGlvbnMueiwgRnIub25lKTtcbiAgICB0MSA9IEZyLm11bCh0MSwgbGFncmFuZ2UxKTtcbiAgICB0MSA9IEZyLm11bCh0MSwgY2hhbGxlbmdlcy5pbnZ6aCk7XG5cbiAgICAvLyBDb21wdXRlIFQyKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMih4aSlcIik7XG4gICAgY29uc3QgYmV0YXhpID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgY2hhbGxlbmdlcy54aSk7XG4gICAgY29uc3QgdDIxMSA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5hLCBGci5hZGQoYmV0YXhpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5iLCBGci5hZGQoRnIubXVsKGJldGF4aSwgdmsuazEpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxMyA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5jLCBGci5hZGQoRnIubXVsKGJldGF4aSwgdmsuazIpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxID0gRnIubXVsKHQyMTEsIEZyLm11bCh0MjEyLCBGci5tdWwodDIxMywgcHJvb2YuZXZhbHVhdGlvbnMueikpKTtcblxuICAgIGNvbnN0IHQyMjEgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYSwgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMxKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMjIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYiwgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMyKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMjMgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYywgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMzKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMiA9IEZyLm11bCh0MjIxLCBGci5tdWwodDIyMiwgRnIubXVsKHQyMjMsIHByb29mLmV2YWx1YXRpb25zLnp3KSkpO1xuXG4gICAgbGV0IHQyID0gRnIuc3ViKHQyMSwgdDIyKTtcbiAgICB0MiA9IEZyLm11bCh0MiwgY2hhbGxlbmdlcy5pbnZ6aCk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSA2IEMyIHZhbHVlc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDMihoXzLPiV8zXmkpIHZhbHVlc1wiKTtcbiAgICBsZXQgcmVzID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICBsZXQgYzIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMueiwgRnIubXVsKHJvb3RzLlMyLmgydzNbaV0sIHQxKSk7XG4gICAgICAgIGMyID0gRnIuYWRkKGMyLCBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbaV0pLCB0MikpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMiwgTGlTMltpXSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDMihoXzPPiV8zXmkpIHZhbHVlc1wiKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICBsZXQgYzIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuencsIEZyLm11bChyb290cy5TMi5oM3czW2ldLCBwcm9vZi5ldmFsdWF0aW9ucy50MXcpKTtcbiAgICAgICAgYzIgPSBGci5hZGQoYzIsIEZyLm11bChGci5zcXVhcmUocm9vdHMuUzIuaDN3M1tpXSksIHByb29mLmV2YWx1YXRpb25zLnQydykpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMiwgTGlTMltpICsgM10pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRihjdXJ2ZSwgcHJvb2YsIHZrLCBjaGFsbGVuZ2VzLCByb290cykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBtdWxIMCA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIG11bEgwID0gRnIubXVsKG11bEgwLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMC5oMHc4W2ldKSk7XG4gICAgfVxuXG4gICAgY2hhbGxlbmdlcy50ZW1wID0gbXVsSDA7XG5cbiAgICBsZXQgbXVsSDEgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0WzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICBtdWxIMSA9IEZyLm11bChtdWxIMSwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzEuaDF3NFtpXSkpO1xuICAgIH1cblxuICAgIGxldCBtdWxIMiA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIG11bEgyID0gRnIubXVsKG11bEgyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oMnczW2ldKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIG11bEgyID0gRnIubXVsKG11bEgyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oM3czW2ldKSk7XG4gICAgfVxuXG4gICAgY2hhbGxlbmdlcy5xdW90aWVudDEgPSBGci5tdWwoY2hhbGxlbmdlcy5hbHBoYSwgRnIuZGl2KG11bEgwLCBtdWxIMSkpO1xuICAgIGNoYWxsZW5nZXMucXVvdGllbnQyID0gRnIubXVsKEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKSwgRnIuZGl2KG11bEgwLCBtdWxIMikpO1xuXG4gICAgbGV0IEYyID0gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5DMSwgY2hhbGxlbmdlcy5xdW90aWVudDEpO1xuICAgIGxldCBGMyA9IEcxLnRpbWVzRnIocHJvb2YucG9seW5vbWlhbHMuQzIsIGNoYWxsZW5nZXMucXVvdGllbnQyKTtcblxuICAgIHJldHVybiBHMS5hZGQodmsuQzAsIEcxLmFkZChGMiwgRjMpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUUoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgcjAsIHIxLCByMikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBFMiA9IEZyLm11bChyMSwgY2hhbGxlbmdlcy5xdW90aWVudDEpO1xuICAgIGxldCBFMyA9IEZyLm11bChyMiwgY2hhbGxlbmdlcy5xdW90aWVudDIpO1xuXG4gICAgcmV0dXJuIEcxLnRpbWVzRnIoRzEub25lLCBGci5hZGQocjAsIEZyLmFkZChFMiwgRTMpKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVKKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICByZXR1cm4gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5XMSwgY2hhbGxlbmdlcy50ZW1wKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRiwgRSwgSikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBsZXQgQTEgPSBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLlcyLCBjaGFsbGVuZ2VzLnkpO1xuICAgIEExID0gRzEuYWRkKEcxLnN1YihHMS5zdWIoRiwgRSksIEopLCBBMSk7XG4gICAgY29uc3QgQTIgPSBjdXJ2ZS5HMi5vbmU7XG5cbiAgICBjb25zdCBCMSA9IHByb29mLnBvbHlub21pYWxzLlcyO1xuICAgIGNvbnN0IEIyID0gdmsuWF8yO1xuXG4gICAgcmV0dXJuIGF3YWl0IGN1cnZlLnBhaXJpbmdFcShHMS5uZWcoQTEpLCBBMiwgQjEsIEIyKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cywgeCwgeGksIGN1cnZlKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG5cbiAgICBjb25zdCBudW0gPSBGci5zdWIoRnIuZXhwKHgsIGxlbiksIHhpKTtcbiAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG5cbiAgICBjb25zdCBMaSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIoeCwgcm9vdHNbaV0pO1xuXG4gICAgICAgIExpW2ldID0gRnIuZGl2KG51bSwgRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMykpO1xuICAgIH1cblxuICAgIHJldHVybiBMaTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVMYWdyYW5nZUxpUzIocm9vdHMsIHZhbHVlLCB4aTAsIHhpMSwgY3VydmUpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgTGkgPSBbXTtcblxuICAgIGNvbnN0IGxlbiA9IHJvb3RzWzBdLmxlbmd0aDtcbiAgICBjb25zdCBuID0gbGVuICogcm9vdHMubGVuZ3RoO1xuXG4gICAgY29uc3QgbnVtMSA9IEZyLmV4cCh2YWx1ZSwgbik7XG4gICAgY29uc3QgbnVtMiA9IEZyLm11bChGci5hZGQoeGkwLCB4aTEpLCBGci5leHAodmFsdWUsIGxlbikpO1xuICAgIGNvbnN0IG51bTMgPSBGci5tdWwoeGkwLCB4aTEpO1xuICAgIGNvbnN0IG51bSA9IEZyLmFkZChGci5zdWIobnVtMSwgbnVtMiksIG51bTMpO1xuXG4gICAgbGV0IGRlbjEgPSBGci5tdWwoRnIubXVsKEZyLmUobGVuKSwgcm9vdHNbMF1bMF0pLCBGci5zdWIoeGkwLCB4aTEpKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRlbjIgPSByb290c1swXVsobGVuIC0gMSkgKiBpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgcm9vdHNbMF1baV0pO1xuXG4gICAgICAgIGNvbnN0IGRlbiA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgTGlbaV0gPSBGci5kaXYobnVtLCBkZW4pO1xuICAgIH1cblxuICAgIGRlbjEgPSBGci5tdWwoRnIubXVsKEZyLmUobGVuKSwgcm9vdHNbMV1bMF0pLCBGci5zdWIoeGkxLCB4aTApKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRlbjIgPSByb290c1sxXVsobGVuIC0gMSkgKiBpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgcm9vdHNbMV1baV0pO1xuXG4gICAgICAgIGNvbnN0IGRlbiA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgTGlbaSArIGxlbl0gPSBGci5kaXYobnVtLCBkZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBMaTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7Z2V0Q3VydmVGcm9tTmFtZX0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmZ1bmN0aW9uIGkyaGV4KGkpIHtcbiAgICByZXR1cm4gKFwiMFwiICsgaS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbn1cblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiICsgbnN0cjtcbiAgICBuc3RyID0gYDB4JHtuc3RyfWA7XG4gICAgcmV0dXJuIG5zdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua0V4cG9ydENhbGxEYXRhKF9wdWIsIF9wcm9vZikge1xuICAgIGNvbnN0IHByb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG4gICAgY29uc3QgcHViID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZUZyb21OYW1lKHByb29mLmN1cnZlKTtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5wdXRzICE9PSBcIlwiKSBpbnB1dHMgPSBpbnB1dHMgKyBcIixcIjtcbiAgICAgICAgaW5wdXRzID0gaW5wdXRzICsgcDI1NihwdWJbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBgWyR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5DMVswXSl9LCAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMyWzBdKX0sJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMyWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMVswXSl9LCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuVzJbMF0pfSwke3AyNTYocHJvb2YucG9seW5vbWlhbHMuVzJbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFsKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFyKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFtKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5xbyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5xYyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuczIpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuczMpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuYSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuYil9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5jKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnopfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnp3KX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnQxdyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy50MncpfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLmludil9XSxgICtcbiAgICBgWyR7aW5wdXRzfV1gO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXR1cCB9IGZyb20gXCIuL2ZmbG9ua19zZXR1cC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcm92ZSB9IGZyb20gXCIuL2ZmbG9ua19wcm92ZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdWxsUHJvdmUgfSBmcm9tIFwiLi9mZmxvbmtfZnVsbF9wcm92ZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZnkgfSBmcm9tIFwiLi9mZmxvbmtfdmVyaWZ5LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5VmVyaWZpZXIgfSBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5Q2FsbERhdGEgfSBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X2NhbGxkYXRhLmpzXCI7XG4iXSwibmFtZXMiOlsiaGV4TGVuIiwiZnJvbVN0cmluZyIsImUiLCJiaXRMZW5ndGgkNiIsImlzTmVnYXRpdmUkNCIsImlzWmVybyQxIiwic2hpZnRMZWZ0Iiwic2hpZnRSaWdodCIsImlzT2RkJDUiLCJiaXRzIiwidG9OdW1iZXIkMSIsImFkZCIsInN1YiIsIm5lZyIsIm11bCIsInBvdyIsImRpdiIsIm1vZCIsImVxIiwiZ3QiLCJnZXEiLCJiYW5kIiwidG9ScHJMRSIsInRvUnByQkUiLCJmcm9tUnByTEUiLCJmcm9tUnByQkUiLCJ0b1N0cmluZyIsInRvTEVCdWZmIiwiemVybyIsIm9uZSIsImV4cCIsImJ1aWxkU3FydCIsImFsZzVfdG9uZWxsaVNoYW5rcyIsImFsZzRfa29uZyIsImFsZzNfYXRraW4iLCJhbGcyX3NoYW5rcyIsImFsZzEwX2FkaiIsImFsZzlfYWRqIiwiYWxnOF9jb21wbGV4IiwicXVhcnRlclJvdW5kIiwiZG91YmxlUm91bmQiLCJDaGFDaGEiLCJnZXRSYW5kb21CeXRlcyIsImdldFJhbmRvbVNlZWQiLCJ0aHJlYWRSbmciLCJnZXRUaHJlYWRSbmciLCJGRlQiLCJsb2cyJDEiLCJfX2ZmdCIsIlpxRmllbGQiLCJ1dGlscyQ2IiwiYnVpbGRfaW50IiwiYnVpbGRfdGltZXNzY2FsYXIiLCJidWlsZF9iYXRjaGludmVyc2UiLCJidWlsZEJhdGNoSW52ZXJzZSQzIiwiYnVpbGRfYmF0Y2hjb252ZXJ0aW9uIiwiYnVpbGRCYXRjaENvbnZlcnRpb24kMyIsImJ1aWxkX2JhdGNob3AiLCJidWlsZEJhdGNoQ29udmVydGlvbiQyIiwiYmlnaW50IiwiY29tcGFyZSIsInNxdWFyZSQxIiwiaXNPZGQkNCIsImlzRXZlbiIsImlzTmVnYXRpdmUkMyIsImlzUG9zaXRpdmUiLCJiaXRMZW5ndGgkNSIsImFicyIsImlzVW5pdCIsIm1vZEludiQzIiwibW9kUG93JDIiLCJjb21wYXJlQWJzIiwiaXNEaXZpc2libGVCeSIsImlzQmFzaWNQcmltZSIsInByZXYiLCJtaWxsZXJSYWJpblRlc3QiLCJpc1ByaW1lJDEiLCJidWlsZEludCIsInV0aWxzJDUiLCJidWlsZEV4cCQyIiwiYnVpbGRCYXRjaEludmVyc2UkMiIsImJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEiLCJidWlsZEJhdGNoT3AiLCJiaXRMZW5ndGgkNCIsIm1vZEludiQyIiwibW9kUG93JDEiLCJpc1ByaW1lIiwiaXNPZGQkMyIsInNxdWFyZSIsImJ1aWxkX2YxbSIsImJ1aWxkRjFtJDIiLCJiaXRMZW5ndGgkMyIsImJ1aWxkX2YxIiwiYnVpbGRFeHAkMSIsImJ1aWxkQmF0Y2hJbnZlcnNlJDEiLCJ1dGlscyQ0IiwiYnVpbGRfZjJtIiwiYnVpbGRFeHAiLCJidWlsZEJhdGNoSW52ZXJzZSIsImJ1aWxkX2YzbSIsImJ1aWxkX3RpbWVzc2NhbGFybmFmIiwiYnVpbGRfbXVsdGlleHAiLCJidWlsZFRpbWVzU2NhbGFyTkFGIiwiYnVpbGRCYXRjaENvbnZlcnRpb24iLCJidWlsZE11bHRpZXhwJDEiLCJidWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMCIsImlzT2RkJDIiLCJtb2RJbnYkMSIsIm1vZFBvdyIsInV0aWxzJDMiLCJidWlsZF9mZnQiLCJidWlsZF9wb2wiLCJidWlsZF9xYXAiLCJidWlsZF9hcHBseWtleSIsInV0aWxzJDIiLCJidWlsZEYxbSQxIiwiYnVpbGRGMSQxIiwiYnVpbGRGMm0kMSIsImJ1aWxkRjNtJDEiLCJidWlsZEN1cnZlJDEiLCJidWlsZEZGVCQyIiwiYnVpbGRQb2wkMSIsImJ1aWxkUUFQJDEiLCJidWlsZEFwcGx5S2V5JDEiLCJiaXRMZW5ndGgkMiIsIm1vZEludiIsImlzT2RkJDEiLCJpc05lZ2F0aXZlJDIiLCJidWlsZF9ibjEyOCIsInV0aWxzJDEiLCJidWlsZEYxbSIsImJ1aWxkRjEiLCJidWlsZEYybSIsImJ1aWxkRjNtIiwiYnVpbGRDdXJ2ZSIsImJ1aWxkRkZUJDEiLCJidWlsZFBvbCIsImJ1aWxkUUFQIiwiYnVpbGRBcHBseUtleSIsImJpdExlbmd0aCQxIiwiaXNPZGQiLCJpc05lZ2F0aXZlJDEiLCJidWlsZF9ibHMxMjM4MSIsImJ1aWxkQm4xMjgkMSIsImJ1aWxkQmxzMTIzODEkMSIsInN0cmluZ2lmeUJpZ0ludHMiLCJ1bnN0cmluZ2lmeUJpZ0ludHMiLCJsZUludDJCdWZmIiwiX3JldlRhYmxlIiwiX3JldlNsb3ciLCJiaXRSZXZlcnNlIiwibG9nMiIsImJ1ZmZSZXZlcnNlQml0cyIsImFycmF5MmJ1ZmZlciIsImJ1ZmZlcjJhcnJheSIsIlBBR0VfU0laRSIsIkJpZ0J1ZmZlciIsImJ1aWxkQmF0Y2hDb252ZXJ0IiwiV2FzbUZpZWxkMSIsIldhc21GaWVsZDIiLCJXYXNtRmllbGQzIiwiV2FzbUN1cnZlIiwidGhyZWFkIiwiTUVNX1NJWkUiLCJEZWZlcnJlZCIsInNsZWVwIiwid29ya2VyU291cmNlIiwidGhyZWFkU3RyIiwiYnVpbGRUaHJlYWRNYW5hZ2VyIiwiVGhyZWFkTWFuYWdlciIsImJ1aWxkQmF0Y2hBcHBseUtleSIsImJ1aWxkUGFpcmluZyIsInBUU2l6ZXMiLCJidWlsZE11bHRpZXhwIiwiYnVpbGRGRlQiLCJidWlsZEVuZ2luZSIsInRvTnVtYmVyIiwiaXNOZWdhdGl2ZSIsImlzWmVybyIsImJpdExlbmd0aCIsInUzMiIsInRvVVRGOEFycmF5Iiwic3RyaW5nIiwidmFydWludDMyIiwidmFydWludCIsInZhcmludCIsInZhcmludDMyIiwidmFyaW50NjQiLCJ0b0hleFN0cmluZyIsIkNvZGVCdWlsZGVyIiwidHlwZUNvZGVzIiwiRnVuY3Rpb25CdWlsZGVyIiwiTW9kdWxlQnVpbGRlciIsImJ1aWxkQm4xMjgiLCJidWlsZEJsczEyMzgxIiwiY3JlYXRlTmV3IiwicmVhZEV4aXN0aW5nIiwidG1wQnVmZjMyIiwidG1wQnVmZjMydiIsInRtcEJ1ZmY2NCIsInRtcEJ1ZmY2NHYiLCJtZW1GaWxlLmNyZWF0ZU5ldyIsImJpZ01lbUZpbGUuY3JlYXRlTmV3IiwibWVtRmlsZS5yZWFkRXhpc3RpbmciLCJiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlIiwiYmxzMTIzODFyIiwiYm4xMjhyIiwiZ2V0Q3VydmVGcm9tUiIsImFzc2VydCIsImJ5dGVMZW5ndGgiLCJ3cml0ZSIsImFzY2lpIiwicmVxdWlyZSQkMCIsImJhc2U2NCIsInJlcXVpcmUkJDEiLCJoZXgiLCJyZXF1aXJlJCQyIiwidXRmOCIsInJlcXVpcmUkJDMiLCJ1dGYxNmxlIiwicmVxdWlyZSQkNCIsImJsYWtlMmJXYXNtTW9kdWxlIiwiYmxha2UyYldhc20iLCJCbGFrZTJiIiwic2FtZVJhdGlvIiwiYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uIiwiYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbiIsImdldEN1cnZlIiwiYmluRmlsZVV0aWxzLndyaXRlQmlnSW50IiwicmVhZEhlYWRlciIsImJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uIiwiYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uIiwiYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQiLCJiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUiLCJGMUZpZWxkIiwicmVhZENvbnRyaWJ1dGlvbiIsIndyaXRlQ29udHJpYnV0aW9uIiwid3Ruc1V0aWxzLnJlYWRIZWFkZXIiLCJ6a2V5VXRpbHMucmVhZEhlYWRlciIsImJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbiIsIldpdG5lc3NDYWxjdWxhdG9yQnVpbGRlciIsImJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlIiwid3Ruc1V0aWxzLndyaXRlQmluIiwid3Ruc19jYWxjdWxhdGUiLCJncm90aDE2X3Byb3ZlIiwiY3VydmVzLmdldEN1cnZlRnJvbU5hbWUiLCJwdWJsaWNJbnB1dHNBcmVWYWxpZCIsImlzV2VsbENvbnN0cnVjdGVkIiwicDI1NiIsImJsYWtlMmIiLCJtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMiLCJrZXlQYWlyLmNyZWF0ZVBUYXVLZXkiLCJwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyIiwicHRhdVV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaCIsIm1pc2MuZm9ybWF0SGFzaCIsInV0aWxzLnJlYWRQVGF1SGVhZGVyIiwidXRpbHMucmVhZENvbnRyaWJ1dGlvbnMiLCJ1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2giLCJtaXNjLmhhc2hJc0VxdWFsIiwidXRpbHMud3JpdGVQVGF1SGVhZGVyIiwidXRpbHMuZnJvbVB0YXVQdWJLZXlScHIiLCJ1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMiLCJtaXNjLnNhbWVSYXRpbyIsInV0aWxzLmtleUZyb21CZWFjb24iLCJrZXlQYWlyLmdldEcyc3AiLCJ1dGlscy50b1B0YXVQdWJLZXlScHIiLCJtaXNjLmJ5dGVBcnJheTJoZXgiLCJtaXNjLmdldFJhbmRvbUJ5dGVzIiwibWlzYy5yZWFkVUludDMyQkUiLCJtaXNjLmdldFJhbmRvbVJuZyIsImJlYWNvbiIsIm1pc2MuaGV4MkJ5dGVBcnJheSIsImJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbiIsIlNVQkFSUkFZX1NJWkUiLCJCaWdBcnJheUhhbmRsZXIiLCJfQmlnQXJyYXkiLCJCaWdBcnJheSIsImxvYWRTeW1zIiwid3Ruc1V0aWxzLndyaXRlIiwiY3VydmVzLmdldEN1cnZlRnJvbVIiLCJ6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyIsInprZXlVdGlscy53cml0ZUhlYWRlciIsInprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyIsIm1pc2MuY2xvbmVIYXNoZXIiLCJiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwiLCJ1dGlscy5oYXNoUHViS2V5IiwidXRpbHMuaGFzaEcxIiwiZXhwb3J0VmVyaWZpY2F0aW9uS2V5IiwiZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllckNtZCIsImdsb2JhbCIsInBsb25rX3Byb3ZlIiwiZnJvbU9iamVjdFZrIiwiY2FsY3VsYXRlUEkiLCJpc1ZhbGlkUGFpcmluZyJdLCJtYXBwaW5ncyI6Ijs7O0lBQUE7SUFDQSxNQUFNQSxRQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFNBQVNDLFlBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQzlCLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMvQixRQUFRLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEtBQUssTUFBTSxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtJQUNsQyxZQUFZLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFNBQVM7SUFDVCxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsTUFBTUMsR0FBQyxHQUFHRCxZQUFVLENBQUM7QUFDckI7SUFDQSxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQzdCLElBQUksSUFBSSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7SUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBU0UsYUFBVyxDQUFDLENBQUMsRUFBRTtJQUN4QixJQUFJLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFSCxRQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7QUFDRDtJQUNBLFNBQVNJLGNBQVksQ0FBQyxDQUFDLEVBQUU7SUFDekIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsVUFBUSxDQUFDLENBQUMsRUFBRTtJQUNyQixJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDZCxDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxXQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxZQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxNQUFNLEdBQUcsR0FBR0QsV0FBUyxDQUFDO0lBQ3RCLE1BQU0sR0FBRyxHQUFHQyxZQUFVLENBQUM7QUFDdkI7SUFDQSxTQUFTQyxTQUFPLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7QUFDRDtBQUNBO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksT0FBTyxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQixZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFNBQVMsTUFBTTtJQUNmLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQixTQUFTO0lBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixLQUFLO0lBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtBQUNBO0lBQ0EsU0FBU0MsTUFBSSxDQUFDLENBQUMsRUFBRTtJQUNqQixJQUFJLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLE9BQU8sQ0FBQyxFQUFFO0lBQ2QsUUFBUSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLFNBQVMsTUFBTTtJQUNmLFlBQVksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMxQixTQUFTO0lBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixLQUFLO0lBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVNDLFlBQVUsQ0FBQyxDQUFDLEVBQUU7SUFDdkIsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUU7SUFDNUMsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDMUMsS0FBSztJQUNMLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztBQUNEO0lBQ0EsU0FBUyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsSUFBSSxPQUFPLEdBQUcsRUFBRTtJQUNoQixRQUFRLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7SUFDMUIsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7QUFDQTtJQUNBLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDRDtJQUNBLFNBQVNDLEtBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNyQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxLQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3JCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDRDtJQUNBLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtJQUNsQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2xCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVNDLElBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2xCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsTUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDcEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3BCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7QUFDRDtJQUNBLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDcEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakIsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDRDtJQUNBO0lBQ0EsU0FBU0MsU0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNqQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNGLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdaLFlBQVUsQ0FBQ1csTUFBSSxDQUFDZCxZQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7QUFDRDtJQUNBO0lBQ0EsU0FBU2dCLFNBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1B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QVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSyxDQUFDO0lBQ04sQ0FBQztBQUNEO0FBQ0E7SUFDQSxTQUFTMEIsY0FBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0QztJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7QUFDRDtJQUNBLFNBQVNDLGFBQVcsQ0FBQyxFQUFFLEVBQUU7SUFDekIsSUFBSUQsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsTUFBTUUsUUFBTSxDQUFDO0FBQ2I7SUFDQSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7SUFDdEIsUUFBUSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRztJQUNyQixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lB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Q0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxJQUFJLEdBQUdDLFFBQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxHQUFHQyxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ1o7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLElBQUksR0FBR0QsUUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxJQUFJQyxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7QUFDQTtJQUNBLENBQUM7QUFDRDtJQUNBLFNBQVNELFFBQU0sRUFBRSxDQUFDO0lBQ2xCO0lBQ0EsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtB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SSxDQUFDLEdBQUcsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHOUMsYUFBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNwRTtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxTQUFTO0FBQ1Q7QUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDN0I7SUFDQSxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtJQUNqRCxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN4QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRDtJQUNBLFFBQVE0QixXQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSWUsS0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDOUI7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLElBQUksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNoQixZQUFZLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsU0FBUyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUMxQixZQUFZLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVM7SUFDVCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtJQUNyQixZQUFZLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQzVCLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNyRCxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDaEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElB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QUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELEtBQUs7QUFDTDtBQUNBO0lBQ0E7SUFDQSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsT0FBT0MsV0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLE9BQU9DLFdBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FB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LFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxR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QUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckc7SUFDQSxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDOUIsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3RELG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixpQkFBaUIsQ0FBQztBQUNsQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6RyxnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUM5QixvQkFBb0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUQsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQixpQkFBaUIsQ0FBQztBQUNsQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hELGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hELGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkIsYUFBYSxDQUFDO0FBQ2Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RCxhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztJQUM3QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzNGLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUMsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsU0FBUyxHQUFHO0lBQ3pCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNoRjtJQUNBLGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUMsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkUsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2hFLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5RTtJQUNBLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7QUFDZDtJQUNBLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUM7SUFDNUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUMxQixnQkFBZ0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLGdCQUFnQixDQUFDLENBQUMsVUFBVTtJQUM1QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDbkMsb0JBQW9CLElBQUk7SUFDeEIsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0UsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLGFBQWEsQ0FBQztBQUNkO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUQsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDMUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0QsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUUsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNsRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUN4RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGVBQWUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUUsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFVBQVUsR0FBRztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkUsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNqQixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNmLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25CLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xCLElBQUksY0FBYyxFQUFFLENBQUM7SUFDckIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUMxQixJQUFJLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLElBQUksU0FBUyxFQUFFLENBQUM7SUFDaEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSUUscUJBQW1CLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLElBQUlDLHdCQUFzQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsTUFBTSxHQUFHLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEcsSUFBSUEsd0JBQXNCLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxNQUFNLEdBQUcsaUJBQWlCLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLElBQUlBLHdCQUFzQixDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLElBQUlDLGNBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFdBQVcsRUFBRSxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN4RSxJQUFJQSxjQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxXQUFXLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEUsSUFBSUEsY0FBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsV0FBVyxFQUFFLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUM7SUFDdEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQy9DLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGNBQWMsQ0FBQyxDQUFDO0lBQ25ELElBQUlILFlBQVU7SUFDZCxRQUFRLE1BQU07SUFDZCxRQUFRLE1BQU0sR0FBRyxNQUFNO0lBQ3ZCLFFBQVEsRUFBRTtJQUNWLFFBQVEsTUFBTSxHQUFHLE1BQU07SUFDdkIsUUFBUSxNQUFNLEdBQUcsU0FBUztJQUMxQixRQUFRLFNBQVMsR0FBRyxPQUFPO0lBQzNCLFFBQVEsTUFBTSxHQUFHLE1BQU07SUFDdkIsS0FBSyxDQUFDO0lBQ04sSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELElBQUksSUFBSU8sU0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFFBQVEsU0FBUyxFQUFFLENBQUM7SUFDcEIsUUFBUSxhQUFhLEVBQUUsQ0FBQztJQUN4QixRQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDcEQsS0FBSztJQUNMLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLHNCQUFzQixDQUFDLENBQUM7SUFDM0Q7QUFDQTtJQUNBLElBQUksT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLE1BQU1JLFlBQVUsRUFBRUQsV0FBUyxDQUFDO0lBQzVCLE1BQU0sRUFBRSxTQUFTLEVBQUVFLGFBQVcsRUFBRSxHQUFHaEMsUUFBTSxDQUFDO0FBQzFDO0lBQ0EsSUFBSWlDLFVBQVEsR0FBRyxTQUFTLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFO0FBQzdFO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekIsSUFBSSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUNELGFBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDckI7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxJQUFJLENBQUM7SUFDbkMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxNQUFNLENBQUM7SUFDOUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHO0lBQzdCLFFBQVEsR0FBRyxFQUFFLEdBQUc7SUFDaEIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLFVBQVUsSUFBSSxLQUFLLENBQUM7SUFDMUMsSUFBSSxNQUFNLFNBQVMsR0FBR0QsWUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25FO0FBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQ2xELElBQUksTUFBTSxFQUFFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDaEQsSUFBSSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMxRDtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7SUFDeEIsUUFBUSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztBQUM1QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDckMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEcsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGVBQWUsR0FBRztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FB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QUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0E7SUFDQSxR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TUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3ZEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDN0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxN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LENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFD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Q0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxF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Q0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDbEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUN0RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUM3QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztB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QUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFB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QUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDeEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFR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QUssQ0FBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEs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QUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJ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SSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQy9ELFlB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QVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFD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LFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztBQUM3QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENB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TUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDN0Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFB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RUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFD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TUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUc7SUFDbEIsUUFBUTtJQUNSLFlBQVksOEVBQThFO0lBQzFGLFlBQVksOEVBQThFO0lBQzFGLFNBQVMsQ0FBQztJQUNWLFlBQVksNkVBQTZFO0lBQ3pGLFlBQVksNkVBQTZFO0lBQ3pGLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDL0IsUUFBUTtJQUNSLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUc7SUFDbkIsUUFBUTtJQUNSLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDaEMsUUFBUTtJQUNSLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMvQixRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxR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S0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDekQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQ2pGO0FBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDakQ7SUFDQTtJQUNBO0FBQ0E7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxTQUFTLG1CQUFtQixHQUFHO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFD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LElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxhQUFhLEdBQUc7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxlQUFlLEdBQUc7SUFDL0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7QUFDQTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQztBQUNBO0lBQ0EsUUFB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LENBQUM7QUFDVjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRyxZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxQixZQUFZLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFD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QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsa0JBQWtC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QUMsTUFBTSxFQUFFLGdDQUFnQyxDQUFDLENBQUM7SUFDL0UsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtBQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxD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QSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEM7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUYsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxN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QUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHO0lBQ25CLFFBQVE7SUFDUixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTLENBQUM7SUFDVixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTLENBQUM7SUFDVixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLO0lBQ2hDLFFBQVE7SUFDUixZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsS0FBSyxDQUFDLENBQUM7QUFDUDtJQUNBLElBQUksTUFBTSxjQUFjLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN6QyxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxLQUFLLENBQUMsQ0FBQztBQUNQO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0s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Q0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0FBQ0E7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUM7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxnQkFBZ0IsR0FBRztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUM7QUFDMUQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUM7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGNBQWMsR0FBRztJQUM5QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFB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SSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztBQUNBO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxD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QUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFDMUQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsU0FBUyxD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QUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsYUFB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QUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDbkQ7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QUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEs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Q0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDM0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxFQUFF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SSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0MsU0FBU0EsV0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ25CLE1BQU07SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTRyxNQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ2pCLElBQUk7SUFDSixRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDN0QsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLE1BQU07SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxpQkFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7SUFDdEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN0QyxJQUFJLE1BQU0sSUFBSSxHQUFHRCxNQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0lBQ3hCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQ3RELEtBQUs7SUFDTCxJQUFJLEtBQUssSUFBSSxDQUFDLEdB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QUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDL0IsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBR0QsV0FBUyxFQUFFO0lBQzdDLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFQSxXQUFTLENBQUMsQ0FBQztJQUNsRCxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsU0FBUztBQUNUO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNsQixRQUFRLEtBQUssRUFBRSxLQUFLLFNBQVMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUNyRCxRQUFRLEtBQUssRUFBRSxLQUFLLFNBQVMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUMxQjtJQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJQSxXQUFTLENBQUMsQ0FBQztBQUM1RDtJQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QyxZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDQSxXQUFTLEVBQUUsRUFBRSxDQUFDQSxXQUFTLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDbkY7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDO0FBQ2pCO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDMUIsUUFBUSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUdBLFdBQVMsQ0FBQztJQUMvQjtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BCO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUdBLFdBQVMsS0FBS0EsV0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsWUFBWSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEcsWUFBWSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsT0FBTyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakQsWUFBWSxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ3ZCLGdCQUFnQixJQUFJLEdBQUcsSUFBSUEsV0FBUyxFQUFFO0lBQ3RDLG9CQUFvQixJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksR0FBRyxJQUFJQyxXQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLENBQUM7SUFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUN0QixRQUFRLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTztBQUMzQjtJQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUdELFdBQVMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJQSxXQUFTLENBQUMsQ0FBQztBQUNoRTtJQUNBLFFBQVEsSUFBSSxTQUFTLElBQUksUUFBUSxFQUFFO0lBQ25DLFlBQVksSUFBSSxDQUFDLElBQUksWUFBWUMsV0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLGdCQUFnQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxHQUFHRCxXQUFTLENBQUMsQ0FBQztJQUN4RixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBR0EsV0FBUyxDQUFDLENBQUM7SUFDN0UsYUFBYTtBQUNiO0lBQ0EsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBR0EsV0FBUyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxXQUFTLEtBQUtBLFdBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFlBQVksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsWUFBWSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEcsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUNqQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsU0FBUztBQUNUO0lBQ0EsS0FBSztJQUNMLENBQUM7QUFDRDtJQUNBLFNBQVNFLG1CQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRTtJQUNsRCxJQUFJLE9BQU8sZUFBZSxZQUFZLENBQUMsTUFBTSxFQUFFO0lBQy9DLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzVELFFBQVEsS0FBSyxPQUFPLEdBQUcsR0FBRyxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUU7SUFDbEQsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbkQsU0FBUztJQUNULFFBQVEsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNsQixZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO0lBQ3JDLGdCQUFnQixDQUFDLEdBQUcsY0FBYyxDQUFDO0lBQ25DLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDO0lBQy9DLGFBQWE7SUFDYixZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTO0FBQy9CO0lBQ0EsWUFBWSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMvRixZQUFZLE1BQU0sSUFBSSxHQUFHO0lBQ3pCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwRCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFO0lBQ3RELG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLGlCQUFpQixDQUFDO0lBQ2xCLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFELGFBQWEsQ0FBQztJQUNkLFlBQVksVUFBVSxDQUFDLElBQUk7SUFDM0IsZ0JBQWdCLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3BDLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxJQUFJLFdBQVcsQ0FBQztJQUN4QixRQUFRLElBQUksTUFBTSxZQUFZRCxXQUFTLEVBQUU7SUFDekMsWUFBWSxXQUFXLEdBQUcsSUFBSUEsV0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxTQUFTLE1BQU07SUFDZixZQUFZLFdBQVcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QyxZQUFZLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLFdBQVcsQ0FBQztJQUMzQixLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxNQUFNRSxZQUFVLENBQUM7QUFDakI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDbkMsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuQjtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBR3ZKLFlBQVUsQ0FBQyxDQUFDLEVBQUVzQixLQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcxQixhQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHUyxLQUFHLENBQUNOLFdBQVMsQ0FBQ3VCLEtBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUVBLEtBQUcsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHdEIsWUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUVzQixLQUFHLENBQUMsQ0FBQztJQUM1QyxRQUFRLElB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SUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMs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QUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJ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SSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FB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QUksUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzJDLGNBQVksRUFBRSxDQUFDLENBQUM7SUFDNUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9D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SSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNB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QUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsU0FBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQztJQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUMzQixZQUFZLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzVCLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNkLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNCLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDMUMsWUFBWSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDbkMsU0FBUyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FB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LENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FB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Q0FBQyxDQUFDO0lBQ3hGLFlBQVksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsWUFBWSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRDtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxD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QUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakUsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEU7QUFDQTtJQUNBLFFBQVEsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ2hKO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDNUI7SUFDQSxR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LElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUk0SixZQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUEsWUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUlDLFlBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUUsV0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFD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LE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDdkMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtB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RyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQ3ZDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ2xELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM5QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDcEQsUUFBUSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3BDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFB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RTtJQUN2RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUM1RCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzVELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25ELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ25EO0lBQ0EsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lB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UUFBUSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FB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SztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRRCxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQ0QsV0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVFDLFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDRCxXQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRRyxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELFFBQVFBLFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUNELFdBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUMxQixRQUFRLE1BQU0sSUFBSSxHQUFHLElB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Q0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFHO0lBQ3pELEdBQUcsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQzVCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSTtJQUMxRCxHQUFHO0FBQ0g7SUFDQSxFQUFFLE9BQU8sTUFBTTtJQUNmLENBQ0E7SUFDQSxTQUFTMEwsT0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLEdBQUdELFlBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6RSxFQUFFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFDO0FBQzFEO0lBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFDO0FBQzdDO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBQztJQUNyQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFDO0lBQzVDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEVBQUM7SUFDM0MsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLEdBQUc7SUFDWixDQUNBO0lBQ0EsSUFBQSxNQUFjLEdBQUc7SUFDakIsY0FBRUEsWUFBVTtJQUNaLFlBQUV6TCxVQUFRO0lBQ1YsU0FBRTBMLE9BQUs7SUFDUDs7SUNoRUEsU0FBU0QsWUFBVSxFQUFFLE1BQU0sRUFBRTtJQUM3QixFQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDO0lBQzVCLENBQUM7QUFDRDtJQUNBLFNBQVN6TCxVQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNCLEVBQUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVU7QUFDL0I7SUFDQSxFQUFFLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFDO0FBQzlEO0lBQ0EsRUFBRSxJQUFJLE1BQU0sR0FBRyxHQUFFO0lBQ2pCLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBQztBQUNYO0lBQ0EsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQy9DLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFDO0lBQy9ELEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3ZCLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFDO0lBQzlELEdBQUc7QUFDSDtJQUNBLEVBQUUsT0FBTyxNQUFNO0lBQ2YsQ0FBQztBQUNEO0lBQ0EsU0FBUzBMLE9BQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHRCxZQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDekUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBQztBQUMxRDtJQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztJQUNoRCxJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUM7QUFDcEQ7SUFDQSxJQUFJLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO0lBQzVDLE1BQU0sT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDO0lBQ3JDLEdBQUc7QUFDSDtJQUNBLEVB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RUFBQztTQUN0QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztTQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztTQUMxQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBQztRQUMzQjtBQUNIO0lBQ0EsR0FBRSxPQUFPLE1BQU07TUFDZDtBQUNEO0tBQ0EsU0FBUyxRQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNCLEdBQUUsT0FBTyxNQUFNO01BQ2Q7QUFDRDtJQUNBLENBQUEsU0FBUyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxFQUFFO0lBQ3pFLEdBQUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVU7QUFDL0I7SUFDQSxHQUFFLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUU7SUFDN0IsR0FBRSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQzdCLEdBQUUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFDO0lBQzFCLEdBQUUsSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFLEdBQUcsR0FBRyxJQUFHO0FBQzFCO0lBQ0EsR0FBRSxJQUFJLEtBQUssS0FBSyxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFDO0FBQ3BFO09BQ0UsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztNQUMzQztBQUNEO0tBQ0EsU0FBUyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUMxRDtJ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RyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQzdCLEtBQUksS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO09BQzlFLE9BQU8sQ0FBQyxNQUFNLEtBQUs7SUFDckIsS0FBSSxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0SCxLQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSTtXQUNoQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztXQUM3RSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRixPQUFNLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztJ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LENBQUM7SUFDM0IsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDO0lBQ3BCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQzlCLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDckUsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLElBQUksS0FBSyxFQUFFLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNwQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztBQUNEO0lBQ08sU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNwQyxJQUFJLElBQUksRUFBRSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsVUFBVSxFQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3JELElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRTtJQUM3QyxJQUFJO0lBQ0osUUFBUSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUM7SUFDM0MsS0FBSztJQUNMLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0lBQ08sU0FBUyxX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QVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUksTUFBTUcsV0FBd0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdDLElBQUksTUFBTSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLE9BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsSUFBSSxNQUFNRixlQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDO0FBQ0E7SUFDQSxDQUFDO0FBMEZEO0lBQ0EsZUFBZSxPQUFPLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDckMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7QUFDRDtJQUNBLGVBQWUsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFO0lBQ3JDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0FBQ0Q7SUFDQSxlQUFlLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUMzQyxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7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QVUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMzQyxJQUFJLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0MsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDO0lBQ0EsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxD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LElBQUksTUFBTUcsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsS0FBSztJQUNMLElBQUksTUFBTUMsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztBQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDdkMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQVMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDekIsWUFBWSxN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LEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RCxJQUFJLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNsQztJQUNBLElBQUksTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0MsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzFCLElBQUksSUFBSSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLElBQUksT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxXQUFXLEVBQUU7SUFDeEMsUUFBUSxNQUFNLFFBQVEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ3JHLFFBQVEsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUM1QixZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFB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LENBQUM7QUFDN0Y7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ2hDO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDeEQsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3ZELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDMUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFDO0FBQ0E7SUFDQSxJQUFJ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LElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSUEsV0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekQsSUFBSSxNQUFNLFFBQVEsR0FBRyxJQUFJQSxXQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN6RDtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDMUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDckIsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUc7SUFDeEIsZ0JBQWdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM5QyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDMUMsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxRQUFRLENBQUMsR0FBRztJQUNwQixZQUFZLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRztJQUN4QixnQkFBZ0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdDLGdCQUFnQixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDN0MsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxQztJQUNBLENBQUM7QUFDRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxlQUFlLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUNyRCxJQUFJLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkM7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNCLElBQUksTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0Q7SUFDQSxJQUFJLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksY0FBYyxFQUFFO0lBQ3BELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxRQUFRLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN6RDtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNaLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLHlCQUF5QixFQUFFLE1BQU0sQ0FBQztJQUMxRSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNwQixTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENB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LEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDakIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFDMUIsUUFBUSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsYUFBYTtJQUNiLFlBQVksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztJ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LENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyQyxRQUFRLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNoRCxRQUFRLE1BQU0sR0FBRyxNQUFNLEdBQUd3RyxNQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQztJQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekQsUUFBUSxDQUFDLEVBQUUsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDMUgsUUFBUSxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFB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QUNBLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEMsSUFBSSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUN0QztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU0zQixpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztJQUNMLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sTUFBTSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNoQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztJQUNMLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztJQUNMLElBQUksTUFBTUMsZUFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQztJQUNBO0lBQ0E7SUFDQSxJQUFJLE1BQU1ELGlCQUE4QixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLE1BQU0sVUFBVSxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQztJQUNwQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsUUFBUSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsS0FBSztJQUNMLElB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QUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3ZJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDQyxPQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlILElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDQSxPQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3BJLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDQSxPQUFlLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pJO0lBQ0EsSUFBSSxFQUFFLEdBQUcsTUFBTXhDLFdBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUcsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEgsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5RSxRQUFRLE9BQU8sS0FBSyxDQUFDO0lBQ3JCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxHQUFHLE1BQU1BLFdBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEgsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7SUFDckIsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMs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QUFDLENBQUMsRUFBRSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3ZJLElBQUksZUFBZSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsSUFBSSxXQUFXLEdBQUcsTUFBTSxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDakksSUFBSSxlQUFlLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDekosSUFBSSxlQUFlLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDdkosSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFJLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxDQUFDLEVBQUUsSUFB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TUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBcUJEO0lBQ0E7SUFDQSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzRixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRixDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUNqQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLFNBQVMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuSCxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7QUFDRDtJQUNBO0lBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDaEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0UsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7QUFDRDtJQUNBO0lBQ0EsU0FBUyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDaEMsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNmLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRSxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxD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LENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDakQsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsRUFBRTtJQUN6QixRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JFLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksQ0FB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R0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1RCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7QUFDQTtJQUNBLFNBQVMsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RDO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekQsQ0FBQztBQUNEO0lBQ0EsU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFO0lBQ3pCLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0FBQ0Q7SUFDQSxNQUFNLE1BQU0sQ0FBQztBQUNiO0lBQ0EsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUc7SUFDckIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsWUFBWSxDQUFDO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUc7SUFDZCxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHO0lBQ2QsUUFBUSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxHQUFHO0lBQ2YsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYjtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckY7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFFBQVEsSUFBSSxJQUFJLENBQUMsS0FB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QUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RDtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0I7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0UsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBO0FBQ0E7SUFDQSxNQUFNLE9BQU8sQ0FBQztJQUNkLElBQUksV0FBVyxDQUFDLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ3ZCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDcEU7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxRQUFRLElBQUks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QyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN6QixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsS0FBSztBQUNMO0FBQ0E7SUFDQTtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRCxL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QUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pEO0FBQ0E7SUFDQSxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDN0IsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzNCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FB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QUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckc7SUFDQSxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDOUIsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENB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ckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFD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QUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLENBQUM7SUFDdkMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUNwRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO0FBQ2hFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUM5QztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDakQsZ0JBQWdCO0lBQ2hCO0lBQ0Esb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsQ0FBQztJQUN2RCxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQ3RELG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEUsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQjtJQUNBLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDakQsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNELG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVFO0lBQ0E7SUFDQSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxhQUFhLEdBQUc7QUFDN0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3pHO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUN2QyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzNDO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0FBQ3BEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSTtJQUN0QixvQkFBb0IsTUFBTSxHQUFHLEtBQUs7SUFDbEMsb0JBQW9CLEVBQUU7SUFDdEIsb0JBQW9CLEVBQUU7SUFDdEIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xCLElBQUksVUFBVSxFQUFFLENBQUM7SUFDakIsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQixJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xCLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNmLElBQUksY0FBYyxFQUFFLENBQUM7SUFDckIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUNoQixJQUFJLGVBQWUsRUFBRSxDQUFDO0FBQ3RCO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUM7SUFDdEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDL0MsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsSUFBSSxVQUFVO0lBQ2QsUUFBUSxNQUFNO0lBQ2QsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixRQUFRLE1BQU0sR0FBRyxTQUFTO0lBQzFCLFFBQVEsTUFBTSxHQUFHLE9BQU87SUFDeEIsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixLQUFLLENBQUM7SUFDTixJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLElBQUksYUFBYSxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQztBQUNsRDtBQUNBO0lBQ0EsSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDRjtJQUNBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUM7SUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUM3QztJQUNBLElBQUksU0FBUyxHQUFHLFNBQVMsUUFBUSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRTtBQUM5RTtJQUNBLElBQUksSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sTUFBTSxDQUFDO0FBQzlDO0lBQ0EsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHO0lBQzdCLFFBQVEsR0FBRyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsZ0JBQWdCLEdBQUc7SUFDaEMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxRQUFRLEdBQUc7SUFDeEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxF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Q0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDbEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUN0RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUM3QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztB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QUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzNDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLFNBQVMsR0FBRztJQUN6QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDL0IsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDL0IsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsVUFBVSxHQUFHO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsR0FBRztJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3hELHdCQUF3QixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDO0lBQ3pELHFCQUFxQjtJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQztJQUNyRCxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEIsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUNqQixJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2xCLElBQUksUUFBUSxFQUFFLENBQUM7SUFDZixJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ2YsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUNmLElBQUksU0FBUyxFQUFFLENBQUM7SUFDaEIsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3hCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztJQUMxQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ2QsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUNuQixJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUN0QjtJQUNBLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUMsQ0FBQztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQztJQUMzQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLENBQUM7SUFDdEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDL0MsSUFBSSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdEMsSUFBSSxRQUFRO0lBQ1osUUFBUSxNQUFNO0lBQ2QsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixRQUFRLE1BQU0sR0FBRyxTQUFTO0lBQzFCLFFBQVEsTUFBTSxHQUFHLE9BQU87SUFDeEIsUUFBUSxNQUFNLEdBQUcsTUFBTTtJQUN2QixLQUFLLENBQUM7SUFDTixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxlQUFlLENBQUMsQ0FBQztJQUNwRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0EsSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDLENBQUM7QUFDRjtJQUNBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsSUFBSSxvQkFBb0IsR0FBRyxTQUFTLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDdkg7SUFDQSxJQUFJLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNCO0lBQ0EsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDakM7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUU7SUFDekIsUUFBUSxPQUFPLENBQUMsQ0FBQyxPQUFPO0lBQ3hCLFlBQVksQ0FBQyxDQUFDLFNBQVM7SUFDdkIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRO0lBQzFCLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDNUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPO0lBQ2pDLDRCQUE0QixDQUFDLENBQUMsU0FBUztJQUN2QyxnQ0FBZ0MsR0FBRztJQUNuQyxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsNkJBQTZCO0lBQzdCLDRCQUE0QixDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNuRCx5QkFBeUI7SUFDekIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLEdBQUc7SUFDdkIsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3JDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMxQixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsT0FBTyxDQUFDLENBQUMsRUFBRTtJQUN4QixRQUFRLE9BQU87SUFDZixZQUFZLEdBQUcsQ0FBQyxDQUFDLFVBQVU7SUFDM0IsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQy9CLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5QixhQUFhO0lBQ2IsWUFBWSxHQUFHLENBQUMsQ0FBQyxRQUFRO0lBQ3pCLGdCQUFnQixHQUFHO0lBQ25CLGdCQUFnQixDQUFDLENBQUMsT0FBTztJQUN6QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDbkMsb0JBQW9CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsT0FBTztJQUNiLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDWixZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNqRCxZQUFZO0lBQ1osZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM1QixhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxRQUFRLENBQUMsQ0FBQyxTQUFTO0lBQ25CLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU87SUFDekIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUMxQyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDdkMscUJBQXFCO0lBQ3JCLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQ3ZDLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0lBQ0EsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtJQUN0QixZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0lBQ3BDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzVDLHdCQUF3QjtJQUN4Qiw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsNEJBQTRCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6Qyx5QkFBeUI7SUFDekI7SUFDQSx3QkFBd0I7SUFDeEIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDM0MseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM1Qyx3QkFBd0I7SUFDeEIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDM0MseUJBQXlCO0lBQ3pCO0lBQ0Esd0JBQXdCO0lBQ3hCLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSw0QkFBNEIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3ZDLG9CQUFvQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQzVDLHdCQUF3QjtJQUN4Qiw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEUsNEJBQTRCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6Qyx5QkFBeUI7SUFDekI7SUFDQSx3QkFBd0I7SUFDeEIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekMseUJBQXlCO0lBQ3pCLHFCQUFxQjtJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUM1Qyx3QkFBd0I7SUFDeEIsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRSw0QkFBNEIsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekMseUJBQXlCO0lBQ3pCO0lBQ0Esd0JBQXdCO0lBQ3hCLDRCQUE0QixHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsNEJBQTRCLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRSw0QkFBNEIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLHlCQUF5QjtJQUN6QixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQixTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUNoQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDcEMsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDbkMsb0JBQW9CLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqQyxvQkFBb0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGlCQUFpQjtJQUNqQjtJQUNBLGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3BDLGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDakMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQTtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQztBQUMvQztJQUNBLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QztJQUNBLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUN0QjtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDMUQ7QUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLO0lBQzVCLGdCQUFnQixDQUFDLENBQUMsV0FBVztJQUM3QixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDbkMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ2pDLGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEUsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN0RSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQjtJQUNBLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RDtJQUNBLEtBQUssQ0FBQztBQUNOO0lBQ0EsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksY0FBYyxHQUFHLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDaEY7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzVDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN2QjtJQUNBLElBQUksU0FBUyxhQUFhLEdBQUc7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVc7SUFDbEMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPO0lBQ3pCLG9CQUFvQixDQUFDLENBQUMsT0FBTztJQUM3Qix3QkFBd0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDaEQsd0JBQXdCLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQjtJQUNyQixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7SUFDMUMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsUUFBUTtJQUMxQixvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDM0Msb0JBQW9CLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQzNDLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVE7SUFDMUIsb0JBQW9CLE1BQU07SUFDMUIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ25ELHlCQUF5QjtJQUN6Qix3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVE7SUFDMUIsb0JBQW9CLE1BQU07SUFDMUIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsNEJBQTRCLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO0lBQ25ELHlCQUF5QjtJQUN6Qix3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDdEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsT0FBTztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLFNBQVM7SUFDM0Isb0JBQW9CLENBQUMsQ0FBQyxRQUFRO0lBQzlCLHdCQUF3QixDQUFDLENBQUMsT0FBTztJQUNqQyw0QkFBNEIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDakQsNEJBQTRCLENBQUMsQ0FBQyxTQUFTO0lBQ3ZDLGdDQUFnQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUN0RCxnQ0FBZ0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsNkJBQTZCO0lBQzdCLHlCQUF5QjtJQUN6Qix3QkFBd0IsQ0FBQztJQUN6Qix3QkFBd0IsQ0FBQztJQUN6QixxQkFBcUI7SUFDckIsb0JBQW9CLENBQUMsQ0FBQyxPQUFPO0lBQzdCLHdCQUF3QixDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUM5Qyx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7SUFDeEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7SUFDbEMsYUFBYTtJQUNiLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxpQkFBaUIsR0FBRztJQUNqQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFF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QyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVELGdCQUFnQjtJQUNoQixvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25GLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqRCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEcsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDaEUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7QUFDaEU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0lBQ2pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsZUFBZSxDQUFDLENBQUM7SUFDL0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6RixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxTQUFTLENBQUM7SUFDL0QsWUFBWSxDQUFDLENBQUMsSUFB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QyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkYsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDbEQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvRCxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDbEQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvRCxvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsb0JBQW9CO0lBQ3BCLHdCQUF3QixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekYsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEMscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLFdBQVcsQ0FBQztJQUM3RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO0FBQzdEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFD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QyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lB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QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQzVELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFD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QUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxXQUFXLENBQUM7SUFDN0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZ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RyxDQUFDO0lBQ2hFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEYsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENB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LE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsS0FBSyxD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QUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUN6QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtBQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQztJQUN6RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDakY7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztBQUNqRDtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0FBQ0E7SUFDQSxJQUFJLFNBQVMsbUJBQW1CLEdBQUc7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7QUFDN0U7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0FBQ3pEO0lBQ0EsU0FBUyxD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QUFFLENBQUM7SUFDbkQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0lBQzlCLFFBQVEsV0FBVyxFQUFFLENBQUM7SUFDdEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxD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QUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxDQUFDO0lBQ3BELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLFFBQVEsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNyRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsYUFBYSxHQUFHO0lBQzdCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzVFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEM7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMs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Qy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUMxQixRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEIsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxxQkFBcUIsR0FBRztJQUNyQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDbkUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUU7SUFDbEQsUUFBUSxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9FLFFB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LEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFB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QUFDdkQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEM7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUYsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLFNBQVM7QUFDVDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztBQUM1QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkYsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLHNCQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QixJQUFJLG1CQUFtQixFQUFFLENBQUM7QUFDMUI7SUFDQSxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQ3JCLElBQUksY0FBYyxFQUFFLENBQUM7QUFDckI7SUFDQSxJQUFJLGFBQWEsRUFBRSxDQUFDO0lBQ3BCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztJQUN2QixJQUFJLGVBQWUsRUFBRSxDQUFDO0FBQ3RCO0FBQ0E7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0IsUUFBUSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBLElBQUksMkJBQTJCLEVBQUUsQ0FBQztJQUNsQyxJQUFJLHdCQUF3QixFQUFFLENBQUM7QUFDL0I7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0IsUUFBUSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvQztJQUNBLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDLENBQUM7SUFDakQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDO0lBQ2xELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsc0JBQXNCLENBQUMsQ0FBQztJQUMzRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLHlCQUF5QixDQUFDLENBQUM7SUFDOUQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLENBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLENBQUM7QUFDekQ7SUFDQTtBQUNBO0lBQ0EsQ0FBQyxDQUFDO0FBQ0Y7SUFDQSxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDeEI7SUFDQSxNQUFNLFFBQVEsRUFBRSxTQUFTLENBQUM7SUFDMUIsTUFBTSxPQUFPLEVBQUUsUUFBUSxDQUFDO0lBQ3hCLE1BQU0sUUFBUSxFQUFFLFNBQVMsQ0FBQztJQUMxQixNQUFNLFFBQVEsRUFBRSxTQUFTLENBQUM7SUFDMUIsTUFBTSxVQUFVLEVBQUUsdUJBQXVCLENBQUM7SUFDMUMsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDO0lBQzdCLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUMzQixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDM0IsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0lBQ3JDLE1BQU0sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQzNFO0lBQ0E7QUFDQTtJQUNBLElBQUksY0FBYyxHQUFHLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7QUFDN0Q7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxVQUFVLENBQUM7QUFDekM7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLE1BQU0sQ0FBQztBQUM5QztJQUNBLElBQUksTUFBTSxDQUFDLEdBQUcsbUdBQW1HLENBQUM7SUFDbEgsSUFBSSxNQUFNLENBQUMsR0FBRyxtRUFBbUUsQ0FBQztBQUNsRjtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsSUFBSSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDdkIsSUFBSSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUMvQjtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkIsSUFBSSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUM7QUFDdkI7QUFDQTtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLElBQUksTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLElBQUksTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsSUFBSSxVQUFVLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsSUFBSSxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsSUFBSSxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxLQUFLLENBQUMsQ0FBQztJQUNQLElBQUksTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7SUFDQSxJQUFJLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDaEUsWUFBWSxDQUFDLENBQUMsSUFBSTtJQUNsQixnQkFBZ0IsS0FBSztJQUNyQixnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDaEMsZ0JBQWdCLEdBQUc7SUFDbkIsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO0lBQ2hDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxhQUFhO0lBQ2IsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxRQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEMsS0FBSztJQUNMLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BELElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksYUFBYSxDQUFDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3BELElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksYUFBYSxDQUFDLG1CQUFtQixFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDaEUsSUFBSSxhQUFhLENBQUMsbUJBQW1CLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUNoRTtJQUNBLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZGLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0YsSUFBSSxhQUFhLENBQUMsTUFBTSxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0lBQzFHLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNuRyxJQUFJLGFBQWEsQ0FBQyxNQUFNLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztBQUM5RztBQUNBO0lBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDN0IsUUFBUSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHO0lBQ2xCLFFBQVEsb0hBQW9IO0lBQzVILFFBQVEsb0hBQW9IO0lBQzVILFFBQVEsRUFBRTtJQUNWLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSztJQUMvQixRQUFRO0lBQ1IsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUN2RSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQ3ZFLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDdkUsU0FBUztJQUNULEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRztJQUNuQixRQUFRLEVBQUU7SUFDVixRQUFRLEVBQUU7SUFDVixRQUFRLEVBQUU7SUFDVixLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDaEMsUUFBUTtJQUNSLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDeEUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUN4RSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUc7SUFDbEIsUUFBUTtJQUNSLFlBQVksbUhBQW1IO0lBQy9ILFlBQVksb0hBQW9IO0lBQ2hJLFNBQVMsQ0FBQztJQUNWLFlBQVksb0hBQW9IO0lBQ2hJLFlBQVksbUhBQW1IO0lBQy9ILFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDL0IsUUFBUTtJQUNSLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDMUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDMUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUc7SUFDbkIsUUFBUTtJQUNSLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDaEMsUUFBUTtJQUNSLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDM0UsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDM0UsWUFBWSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMvQixRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzdELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzdELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzdELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzdELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxLQUFLLENBQUMsQ0FBQztBQUNQO0lBQ0EsSUFBSSxNQUFNLGNBQWMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pDLFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxLQUFLLENBQUMsQ0FBQztBQUNQO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDOUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekU7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSTtJQUNsQixnQkFBZ0IsU0FBUyxHQUFHLE9BQU87SUFDbkMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQy9CLGdCQUFnQixNQUFNO0lBQ3RCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxJQUFJO0lBQ2xCLGdCQUFnQixTQUFTLEdBQUcsUUFBUTtJQUNwQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUNoQyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsSUFBSTtJQUNsQixnQkFBZ0IsU0FBUyxHQUFHLE9BQU87SUFDbkMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxJQUFJO0lBQ2xCLGdCQUFnQixTQUFTLEdBQUcsT0FBTztJQUNuQyxnQkFBZ0IsTUFBTTtJQUN0QixnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELGFBQWE7SUFDYixTQUFTLENBQUM7SUFDVixLQUFLO0lBQ0wsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUNuQjtJQUNBLElBQUksTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3RTtJQUNBLElBQUksTUFBTSxZQUFZLEdBQUcsbUJBQW1CLENBQUM7SUFDN0MsSUFBSSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDL0MsSUFBSSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkMsSUFBSSxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RixJQUFJLE1BQU0sU0FBUyxHQUFHLFlBQVksR0FBRyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELElBQUksTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDN0IsSUFBSSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQ3JELElBQUksTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUM7QUFDcEM7SUFDQSxJQUFJLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDO0FBQzVDO0FBQ0E7SUFDQSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUc7SUFDN0IsUUFBUSxJQUFJLEVBQUUsSUFBSTtJQUNsQixRQUFRLElBQUksRUFBRSxJQUFJO0lBQ2xCLFFBQVEsR0FBRyxFQUFFLEdBQUc7SUFDaEIsUUFBUSxHQUFHLEVBQUUsR0FBRztJQUNoQixRQUFRLE1BQU0sRUFBRSxNQUFNO0lBQ3RCLFFBQVEsT0FBTyxFQUFFLE9BQU87SUFDeEIsUUFBUSxJQUFJLEVBQUUsSUFBSTtJQUNsQixRQUFRLE1BQU0sRUFBRSxNQUFNO0lBQ3RCLFFBQVEsT0FBTyxFQUFFLE9BQU87SUFDeEIsUUFBUSxJQUFJLEVBQUUsSUFBSTtJQUNsQixRQUFRLEVBQUUsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7SUFDcEMsUUFBUSxFQUFFLEVBQUUsRUFBRTtJQUNkLFFBQVEsS0FBSyxFQUFFLEtBQUs7SUFDcEIsUUFBUSxDQUFDLEVBQUUsQ0FBQztJQUNaLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDWixRQUFRLFFBQVEsRUFBRSxRQUFRO0lBQzFCLFFBQVEsUUFBUSxFQUFFLFFBQVE7SUFDMUIsS0FBSyxDQUFDO0FBQ047QUFDQTtJQUNBLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQ3ZCLFlBQVksSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDMUIsZ0JBQWdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLGdCQUFnQixHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzlCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUIsYUFBYTtJQUNiLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDckIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDdkIsUUFBUSxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDdkIsWUFBWSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMxQixnQkFBZ0IsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM5QixhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUIsYUFBYTtJQUNiLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEIsU0FBUztJQUNULFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGNBQWMsR0FBRztJQUM5QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkYsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBLElBQUksU0FBUyxtQkFBbUIsR0FBRztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7QUFDQTtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUM7QUFDdkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUM5QztJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFN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LENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksV0FBVyxFQUFFLENBQUM7QUFDbEI7SUFDQSxJQUFJLFNBQVMsWUFBWSxHQUFHO0lBQzVCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDckQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtBQUNBO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztJQUNMLElBQUksWUFBWSxFQUFFLENBQUM7QUFDbkI7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7QUFDOUI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0FBQ0E7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDMUQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQztBQUMzRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3RELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQ3JCO0FBQ0E7SUFDQSxJQUFJLFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRixRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QyxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUQ7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7SUFDTCxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ2Y7SUFDQSxJQUFJLFNBQVMsZUFBZSxHQUFHO0lBQy9CLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDNUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxD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LENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQzVFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFN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QUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsRUFB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QyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BFLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLGdCQUFnQixDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEMsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO0FBQ3hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDM0Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxF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QVUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsQ0FBQztJQUNoQyxNQUFNO0lBQ04sQ0FBQztBQUNEO0lBQ0EsU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtJQUN0QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ3RDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRTtJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLO0lBQ0wsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUNuQixZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENB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QyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2RDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQztJQUNBLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRztJQUM5QixZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsWUFBWSxDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekMsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzNDLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0lBQ2hFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEcsUUFBUSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0Es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SSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJ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S0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEUsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsT0FBTyxJQUFJLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ1YsUUFBUSxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxLQUFLO0FBQ0w7SUFDQSxDQUFDO0FBQ0Q7SUFDQSxNQUFNLFVBQVUsQ0FBQztBQUNqQjtJQUNBLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQy9CLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMs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LEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLEtBQUs7QUFDTDtJQUNBLENBQUM7QUFDRDtJQUNBLE1BQU0sU0FBUyxDQUFDO0FBQ2hCO0lBQ0EsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUU7SUFDcEQsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkI7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlELFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRSxRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksUUFBUSxFQUFFO0lBQ3RCLFlBQVksSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4RixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEcsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUMxQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDekIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN2QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FB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USxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzlFLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxZQUFZLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEUsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsWUFBWSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxDQUFDLEVBQUU7SUFDZixRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUN4QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDakIsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25CLFFBQVEsSUFBSSxRQUFRLENBQUM7SUFDckIsUUFBUSxJQUFJLEdBQUcsQ0FBQztJQUNoQixRQUFRLEdBQUc7SUFDWCxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFlBQVksUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsU0FBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQztJQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMs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QUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDN0Q7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUM1QjtJQUNBLFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsZUFBZSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM3SDtJQUNBLFFBQVEsSUFBSSxPQUFPLENBQUM7SUFDcEIsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQzFDLFlBQVksT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENB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QyxDQUFDO0lBQ3hGLFlBQVksTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsWUFBWSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRDtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFD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QyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakUsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEU7QUFDQTtJQUNBLFFBQVEsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ2hKO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDNUI7SUFDQSxRQUFRLFFB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RUFBRSxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDN0IsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRyxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRyxJQUFJLEtBQUss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LElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN2QyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDbEQsUUFBUSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3BDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDM0IsWUFBWSxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQy9CLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDcEQsUUFBUSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3BDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ25ELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM5QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDdkMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNsRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFB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QUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELEtBQUs7SUFDTCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbkYsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDekQsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDN0M7SUFDQSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2RCxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN2RDtBQUNBO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzVELElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDNUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkQ7SUFDQSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEQsSUFBSSxPQUFPLENBQUMs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LENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksSUFBSSxPQUFPLENBQUM7SUFDaEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0I7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFD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QzdELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzFELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzFELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzVELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7SUFDakQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDN0QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMs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LEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEIsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFCO0lBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0E7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLElBQUksTUFBTSwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVB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RyxNQUFNWCxhQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsQztJQUNBLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsSUFBSSxJQUFJLElBQUksR0FBRztJQUNmLFFBQVEsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0lBQy9CLFFBQVEsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ3pCLFFBQVEsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQzdCO0lBQ0EsUUFBUSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN0RDtJQUNBLFFBQVEsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDcEQsUUFBUSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN0RCxRQUFRLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ3JELEtBQUssQ0FBQztBQUNOO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUcsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJ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QztJQUNBLElBQUksSUFBSSxJQUFJLEdBQUc7SUFDZixRQUFRLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtJQUMvQixRQUFRLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSTtJQUN6QixRQUFRLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztJQUM3QixRQUFRLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztBQUN6QjtJQUNBLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN0QztJQUNBLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRDtJQUNBLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDdEM7SUFDQSxRQUFRLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hDO0lBQ0EsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0QyxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUks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QyxJQUFJLE1BQU0sZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMs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LENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsU0FBUztBQUNUO0lBQ0EsUUFBUSxTQUFTLHdCQUF3QixDQUFDLEVBQUUsRUFBRTtJQUM5QyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUs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Q0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsWUFBWSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNEO0lBQ0E7SUFDQSxZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxZQUFZLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLFNBQVM7SUFDVCxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtJQUNoRCxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUlBLFdBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxZQUFZLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFV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LEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FB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QkFDekQsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxNQUFNLElBQUksSUFBSSxHQUFHLE1BQU0sSUFBSSxJQUFJLElBQUksTUFBTSxFQUFFO2lCQUMxQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQzFELE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztpQkFDbEUsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFlBQVcsTUFBTTtpQkFDTCxJQUFJLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsS0FBSyxLQUFLLEVBQUUsS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztpQkFDbEYsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUMxRCxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUs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QUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHO0lBQ3BGLE9BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztJQUNwRixPQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRixLQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7V0FDMUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7V0FDMUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQSxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsT0FBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakIsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakI7SUFDQSxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEIsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN4QyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzFDLE9BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDMUMsT0FBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMxQyxPQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDakMsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QixPQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDN0IsT0FBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLE9BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNqQyxPQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFD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QUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDaEI7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDdkI7SUFDQSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsRUFBRTtJQUNmLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUM1QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFO0lBQ2YsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDO0lBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEI7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUks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QUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3hDO0lBQ0EsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUYsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtJQUNyQixRQUFRLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFO0lBQ3JCLFFBQVEsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRTtJQUN2QixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEUsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJQSxXQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hFO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ25FO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3RDO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEI7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQzdCLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUMzQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxNQUFNLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEUsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxJQUFJQSxXQUFTLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLFFBQVEsSUFBSSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2hFO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzdFO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUI7SUFDQTtJQUNBLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QjtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7SUFDdEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTtJQUMzQyxZQUFZLElBQUlBLFdBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekY7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3JELFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RixZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsZ0JBQWdC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LENBQUM7SUFDZCxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxTQUFTLEVBQUU7SUFDWCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUMxRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLEdBQUcsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxZQUFZLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZGLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFD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WUFBWSxPQUFPLFVBQVUsQ0FBQztJQUM5QixTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLGtCQUFrQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtJQUM5QyxZQUFZLElBQUlBLFdBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRyxRQUFRLElBQUksVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNyRDtJQUNBO0lBQ0E7SUFDQSxRQUFRLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsWUFBWSxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxVQUFVLENBQUM7SUFDMUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxLQUFLLEdBQUc7SUFDWixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDM0Is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VUFBVSxHQUFHLENBQUMsRUFBRTtJQUMzRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUNuRSxTQUFTO0lBQ1QsUUFBUSxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUU7SUFDM0QsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDbkUsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxNQUFNLEdBQUc7SUFDNUI7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQzFFLFFBQVEsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxRQUFRLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsUUFBUSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxRQUFRLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0MsUUFBUSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsVUFBVSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3QztJQUNBO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFB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QUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQzFELFlBQVksTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMxRCxZQUFZLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQy9EO0lBQ0E7SUFDQSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNoRSxZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUM7QUFDL0Q7SUFDQSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBO0lBQ0E7SUFDQSxRQUFRLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsRCxZQUFZLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbEM7SUFDQSxZQUFZLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxF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TUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BDLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEgsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFlBQVksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN0QyxZQUFZLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25IO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0lBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkQsZ0JBQWdCLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztBQUM3RDtJQUNBLGdCQUFnQixNQUFNLElBQUksR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RSxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckU7SUFDQSxnQkFBZ0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvRCxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsQztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0E7SUFDQSxZQUFZLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztBQUN4QjtJQUNBLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNyRixZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztJQUN4QixZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUN6QixZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDdEY7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0E7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFlBQVksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBLFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsWUFBWSxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcs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QyxFQUFFLEVBQUU7SUFDN0MsWUFBWSxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELFNBQVM7QUFDVDtJQUNBLFFBQVEsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckI7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN2QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0QsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUc7SUFDOUIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMxQyxZQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFO0lBQ3BCLFlBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQ25ELFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDM0MsZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsYUFBYTtJQUNiLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUM5QixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25ELFlBQVksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxZQUFZLE9BQU8sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQTtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25GO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUQsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzRTtJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDM0MsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDO0lBQzNDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25ELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUlBLFdBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNsRztJQUNBLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRCxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxRQUFRLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0MsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QztJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRSxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxRQUFRLEdBQUcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsUUFBUSxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsVUFBVSxHQUFHO0lBQzFCLFFBQVEsV0FBVyxDQUFDLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDMUY7SUFDQSxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1B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SUFDbEUsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRSxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQzdCLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0UsU0FBUztJQUNULFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUQsS0FBSztJQUNMLElBQUksTUFBTSxDQUFDLEdBQUcsNEJBQTRCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUMzRSxJQUFJLElBQUksTUFBTSxFQUFFO0lBQ2hCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdkMsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsUUFB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QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLEdBQUcs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QUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEM7SUFDQSxJQUFJLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckQ7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0FBQ0Q7SUFDQSxTQUFTLFVBQVUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ3RELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEI7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNCO0lBQ0EsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkYsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkY7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0U7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEQ7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZHLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2RyxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakY7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEU7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDM0IsSUFBSSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QztJQUNBLElBQUksTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7QUFDRDtJQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDckQsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVMsVUFBVSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRTtJQUNsRCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsSUFBSSxDQUFDLEdBQUcs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RUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDLElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsSUFBSSxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksQ0FBQyxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixJQUFJLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEI7O0lDaEVBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTs7Ozs7Ozs7Ozs7SUNqQkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7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QUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakc7SUFDQSxZQUFZLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsWUFBWSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QyxZQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtJQUN4QyxZQUFZLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUs7QUFDTDtJQUNBLElBQUksNkJBQTZCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUNwRCxRQUFRLE1BQU0sY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNsQyxRQUFRLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDdEY7SUFDQSxRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyx1QkFBdUI7SUFDeEQsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxtQ0FBbUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7SUFDakUsUUFBUSxNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDbEMsUUFBUSxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuRjtJQUNBLFFBQVEsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLDZCQUE2QjtJQUM5RCxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsY0FBYyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM5QyxLQUFLO0lBQ0w7O0lDN01BO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQVVBO0lBQ08sTUFBTSxXQUFXLENBQUM7SUFDekIsSUFBSSxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDbEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRTtJQUN4QyxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ25DLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxtRkFBbUYsQ0FBQyxDQUFDO0lBQ2pILFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUM7SUFDaEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRztJQUMxQyxZQUFZLENBQUMsVUFBVSxFQUFFLEtBQUssS0FBSyxVQUFVLEtBQUssU0FBUyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4RyxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLEtBQUs7QUFDTDtJQUNBLElBQUksYUFBYSxHQUFHO0lBQ3BCLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsS0FBSyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLFFBQVEsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLbkcsTUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RCxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJSyxXQUFTLENBQUMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BHO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzVDLFlBQVksTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqQyxZQUFZLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3hDO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRTtJQUN2RCxvQkFBb0IsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDaEksaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sVUFBVSxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzFDLFFBQVEsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlDLFFBQVEsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDMUQsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RSxRQUFRLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztJQUNMOztJQ25GQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUF1Q0E7QUFDQTtJQUNlLGVBQWUsV0FBVyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRTtJQUM1RixJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QztJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbkQsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTSxXQUFXLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFtQixDQUFDLENBQUM7SUFDOUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzNCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO0lBQ25GLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDbEUsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTXFHLGNBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ3JFO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQW1CLENBQUMsQ0FBQztJQUM5RyxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU0sVUFBVSxDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pHO0lBQ0E7SUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO0lBQ2hDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsQ0FBQyxDQUFDO0lBQ2xGLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM1QixJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO0lBQ0EsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDekIsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDekIsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNiO0lBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRztJQUNuQixRQUFRLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztJQUN6QixRQUFRLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVO0lBQ2hELEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxNQUFNLGdCQUFnQixHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDNUMsSUFBSSxJQUFJLGNBQWMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0FBQ3hDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sb0JBQW9CLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDdkQsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUxRyxNQUFJLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUksUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQztBQUNqRDtJQUNBLElBQUksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUN4RSxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNkVBQTZFLENBQUMsQ0FBQztJQUN2RyxLQUFLO0lBQ0wsSUFBSSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFO0lBQ3ZDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0lBQ3BGLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3BELEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckQsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDO0FBQ25DO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTSxFQUFFLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUMsSUFBSSxNQUFNLEVBQUUsR0FBRyxTQUFTLEVBQUUsQ0FBQztJQUMzQixJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5QyxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQzNCLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzlDLElBQUksTUFBTSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLElBQUksTUFBTSxhQUFhLEVBQUUsQ0FBQztBQUMxQjtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekIsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUN6QjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQztBQUNiO0lBQ0EsSUFBSSxlQUFlLG9CQUFvQixDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQzFEO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuRCxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsU0FBUztBQUNUO0lBQ0E7SUFDQSxRQUFRLE1BQU0sYUFBYSxHQUFHLElBQUksdUJBQXVCLENBQUMsRUFBRSxFQUFFLDJCQUEyQixFQUFFLDJCQUEyQixFQUFFLGlDQUFpQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ25LO0lBQ0EsUUFBUSxNQUFNLEtBQUssR0FBRyxNQUFNMEYsV0FBd0IsQ0FBQyxNQUFNLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEQsWUFBWSxJQUFJLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO0lBQzdELGdCQUFnQixNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLGFBQWE7SUFDYixZQUFZLE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUM7QUFDaEg7SUFDQSxZQUFZLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQ2xELFlBQVksY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzlDLFNBQVM7QUFDVDtJQUNBLFFBQVEsU0FBUyxjQUFjLEdBQUc7SUFDbEMsWUFBWSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDekIsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDNUIsWUFBWSxPQUFPLENBQUMsQ0FBQztJQUNyQixTQUFTO0FBQ1Q7SUFDQSxRQUFRLFNBQVMsTUFBTSxHQUFHO0lBQzFCLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzFCO0lBQ0EsWUFBWSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakUsWUFBWSxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQzFCLFlBQVksTUFBTSxTQUFTLEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELFlBQVksTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEQ7SUFDQSxZQUFZLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLFFBQVEsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFlBQVksUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO0lBQzdDLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUMzQyxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRSxnQkFBZ0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLGdCQUFnQixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzlCLGFBQWE7SUFDYixZQUFZLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxDQUFDLENBQUM7SUFDakIsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLGFBQWEsR0FBRztJQUNuQyxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzRCxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3pHO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUMzRixRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMvRixRQUFRLE1BQU0sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkYsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pFLFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG9CQUFvQixFQUFFLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakYsUUFBUSxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FB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QUFVLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDM0M7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxZQUFZLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsc0JBQXNCLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztBQUMzSDtJQUNBLFlBQVksSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pLLFlBQVksV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN0RyxZQUFZLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQztJQUNBLFlBQVksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ2pCO0lBQ0EsUUFBUSxTQUFTLFVBQVUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFO0lBQzNDLFlBQVksSUFBSSxPQUFPLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxXQUFXLEVBQUU7SUFDM0QsZ0JBQWdCLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDekMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDekQsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQzNDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLGFBQWEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRTtJQUN0RCxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLGFBQWE7QUFDYjtJQUNBLFlBQVksUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLHdCQUF3QixDQUFDLE1BQU0sRUFBRTtJQUNwRCxRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLHdCQUF3QixDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxJQUFJLElBQUksR0FBRyxJQUFJQSxXQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNoRSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDdEM7SUFDQSxZQUFZLE1BQU0sT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN4QyxTQUFTO0lBQ1QsUUFBUSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGVBQWUsU0FBUyxDQUFDLE1BQU0sRUFBRTtJQUNyQyxRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLFFBQVEsSUFBSSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkc7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxPQUFPLENBQUMsTUFBTSxFQUFFO0lBQ25DO0lBQ0E7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkQsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLFdBQVcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDO0FBQzVDO0lBQ0E7SUFDQSxRQUFRLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRTtJQUNoRSxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztJQUNwRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0saUJBQWlCLENBQUMsTUFBTSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxpQkFBaUIsQ0FBQyxNQUFNLEVBQUU7SUFDN0MsUUFBUSxNQUFNLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RSxRQUFRLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMvQztJQUNBO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hEO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELFFBQVEsTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekQ7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQztJQUNqQixRQUFRLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakM7SUFDQSxRQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDNUUsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxPQUFPLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtJQUN6QyxRQUFRLE1BQU0sQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsT0FBTyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsV0FBVyxHQUFHO0lBQzNCLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUN4QixRQUFRLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6RSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0EsUUFBUSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRTtJQUMxQyxZQUFZLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBSSxHQUFHLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzNCLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNqRCxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUM3QyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEQsb0JBQW9CLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLElBQUksQ0FBQztJQUNsRSxpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekMsYUFBYTtJQUNiLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7SUFDekIsUUFBUSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDO0lBQ0E7SUFDQSxRQUFRLElBQUksVUFBVSxHQUFHLDZFQUE2RSxDQUFDO0lBQ3ZHLFFBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxTQUFTLEdBQUc7SUFDekIsUUFBUSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFNBQVMsR0FBRztJQUN6QixRQUFRLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUMxQztJQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyw0RUFBNEUsQ0FBQyxDQUFDO0FBQzdHO0lBQ0EsUUFBUSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwRCxLQUFLO0lBQ0w7O0lDN2lCQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUE2QkE7SUFDQSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDbkM7QUFDQTtJQUNlLGVBQWUsV0FBVyxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUMxRixJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdEQsSUFBSSxNQUFNO0lBQ1YsUUFBUSxFQUFFLEVBQUUsTUFBTTtJQUNsQixRQUFRLFFBQVEsRUFBRSxZQUFZO0lBQzlCLEtBQUssR0FBRyxNQUFNK0UsV0FBd0IsQ0FBQyxlQUFlLEVBQUUsTUFBTSxFQUFFLENBQW1CLENBQUMsQ0FBQztJQUNyRixJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU1JLFVBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xFO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU07SUFDVixRQUFRLEVBQUUsRUFBRSxNQUFNO0lBQ2xCLFFBQVEsUUFBUSxFQUFFLFlBQVk7SUFDOUIsS0FBSyxHQUFHLE1BQU1KLFdBQXdCLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFtQixDQUFDLENBQUM7QUFDbEY7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLE1BQU1LLFlBQW9CLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdEY7SUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxrQkFBa0IsRUFBRTtJQUNoRCxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUN4RCxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pILEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM3QjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUIsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLElBQUksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDMUM7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDcEQsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUMzRCxJQUFJLE1BQU0sV0FBVyxHQUFHLE1BQU1DLFdBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCO0lBQ0E7SUFDQTtJQUNBLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hDLElBQUksTUFBTSxtQkFBbUIsR0FBRyxJQUFJckYsV0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDckU7SUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNyQixJQUFJLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUN6QixJQUFJLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUN6QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDdkI7SUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN4QixJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNuQjtJQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUseUJBQXlCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN6RixJQUFJLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztBQUMvQjtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLG1CQUFtQixFQUFFLHNCQUFzQixDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQzFKLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQzlELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9FO0lBQ0EsSUFBSSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RyxJQUFJLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlHLElBQUksTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUc7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUM3RCxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxXQUFXLENBQUMsSUFBSUEsV0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEYsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksV0FBVyxDQUFDLElBQUlBLFdBQVMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3BGLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwRjtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUM1SCxJQUFJLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUgsSUFBSSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzVIO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN4RixJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUMzRDtJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksR0FBRyxFQUFFLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xIO0lBQ0E7SUFDQSxJQUFJLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDdkM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0lBQ0EsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0lBQ0EsSUFBSSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckIsSUFBSSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckIsSUFBSSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDckIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDakMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBQ25CO0lBQ0EsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDOUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxPQUFPLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDMUIsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3ZDO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLE1BQU0sRUFBRSxDQUFDO0lBQ25CLElBQUksSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUN2QztJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUNuQjtJQUNBLElBQUksT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzFCLElBQUksT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzFCLElBQUksT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzFCLElBQUksT0FBTyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzFCLElB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Q0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzVELFlBQVksV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkY7SUFDQTtJQUNBLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELFlBQVksV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlGLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELFlBQVksV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlGLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzNELFlBQVksV0FBVyxDQUFDLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzlGO0lBQ0E7SUFDQSxZQUFZLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO0lBQzNELGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDdkUsYUFBYTtJQUNiLFlBQVksSUFBSSxXQUFXLENB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LElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFO0FBQ0E7SUFDQTtJQUNBLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRDtJQUNBLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRDtJQUNBLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRDtJQUNBLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkUsZ0JBQWdCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRTtBQUNBO0lBQ0EsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMzQztJQUNBLGdCQUFnQixPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxH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QyxTQUFTLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFFBQVEsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUMvRDtJQUNBO0lBQ0E7SUFDQTtJQUNBLFFBQVEsVUFBVSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEQsUUFBUSxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUM3QixRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNELFNBQVM7QUFDVDtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFDN0IsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzRCxTQUFTO0FBQ1Q7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDO0lBQzdCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QztJQUNBO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN0QixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEMsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxTQUFTO0FBQ1Q7SUFDQTtJQUNBLFFBQVEsS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDdEIsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDM0IsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsU0FBUztBQUNUO0lBQ0E7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQzNCLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUMzQjtJQUNBO0lBQ0EsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3RCxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQTtJQUNBLFFBQVEsVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEY7SUFDQTtJQUNBLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLFFBQVEsV0FBVyxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9FO0lBQ0E7SUFDQSxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUcsUUFBUSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRyxRQUFRLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFHLFFBQVEsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUc7SUFDQTtJQUNBLFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsUUFBUSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RSxRQUFRLEtBQUssQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUUsUUFBUSxLQUFLLENBQUMs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QixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RixvQkFBb0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0YsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxvQkFBb0IsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxvQkFBb0IsV0FBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxvQkFBb0IsV0FB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QUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEYsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUywyQkFBMkIsR0FBRztJQUMzQztJQUNBLFFBQVEsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQztJQUNoQyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsU0FBUztJQUNULFFBQVEsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM5QztJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsUUFBUSxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsV0FBVyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqSDtJQUNBO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxJ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QUFPLEdBQUcsQ0FBQztBQUNmO0lBQ0EsQ0FBQztBQUNEO0lBQ0EsU0FBUyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtJQUNqQyxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNuQixJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QztJQUNBLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN4QyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksR0FBRyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO0lBQ2pELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDM0MsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO0lBQzNDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7QUFDRDtJQUNBLFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUMvQyxJQUFJLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7QUFDRDtJQUNBLFNBQVMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUNuRCxJQUFJLE9BQU8sdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0FBQ0Q7SUFDQSxTQUFTLG1CQUFtQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFDM0MsSUFBSSxPQUFPLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUM3RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUM5RCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztJQUMvRCxXQUFXLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7QUFDRDtJQUNBLFNBQVMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFlBQVksRUFBRTtJQUNuRCxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcs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Q0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ2xCLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdkIsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekQsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RDtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCO0lBQ0E7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQTtJQUNBLElBQUksVUFBVSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUMzRDtJQUNBLElBQUksVUFBVSxDQUFDLEdBQUcsR0FBRyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ25DLElBQUksRUFBRSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2QyxRQUFRLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsUUFBUSxFQUFFLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUMzQixLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUMsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsSUFBSSxVQUFVLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztBQUNqRDtJQUNBLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsS0FB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LFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRTtJQUNBLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFDRDtJQUNBLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ2hFLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3RGO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxD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QUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRSxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDOUYsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzlGLElBQUksTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0SCxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0SCxJQUFJLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN0SCxJQUFJLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5QixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQTtJQUNBLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pFLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUN0QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFO0lBQ0EsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztJQUNqRSxJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDaEMsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9GLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwRjtJQUNBLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFO0lBQ3ZELElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7QUFDNUI7SUFDQSxJQUFJLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsS0FBSztJQUNMLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMxRSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3JGO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRSxJQUFJLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsSUFBSSxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7QUFDRDtJQUNBLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUM1RCxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDeEIsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsSUFBSSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUM7SUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0Q7SUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRTtJQUM1QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztBQUNEO0lBQ0EsZUFBZSxjQUFjLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3JFLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztBQUN4QjtJQUNBLElBQUksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFD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LEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbEMsSUFBSSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNkOztJQ3BsQkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBSUE7SUFDQSxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFLbkM7SUFDQSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakIsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztJQUMvQyxJQUFJLElBQUksR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0lBQ2UsZUFBZSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ2pFLElBQUksTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0MsSUFBSSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QztJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsSUFBZSxLQUFLLENBQUMsR0FBRztJQUN4QixJQUFlLEtBQUssQ0FBQyxHQUFHO0FBQ3hCO0lBQ0EsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDcEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxRQUFRLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztJQUNqRCxRQUFRLE1BQU0sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEUsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9GLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdGLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0QyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQjs7SUM1REE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==
+//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcmtqcy5qcyIsInNvdXJjZXMiOlsiLi4vbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9mYXN0ZmlsZS9zcmMvb3NmaWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9tZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9iaWdtZW1maWxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2Zhc3RmaWxlL3NyYy9mYXN0ZmlsZS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmluZmlsZXV0aWxzL3NyYy9iaW5maWxldXRpbHMuanMiLCIuLi9zcmMvY3VydmVzLmpzIiwiLi4vbm9kZV9tb2R1bGVzL25hbm9hc3NlcnQvaW5kZXguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi9hc2NpaS5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2Jhc2U2NC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL2hleC5qcyIsIi4uL25vZGVfbW9kdWxlcy9iNGEvbGliL3V0ZjguanMiLCIuLi9ub2RlX21vZHVsZXMvYjRhL2xpYi91dGYxNmxlLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2I0YS9icm93c2VyLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9ibGFrZTJiLmpzIiwiLi4vbm9kZV9tb2R1bGVzL2JsYWtlMmItd2FzbS9pbmRleC5qcyIsIi4uL3NyYy9taXNjLmpzIiwiLi4vc3JjL3prZXlfY29uc3RhbnRzLmpzIiwiLi4vc3JjL2ZmbG9ua19jb25zdGFudHMuanMiLCIuLi9zcmMvemtleV91dGlscy5qcyIsIi4uL3NyYy93dG5zX3V0aWxzLmpzIiwiLi4vc3JjL2dyb3RoMTZfcHJvdmUuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvY2lyY29tX3J1bnRpbWUvanMvd2l0bmVzc19jYWxjdWxhdG9yLmpzIiwiLi4vc3JjL3d0bnNfY2FsY3VsYXRlLmpzIiwiLi4vc3JjL2dyb3RoMTZfZnVsbHByb3ZlLmpzIiwiLi4vc3JjL2dyb3RoMTZfdmVyaWZ5LmpzIiwiLi4vc3JjL2dyb3RoMTZfZXhwb3J0c29saWRpdHljYWxsZGF0YS5qcyIsIi4uL3NyYy9ncm90aDE2LmpzIiwiLi4vc3JjL2tleXBhaXIuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfdXRpbHMuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfbmV3LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfaW1wb3J0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X3ZlcmlmeS5qcyIsIi4uL3NyYy9tcGNfYXBwbHlrZXkuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfY2hhbGxlbmdlX2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfYmVhY29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2NvbnRyaWJ1dGUuanMiLCIuLi9zcmMvcG93ZXJzb2Z0YXVfcHJlcGFyZXBoYXNlMi5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV90cnVuY2F0ZS5qcyIsIi4uL3NyYy9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3Bvd2Vyc29mdGF1LmpzIiwiLi4vc3JjL3IxY3NfcHJpbnQuanMiLCIuLi9ub2RlX21vZHVsZXMvcjFjc2ZpbGUvbm9kZV9tb2R1bGVzL2ZmamF2YXNjcmlwdC9idWlsZC9icm93c2VyLmVzbS5qcyIsIi4uL25vZGVfbW9kdWxlcy9AaWRlbjMvYmlnYXJyYXkvc3JjL2JpZ2FycmF5LmpzIiwiLi4vbm9kZV9tb2R1bGVzL3IxY3NmaWxlL3NyYy9yMWNzZmlsZS5qcyIsIi4uL3NyYy9yMWNzX2luZm8uanMiLCIuLi9zcmMvcjFjc19leHBvcnRfanNvbi5qcyIsIi4uL3NyYy9yMWNzLmpzIiwiLi4vc3JjL2xvYWRzeW1zLmpzIiwiLi4vc3JjL3d0bnNfZGVidWcuanMiLCIuLi9zcmMvd3Ruc19leHBvcnRfanNvbi5qcyIsIi4uL3NyYy93dG5zX2NoZWNrLmpzIiwiLi4vc3JjL3d0bnMuanMiLCIuLi9zcmMvYmlnYXJyYXkuanMiLCIuLi9zcmMvemtleV9uZXcuanMiLCIuLi9zcmMvemtleV9leHBvcnRfYmVsbG1hbi5qcyIsIi4uL3NyYy96a2V5X2ltcG9ydF9iZWxsbWFuLmpzIiwiLi4vc3JjL3prZXlfdmVyaWZ5X2Zyb21pbml0LmpzIiwiLi4vc3JjL3prZXlfdmVyaWZ5X2Zyb21yMWNzLmpzIiwiLi4vc3JjL3prZXlfY29udHJpYnV0ZS5qcyIsIi4uL3NyYy96a2V5X2JlYWNvbi5qcyIsIi4uL3NyYy96a2V5X2V4cG9ydF9qc29uLmpzIiwiLi4vc3JjL3prZXlfYmVsbG1hbl9jb250cmlidXRlLmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X3ZlcmlmaWNhdGlvbmtleS5qcyIsIi4uL3NyYy9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzIiwiLi4vc3JjL3prZXlfZXhwb3J0X3NvbGlkaXR5dmVyaWZpZXIuanMiLCIuLi9zcmMvemtleS5qcyIsIi4uL3NyYy9wbG9ua19zZXR1cC5qcyIsIi4uL3NyYy9wcm9vZi5qcyIsIi4uL25vZGVfbW9kdWxlcy9Abm9ibGUvaGFzaGVzL2VzbS9fYXNzZXJ0LmpzIiwiLi4vbm9kZV9tb2R1bGVzL0Bub2JsZS9oYXNoZXMvZXNtL191NjQuanMiLCIuLi9ub2RlX21vZHVsZXMvQG5vYmxlL2hhc2hlcy9lc20vdXRpbHMuanMiLCIuLi9ub2RlX21vZHVsZXMvQG5vYmxlL2hhc2hlcy9lc20vc2hhMy5qcyIsIi4uL3NyYy9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzIiwiLi4vc3JjL211bF96LmpzIiwiLi4vc3JjL3Bsb25rX2NvbnN0YW50cy5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL3BvbHlub21pYWwuanMiLCIuLi9zcmMvcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qcyIsIi4uL3NyYy9wbG9ua19wcm92ZS5qcyIsIi4uL3NyYy9wbG9ua19mdWxscHJvdmUuanMiLCIuLi9zcmMvcGxvbmtfdmVyaWZ5LmpzIiwiLi4vc3JjL3Bsb25rX2V4cG9ydHNvbGlkaXR5Y2FsbGRhdGEuanMiLCIuLi9zcmMvcGxvbmsuanMiLCIuLi9zcmMvcGxvbmtfZXF1YXRpb24uanMiLCIuLi9zcmMvcjFjc19jb25zdHJhaW50X3Byb2Nlc3Nvci5qcyIsIi4uL3NyYy9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzIiwiLi4vc3JjL2ZmbG9ua19zZXR1cC5qcyIsIi4uL3NyYy9mZmxvbmtfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX2Z1bGxfcHJvdmUuanMiLCIuLi9zcmMvZmZsb25rX3ZlcmlmeS5qcyIsIi4uL3NyYy9mZmxvbmtfZXhwb3J0X2NhbGxkYXRhLmpzIiwiLi4vc3JjL2ZmbG9uay5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgQmlnSW50ICovXG5jb25zdCBoZXhMZW4gPSBbIDAsIDEsIDIsIDIsIDMsIDMsIDMsIDMsIDQgLDQgLDQgLDQgLDQgLDQgLDQgLDRdO1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGUgPSBmcm9tU3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICBsZXQgYWNjID1CaWdJbnQoMCk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIGZvciAobGV0IGk9MDsgaTxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGFjYypyYWRpeCArIEJpZ0ludChhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoJDYoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUkNChhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8IEJpZ0ludCgwKTtcbn1cblxuZnVuY3Rpb24gaXNaZXJvJDEoYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZnVuY3Rpb24gc2hpZnRMZWZ0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw8IEJpZ0ludChuKTtcbn1cblxuZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PiBCaWdJbnQobik7XG59XG5cbmNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmNvbnN0IHNociA9IHNoaWZ0UmlnaHQ7XG5cbmZ1bmN0aW9uIGlzT2RkJDUoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgQmlnSW50KDEpKSA9PSBCaWdJbnQoMSk7XG59XG5cblxuZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIEJpZ0ludCg0KSk7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gdG9OdW1iZXIkMShzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkocywgcmFkaXgpIHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBsZXQgcmVtID0gQmlnSW50KHMpO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICB3aGlsZSAocmVtKSB7XG4gICAgICAgIHJlcy51bnNoaWZ0KCBOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cblxuZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICsgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lZyhhKSB7XG4gICAgcmV0dXJuIC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gc3F1YXJlJDIoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiBCaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGV4cCQxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYWJzJDEoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIGRpdihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAvIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICUgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAhPSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYm9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIF4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHx8IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuICFCaWdJbnQoYSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckxFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdltpXSA9IHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNik7XG4gICAgZm9yIChsZXQgaT1sOyBpPHYubGVuZ3RoOyBpKyspIHZbaV0gPSAwO1xuICAgIGZvciAobGV0IGk9di5sZW5ndGgqNDsgaTxuODsgaSsrKSBidWZmW2ldID0gdG9OdW1iZXIkMShiYW5kKHNoaWZ0UmlnaHQoZSwgaSo4KSwgMHhGRikpO1xufVxuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gdG9ScHJCRShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2LnNldFVpbnQzMihuOC1pKjQgLTQsIHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNiksIGZhbHNlKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNC1sOyBpKyspIHZbaV0gPSAwO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJMRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICB2LmZvckVhY2goIChjaCxpKSA9PiBhW2EubGVuZ3RoLWktMV0gPSBjaC50b1N0cmluZygxNikucGFkU3RhcnQoOCxcIjBcIikgKTtcbiAgICByZXR1cm4gZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn1cblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiBmcm9tUnByQkUoYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBvID0gbyB8fCAwO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80OyBpKyspIHtcbiAgICAgICAgYVtpXSA9IHYuZ2V0VWludDMyKGkqNCwgZmFsc2UpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgfVxuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgIHJldHVybiBhLnRvU3RyaW5nKHJhZGl4KTtcbn1cblxuZnVuY3Rpb24gdG9MRUJ1ZmYoYSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChiaXRMZW5ndGgkNihhKSAtIDEpIC8gOCkgKzEpO1xuICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gYnVmZjtcbn1cblxuY29uc3QgemVybyA9IGUoMCk7XG5jb25zdCBvbmUgPSBlKDEpO1xuXG52YXIgX1NjYWxhciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgYWJzOiBhYnMkMSxcbiAgICBhZGQ6IGFkZCxcbiAgICBiYW5kOiBiYW5kLFxuICAgIGJpdExlbmd0aDogYml0TGVuZ3RoJDYsXG4gICAgYml0czogYml0cyxcbiAgICBib3I6IGJvcixcbiAgICBieG9yOiBieG9yLFxuICAgIGRpdjogZGl2LFxuICAgIGU6IGUsXG4gICAgZXE6IGVxLFxuICAgIGV4cDogZXhwJDEsXG4gICAgZnJvbUFycmF5OiBmcm9tQXJyYXksXG4gICAgZnJvbVJwckJFOiBmcm9tUnByQkUsXG4gICAgZnJvbVJwckxFOiBmcm9tUnByTEUsXG4gICAgZnJvbVN0cmluZzogZnJvbVN0cmluZyxcbiAgICBnZXE6IGdlcSxcbiAgICBndDogZ3QsXG4gICAgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQ0LFxuICAgIGlzT2RkOiBpc09kZCQ1LFxuICAgIGlzWmVybzogaXNaZXJvJDEsXG4gICAgbGFuZDogbGFuZCxcbiAgICBsZXE6IGxlcSxcbiAgICBsbm90OiBsbm90LFxuICAgIGxvcjogbG9yLFxuICAgIGx0OiBsdCxcbiAgICBtb2Q6IG1vZCxcbiAgICBtdWw6IG11bCxcbiAgICBuYWY6IG5hZixcbiAgICBuZWc6IG5lZyxcbiAgICBuZXE6IG5lcSxcbiAgICBvbmU6IG9uZSxcbiAgICBwb3c6IHBvdyxcbiAgICBzaGlmdExlZnQ6IHNoaWZ0TGVmdCxcbiAgICBzaGlmdFJpZ2h0OiBzaGlmdFJpZ2h0LFxuICAgIHNobDogc2hsLFxuICAgIHNocjogc2hyLFxuICAgIHNxdWFyZTogc3F1YXJlJDIsXG4gICAgc3ViOiBzdWIsXG4gICAgdG9BcnJheTogdG9BcnJheSxcbiAgICB0b0xFQnVmZjogdG9MRUJ1ZmYsXG4gICAgdG9OdW1iZXI6IHRvTnVtYmVyJDEsXG4gICAgdG9ScHJCRTogdG9ScHJCRSxcbiAgICB0b1JwckxFOiB0b1JwckxFLFxuICAgIHRvU3RyaW5nOiB0b1N0cmluZyxcbiAgICB6ZXJvOiB6ZXJvXG59KTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgUG9sRmllbGQge1xuICAgIGNvbnN0cnVjdG9yIChGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90O1xuICAgICAgICBsZXQgcyA9IEYuc3FydF9zO1xuXG4gICAgICAgIGNvbnN0IGZpdmUgPSB0aGlzLkYuYWRkKHRoaXMuRi5hZGQodGhpcy5GLnR3bywgdGhpcy5GLnR3byksIHRoaXMuRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3coZml2ZSwgcmVtKTtcbiAgICAgICAgdGhpcy53aVtzXSA9IHRoaXMuRi5pbnYodGhpcy53W3NdKTtcblxuICAgICAgICBsZXQgbj1zLTE7XG4gICAgICAgIHdoaWxlIChuPj0wKSB7XG4gICAgICAgICAgICB0aGlzLndbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud1tuKzFdKTtcbiAgICAgICAgICAgIHRoaXMud2lbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud2lbbisxXSk7XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcbi8qICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoMTUpO1xuICAgIH1cblxuICAgIF9zZXRSb290cyhuKSB7XG4gICAgICAgIGlmIChuID4gdGhpcy5GLnNxcnRfcykgbiA9IHRoaXMucztcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucm9vdHNbaV0gPSByb290c2k7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5zdWIoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKHAsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYuemVybykpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYub25lKSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubXVsKHBbaV0sIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYiwgYVswXSk7XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYSwgYlswXSk7XG5cbiAgICAgICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIFtiLCBhXSA9IFthLCBiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoYi5sZW5ndGggPD0gMikgfHwgKGIubGVuZ3RoIDwgbG9nMiQyKGEubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bE5vcm1hbChhLGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsRkZUKGEsYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxOb3JtYWwoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmFkZChyZXMsIHRoaXMuc2NhbGVYKHRoaXMubXVsU2NhbGFyKGEsIGJbaV0pLCBpKSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbXVsRkZUKGEsYikge1xuICAgICAgICBjb25zdCBsb25nZXN0TiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJpdHNSZXN1bHQgPSBsb2cyJDIobG9uZ2VzdE4tMSkrMjtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0c1Jlc3VsdCk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0c1Jlc3VsdDtcbiAgICAgICAgY29uc3QgZWEgPSB0aGlzLmV4dGVuZChhLG0pO1xuICAgICAgICBjb25zdCBlYiA9IHRoaXMuZXh0ZW5kKGIsbSk7XG5cbiAgICAgICAgY29uc3QgdGEgPSBfX2ZmdCQxKHRoaXMsIGVhLCBiaXRzUmVzdWx0LCAwLCAxKTtcbiAgICAgICAgY29uc3QgdGIgPSBfX2ZmdCQxKHRoaXMsIGViLCBiaXRzUmVzdWx0LCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0cmVzID0gbmV3IEFycmF5KG0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHRyZXNbaV0gPSB0aGlzLkYubXVsKHRhW2ldLCB0YltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIHRyZXMsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzbik7XG4gICAgfVxuXG5cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLGEpO1xuICAgIH1cblxuICAgIHNjYWxlWChwLCBuKSB7XG4gICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIGlmIChuPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkobikuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgICAgICByZXR1cm4gei5jb25jYXQocCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoLW4gPj0gcC5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiBwLnNsaWNlKC1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2YWwyKHAsIHgpIHtcbiAgICAgICAgbGV0IHYgPSB0aGlzLkYuemVybztcbiAgICAgICAgbGV0IGl4ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLkYuYWRkKHYsIHRoaXMuRi5tdWwocFtpXSwgaXgpKTtcbiAgICAgICAgICAgIGl4ID0gdGhpcy5GLm11bChpeCwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocCx4KSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fbmV4dDJQb3dlcihwLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG5cbiAgICAgICAgcmV0dXJuIF9ldmFsKGVwLCB4LCAwLCAxLCBtKTtcblxuICAgICAgICBmdW5jdGlvbiBfZXZhbChwLCB4LCBvZmZzZXQsIHN0ZXAsIG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0xKSByZXR1cm4gcFtvZmZzZXRdO1xuICAgICAgICAgICAgY29uc3QgbmV3WCA9IEYuc3F1YXJlKHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzPSBGLmFkZChcbiAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQsIHN0ZXAgPDwgMSwgbiA+PiAxKSxcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0K3N0ZXAgLCBzdGVwIDw8IDEsIG4gPj4gMSkpKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWdyYW5nZShwb2ludHMpIHtcbiAgICAgICAgbGV0IHJvb3RzID0gW3RoaXMuRi5vbmVdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb290cyA9IHRoaXMubXVsKHJvb3RzLCBbdGhpcy5GLm5lZyhwb2ludHNbaV1bMF0pLCB0aGlzLkYub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3VtID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtcG9sID0gdGhpcy5ydWZmaW5pKHJvb3RzLCBwb2ludHNbaV1bMF0pO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID1cbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuaW52KHRoaXMuZXZhbHVhdGUobXBvbCwgcG9pbnRzW2ldWzBdKSksXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICBtcG9sID0gdGhpcy5tdWxTY2FsYXIobXBvbCwgZmFjdG9yKTtcbiAgICAgICAgICAgIHN1bSA9IHRoaXMuYWRkKHN1bSwgbXBvbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmZnQyKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cblxuICAgIGlmZnQyKHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdDIodGhpcywgZXAsIGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuICAgIF9mZnQocGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICAgICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKG49PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgICAgIGNvbnN0IHAxID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgICAgICBjb25zdCBwMiA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgICAgICBsZXQgbT0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IHRoaXMuRi5hZGQocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG91dFtpK25kaXYyXSA9IHRoaXMuRi5zdWIocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG0gPSB0aGlzLkYubXVsKG0sIHRoaXMud1tiaXRzXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGV4dGVuZChwLCBlKSB7XG4gICAgICAgIGlmIChlID09IHAubGVuZ3RoKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShlLXAubGVuZ3RoKS5maWxsKHRoaXMuRi56ZXJvKTtcblxuICAgICAgICByZXR1cm4gcC5jb25jYXQoeik7XG4gICAgfVxuXG4gICAgcmVkdWNlKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBwO1xuICAgICAgICBpZiAoISB0aGlzLkYuZXEocFtwLmxlbmd0aC0xXSwgdGhpcy5GLnplcm8pICkgcmV0dXJuIHA7XG4gICAgICAgIGxldCBpPXAubGVuZ3RoLTE7XG4gICAgICAgIHdoaWxlKCBpPjAgJiYgdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSApIGktLTtcbiAgICAgICAgcmV0dXJuIHAuc2xpY2UoMCwgaSsxKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IHBhID0gdGhpcy5yZWR1Y2UoYSk7XG4gICAgICAgIGNvbnN0IHBiID0gdGhpcy5yZWR1Y2UoYik7XG5cbiAgICAgICAgaWYgKHBhLmxlbmd0aCAhPSBwYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwYVtpXSwgcGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBydWZmaW5pKHAsIHIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoLTEpO1xuICAgICAgICByZXNbcmVzLmxlbmd0aC0xXSA9IHBbcC5sZW5ndGgtMV07XG4gICAgICAgIGZvciAobGV0IGkgPSByZXMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZCh0aGlzLkYubXVsKHJlc1tpKzFdLCByKSwgcFtpKzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIF9uZXh0MlBvd2VyKHYpIHtcbiAgICAgICAgdi0tO1xuICAgICAgICB2IHw9IHYgPj4gMTtcbiAgICAgICAgdiB8PSB2ID4+IDI7XG4gICAgICAgIHYgfD0gdiA+PiA0O1xuICAgICAgICB2IHw9IHYgPj4gODtcbiAgICAgICAgdiB8PSB2ID4+IDE2O1xuICAgICAgICB2Kys7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgYXAgPSB0aGlzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpPWFwLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGlmIChTIT1cIlwiKSBTICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgUyA9IFMgKyBwW2ldLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJ4XCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJeXCIgK2k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFM7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHApIHtcbiAgICAgICAgY29uc3QgcmVzICA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubm9ybWFsaXplKHBbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBfcmVjaXByb2NhbChwLCBiaXRzKSB7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChrPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyB0aGlzLkYuaW52KHBbMF0pIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnAgPSB0aGlzLnNjYWxlWChwLCAtay8yKTtcbiAgICAgICAgY29uc3QgcSA9IHRoaXMuX3JlY2lwcm9jYWwobnAsIGJpdHMtMSk7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnNjYWxlWCh0aGlzLmRvdWJsZShxKSwgMyprLzItMik7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLm11bCggdGhpcy5zcXVhcmUocSksIHApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlWCh0aGlzLnN1YihhLGIpLCAgIC0oay0yKSk7XG4gICAgfVxuXG4gICAgLy8gZGl2aWRlcyB4Xm0gLyB2XG4gICAgX2RpdjIobSwgdikge1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMih2Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCBzY2FsZVYgPSBrIC0gdi5sZW5ndGg7XG5cbiAgICAgICAgLy8gcmVjID0geF4oayAtIDIpIC8gdiogeF5zY2FsZVYgPT5cbiAgICAgICAgLy8gcmVjID0geF4oay0yLXNjYWxlVikvIHZcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmVzID0geF5tL3YgPSB4XihtICsgKDIqay0yIC0gc2NhbGVWKSAtICgyKmstMiAtIHNjYWxlVikpIC92ID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAoMiprLTIgLSBzY2FsZVYpKSA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gMiprICsgMiArIHNjYWxlVilcblxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLl9yZWNpcHJvY2FsKHRoaXMuc2NhbGVYKHYsIHNjYWxlViksIGtiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5zY2FsZVgocmVjLCBtIC0gMiprICsgMiArIHNjYWxlVik7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBkaXYoX3UsIF92KSB7XG4gICAgICAgIGlmIChfdS5sZW5ndGggPCBfdi5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyJDIoX3YubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLnNjYWxlWChfdSwgay1fdi5sZW5ndGgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5zY2FsZVgoX3YsIGstX3YubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBuID0gdi5sZW5ndGgtMTtcbiAgICAgICAgbGV0IG0gPSB1Lmxlbmd0aC0xO1xuXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLl9yZWNpcHJvY2FsKHYsIGtiaXRzKTtcbiAgICAgICAgbGV0IHQ7XG4gICAgICAgIGlmIChtPjIqbikge1xuICAgICAgICAgICAgdCA9IHRoaXMuc3ViKHRoaXMuc2NhbGVYKFt0aGlzLkYub25lXSwgMipuKSwgdGhpcy5tdWwocywgdikpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHEgPSBbXTtcbiAgICAgICAgbGV0IHJlbSA9IHU7XG4gICAgICAgIGxldCB1cywgdXQ7XG4gICAgICAgIGxldCBmaW5pc2ggPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWZpbmlzaCkge1xuICAgICAgICAgICAgdXMgPSB0aGlzLm11bChyZW0sIHMpO1xuICAgICAgICAgICAgcSA9IHRoaXMuYWRkKHEsIHRoaXMuc2NhbGVYKHVzLCAtMipuKSk7XG5cbiAgICAgICAgICAgIGlmICggbSA+IDIqbiApIHtcbiAgICAgICAgICAgICAgICB1dCA9IHRoaXMubXVsKHJlbSwgdCk7XG4gICAgICAgICAgICAgICAgcmVtID0gdGhpcy5zY2FsZVgodXQsIC0yKm4pO1xuICAgICAgICAgICAgICAgIG0gPSByZW0ubGVuZ3RoLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmlzaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcTtcbiAgICB9XG5cblxuICAgIC8vIHJldHVybnMgdGhlIGl0aCBudGgtcm9vdCBvZiBvbmVcbiAgICBvbmVSb290KG4sIGkpIHtcbiAgICAgICAgbGV0IG5iaXRzID0gbG9nMiQyKG4tMSkrMTtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGxldCByID0gaTtcblxuICAgICAgICBpZihpPj1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXZlbiAnaScgc2hvdWxkIGJlIGxvd2VyIHRoYW4gJ24nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKDE8PG5iaXRzICE9PSBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycmxyOiAke259IHNob3VsZCBlcXVhbCAkezE8PG5iaXRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgaWYgKHIgJiAxID09IDEpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0aGlzLkYubXVsKHJlcywgdGhpcy53W25iaXRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gciA+PiAxO1xuICAgICAgICAgICAgbmJpdHMgLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFuaXNoaW5nUG9saW5vbWlhbChiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIHJldHVybiB0aGlzLkYuc3ViKHRoaXMuRi5wb3codCwgbSksIHRoaXMuRi5vbmUpO1xuICAgIH1cblxuICAgIGV2YWx1YXRlTGFncmFuZ2VQb2x5bm9taWFscyhiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG09IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgdG0gPSB0aGlzLkYucG93KHQsIG0pO1xuICAgICAgICBjb25zdCB1PSBuZXcgQXJyYXkobSkuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBvbWVnYSA9IHRoaXMud1tiaXRzXTtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHRtLCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5GLmVxKHRoaXMucm9vdHNbYml0c11bMF0sdCkpIHsgLy8gaS5lLiwgdCBlcXVhbHMgb21lZ2FeaVxuICAgICAgICAgICAgICAgICAgICB1W2ldID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5zdWIodG0sIHRoaXMuRi5vbmUpO1xuICAgICAgICAvLyAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYucG93KHRoaXMuRi50d29pbnYsIG0pKTtcbiAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYuaW52KHRoaXMuRi5lKG0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB1W2ldID0gdGhpcy5GLm11bChsLCB0aGlzLkYuaW52KHRoaXMuRi5zdWIodCx0aGlzLnJvb3RzW2JpdHNdW2ldKSkpO1xuICAgICAgICAgICAgbCA9IHRoaXMuRi5tdWwobCwgb21lZ2EpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHU7XG4gICAgfVxuXG4gICAgbG9nMihWKSB7XG4gICAgICAgIHJldHVybiBsb2cyJDIoVik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2cyJDIoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5GLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRi5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0MihQRiwgcGFsbCwgYml0cykge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsWzBdIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UoMCwgbmRpdjIpLCBiaXRzLTEpO1xuICAgIGNvbnN0IHAyID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKG5kaXYyKSwgYml0cy0xKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IF9yZXZUYWJsZSQxID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGUkMVtpXSA9IF9yZXZTbG93JDEoaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93JDEoaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHJldihpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGUkMVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59XG5cbmZ1bmN0aW9uIF9fYml0UmV2ZXJzZShwLCBiaXRzKSB7XG4gICAgZm9yIChsZXQgaz0wOyBrPHAubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgY29uc3QgciA9IHJldihrLCBiaXRzKTtcbiAgICAgICAgaWYgKHI+aykge1xuICAgICAgICAgICAgY29uc3QgdG1wPSBwW2tdO1xuICAgICAgICAgICAgcFtrXSA9IHBbcl07XG4gICAgICAgICAgICBwW3JdID0gdG1wO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBtdWxTY2FsYXIoRiwgYmFzZSwgZSkge1xuICAgIGxldCByZXM7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLnplcm87XG5cbiAgICBjb25zdCBuID0gbmFmKGUpO1xuXG4gICAgaWYgKG5bbi5sZW5ndGgtMV0gPT0gMSkge1xuICAgICAgICByZXMgPSBiYXNlO1xuICAgIH0gZWxzZSBpZiAobltuLmxlbmd0aC0xXSA9PSAtMSkge1xuICAgICAgICByZXMgPSBGLm5lZyhiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZsYXVkIE5BRlwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuZG91YmxlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0gPT0gMSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBiYXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChuW2ldID09IC0xKSB7XG4gICAgICAgICAgICByZXMgPSBGLnN1YihyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vKlxuZXhwb3J0cy5tdWxTY2FsYXIgPSAoRiwgYmFzZSwgZSkgPT57XG4gICAgbGV0IHJlcyA9IEYuemVybztcbiAgICBsZXQgcmVtID0gYmlnSW50KGUpO1xuICAgIGxldCBleHAgPSBiYXNlO1xuXG4gICAgd2hpbGUgKCEgcmVtLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAocmVtLmFuZChiaWdJbnQub25lKS5lcShiaWdJbnQub25lKSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBleHApO1xuICAgICAgICB9XG4gICAgICAgIGV4cCA9IEYuZG91YmxlKGV4cCk7XG4gICAgICAgIHJlbSA9IHJlbS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59O1xuKi9cblxuXG5mdW5jdGlvbiBleHAoRiwgYmFzZSwgZSkge1xuXG4gICAgaWYgKGlzWmVybyQxKGUpKSByZXR1cm4gRi5vbmU7XG5cbiAgICBjb25zdCBuID0gYml0cyhlKTtcblxuICAgIGlmIChuLmxlbmd0aD09MCkgcmV0dXJuIEYub25lO1xuXG4gICAgbGV0IHJlcyA9IGJhc2U7XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuc3F1YXJlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0pIHtcbiAgICAgICAgICAgIHJlcyA9IEYubXVsKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcblxuZnVuY3Rpb24gYnVpbGRTcXJ0IChGKSB7XG4gICAgaWYgKChGLm0gJSAyKSA9PSAxKSB7XG4gICAgICAgIGlmIChlcShtb2QoRi5wLCA0KSwgMSApKSB7XG4gICAgICAgICAgICBpZiAoZXEobW9kKEYucCwgOCksIDEgKSkge1xuICAgICAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCAxNiksIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGc3X211bGxlcihGKTtcbiAgICAgICAgICAgICAgICAgICAgYWxnNV90b25lbGxpU2hhbmtzKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgMTYpLCA5ICkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxnNF9rb25nKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgOCksIDUgKSkge1xuICAgICAgICAgICAgICAgIGFsZzNfYXRraW4oRik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVxKG1vZChGLnAsIDQpLCAzICkpIHtcbiAgICAgICAgICAgIGFsZzJfc2hhbmtzKEYpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcG0ybW9kNCA9IG1vZChwb3coRi5wLCBGLm0vMiksIDQpO1xuICAgICAgICBpZiAocG0ybW9kNCA9PSAxKSB7XG4gICAgICAgICAgICBhbGcxMF9hZGooRik7XG4gICAgICAgIH0gZWxzZSBpZiAocG0ybW9kNCA9PSAzKSB7XG4gICAgICAgICAgICBhbGc5X2FkaihGKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsZzhfY29tcGxleChGKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGFsZzVfdG9uZWxsaVNoYW5rcyhGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0pO1xuXG4gICAgRi5zcXJ0X3MgPSAwO1xuICAgIEYuc3FydF90ID0gc3ViKEYuc3FydF9xLCAxKTtcblxuICAgIHdoaWxlICghaXNPZGQkNShGLnNxcnRfdCkpIHtcbiAgICAgICAgRi5zcXJ0X3MgPSBGLnNxcnRfcyArIDE7XG4gICAgICAgIEYuc3FydF90ID0gZGl2KEYuc3FydF90LCAyKTtcbiAgICB9XG5cbiAgICBsZXQgYzAgPSBGLm9uZTtcblxuICAgIHdoaWxlIChGLmVxKGMwLCBGLm9uZSkpIHtcbiAgICAgICAgY29uc3QgYyA9IEYucmFuZG9tKCk7XG4gICAgICAgIEYuc3FydF96ID0gRi5wb3coYywgRi5zcXJ0X3QpO1xuICAgICAgICBjMCA9IEYucG93KEYuc3FydF96LCAyICoqIChGLnNxcnRfcy0xKSApO1xuICAgIH1cblxuICAgIEYuc3FydF90bTFkMiA9IGRpdihzdWIoRi5zcXJ0X3QsIDEpLDIpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGPXRoaXM7XG4gICAgICAgIGlmIChGLmlzWmVybyhhKSkgcmV0dXJuIEYuemVybztcbiAgICAgICAgbGV0IHcgPSBGLnBvdyhhLCBGLnNxcnRfdG0xZDIpO1xuICAgICAgICBjb25zdCBhMCA9IEYucG93KCBGLm11bChGLnNxdWFyZSh3KSwgYSksIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2ID0gRi5zcXJ0X3M7XG4gICAgICAgIGxldCB4ID0gRi5tdWwoYSwgdyk7XG4gICAgICAgIGxldCBiID0gRi5tdWwoeCwgdyk7XG4gICAgICAgIGxldCB6ID0gRi5zcXJ0X3o7XG4gICAgICAgIHdoaWxlICghRi5lcShiLCBGLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBiMmsgPSBGLnNxdWFyZShiKTtcbiAgICAgICAgICAgIGxldCBrPTE7XG4gICAgICAgICAgICB3aGlsZSAoIUYuZXEoYjJrLCBGLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBiMmsgPSBGLnNxdWFyZShiMmspO1xuICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IHo7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8di1rLTE7IGkrKykge1xuICAgICAgICAgICAgICAgIHcgPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHogPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGIgPSBGLm11bChiLCB6KTtcbiAgICAgICAgICAgIHggPSBGLm11bCh4LCB3KTtcbiAgICAgICAgICAgIHYgPSBrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzRfa29uZyhGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDQgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzNfYXRraW4oRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcyX3NoYW5rcyhGKSB7XG5cbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG4gICAgRi5zcXJ0X2UxID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCBhMSA9IHRoaXMucG93KGEsIHRoaXMuc3FydF9lMSk7XG5cbiAgICAgICAgY29uc3QgYTAgPSB0aGlzLm11bCh0aGlzLnNxdWFyZShhMSksIGEpO1xuXG4gICAgICAgIGlmICggdGhpcy5lcShhMCwgdGhpcy5uZWdvbmUpICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMubXVsKGExLCBhKTtcblxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcxMF9hZGooRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAxMCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnOV9hZGooRikge1xuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tLzIpO1xuICAgIEYuc3FydF9lMzQgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcbiAgICBGLnNxcnRfZTEyID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDEpICwgMik7XG5cbiAgICBGLmZyb2Jlbml1cyA9IGZ1bmN0aW9uKG4sIHgpIHtcbiAgICAgICAgaWYgKChuJTIpID09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBGLmNvbmp1Z2F0ZSh4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgIGNvbnN0IGFsZmEgPSBGLm11bChGLnNxdWFyZShhMSksIGEpO1xuICAgICAgICBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICBsZXQgeDtcbiAgICAgICAgaWYgKEYuZXEoYWxmYSwgRi5uZWdvbmUpKSB7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYiA9IEYucG93KEYuYWRkKEYub25lLCBhbGZhKSwgRi5zcXJ0X2UxMik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cblxuZnVuY3Rpb24gYWxnOF9jb21wbGV4KEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgOCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gcXVhcnRlclJvdW5kKHN0LCBhLCBiLCBjLCBkKSB7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgMTYpIHwgKChzdFtkXT4+PjE2KSAmIDB4RkZGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDEyKSB8ICgoc3RbYl0+Pj4yMCkgJiAweEZGRikpID4+PiAwO1xuXG4gICAgc3RbYV0gPSAoc3RbYV0gKyBzdFtiXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoc3RbZF0gXiBzdFthXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoKHN0W2RdIDw8IDgpIHwgKChzdFtkXT4+PjI0KSAmIDB4RkYpKSA+Pj4gMDtcblxuICAgIHN0W2NdID0gKHN0W2NdICsgc3RbZF0pID4+PiAwO1xuICAgIHN0W2JdID0gKHN0W2JdIF4gc3RbY10pID4+PiAwO1xuICAgIHN0W2JdID0gKChzdFtiXSA8PCA3KSB8ICgoc3RbYl0+Pj4yNSkgJiAweDdGKSkgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIGRvdWJsZVJvdW5kKHN0KSB7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA0LCA4LDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDUsIDksMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNiwxMCwxNCk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA3LDExLDE1KTtcblxuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMCwgNSwxMCwxNSk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAxLCA2LDExLDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDIsIDcsIDgsMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMywgNCwgOSwxNCk7XG59XG5cbmNsYXNzIENoYUNoYSB7XG5cbiAgICBjb25zdHJ1Y3RvcihzZWVkKSB7XG4gICAgICAgIHNlZWQgPSBzZWVkIHx8IFswLDAsMCwwLDAsMCwwLDBdO1xuICAgICAgICB0aGlzLnN0YXRlID0gW1xuICAgICAgICAgICAgMHg2MTcwNzg2NSxcbiAgICAgICAgICAgIDB4MzMyMDY0NkUsXG4gICAgICAgICAgICAweDc5NjIyRDMyLFxuICAgICAgICAgICAgMHg2QjIwNjU3NCxcbiAgICAgICAgICAgIHNlZWRbMF0sXG4gICAgICAgICAgICBzZWVkWzFdLFxuICAgICAgICAgICAgc2VlZFsyXSxcbiAgICAgICAgICAgIHNlZWRbM10sXG4gICAgICAgICAgICBzZWVkWzRdLFxuICAgICAgICAgICAgc2VlZFs1XSxcbiAgICAgICAgICAgIHNlZWRbNl0sXG4gICAgICAgICAgICBzZWVkWzddLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmlkeCA9IDE2O1xuICAgICAgICB0aGlzLmJ1ZmYgPSBuZXcgQXJyYXkoMTYpO1xuICAgIH1cblxuICAgIG5leHRVMzIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlkeCA9PSAxNikgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZlt0aGlzLmlkeCsrXTtcbiAgICB9XG5cbiAgICBuZXh0VTY0KCkge1xuICAgICAgICByZXR1cm4gYWRkKG11bCh0aGlzLm5leHRVMzIoKSwgMHgxMDAwMDAwMDApLCB0aGlzLm5leHRVMzIoKSk7XG4gICAgfVxuXG4gICAgbmV4dEJvb2woKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZXh0VTMyKCkgJiAxKSA9PSAxO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgc3RhdGVcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9IHRoaXMuc3RhdGVbaV07XG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIHJvdW5kc1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykgZG91YmxlUm91bmQodGhpcy5idWZmKTtcblxuICAgICAgICAvLyBBZGQgdG8gdGhlIGluaXRpYWxcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9ICh0aGlzLmJ1ZmZbaV0gKyB0aGlzLnN0YXRlW2ldKSA+Pj4gMDtcblxuICAgICAgICB0aGlzLmlkeCA9IDA7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVsxMl0gPSAodGhpcy5zdGF0ZVsxMl0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTJdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxM10gPSAodGhpcy5zdGF0ZVsxM10gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTNdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNF0gPSAodGhpcy5zdGF0ZVsxNF0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTRdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNV0gPSAodGhpcy5zdGF0ZVsxNV0gKyAxKSA+Pj4gMDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICB7IC8vIEJyb3dzZXJcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGZhbGxiYWNrXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSAoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk2KT4+PjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBnZXRSYW5kb21TZWVkKCkge1xuICAgIGNvbnN0IGFyciA9IGdldFJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBhcnJWID0gbmV3IFVpbnQzMkFycmF5KGFyci5idWZmZXIpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWQucHVzaChhcnJWW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZWQ7XG59XG5cbmxldCB0aHJlYWRSbmcgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRUaHJlYWRSbmcoKSB7XG4gICAgaWYgKHRocmVhZFJuZykgcmV0dXJuIHRocmVhZFJuZztcbiAgICB0aHJlYWRSbmcgPSBuZXcgQ2hhQ2hhKGdldFJhbmRvbVNlZWQoKSk7XG4gICAgcmV0dXJuIHRocmVhZFJuZztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgRkZUIHtcbiAgICBjb25zdHJ1Y3RvciAoRywgRiwgb3BNdWxHRikge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLkcgPSBHO1xuICAgICAgICB0aGlzLm9wTXVsR0YgPSBvcE11bEdGO1xuXG4gICAgICAgIGxldCByZW0gPSBGLnNxcnRfdCB8fCBGLnQ7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3MgfHwgRi5zO1xuXG4gICAgICAgIGxldCBucXIgPSBGLm9uZTtcbiAgICAgICAgd2hpbGUgKEYuZXEoRi5wb3cobnFyLCBGLmhhbGYpLCBGLm9uZSkpIG5xciA9IEYuYWRkKG5xciwgRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3cobnFyLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuICAgICAgICAvKlxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIHRoaXMuX3NldFJvb3RzKE1hdGgubWluKHMsIDE1KSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMShwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWZmdChwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0KHRoaXMsIHAsIGJpdHMsIDAsIDEpO1xuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5vcE11bEdGKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcbiAgICB9XG5cblxufVxuXG5mdW5jdGlvbiBsb2cyJDEoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdChQRiwgcGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgIH0gZWxzZSBpZiAobj09Mikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgUEYuRy5hZGQocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKSxcbiAgICAgICAgICAgIFBGLkcuc3ViKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSldO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5HLmFkZChwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRy5zdWIocDFbaV0sIFBGLm9wTXVsR0YocDJbaV0sIFBGLnJvb3RzW2JpdHNdW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5jbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gQmlnSW50KDEpO1xuICAgICAgICB0aGlzLnplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMucCA9IEJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAtdGhpcy5vbmU7XG4gICAgICAgIHRoaXMudHdvID0gQmlnSW50KDIpO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYodGhpcy5wKTtcbiAgICAgICAgdGhpcy5tYXNrID0gKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLmJpdExlbmd0aCkpIC0gdGhpcy5vbmU7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuZSh0aGlzLm9uZSA8PCBCaWdJbnQodGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lID4+IHRoaXMub25lO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xciArIHRoaXMub25lO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCh0aGlzLnQgJiB0aGlzLm9uZSkgPT0gdGhpcy56ZXJvKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50ID4+IHRoaXMub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcblxuICAgICAgICB0aGlzLkZGVCA9IG5ldyBGRlQodGhpcywgdGhpcywgdGhpcy5tdWwuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5mZnQgPSB0aGlzLkZGVC5mZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMuaWZmdCA9IHRoaXMuRkZULmlmZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMudyA9IHRoaXMuRkZULnc7XG4gICAgICAgIHRoaXMud2kgPSB0aGlzLkZGVC53aTsgXG4gICAgXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLnNxdWFyZSh0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuayA9IHRoaXMuZXhwKHRoaXMubnFyLCAyKip0aGlzLnMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGI9PTE2KSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoXCIweFwiK2EpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbnJlcyA9IC1yZXM7XG4gICAgICAgICAgICBpZiAobnJlcyA+PSB0aGlzLnApIG5yZXMgPSBucmVzICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5yZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKHJlcz49IHRoaXMucCkgPyByZXMldGhpcy5wIDogcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSBhICsgYjtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSA+PSBiKSA/IGEtYiA6IHRoaXMucC1iK2E7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPyB0aGlzLnAtYSA6IGE7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhKmIpJXRoaXMucDtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gKGJhc2UgKiB0aGlzLmUocykpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiAoYSphKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhPT1iO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIT1iO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDwgYmI7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPiBiYjtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPD0gYmI7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID49IGJiO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmICghYikgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEgLyBiO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmICghYSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcblxuICAgICAgICBsZXQgdCA9IHRoaXMuemVybztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnA7XG4gICAgICAgIGxldCBuZXd0ID0gdGhpcy5vbmU7XG4gICAgICAgIGxldCBuZXdyID0gYSAlIHRoaXMucDtcbiAgICAgICAgd2hpbGUgKG5ld3IpIHtcbiAgICAgICAgICAgIGxldCBxID0gci9uZXdyO1xuICAgICAgICAgICAgW3QsIG5ld3RdID0gW25ld3QsIHQtcSpuZXd0XTtcbiAgICAgICAgICAgIFtyLCBuZXdyXSA9IFtuZXdyLCByLXEqbmV3cl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQ8dGhpcy56ZXJvKSB0ICs9IHRoaXMucDtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgJSBiO1xuICAgIH1cblxuICAgIHBvdyhiLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSAmIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgfCBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSBeIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICBjb25zdCByZXMgPSBhIF4gdGhpcy5tYXNrO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBiKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA+PiBuYjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBuYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgJiYgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgfHwgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIChhKSA/IHRoaXMuemVybyA6IHRoaXMub25lO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobiA9PSB0aGlzLnplcm8pIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmUpO1xuICAgICAgICBpZiAoIHJlcyAhPSB0aGlzLm9uZSApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gdGhpcy5zO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKSA+PiB0aGlzLm9uZSApO1xuXG4gICAgICAgIHdoaWxlICggdCAhPSB0aGlzLm9uZSApIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKHNxICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyID4gKHRoaXMucCA+PiB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhLCBiKSB7XG4gICAgICAgIGEgPSBCaWdJbnQoYSxiKTtcbiAgICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbmEgPSAtYTtcbiAgICAgICAgICAgIGlmIChuYSA+PSB0aGlzLnApIG5hID0gbmEgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbmE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGE+PSB0aGlzLnApID8gYSV0aGlzLnAgOiBhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBjb25zdCBuQnl0ZXMgPSAodGhpcy5iaXRMZW5ndGgqMiAvIDgpO1xuICAgICAgICBsZXQgcmVzID10aGlzLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gKHJlcyA8PCBCaWdJbnQoOCkpICsgQmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKChhID4gdGhpcy5oYWxmKSYmKGJhc2UgPT0gMTApKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLWE7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhID09IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdj10aGlzLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgKz0gcm5nLm5leHRVNjQoKSA8PCBCaWdJbnQoNjQgKmkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiAmPSB0aGlzLm1hc2s7XG4gICAgICAgIH0gd2hpbGUgKHYgPj0gdGhpcy5wKTtcbiAgICAgICAgdiA9ICh2ICogdGhpcy5SaSkgJSB0aGlzLnA7ICAgLy8gQ29udmVydCBmcm9tIG1vbnRnb21lcnlcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmZmdChhKTtcbiAgICB9XG5cbiAgICBpZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmlmZnQoYSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdG9ScHJMRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckJFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIE1vbnRnb21lcnkgUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByQkUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckxFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckJFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByTEUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByQkUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYyRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjJcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSoyO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBjb25qdWdhdGUoYSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYVswXSxcbiAgICAgICAgICAgIHRoaXMuRi5uZWcoYVsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKCBhQSAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShiQikpLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpXTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDEpKTtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYuaW52KHQyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgdDMpLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyh0aGlzLkYubXVsKCBhWzFdLCB0MykpIF07XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSAsIGFbMV0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFtcbiAgICAgICAgICAgIChhICsgYikgKiAoYSArIG5vbl9yZXNpZHVlICogYikgLSBhYiAtIG5vbl9yZXNpZHVlICogYWIsXG4gICAgICAgICAgICBhYiArIGFiXG4gICAgICAgIF07XG4gICAgICAgICovXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhWzFdKSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGFiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoYWIpKSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFiLCBhYilcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBGM0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihGLCBub25SZXNpZHVlKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYzXCI7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSozO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSksIHRoaXMuRi5jb3B5KGFbMl0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVswXSwgYlswXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMV0sIGJbMV0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzJdLCBiWzJdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG5cbiAgICAgICAgY29uc3QgYUEgPSB0aGlzLkYubXVsKGFbMF0gLCBiWzBdKTtcbiAgICAgICAgY29uc3QgYkIgPSB0aGlzLkYubXVsKGFbMV0gLCBiWzFdKTtcbiAgICAgICAgY29uc3QgY0MgPSB0aGlzLkYubXVsKGFbMl0gLCBiWzJdKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBhQSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzFdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJCLCBjQykpKSksICAgIC8vIGFBICsgbm9uX3Jlc2lkdWUqKChiK2MpKihCK0MpLWJCLWNDKSxcblxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSggY0MpKSwgICAvLyAoYStiKSooQStCKS1hQS1iQitub25fcmVzaWR1ZSpjQ1xuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGNDKSksXG4gICAgICAgICAgICAgICAgYkIpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYStjKSooQStDKS1hQStiQi1jQylcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgIC8vIHQwID0gYV4yIDtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pOyAgICAgICAgICAgICAvLyB0MSA9IGJeMiA7XG4gICAgICAgIGNvbnN0IHQyID0gdGhpcy5GLnNxdWFyZShhWzJdKTsgICAgICAgICAgICAgLy8gdDIgPSBjXjI7XG4gICAgICAgIGNvbnN0IHQzID0gdGhpcy5GLm11bChhWzBdLGFbMV0pOyAgICAgICAgICAgLy8gdDMgPSBhYlxuICAgICAgICBjb25zdCB0NCA9IHRoaXMuRi5tdWwoYVswXSxhWzJdKTsgICAgICAgICAgIC8vIHQ0ID0gYWNcbiAgICAgICAgY29uc3QgdDUgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAvLyB0NSA9IGJjO1xuICAgICAgICAvLyBjMCA9IHQwIC0gbm9uX3Jlc2lkdWUgKiB0NTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDUpKTtcbiAgICAgICAgLy8gYzEgPSBub25fcmVzaWR1ZSAqIHQyIC0gdDM7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnN1Yih0aGlzLl9tdWxCeU5vblJlc2lkdWUodDIpLCB0Myk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnN1Yih0MSwgdDQpOyAgICAgICAgICAgICAgLy8gYzIgPSB0MS10NFxuXG4gICAgICAgIC8vIHQ2ID0gKGEgKiBjMCArIG5vbl9yZXNpZHVlICogKGMgKiBjMSArIGIgKiBjMikpLmludigpO1xuICAgICAgICBjb25zdCB0NiA9XG4gICAgICAgICAgICB0aGlzLkYuaW52KFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgYzApLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsyXSwgYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsxXSwgYzIpKSkpKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzApLCAgICAgICAgIC8vIHQ2KmMwXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMSksICAgICAgICAgLy8gdDYqYzFcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMyKV07ICAgICAgICAvLyB0NipjMlxuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgY29uc3QgczAgPSB0aGlzLkYuc3F1YXJlKGFbMF0pOyAgICAgICAgICAgICAgICAgICAvLyBzMCA9IGFeMlxuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSwgYVsxXSk7ICAgICAgICAgICAgICAgIC8vIGFiID0gYSpiXG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLmFkZChhYiwgYWIpOyAgICAgICAgICAgICAgICAgICAgLy8gczEgPSAyYWI7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnNxdWFyZShcbiAgICAgICAgICAgIHRoaXMuRi5hZGQodGhpcy5GLnN1YihhWzBdLGFbMV0pLCBhWzJdKSk7ICAgICAvLyBzMiA9IChhIC0gYiArIGMpXjI7XG4gICAgICAgIGNvbnN0IGJjID0gdGhpcy5GLm11bChhWzFdLGFbMl0pOyAgICAgICAgICAgICAgICAgLy8gYmMgPSBiKmNcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYuYWRkKGJjLCBiYyk7ICAgICAgICAgICAgICAgICAgICAvLyBzMyA9IDIqYmNcbiAgICAgICAgY29uc3QgczQgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAgICAgICAvLyBzNCA9IGNeMlxuXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczAsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHMzKSksICAgICAgICAgICAvLyBzMCArIG5vbl9yZXNpZHVlICogczMsXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHMxLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShzNCkpLCAgICAgICAgICAgLy8gczEgKyBub25fcmVzaWR1ZSAqIHM0LFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKCB0aGlzLkYuYWRkKHMxLCBzMikgLCBzMyApLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoczAsIHM0KSldOyAgICAgICAgICAgICAgICAgICAgICAvLyBzMSArIHMyICsgczMgLSBzMCAtIHM0XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8oYVswXSkgJiYgdGhpcy5GLmlzWmVybyhhWzFdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMl0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSkgJiYgdGhpcy5GLmVxKGFbMl0sIGJbMl0pO1xuICAgIH1cblxuICAgIGFmZmluZShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmFmZmluZShhWzBdKSwgdGhpcy5GLmFmZmluZShhWzFdKSwgdGhpcy5GLmFmZmluZShhWzJdKV07XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9LCAke3RoaXMuRi50b1N0cmluZyhhWzJdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMV0sIGFbMV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsyXSwgYlsyXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5ndChhLCBiKSB8fCB0aGlzLmVxKGEsIGIpO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdlcShhLGIpO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ndChhLGIpO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShhLGIpO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYucmFuZG9tKCksIHRoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8sIGVbMl0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cblxuZnVuY3Rpb24gaXNHcmVhdGVzdChGLCBhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgZm9yIChsZXQgaT1hLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRi5GLmlzWmVybyhhW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0dyZWF0ZXN0KEYuRiwgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmEgPSBGLm5lZyhhKTtcbiAgICAgICAgcmV0dXJuIGd0KGEsIG5hKTtcbiAgICB9XG59XG5cblxuY2xhc3MgRUMge1xuXG4gICAgY29uc3RydWN0b3IoRiwgZykge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLmcgPSBnO1xuICAgICAgICBpZiAodGhpcy5nLmxlbmd0aCA9PSAyKSB0aGlzLmdbMl0gPSB0aGlzLkYub25lO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICB9XG5cbiAgICBhZGQocDEsIHAyKSB7XG5cbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5lcShwMSwgdGhpcy56ZXJvKSkgcmV0dXJuIHAyO1xuICAgICAgICBpZiAodGhpcy5lcShwMiwgdGhpcy56ZXJvKSkgcmV0dXJuIHAxO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTsgICAgIC8vIFUxID0gWDEgICogWjJaMlxuICAgICAgICBjb25zdCBVMiA9IEYubXVsKCBwMlswXSAsIFoxWjEgKTsgICAgIC8vIFUyID0gWDIgICogWjFaMVxuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7ICAvLyBTMSA9IFkxICogWjIgKiBaMloyXG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpOyAgLy8gUzIgPSBZMiAqIFoxICogWjFaMVxuXG4gICAgICAgIGlmIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG91YmxlKHAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEggPSBGLnN1YiggVTIgLCBVMSApOyAgICAgICAgICAgICAgICAgICAgLy8gSCA9IFUyLVUxXG5cbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBGLnN1YiggUzIgLCBTMSApO1xuXG4gICAgICAgIGNvbnN0IEkgPSBGLnNxdWFyZSggRi5hZGQoSCxIKSApOyAgICAgICAgIC8vIEkgPSAoMiAqIEgpXjJcbiAgICAgICAgY29uc3QgSiA9IEYubXVsKCBIICwgSSApOyAgICAgICAgICAgICAgICAgICAgICAvLyBKID0gSCAqIElcblxuICAgICAgICBjb25zdCByID0gRi5hZGQoIFMyX21pbnVzX1MxICwgUzJfbWludXNfUzEgKTsgIC8vIHIgPSAyICogKFMyLVMxKVxuICAgICAgICBjb25zdCBWID0gRi5tdWwoIFUxICwgSSApOyAgICAgICAgICAgICAgICAgICAgIC8vIFYgPSBVMSAqIElcblxuICAgICAgICByZXNbMF0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5zdWIoIEYuc3F1YXJlKHIpICwgSiApLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBWICwgViApKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFgzID0gcl4yIC0gSiAtIDIgKiBWXG5cbiAgICAgICAgY29uc3QgUzFfSiA9IEYubXVsKCBTMSAsIEogKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoIHIgLCBGLnN1YihWLHJlc1swXSkpLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBTMV9KLFMxX0ogKSk7ICAgICAgICAgICAgICAgICAgIC8vIFkzID0gciAqIChWLVgzKS0yIFMxIEpcblxuICAgICAgICByZXNbMl0gPVxuICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgSCxcbiAgICAgICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICAgICAgRi5zcXVhcmUoIEYuYWRkKHAxWzJdLHAyWzJdKSApLFxuICAgICAgICAgICAgICAgICAgICBGLmFkZCggWjFaMSAsIFoyWjIgKSkpOyAgICAgICAgICAgIC8vIFozID0gKChaMStaMileMi1aMVoxLVoyWjIpICogSFxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbmVnKHApIHtcbiAgICAgICAgcmV0dXJuIFtwWzBdLCB0aGlzLkYubmVnKHBbMV0pLCBwWzJdXTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSwgdGhpcy5uZWcoYikpO1xuICAgIH1cblxuICAgIGRvdWJsZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAsIHRoaXMuemVybykpIHJldHVybiBwO1xuXG4gICAgICAgIGNvbnN0IEEgPSBGLnNxdWFyZSggcFswXSApOyAgICAgICAgICAgICAgICAgICAgLy8gQSA9IFgxXjJcbiAgICAgICAgY29uc3QgQiA9IEYuc3F1YXJlKCBwWzFdICk7ICAgICAgICAgICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICBjb25zdCBDID0gRi5zcXVhcmUoIEIgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEMgPSBCXjJcblxuICAgICAgICBsZXQgRCA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocFswXSAsIEIgKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIEEgLCBDKSk7XG4gICAgICAgIEQgPSBGLmFkZChELEQpOyAgICAgICAgICAgICAgICAgICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuXG4gICAgICAgIGNvbnN0IEUgPSBGLmFkZCggRi5hZGQoQSxBKSwgQSk7ICAgICAgICAgIC8vIEUgPSAzICogQVxuICAgICAgICBjb25zdCBGRiA9Ri5zcXVhcmUoIEUgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEYgPSBFXjJcblxuICAgICAgICByZXNbMF0gPSBGLnN1YiggRkYgLCBGLmFkZChELEQpICk7ICAgICAgICAgLy8gWDMgPSBGIC0gMiBEXG5cbiAgICAgICAgbGV0IGVpZ2h0QyA9IEYuYWRkKCBDICwgQyApO1xuICAgICAgICBlaWdodEMgPSBGLmFkZCggZWlnaHRDICwgZWlnaHRDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIEUsXG4gICAgICAgICAgICAgICAgICAgIEYuc3ViKCBELCByZXNbMF0gKSksXG4gICAgICAgICAgICAgICAgZWlnaHRDKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG5cbiAgICAgICAgY29uc3QgWTFaMSA9IEYubXVsKCBwWzFdICwgcFsyXSApO1xuICAgICAgICByZXNbMl0gPSBGLmFkZCggWTFaMSAsIFkxWjEgKTsgICAgICAgICAgICAgICAgIC8vIFozID0gMiAqIFkxICogWjFcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGFmZmluZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfSBlbHNlIGlmIChGLmVxKHBbMl0sIEYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBaX2ludiA9IEYuaW52KHBbMl0pO1xuICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgY29uc3QgWjNfaW52ID0gRi5tdWwoWjJfaW52LCBaX2ludik7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcbiAgICAgICAgICAgIHJlc1swXSA9IEYubXVsKHBbMF0sWjJfaW52KTtcbiAgICAgICAgICAgIHJlc1sxXSA9IEYubXVsKHBbMV0sWjNfaW52KTtcbiAgICAgICAgICAgIHJlc1syXSA9IEYub25lO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlBZmZpbmUoYXJyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhY2NNdWwgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgrMSk7XG4gICAgICAgIGFjY011bFswXSA9IEYub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBhY2NNdWxbaV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY011bFtpKzFdID0gRi5tdWwoYWNjTXVsW2ldLCBhcnJba2V5c1tpXV1bMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWNjTXVsW2tleXMubGVuZ3RoXSA9IEYuaW52KGFjY011bFtrZXlzLmxlbmd0aF0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBrZXlzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChGLmVxKGFycltrZXlzW2ldXVsyXSwgRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IGFjY011bFtpKzFdO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXSA9IHRoaXMuemVybztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWl9pbnYgPSBGLm11bChhY2NNdWxbaV0sIGFjY011bFtpKzFdKTtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaV0gPSBGLm11bChhcnJba2V5c1tpXV1bMl0sIGFjY011bFtpKzFdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IFoyX2ludiA9IEYuc3F1YXJlKFpfaW52KTtcbiAgICAgICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVswXSA9IEYubXVsKGFycltrZXlzW2ldXVswXSxaMl9pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsxXSA9IEYubXVsKGFycltrZXlzW2ldXVsxXSxaM19pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsyXSA9IEYub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBlcShwMSwgcDIpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHAxWzJdLCB0aGlzLkYuemVybykpIHJldHVybiB0aGlzLkYuZXEocDJbMl0sIHRoaXMuRi56ZXJvKTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7XG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApO1xuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7XG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpO1xuXG4gICAgICAgIHJldHVybiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpO1xuICAgIH1cblxuICAgIGlzWmVybyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKHBbMl0pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGNwWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhjcFsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcbiAgICAgICAgfSB3aGlsZSAoKFBbMV0gPT0gbnVsbCl8fChGLmlzWmVyb1tQXSkpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBpc0dyZWF0ZXN0KEYsIFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG4gICAgICAgIFBbMl0gPSBGLm9uZTtcblxuICAgICAgICBpZiAodGhpcy5jb2ZhY3Rvcikge1xuICAgICAgICAgICAgUCA9IHRoaXMubXVsU2NhbGFyKFAsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgUCA9IHRoaXMuYWZmaW5lKFApO1xuXG4gICAgICAgIHJldHVybiBQO1xuXG4gICAgfVxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBjb25zdCBCdWZmViA9IG5ldyBVaW50OEFycmF5KGJ1ZmYsIG8sIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIEJ1ZmZWLmZpbGwoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRUpNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvKzIqdGhpcy5GLm44LCBwWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFSk0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyKTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgbywgRi5uOCk7XG4gICAgICAgIGlmICh2WzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBncmVhdGVzdCA9ICgodlswXSAmIDB4ODApICE9IDApO1xuICAgICAgICB2WzBdID0gdlswXSAmIDB4N0Y7XG4gICAgICAgIFBbMF0gPSBGLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0KSB2WzBdID0gdlswXSB8IDB4ODA7ICAvLyBzZXQgYmFjayBhZ2FpbiB0aGUgb2xkIHZhbHVlXG5cbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICBQWzFdID0gRi5zcXJ0KHgzYik7XG5cbiAgICAgICAgaWYgKFBbMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUG9pbnQhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCB0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIHYuZmlsbCgwKTtcbiAgICAgICAgICAgIHZbMF0gPSAweDQwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuXG4gICAgICAgIGlmIChpc0dyZWF0ZXN0KHRoaXMuRiwgcFsxXSkpIHtcbiAgICAgICAgICAgIHZbMF0gPSB2WzBdIHwgMHg4MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGlmIChidWZmWzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgbywgcCkge1xuICAgICAgICB0aGlzLnRvUnByQkUoYnVmZiwgbywgcCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBidWZmW29dID0gYnVmZltvXSB8IDB4NDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuXG52YXIgdXRpbHMkNiA9IHt9O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnV0aWxzJDYuYmlnSW50MkJ5dGVzTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGbik7XG4gICAgICAgIHYgPSB2ID4+IDhuO1xuICAgIH1cbiAgICByZXR1cm4gYjtcbn07XG5cbnV0aWxzJDYuYmlnSW50MlUzMkxFID0gZnVuY3Rpb24gYmlnSW50MkJ5dGVzTEUoX2EsIGxlbikge1xuICAgIGNvbnN0IGIgPSBBcnJheShsZW4pO1xuICAgIGxldCB2ID0gQmlnSW50KF9hKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuOyBpKyspIHtcbiAgICAgICAgYltpXSA9IE51bWJlcih2ICYgMHhGRkZGRkZGRm4pO1xuICAgICAgICB2ID0gdiA+PiAzMm47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5pc09jYW1OdW0gPSBmdW5jdGlvbihhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9IDMpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMF0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMV0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYVsyXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2ludCA9IGZ1bmN0aW9uIGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiaW50XCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge307XG5cbiAgICBjb25zdCBuMzIgPSBuNjQqMjtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcXooXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEd0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2dlX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9sdF91KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0KGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKSkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3N1YihcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInhcIiksIDQqaSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSwgNCppKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgIGMuaTY0X2FuZCggYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0ICggYy5pNjRfc2hyX3MgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IFwiYzBcIjtcbiAgICAgICAgbGV0IGMxID0gXCJjMVwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgIGsqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgW2MwLCBjMV0gPSBbYzEsIGMwXTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgbjMyKjQqMi00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMF9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMV9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCA0KmksIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRBZGQxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fYWRkMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJweFwiLCBjLmdldExvY2FsKFwieFwiKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwiY1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwicHhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERpdigpIHtcbiAgICAgICAgX2J1aWxkTXVsMSgpO1xuICAgICAgICBfYnVpbGRBZGQxKCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlWFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVZXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3lcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFJhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuZ2V0TG9jYWwoXCJjY1wiKTtcbiAgICAgICAgY29uc3QgUiA9IGMuZ2V0TG9jYWwoXCJyclwiKTtcbiAgICAgICAgY29uc3QgcHIxID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCBSMSA9IGMuaTMyX2NvbnN0KHByMSk7XG4gICAgICAgIGNvbnN0IFIyID0gYy5pMzJfY29uc3QocHIxK244KTtcblxuICAgICAgICAvLyBJYyBjIGlzIDAgdGhlbiBzdG9yZSBpdCBpbiBhbiBhdXhpbGlhcnkgYnVmZmVyXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgYy5nZXRMb2NhbChcImNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNjXCIsIENhdXgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIC8vIEljIHIgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicnJcIiwgUmF1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gQ29weVxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIFIpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ5XCIpLCBZKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBDKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBSMSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9jb25zdChuOC0xKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVZXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG5cbiAgICAgICAgLy8gd2hpbGUgKGVZPjMpJiYoWVtlWV09PTApIGV5LS07XG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChZICwgYy5nZXRMb2NhbChcImVZXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJlWVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeVwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKCBZLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRm9yY2UgYSBkaXZpZGUgYnkgMCBpZiBxdW90aWVuIGlzIDBcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuaTY0X2Rpdl91KGMuaTY0X2NvbnN0KDApLCBjLmk2NF9jb25zdCgwKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAvLyB3aGlsZSAoZVg+NykmJihZW2VYXT09MCkgZXgtLTtcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoUiAsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVYXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFIsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg3KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfZGl2X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJlY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gV2hpbGUgZ3JlYXRlciB0aGFuIDMyIGJpdHMgb3IgZWMgaXMgbmVnLCBzaHIgYW5kIGluYyBleHBcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGMDAwMDAwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZWNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwic3hcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBSLCBZKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInN4XCIsIGMuaTY0X2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImVjXCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsMVwiLCBZLCBjLmdldExvY2FsKFwic3hcIiksIFIyKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgUixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoUjIsIGMuZ2V0TG9jYWwoXCJlY1wiKSksXG4gICAgICAgICAgICAgICAgUlxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2FkZDFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoQywgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2VNb2QoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicG1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXd0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInFxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXdyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3dwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ250XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdueFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IG11bEJ1ZmYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMikpO1xuICAgICAgICBjb25zdCBhdXg3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInRcIiwgYXV4MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdudFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJcIiwgYXV4MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicG1cIiksIGF1eDIpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5ld3RcIiwgYXV4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGF1eDMpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ25uZXd0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBhdXg0KSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJweFwiKSwgYXV4NClcbiAgICAgICAgKTtcblxuXG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFxXCIsIGF1eDUpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJxclwiLCBhdXg2KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwieFwiLCBhdXg3KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5ld3JcIikgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kaXZcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJuZXdyXCIpLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJxclwiKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInFxXCIpLCBjLmdldExvY2FsKFwibmV3dFwiKSwgbXVsQnVmZiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbm5ld3RcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwidFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBjLmdldExvY2FsKFwibmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwieFwiLCBjLmdldExvY2FsKFwic3dwXCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5nZXRMb2NhbChcInNpZ254XCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBjLmdldExvY2FsKFwibmV3clwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBjLmdldExvY2FsKFwicXJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInFyXCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdudFwiKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSlcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkR3RlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkRGl2KCk7XG4gICAgYnVpbGRJbnZlcnNlTW9kKCk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhciA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQ29weSwgb3BJbml0KSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcImJhc2VcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuZ3RoXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJiXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCkpO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiaVwiLCBjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiYlwiLFxuICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICAuLi5pbm5lckxvb3AoKSxcbiAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgYy5icigwKVxuICAgICkpKTtcblxuXG4gICAgZnVuY3Rpb24gaW5uZXJMb29wKCkge1xuICAgICAgICBjb25zdCBjb2RlID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIGNvZGUucHVzaChcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KCBjLmdldExvY2FsKFwiYlwiKSwgYy5pMzJfY29uc3QoMHg4MCA+PiBpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MCA+PiBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQiwgYy5nZXRMb2NhbChcInJcIiksYXV4LCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG59O1xuXG52YXIgYnVpbGRfYmF0Y2hpbnZlcnNlID0gYnVpbGRCYXRjaEludmVyc2UkMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaEludmVyc2UkMyhtb2R1bGUsIHByZWZpeCkge1xuXG5cbiAgICBjb25zdCBuOCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0ubjY0Kjg7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEludmVyc2VcIik7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiaW5TdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJvdXRTdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIixcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAvLyBBbGxvYyBXb3JraW5nIHNwYWNlIGZvciBhY2N1bXVsYXRlZCB1bWx0aXBsaWNhdGlvbnNcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgLy8gYXV4WzBdID0gYTtcbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9vbmVcIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgLy8gZm9yIChpPTA7aTxuO2krKykgYXV4W2ldID0gYXV4W2ktMV0qaW5baV1cbiAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICAvLyBwb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAvLyBpdE91dCA9IHBPdXQgKyAobi0xKSpzdGVwT3V0ICAgLy8gUG9pbnQgdG8gdGhlIGxhc3RcbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib3V0U3RlcFwiKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gYXV4W24tMV0gPSAxL2F1eFtuLTFdXG4gICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaW52ZXJzZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSApLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooIGMuZ2V0TG9jYWwoXCJpXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksIEFVWCksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCtcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5nZXRMb2NhbChcIm91dFN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcblxuICAgICk7XG5cblxuICAgIC8vIFJlY292ZXIgT2xkIG1lbW9yeVxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICApXG4gICAgKTtcblxufVxuXG52YXIgYnVpbGRfYmF0Y2hjb252ZXJ0aW9uID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMyhtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYnVpbGRfYmF0Y2hvcCA9IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDI7XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDIobW9kdWxlLCBmbk5hbWUsIGludGVybmFsRm5OYW1lLCBzaXplSW4sIHNpemVPdXQsIHJldmVyc2UpIHtcbiAgICBpZiAodHlwZW9mIHJldmVyc2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgLy8gU2V0IHRoZSByZXZlcnNlIGluIGEgd2F5IHRoYXQgYWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBidWZmZXIgYXMgaW4vb3V0LlxuICAgICAgICBpZiAoc2l6ZUluIDwgc2l6ZU91dCkge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXZlcnNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbjJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4xXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbjJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVJbilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplT3V0KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5nZXRMb2NhbChcInBJbjFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuZ2V0TG9jYWwoXCJwSW4yXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYmlnaW50ID0ge307XG5cbi8vIE1hbnkgb2YgdGhlc2UgdXRpbGl0aWVzIGFyZSBmcm9tIHRoZSBgYmlnLWludGVnZXJgIGxpYnJhcnksXG4vLyBidXQgYWRqdXN0ZWQgdG8gb25seSB3b3JrIHdpdGggbmF0aXZlIEJpZ0ludCB0eXBlXG4vLyBSZWYgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9ibG9iL2U1ZDIxNTRkM2M0MTcwNjljNTFlNzExNmJhZmMzYjkxZDBiOWZlNDEvQmlnSW50ZWdlci5qc1xuLy8gT3JpZ2luYWxseSBsaWNlbnNlZCBUaGUgVW5saWNlbnNlXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMShuKSB7XG4gICAgcmV0dXJuIG4gKiBuO1xufVxuXG5mdW5jdGlvbiBpc09kZCQ0KG4pIHtcbiAgICByZXR1cm4gbiAlIDJuICE9PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICByZXR1cm4gbiAlIDJuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQzKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1Bvc2l0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA+IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNShuKSB7XG4gICAgaWYgKGlzTmVnYXRpdmUkMyhuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhYnMobikge1xuICAgIHJldHVybiBuIDwgMG4gPyAtbiA6IG47XG59XG5cbmZ1bmN0aW9uIGlzVW5pdChuKSB7XG4gICAgcmV0dXJuIGFicyhuKSA9PT0gMW47XG59XG5cbmZ1bmN0aW9uIG1vZEludiQzKGEsIG4pIHtcbiAgICB2YXIgdCA9IDBuLCBuZXdUID0gMW4sIHIgPSBuLCBuZXdSID0gYWJzKGEpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgd2hpbGUgKG5ld1IgIT09IDBuKSB7XG4gICAgICAgIHEgPSByIC8gbmV3UjtcbiAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgIHQgPSBuZXdUO1xuICAgICAgICByID0gbmV3UjtcbiAgICAgICAgbmV3VCA9IGxhc3RUIC0gKHEgKiBuZXdUKTtcbiAgICAgICAgbmV3UiA9IGxhc3RSIC0gKHEgKiBuZXdSKTtcbiAgICB9XG4gICAgaWYgKCFpc1VuaXQocikpIHRocm93IG5ldyBFcnJvcihhLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgIGlmIChjb21wYXJlKHQsIDBuKSA9PT0gLTEpIHtcbiAgICAgICAgdCA9IHQgKyBuO1xuICAgIH1cbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGEpKSB7XG4gICAgICAgIHJldHVybiAtdDtcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIG1vZFBvdyQyKG4sIGV4cCwgbW9kKSB7XG4gICAgaWYgKG1vZCA9PT0gMG4pIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB0YWtlIG1vZFBvdyB3aXRoIG1vZHVsdXMgMFwiKTtcbiAgICB2YXIgciA9IDFuLFxuICAgICAgICBiYXNlID0gbiAlIG1vZDtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGV4cCkpIHtcbiAgICAgICAgZXhwID0gZXhwICogLTFuO1xuICAgICAgICBiYXNlID0gbW9kSW52JDMoYmFzZSwgbW9kKTtcbiAgICB9XG4gICAgd2hpbGUgKGlzUG9zaXRpdmUoZXhwKSkge1xuICAgICAgICBpZiAoYmFzZSA9PT0gMG4pIHJldHVybiAwbjtcbiAgICAgICAgaWYgKGlzT2RkJDQoZXhwKSkgciA9IHIgKiBiYXNlICUgbW9kO1xuICAgICAgICBleHAgPSBleHAgLyAybjtcbiAgICAgICAgYmFzZSA9IHNxdWFyZSQxKGJhc2UpICUgbW9kO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUFicyhhLCBiKSB7XG4gICAgYSA9IGEgPj0gMG4gPyBhIDogLWE7XG4gICAgYiA9IGIgPj0gMG4gPyBiIDogLWI7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGlzRGl2aXNpYmxlQnkoYSwgbikge1xuICAgIGlmIChuID09PSAwbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiB0cnVlO1xuICAgIGlmIChjb21wYXJlQWJzKG4sIDJuKSA9PT0gMCkgcmV0dXJuIGlzRXZlbihhKTtcbiAgICByZXR1cm4gYSAlIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgIHZhciBuID0gYWJzKHYpO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA9PT0gMm4gfHwgbiA9PT0gM24gfHwgbiA9PT0gNW4pIHJldHVybiB0cnVlO1xuICAgIGlmIChpc0V2ZW4obikgfHwgaXNEaXZpc2libGVCeShuLCAzbikgfHwgaXNEaXZpc2libGVCeShuLCA1bikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA8IDQ5bikgcmV0dXJuIHRydWU7XG4gICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG59XG5cbmZ1bmN0aW9uIHByZXYobikge1xuICAgIHJldHVybiBuIC0gMW47XG59XG5cbmZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgdmFyIG5QcmV2ID0gcHJldihuKSxcbiAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICByID0gMCxcbiAgICAgICAgZCwgaSwgeDtcbiAgICB3aGlsZSAoaXNFdmVuKGIpKSBiID0gYiAvIDJuLCByKys7XG4gICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG4gPCBhW2ldKSBjb250aW51ZTtcbiAgICAgICAgeCA9IG1vZFBvdyQyKEJpZ0ludChhW2ldKSwgYiwgbik7XG4gICAgICAgIGlmIChpc1VuaXQoeCkgfHwgeCA9PT0gblByZXYpIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgIHggPSBzcXVhcmUkMSh4KSAlIG47XG4gICAgICAgICAgICBpZiAoaXNVbml0KHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoeCA9PT0gblByZXYpIGNvbnRpbnVlIG5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNQcmltZSQxKHApIHtcbiAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZShwKTtcbiAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICB2YXIgbiA9IGFicyhwKTtcbiAgICB2YXIgYml0cyA9IGJpdExlbmd0aCQ1KG4pO1xuICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogTnVtYmVyKGJpdHMpO1xuICAgIHZhciB0ID0gTWF0aC5jZWlsKGxvZ04pO1xuICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgYS5wdXNoKEJpZ0ludChpICsgMikpO1xuICAgIH1cbiAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xufVxuXG5iaWdpbnQuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDU7XG5iaWdpbnQuaXNPZGQgPSBpc09kZCQ0O1xuYmlnaW50LmlzTmVnYXRpdmUgPSBpc05lZ2F0aXZlJDM7XG5iaWdpbnQuYWJzID0gYWJzO1xuYmlnaW50LmlzVW5pdCA9IGlzVW5pdDtcbmJpZ2ludC5jb21wYXJlID0gY29tcGFyZTtcbmJpZ2ludC5tb2RJbnYgPSBtb2RJbnYkMztcbmJpZ2ludC5tb2RQb3cgPSBtb2RQb3ckMjtcbmJpZ2ludC5pc1ByaW1lID0gaXNQcmltZSQxO1xuYmlnaW50LnNxdWFyZSA9IHNxdWFyZSQxO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkSW50ID0gYnVpbGRfaW50O1xuY29uc3QgdXRpbHMkNSA9IHV0aWxzJDY7XG5jb25zdCBidWlsZEV4cCQyID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQyID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgYnVpbGRCYXRjaENvbnZlcnRpb24kMSA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkQmF0Y2hPcCA9IGJ1aWxkX2JhdGNob3A7XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDQsIG1vZEludjogbW9kSW52JDIsIG1vZFBvdzogbW9kUG93JDEsIGlzUHJpbWUsIGlzT2RkOiBpc09kZCQzLCBzcXVhcmUgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxbSA9IGZ1bmN0aW9uIGJ1aWxkRjFtKG1vZHVsZSwgX3EsIF9wcmVmaXgsIF9pbnRQcmVmaXgpIHtcbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkNChxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFtXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGludFByZWZpeCA9IGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfaW50UHJlZml4KTtcbiAgICBjb25zdCBwcSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShxLCBuOCkpO1xuXG4gICAgY29uc3QgcFIyID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoc3F1YXJlKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcE9uZSA9IG1vZHVsZS5hbGxvYyh1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKCgxbiA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuICAgIGNvbnN0IHBaZXJvID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoMG4sIG44KSk7XG4gICAgY29uc3QgX21pbnVzT25lID0gcSAtIDFuO1xuICAgIGNvbnN0IF9lID0gX21pbnVzT25lID4+IDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF9lLCBuOCkpO1xuXG4gICAgY29uc3QgX2VQbHVzT25lID0gX2UgKyAxbjsgLy8gZSA9IChwLTEpLzJcbiAgICBjb25zdCBwZVBsdXNPbmUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2VQbHVzT25lLCBuOCkpO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgcHE6IHBxLFxuICAgICAgICBwUjI6IHBSMixcbiAgICAgICAgbjY0OiBuNjQsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHBPbmU6IHBPbmUsXG4gICAgICAgIHBaZXJvOiBwWmVybyxcbiAgICAgICAgcGVQbHVzT25lOiBwZVBsdXNPbmVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX2NvbnN0KHBPbmUpLCBjLmdldExvY2FsKFwicHJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwieFwiKSwgIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksICBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuaTMyX2NvbnN0KHBaZXJvKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU2lnbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc2lnblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInhcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KC0xKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTVJlZHVjdCgpIHtcbiAgICAgICAgY29uc3QgY2FycmllcyA9IG1vZHVsZS5hbGxvYyhuMzIqbjMyKjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX21SZWR1Y3RcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImNcIiwgYy5pNjRfY29uc3QoMCkpKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIGkqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuMzI7IGorKykge1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIChpK2opKjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdChwcSksIGoqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGkraikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoY2FycmllcyksXG4gICAgICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9hZGRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuMzIqNClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcblxuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieFwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFhbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInhcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ4XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTwoKGsrMSk+PjEpICkmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGJ5IDJcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGslMiA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihrPj4xLCBrPj4xKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgb2xkIGNhcnJ5XG5cbiAgICAgICAgICAgIGlmIChrPjApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMV9vbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrPj1uMzIpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrLW4zMikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfd3JhcF9pNjQoYy5nZXRMb2NhbChjMV9vbGQpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZU9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4K1wiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuXG4gICAgICAgIGNvbnN0IHBBdXgyID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwQXV4MikgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmkzMl9jb25zdChwQXV4MiArIG44KSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbVJlZHVjdFwiLCBjLmkzMl9jb25zdChwQXV4MiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9pbnZlcnNlTW9kXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB2YXJpb3VzIHZhbHVzZSBuZWVkZWQgZm9yIHNxcnRcblxuXG4gICAgbGV0IF9ucXIgPSAybjtcbiAgICBpZiAoaXNQcmltZShxKSkge1xuICAgICAgICB3aGlsZSAobW9kUG93JDEoX25xciwgX2UsIHEpICE9PSBfbWludXNPbmUpIF9ucXIgPSBfbnFyICsgMW47XG4gICAgfVxuXG4gICAgbGV0IHMyID0gMDtcbiAgICBsZXQgX3QgPSBfbWludXNPbmU7XG5cbiAgICB3aGlsZSAoKCFpc09kZCQzKF90KSkmJihfdCAhPT0gMG4pKSB7XG4gICAgICAgIHMyKys7XG4gICAgICAgIF90ID0gX3QgPj4gMW47XG4gICAgfVxuICAgIGNvbnN0IHB0ID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90LCBuOCkpO1xuXG4gICAgY29uc3QgX25xclRvVCA9IG1vZFBvdyQxKF9ucXIsIF90LCBxKTtcbiAgICBjb25zdCBwTnFyVG9UID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKF9ucXJUb1QgPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcblxuICAgIGNvbnN0IF90UGx1c09uZU92ZXIyID0gKF90ICsgMW4pID4+IDFuO1xuICAgIGNvbnN0IHB0UGx1c09uZU92ZXIyID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90UGx1c09uZU92ZXIyLCBuOCkpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgU1EgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gSWYgKG49PTApIHJldHVybiAwXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9jb25zdChzMikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE5xclRvVCksIEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHQpLCBjLmkzMl9jb25zdChuOCksIFQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHRQbHVzT25lT3ZlcjIpLCBjLmkzMl9jb25zdChuOCksIFIpLFxuXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBULCBPTkUpKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgVCwgU1EpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgU1EsIE9ORSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIFNRLCBTUSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgQywgQiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm1cIiksIGMuZ2V0TG9jYWwoXCJpXCIpKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJqXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQiksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1cIiwgYy5nZXRMb2NhbChcImlcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBULCBDLCBUKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIEIsIFIpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgUiwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT05FID0gYy5pMzJfY29uc3QocE9uZSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocGUpLCBjLmkzMl9jb25zdChuOCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgQVVYLCBPTkUpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZExvYWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2xvYWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHBBdXggPSBtb2R1bGUuYWxsb2MobjgpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChwQXV4KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2d0X3UoYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBSMiksIFIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBSLCBBVVgpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibFwiLCBjLmkzMl9yZW1fdSggYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLmlmKGMuaTMyX2VxeihjLmdldExvY2FsKFwibFwiKSksIGMucmV0KFtdKSksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBBVVgpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcShjLmdldExvY2FsKFwialwiKSwgYy5nZXRMb2NhbChcImxcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgIHBBdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgUiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbG9hZFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoaW50UHJlZml4ICsgXCJfZXFcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBPbmUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9jb3B5XCIsIHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl96ZXJvXCIsIHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oaW50UHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkTVJlZHVjdCgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRMb2FkKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDIobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbiQxKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE5lZ1wiLCBwcmVmaXggKyBcIl9uZWdcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEFkZFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFN1YlwiLCBwcmVmaXggKyBcIl9zdWJcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE11bFwiLCBwcmVmaXggKyBcIl9tdWxcIiwgbjgsIG44KTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc05lZ2F0aXZlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbVJlZHVjdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZU9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9sb2FkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEV4cCQyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBuOCxcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBpbnRQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIGJ1aWxkU3FydCgpO1xuICAgICAgICBidWlsZElzU3F1YXJlKCk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgfVxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiKTtcbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRGMW0kMiA9YnVpbGRfZjFtO1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQzIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9mMSA9IGZ1bmN0aW9uIGJ1aWxkRjEobW9kdWxlLCBfcSwgX3ByZWZpeCwgX2YxbVByZWZpeCwgX2ludFByZWZpeCkge1xuXG4gICAgY29uc3QgcSA9IEJpZ0ludChfcSk7XG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDMocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImYxXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NFxuICAgIH07XG5cbiAgICBjb25zdCBpbnRQcmVmaXggPSBfaW50UHJlZml4IHx8IFwiaW50XCI7XG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMihtb2R1bGUsIHEsIF9mMW1QcmVmaXgsIGludFByZWZpeCk7XG5cblxuICAgIGNvbnN0IHBSMiA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBSMjtcbiAgICBjb25zdCBwcSA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBxO1xuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucGVQbHVzT25lO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG4gICAgICAgIGNvbnN0IHBBdXgxID0gbW9kdWxlLmFsbG9jKG44KTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QocEF1eDEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBdXgxKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwZVBsdXNPbmUpIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfYWRkXCIsIHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfc3ViXCIsIHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfbmVnXCIsIHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX29uZVwiLCBwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAkMSA9IGJ1aWxkX3RpbWVzc2NhbGFyO1xuY29uc3QgYnVpbGRCYXRjaEludmVyc2UkMSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcbmNvbnN0IHV0aWxzJDQgPSB1dGlscyQ2O1xuXG52YXIgYnVpbGRfZjJtID0gZnVuY3Rpb24gYnVpbGRGMm0obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucTtcblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqMlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25qdWdhdGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Nvbmp1Z2F0ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHkwLCBBKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnkwXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCB5MSwgQiksICAgICAgICAgICAgIC8vIEIgPSB4MSp5MVxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQyksICAgICAgICAgICAgIC8vIEMgPSB4MCArIHgxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHkwLCB5MSwgRCksICAgICAgICAgICAgIC8vIEQgPSB5MCArIHkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIEMpLCAgICAgICAgICAgICAgIC8vIEMgPSAoeDAgKyB4MSkqKHkwICsgeTEpID0geDAqeTAreDAqeTEreDEqeTAreDEqeTFcblxuICAgICAgICAgICAgLy8gIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWUpLCByMCksICAvLyByMCA9IG5yKih4MSp5MSlcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEIsIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCByMCwgcjApLCAgICAgICAgICAgICAvLyByMCA9IHgwKnkwICsgbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCByMSksICAgICAgICAgICAgIC8vIHIxID0geDAqeTAreDEqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgQywgcjEsIHIxKSAgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MSAtIHgwKnkwK3gxKnkxID0geDAqeTEreDEqeTBcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHksIHIwKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnlcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHksIHIxKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBOQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFCUE5BQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBBQiA9IHgwKnkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgQUIpLFxuXG4gICAgICAgICAgICAvLyBBUEIgPSB4MCt5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFQQiksXG5cbiAgICAgICAgICAgIC8vIEFQQk4wID0geDAgKyBucip4MVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgeDEsIEFQTkIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgQVBOQiwgQVBOQiksXG5cbiAgICAgICAgICAgIC8vIEFCUE5BQiA9IGFiICsgbnIqYWJcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEFCLCBBQlBOQUIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBQlBOQUIsIEFCLCBBQlBOQUIpLFxuXG4gICAgICAgICAgICAvLyByMCA9IEFQQiAqIEFQTkIgLSBBQlBOQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQVBCLCBBUE5CLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIwLCBBQlBOQUIsIHIwKSxcblxuICAgICAgICAgICAgLy8gcjEgPSBBQiArIEFCXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCLCBBQiwgcjEpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX29uZVwiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDEsIHkxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIC8vIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQxLCB0MiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHQwLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB0MywgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHQzLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCByMSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcbiAgICAvLyBBbGcgOWFkalxuICAgIGZ1bmN0aW9uIGJ1aWxkU3FydCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMzQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAzbikgLyA0biwgZjFuOCApKSk7XG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTEyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gMW4pIC8gMm4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFhID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFiID0gYy5pMzJfY29uc3QocG4xK2YxbjgpO1xuICAgICAgICBjb25zdCB4MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLGEwLG4xKSwgYy51bnJlYWNoYWJsZSgpICksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMSwgYSwgeDApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIGFscGhhLCBuMSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfemVyb1wiLCBuMWEpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfb25lXCIsIG4xYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgbjEsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBiLCBhbHBoYSwgYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYiwgZTEyLCBjLmkzMl9jb25zdChmMW44KSwgYiksXG5cbiAgICAgICAgICAgICAgICAgICAgLy8geCA9IEYubXVsKGIsIHgwKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBiLCB4MCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcblxuICAgICAgICBjb25zdCBhID0gYy5nZXRMb2NhbChcImFcIik7XG4gICAgICAgIGNvbnN0IGExID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhbHBoYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYTAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IHBuMSA9IG1vZHVsZS5hbGxvYyhmMW44KjIpO1xuICAgICAgICBjb25zdCBuMSA9IGMuaTMyX2NvbnN0KHBuMSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIG4xKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdcIiwgbjEsIG4xKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYSwgZTM0LCBjLmkzMl9jb25zdChmMW44KSwgYTEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBhMSwgYWxwaGEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhLCBhbHBoYSwgYWxwaGEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgYWxwaGEsIGEwKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYTAsIGFscGhhLCBhMCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGEwLFxuICAgICAgICAgICAgICAgICAgICBuMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZE11bDEoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkQ29uanVnYXRlKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkVGltZXNTY2FsYXIoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX211bFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25qdWdhdGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDEobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwJDEoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIGYxbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgYnVpbGRTcXJ0KCk7XG4gICAgYnVpbGRJc1NxdWFyZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3FydFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkRXhwID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcblxudmFyIGJ1aWxkX2YzbSA9IGZ1bmN0aW9uIGJ1aWxkRjNtKG1vZHVsZSwgbXVsTm9uUmVzaWR1ZUZuLCBwcmVmaXgsIGYxbVByZWZpeCkge1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGYxbjggPSBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCo4O1xuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqM1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDIsIHkyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGNkID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjZC5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieFwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgYyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IEEgPSBjZC5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieVwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gY2QuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgYUEgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYV9iID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFfQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9DID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkJfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhLCBBLCBhQSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiLCBCLCBiQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjLCBDLCBjQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGEsIGIsIGFfYiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCBBX0IpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYywgYV9jKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEMsIEFfQyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiLCBjLCBiX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQl9DKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIGJCLCBhQV9iQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgY0MsIGFBX2NDKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJCLCBjQywgYkJfY0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiX2MsIEJfQywgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIGJCX2NDLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgcjAsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhX2IsIEFfQiwgcjEpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjEsIGFBX2JCLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgY0MsIEFVWCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCByMSwgQVVYLCByMSksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYywgQV9DLCByMiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMiwgYUFfY0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCBiQiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEEsIHMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgYWIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhYiwgYWIsIHMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBBLCBCLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCBDLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHMyLCBzMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgQywgYmMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiYywgYmMsIHMzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3NxdWFyZVwiLCBDLCBzNCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHMzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBzNCwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMCwgczQsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgczMsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjIsIHIyKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDAsIHkwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MiwgeTIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHgxLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDIsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgxLCB4MiwgdDUpLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NSwgYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIGMwLCBjMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQyLCBjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCBjMSwgdDMsIGMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDEsIHQ0LCBjMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgyLCBjMSwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIGMyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgdDYsIEFVWCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDYsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCBjMCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIEFVWCwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgyKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDEpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgwKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc09uZVwiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgyKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkSXNPbmUoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZE9uZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGROZWcoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlKG1vZHVsZSwgcHJlZml4KTtcbiAgICBidWlsZEV4cChcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCJcbiAgICApO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9leHBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfdGltZXNzY2FsYXJuYWYgPSBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyTkFGKG1vZHVsZSwgZm5OYW1lLCBlbGVtZW50TGVuLCBvcEFCLCBvcEFBLCBvcEFtQiwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm9sZDBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm5iaXRzXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJjdXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImNhcnJ5XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRCaXQoSURYKSB7XG4gICAgICAgIHJldHVybiBjLmkzMl9hbmQoXG4gICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkZDKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHgxRilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoQml0KGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmlmKFxuICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIm5iaXRzXCIsIGMuaTMyX3NobChjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpLCBjLmkzMl9jb25zdCgzKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwib2xkMFwiLCBjLmkzMl9sb2FkKGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvbGQwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuYml0c1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRkZGRkZGOClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJsYXN0XCIsZ2V0Qml0KGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJjYXJyeVwiLGMuaTMyX2NvbnN0KDApKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwibmJpdHNcIikpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImN1clwiLCBnZXRCaXQoYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJsYXN0XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDI1NSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwiY3VyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAvLyBwIGFscmVhZHkgcG9pbnRzIHRvIHRoZSBsYXN0IGJpdFxuXG4gICAgICAgIGMuY2FsbChvcENvcHksIGMuZ2V0TG9jYWwoXCJiYXNlXCIpLCBhdXgpLFxuXG4gICAgICAgIGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICBjLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImN1clwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBQiwgIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKG9wQW1CLCBjLmdldExvY2FsKFwiclwiKSwgYXV4LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcIm9sZDBcIiksIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG5cbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pMzJfc3RvcmUoIGMuaTMyX2NvbnN0KDApLCBjLmdldExvY2FsKFwib2xkMFwiKSlcblxuICAgICk7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX211bHRpZXhwID0gZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChtb2R1bGUsIHByZWZpeCwgZm5OYW1lLCBvcEFkZCwgbjhiKSB7XG5cbiAgICBjb25zdCBuNjRnID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRHZXRDaHVuaygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9nZXRDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBzY2FsYXJcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gQml0IHRvIHN0YXJ0IGV4dHJhY3RcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIENodW5rIHNpemUgaW4gYml0c1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1RvRW5kXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibWFza1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImJpdHNUb0VuZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9ndF9zKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1RvRW5kXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAwICAgLy8gYWxpZ24gdG8gYnl0ZS5cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg3KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWFza1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXV0aWV4cENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2NodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIGJpdCB3aGVyZSBpdCBzdGFydHMgdGhlIGNodW5rXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5DaHVua3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVuZFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QmFzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQWxsb2NhdGUgbWVtb3J5XG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuVGFibGVcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVGFibGVcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBSZXNldCBUYWJsZVxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAvLyBEaXN0cmlidXRlIGVsZW1lbnRzXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0U2NhbGFyXCIsIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZW5kU2NhbGFyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlbmRTY2FsYXJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZm5OYW1lICsgXCJfZ2V0Q2h1bmtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwSWR4VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcEFkZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJZHhUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRCYXNlXCIpLCBjLmkzMl9jb25zdChuOGIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWx0aWV4cCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5UYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJZHhUYWJsZVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBjb25zdCBwVFNpemVzID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3LFxuICAgICAgICAgICAgMTcsIDE3LCAxNiwgMTYsICAgMTUsIDE0LCAxMywgMTMsXG4gICAgICAgICAgICAxMiwgMTEsIDEwLCAgOSwgICAgOCwgIDcsICA3LCAgNixcbiAgICAgICAgICAgIDUgLCAgNCwgIDMsICAyLCAgICAxLCAgMSwgIDEsICAxXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNodW5rU2l6ZVwiLCBjLmkzMl9sb2FkOF91KCBjLmkzMl9jbHooYy5nZXRMb2NhbChcIm5cIikpLCAgcFRTaXplcyApKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuQ2h1bmtzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0Qml0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkNodW5rc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgLy8gRG91YmxlIG5DaHVuayB0aW1lc1xuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInByXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9jaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJhc2VzXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Qml0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRCaXRcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmVkdWNlVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfcmVkdWNlVGFibGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJpdHMgb2YgdGhlIHRhYmxlXG4gICAgICAgIGYuYWRkTG9jYWwoXCJoYWxmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEFjY1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaGFsZlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXQyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaGFsZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEFjY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBY2NcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDFcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXQyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXQyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeihjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwQWNjXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwVGFibGVcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRHZXRDaHVuaygpO1xuICAgIGJ1aWxkUmVkdWNlVGFibGUoKTtcbiAgICBidWlsZE11dGlleHBDaHVuaygpO1xuICAgIGJ1aWxkTXVsdGlleHAoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUgK1wiX2NodW5rXCIpO1xuXG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRUaW1lc1NjYWxhck5BRiA9IGJ1aWxkX3RpbWVzc2NhbGFybmFmO1xuLy9jb25zdCBidWlsZFRpbWVzU2NhbGFyID0gcmVxdWlyZShcIi4vYnVpbGRfdGltZXNzY2FsYXJcIik7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkTXVsdGlleHAkMSA9IGJ1aWxkX211bHRpZXhwO1xuXG52YXIgYnVpbGRfY3VydmVfamFjb2JpYW5fYTAgPSBmdW5jdGlvbiBidWlsZEN1cnZlKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCwgcEIpIHtcblxuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCozOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwZFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQqMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfb25lXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInAxXCIpKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFNaXhlZFwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoyLCBaMloyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgWjJaMiwgVTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MiwgWjJaMiwgWjJfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBaMl9jdWJlZCwgUzEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFUxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgUzEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcU1peGVkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicDJcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBlaWdodEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgeiksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChjLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCBCKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIEIsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEQsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIEQpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRSwgRiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCB6LCBHKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBGLCB4MywgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQywgQywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIEUsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRDLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBHLCBHLCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERvdWJsZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFhYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0WVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBYWCA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBYWCksXG5cbiAgICAgICAgICAgIC8vIFlZID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIFlZKSxcblxuICAgICAgICAgICAgLy8gWVlZWSA9IFlZXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBZWSwgWVlZWSksXG5cbiAgICAgICAgICAgIC8vIFMgPSAyKigoWDErWVkpXjItWFgtWVlZWSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4LCBZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgUywgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWFgsIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIFlZWVksIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMsIFMsIFMpLFxuXG4gICAgICAgICAgICAvLyBNID0gMypYWCthICAoSGVyYSBhPTApXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgWFgsIFhYLCBNKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBNLCBYWCwgTSksXG5cbiAgICAgICAgICAgIC8vIFozID0gMipZMVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHksIHksIHozKSxcblxuICAgICAgICAgICAgLy8gVCA9IE1eMi0yKlNcbiAgICAgICAgICAgIC8vIFgzID0gVFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIE0sIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgUywgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG5cbiAgICAgICAgICAgIC8vIFkzID0gTSooUy1UKS04KllZWVlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBZWVlZLCBZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIE0sIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRZWVlZLCB5MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAyXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnlBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejIgPSBjLmdldExvY2FsKFwiejJcIik7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX1MxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgeDIsIHgxLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFUyLCBVMSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUzIsIFMxLCBTMl9taW51c19TMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSCwgSCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfUzEsIFMyX21pbnVzX1MxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBVMSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBTMSwgSiwgUzFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMxX0oyLCBTMV9KMiwgUzFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBTMV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIHoyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMloyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejMsIEgsIHozKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRNaXhlZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZE1peGVkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEhIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX3kxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgeDEsIHgyLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgeTEsIFMyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMyX21pbnVzX3kxLCBTMl9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHoxLCBILCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBISCwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRBZmZpbmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIHgyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgeTIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgyLCB4MSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTIsIHkxLCB5Ml9taW51c195MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSCwgSEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEhIICwgSEgsIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEkgLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5Ml9taW51c195MSwgeTJfbWludXNfeTEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBKLCB5MV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeTFfSjIsIHkxX0oyLCB5MV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIHkxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB5LCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHosIHozKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWdBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXRzIFogdG8gT25lXG4gICAgZnVuY3Rpb24gYnVpbGROb3JtYWxpemUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbm9ybWFsaXplXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgejMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIERvZXMgbm90IHNldCBaLlxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cblxuICAgICAgICBjb25zdCBaX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjNfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCB5MyksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2ludmVyc2VcIiwgeiwgWl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgWl9pbnYsIFoyX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBaX2ludiwgWjJfaW52LCBaM19pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeCwgWjJfaW52LCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCBaM19pbnYsIHkzKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvSmFjb2JpYW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeSwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYmF0Y2hJbnZlcnNlXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCozKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuZ2V0TG9jYWwoXCJwQXV4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCtcIl9zcXVhcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmkzMl9jb25zdChuOCozKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGFuZCBkb2VzIG5vdCBhbGxvdyB0byBPVkVSTEFQIGJ1ZmZlcnMuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlQnl0ZXMoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfbHRfcyggYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwicE91dFwiKSApKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZExFTXRvQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b0NcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXAsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc2lnblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9VKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBYLCBjLmkzMl9jb25zdChuOCksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFV0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcFRtcCA9IG1vZHVsZS5hbGxvYyhuOCoyKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSwgYy5pMzJfY29uc3QoMHg0MCkpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpLCB0bXBYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpLCBjLmkzMl9jb25zdChuOCksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiLCB0bXAsICBjLmdldExvY2FsKFwicE91dFwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEN0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZmlyc3RCeXRlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZ3JlYXRlc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiwgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImdyZWF0ZXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wWSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZTgodG1wWSwgYy5pMzJfYW5kKGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksIGMuaTMyX2NvbnN0KDB4M0YpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBZLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsIHRtcFgsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicE91dFwiKSwgdG1wWSwgIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHRtcFksIGMuaTMyX2NvbnN0KHBCKSwgIHRtcFkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXJ0XCIsIHRtcFksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHRtcFksIHRtcFgpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIHRtcFkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgtMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJncmVhdGVzdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInBJblwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHgzYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCB5MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeCwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCB4M2IsIHgzYiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeDNiLCBjLmkzMl9jb25zdChwQiksIHgzYiksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkyLCB4M2IpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIGF1eCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGF1eCksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRJc1plcm9BZmZpbmUoKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29weUFmZmluZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkVG9KYWNvYmlhbigpO1xuICAgIGJ1aWxkRXFBZmZpbmUoKTtcbiAgICBidWlsZEVxTWl4ZWQoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGREb3VibGVBZmZpbmUoKTtcbiAgICBidWlsZERvdWJsZSgpO1xuICAgIGJ1aWxkQWRkQWZmaW5lKCk7XG4gICAgYnVpbGRBZGRNaXhlZCgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGROZWdBZmZpbmUoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU3ViQWZmaW5lKCk7XG4gICAgYnVpbGRTdWJNaXhlZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRUb0FmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZSgpO1xuXG4gICAgYnVpbGRCYXRjaFRvQWZmaW5lKCk7XG5cbiAgICBidWlsZE5vcm1hbGl6ZSgpO1xuXG5cbiAgICBidWlsZFJldmVyc2VCeXRlcygpO1xuXG4gICAgYnVpbGRMRU10b1UoKTtcbiAgICBidWlsZExFTXRvQygpO1xuICAgIGJ1aWxkVXRvTEVNKCk7XG4gICAgYnVpbGRDdG9MRU0oKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgcHJlZml4ICsgXCJfTEVNdG9VXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgcHJlZml4ICsgXCJfTEVNdG9DXCIsIG44KjIsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIsIHByZWZpeCArIFwiX1V0b0xFTVwiLCBuOCoyLCBuOCoyKTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIHByZWZpeCArIFwiX0N0b0xFTVwiLCBuOCwgbjgqMiwgdHJ1ZSk7XG5cbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBwcmVmaXggKyBcIl90b0phY29iaWFuXCIsIG44KjIsIG44KjMsIHRydWUpO1xuXG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgqMyk7XG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cEFmZmluZVwiLCBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBuOCoyKTtcblxuICAgIC8qXG4gICAgYnVpbGRUaW1lc1NjYWxhcihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhck9sZFwiLFxuICAgICAgICBuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICk7XG4gICAgKi9cbiAgICBidWlsZFRpbWVzU2NhbGFyTkFGKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIixcbiAgICAgICAgbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3N1Yk1peGVkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1Yk1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG5cbiAgICAvLyBDb252ZXJ0aW9uIGZ1bmN0aW9uc1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG5cbiAgICAvKlxuICAgIGJ1aWxkRzFNdWxTY2FsYXIobW9kdWxlLCB6cSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKFwiZzFNdWxTY2FsYXJcIik7XG4gICAgKi9cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IHsgaXNPZGQ6IGlzT2RkJDIsIG1vZEludjogbW9kSW52JDEsIG1vZFBvdyB9ID0gYmlnaW50O1xuY29uc3QgdXRpbHMkMyA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mZnQgPSBmdW5jdGlvbiBidWlsZEZGVChtb2R1bGUsIHByZWZpeCwgZ1ByZWZpeCwgZlByZWZpeCwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBuNjRmID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ubjY0O1xuICAgIGNvbnN0IG44ZiA9IG42NGYqODtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1tnUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2ZQcmVmaXhdLnE7XG5cbiAgICBsZXQgcmVtID0gcSAtIDFuO1xuICAgIGxldCBtYXhCaXRzID0gMDtcbiAgICB3aGlsZSAoIWlzT2RkJDIocmVtKSkge1xuICAgICAgICBtYXhCaXRzICsrO1xuICAgICAgICByZW0gPSByZW0gPj4gMW47XG4gICAgfVxuXG4gICAgbGV0IG5yID0gMm47XG5cbiAgICB3aGlsZSAoIG1vZFBvdyhuciwgcSA+PiAxbiwgcSkgPT09IDFuICkgbnIgPSBuciArIDFuO1xuXG4gICAgLy8gY29uc29sZS5sb2cobnIpO1xuXG4gICAgY29uc3QgdyA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIHdbbWF4Qml0c10gPSBtb2RQb3cobnIsIHJlbSwgcSk7XG5cbiAgICBsZXQgbj1tYXhCaXRzLTE7XG4gICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgd1tuXSA9IG1vZFBvdyh3W24rMV0sIDJuLCBxKTtcbiAgICAgICAgbi0tO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5dGVzID0gW107XG4gICAgY29uc3QgUiA9ICgxbiA8PCBCaWdJbnQobjhmKjgpKSAlIHE7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gd1tpXSAqIFIgJSBxO1xuICAgICAgICBieXRlcy5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUobSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgUk9PVHMgPSBtb2R1bGUuYWxsb2MoYnl0ZXMpO1xuXG4gICAgY29uc3QgaTIgPSBuZXcgQXJyYXkobWF4Qml0cysxKTtcbiAgICBpMlswXSA9IDFuO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgaTJbaV0gPSBpMltpLTFdICogMm47XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXNpMiA9W107XG4gICAgZm9yIChsZXQgaT0wOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IG1vZEludiQxKGkyW2ldLCBxKSAqIFIgJSBxO1xuICAgICAgICBieXRlc2kyLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBJTlYyID0gbW9kdWxlLmFsbG9jKGJ5dGVzaTIpO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBtb2RQb3cobnIsIDJuLCBxKTtcbiAgICBjb25zdCBieXRlc1NoaWZ0VG9TbWFsbE0gPVtdO1xuICAgIGNvbnN0IGJ5dGVzU0NvbnN0ID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gbW9kUG93KHNoaWZ0LCAybiAqKiBCaWdJbnQoaSksIHEpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBtb2RJbnYkMShxICsgMW4gLSBzaGlmdFRvU21hbGxNLCBxKTtcbiAgICAgICAgYnl0ZXNTaGlmdFRvU21hbGxNLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzaGlmdFRvU21hbGxNICogUiAlIHEsIG44ZikpO1xuICAgICAgICBieXRlc1NDb25zdC5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUoc0NvbnN0ICogUiAlIHEsIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IFNISUZUX1RPX00gPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU2hpZnRUb1NtYWxsTSAgKTtcbiAgICBjb25zdCBTQ09OU1QgPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU0NvbnN0ICApO1xuXG4gICAgZnVuY3Rpb24gcmV2KHgpIHtcbiAgICAgICAgbGV0IHI9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHggJiAoMSA8PCBpKSkge1xuICAgICAgICAgICAgICAgIHIgPSByIHwgKDB4ODAgPj4gaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgY29uc3QgcnRhYmxlID0gQXJyYXkoMjU2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICAgICAgcnRhYmxlW2ldID0gcmV2KGkpO1xuICAgIH1cblxuICAgIGNvbnN0IFJFVlRBQkxFID0gbW9kdWxlLmFsbG9jKHJ0YWJsZSk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9nMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2xvZzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYXV4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiYml0c1wiLCBjLmkzMl9jb25zdCgwKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcImF1eFwiKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJhdXhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9uZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG1heEJpdHMpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy51bnJlYWNoYWJsZSgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmdldExvY2FsKFwiYml0c1wiKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9uZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgT25lKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXgrXCJfcmF3ZmZ0XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIE9uZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJRkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImJpdHNcIixcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19sb2cyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwSW52MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoSU5WMiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbnYyXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmF3RkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7IC8vIDIgcG93ZXJcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlUGVybXV0YXRpb25cIiwgYy5nZXRMb2NhbChcInB4XCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJzXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfb25lXCIsIFcpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImtcIiksIGMuZ2V0TG9jYWwoXCJtXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwic1wiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fZmZ0RmluYWxcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJldmVyc2VcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19mZnRGaW5hbFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSW52MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInJldmVyc2VcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoIGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibWFza1wiLCBjLmkzMl9zdWIoIGMuZ2V0TG9jYWwoXCJuXCIpICwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuZGl2MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLCBUKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBUICwgYy5nZXRMb2NhbChcImlkeDJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIFQgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIChJdCBzaG91bGQgbm90IGJlIGhlcmUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJweFwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGLCBjLmdldExvY2FsKFwiaWR4MlwiKSxjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZlcnNlUGVybXV0YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyaVwiLCBjLmNhbGwocHJlZml4ICsgXCJfX3JldlwiLCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcImlkeDFcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmV2KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fcmV2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX3JvdGwoXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luRXh0SW52KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0SW52XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwidG90YWxCaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNoaWZ0VG9NXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNDb25zdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNDb25zdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0NPTlNUKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRNaXgoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImV4cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5Hcm91cHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGFpck9mZnNldFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBcIiwgYy5pMzJfc2hsKGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiZXhwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblBlckdyb3VwRGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblBlckdyb3VwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5Hcm91cHNcIiwgYy5pMzJfc2hyX3UoYy5nZXRMb2NhbChcIm5cIiksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwYWlyT2Zmc2V0XCIsIGMuaTMyX211bChjLmdldExvY2FsKFwiblBlckdyb3VwRGl2MlwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoUk9PVHMpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZXhwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkdyb3Vwc1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblBlckdyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBhaXJPZmZzZXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gUmV2ZXJzZSBhbGwgYW5kIG11bHRpcGx5IGJ5IGZhY3RvclxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZURmluYWwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmFjdG9yXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmYWN0b3JcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFJldigpO1xuICAgIGJ1aWxkUmV2ZXJzZVBlcm11dGF0aW9uKCk7XG4gICAgYnVpbGRGaW5hbEludmVyc2UoKTtcbiAgICBidWlsZFJhd0ZGVCgpO1xuICAgIGJ1aWxkTG9nMigpO1xuICAgIGJ1aWxkRkZUKCk7XG4gICAgYnVpbGRJRkZUKCk7XG4gICAgYnVpbGRGRlRKb2luKCk7XG4gICAgYnVpbGRGRlRKb2luRXh0KCk7XG4gICAgYnVpbGRGRlRKb2luRXh0SW52KCk7XG4gICAgYnVpbGRGRlRNaXgoKTtcbiAgICBidWlsZEZGVEZpbmFsKCk7XG4gICAgYnVpbGRQcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRNaXhcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRGaW5hbFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3BvbCA9IGZ1bmN0aW9uIGJ1aWxkUG9sKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0cFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25zdHJ1Y3RMQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uc3RydWN0TENcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcG9seW5vbWlhbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc2lnbmFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5TaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJlc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBkXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmNvZWZzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuZ2V0TG9jYWwoXCJwcG9seW5vbWlhbHNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBzXCIsIGMuZ2V0TG9jYWwoXCJwc2lnbmFsc1wiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5TaWduYWxzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5jb2Vmc1wiLCBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdCg0KSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuY29lZnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwcmVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwicHBcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwc1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZENvbnN0cnVjdExDKCk7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25zdHJ1Y3RMQ1wiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cblxuXG5cbn07XG5cbnZhciBidWlsZF9xYXAgPSBmdW5jdGlvbiBidWlsZFFBUChtb2R1bGUsIHByZWZpeCwgcHJlZml4RmllbGQpIHtcblxuICAgIGNvbnN0IG42NCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeEZpZWxkXS5uNjQ7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRCdWlsZEFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYnVpbGRBQkNcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5PdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJvZmZzZXRXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibldpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBTZXQgb3V0cHV0IGEgYW5kIGIgdG8gMFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicEJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdGFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCsxMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgOClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuV2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCsxMikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicE91dFwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcIm1cIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInBPdXRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwic1wiKSwgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QoMTIpKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSm9pbkFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfam9pbkFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0Y1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRjXCIsIGMuZ2V0TG9jYWwoXCJwQ1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRwXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Y1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0cFwiKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGNcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRCYXRjaEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYmF0Y2hBZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBhXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBiXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHJcIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRyXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0clwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEJ1aWxkQUJDKCk7XG4gICAgYnVpbGRKb2luQUJDKCk7XG4gICAgYnVpbGRCYXRjaEFkZCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2J1aWxkQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9qb2luQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEFkZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2FwcGx5a2V5ID0gZnVuY3Rpb24gYnVpbGRBcHBseUtleShtb2R1bGUsIGZuTmFtZSwgZ1ByZWZpeCwgZnJQcmVmaXgsIHNpemVHSW4sIHNpemVHT3V0LCBzaXplRiwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEZpcnN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5jXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwT2xkRnJlZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicEZyb21cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBUb1wiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHNpemVGKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgKTtcblxuICAgIC8vIHQgPSBmaXJzdFxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicEZpcnN0XCIpLFxuICAgICAgICAgICAgdFxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSxcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVG9cIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEZyb21cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUdJbikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVG9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwVG9cIiksIGMuaTMyX2NvbnN0KHNpemVHT3V0KSkpLFxuXG4gICAgICAgICAgICAvLyB0ID0gdCogaW5jXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW5jXCIpLFxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQyID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0kMSA9YnVpbGRfZjFtO1xuY29uc3QgYnVpbGRGMSQxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtJDEgPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtJDEgPWJ1aWxkX2YzbTtcbmNvbnN0IGJ1aWxkQ3VydmUkMSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQyID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wkMSA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQJDEgPSBidWlsZF9xYXA7XG5jb25zdCBidWlsZEFwcGx5S2V5JDEgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMiwgbW9kSW52LCBpc09kZDogaXNPZGQkMSwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQyIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9ibjEyOCA9IGZ1bmN0aW9uIGJ1aWxkQk4xMjgobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYm4xMjhcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNuO1xuICAgIGNvbnN0IHIgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN247XG5cblxuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQyKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjggPSBuNjQqODtcbiAgICBjb25zdCBmcnNpemUgPSBuODtcbiAgICBjb25zdCBmMXNpemUgPSBuODtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMShtb2R1bGUsIHEsIFwiZjFtXCIpO1xuICAgIGJ1aWxkRjEkMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgzbiksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbCQxKG1vZHVsZSwgXCJwb2xcIiwgXCJmcm1cIik7XG4gICAgYnVpbGRRQVAkMShtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0kMShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDE5NDg1ODc0NzUxNzU5MzU0NzcxMDI0MjM5MjYxMDIxNzIwNTA1NzkwNjE4NDY5MzAxNzIxMDY1NTY0NjMxMjk2NDUyNDU3NDc4MzczbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMjY2OTI5NzkxMTE5OTkxMTYxMjQ2OTA3Mzg3MTM3MjgzODQyNTQ1MDc2OTY1MzMyOTAwMjg4NTY5Mzc4NTEwOTEwMzA3NjM2NjkwbiksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZSQxKG1vZHVsZSwgXCJnMm1cIiwgXCJmMm1cIiwgcEcyYik7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR1RpbWVzRnIoZm5OYW1lLCBvcE11bCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwR1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImZybV9iYXRjaEFwcGx5S2V5XCIsIFwiZm1yXCIsIFwiZnJtXCIsIG44LCBuOCwgbjgsIFwiZnJtX211bFwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjMsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOCoyLCBuOCozLCBuOCwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5XCIsIFwiZzJtXCIsIFwiZnJtXCIsIG44KjIqMywgbjgqMyoyLCBuOCwgXCJnMm1fdGltZXNGclwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMioyLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG4gICAgZnVuY3Rpb24gdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChhKSAqICggMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAxbixcbiAgICAgICAgMm4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMTA4NTcwNDY5OTkwMjMwNTcxMzU5NDQ1NzA3NjIyMzI4Mjk0ODEzNzA3NTYzNTk1Nzg1MTgwODY5OTA1MTk5OTMyODU2NTU4NTI3ODFuLFxuICAgICAgICAgICAgMTE1NTk3MzIwMzI5ODYzODcxMDc5OTEwMDQwMjEzOTIyODU3ODM5MjU4MTI4NjE4MjExOTI1MzA5MTc0MDMxNTE0NTIzOTE4MDU2MzRuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDg0OTU2NTM5MjMxMjM0MzE0MTc2MDQ5NzMyNDc0ODkyNzI0Mzg0MTgxOTA1ODcyNjM2MDAxNDg3NzAyODA2NDkzMDY5NTgxMDE5MzBuLFxuICAgICAgICAgICAgNDA4MjM2Nzg3NTg2MzQzMzY4MTMzMjIwMzQwMzE0NTQzNTU2ODMxNjg1MTMyNzU5MzQwMTIwODEwNTc0MTA3NjIxNDEyMDA5MzUzMW4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwTm9uUmVzaWR1ZUY2ID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBUd29JbnYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoICBtb2RJbnYoMm4sIHEpKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIDBuLCBmMXNpemUgKVxuICAgIF0pO1xuXG4gICAgY29uc3QgcEFsdEJuMTI4VHdpc3QgPSBwTm9uUmVzaWR1ZUY2O1xuXG4gICAgY29uc3QgcFR3aXN0Q29lZkIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsTlI2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGY2bVByZWZpeCA9IGJ1aWxkRjNtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlI2XCIsIFwiZjZtXCIsIFwiZjJtXCIpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRfbXVsTlIxMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjEyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjEyKCk7XG5cbiAgICBjb25zdCBmdG1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgcHJlZml4K1wiX211bE5SMTJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuXG4gICAgY29uc3QgYXRlTG9vcENvdW50ID0gMjk3OTM5NjgyMDMxNTcwOTMyODhuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44O1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOCoyICsgYXRlTkNvZWZzKmF0ZUNvZWZTaXplO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcEcxZ2VuOiBwRzFnZW4sXG4gICAgICAgIHBHMXplcm86IHBHMXplcm8sXG4gICAgICAgIHBHMWI6IHBHMWIsXG4gICAgICAgIHBHMmdlbjogcEcyZ2VuLFxuICAgICAgICBwRzJ6ZXJvOiBwRzJ6ZXJvLFxuICAgICAgICBwRzJiOiBwRzJiLFxuICAgICAgICBwcTogbW9kdWxlLm1vZHVsZXNbXCJmMW1cIl0ucHEsXG4gICAgICAgIHByOiBwcixcbiAgICAgICAgcE9uZVQ6IHBPbmVULFxuICAgICAgICBwcmVQU2l6ZTogcHJlUFNpemUsXG4gICAgICAgIHByZVFTaXplOiBwcmVRU2l6ZSxcbiAgICAgICAgcjogci50b1N0cmluZygpLFxuICAgICAgICBxOiBxLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgLy8gY29uc29sZS5sb2coXCJQcmVQU2l6ZTogXCIgK3ByZVBTaXplKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVFTaXplOiBcIiArcHJlUVNpemUpO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gNDk2NTY2MTM2NzE5Mjg0ODg4MW47XG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQkMShFKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgyICA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcbiAgICAgICAgY29uc3QgWTIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgWDEgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBZMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgWjEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBEID0gRUxMX1ZXO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gRCA9IFgxIC0gWDIqWjFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDIsIFoxLCBEKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgWDEsIEQsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gWTEgLSBZMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMiwgWjEsIEUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgRSwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSBEXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRCwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSBEKkZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgRiwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBYMSAqIEZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEYsIEkpLFxuXG4gICAgICAgICAgICAvLyBKID0gSCArIFoxKkcgLSAoSStJKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBJLCBJLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBaMSwgRywgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEgsIEosIEopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBKLCBBVVgsIEopLFxuXG5cbiAgICAgICAgICAgIC8vIFgzIChYMSkgPSBEKkpcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgSiwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gRSooSS1KKS0oSCpZMSlcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgSCwgWTEsIFkxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSSwgSiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBBVVgsIFkxLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBaMSpIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiAoRSAqIFgyIC0gRCAqIFkyKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBZMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgWDIsIEVMTF8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRUxMXzAsIEFVWCwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFTExfMCwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBFTExfMCksXG5cblxuICAgICAgICAgICAgLy8gZWxsX1ZWID0gLSBFIChsYXRlcjogKiB4UClcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgRSwgRUxMX1ZWKSxcblxuICAgICAgICAgICAgLy8gZWxsX1ZXID0gRCAobGF0ZXI6ICogeVAgICAgKVxuICAgICAgICAgICAgLy8gQWxyZWFkeSBhc3NpZ25lZFxuXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicENvZWZcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBBID0gWDEgKiBZMSAvIDJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWTEsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEEsIEEpLFxuXG4gICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBZMSwgQiksXG5cbiAgICAgICAgICAgIC8vIEMgPSBaMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFoxLCBDKSxcblxuICAgICAgICAgICAgLy8gRCA9IDMgKiBDXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEMsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBELCBDLCBEKSxcblxuICAgICAgICAgICAgLy8gRSA9IHR3aXN0X2IgKiBEXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBUd2lzdENvZWZCKSwgRCwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSAzICogRVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBFLCBGKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRSwgRiwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSAoQitGKS8yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBHLCBjLmkzMl9jb25zdChwVHdvSW52KSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSAoWTErWjEpXjItKEIrQylcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgWTEsIFoxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgSCwgSCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEgsIEFVWCwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBFLUJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRSwgQiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBYMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFgxLCBKKSxcblxuICAgICAgICAgICAgLy8gRV9zcXVhcmVkID0gRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEUsIEUyKSxcblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEEgKiAoQi1GKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBCLCBGLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBLCBBVVgsIFgxKSxcblxuICAgICAgICAgICAgLy8gWTMgKFkxKSA9IEdeMiAtIDMqRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUyLCBFMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRywgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgQVVYLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBCICogSFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBCLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiBJXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBbHRCbjEyOFR3aXN0KSwgSSwgRUxMXzApLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSAtIEggKGxhdGVyOiAqIHlQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBILCBFTExfVlcpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAzKkogKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBKLCBFTExfVlYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBFTExfVlYsIEVMTF9WViksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5USgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxCeVFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBNdWxCeVFYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxXCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjgyMTU2NTE4MjE5NDUzNjg0NDU0ODE1OTU2MTY5MzUwMjY1OTM1OTYxNzE4NTI0NDEyMDM2NzA3ODA3OTU1NDE4NjQ4NDEyNjU1NFwiKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIzNTA1ODQzNzY3OTExNTU2Mzc4Njg3MDMwMzA5OTg0MjQ4ODQ1NTQwMjQzNTA5ODk5MjU5NjQxMDEzNjc4MDkzMDMzMTMwOTMwNDAzXCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIFRoZSBmcm9iZW5pdXNNYXAoMSkgaW4gdGhpcyBmaWVsZCwgaXMgdGhlIGNvbmp1Z2F0ZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIE11bEJ5UVgsIHgzLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWSwgeTMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeiwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzIoKSB7XG4gICAgICAgIGJ1aWxkTXVsQnlRKCk7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicENvZWZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUVggPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWCA9IGMuaTMyX2NvbnN0KHBSKTtcbiAgICAgICAgY29uc3QgUlkgPSBjLmkzMl9jb25zdChwUitmMnNpemUpO1xuICAgICAgICBjb25zdCBSWiA9IGMuaTMyX2NvbnN0KHBSKzIqZjJzaXplKTtcblxuICAgICAgICBjb25zdCBjUVggPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoMCkpO1xuICAgICAgICBjb25zdCBjUVkgPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcFExID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTEgPSBjLmkzMl9jb25zdChwUTEpO1xuXG4gICAgICAgIGNvbnN0IHBRMiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFEyID0gYy5pMzJfY29uc3QocFEyKTtcbiAgICAgICAgY29uc3QgUTJZID0gYy5pMzJfY29uc3QocFEyICsgZjJzaXplKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFFYLCBjUVgpLCAgLy8gVE9ETyBSZW1vdmUgaWYgYWxyZWFkeSBpbiBhZmZpbmVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIGNRWCwgUlgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FZLCBSWSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIFJaKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwRGJsU3RlcFwiLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgY1FYLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgY1FYLCBRMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsQnlRXCIsIFExLCBRMilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIFEyWSwgUTJZKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFExLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWxCeTAyNE9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGwwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZXXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZWXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgICAgICAgICAgLy8gUmVzdWx0IGluIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgID0gYy5nZXRMb2NhbChcInBFbGwwXCIpO1xuICAgICAgICBjb25zdCB4MiAgPSBjLmdldExvY2FsKFwicEVsbFZWXCIpO1xuICAgICAgICBjb25zdCB4NCAgPSBjLmdldExvY2FsKFwicEVsbFZXXCIpO1xuXG4gICAgICAgIGNvbnN0IHowICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcblxuICAgICAgICBjb25zdCBwQVVYMTIgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQVVYMTIgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8wID0gYy5pMzJfY29uc3QocEFVWDEyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfMiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMl80ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfNiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzggPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjQpO1xuICAgICAgICBjb25zdCBBVVgxMl8xMCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4MCwgQVVYMTJfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8yKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgyLCBBVVgxMl80KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDQsIEFVWDEyXzgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfMTApLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBVVgxMiwgejAsIHowKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCB6MSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKm44KSk7XG4gICAgICAgIGNvbnN0IHoyICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDQqbjgpKTtcbiAgICAgICAgY29uc3QgejMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNipuOCkpO1xuICAgICAgICBjb25zdCB6NCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg4Km44KSk7XG4gICAgICAgIGNvbnN0IHo1ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDEwKm44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBUNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBENCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEQwID0gejAgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejAsIHgwLCBEMCksXG4gICAgICAgICAgICAvLyBEMiA9IHoyICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoyLCB4MiwgRDIpLFxuICAgICAgICAgICAgLy8gRDQgPSB6NCAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NCwgeDQsIEQ0KSxcbiAgICAgICAgICAgIC8vIHQyID0gejAgKyB6NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHo0LCB0MiksXG4gICAgICAgICAgICAvLyB0MSA9IHowICsgejI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHowLCB6MiwgdDEpLFxuICAgICAgICAgICAgLy8gczAgPSB6MSArIHozICsgejU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoxLCB6MywgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBzMCwgejUsIHMwKSxcblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5hXyA9IHowLlxuICAgICAgICAgICAgLy8gUzEgPSB6MSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MSwgeDIsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gUzEgKyBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIEQ0LCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMyArIEQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIEQwLCB6MCksXG4gICAgICAgICAgICAvLyB6MCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5iXyA9IHoxXG4gICAgICAgICAgICAvLyBUMyA9IHo1ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo1LCB4NCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIEQyLCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyBUMyA9IHoxICogeDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6MSksXG4gICAgICAgICAgICAvLyB6MSA9IFQ0O1xuXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYV8uY18gPSB6MlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDIsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDEgKiB0MCAtIEQwIC0gRDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gejMgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHg0LCBUNCksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUNCwgUzEpLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmFfID0gejMgKHozIG5lZWRzIHoyKVxuICAgICAgICAgICAgLy8gdDAgPSB6MiArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MiwgejQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBUNDtcbiAgICAgICAgICAgIC8vIHoyID0gVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQzLCBUNCwgejIpLFxuICAgICAgICAgICAgLy8gdDEgPSB4MiArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDQsIHQxKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDAgKiB0MSAtIEQyIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMiwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejMgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHozKSxcbiAgICAgICAgICAgIC8vIHozID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmJfID0gejRcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHgyLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDIgKiB0MCAtIEQwIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6NCksXG4gICAgICAgICAgICAvLyB6NCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5iXy5jXyA9IHo1LlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gczAgKiB0MCAtIFMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBzMCwgdDAsIFQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIFMxLCB6NSksXG4gICAgICAgICAgICAvLyB6NSA9IFQzO1xuXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQX1BYID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuICAgICAgICBjb25zdCBwcmVQX1BZID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cblxuICAgICAgICBjb25zdCBwVlcgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlcgPSBjLmkzMl9jb25zdChwVlcpO1xuICAgICAgICBjb25zdCBwVlYgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlYgPSBjLmkzMl9jb25zdChwVlYpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cblxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcscHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcblxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcsIHByZVBfUFksIFZXKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzgzNzYxMTg4NjU3NjM4MjE0OTY1ODM5NzM4Njc2MjYzNjQwOTI1ODk5MDYwNjU4NjgyOTg3NzY5MDk2MTc5MTYwMTg3NjgzNDAwODBuLCAxNjQ2OTgyMzMyMzA3NzgwODIyMzg4OTEzNzI0MTE3NjUzNjc5OTAwOTI4NjY0NjEwODE2OTkzNTY1OTMwMTYxMzk2MTcxMjE5ODMxNm5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTE2OTc0MjM0OTYzNTgxNTQzMDQ4MjU3ODI5MjI1ODQ3MjUzMTI5MTIzODM0NDExNTk1MDUwMzg3OTQwMjcxMDU3Nzg5NTQxODQzMTluLCAzMDM4NDczODkxMzUwNjU4ODc0MjI3ODM0NTQ4Nzc2MDk5NDE0NTYzNDkxODg5MTk3MTkyNzIzNDUwODM5NTQ0Mzc4NjA0MDk2MDFuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMzMjEzMDQ2MzA1OTQzMzI4MDgyNDE4MDkwNTQ5NTgzNjEyMjAzMjI0NzczNzUyOTEyMDYyNjE4ODQ0MDkxODk3NjAxODU4NDQyMzluLCA1NzIyMjY2OTM3ODk2NTMyODg1NzgwMDUxOTU4OTU4MzQ4MjMxMTQzMzczNzAwMTA5MzcyOTk5Mzc0ODIwMjM1MTIxMzc0NDE5ODY4bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgybiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMzUxMjEyNDAwNjA3NTQ1MzcyNTY2MjQzMTg3NzYzMDkxMDk5NjEwNjQwNTA5MTQyOTUyNDg4NTc3OTQxOTk3ODYyNjQ1Nzg2ODUwM24sIDU0MTg0MTk1NDg3NjE0NjY5OTgzNTcyNjg1MDQwODA3MzgyODk2ODcwMjQ1MTExODk2NTM3MjcwMjk3MzYyODA2ODM1MTQwMTAyNjduXSxcbiAgICAgICAgICAgICAgICBbMjIwMzk2MDQ4NTE0ODEyMTkyMTQxODYwMzc0MjgyNTc2MjAyMDk3NDI3OTI1ODg4MDIwNTY1MTk2Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTAxOTA4MTkzNzU0ODExMjA5MTc0MjA2MjI4MjI2NzI1NDk3NzU3ODM5Mjc3MTYxMzgzMTg2MjM4OTUwMTA3ODg4NjYyNzIwMjQyNjRuLCAyMTU4NDM5NTQ4MjcwNDIwOTMzNDgyMzYyMjI5MDM3OTY2NTE0NzIzOTk2MTk2ODM3ODEwNDM5MDM0Mzk1Mzk0MDIwNzM2NTc5ODk4Mm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODU2NjkzODI0MTI0NDk0MjQxNDAwNDU5NjY5MDI5ODkxMzg2ODM3MzgzMzc4MjAwNjYxNzQwMDgwNDYyODcwNDg4NTA0MDM2NDM0NG4sIDE2MTY1OTc1OTMzOTQyNzQyMzM2NDY2MzUzNzg2Mjk4OTI2ODU3NTUyOTM3NDU3MTg4NDUwNjYzMzE0MjE3NjU5NTIzODUxNzg4NzE1bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyMTU3NTQ2MzYzODI4MDg0MzAxMDM5ODMyNDI2OTQzMDgyNjA5OTI2OTA0NDI3NDM0NzIxNjgyNzIxMjYxMzg2NzgzNjQzNTAyNzI2MW4sIDEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE2biwgMG5dLFxuICAgICAgICAgICAgICAgIFszNzcyMDAwODgxOTE5ODUzNzc2NDMzNjk1MTg2NzEzODU4MjM5MDA5MDczNTkzODE3MTk1NzcxNzczMzgxOTE5MzE2NDE5MzQ1MjYxbiwgMjIzNjU5NTQ5NTk2NzI0NTE4ODI4MTcwMTI0ODIwMzE4MTc5NTEyMTA2ODkwMjYwNTg2MTIyNzg1NTI2MTEzNzgyMDk0NDAwODkyNm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODQyOTAyMTIyMzQ3Nzg1MzY1NzY2MDc5MjAzNDM2OTg2NTgzOTExNDUwNDQ0NjQzMTIzNDcyNjM5MjA4MDAwMjEzNzU5ODA0NDY0NG4sIDkzNDQwNDU3Nzk5OTgzMjAzMzM4MTI0MjAyMjMyMzc5ODEwMjk1MDYwMTIxMjQwNzU1MjU2NzkyMDg1ODE5MDIwMDg0MDY0ODU3MDNuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI1ODE5MTEzNDQ0NjcwMDkzMzUyNjczMTExMTU0Njg4MDMwOTk1NTE2NjU2MDUwNzYxOTY3NDA4Njc4MDUyNTg1NjgyMzQzNDYzMzhuLCAxOTkzNzc1Njk3MTc3NTY0Nzk4Nzk5NTkzMjE2OTkyOTM0MTk5NDMxNDY0MDY1Mjk2NDk0OTQ0ODMxMzM3NDQ3MjQwMDcxNjY2MTAzMG5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFs1MzI0NDc5MjAyNDQ5OTAzNTQyNzI2NzgzMzk1NTA2MjE0NDgxOTI4MjU3NzYyNDAwNjQzMjc5NzgwMzQzMzY4NTU3Mjk3MTM1NzE4biwgMTYyMDg5MDAzODA3Mzc2OTMwODQ5MTk0OTUxMjczMzQzODc5ODEzOTM3MjY0MTk4NTY4ODg3OTk5MTc5MTQxODA5ODg4NDQxMjMwMzluXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzOTgxODUyMzI0OTIyMzYyMzQ0MjUyMzExMjM0MjgyMjU3NTA3MjE2Mzg3Nzg5ODIwOTgzNjQyMDQwODg5MjY3NTE5Njk0NzI2NTI3biwgNzYyOTgyODM5MTE2NTIwOTM3MTU3NzM4NDE5MzI1MDgyMDIwMTY4NDI1NTI0MTc3MzgwOTA3NzE0Njc4NzEzNTkwMDg5MTYzMzA5N25dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCAzMiksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIDMyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgaWYgKG4lMiA9PSAxKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBYYzAsIFJjMCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9uZWdcIiwgWGMxLCBSYzEpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUiksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWCwgYy5pMzJfY29uc3QocENvZWYpLCBSKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtdWwyKGEsIGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjMCA9IEJpZ0ludChhWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IEJpZ0ludChhWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IEJpZ0ludChiWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMSA9IEJpZ0ludChiWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKCAgYWMxICogYmMxKSAgKSAlIHEsXG4gICAgICAgICAgICAgICAgKGFjMCAqIGJjMSArICggIGFjMSAqIGJjMCkgICkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDIocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBlbHRDMCA9IGVsdDtcbiAgICAgICAgY29uc3QgZWx0QzEgPSBjLmkzMl9hZGQoZWx0LCBjLmkzMl9jb25zdChuOCo2KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcEEgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KHBBKTtcbiAgICAgICAgY29uc3QgQWMwID0gQTtcbiAgICAgICAgY29uc3QgQWMxID0gYy5pMzJfY29uc3QocEEgKyBuOCo2KTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBBID0gYWx0X2JuMTI4X0ZxMTIoZWx0LmMwLC1lbHQuYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgZWx0QzAsIEFjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbmVnXCIsIGVsdEMxLCBBYzEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBCID0gZWx0LmludmVyc2UoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9pbnZlcnNlXCIsIGVsdCwgQiksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEMgPSBBICogQjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgQyksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBEID0gQy5Gcm9iZW5pdXNfbWFwKDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEMsIEQpLFxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgcmVzdWx0ID0gRCAqIEM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIHIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgQVVYLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MSksXG5cbiAgICAgICAgICAgIC8vICAvLyB0MiArIHQzKnkgPSAoejIgKyB6Myp5KV4yID0gYl4yXG4gICAgICAgICAgICAvLyAgdG1wID0gejIgKiB6MztcbiAgICAgICAgICAgIC8vICB0MiA9ICh6MiArIHozKSAqICh6MiArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MykgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQzID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MiwgeDMsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgzLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg1LCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHg1LCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fY3ljbG90b21pY0V4cF9cIitmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG4gICAgICAgIGNvbnN0IGludmVyc2UgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIGludmVyc2UpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXMpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0xKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rKCkge1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNTcXVhcmUoKTtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljRXhwKGZpbmFsRXhwWiwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2ZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cblxuICAgICAgICAgICAgLy8gQSA9IGV4cF9ieV9uZWdfeihlbHQpICAvLyA9IGVsdF4oLXopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgZWx0LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgQSwgQSksXG4gICAgICAgICAgICAvLyBCID0gQV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtMip6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEEsIEIpLFxuICAgICAgICAgICAgLy8gQyA9IEJeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oLTQqeilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIEQgPSBDICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKC02KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEIsIEQpLFxuICAgICAgICAgICAgLy8gRSA9IGV4cF9ieV9uZWdfeihEKSAgICAvLyA9IGVsdF4oNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgRCwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEUsIEUpLFxuICAgICAgICAgICAgLy8gRiA9IEVeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4yKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEUsIEYpLFxuICAgICAgICAgICAgLy8gRyA9IGVweF9ieV9uZWdfeihGKSAgICAvLyA9IGVsdF4oLTEyKnpeMylcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBGLCBHKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRywgRyksXG4gICAgICAgICAgICAvLyBIID0gY29uaihEKSAgICAgICAgICAgIC8vID0gZWx0Xig2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEQsIEgpLFxuICAgICAgICAgICAgLy8gSSA9IGNvbmooRykgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBJKSxcbiAgICAgICAgICAgIC8vIEogPSBJICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBJLCBFLCBKKSxcbiAgICAgICAgICAgIC8vIEsgPSBKICogSCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBKLCBILCBLKSxcbiAgICAgICAgICAgIC8vIEwgPSBLICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBCLCBMKSxcbiAgICAgICAgICAgIC8vIE0gPSBLICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgSywgRSwgTSksXG5cbiAgICAgICAgICAgIC8vIE4gPSBNICogZWx0ICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIE0sIGVsdCwgTiksXG5cbiAgICAgICAgICAgIC8vIE8gPSBMLkZyb2Jlbml1c19tYXAoMSkgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwMVwiLCBMLCBPKSxcbiAgICAgICAgICAgIC8vIFAgPSBPICogTiAgICAgICAgICAgICAgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTywgTiwgUCksXG4gICAgICAgICAgICAvLyBRID0gSy5Gcm9iZW5pdXNfbWFwKDIpIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEssIFEpLFxuICAgICAgICAgICAgLy8gUiA9IFEgKiBQICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUSwgUCwgUiksXG4gICAgICAgICAgICAvLyBTID0gY29uaihlbHQpICAgICAgICAgIC8vID0gZWx0XigtMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgZWx0LCBTKSxcbiAgICAgICAgICAgIC8vIFQgPSBTICogTCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUywgTCwgVCksXG4gICAgICAgICAgICAvLyBVID0gVC5Gcm9iZW5pdXNfbWFwKDMpIC8vID0gZWx0XihxXjMoMTIqel4zICsgNip6XjIgKyA0KnogLSAxKSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwM1wiLCBULCBVKSxcbiAgICAgICAgICAgIC8vIFYgPSBVICogUiAgICAgICAgICAgICAgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpICsgcV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgVSwgUiwgcmVzdWx0KSxcbiAgICAgICAgICAgIC8vIHJlc3VsdCA9IFZcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVuaygpO1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgZWx0VG9GaXJzdENodW5rID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIiwgZWx0LCBlbHRUb0ZpcnN0Q2h1bmsgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiLCBlbHRUb0ZpcnN0Q2h1bmssIHJlc3VsdCApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25PbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgZXhwb25lbnQgPSA1NTI0ODQyMzM2MTMyMjQwOTYzMTI2MTcxMjY3ODMxNzMxNDcwOTczODIxMDM3NjI5NTc2NTQxODg4ODI3MzQzMTQxOTY5MTA4Mzk5MDc1NDEyMTM5NzQ1MDI3NjE1NDA2Mjk4MTcwMDk2MDg1NDg2NTQ2ODAzNDM2Mjc3MDExNTM4Mjk0NDY3NDc4MTA5MDczNzMyNTY4NDE1NTEwMDYyMDE2Mzk2Nzc3MjYxMzk5NDYwMjkxOTk5Njg0MTI1OTg4MDQ4ODIzOTE3MDIyNzMwMTkwODM2NTMyNzIwNDc1NjYzMTY1ODQzNjU1NTk3NzY0OTMwMjc0OTU0NTgyMzgzNzM5MDI4NzU5Mzc2NTk5NDM1MDQ4NzMyMjA1NTQxNjE1NTA1MjU5MjYzMDIzMDMzMzE3NDc0NjM1MTU2NDQ3MTE4NzY2NTMxNzcxMjk1NzgzMDMxOTEwOTU5MDA5MDkxOTE2MjQ4MTc4MjY1NjY2ODgyNDE4MDQ0MDgwODE4OTI3ODU3MjU5Njc5MzE3MTQwOTc3MTY3MDk1MjYwOTIyNjEyNzgwNzE5NTI1NjAxNzExMTE0NDQwNzIwNDkyMjkxMjM1NjUwNTc0ODM3NTAxNjE0NjAwMjQzNTMzNDYyODQxNjcyODI0NTI3NTYyMTc2NjIzMzU1Mjg4MTM1MTkxMzk4MDgyOTExNzA1MzkwNzIxMjUzODEyMzA4MTU3MjkwNzE1NDQ4NjE2MDI3NTA5MzY5NjQ4MjkzMTM2MDgxMzczMjU0MjYzODM3MzUxMjIxNzUyMjk1NDExNTUzNzYzNDY0MzYwOTM5MzAyODc0MDIwODk1MTc0MjY5NzMxNzg5MTc1Njk3MTMzODQ3NDgwODE4MjcyNTU0NzI1NzY5Mzc0NzE0OTYxOTU3NTI3MjcxODgyNjE0MzU2MzMyNzEyMzg3MTAxMzE3MzYwOTYyOTk3OTgxNjg4NTI5MjU1NDA1NDkzNDIzMzA3NzUyNzk4NzcwMDY3ODQzNTQ4MDE0MjIyNDk3MjI1NzM3ODM1NjE2ODUxNzk2MTg4MTY0ODAwMzc2OTUwMDU1MTU0MjYxNjIzNjI0MzEwNzIyNDU2MzgzMjQ3NDQ0ODBuO1xuXG4gICAgICAgIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCBleHBvbmVudCwgMzUyICkpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocEV4cG9uZW50KSwgYy5pMzJfY29uc3QoMzUyKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTXVsQnkwMjQoKTtcbiAgICBidWlsZE11bEJ5MDI0T2xkKCk7XG4gICAgYnVpbGRNaWxsZXJMb29wKCk7XG5cblxuICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSB7XG4gICAgICAgIGJ1aWxkRnJvYmVuaXVzTWFwKGkpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9taWxsZXJMb29wXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fbXVsQnkwMjRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgLy8gY29uc29sZS5sb2cobW9kdWxlLmZ1bmN0aW9uSWR4QnlOYW1lKTtcblxufTtcblxuY29uc3QgdXRpbHMkMSA9IHV0aWxzJDY7XG5cbmNvbnN0IGJ1aWxkRjFtID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtID1idWlsZF9mMm07XG5jb25zdCBidWlsZEYzbSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQxID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wgPSBidWlsZF9wb2w7XG5jb25zdCBidWlsZFFBUCA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMSwgaXNPZGQsIGlzTmVnYXRpdmU6IGlzTmVnYXRpdmUkMSB9ID0gYmlnaW50O1xuXG4vLyBEZWZpbml0aW9uIGhlcmU6IGh0dHBzOi8vZWxlY3RyaWNjb2luLmNvL2Jsb2cvbmV3LXNuYXJrLWN1cnZlL1xuXG52YXIgYnVpbGRfYmxzMTIzODEgPSBmdW5jdGlvbiBidWlsZEJMUzEyMzgxKG1vZHVsZSwgX3ByZWZpeCkge1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImJsczEyMzgxXCI7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgcSA9IDB4MWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFibjtcbiAgICBjb25zdCByID0gMHg3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxbjtcblxuICAgIGNvbnN0IG42NHEgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44cSA9IG42NHEqODtcbiAgICBjb25zdCBmMXNpemUgPSBuOHE7XG4gICAgY29uc3QgZjJzaXplID0gZjFzaXplICogMjtcbiAgICBjb25zdCBmdHNpemUgPSBmMXNpemUgKiAxMjtcblxuICAgIGNvbnN0IG42NHIgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShyIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ciA9IG42NHIqODtcbiAgICBjb25zdCBmcnNpemUgPSBuOHI7XG5cblxuICAgIGNvbnN0IHByID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHIsIGZyc2l6ZSApKTtcblxuICAgIGNvbnN0IGYxbVByZWZpeCA9IGJ1aWxkRjFtKG1vZHVsZSwgcSwgXCJmMW1cIiwgXCJpbnRxXCIpO1xuICAgIGJ1aWxkRjEobW9kdWxlLCByLCBcImZyXCIsIFwiZnJtXCIsIFwiaW50clwiKTtcbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlKG1vZHVsZSwgXCJnMW1cIiwgXCJmMW1cIiwgcEcxYik7XG5cbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1fbXVsXCIpO1xuXG4gICAgYnVpbGRQb2wobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUChtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBcImYxbV9uZWdcIiwgXCJmMm1cIiwgXCJmMW1cIik7XG4gICAgY29uc3QgcEcyYiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoNG4pLCBmMXNpemUgKVxuICAgIF0pO1xuICAgIGNvbnN0IGcybVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOHIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIH1cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJcIiwgXCJnMW1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzFtXCIsIFwiZzFtXCIsIFwiZnJtXCIsIFwiZzFtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJcIiwgXCJnMm1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzJtXCIsIFwiZzJtXCIsIFwiZnJtXCIsIFwiZzJtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMW1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyQWZmaW5lXCIsIFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjhyLCBuOHIsIG44ciwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44cSozLCBuOHEqMywgbjhyLCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjIsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJBZmZpbmVcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMywgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMiwgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKDFuIDw8IEJpZ0ludChmMXNpemUqOCkpICUgcTtcbiAgICB9XG5cbiAgICBjb25zdCBHMWdlbiA9IFtcbiAgICAgICAgMzY4NTQxNjc1MzcxMzM4NzAxNjc4MTA4ODMxNTE4MzA3Nzc1Nzk2MTYyMDc5NTc4MjU0NjQwOTg5NDU3ODM3ODY4ODYwNzU5MjM3ODM3NjMxODgzNjA1NDk0NzY3NjM0NTgyMTU0ODEwNDE4NTQ2NDUwN24sXG4gICAgICAgIDEzMzk1MDY1NDQ5NDQ0NzY0NzMwMjA0NzEzNzk5NDE5MjEyMjE1ODQ5MzM4NzU5MzgzNDk2MjA0MjY1NDM3MzY0MTY1MTE0MjM5NTYzMzM1MDY0NzI3MjQ2NTUzNTMzNjY1MzQ5OTIzOTE3NTY0NDE1NjluLFxuICAgICAgICAxblxuICAgIF07XG5cbiAgICBjb25zdCBwRzFnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMl0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMXplcm8gPSBbXG4gICAgICAgIDBuLFxuICAgICAgICAxbixcbiAgICAgICAgMG5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1swXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1sxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1syXSksIGYxc2l6ZSApXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzJnZW4gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDM1MjcwMTA2OTU4NzQ2NjYxODE4NzEzOTExNjAxMTA2MDE0NDg5MDAyOTk1Mjc5Mjc3NTI0MDIxOTkwODY0NDIzOTc5Mzc4NTczNTcxNTAyNjg3MzM0NzYwMDM0Mzg2NTE3NTk1Mjc2MTkyNjMwMzE2MG4sXG4gICAgICAgICAgICAzMDU5MTQ0MzQ0MjQ0MjEzNzA5OTcxMjU5ODE0NzUzNzgxNjM2OTg2NDcwMzI1NDc2NjQ3NTU4NjU5MzczMjA2MjkxNjM1MzI0NzY4OTU4NDMyNDMzNTA5NTYzMTA0MzQ3MDE3ODM3ODg1NzYzMzY1NzU4bixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxOTg1MTUwNjAyMjg3MjkxOTM1NTY4MDU0NTIxMTc3MTcxNjM4MzAwODY4OTc4MjE1NjU1NzMwODU5Mzc4NjY1MDY2MzQ0NzI2MzczODIzNzE4NDIzODY5MTA0MjYzMzMzOTg0NjQxNDk0MzQwMzQ3OTA1bixcbiAgICAgICAgICAgIDkyNzU1MzY2NTQ5MjMzMjQ1NTc0NzIwMTk2NTc3NjAzNzg4MDc1Nzc0MDE5MzQ1MzU5Mjk3MDAyNTAyNzk3ODc5Mzk3Njg3NzAwMjY3NTU2NDk4MDk0OTI4OTcyNzk1NzU2NTU3NTQzMzM0NDIxOTU4Mm4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQmxzMTIzODFUd2lzdCA9ICBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjJtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MGMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKSk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCB4MGMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHgxLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MGMsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20obW9kdWxlLCBmMm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBjMGNvcHkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMwY29weVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9tdWxOUlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjQpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYzBjb3B5LFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtKG1vZHVsZSwgZjZtUHJlZml4K1wiX211bE5SXCIsIFwiZnRtXCIsIGY2bVByZWZpeCk7XG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAweGQyMDEwMDAwMDAwMTAwMDBuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44cTtcbiAgICBjb25zdCBwcmVRU2l6ZSA9IDMqbjhxKjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG4gICAgY29uc3QgZmluYWxFeHBJc05lZ2F0aXZlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbmFsRXhwWiA9IDE1MTMyMzc2MjIyOTQxNjQyNzUybjtcblxuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0cTogbjY0cSxcbiAgICAgICAgbjY0cjogbjY0cixcbiAgICAgICAgbjhxOiBuOHEsXG4gICAgICAgIG44cjogbjhyLFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHI6IHIsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplXG4gICAgfTtcblxuXG4gICAgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBEb3VibGVTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcERibFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCB0MCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0NiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cblxuICAgICAgICBjb25zdCB6c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB0bXAwID0gci54LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0bXAxID0gci55LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9ICh0bXAxICsgci54KS5zcXVhcmUoKSAtIHRtcDAgLSB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgUngsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDMsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA0ID0gdG1wMCArIHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHQwLCB0NCksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSByLnggKyB0bXA0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeCwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wNSA9IHRtcDQuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ0LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyByLnggPSB0bXA1IC0gdG1wMyAtIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ1LCB0MywgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDMsIFJ4KSxcblxuICAgICAgICAgICAgLy8gci56ID0gKHIueiArIHIueSkuc3F1YXJlKCkgLSB0bXAxIC0genNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDEsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG5cbiAgICAgICAgICAgIC8vIHIueSA9ICh0bXAzIC0gci54KSAqIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBSeCwgUnkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeSwgdDQsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gci55IC09IHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ5LCB0MiwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wNCAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgenNxdWFyZWQsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IHRtcDMgKyB0bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IC10bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA2ID0gdG1wNi5zcXVhcmUoKSAtIHRtcDAgLSB0bXA1O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDAsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2IC0gdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQxLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnogKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnosIHpzcXVhcmVkLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSB0bXAwICsgdG1wMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBBZGRTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcEFkZFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSeCAgPSBjLmdldExvY2FsKFwiUlwiKTtcbiAgICAgICAgY29uc3QgUnkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCBSeiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgUXggID0gYy5nZXRMb2NhbChcIlFcIik7XG4gICAgICAgIGNvbnN0IFF5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUVwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcblxuICAgICAgICBjb25zdCB0MTAgID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHQxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgdDkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB5c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgenRzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB6c3F1YXJlZCA9IHIuei5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIHpzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8geXNxdWFyZWQgPSBxLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFF5LCB5c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHQwID0genNxdWFyZWQgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHpzcXVhcmVkLCBReCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MSA9ICgocS55ICsgci56KS5zcXVhcmUoKSAtIHlzcXVhcmVkIC0genNxdWFyZWQpICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgeXNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB6c3F1YXJlZCwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQwIC0gci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgUngsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0Mi5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0MyArIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0NCArIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDQsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NCAqIHQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDYgPSB0MSAtIHIueSAtIHIueTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIFJ5LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCBSeSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ2ICogcS54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NiwgUXgsIHQ5KSxcblxuICAgICAgICAgICAgLy8gdDcgPSB0NCAqIHIueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIFJ4LCB0NyksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHQ2LnNxdWFyZSgpIC0gdDUgLSB0NyAtIHQ3O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDUsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgdDIpLnNxdWFyZSgpIC0genNxdWFyZWQgLSB0MztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIHQyLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB6c3F1YXJlZCwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDMsIFJ6KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gcS55ICsgci56O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBReSwgUnosIHQxMCksXG5cbiAgICAgICAgICAgIC8vIHQ4ID0gKHQ3IC0gci54KSAqIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NywgUngsIHQ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDgsIHQ2LCB0OCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gci55ICogdDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NSwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MCA9IHQwICsgdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDApLFxuXG4gICAgICAgICAgICAvLyByLnkgPSB0OCAtIHQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OCwgdDAsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwLnNxdWFyZSgpIC0geXNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxMCwgdDEwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEwLCB5c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8genRzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenRzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwIC0genRzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHp0c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDkgPSB0OSArIHQ5IC0gdDEwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0OSwgdDksIHQ5KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDksIHQxMCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSByLnogKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDYgPSAtdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDYgKyB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDYsIHQ2LCB0MSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IFEgPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuXG4gICAgICAgIGNvbnN0IGJhc2UgPSBjLmdldExvY2FsKFwicHByZVFcIik7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBRLCBiYXNlKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2lzWmVyb1wiLCBiYXNlKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfY29weVwiLCBiYXNlLCBSKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBSLCBiYXNlLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGNk11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgYl9iID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMV9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIEFjMV9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYl9iID0gc2VsZi5jMSAqIGMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MxLCBjMSwgYl9iKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gKHNlbGYuYzEgKyBzZWxmLmMyKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzFfQWMyLCBjMSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgYl9iLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IHQxLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKHNlbGYuYzAgKyBzZWxmLmMxKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMxLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYl9iLCB0MiksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwxKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwwMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGFfYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMwX0FjMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gbGV0IGFfYSA9IHNlbGYuYzAgKiBjMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMCwgYzAsIGFfYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzAsIEFfYzIsIEFjMF9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKSArIGFfYTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgYV9hLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MiA9IChjMCArIGMxKSAqIChzZWxmLmMwICsgc2VsZi5jMSkgLSBhX2EgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIGMwLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MiwgQWMwX0FjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYV9hLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQzID0gKHNlbGYuYzAgKyBzZWxmLmMyKSAqIGMwIC0gYV9hICsgYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMyLCBjMCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgYV9hLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCBiX2IsIHQzKSxcblxuXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwwMSgpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEYxMk11bDAxNCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZ0bVByZWZpeCsgXCJfbXVsMDE0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDNFwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBjb25zdCBjMCAgPSBjLmdldExvY2FsKFwicEMwXCIpO1xuICAgICAgICBjb25zdCBjMSAgPSBjLmdldExvY2FsKFwicEMxXCIpO1xuICAgICAgICBjb25zdCBjNCAgPSBjLmdldExvY2FsKFwicEM0XCIpO1xuXG4gICAgICAgIGNvbnN0IGFhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IGJiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IG8gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBSX2MwID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBSX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYWEgPSBzZWxmLmMwLm11bF9ieV8wMShjMCwgYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIEFfYzAsIGMwLCBjMSwgYWEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYmIgPSBzZWxmLmMxLm11bF9ieV8xKGM0KTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwxXCIsIEFfYzEsIGM0LCBiYiksXG5cbiAgICAgICAgICAgIC8vIGxldCBvID0gYzEgKyBjNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzEsIGM0LCBvKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gc2VsZi5jMSArIHNlbGYuYzA7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzAsIFJfYzEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBjMS5tdWxfYnlfMDEoYzAsICZvKTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwwMVwiLCBSX2MxLCBjMCwgbywgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxIC0gYWEgLSBiYjtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9zdWJcIiwgUl9jMSwgYWEsIFJfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBiYiwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgYmIsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMC5tdWxfYnlfbm9ucmVzaWR1ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bE5SXCIsIFJfYzAsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMCArIGFhO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2FkZFwiLCBSX2MwLCBhYSwgUl9jMCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjEyTXVsMDE0KCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRUxMKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZWxsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFB4ICA9IGMuZ2V0TG9jYWwoXCJwUFwiKTtcbiAgICAgICAgY29uc3QgUHkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5pMzJfY29uc3QobjhxKSk7XG5cbiAgICAgICAgY29uc3QgRiAgPSBjLmdldExvY2FsKFwicEZcIik7XG5cbiAgICAgICAgY29uc3QgY29lZjBfMCAgPSBjLmdldExvY2FsKFwicENvZWZzXCIpO1xuICAgICAgICBjb25zdCBjb2VmMF8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjMpKTtcbiAgICAgICAgY29uc3QgY29lZjIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgcGMwID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzAgID0gYy5pMzJfY29uc3QocGMwKTtcbiAgICAgICAgY29uc3QgYzBfYzAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMSA9IGMuaTMyX2NvbnN0KHBjMCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBjMSA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuaTMyX2NvbnN0KHBjMSk7XG4gICAgICAgIGNvbnN0IGMxX2MwID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzEgPSBjLmkzMl9jb25zdChwYzErZjFzaXplKTtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzAgPSBjb2VmZnMuMDtcbiAgICAgICAgICAgIC8vICAgICBsZXQgbXV0IGMxID0gY29lZmZzLjE7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzAuYzAgKj0gcC55O1xuICAgICAgICAgICAgLy8gICAgYzAuYzEgKj0gcC55O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgIGMxLmMwICo9IHAueDtcbiAgICAgICAgICAgIC8vICAgIGMxLmMxICo9IHAueDtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICAgZi5tdWxfYnlfMDE0KCZjb2VmZnMuMiwgJmMxLCAmYzApXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMCwgUHksIGMwX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMSwgUHksIGMwX2MxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMCwgUHgsIGMxX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMSwgUHgsIGMxX2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bDAxNFwiLCBGLCBjb2VmMiwgYzEsIGMwLCBGKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuICAgIGJ1aWxkRUxMKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvZWZzICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcblxuICAgICAgICBjb25zdCBGID0gYy5nZXRMb2NhbChcInJcIik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIEYpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlUCksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcblxuICAgICAgICApO1xuXG5cbiAgICAgICAge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRiwgRiksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM4NTA3NTQzNzAwMzcxNjkwMTE5NTIxNDcwNzYwNTEzNjQwNTcxNTg4MDc0MjA5NzA2ODI0Mzg2NzYwNTA1MjI2MTM2Mjg0MjMyMTk2Mzc3MjUwNzIxODI2OTcxMTMwNjI3Nzc4OTE1ODk1MDY0MjQ3NjBuLCAxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbiwgMTAyODczMjE0NjIzNTEwNjM0OTk3NTMyNDQ3OTIxNTc5NTI3NzM4NDgzOTkzNjkyOTc1Nzg5NjE1NTY0MzExODAzMjYxMDg0MzI5ODY1NTIyNTg3NTU3MTMxMDU1MjU0MzAxNDY5MDg3ODM1NDg2OTI1N25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduLCA4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTUxNjU1MTg1MTg0NDk4MzgxNDY1NjQyNzQ5Njg0NTQwMDk5Mzk4MDc1Mzk4OTY4MzI1NDQ2NjU2MDA3NjEzNTEwNDAzMjI3MjcxMjAwMTM5MzcwNTA0OTMyMDE1OTUyODg2MTQ2MzA0NzY2MTM1MDI3biwgMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3biwgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM3biwgMG5dLFxuICAgICAgICAgICAgICAgIFs4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuLCAzMTI1MzMyNTk0MTcxMDU5NDI0OTA4MTA4MDk2MjA0NjQ4OTc4NTcwMTE4MjgxOTc3NTc1NDM1ODMyNDIyNjMxNjAxODI0MDM0NDYzMzgyNzc3OTM3NjIxMjUwNTkyNDI1NTM1NDkzMzIwNjgzODI1NTU3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFswbiwgNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCAxbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTM0MTc3ODk4MjU3MzU5MDQxNTY1NTY4ODI4MTk5MzkwMDc4ODUzMzIwNTgxMzYxMjQwMzE2NTA0OTA4Mzc4NjQ0NDI2ODc2MjkxMjkwMTU2NjQwMzc4OTQyNzI1NTk3ODZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCBuOHEpLFxuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMV0pLCBuOHEpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gYVswXTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IGFbMV07XG4gICAgICAgICAgICBjb25zdCBiYzAgPSBiWzBdO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gYlsxXTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKGFjMSAqIGJjMSkpICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKGFjMSAqIGJjMCkpICUgcSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSQxKHJlc1swXSkpIHJlc1swXSA9IHJlc1swXSArIHE7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDEsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MywgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIEFVWCwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDMpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDQgKyB0NSp5ID0gKHo0ICsgejUqeSleMiA9IGNeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHo0ICogejU7XG4gICAgICAgICAgICAvLyAgdDQgPSAoejQgKyB6NSkgKiAoejQgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejUpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0NSA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDQsIHg1LCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHg1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEJsczEyMzgxVHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgaXNFeHBOZWdhdGl2ZSwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuICAgICAgICAvLyBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMuYmlnSW50MkJ5dGVzTEUoZXhwb25lbnQsIG44KSk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0V4cE5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb24oKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBmaW5hbEV4cElzTmVnYXRpdmUsIFwidzBcIik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQwID0gZi5mcm9iZW5pdXNfbWFwKDYpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwNlwiLCBlbHQsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gZi5pbnZlcnQoKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDIgPSB0MCAqIHQxO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MCwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0Mi5jbG9uZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2NvcHlcIiwgdDIsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDIgPSB0Mi5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDIgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MSwgdDIpLFxuXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljbG90b21pY19zcXVhcmUodDIpLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHQyLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDMgPSBjeWNvbG90b21pY19leHAodDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDQgPSBjeWNsb3RvbWljX3NxdWFyZSh0Myk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NSA9IHQxICogdDM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MywgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IGN5Y29sb3RvbWljX2V4cCh0NSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDUsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDAgPSBjeWNvbG90b21pY19leHAodDEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQxLCB0MCksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDYgPSBjeWNvbG90b21pY19leHAodDApO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQwLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ICo9IHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NiwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDQgPSBjeWNvbG90b21pY19leHAodDYpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQ2LCB0NCksXG5cbiAgICAgICAgICAgIC8vIHQ1ID0gdDUuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQ1LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQ0ICo9IHQ1ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0NSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0Mi5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDEgKj0gdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQxLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDNcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDU7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQ2LmZyb2Jlbml1c19tYXAoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXAxXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQwO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDAsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0My5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MSwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQ2LCB0MyksXG5cbiAgICAgICAgICAgIC8vIGYgPSB0MyAqIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDQsIHJlcyksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDMyMjI3NzM2MTUxNjkzNDE0MDQ2Mjg5MTU2NDU4NjUxMDEzOTkwODM3OTk2OTUxNDgyODQ5NDIxODM2NjY4ODAyNTI4ODY2MTA0MTEwNDY4Mjc5NDk5ODY4MDQ5NzU4MDAwODg5OTk3MzI0OTgxNDEwNDQ0NzY5Mjc3ODk4ODIwODM3Njc3OTU3MzgxOTQ4NTI2MzAyNjE1OTU4ODUxMDUxMzgzNDg3NjMwMzAxNDAxNjc5ODgwOTkxOTM0MzUzMjg5OTE2NDg0ODczMDI4MDk0MjYwOTk1NjY3MDkxNzU2NTYxODExNTg2NzI4NzM5OTYyMzI4NjgxMzI3MDM1NzkwMTczMTUxMDE4ODE0OTkzNDM2MzM2MDM4MTYxNDUwMTMzNDA4NjgyNTQ0MjI3MTkyMDA3OTM2MzI4OTk1NDUxMDU2NTM3NTM3ODQ0MzcwNDM3Mjk5NDg4MTQwNjc5Nzg4MjY3Njk3MTA4MjIwMDYyNjU0MTkxNjQxMzE4NDY0MjUyMDI2OTY3ODg5NzU1OTUzMjI2MDk0OTMzNDc2MDYwNDk2MjA4NjM0ODg5ODExODk4MjI0ODg0MjYzNDM3OTYzNzU5ODY2NTQ2ODgxNzc2OTA3NTg3ODU1NTQ5Mzc1MjIxNDQ5Mjc5MDEyMjc4NTg1MDIwMjk1NzU3NTIwMDE3NjA4NDIwNDQyMjc1MTQ4NTk1NzMzNjQ2NTQ3MjMyNDgxMDk4MjgzMzYzODQ5MDkwNDI3OTI4MjY5NjEzNDMyMzA3MjUxNTIyMDA0NDQ1MTU5MjY0Njg4NTQxMDU3MjIzNDQ1MTczMjc5MDU5MDAxMzQ3OTM1ODM0Mzg0MTIyMDA3NDE3NDg0ODIyMTcyMjAxNzA4MzU5Nzg3MjAxNzYzODUxNDEwMzE3NDEyMjc4NDg0MzkyNTU3ODM3MDQzMDg0MzUyMjk1OTYwMDA5NTY3NjI4NTcyMzczNzA0OTQzODM0NjU0NDc1MzE2ODkxMjk3NDk3Njc5MTUyODUzNTI3NjMxNzI1NjkwNDMzNjUyMDE3OTI4MTE0NTM5NDY4NjU2NTA1MDQxOTI1MDYxNDEwNzgwMzIzMzMxNDY1ODgyNTQ2MzExNzkwMDI1MDcwMTE5OTE4MTUyOTIwNTk0MjM2MzE1OTMyNTc2NTk5MTgxOTQzMzkxNDMwMzkwODg2MDQ2MDcyMDU4MTQwODIwMTM3MzE2NDA0Nzc3Mzc5NDgyNTQxMTAxMTkyMjMwNTgyMDA2NTYxMTEyMTU0NDU2MTgwODQxNDA1NTMwMjIxMjA1NzQ3MTM5NTcxOTQzMjA3MjIwOTI0NTYwMDI1ODEzNDM2NDU4NDYzNjgxMDA5MzUyMDI4NTcxMTA3MjU3ODcyMTQzNTUxNzg4NDEwMzUyNjQ4MzgzMjczMzI4OTgwMjQyNjE1NzMwMTU0Mjc0NDQ3Njc0MDAwODQ5NDc4MDM2MzM1NDMwNTExNjk3ODgwNTYyMDY3MTQ2NzA3MTQwMDcxMTM1ODgzOTU1MzM3NTM0MDcyNDg5OTczNTQ2MDQ4MDE0NDU5OTc4MjAxNDkwNjU4NjU0MzgxMzI5MjE1NzkyMjIyMDY0NTA4OTE5MjEzMDIwOTMzNDkyNjY2MTU4ODczNzAwNzc2ODU2NTgzODUxOTQ1NjYwMTU2MDgwNDk1Nzk4NTY2Nzg4MDM5NTIyMTA0OTI0OTgwMzc1MzU4MjYzNzcwODU2MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCA1NDQgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCg1NDQpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBwUHJlUCA9IG1vZHVsZS5hbGxvYyhwcmVQU2l6ZSk7XG4gICAgY29uc3QgcFByZVEgPSBtb2R1bGUuYWxsb2MocHJlUVNpemUpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRQYWlyaW5nRXF1YXRpb24oblBhaXJpbmdzKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdFcVwiK25QYWlyaW5ncyk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInBfXCIraSwgXCJpMzJcIik7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicV9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZFBhcmFtKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBhdXhUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlc1QgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiLCBjLmdldExvY2FsKFwicV9cIitpKSwgYy5pMzJfY29uc3QocFByZVEpICkpO1xuXG4gICAgICAgICAgICAvLyBDaGVja3NcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVApKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkdyb3VwQWZmaW5lXCIsIGMuaTMyX2NvbnN0KHBQcmVRKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkdyb3VwRzIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZzJtUHJlZml4KyBcIl9pbkdyb3VwQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgV0lOViA9IFtcbiAgICAgICAgICAgIDIwMDEyMDQ3Nzc2MTA4MzM2OTY3MDg4OTQ5MTI4Njc5NTIwNzgyNzg0NDE0MDk5Njk1MDM5NDI2NjYwMjkwNjgwNjIwMTU4MjUyNDU0MTg5MzIyMjEzNDM4MTQ1NjQ1MDc4MzIwMTg5NDcxMzYyNzk4OTRuLFxuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5M25cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGUk9CMlggPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgRlJPQjNZID0gW1xuICAgICAgICAgICAgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG4sXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHdJbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoV0lOVlswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IGZyb2IyWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CMlgpLCBuOHEpKSk7XG4gICAgICAgIGNvbnN0IGZyb2IzWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMF0pLCBuOHEpLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoRlJPQjNZWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShmaW5hbEV4cFosIDgpKSk7XG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcblxuICAgICAgICBjb25zdCB4X3dpbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcGYyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgZjIgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnggPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzEgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzIgPSBjLmkzMl9jb25zdChwZjIrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5ID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMSA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUpO1xuICAgICAgICBjb25zdCBmMnlfYzIgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IHBmMyA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IGYzID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4ID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MxID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MyID0gYy5pMzJfY29uc3QocGYzK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzEgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjN5X2MyID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZStmMXNpemUpO1xuICAgICAgICBjb25zdCBmM3ogPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKjIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCB3SW52LCB4X3dpbnYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBweSwgd0ludiwgeV93aW52KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgeF93aW52LCBmcm9iMlgsIGYyeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHlfd2ludiwgZjJ5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB4X3dpbnYsIGYzeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHlfd2ludiwgZnJvYjNZLCBmM3kpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeF9jMSwgZjJ4X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnhfYzEsIGYyeF9jMiwgZjJ4X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ4X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBmMnlfYzEsIGYyeV9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjJ5X2MxLCBmMnlfYzIsIGYyeV9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYyeV9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjN4X2MxLCBmM3hfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeF9jMSwgZjN4X2MyLCBmM3hfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3hfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeV9jMiwgZjN5X2MxLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3lfYzEsIGYzeV9jMiwgZjN5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjN5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX29uZVwiLCBmM3opLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgZjMsIHosIGMuaTMyX2NvbnN0KDgpLCBmMyksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgZjMsIGYyLCBmMyksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9lcU1peGVkXCIsIGYzLCBjLmdldExvY2FsKFwicFwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMm1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBCRVRBID0gNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm47XG4gICAgICAgIGNvbnN0IEJFVEEyID0gNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbjtcbiAgICAgICAgY29uc3QgWjJNMUQzID0gKGZpbmFsRXhwWiAqIGZpbmFsRXhwWiAtIDFuKSAvIDNuO1xuXG4gICAgICAgIGNvbnN0IGJldGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQSksIG44cSkpKTtcbiAgICAgICAgY29uc3QgYmV0YTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQTIpLCBuOHEpKSk7XG5cbiAgICAgICAgY29uc3QgejJtMWQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoWjJNMUQzLCAxNikpKTtcblxuXG4gICAgICAgIGNvbnN0IHB4ID0gYy5nZXRMb2NhbChcInBcIik7XG4gICAgICAgIGNvbnN0IHB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBwc3AgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjMpO1xuICAgICAgICBjb25zdCBzcCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweSA9IGMuaTMyX2NvbnN0KHBzcCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBzMnAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBzMnAgPSBjLmkzMl9jb25zdChwczJwKTtcbiAgICAgICAgY29uc3QgczJweCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB5ID0gYy5pMzJfY29uc3QocHMycCtmMXNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCBiZXRhLCBzcHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHNweSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEyLCBzMnB4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIHB5LCBzMnB5KSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIHNwLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIGMuZ2V0TG9jYWwoXCJwXCIpLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIHMycCwgc3ApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgc3AsIHoybTFkMywgYy5pMzJfY29uc3QoMTYpLCBzcCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9lcU1peGVkXCIsIHNwLCBzMnApXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMW1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIitpKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkSW5Hcm91cEcxKCk7XG4gICAgYnVpbGRJbkdyb3VwRzIoKTtcblxuICAgIGJ1aWxkUHJlcEFkZFN0ZXAoKTtcbiAgICBidWlsZFByZXBEb3VibGVTdGVwKCk7XG5cbiAgICBidWlsZFByZXBhcmVHMSgpO1xuICAgIGJ1aWxkUHJlcGFyZUcyKCk7XG5cbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwwMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBtb2R1bGUuZXhwb3J0cy5ibjEyOF93YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvYm4xMjhfd2FzbS5qc1wiKTtcbi8vIG1vZHVsZS5leHBvcnRzLmJsczEyMzgxX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibHMxMjM4MV93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMubW50Njc1M193YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvbW50Njc1M193YXNtLmpzXCIpO1xuXG52YXIgYnVpbGRCbjEyOCQxID0gYnVpbGRfYm4xMjg7XG52YXIgYnVpbGRCbHMxMjM4MSQxID0gYnVpbGRfYmxzMTIzODE7XG5cbi8qIGdsb2JhbCBCaWdJbnQgKi9cblxuZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUobywgMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL15bMC05XSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eMHhbMC05YS1mQS1GXSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSBidWZmLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICBpZiAoaSA+PSA0KSB7XG4gICAgICAgICAgICBpIC09IDQ7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvIC0gNCA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDQ7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyAtIDIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgxNik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvIC09IDE7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50OChvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBsZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gQmlnSW50KDApO1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpIDwgYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgKyA0IDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMiA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGxlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KG4pIC0gMSkgLyA4KSArIDE7XG4gICAgICAgIGlmIChsZW4gPT0gMCkgbGVuID0gMTtcbiAgICB9XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIGxldCBvID0gMDtcbiAgICB3aGlsZSAobyA8IGxlbikge1xuICAgICAgICBpZiAobyArIDQgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyArIDIgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSAyO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDE7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUZFbGVtZW50cyhGLCBvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBGLnRvU3RyaW5nKEYuZShvKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5RkVsZW1lbnRzLmJpbmQodGhpcywgRikpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPSAwO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJiAxKTtcbiAgICAgICAgYSA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4ZmZdIDw8IDI0KSkgPj4+XG4gICAgICAgICgzMiAtIGJpdHMpXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gbG9nMihWKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKChWICYgMHhmZmZmMDAwMCkgIT09IDAgPyAoKFYgJj0gMHhmZmZmMDAwMCksIDE2KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhmZjAwZmYwMCkgIT09IDAgPyAoKFYgJj0gMHhmZjAwZmYwMCksIDgpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGYwZjBmMGYwKSAhPT0gMCA/ICgoViAmPSAweGYwZjBmMGYwKSwgNCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4Y2NjY2NjY2MpICE9PSAwID8gKChWICY9IDB4Y2NjY2NjY2MpLCAyKSA6IDApIHxcbiAgICAgICAgKChWICYgMHhhYWFhYWFhYSkgIT09IDApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gYnVmZlJldmVyc2VCaXRzKGJ1ZmYsIGVTaXplKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIGVTaXplO1xuICAgIGNvbnN0IGJpdHMgPSBsb2cyKG4pO1xuICAgIGlmIChuICE9IDEgPDwgYml0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgY29uc3QgciA9IGJpdFJldmVyc2UoaSwgYml0cyk7XG4gICAgICAgIGlmIChpID4gcikge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gYnVmZi5zbGljZShpICogZVNpemUsIChpICsgMSkgKiBlU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldChidWZmLnNsaWNlKHIgKiBlU2l6ZSwgKHIgKyAxKSAqIGVTaXplKSwgaSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHRtcCwgciAqIGVTaXplKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYXJyYXkyYnVmZmVyKGFyciwgc0cpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cgKiBhcnIubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmYuc2V0KGFycltpXSwgaSAqIHNHKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gYnVmZmVyMmFycmF5KGJ1ZmYsIHNHKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkgKiBzRywgaSAqIHNHICsgc0cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufVxuXG52YXIgX3V0aWxzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhcnJheTJidWZmZXI6IGFycmF5MmJ1ZmZlcixcbiAgICBiZUJ1ZmYyaW50OiBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmY6IGJlSW50MkJ1ZmYsXG4gICAgYml0UmV2ZXJzZTogYml0UmV2ZXJzZSxcbiAgICBidWZmUmV2ZXJzZUJpdHM6IGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBidWZmZXIyYXJyYXk6IGJ1ZmZlcjJhcnJheSxcbiAgICBsZUJ1ZmYyaW50OiBsZUJ1ZmYyaW50LFxuICAgIGxlSW50MkJ1ZmY6IGxlSW50MkJ1ZmYsXG4gICAgbG9nMjogbG9nMixcbiAgICBzdHJpbmdpZnlCaWdJbnRzOiBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHN0cmluZ2lmeUZFbGVtZW50czogc3RyaW5naWZ5RkVsZW1lbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50czogdW5zdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5RkVsZW1lbnRzOiB1bnN0cmluZ2lmeUZFbGVtZW50c1xufSk7XG5cbmNvbnN0IFBBR0VfU0laRSA9IDE8PDMwO1xuXG5jbGFzcyBCaWdCdWZmZXIge1xuXG4gICAgY29uc3RydWN0b3Ioc2l6ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gc2l6ZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNpemU7IGkrPSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihzaXplLWksIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlcnMucHVzaChuZXcgVWludDhBcnJheShuKSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHNsaWNlKGZyLCB0bykge1xuICAgICAgICBpZiAoIHRvID09PSB1bmRlZmluZWQgKSB0byA9IHRoaXMuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKCBmciA9PT0gdW5kZWZpbmVkICkgZnIgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0by1mcjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKGZyIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChmcitsZW4tMSkgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGlmICgoZmlyc3RQYWdlID09IGxhc3RQYWdlKXx8KGxlbj09MCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2xpY2UoZnIlUEFHRV9TSVpFLCBmciVQQUdFX1NJWkUgKyBsZW4pO1xuXG4gICAgICAgIGxldCBidWZmO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IGZyICUgUEFHRV9TSVpFO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyc1twXS5idWZmZXIsIHRoaXMuYnVmZmVyc1twXS5ieXRlT2Zmc2V0K28sIGwpO1xuICAgICAgICAgICAgaWYgKGwgPT0gbGVuKSByZXR1cm4gc3JjVmlldy5zbGljZSgpO1xuICAgICAgICAgICAgaWYgKCFidWZmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmLnNldChzcmNWaWV3LCBsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgc2V0KGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG5cbiAgICAgICAgY29uc3QgbGVuID0gYnVmZi5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW49PTApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKG9mZnNldCAvIFBBR0VfU0laRSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigob2Zmc2V0K2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKGZpcnN0UGFnZSA9PSBsYXN0UGFnZSkge1xuICAgICAgICAgICAgaWYgKChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSYmKGJ1ZmYuYnVmZmVycy5sZW5ndGg9PTEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLmJ1ZmZlcnNbMF0sIG9mZnNldCAlIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zZXQoYnVmZiwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBvZmZzZXQgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZSggbGVuIC1yLCBsZW4gLXIrbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQgKyBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydCh0bSwgZm5OYW1lLCBzSW4sIHNPdXQpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0KGJ1ZmZJbikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5jbGFzcyBXYXNtRmllbGQxIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIG44LCBwKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG5cbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy5uOCA9IG44O1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYxXCI7XG4gICAgICAgIHRoaXMubSA9IDE7XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodChwLCBvbmUpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IGJpdExlbmd0aCQ2KHApO1xuICAgICAgICB0aGlzLm1hc2sgPSBzdWIoc2hpZnRMZWZ0KG9uZSwgdGhpcy5iaXRMZW5ndGgpLCBvbmUpO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IobjgvOCk7XG4gICAgICAgIHRoaXMubjMyID0gTWF0aC5mbG9vcihuOC80KTtcblxuICAgICAgICBpZih0aGlzLm42NCo4ICE9IHRoaXMubjgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm44IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodCh0aGlzLnAsIG9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5leHAodGhpcy5ucXIsIHRoaXMuaGFsZik7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5hZGQodGhpcy5ucXIsIHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLm11bCh0aGlzLm5xciwgdGhpcy5ucXIpO1xuICAgICAgICB0aGlzLnNoaWZ0SW52ID0gdGhpcy5pbnYodGhpcy5zaGlmdCk7XG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgbGV0IHQgPSBzdWIodGhpcy5wLCBvbmUpO1xuXG4gICAgICAgIHdoaWxlICggIWlzT2RkJDUodCkgKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdCA9IHNoaWZ0UmlnaHQodCwgb25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudyA9IFtdO1xuICAgICAgICB0aGlzLndbdGhpcy5zXSA9IHRoaXMuZXhwKHRoaXMubnFyLCB0KTtcblxuICAgICAgICBmb3IgKGxldCBpPSB0aGlzLnMtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLndbaV0gPSB0aGlzLnNxdWFyZSh0aGlzLndbaSsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXEodGhpcy53WzBdLCB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNhbGN1bGF0aW5nIHJvb3RzIG9mIHVuaXR5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXRjaFRvTW9udGdvbWVyeSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaEZyb21Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoRnJvbU1vbnRnb21lcnlcIiwgdGhpcy5uOCwgdGhpcy5uOCk7XG4gICAgfVxuXG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBsZXQgcmEgPSBlKGEsIGIpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZSQ0KHJhKSkge1xuICAgICAgICAgICAgcmEgPSBuZWcocmEpO1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYSA9IHN1Yih0aGlzLnAsIHJhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gbW9kKHJhLCB0aGlzLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZUludDJCdWZmKHJhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgY29uc3QgcyA9IGZyb21ScHJMRShhbiwgMCk7XG4gICAgICAgIHJldHVybiB0b1N0cmluZyhzLCByYWRpeCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IHplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgPSBhZGQodiwgIHNoaWZ0TGVmdChybmcubmV4dFU2NCgpLCA2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gYmFuZCh2LCB0aGlzLm1hc2spO1xuICAgICAgICB9IHdoaWxlIChnZXEodiwgdGhpcy5wKSk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgdiwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUoYW4sIDApO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5uOCk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG9mZnNldCwgYSkge1xuICAgICAgICBidWZmLnNldCh0aGlzLmZyb21Nb250Z29tZXJ5KGEpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjgvMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdXggPSBidWZmMltpXTtcbiAgICAgICAgICAgIGJ1ZmYyW2ldID0gYnVmZjJbdGhpcy5uOC0xLWldO1xuICAgICAgICAgICAgYnVmZjJbdGhpcy5uOC0xLWldID0gYXV4O1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmYuc2V0KGJ1ZmYyLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IHJlcyA9IGJ1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KHJlcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hJbnZlcnNlKGJ1ZmZJbikge1xuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc0luID0gdGhpcy5uODtcbiAgICAgICAgY29uc3Qgc091dCA9IHRoaXMubjg7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZkluKSkge1xuICAgICAgICAgICAgYnVmZkluID0gYXJyYXkyYnVmZmVyKGJ1ZmZJbiwgc0luICk7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmSW4gPSBidWZmSW4uc2xpY2UoMCwgYnVmZkluLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkluLmJ5dGVMZW5ndGggLyBzSW4pO1xuICAgICAgICBpZiAoIG5Qb2ludHMgKiBzSW4gIT09IGJ1ZmZJbi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzL3RoaXMudG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRoaXMudG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmSW4uc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzSW4sIGkqcG9pbnRzUGVyQ2h1bmsqc0luICsgbipzSW4pO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjpidWZmQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IHRoaXMucHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc0lufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzT3V0fSxcbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShmdWxsQnVmZk91dCwgc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQyIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYyXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjI7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCoyO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b01vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgZnJvbU1vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZnJvbU1vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfbXVsXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG11bDEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWwxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfaW52ZXJzZVwiXSh0aGlzLnBPcDIsIHRoaXMucE9wMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX211bFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNTcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzU3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIHNxcnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3FydFwiLCBhKTtcbiAgICB9XG5cbiAgICBleHAoYSwgYikge1xuICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgIGIgPSB0b0xFQnVmZihlKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDIpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjMShhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgYzIoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQzIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYzXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDM7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjM7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCozO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMykpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYuZShhWzJdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIEYzXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9LCAke3MzfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIHJldHVybiBbYzEsIGMyLCBjM107XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGNvbnN0IGIzID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KGIzLCB0aGlzLkYubjgqMik7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIGMzKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44KjIpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtQ3VydmUge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRiwgcEdlbiwgcEdiLCBjb2ZhY3Rvcikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgICAgICB0aGlzLkYgPSBGO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvQWZmaW5lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVyb0FmZmluZSA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMik7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMyk7XG4gICAgICAgIHRoaXMuZyA9IHRoaXMub25lO1xuICAgICAgICB0aGlzLm9uZUFmZmluZSA9IHRoaXMudG0uZ2V0QnVmZihwR2VuLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmdBZmZpbmUgPSB0aGlzLm9uZUFmZmluZTtcbiAgICAgICAgdGhpcy5iID0gdGhpcy50bS5nZXRCdWZmKHBHYiwgRi5uOCk7XG5cbiAgICAgICAgaWYgKGNvZmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmNvZmFjdG9yID0gdG9MRUJ1ZmYoY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLmJhdGNoTEVNdG9DID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIsIEYubjgqMiwgRi5uOCk7XG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b1UgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoQ3RvTEVNID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIEYubjgsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hVdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoVG9KYWNvYmlhbiA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIiwgRi5uOCoyLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmJhdGNoVG9BZmZpbmUgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiLCBGLm44KjMsIEYubjgqMik7XG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AyYm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIG9wMUFmZmluZShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YkFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl9uZWdBZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2RvdWJsZUFmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihhLCBzKSB7XG4gICAgICAgIGlmICghKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgcyA9IHRvTEVCdWZmKGUocykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBzLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgdGltZXNGcihhLCBzKSB7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNGclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIHMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbZm5OYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcUFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9BZmZpbmUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFBZmZpbmUoXCJfdG9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvSmFjb2JpYW4oYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b0phY29iaWFuXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b1VcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX1V0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoICE9IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfTEVNdG9DXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGJ1ZmYpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9DdG9MRU1cIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMiwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvVW5jb21wcmVzc2VkKGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBhKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgYXJyLnNldChhLCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIHJldHVybiBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQrdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHogPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9LCAke3p9IF1gO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICByZXR1cm4gYFsgJHt4fSwgJHt5fSBdYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsaWQoYSkge1xuICAgICAgICBpZiAodGhpcy5pc1plcm8oYSkpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhYSA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIGNvbnN0IHggPSBhYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgICAgICBjb25zdCB5ID0gYWEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKHgpLHgpLCB0aGlzLmIpO1xuICAgICAgICBjb25zdCB5MiA9IEYuc3F1YXJlKHkpO1xuICAgICAgICByZXR1cm4gRi5lcSh4M2IsIHkyKTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBsZXQgUCA9IFtdO1xuICAgICAgICBsZXQgZ3JlYXRlc3Q7XG4gICAgICAgIGxldCB4M2I7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIFBbMF0gPSBGLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGdyZWF0ZXN0ID0gcm5nLm5leHRCb29sKCk7XG4gICAgICAgICAgICB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIH0gd2hpbGUgKCFGLmlzU3F1YXJlKHgzYikpO1xuXG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBjb25zdCBzID0gRi5pc05lZ2F0aXZlKFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG5cbiAgICAgICAgbGV0IFBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBQYnVmZi5zZXQoUFswXSk7XG4gICAgICAgIFBidWZmLnNldChQWzFdLCB0aGlzLkYubjgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQYnVmZiA9IHRoaXMudGltZXNTY2FsYXIoUGJ1ZmYsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBidWZmO1xuICAgIH1cblxuXG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYub25lKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBsZXQgejtcbiAgICAgICAgaWYgKGEubGVuZ3RoPT0zKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVyb0FmZmluZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkYuZXEoeiwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICBidWZmLnNldCh6LCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGUoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KGEpO1xuICAgIH1cblxuICAgIHgoYSkge1xuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnRvQWZmaW5lKGEpO1xuICAgICAgICByZXR1cm4gdG1wLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgeShhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UodGhpcy5GLm44KTtcbiAgICB9XG5cbn1cblxuLyogZ2xvYmFsIFdlYkFzc2VtYmx5ICovXG5cbmZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XG4gICAgY29uc3QgTUFYTUVNID0gMzI3Njc7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtZW1vcnk7XG5cbiAgICBpZiAoc2VsZikge1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgICAgICBpbml0KGRhdGFbMF0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWzBdLmNtZCA9PSBcIlRFUk1JTkFURVwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XG4gICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGNvZGUpO1xuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gJiAzKSB1MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIGlmICh1MzJbMF0gKyBsZW5ndGggPiBtZW1vcnkuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUGFnZXM+TUFYTUVNKSByZXF1aXJlZFBhZ2VzPU1BWE1FTTtcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFsbG9jQnVmZmVyKGJ1ZmZlcikge1xuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QnVmZmVyKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFwiSU5JVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICB2YXJzOiBbXSxcbiAgICAgICAgICAgIG91dDogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DU0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1wiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTRVRcIjpcbiAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNBTExcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGFza1tpXS5wYXJhbXNbal07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGN0eC52YXJzW3AudmFyXSArIChwLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHAudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBvcnRzW3Rhc2tbaV0uZm5OYW1lXSguLi5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkdFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY21kXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUzMmIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gcnVuVGFzaztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBjb25zdCBNRU1fU0laRSA9IDEwMDA7ICAvLyBNZW1vcnkgc2l6ZSBpbiA2NEsgUGFrZXMgKDUxMk1iKVxuY29uc3QgTUVNX1NJWkUgPSAyNTsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoMTYwMEtiKVxuXG5jbGFzcyBEZWZlcnJlZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5sZXQgd29ya2VyU291cmNlO1xuXG5jb25zdCB0aHJlYWRTdHIgPSBgKCR7XCJmdW5jdGlvbiB0aHJlYWQoc2VsZikge1xcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcXG4gICAgbGV0IGluc3RhbmNlO1xcbiAgICBsZXQgbWVtb3J5O1xcblxcbiAgICBpZiAoc2VsZikge1xcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgbGV0IGRhdGE7XFxuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIklOSVRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFxcXCJURVJNSU5BVEVcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xcbiAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgfVxcblxcbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcXG4gICAgICAgIGNvbnN0IGNvZGUgPSBuZXcgVWludDhBcnJheShkYXRhLmNvZGUpO1xcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XFxuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XFxuXFxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcXG4gICAgICAgICAgICBlbnY6IHtcXG4gICAgICAgICAgICAgICAgXFxcIm1lbW9yeVxcXCI6IG1lbW9yeVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xcbiAgICAgICAgY29uc3QgdTMyID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXFxuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XFxuICAgICAgICB1MzJbMF0gKz0gbGVuZ3RoO1xcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XFxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkUGFnZXMgPSBNYXRoLmZsb29yKCh1MzJbMF0gKyBsZW5ndGgpIC8gMHgxMDAwMCkrMTtcXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiByZXM7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xcbiAgICAgICAgc2V0QnVmZmVyKHAsIGJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gcDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHU4LmJ1ZmZlciwgdTguYnl0ZU9mZnNldCArIHBvaW50ZXIsIGxlbmd0aCk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0QnVmZmVyKHBvaW50ZXIsIGJ1ZmZlcikge1xcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcXG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcXG4gICAgICAgIGlmICh0YXNrWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGN0eCA9IHtcXG4gICAgICAgICAgICB2YXJzOiBbXSxcXG4gICAgICAgICAgICBvdXQ6IFtdXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIGNvbnN0IG9sZEFsbG9jID0gdTMyYVswXTtcXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkFMTE9DU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvYyh0YXNrW2ldLmxlbik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIlNFVFxcXCI6XFxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkNBTExcXFwiOiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGFza1tpXS5wYXJhbXMubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXNlIFxcXCJHRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgub3V0W3Rhc2tbaV0ub3V0XSA9IGdldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0ubGVuKS5zbGljZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkludmFsaWQgY21kXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcXG4gICAgICAgIHJldHVybiBjdHgub3V0O1xcbiAgICB9XFxuXFxuXFxuICAgIHJldHVybiBydW5UYXNrO1xcbn1cIn0pKHNlbGYpYDtcbntcbiAgICBpZihnbG9iYWxUaGlzPy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHRocmVhZEJ5dGVzPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodGhyZWFkU3RyKTtcbiAgICAgICAgY29uc3Qgd29ya2VyQmxvYiA9IG5ldyBCbG9iKFt0aHJlYWRCeXRlc10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSkgO1xuICAgICAgICB3b3JrZXJTb3VyY2UgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0O2Jhc2U2NCxcIiArIGdsb2JhbFRoaXMuYnRvYSh0aHJlYWRTdHIpO1xuICAgIH1cbn1cblxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGhyZWFkTWFuYWdlcih3YXNtLCBzaW5nbGVUaHJlYWQpIHtcbiAgICBjb25zdCB0bSA9IG5ldyBUaHJlYWRNYW5hZ2VyKCk7XG5cbiAgICB0bS5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOk1FTV9TSVpFfSk7XG4gICAgdG0udTggPSBuZXcgVWludDhBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcbiAgICB0bS51MzIgPSBuZXcgVWludDMyQXJyYXkodG0ubWVtb3J5LmJ1ZmZlcik7XG5cbiAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZSh3YXNtLmNvZGUpO1xuXG4gICAgdG0uaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgIGVudjoge1xuICAgICAgICAgICAgXCJtZW1vcnlcIjogdG0ubWVtb3J5XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBpZighZ2xvYmFsVGhpcz8uV29ya2VyKSB7XG4gICAgICAgIHNpbmdsZVRocmVhZCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIHRtLnNpbmdsZVRocmVhZCA9IHNpbmdsZVRocmVhZDtcbiAgICB0bS5pbml0YWxQRnJlZSA9IHRtLnUzMlswXTsgICAvLyBTYXZlIHRoZSBQb2ludGVyIHRvIGZyZWUgc3BhY2UuXG4gICAgdG0ucHEgPSB3YXNtLnBxO1xuICAgIHRtLnByID0gd2FzbS5wcjtcbiAgICB0bS5wRzFnZW4gPSB3YXNtLnBHMWdlbjtcbiAgICB0bS5wRzF6ZXJvID0gd2FzbS5wRzF6ZXJvO1xuICAgIHRtLnBHMmdlbiA9IHdhc20ucEcyZ2VuO1xuICAgIHRtLnBHMnplcm8gPSB3YXNtLnBHMnplcm87XG4gICAgdG0ucE9uZVQgPSB3YXNtLnBPbmVUO1xuXG4gICAgLy8gICAgdG0ucFRtcDAgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuICAgIC8vICAgIHRtLnBUbXAxID0gdG0uYWxsb2MoY3VydmUuRzIuRi5uOCozKTtcblxuICAgIGlmIChzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgdG0uY29kZSA9IHdhc20uY29kZTtcbiAgICAgICAgdG0udGFza01hbmFnZXIgPSB0aHJlYWQoKTtcbiAgICAgICAgYXdhaXQgdG0udGFza01hbmFnZXIoW3tcbiAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgIGNvZGU6IHRtLmNvZGUuc2xpY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ICA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG0ud29ya2VycyA9IFtdO1xuICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzID0gW107XG4gICAgICAgIHRtLndvcmtpbmcgPSBbXTtcblxuICAgICAgICBsZXQgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJvYmplY3RcIiAmJiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihjb25jdXJyZW5jeSA9PSAwKXtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpbWl0IHRvIDY0IHRocmVhZHMgZm9yIG1lbW9yeSByZWFzb25zLlxuICAgICAgICBpZiAoY29uY3VycmVuY3k+NjQpIGNvbmN1cnJlbmN5PTY0O1xuICAgICAgICB0bS5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIod29ya2VyU291cmNlKTtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBnZXRPbk1zZyhpKSk7XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbml0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLndvcmtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgY29uc3QgY29weUNvZGUgPSB3YXNtLmNvZGUuc2xpY2UoKTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKHRtLnBvc3RBY3Rpb24oaSwgW3tcbiAgICAgICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgICAgIGNvZGU6IGNvcHlDb2RlXG4gICAgICAgICAgICB9XSwgW2NvcHlDb2RlLmJ1ZmZlcl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGluaXRQcm9taXNlcyk7XG5cbiAgICB9XG4gICAgcmV0dXJuIHRtO1xuXG4gICAgZnVuY3Rpb24gZ2V0T25Nc2coaSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoKGUpJiYoZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkc1tpXS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgdG0ucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmNsYXNzIFRocmVhZE1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHN0YXJ0U3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSAhPSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IHRoaXMudTMyWzBdO1xuICAgIH1cblxuICAgIGVuZFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5vbGRQRnJlZTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgcG9zdEFjdGlvbih3b3JrZXJJZCwgZSwgdHJhbnNmZXJzLCBfZGVmZXJyZWQpIHtcbiAgICAgICAgaWYgKHRoaXMud29ya2luZ1t3b3JrZXJJZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvc3RpbmcgYSBqb2IgdCBhIHdvcmtpbmcgd29ya2VyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2luZ1t3b3JrZXJJZF0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0gPSBfZGVmZXJyZWQgPyBfZGVmZXJyZWQgOiBuZXcgRGVmZXJyZWQoKTtcbiAgICAgICAgdGhpcy53b3JrZXJzW3dvcmtlcklkXS5wb3N0TWVzc2FnZShlLCB0cmFuc2ZlcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdLnByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1dvcmtzKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IChpPHRoaXMud29ya2Vycy5sZW5ndGgpJiYodGhpcy5hY3Rpb25RdWV1ZS5sZW5ndGggPiAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53b3JraW5nW2ldID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29yayA9IHRoaXMuYWN0aW9uUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3Rpb24oaSwgd29yay5kYXRhLCB3b3JrLnRyYW5zZmVycywgd29yay5kZWZlcnJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZUFjdGlvbihhY3Rpb25EYXRhLCB0cmFuc2ZlcnMpIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVRocmVhZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50YXNrTWFuYWdlcihhY3Rpb25EYXRhKTtcbiAgICAgICAgICAgIGQucmVzb2x2ZShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyczogdHJhbnNmZXJzLFxuICAgICAgICAgICAgICAgIGRlZmVycmVkOiBkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQucHJvbWlzZTtcbiAgICB9XG5cbiAgICByZXNldE1lbW9yeSgpIHtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLmluaXRhbFBGcmVlO1xuICAgIH1cblxuICAgIGFsbG9jQnVmZihidWZmKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSB0aGlzLmFsbG9jKGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2V0QnVmZihwb2ludGVyLCBidWZmKTtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXI7XG4gICAgfVxuXG4gICAgZ2V0QnVmZihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudTguc2xpY2UocG9pbnRlciwgcG9pbnRlcisgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzZXRCdWZmKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB0aGlzLnU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBhbGxvYyhsZW5ndGgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMudTMyWzBdICYgMykgdGhpcy51MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnUzMlswXTtcbiAgICAgICAgdGhpcy51MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMud29ya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzW2ldLnBvc3RNZXNzYWdlKFt7Y21kOiBcIlRFUk1JTkFURVwifV0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMCk7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuXG4gICAgY3VydmVbZ3JvdXBOYW1lXS5iYXRjaEFwcGx5S2V5ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgZmlyc3QsIGluYywgaW5UeXBlLCBvdXRUeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBvdXRUeXBlID0gb3V0VHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkFmZmluZTtcbiAgICAgICAgbGV0IHNHaW4sIHNHbWlkLCBzR291dDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICBzR2luID0gRy5uODtcbiAgICAgICAgICAgIHNHbWlkID0gRy5uODtcbiAgICAgICAgICAgIHNHb3V0ID0gRy5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXA6IFwiICsgZ3JvdXBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzR2luKTtcbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGluYyA9IEZyLmUoaW5jKTtcbiAgICAgICAgbGV0IHQgPSBGci5lKGZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJBTExPQ1NFVFwiLFxuICAgICAgICAgICAgICAgIHZhcjogMCxcbiAgICAgICAgICAgICAgICBidWZmOiBidWZmLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0dpbiwgaSpwb2ludHNQZXJDaHVuaypzR2luICsgbipzR2luKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IHR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipNYXRoLm1heChzR21pZCwgc0dvdXQpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBmbk5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOjN9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZm5BZmZpbmUpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWU6IGZuQWZmaW5lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qc0dvdXR9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgIHQgPSBGci5tdWwodCwgRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IG91dEJ1ZmY7XG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBvdXRCdWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG91dEJ1ZmYuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dEJ1ZmY7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYWlyaW5nKGN1cnZlKSB7XG4gICAgY29uc3QgdG0gPSBjdXJ2ZS50bTtcbiAgICBjdXJ2ZS5wYWlyaW5nID0gZnVuY3Rpb24gcGFpcmluZyhhLCBiKSB7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzEudG9KYWNvYmlhbihhKSk7XG4gICAgICAgIGNvbnN0IHBCID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcyLnRvSmFjb2JpYW4oYikpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9wYWlyaW5nXCJdKHBBLCBwQiwgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gdG0uZ2V0QnVmZihwUmVzLCBjdXJ2ZS5HdC5uOCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnBhaXJpbmdFcSA9IGFzeW5jIGZ1bmN0aW9uIHBhaXJpbmdFcSgpIHtcbiAgICAgICAgbGV0ICBidWZmQ3Q7XG4gICAgICAgIGxldCBuRXFzO1xuICAgICAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggJSAyKSA9PSAxKSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIG5FcXMgPSAoYXJndW1lbnRzLmxlbmd0aCAtMSkgLzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBjdXJ2ZS5HdC5vbmU7XG4gICAgICAgICAgICBuRXFzID0gYXJndW1lbnRzLmxlbmd0aCAvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5FcXM7IGkrKykge1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGcxQnVmZiA9IGN1cnZlLkcxLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMl0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBnMUJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBjdXJ2ZS5wcmVQU2l6ZX0pO1xuXG4gICAgICAgICAgICBjb25zdCBnMkJ1ZmYgPSBjdXJ2ZS5HMi50b0phY29iaWFuKGFyZ3VtZW50c1tpKjIgKzFdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZzJCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogY3VydmUucHJlUVNpemV9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcxXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcyXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfbWlsbGVyTG9vcFwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9vbmUocFJlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcE1SID0gdG0uYWxsb2NCdWZmKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9tdWwocFJlcywgcE1SLCBwUmVzKTtcbiAgICAgICAgfVxuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBSZXMsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHBDdCA9IHRtLmFsbG9jQnVmZihidWZmQ3QpO1xuXG4gICAgICAgIGNvbnN0IHIgPSAhIXRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX2VxKHBSZXMsIHBDdCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUCA9IHRoaXMudG0uYWxsb2NCdWZmKHApO1xuICAgICAgICBjb25zdCBwUHJlcFAgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcxXCJdKHBQLCBwUHJlcFApO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBQLCB0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcyID0gZnVuY3Rpb24ocSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBRID0gdGhpcy50bS5hbGxvY0J1ZmYocSk7XG4gICAgICAgIGNvbnN0IHBQcmVwUSA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzJcIl0ocFEsIHBQcmVwUSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFEsIHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5taWxsZXJMb29wID0gZnVuY3Rpb24ocHJlUCwgcHJlUSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQcmVQID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUCk7XG4gICAgICAgIGNvbnN0IHBQcmVRID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfbWlsbGVyTG9vcFwiXShwUHJlUCwgcFByZVEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLmZpbmFsRXhwb25lbnRpYXRpb24gPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0aGlzLnRtLmFsbG9jQnVmZihhKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBBLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbn1cblxuY29uc3QgcFRTaXplcyA9IFtcbiAgICAxICwgIDEsICAxLCAgMSwgICAgMiwgIDMsICA0LCAgNSxcbiAgICA2ICwgIDcsICA3LCAgOCwgICAgOSwgMTAsIDExLCAxMixcbiAgICAxMywgMTMsIDE0LCAxNSwgICAxNiwgMTYsIDE3LCAxNyxcbiAgICAxNywgMTcsIDE3LCAxNywgICAxNywgMTcsIDE3LCAxN1xuXTtcblxuZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgdG0gPSBHLnRtO1xuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGlmICggISAoYnVmZkJhc2VzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhIChidWZmU2NhbGFycyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGAke2xvZ1RleHR9IF9tdWx0aUV4cENodW5rIGJ1ZmZTY2FsYXJzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0dJbjtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cEFmZmluZV9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fbXVsdGlleHBfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIEcuemVybztcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZkJhc2VzfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZlNjYWxhcnN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IEcuRi5uOCozfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNTY2FsYXJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogaSpiaXRDaHVua1NpemV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBNYXRoLm1pbihzU2NhbGFyKjggLSBpKmJpdENodW5rU2l6ZSwgYml0Q2h1bmtTaXplKX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIEcudG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIUcuaXNaZXJvKHJlcykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8Yml0Q2h1bmtTaXplOyBqKyspIHJlcyA9IEcuZG91YmxlKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMjI7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMSA8PCAxMDtcbiAgICAgICAgbGV0IHNHSW47XG5cbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG4gICAgICAgIGlmIChuUG9pbnRzID09IDApIHJldHVybiBHLnplcm87XG4gICAgICAgIGNvbnN0IHNTY2FsYXIgPSBNYXRoLmZsb29yKGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGggLyBuUG9pbnRzKTtcbiAgICAgICAgaWYoIHNTY2FsYXIgKiBuUG9pbnRzICE9IGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjYWxhciBzaXplIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYml0Q2h1bmtTaXplID0gcFRTaXplc1tsb2cyKG5Qb2ludHMpXTtcbiAgICAgICAgY29uc3QgbkNodW5rcyA9IE1hdGguZmxvb3IoKHNTY2FsYXIqOCAtIDEpIC8gYml0Q2h1bmtTaXplKSArMTtcblxuICAgICAgICBsZXQgY2h1bmtTaXplO1xuICAgICAgICBjaHVua1NpemUgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyAodG0uY29uY3VycmVuY3kgL25DaHVua3MpKTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZT5NQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemU8TUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIHN0YXJ0OiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZkJhc2VzQ2h1bmsgPSBidWZmQmFzZXMuc2xpY2UoaSpzR0luLCAoaStuKSpzR0luKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTY2FsYXJzQ2h1bmsgPSBidWZmU2NhbGFycy5zbGljZShpKnNTY2FsYXIsIChpK24pKnNTY2FsYXIpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlc0NodW5rLCBidWZmU2NhbGFyc0NodW5rLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIGVuZDogJHtsb2dUZXh0fTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIEcubXVsdGlFeHAgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nVGV4dCk7XG4gICAgfTtcbiAgICBHLm11bHRpRXhwQWZmaW5lID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfbXVsdGlFeHAoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgXCJhZmZpbmVcIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEZGVChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdChidWZmLCBpbnZlcnNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG5cbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGNvbnN0IE1BWF9CSVRTX1RIUkVBRCA9IDE0O1xuXG4gICAgICAgIGxldCBzSW4sIHNNaWQsIHNPdXQsIGZuSW4yTWlkLCBmbk1pZDJPdXQsIGZuRkZUTWl4LCBmbkZGVEpvaW4sIGZuRkZURmluYWw7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzFtX2ZmdE1peFwiO1xuXG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImcybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRy5uODtcbiAgICAgICAgICAgIHNNaWQgPSBHLm44O1xuICAgICAgICAgICAgc091dCA9IEcubjg7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImZybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRNaXggPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJldHVybkFycmF5ID0gZmFsc2U7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmYpKSB7XG4gICAgICAgICAgICBidWZmID0gYXJyYXkyYnVmZmVyKGJ1ZmYsIHNJbik7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNJbjtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgaWYgICgoMSA8PCBiaXRzKSAhPSBuUG9pbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZnQgbXVzdCBiZSBtdWx0aXBsZSBvZiAyXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzID09IEZyLnMgKzEpIHtcbiAgICAgICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQgPSAgYXdhaXQgX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmV0dXJuQXJyYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnY7XG4gICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICBpbnYgPSBGci5pbnYoRnIuZShuUG9pbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnVmZk91dDtcblxuICAgICAgICBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgc0luKTtcblxuICAgICAgICBsZXQgY2h1bmtzO1xuICAgICAgICBsZXQgcG9pbnRzSW5DaHVuayA9IE1hdGgubWluKDEgPDwgTUFYX0JJVFNfVEhSRUFELCBuUG9pbnRzKTtcbiAgICAgICAgbGV0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICB3aGlsZSAoKG5DaHVua3MgPCB0bS5jb25jdXJyZW5jeSkmJihwb2ludHNJbkNodW5rPj0xNikpIHtcbiAgICAgICAgICAgIG5DaHVua3MgKj0gMjtcbiAgICAgICAgICAgIHBvaW50c0luQ2h1bmsgLz0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGwyQ2h1bmsgPSBsb2cyKHBvaW50c0luQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggc3RhcnQ6ICR7aX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZi5zbGljZSggKHBvaW50c0luQ2h1bmsgKiBpKSpzSW4sIChwb2ludHNJbkNodW5rICogKGkrMSkpKnNJbik7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQ2h1bmt9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PWwyQ2h1bms7aisrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGwyQ2h1bms9PWJpdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OjAsIHZhcjogMCwgbGVuOiBzTWlkKnBvaW50c0luQ2h1bmt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICR7Yml0c30gbWl4IGVuZDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaHVua3MgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIGNodW5rc1tpXSA9IGNodW5rc1tpXVswXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gbDJDaHVuaysxOyAgIGk8PWJpdHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAgJHtiaXRzfSAgam9pbjogJHtpfS8ke2JpdHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c0luQ2h1bmspO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY2h1bmtzW28xXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGNodW5rc1tvMl19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRKb2luLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuRkZURmluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDQsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBqb2luICAke2l9LyR7Yml0c30gICR7aisxfS8ke25Hcm91cHN9ICR7a30vJHtuQ2h1bmtzUGVyR3JvdXAvMn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICBsZXQgcD0gc091dDtcbiAgICAgICAgICAgIGZvciAobGV0IGk9bkNodW5rcy0xOyBpPjA7IGktLSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgcCArPSBwb2ludHNJbkNodW5rKnNPdXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTsgIC8vIExpYmVyYXRlIG1lbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKDAsIChwb2ludHNJbkNodW5rLTEpKnNPdXQpLCBwKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjaHVua3NbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwb2ludHNJbkNodW5rKnNPdXQqaSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShidWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dChidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRcIiwgRnIub25lLCBGci5zaGlmdCwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIxLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCB0cnVlLCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpKTtcblxuICAgICAgICBbYjEsIGIyXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBjb25zdCByZXMxID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRJbnZcIiwgRnIub25lLCBGci5zaGlmdEludiwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0Sm9pbkV4dChidWZmMSwgYnVmZjIsIGZuLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MTY7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMTw8NDtcblxuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBsZXQgZm5JbjJNaWQsIGZuTWlkMk91dDtcbiAgICAgICAgbGV0IHNPdXQsIHNJbiwgc01pZDtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcxbV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9cIitmbjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9cIitmbjtcbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgICAgICBzT3V0ID0gRnIubjg7XG4gICAgICAgICAgICBzTWlkID0gRnIubjg7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9cIiArIGZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoY2h1bmtTaXplIDwgTUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuICAgICAgICBpZiAoY2h1bmtTaXplID4gTUFYX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1BWF9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IFN0YXJ0OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoIGluYywgaSkpO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuICAgICAgICAgICAgY29uc3QgYjIgPSBidWZmMi5zbGljZShpKnNJbiwgKGkrbikqc0luKTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBzTWlkKm59KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDEsIGJ1ZmY6IGIyfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0Q2h1bmt9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICBpZiAoZm5JbjJNaWQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBufSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBGci5zfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG59LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0Sm9pbkV4dCBFbmQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChuUG9pbnRzICogc091dCA+IDE8PDI4KSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQyID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH1cblxuXG4gICAgRy5mZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIGZhbHNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5pZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCB0cnVlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5sYWdyYW5nZUV2YWx1YXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG5cbiAgICAgICAgbGV0IHNJbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAoKDIgKiogYml0cykqc0luICE9IGJ1ZmYuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpaW52YWxpZCBpbnB1dCBzaXplXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnZhbGlkIElucHV0IHNpemVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA8PSBGci5zKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgRy5pZmZ0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPiBGci5zKzEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0MCA9IGJ1ZmYuc2xpY2UoMCwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBsZXQgdDEgPSBidWZmLnNsaWNlKGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG5cbiAgICAgICAgY29uc3Qgc2hpZnRUb1NtYWxsTSA9IEZyLmV4cChGci5zaGlmdCwgblBvaW50cy8yKTtcbiAgICAgICAgY29uc3Qgc0NvbnN0ID0gRnIuaW52KCBGci5zdWIoRnIub25lLCBzaGlmdFRvU21hbGxNKSk7XG5cbiAgICAgICAgW3QwLCB0MV0gPSBhd2FpdCBfZmZ0Sm9pbkV4dCh0MCwgdDEsIFwicHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiLCBzQ29uc3QsIEZyLnNoaWZ0SW52LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQgKyBcIiBwcmVwXCIpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MCwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQwXCIpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MSwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQxXCIpKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHQwLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcih0MC5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldCh0MCk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQxLCB0MC5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRNaXggPSBhc3luYyBmdW5jdGlvbiBmZnRNaXgoYnVmZikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkZGVEpvaW47XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGNvbnN0IHBvd2VyID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPD0gbkNodW5rcyoyKSBuQ2h1bmtzID0gMTtcblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IG5Qb2ludHMgLyBuQ2h1bmtzO1xuXG4gICAgICAgIGNvbnN0IHBvd2VyQ2h1bmsgPSBsb2cyKHBvaW50c1BlckNodW5rKTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0xOyBqPD1wb3dlckNodW5rOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogan1cbiAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSBjaHVua3NbaV0gPSByZXN1bHRbaV1bMF07XG5cblxuICAgICAgICBmb3IgKGxldCBpID0gcG93ZXJDaHVuaysxOyBpPD1wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAocG93ZXIgLSBpKTtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IEZyLmV4cCggRnIud1tpXSwgaypwb2ludHNQZXJDaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChjaHVua3NbaV0sIHApO1xuICAgICAgICAgICAgcCs9Y2h1bmtzW2ldLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcblxuICAgIEcuZmZ0Sm9pbiA9IGFzeW5jIGZ1bmN0aW9uIGZmdEpvaW4oYnVmZjEsIGJ1ZmYyLCBmaXJzdCwgaW5jKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnVmZjEuYnl0ZUxlbmd0aCAhPSBidWZmMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IEZyLm11bChmaXJzdCwgRnIuZXhwKGluYywgaSpwb2ludHNQZXJDaHVuaykpO1xuICAgICAgICAgICAgY29uc3QgYjEgPSBidWZmMS5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQxO1xuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQyO1xuICAgICAgICBpZiAoYnVmZjEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH07XG5cblxuXG4gICAgRy5mZnRGaW5hbCA9ICBhc3luYyBmdW5jdGlvbiBmZnRGaW5hbChidWZmLCBmYWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5Ub0FmZmluZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cyAvIHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoaSpwb2ludHNQZXJDaHVuaytuKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogZmFjdG9yfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNHb3V0fSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT1yZXN1bHQubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEVuZ2luZShwYXJhbXMpIHtcblxuICAgIGNvbnN0IHRtID0gYXdhaXQgYnVpbGRUaHJlYWRNYW5hZ2VyKHBhcmFtcy53YXNtLCBwYXJhbXMuc2luZ2xlVGhyZWFkKTtcblxuXG4gICAgY29uc3QgY3VydmUgPSB7fTtcblxuICAgIGN1cnZlLnEgPSBlKHBhcmFtcy53YXNtLnEudG9TdHJpbmcoKSk7XG4gICAgY3VydmUuciA9IGUocGFyYW1zLndhc20uci50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgY3VydmUudG0gPSB0bTtcbiAgICBjdXJ2ZS5wcmVQU2l6ZSA9IHBhcmFtcy53YXNtLnByZVBTaXplO1xuICAgIGN1cnZlLnByZVFTaXplID0gcGFyYW1zLndhc20ucHJlUVNpemU7XG4gICAgY3VydmUuRnIgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmcm1cIiwgcGFyYW1zLm44ciwgcGFyYW1zLnIpO1xuICAgIGN1cnZlLkYxID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZjFtXCIsIHBhcmFtcy5uOHEsIHBhcmFtcy5xKTtcbiAgICBjdXJ2ZS5GMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImYybVwiLCBjdXJ2ZS5GMSk7XG4gICAgY3VydmUuRzEgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcxbVwiLCBjdXJ2ZS5GMSwgcGFyYW1zLndhc20ucEcxZ2VuLCBwYXJhbXMud2FzbS5wRzFiLCBwYXJhbXMuY29mYWN0b3JHMSk7XG4gICAgY3VydmUuRzIgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcybVwiLCBjdXJ2ZS5GMiwgcGFyYW1zLndhc20ucEcyZ2VuLCBwYXJhbXMud2FzbS5wRzJiLCBwYXJhbXMuY29mYWN0b3JHMik7XG4gICAgY3VydmUuRjYgPSBuZXcgV2FzbUZpZWxkMyh0bSwgXCJmNm1cIiwgY3VydmUuRjIpO1xuICAgIGN1cnZlLkYxMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImZ0bVwiLCBjdXJ2ZS5GNik7XG5cbiAgICBjdXJ2ZS5HdCA9IGN1cnZlLkYxMjtcblxuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRNdWx0aWV4cChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcyXCIpO1xuXG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZFBhaXJpbmcoY3VydmUpO1xuXG4gICAgY3VydmUuYXJyYXkyYnVmZmVyID0gZnVuY3Rpb24oYXJyLCBzRykge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cqYXJyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5idWZmZXIyYXJyYXkgPSBmdW5jdGlvbihidWZmICwgc0cpIHtcbiAgICAgICAgY29uc3Qgbj0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnVmZi5zbGljZShpKnNHLCBpKnNHK3NHKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmZ1bmN0aW9uIHRvTnVtYmVyKG4pIHtcbiAgICByZXR1cm4gQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1plcm8obikge1xuICAgIHJldHVybiBuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoKG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZShuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB1MzIobikge1xuICAgIGNvbnN0IGIgPSBbXTtcbiAgICBjb25zdCB2ID0gdG9OdW1iZXIobik7XG4gICAgYi5wdXNoKE51bWJlcih2ICYgMHhGRm4pKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgPj4gOG4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAxNm4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAyNG4gJiAweEZGbikpO1xuICAgIHJldHVybiBiO1xufVxuXG5mdW5jdGlvbiB0b1VURjhBcnJheShzdHIpIHtcbiAgICB2YXIgdXRmOCA9IFtdO1xuICAgIGZvciAodmFyIGk9MDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKTtcbiAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxuICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxuICAgICAgICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcbiAgICAgICAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpPDwxMClcbiAgICAgICAgICAgICAgICAgICAgICB8IChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhmMCB8IChjaGFyY29kZSA+PjE4KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+MTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGU+PjYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXRmODtcbn1cblxuZnVuY3Rpb24gc3RyaW5nKHN0cikge1xuICAgIGNvbnN0IGJ5dGVzID0gdG9VVEY4QXJyYXkoc3RyKTtcbiAgICByZXR1cm4gWyAuLi52YXJ1aW50MzIoYnl0ZXMubGVuZ3RoKSwgLi4uYnl0ZXMgXTtcbn1cblxuZnVuY3Rpb24gdmFydWludChuKSB7XG4gICAgY29uc3QgY29kZSA9IFtdO1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKGlzTmVnYXRpdmUodikpIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBjYW5ub3QgYmUgbmVnYXRpdmVcIik7XG4gICAgd2hpbGUgKCFpc1plcm8odikpIHtcbiAgICAgICAgY29kZS5wdXNoKE51bWJlcih2ICYgMHg3Rm4pKTtcbiAgICAgICAgdiA9IHYgPj4gN247XG4gICAgfVxuICAgIGlmIChjb2RlLmxlbmd0aD09MCkgY29kZS5wdXNoKDApO1xuICAgIGZvciAobGV0IGk9MDsgaTxjb2RlLmxlbmd0aC0xOyBpKyspIHtcbiAgICAgICAgY29kZVtpXSA9IGNvZGVbaV0gfCAweDgwO1xuICAgIH1cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50KF9uKSB7XG4gICAgbGV0IG4sIHNpZ247XG4gICAgY29uc3QgYml0cyA9IGJpdExlbmd0aChfbik7XG4gICAgaWYgKF9uPDApIHtcbiAgICAgICAgc2lnbiA9IHRydWU7XG4gICAgICAgIG4gPSAoMW4gPDwgQmlnSW50KGJpdHMpKSArIF9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ24gPSBmYWxzZTtcbiAgICAgICAgbiA9IHRvTnVtYmVyKF9uKTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ0JpdHMgPSA3IC0gKGJpdHMgJSA3KTtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSAoKDFuIDw8IEJpZ0ludChwYWRkaW5nQml0cykpIC0gMW4pIDw8IEJpZ0ludChiaXRzKTtcbiAgICBjb25zdCBwYWRkaW5nTWFzayA9ICgoMSA8PCAoNyAtIHBhZGRpbmdCaXRzKSktMSkgfCAweDgwO1xuXG4gICAgY29uc3QgY29kZSA9IHZhcnVpbnQobiArIHBhZGRpbmcpO1xuXG4gICAgaWYgKCFzaWduKSB7XG4gICAgICAgIGNvZGVbY29kZS5sZW5ndGgtMV0gPSBjb2RlW2NvZGUubGVuZ3RoLTFdICYgcGFkZGluZ01hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG59XG5cbmZ1bmN0aW9uIHZhcmludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDBuO1xuICAgIC8vIGJpZ0ludChcIi04MDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtMjE0NzQ4MzY0OG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFyaW50NjQobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGRkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICBpZiAodiA+IDB4N0ZGRkZGRkZGRkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDAwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwMDAwMDAwMDBcIiwgMTYpIGFzIGJhc2UxMFxuICAgIGlmICh2IDwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIHNtYWxsXCIpO1xuICAgIHJldHVybiB2YXJpbnQodik7XG59XG5cbmZ1bmN0aW9uIHZhcnVpbnQzMihuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICByZXR1cm4gdmFydWludCh2KTtcbn1cblxuZnVuY3Rpb24gdG9IZXhTdHJpbmcoYnl0ZUFycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgQ29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5mdW5jID0gZnVuYztcbiAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBmdW5jLmZ1bmN0aW9uTmFtZTtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBmdW5jLm1vZHVsZTtcbiAgICB9XG5cbiAgICBzZXRMb2NhbChsb2NhbE5hbWUsIHZhbENvZGUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWy4uLnZhbENvZGUsIDB4MjEsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIHRlZUxvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMiwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgZ2V0TG9jYWwobG9jYWxOYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsweDIwLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDE2IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMyLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQzMl9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDIgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzNCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM1LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDMgOiBfYWxpZ247ICAvLyA2NCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyOSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGk2NF9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzcsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X3N0b3JlMzIoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlMTYoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2MsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJjLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI4LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpMzJfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2IsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2EsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgY2FsbChmbk5hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5tb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7Zm5OYW1lfWApO1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgMHgxMCwgLi4udmFydWludDMyKGlkeCldO1xuICAgIH1cblxuICAgIGNhbGxfaW5kaXJlY3QoZm5JZHgsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5bXS5jb25jYXQoLi4uYXJncyksIC4uLmZuSWR4LCAweDExLCAwLCAwXTtcbiAgICB9XG5cbiAgICBpZihjb25kQ29kZSwgdGhlbkNvZGUsIGVsc2VDb2RlKSB7XG4gICAgICAgIGlmIChlbHNlQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MDUsIC4uLmVsc2VDb2RlLCAweDBiXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZENvZGUsIDB4MDQsIDB4NDAsIC4uLnRoZW5Db2RlLCAweDBiXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKGJDb2RlKSB7IHJldHVybiBbMHgwMiwgMHg0MCwgLi4uYkNvZGUsIDB4MGJdOyB9XG4gICAgbG9vcCguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBbMHgwMywgMHg0MCwgLi4uW10uY29uY2F0KC4uLlsuLi5hcmdzXSksIDB4MGJdO1xuICAgIH1cbiAgICBicl9pZihyZWxQYXRoLCBjb25kQ29kZSkgeyByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDBkLCAuLi52YXJ1aW50MzIocmVsUGF0aCldOyB9XG4gICAgYnIocmVsUGF0aCkgeyByZXR1cm4gWzB4MGMsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICByZXQockNvZGUpIHsgcmV0dXJuIFsuLi5yQ29kZSwgMHgwZl07IH1cbiAgICBkcm9wKGRDb2RlKSB7IHJldHVybiBbLi4uZENvZGUsICAweDFhXTsgfVxuXG4gICAgaTY0X2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDIsIC4uLnZhcmludDY0KG51bSldOyB9XG4gICAgaTMyX2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDEsIC4uLnZhcmludDMyKG51bSldOyB9XG5cblxuICAgIGk2NF9lcXoob3Bjb2RlKSB7IHJldHVybiBbLi4ub3Bjb2RlLCAweDUwXTsgfVxuICAgIGk2NF9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1MV07IH1cbiAgICBpNjRfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTJdOyB9XG4gICAgaTY0X2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTNdOyB9XG4gICAgaTY0X2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTRdOyB9XG4gICAgaTY0X2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTVdOyB9XG4gICAgaTY0X2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTZdOyB9XG4gICAgaTY0X2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTddOyB9XG4gICAgaTY0X2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NThdOyB9XG4gICAgaTY0X2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTldOyB9XG4gICAgaTY0X2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NWFdOyB9XG4gICAgaTY0X2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3Y107IH1cbiAgICBpNjRfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdkXTsgfVxuICAgIGk2NF9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2VdOyB9XG4gICAgaTY0X2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdmXTsgfVxuICAgIGk2NF9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MF07IH1cbiAgICBpNjRfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODFdOyB9XG4gICAgaTY0X3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgyXTsgfVxuICAgIGk2NF9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODNdOyB9XG4gICAgaTY0X29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg0XTsgfVxuICAgIGk2NF94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODVdOyB9XG4gICAgaTY0X3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4Nl07IH1cbiAgICBpNjRfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODddOyB9XG4gICAgaTY0X3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg4XTsgfVxuICAgIGk2NF9leHRlbmRfaTMyX3Mob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4YWNdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfdShvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhZF07IH1cbiAgICBpNjRfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDc5XTsgfVxuICAgIGk2NF9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4N2FdOyB9XG5cbiAgICBpMzJfZXF6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDQ1XTsgfVxuICAgIGkzMl9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Nl07IH1cbiAgICBpMzJfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDddOyB9XG4gICAgaTMyX2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDhdOyB9XG4gICAgaTMyX2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDldOyB9XG4gICAgaTMyX2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGFdOyB9XG4gICAgaTMyX2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGJdOyB9XG4gICAgaTMyX2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGNdOyB9XG4gICAgaTMyX2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGRdOyB9XG4gICAgaTMyX2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGVdOyB9XG4gICAgaTMyX2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGZdOyB9XG4gICAgaTMyX2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2YV07IH1cbiAgICBpMzJfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZiXTsgfVxuICAgIGkzMl9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmNdOyB9XG4gICAgaTMyX2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZkXTsgfVxuICAgIGkzMl9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2ZV07IH1cbiAgICBpMzJfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmZdOyB9XG4gICAgaTMyX3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcwXTsgfVxuICAgIGkzMl9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzFdOyB9XG4gICAgaTMyX29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcyXTsgfVxuICAgIGkzMl94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzNdOyB9XG4gICAgaTMyX3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NF07IH1cbiAgICBpMzJfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzVdOyB9XG4gICAgaTMyX3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc2XTsgfVxuICAgIGkzMl9yb3RsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc3XTsgfVxuICAgIGkzMl9yb3RyKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc4XTsgfVxuICAgIGkzMl93cmFwX2k2NChvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhN107IH1cbiAgICBpMzJfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDY3XTsgfVxuICAgIGkzMl9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjhdOyB9XG5cbiAgICB1bnJlYWNoYWJsZSgpIHsgcmV0dXJuIFsgMHgwIF07IH1cblxuICAgIGN1cnJlbnRfbWVtb3J5KCkgeyByZXR1cm4gWyAweDNmLCAwXTsgfVxuXG4gICAgY29tbWVudCgpIHsgcmV0dXJuIFtdOyB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY29uc3QgdHlwZUNvZGVzID0ge1xuICAgIFwiaTMyXCI6IDB4N2YsXG4gICAgXCJpNjRcIjogMHg3ZSxcbiAgICBcImYzMlwiOiAweDdkLFxuICAgIFwiZjY0XCI6IDB4N2MsXG4gICAgXCJhbnlmdW5jXCI6IDB4NzAsXG4gICAgXCJmdW5jXCI6IDB4NjAsXG4gICAgXCJlbXB0eWJsb2NrXCI6IDB4NDBcbn07XG5cblxuY2xhc3MgRnVuY3Rpb25CdWlsZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yIChtb2R1bGUsIGZuTmFtZSwgZm5UeXBlLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKGZuVHlwZSA9PSBcImltcG9ydFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm5UeXBlID09IFwiaW50ZXJuYWxcIikge1xuICAgICAgICAgICAgdGhpcy5mblR5cGUgPSBcImludGVybmFsXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZ1bmN0aW9uIGZuVHlwZTogXCIgKyBmblR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kdWxlID0gbW9kdWxlO1xuICAgICAgICB0aGlzLmZuTmFtZSA9IGZuTmFtZTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLmNvZGUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXR1cm5UeXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0TG9jYWwgPTA7XG4gICAgfVxuXG4gICAgYWRkUGFyYW0ocGFyYW1OYW1lLCBwYXJhbVR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGFyYW0gYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7cGFyYW1OYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHBhcmFtVHlwZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRMb2NhbChsb2NhbE5hbWUsIGxvY2FsVHlwZSwgX2xlbmd0aCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBfbGVuZ3RoIHx8IDE7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV0pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxvY2FsIGFscmVhZHkgZXhpc3RzLiBGdW5jdGlvbjogJHt0aGlzLmZuTmFtZX0sIFBhcmFtOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMubmV4dExvY2FsKys7XG4gICAgICAgIHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSA9IGlkeDtcbiAgICAgICAgdGhpcy5sb2NhbHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFR5cGUsXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZXR1cm5UeXBlKHJldHVyblR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0dXJuVHlwZSBhbHJlYWR5IGRlZmluZWQuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfWApO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSByZXR1cm5UeXBlO1xuICAgIH1cblxuICAgIGdldFNpZ25hdHVyZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gWy4uLnZhcnVpbnQzMih0aGlzLnBhcmFtcy5sZW5ndGgpLCAuLi50aGlzLnBhcmFtcy5tYXAoKHApID0+IHR5cGVDb2Rlc1twLnR5cGVdKV07XG4gICAgICAgIGNvbnN0IHJldHVybnMgPSB0aGlzLnJldHVyblR5cGUgPyBbMHgwMSwgdHlwZUNvZGVzW3RoaXMucmV0dXJuVHlwZV1dIDogWzBdO1xuICAgICAgICByZXR1cm4gWzB4NjAsIC4uLnBhcmFtcywgLi4ucmV0dXJuc107XG4gICAgfVxuXG4gICAgZ2V0Qm9keSgpIHtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5sb2NhbHMubWFwKChsKSA9PiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIobC5sZW5ndGgpLFxuICAgICAgICAgICAgdHlwZUNvZGVzW2wudHlwZV1cbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgYm9keSA9IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmxvY2Fscy5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uW10uY29uY2F0KC4uLmxvY2FscyksXG4gICAgICAgICAgICAuLi50aGlzLmNvZGUsXG4gICAgICAgICAgICAweDBiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIoYm9keS5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uYm9keVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGFkZENvZGUoLi4uY29kZSkge1xuICAgICAgICB0aGlzLmNvZGUucHVzaCguLi5bXS5jb25jYXQoLi4uWy4uLmNvZGVdKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29kZUJ1aWxkZXIoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkZXIodGhpcyk7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbWJ1aWxkZXJcblxuICAgIHdhc21idWlsZGVyIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbWJ1aWxkZXIuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIE1vZHVsZUJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zID0gMDtcbiAgICAgICAgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnMgPTA7XG4gICAgICAgIHRoaXMubWVtb3J5ID0ge1xuICAgICAgICAgICAgcGFnZXNTaXplOiAxLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZyZWUgPSA4O1xuICAgICAgICB0aGlzLmRhdGFzID0gW107XG4gICAgICAgIHRoaXMubW9kdWxlcyA9IHt9O1xuICAgICAgICB0aGlzLmV4cG9ydHMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZSA9IFtdO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICB0aGlzLl9zZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICAuLi51MzIoMHg2ZDczNjEwMCksXG4gICAgICAgICAgICAuLi51MzIoMSksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZFR5cGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkSW1wb3J0KCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uRGVjbGFyYXRpb25zKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uc1RhYmxlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEV4cG9ydHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRWxlbWVudHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkQ29kZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGREYXRhKClcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb24oZm5OYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImludGVybmFsXCIpKTtcblxuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucysrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBhZGRJaW1wb3J0RnVuY3Rpb24oZm5OYW1lLCBtb2R1bGVOYW1lLCBfZmllbGROYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBpZiAoICAodGhpcy5mdW5jdGlvbnMubGVuZ3RoPjApXG4gICAgICAgICAgICAmJih0aGlzLmZ1bmN0aW9uc1t0aGlzLmZ1bmN0aW9ucy5sZW5ndGgtMV0udHlwZSA9PSBcImludGVybmFsXCIpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbXBvcnQgZnVuY3Rpb25zIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGludGVybmFsOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBsZXQgZmllbGROYW1lID0gX2ZpZWxkTmFtZSB8fCBmbk5hbWU7XG5cbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0gPSBpZHg7XG5cbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChuZXcgRnVuY3Rpb25CdWlsZGVyKHRoaXMsIGZuTmFtZSwgXCJpbXBvcnRcIiwgbW9kdWxlTmFtZSwgZmllbGROYW1lKSk7XG5cbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBzZXRNZW1vcnkocGFnZXNTaXplLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IHBhZ2VzU2l6ZSxcbiAgICAgICAgICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgfHwgXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIHx8IFwibWVtb3J5XCJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBvcnRGdW5jdGlvbihmbk5hbWUsIF9leHBvcnROYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBfZXhwb3J0TmFtZSB8fCBmbk5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gbm90IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIGlmIChleHBvcnROYW1lICE9IGZuTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtleHBvcnROYW1lXSA9IGlkeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICBleHBvcnROYW1lOiBleHBvcnROYW1lLFxuICAgICAgICAgICAgaWR4OiBpZHhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb25Ub1RhYmxlKGZuTmFtZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zVGFibGUucHVzaChpZHgpO1xuICAgIH1cblxuICAgIGFkZERhdGEob2Zmc2V0LCBieXRlcykge1xuICAgICAgICB0aGlzLmRhdGFzLnB1c2goe1xuICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgICBieXRlczogYnl0ZXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb2MoYSwgYikge1xuICAgICAgICBsZXQgc2l6ZTtcbiAgICAgICAgbGV0IGJ5dGVzO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGEpKSAmJiAodHlwZW9mKGIpID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgc2l6ZSA9IGEubGVuZ3RoO1xuICAgICAgICAgICAgYnl0ZXMgPSBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2l6ZSA9IGE7XG4gICAgICAgICAgICBieXRlcyA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgc2l6ZSA9ICgoKHNpemUtMSk+PjMpICsxKTw8MzsgICAgICAgLy8gQWxpZ24gdG8gNjQgYml0cy5cbiAgICAgICAgY29uc3QgcCA9IHRoaXMuZnJlZTtcbiAgICAgICAgdGhpcy5mcmVlICs9IHNpemU7XG4gICAgICAgIGlmIChieXRlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREYXRhKHAsIGJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY1N0cmluZyhzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgZ2xvYmFsVGhpcy5UZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gZW5jb2Rlci5lbmNvZGUocyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbG9jKFsuLi51aW50OGFycmF5LCAwXSk7XG4gICAgfVxuXG4gICAgX3NldFNpZ25hdHVyZXMoKSB7XG4gICAgICAgIHRoaXMuc2lnbmF0dXJlcyA9IFtdO1xuICAgICAgICBjb25zdCBzaWduYXR1cmVJZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zVGFibGVbMF1dLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmZ1bmN0aW9uc1tpXS5nZXRTaWduYXR1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZU5hbWUgPSBcInNfXCIrdG9IZXhTdHJpbmcoc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNpZ25hdHVyZUlkeEJ5TmFtZVtzaWduYXR1cmVOYW1lXSA9IHRoaXMuc2lnbmF0dXJlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4ID0gc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBfYnVpbGRTZWN0aW9uKHNlY3Rpb25UeXBlLCBzZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbc2VjdGlvblR5cGUsIC4uLnZhcnVpbnQzMihzZWN0aW9uLmxlbmd0aCksIC4uLnNlY3Rpb25dO1xuICAgIH1cblxuICAgIF9idWlsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAxLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLnNpZ25hdHVyZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4udGhpcy5zaWduYXR1cmVzKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEltcG9ydCgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5Lm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5LmZpZWxkTmFtZSksXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgMHgwMCwgICAvL0ZsYWdzIG5vIGluaXQgdmFsdWFcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLm1lbW9yeS5wYWdlc1NpemUpXG4gICAgICAgIF0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5tb2R1bGVOYW1lKSxcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5mdW5jdGlvbnNbaV0uZmllbGROYW1lKSxcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT10aGlzLm5JbXBvcnRGdW5jdGlvbnM7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9ucyArIHRoaXMubkludGVybmFsRnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaCguLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDMsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKGVudHJpZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbnNUYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLFxuICAgICAgICAgICAgICAgIDB4NzAsIDAsIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFbGVtZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLCAgICAgIC8vIDEgZW50cnlcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMCksICAgICAgLy8gVGFibGUgKDAgaW4gTVZQKVxuICAgICAgICAgICAgICAgIDB4NDEsICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMFxuICAgICAgICAgICAgICAgIC4uLnZhcmludDMyKDApLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKSwgLy8gTnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgLi4uWy4uLmVudHJpZXNdXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRXhwb3J0cygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMuZXhwb3J0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5leHBvcnRzW2ldLmV4cG9ydE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZXhwb3J0c1tpXS5pZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNyxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkQ29kZSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKHRoaXMuZnVuY3Rpb25zW2ldLmdldEJvZHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGEsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZERhdGEoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAweDQxLFxuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAweDA0LFxuICAgICAgICAgICAgLi4udTMyKHRoaXMuZnJlZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5kYXRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIodGhpcy5kYXRhc1tpXS5vZmZzZXQpLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZGF0YXNbaV0uYnl0ZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGFzW2ldLmJ5dGVzLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JuMTI4KSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYm4xMjg7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbjEyOCQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibjEyOHdhc20gPSB7fTtcblxuICAgIGJuMTI4d2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJuMTI4d2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYm4xMjh3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibjEyOHdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWdlbjtcbiAgICBibjEyOHdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzF6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWI7XG4gICAgYm4xMjh3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJnZW47XG4gICAgYm4xMjh3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcyemVybztcbiAgICBibjEyOHdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJiO1xuICAgIGJuMTI4d2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wT25lVDtcbiAgICBibjEyOHdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUFNpemU7XG4gICAgYm4xMjh3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnByZVFTaXplO1xuICAgIGJuMTI4d2FzbS5uOHEgPSAzMjtcbiAgICBibjEyOHdhc20ubjhyID0gMzI7XG4gICAgYm4xMjh3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucTtcbiAgICBibjEyOHdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5yO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJuMTI4XCIsXG4gICAgICAgIHdhc206IGJuMTI4d2FzbSxcbiAgICAgICAgcTogZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpLFxuICAgICAgICByOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIiksXG4gICAgICAgIG44cTogMzIsXG4gICAgICAgIG44cjogMzIsXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIzMDY0NGU3MmUxMzFhMDI5Yjg1MDQ1YjY4MTgxNTg1ZTA2Y2VlY2RhNTcyYTI0ODkzNDVmMjI5OWMwZjlmYThkXCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyOCA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgaWYgKCghc2luZ2xlVGhyZWFkKSAmJiAoZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSkpIHJldHVybiBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxO1xuXG4gICAgY29uc3QgbW9kdWxlQnVpbGRlciA9IG5ldyBNb2R1bGVCdWlsZGVyKCk7XG4gICAgbW9kdWxlQnVpbGRlci5zZXRNZW1vcnkoMjUpO1xuICAgIGJ1aWxkQmxzMTIzODEkMShtb2R1bGVCdWlsZGVyKTtcblxuICAgIGlmIChwbHVnaW5zKSBwbHVnaW5zKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgY29uc3QgYmxzMTIzODF3YXNtID0ge307XG5cbiAgICBibHMxMjM4MXdhc20uY29kZSA9IG1vZHVsZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBibHMxMjM4MXdhc20ucHEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZjFtLnBxO1xuICAgIGJsczEyMzgxd2FzbS5wciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mcm0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnBHMWdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMXplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcxemVybztcbiAgICBibHMxMjM4MXdhc20ucEcxYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFiO1xuICAgIGJsczEyMzgxd2FzbS5wRzJnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyZ2VuO1xuICAgIGJsczEyMzgxd2FzbS5wRzJ6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMnplcm87XG4gICAgYmxzMTIzODF3YXNtLnBHMmIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyYjtcbiAgICBibHMxMjM4MXdhc20ucE9uZVQgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucE9uZVQ7XG4gICAgYmxzMTIzODF3YXNtLnByZVBTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVBTaXplO1xuICAgIGJsczEyMzgxd2FzbS5wcmVRU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wcmVRU2l6ZTtcbiAgICBibHMxMjM4MXdhc20ubjhxID0gNDg7XG4gICAgYmxzMTIzODF3YXNtLm44ciA9IDMyO1xuICAgIGJsczEyMzgxd2FzbS5xID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnE7XG4gICAgYmxzMTIzODF3YXNtLnIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucjtcblxuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJsczEyMzgxXCIsXG4gICAgICAgIHdhc206IGJsczEyMzgxd2FzbSxcbiAgICAgICAgcTogZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNiksXG4gICAgICAgIHI6IGUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KSxcbiAgICAgICAgbjhxOiA0OCxcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMTogZShcIjB4Mzk2YzhjMDA1NTU1ZTE1NjhjMDBhYWFiMDAwMGFhYWJcIiwgMTYpLFxuICAgICAgICBjb2ZhY3RvckcyOiBlKFwiMHg1ZDU0M2E5NTQxNGU3ZjEwOTFkNTA3OTI4NzZhMjAyY2Q5MWRlNDU0NzA4NWFiYWE2OGEyMDViMmU1YTdkZGZhNjI4ZjFjYjRkOWU4MmVmMjE1MzdlMjkzYTY2OTFhZTE2MTZlYzZlNzg2ZjBjNzBjZjFjMzhlMzFjNzIzOGU1XCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuY29uc3QgYmxzMTIzODFyID0gZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KTtcbmNvbnN0IGJuMTI4cSA9IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgaWYgKGVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChlcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHt0b1N0cmluZyhyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEocSwgYm4xMjhxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHEsIDE2KX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBjb25zdCBub3JtTmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG4gICAgaWYgKFtcIkJOMTI4XCIsIFwiQk4yNTRcIiwgXCJBTFRCTjEyOFwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoW1wiQkxTMTIzODFcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuKSB7XG4gICAgICAgIHJldHVybiBuLnRvVXBwZXJDYXNlKCkubWF0Y2goL1tBLVphLXowLTldKy9nKS5qb2luKFwiXCIpO1xuICAgIH1cblxufVxuXG5jb25zdCBTY2FsYXI9X1NjYWxhcjtcbmNvbnN0IHV0aWxzID0gX3V0aWxzO1xuXG5leHBvcnQgeyBCaWdCdWZmZXIsIENoYUNoYSwgRUMsIFpxRmllbGQgYXMgRjFGaWVsZCwgRjJGaWVsZCwgRjNGaWVsZCwgUG9sRmllbGQsIFNjYWxhciwgWnFGaWVsZCwgYnVpbGRCbHMxMjM4MSwgYnVpbGRCbjEyOCwgZ2V0Q3VydmVGcm9tTmFtZSwgZ2V0Q3VydmVGcm9tUSwgZ2V0Q3VydmVGcm9tUiwgdXRpbHMgfTtcbiIsIlxuaW1wb3J0IGZzIGZyb21cImZzXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuKGZpbGVOYW1lLCBvcGVuRmxhZ3MsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcbiAgICBjYWNoZVNpemUgPSBjYWNoZVNpemUgfHwgNDA5Nio2NDtcbiAgICBpZiAodHlwZW9mIG9wZW5GbGFncyAhPT0gXCJudW1iZXJcIiAmJiBbXCJ3K1wiLCBcInd4K1wiLCBcInJcIiwgXCJheCtcIiwgXCJhK1wiXS5pbmRleE9mKG9wZW5GbGFncykgPDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb3BlbiBvcHRpb25cIik7XG4gICAgY29uc3QgZmQgPWF3YWl0IGZzLnByb21pc2VzLm9wZW4oZmlsZU5hbWUsIG9wZW5GbGFncyk7XG5cbiAgICBjb25zdCBzdGF0cyA9IGF3YWl0IGZkLnN0YXQoKTtcblxuICAgIHJldHVybiAgbmV3IEZhc3RGaWxlKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpO1xufVxuXG5cbmNsYXNzIEZhc3RGaWxlIHtcblxuICAgIGNvbnN0cnVjdG9yKGZkLCBzdGF0cywgY2FjaGVTaXplLCBwYWdlU2l6ZSwgZmlsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5maWxlTmFtZSA9IGZpbGVOYW1lO1xuICAgICAgICB0aGlzLmZkID0gZmQ7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5wYWdlU2l6ZSA9IHBhZ2VTaXplIHx8ICgxIDw8IDgpO1xuICAgICAgICB3aGlsZSAodGhpcy5wYWdlU2l6ZSA8IHN0YXRzLmJsa3NpemUpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZVNpemUgKj0gMjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHN0YXRzLnNpemU7XG4gICAgICAgIHRoaXMudG90YWxQYWdlcyA9IE1hdGguZmxvb3IoKHN0YXRzLnNpemUgLTEpIC8gdGhpcy5wYWdlU2l6ZSkrMTtcbiAgICAgICAgdGhpcy5tYXhQYWdlc0xvYWRlZCA9IE1hdGguZmxvb3IoIGNhY2hlU2l6ZSAvIHRoaXMucGFnZVNpemUpKzE7XG4gICAgICAgIHRoaXMucGFnZXMgPSB7fTtcbiAgICAgICAgdGhpcy5wZW5kaW5nTG9hZHMgPSBbXTtcbiAgICAgICAgdGhpcy53cml0aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmF2QnVmZnMgPSBbXTtcbiAgICAgICAgdGhpcy5oaXN0b3J5ID0ge307XG4gICAgfVxuXG4gICAgX2xvYWRQYWdlKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IFAgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+IHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0xvYWRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHBhZ2U6IHAsXG4gICAgICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3Q6IHJlamVjdFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgcmVxdWVzdDogXCIsIHApO1xuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBfX3N0YXR1c1BhZ2UocywgcCkge1xuICAgICAgICBjb25zdCBsb2dFbnRyeSA9IFtdO1xuICAgICAgICBjb25zdCBzZWxmPXRoaXM7XG4gICAgICAgIGlmICghc2VsZi5sb2dIaXN0b3J5KSByZXR1cm47XG4gICAgICAgIGxvZ0VudHJ5LnB1c2goXCI9PVwiICsgcysgXCIgXCIgK3ApO1xuICAgICAgICBsZXQgUyA9IFwiXCI7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzW2ldLnBhZ2UgPT0gcCkgUyA9IFMgKyBcIiBcIiArIGk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFMpIGxvZ0VudHJ5LnB1c2goXCJQZW5kaW5nIGxvYWRzOlwiK1MpO1xuICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbcF0gIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgY29uc3QgcGFnZSA9IHNlbGYucGFnZXNbcF07XG4gICAgICAgICAgICBsb2dFbnRyeS5wdXNoKFwiTG9hZGVkXCIpO1xuICAgICAgICAgICAgbG9nRW50cnkucHVzaChcInBlbmRpbmdPcHM6IFwiK3BhZ2UucGVuZGluZ09wcyk7XG4gICAgICAgICAgICBpZiAocGFnZS5sb2FkaW5nKSBsb2dFbnRyeS5wdXNoKFwibG9hZGluZzogXCIrcGFnZS5sb2FkaW5nKTtcbiAgICAgICAgICAgIGlmIChwYWdlLndyaXRpbmcpIGxvZ0VudHJ5LnB1c2goXCJ3cml0aW5nXCIpO1xuICAgICAgICAgICAgaWYgKHBhZ2UuZGlydHkpIGxvZ0VudHJ5LnB1c2goXCJkaXJ0eVwiKTtcbiAgICAgICAgfVxuICAgICAgICBsb2dFbnRyeS5wdXNoKFwiPT1cIik7XG5cbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIHNlbGYuaGlzdG9yeVtwXSA9IFtdO1xuICAgICAgICBzZWxmLmhpc3RvcnlbcF0ucHVzaChsb2dFbnRyeSk7XG4gICAgfVxuXG4gICAgX19wcmludEhpc3RvcnkocCkge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKCFzZWxmLmhpc3RvcnlbcF0pIGNvbnNvbGUubG9nKFwiRW1wdHkgSGlzdG9yeSBcIiwgcCk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiSGlzdG9yeSBcIitwKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNlbGYuaGlzdG9yeVtwXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHNlbGYuaGlzdG9yeVtwXVtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiLT4gXCIgKyBzZWxmLmhpc3RvcnlbcF1baV1bal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG5cblxuICAgIF90cmlnZ2VyTG9hZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucmVhZGluZykgcmV0dXJuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPT0wKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBkZWxldGFibGVQYWdlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAoKHBhZ2UuZGlydHkgPT0gZmFsc2UpJiYocGFnZS5wZW5kaW5nT3BzPT0wKSYmKCFwYWdlLndyaXRpbmcpJiYoIXBhZ2UubG9hZGluZykpIGRlbGV0YWJsZVBhZ2VzLnB1c2gocGFyc2VJbnQocGFnZUlkeHNbaV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmcmVlUGFnZXMgPSBzZWxmLm1heFBhZ2VzTG9hZGVkIC0gcGFnZUlkeHMubGVuZ3RoO1xuXG4gICAgICAgIGNvbnN0IG9wcyA9IFtdO1xuXG4gICAgICAgIC8vIHdoaWxlIHBlbmRpbmcgbG9hZHMgYW5kXG4gICAgICAgIC8vICAgICB0aGUgcGFnZSBpcyBsb2FkZWQgb3IgSSBjYW4gcmVjb3ZlciBvbmUuXG4gICAgICAgIHdoaWxlIChcbiAgICAgICAgICAgIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgJiZcbiAgICAgICAgICAgICggICAodHlwZW9mIHNlbGYucGFnZXNbc2VsZi5wZW5kaW5nTG9hZHNbMF0ucGFnZV0gIT0gXCJ1bmRlZmluZWRcIiApXG4gICAgICAgICAgICAgIHx8KCAgKGZyZWVQYWdlcz4wKVxuICAgICAgICAgICAgICAgICB8fChkZWxldGFibGVQYWdlcy5sZW5ndGg+MCkpKSkge1xuICAgICAgICAgICAgY29uc3QgbG9hZCA9IHNlbGYucGVuZGluZ0xvYWRzLnNoaWZ0KCk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlbGYucGFnZXNbbG9hZC5wYWdlXSAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnBlbmRpbmdPcHMgKys7XG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gZGVsZXRhYmxlUGFnZXMuaW5kZXhPZihsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIGlmIChpZHg+PTApIGRlbGV0YWJsZVBhZ2VzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0ubG9hZGluZy5wdXNoKGxvYWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxvYWQucmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIExvYWQgKGNhY2hlZCk6IFwiLCBsb2FkLnBhZ2UpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChmcmVlUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZnJlZVBhZ2VzLS07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZnAgPSBkZWxldGFibGVQYWdlcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkJlZm9yZSBVbmxvYWQ6IFwiLCBmcCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuYXZCdWZmcy51bnNoaWZ0KHNlbGYucGFnZXNbZnBdKTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbZnBdO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIFVubG9hZDogXCIsIGZwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobG9hZC5wYWdlPj1zZWxmLnRvdGFsUGFnZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdID0gZ2V0TmV3UGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICBsb2FkLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3N0YXR1c1BhZ2UoXCJBZnRlciBMb2FkIChuZXcpOiBcIiwgbG9hZC5wYWdlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2VzW2xvYWQucGFnZV0gPSBnZXROZXdQYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nID0gW2xvYWRdO1xuICAgICAgICAgICAgICAgICAgICBvcHMucHVzaChzZWxmLmZkLnJlYWQoc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLmJ1ZmYsIDAsIHNlbGYucGFnZVNpemUsIGxvYWQucGFnZSpzZWxmLnBhZ2VTaXplKS50aGVuKChyZXMpPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tsb2FkLnBhZ2VdLnNpemUgPSByZXMuYnl0ZXNSZWFkO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbG9hZGluZyA9IHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYucGFnZXNbbG9hZC5wYWdlXS5sb2FkaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPGxvYWRpbmcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nW2ldLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGVkKTogXCIsIGxvYWQucGFnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgTG9hZCAobG9hZGluZyk6IFwiLCBsb2FkLnBhZ2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBpZiAob3BzLmxlbmd0aD4xKSBjb25zb2xlLmxvZyhvcHMubGVuZ3RoKTtcblxuICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgIHNlbGYucmVhZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBnZXROZXdQYWdlKCkge1xuICAgICAgICAgICAgaWYgKHNlbGYuYXZCdWZmcy5sZW5ndGg+MCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBzZWxmLmF2QnVmZnMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBwLmRpcnR5ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcC5wZW5kaW5nT3BzID0gMTtcbiAgICAgICAgICAgICAgICBwLnNpemUgPTA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGRpcnR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYnVmZjogbmV3IFVpbnQ4QXJyYXkoc2VsZi5wYWdlU2l6ZSksXG4gICAgICAgICAgICAgICAgICAgIHBlbmRpbmdPcHM6IDEsXG4gICAgICAgICAgICAgICAgICAgIHNpemU6IDBcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIF90cmlnZ2VyV3JpdGUoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgcGFnZUlkeHMgPSBPYmplY3Qua2V5cyhzZWxmLnBhZ2VzKTtcblxuICAgICAgICBjb25zdCBvcHMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGFnZUlkeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSBzZWxmLnBhZ2VzW3BhcnNlSW50KHBhZ2VJZHhzW2ldKV07XG4gICAgICAgICAgICBpZiAocGFnZS5kaXJ0eSkge1xuICAgICAgICAgICAgICAgIHBhZ2UuZGlydHkgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBwYWdlLndyaXRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHNlbGYud3JpdGluZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgb3BzLnB1c2goIHNlbGYuZmQud3JpdGUocGFnZS5idWZmLCAwLCBwYWdlLnNpemUsIHBhcnNlSW50KHBhZ2VJZHhzW2ldKSpzZWxmLnBhZ2VTaXplKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZS53cml0aW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgV3JpdGluZzogXCIrZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvciA9IGVycjtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHJ5Q2xvc2UoKTtcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2VsZi53cml0aW5nKSB7XG4gICAgICAgICAgICBQcm9taXNlLmFsbChvcHMpLnRoZW4oICgpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLndyaXRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICAgICAgICAgIHNlbGYuX3RyeUNsb3NlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aD4wKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlckxvYWQuYmluZChzZWxmKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIF9nZXREaXJ0eVBhZ2UoKSB7XG4gICAgICAgIGZvciAobGV0IHAgaW4gdGhpcy5wYWdlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFnZXNbcF0uZGlydHkpIHJldHVybiBwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA9PSAwKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuLypcbiAgICAgICAgaWYgKGJ1ZmYuYnl0ZUxlbmd0aCA+IHNlbGYucGFnZVNpemUqc2VsZi5tYXhQYWdlc0xvYWRlZCowLjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlU2l6ZSA9IE1hdGguZmxvb3IoYnVmZi5ieXRlTGVuZ3RoICogMS4xKTtcbiAgICAgICAgICAgIHRoaXMubWF4UGFnZXNMb2FkZWQgPSBNYXRoLmZsb29yKCBjYWNoZVNpemUgLyBzZWxmLnBhZ2VTaXplKSsxO1xuICAgICAgICB9XG4qL1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi50b3RhbFNpemUgPCBwb3MgKyBidWZmLmJ5dGVMZW5ndGgpIHNlbGYudG90YWxTaXplID0gcG9zICsgYnVmZi5ieXRlTGVuZ3RoO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcbiAgICAgICAgc2VsZi5fdHJpZ2dlckxvYWQoKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBzZWxmLnBhZ2VTaXplO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgYXdhaXQgcGFnZVByb21pc2VzW3AtZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIsIGJ1ZmYuYnl0ZUxlbmd0aCAtIHIgKyBsKTtcbiAgICAgICAgICAgIGNvbnN0IGRzdFZpZXcgPSBuZXcgVWludDhBcnJheShzZWxmLnBhZ2VzW3BdLmJ1ZmYuYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5kaXJ0eSA9IHRydWU7XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnBlbmRpbmdPcHMgLS07XG4gICAgICAgICAgICBzZWxmLnBhZ2VzW3BdLnNpemUgPSBNYXRoLm1heChvK2wsIHNlbGYucGFnZXNbcF0uc2l6ZSk7XG4gICAgICAgICAgICBpZiAocD49c2VsZi50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICAgICAgc2VsZi50b3RhbFBhZ2VzID0gcCsxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmICghc2VsZi53cml0aW5nKSBzZXRJbW1lZGlhdGUoc2VsZi5fdHJpZ2dlcldyaXRlLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgICAgICBhd2FpdCBzZWxmLnJlYWRUb0J1ZmZlcihidWZmLCAwLCBsZW4sIHBvcyk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFRvQnVmZmVyKGJ1ZmZEc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgaWYgKGxlbiA9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmIChsZW4gPiBzZWxmLnBhZ2VTaXplKnNlbGYubWF4UGFnZXNMb2FkZWQqMC44KSB7XG4gICAgICAgICAgICBjb25zdCBjYWNoZVNpemUgPSBNYXRoLmZsb29yKGxlbiAqIDEuMSk7XG4gICAgICAgICAgICB0aGlzLm1heFBhZ2VzTG9hZGVkID0gTWF0aC5mbG9vciggY2FjaGVTaXplIC8gc2VsZi5wYWdlU2l6ZSkrMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgc2VsZi5wb3MgPSBwb3MrbGVuO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIHNlbGYucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBsYXN0UGFnZSA9IE1hdGguZmxvb3IoKHBvcyArIGxlbiAtMSkgLyBzZWxmLnBhZ2VTaXplKTtcblxuICAgICAgICBjb25zdCBwYWdlUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT1maXJzdFBhZ2U7IGk8PWxhc3RQYWdlOyBpKyspIHBhZ2VQcm9taXNlcy5wdXNoKHNlbGYuX2xvYWRQYWdlKGkpKTtcblxuICAgICAgICBzZWxmLl90cmlnZ2VyTG9hZCgpO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IHBvcyAlIHNlbGYucGFnZVNpemU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gcG9zICsgbGVuID4gc2VsZi50b3RhbFNpemUgPyBsZW4gLSAocG9zICsgbGVuIC0gc2VsZi50b3RhbFNpemUpOiBsZW47XG4gICAgICAgIHdoaWxlIChyPjApIHtcbiAgICAgICAgICAgIGF3YWl0IHBhZ2VQcm9taXNlc1twIC0gZmlyc3RQYWdlXTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgcCk7XG5cbiAgICAgICAgICAgIC8vIGJ5dGVzIHRvIGNvcHkgZnJvbSB0aGlzIHBhZ2VcbiAgICAgICAgICAgIGNvbnN0IGwgPSAobytyID4gc2VsZi5wYWdlU2l6ZSkgPyAoc2VsZi5wYWdlU2l6ZSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYucGFnZXNbcF0uYnVmZi5idWZmZXIsIHNlbGYucGFnZXNbcF0uYnVmZi5ieXRlT2Zmc2V0ICsgbywgbCk7XG4gICAgICAgICAgICBidWZmRHN0LnNldChzcmNWaWV3LCBvZmZzZXQrbGVuLXIpO1xuICAgICAgICAgICAgc2VsZi5wYWdlc1twXS5wZW5kaW5nT3BzIC0tO1xuXG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBwKTtcblxuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgICAgIGlmIChzZWxmLnBlbmRpbmdMb2Fkcy5sZW5ndGg+MCkgc2V0SW1tZWRpYXRlKHNlbGYuX3RyaWdnZXJMb2FkLmJpbmQoc2VsZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG5cbiAgICB9XG5cblxuICAgIF90cnlDbG9zZSgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICghc2VsZi5wZW5kaW5nQ2xvc2UpIHJldHVybjtcbiAgICAgICAgaWYgKHNlbGYuZXJyb3IpIHtcbiAgICAgICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlUmVqZWN0KHNlbGYuZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHAgPSBzZWxmLl9nZXREaXJ0eVBhZ2UoKTtcbiAgICAgICAgaWYgKChwPj0wKSB8fCAoc2VsZi53cml0aW5nKSB8fCAoc2VsZi5yZWFkaW5nKSB8fCAoc2VsZi5wZW5kaW5nTG9hZHMubGVuZ3RoPjApKSByZXR1cm47XG4gICAgICAgIHNlbGYucGVuZGluZ0Nsb3NlKCk7XG4gICAgfVxuXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBpZiAoc2VsZi5wZW5kaW5nQ2xvc2UpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbG9zaW5nIHRoZSBmaWxlIHR3aWNlXCIpO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2UgPSByZXNvbHZlO1xuICAgICAgICAgICAgc2VsZi5wZW5kaW5nQ2xvc2VSZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICBzZWxmLl90cnlDbG9zZSgpO1xuICAgICAgICB9KS50aGVuKCgpPT4ge1xuICAgICAgICAgICAgc2VsZi5mZC5jbG9zZSgpO1xuICAgICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgICAgICBzZWxmLmZkLmNsb3NlKCk7XG4gICAgICAgICAgICB0aHJvdyAoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGF3YWl0IHNlbGYuY2xvc2UoKTtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKHRoaXMuZmlsZU5hbWUpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjMydiA9IG5ldyBEYXRhVmlldyh0bXBCdWZmMzIuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbiAgICAgICAgY29uc3QgdG1wQnVmZjY0diA9IG5ldyBEYXRhVmlldyh0bXBCdWZmNjQuYnVmZmVyKTtcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUJFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXcuZ2V0VWludDMyKDAsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVUxFNjQocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDgsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMV0gKiAweDEwMDAwMDAwMCArIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFN0cmluZyhwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHNlbGYucGVuZGluZ0Nsb3NlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIGEgY2xvc2luZyBmaWxlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGN1cnJlbnRQb3NpdGlvbiA9IHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIiA/IHNlbGYucG9zIDogcG9zO1xuICAgICAgICBsZXQgY3VycmVudFBhZ2UgPSBNYXRoLmZsb29yKGN1cnJlbnRQb3NpdGlvbiAvIHNlbGYucGFnZVNpemUpO1xuXG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gZmFsc2U7XG4gICAgICAgIGxldCBzdHIgPSBcIlwiO1xuXG4gICAgICAgIHdoaWxlICghZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgLy9SZWFkIHBhZ2VcbiAgICAgICAgICAgIGxldCBwYWdlUHJvbWlzZSA9IHNlbGYuX2xvYWRQYWdlKGN1cnJlbnRQYWdlKTtcbiAgICAgICAgICAgIHNlbGYuX3RyaWdnZXJMb2FkKCk7XG4gICAgICAgICAgICBhd2FpdCBwYWdlUHJvbWlzZTtcbiAgICAgICAgICAgIHNlbGYuX19zdGF0dXNQYWdlKFwiQWZ0ZXIgQXdhaXQgKHJlYWQpOiBcIiwgY3VycmVudFBhZ2UpO1xuXG4gICAgICAgICAgICBsZXQgb2Zmc2V0T25QYWdlID0gY3VycmVudFBvc2l0aW9uICUgc2VsZi5wYWdlU2l6ZTtcblxuICAgICAgICAgICAgY29uc3QgZGF0YUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5idWZmZXIsXG4gICAgICAgICAgICAgICAgc2VsZi5wYWdlc1tjdXJyZW50UGFnZV0uYnVmZi5ieXRlT2Zmc2V0ICsgb2Zmc2V0T25QYWdlLFxuICAgICAgICAgICAgICAgIHNlbGYucGFnZVNpemUgLSBvZmZzZXRPblBhZ2VcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGxldCBpbmRleEVuZE9mU3RyaW5nID0gZGF0YUFycmF5LmZpbmRJbmRleChlbGVtZW50ID0+IGVsZW1lbnQgPT09IDApO1xuICAgICAgICAgICAgZW5kT2ZTdHJpbmdGb3VuZCA9IGluZGV4RW5kT2ZTdHJpbmcgIT09IC0xO1xuXG4gICAgICAgICAgICBpZiAoZW5kT2ZTdHJpbmdGb3VuZCkge1xuICAgICAgICAgICAgICAgIHN0ciArPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQYWdlICogdGhpcy5wYWdlU2l6ZSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIHRoaXMucGFnZVNpemUgKyBvZmZzZXRPblBhZ2UgKyBkYXRhQXJyYXkubGVuZ3RoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZWxmLnBhZ2VzW2N1cnJlbnRQYWdlXS5wZW5kaW5nT3BzLS07XG4gICAgICAgICAgICBzZWxmLl9fc3RhdHVzUGFnZShcIkFmdGVyIE9wIGRvbmU6IFwiLCBjdXJyZW50UGFnZSk7XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICAgICAgY3VycmVudFBhZ2UrKztcblxuICAgICAgICAgICAgaWYgKHNlbGYucGVuZGluZ0xvYWRzLmxlbmd0aCA+IDApIHNldEltbWVkaWF0ZShzZWxmLl90cmlnZ2VyTG9hZC5iaW5kKHNlbGYpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5ldyhvKSB7XG4gICAgY29uc3QgaW5pdGlhbFNpemUgPSBvLmluaXRpYWxTaXplIHx8IDE8PDIwO1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5vLmRhdGEgPSBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSk7XG4gICAgZmQuYWxsb2NTaXplID0gaW5pdGlhbFNpemU7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQuYWxsb2NTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQudG90YWxTaXplID0gby5kYXRhLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IE1lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC5hbGxvY1NpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC50b3RhbFNpemUgPSBvLmRhdGEuYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIE1lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG4gICAgICAgIGlmIChuZXdMZW4gPiB0aGlzLmFsbG9jU2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgbmV3QWxsb2NTaXplID0gTWF0aC5tYXgoXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxvY1NpemUgKyAoMSA8PCAyMCksXG4gICAgICAgICAgICAgICAgTWF0aC5mbG9vcih0aGlzLmFsbG9jU2l6ZSAqIDEuMSksXG4gICAgICAgICAgICAgICAgbmV3TGVuXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBVaW50OEFycmF5KG5ld0FsbG9jU2l6ZSk7XG4gICAgICAgICAgICBuZXdEYXRhLnNldCh0aGlzLm8uZGF0YSk7XG4gICAgICAgICAgICB0aGlzLm8uZGF0YSA9IG5ld0RhdGE7XG4gICAgICAgICAgICB0aGlzLmFsbG9jU2l6ZSA9IG5ld0FsbG9jU2l6ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlKGJ1ZmYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID10aGlzO1xuICAgICAgICBpZiAodHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiKSBwb3MgPSBzZWxmLnBvcztcbiAgICAgICAgaWYgKHRoaXMucmVhZE9ubHkpIHRocm93IG5ldyBFcnJvcihcIldyaXRpbmcgYSByZWFkIG9ubHkgZmlsZVwiKTtcblxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBidWZmLmJ5dGVMZW5ndGgpO1xuXG4gICAgICAgIHRoaXMuby5kYXRhLnNldChidWZmLnNsaWNlKCksIHBvcyk7XG5cbiAgICAgICAgaWYgKHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aCA+IHRoaXMudG90YWxTaXplKSB0aGlzLnRvdGFsU2l6ZSA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRlc3QsIG9mZnNldCwgbGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGlmICh0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIpIHBvcyA9IHNlbGYucG9zO1xuICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgaWYgKHBvcyArIGxlbiA+IHRoaXMudG90YWxTaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBib3VuZHNcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgbGVuKTtcblxuICAgICAgICBjb25zdCBidWZmU3JjID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5vLmRhdGEuYnVmZmVyLCB0aGlzLm8uZGF0YS5ieXRlT2Zmc2V0ICsgcG9zLCBsZW4pO1xuXG4gICAgICAgIGJ1ZmZEZXN0LnNldChidWZmU3JjLCBvZmZzZXQpO1xuXG4gICAgICAgIHRoaXMucG9zID0gcG9zICsgbGVuO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWQobGVuLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgIGF3YWl0IHNlbGYucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsIGxlbiwgcG9zKTtcblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuby5kYXRhLmJ5dGVMZW5ndGggIT0gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhID0gdGhpcy5vLmRhdGEuc2xpY2UoMCwgdGhpcy50b3RhbFNpemUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZGlzY2FyZCgpIHtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjMyLCBwb3MpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlVUJFMzIodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmYzMnYuc2V0VWludDMyKDAsIHYsIGZhbHNlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cblxuICAgIGFzeW5jIHdyaXRlVUxFNjQodiwgcG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDAsIHYgJiAweEZGRkZGRkZGLCB0cnVlKTtcbiAgICAgICAgdG1wQnVmZjY0di5zZXRVaW50MzIoNCwgTWF0aC5mbG9vcih2IC8gMHgxMDAwMDAwMDApICwgdHJ1ZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmNjQsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyByZWFkVUxFMzIocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgc2VsZi5yZWFkKDQsIHBvcyk7XG5cbiAgICAgICAgY29uc3QgdmlldyA9IG5ldyBVaW50MzJBcnJheShiLmJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIHZpZXdbMF07XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVCRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3LmdldFVpbnQzMigwLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZFVMRTY0KHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg4LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzFdICogMHgxMDAwMDAwMDAgKyB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRTdHJpbmcocG9zKSB7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGxldCBjdXJyZW50UG9zaXRpb24gPSB0eXBlb2YgcG9zID09IFwidW5kZWZpbmVkXCIgPyBzZWxmLnBvcyA6IHBvcztcblxuICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uID4gdGhpcy50b3RhbFNpemUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVhZGluZyBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShcbiAgICAgICAgICAgIHNlbGYuby5kYXRhLmJ1ZmZlcixcbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbixcbiAgICAgICAgICAgIHRoaXMudG90YWxTaXplIC0gY3VycmVudFBvc2l0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IGluZGV4RW5kT2ZTdHJpbmcgPSBkYXRhQXJyYXkuZmluZEluZGV4KGVsZW1lbnQgPT4gZWxlbWVudCA9PT0gMCk7XG4gICAgICAgIGxldCBlbmRPZlN0cmluZ0ZvdW5kID0gaW5kZXhFbmRPZlN0cmluZyAhPT0gLTE7XG5cbiAgICAgICAgbGV0IHN0ciA9IFwiXCI7XG4gICAgICAgIGlmIChlbmRPZlN0cmluZ0ZvdW5kKSB7XG4gICAgICAgICAgICBzdHIgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoZGF0YUFycmF5LnNsaWNlKDAsIGluZGV4RW5kT2ZTdHJpbmcpKTtcbiAgICAgICAgICAgIHNlbGYucG9zID0gY3VycmVudFBvc2l0aW9uICsgaW5kZXhFbmRPZlN0cmluZyArIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZWxmLnBvcyA9IGN1cnJlbnRQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cbn1cbiIsImNvbnN0IFBBR0VfU0laRSA9IDE8PDIyO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTmV3KG8pIHtcbiAgICBjb25zdCBpbml0aWFsU2l6ZSA9IG8uaW5pdGlhbFNpemUgfHwgMDtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgY29uc3QgblBhZ2VzID0gaW5pdGlhbFNpemUgPyBNYXRoLmZsb29yKChpbml0aWFsU2l6ZSAtIDEpIC8gUEFHRV9TSVpFKSsxIDogMDtcbiAgICBmZC5vLmRhdGEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBhZ2VzLTE7IGkrKykge1xuICAgICAgICBmZC5vLmRhdGEucHVzaCggbmV3IFVpbnQ4QXJyYXkoUEFHRV9TSVpFKSk7XG4gICAgfVxuICAgIGlmIChuUGFnZXMpIGZkLm8uZGF0YS5wdXNoKCBuZXcgVWludDhBcnJheShpbml0aWFsU2l6ZSAtIFBBR0VfU0laRSooblBhZ2VzLTEpKSk7XG4gICAgZmQudG90YWxTaXplID0gMDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEV4aXN0aW5nKG8pIHtcbiAgICBjb25zdCBmZCA9IG5ldyBCaWdNZW1GaWxlKCk7XG4gICAgZmQubyA9IG87XG4gICAgZmQudG90YWxTaXplID0gKG8uZGF0YS5sZW5ndGgtMSkqIFBBR0VfU0laRSArIG8uZGF0YVtvLmRhdGEubGVuZ3RoLTFdLmJ5dGVMZW5ndGg7XG4gICAgZmQucmVhZE9ubHkgPSB0cnVlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZFdyaXRlRXhpc3Rpbmcobykge1xuICAgIGNvbnN0IGZkID0gbmV3IEJpZ01lbUZpbGUoKTtcbiAgICBmZC5vID0gbztcbiAgICBmZC50b3RhbFNpemUgPSAoby5kYXRhLmxlbmd0aC0xKSogUEFHRV9TSVpFICsgby5kYXRhW28uZGF0YS5sZW5ndGgtMV0uYnl0ZUxlbmd0aDtcbiAgICBmZC5yZWFkT25seSA9IGZhbHNlO1xuICAgIGZkLnBvcyA9IDA7XG4gICAgcmV0dXJuIGZkO1xufVxuXG5jb25zdCB0bXBCdWZmMzIgPSBuZXcgVWludDhBcnJheSg0KTtcbmNvbnN0IHRtcEJ1ZmYzMnYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjMyLmJ1ZmZlcik7XG5jb25zdCB0bXBCdWZmNjQgPSBuZXcgVWludDhBcnJheSg4KTtcbmNvbnN0IHRtcEJ1ZmY2NHYgPSBuZXcgRGF0YVZpZXcodG1wQnVmZjY0LmJ1ZmZlcik7XG5cbmNsYXNzIEJpZ01lbUZpbGUge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucGFnZVNpemUgPSAxIDw8IDE0OyAgLy8gZm9yIGNvbXBhdGliaWxpdHlcbiAgICB9XG5cbiAgICBfcmVzaXplSWZOZWVkZWQobmV3TGVuKSB7XG5cbiAgICAgICAgaWYgKG5ld0xlbiA8PSB0aGlzLnRvdGFsU2l6ZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiBmaWxlIGJvdW5kc1wiKTtcblxuICAgICAgICBjb25zdCBuUGFnZXMgPSBNYXRoLmZsb29yKChuZXdMZW4gLSAxKSAvIFBBR0VfU0laRSkrMTtcbiAgICAgICAgZm9yIChsZXQgaT0gTWF0aC5tYXgodGhpcy5vLmRhdGEubGVuZ3RoLTEsIDApOyBpPG5QYWdlczsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdTaXplID0gaTxuUGFnZXMtMSA/IFBBR0VfU0laRSA6IG5ld0xlbiAtIChuUGFnZXMtMSkqUEFHRV9TSVpFO1xuICAgICAgICAgICAgY29uc3QgcCA9IG5ldyBVaW50OEFycmF5KG5ld1NpemUpO1xuICAgICAgICAgICAgaWYgKGkgPT0gdGhpcy5vLmRhdGEubGVuZ3RoLTEpIHAuc2V0KHRoaXMuby5kYXRhW2ldKTtcbiAgICAgICAgICAgIHRoaXMuby5kYXRhW2ldID0gcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IG5ld0xlbjtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZShidWZmLCBwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9dGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB0aHJvdyBuZXcgRXJyb3IoXCJXcml0aW5nIGEgcmVhZCBvbmx5IGZpbGVcIik7XG5cbiAgICAgICAgdGhpcy5fcmVzaXplSWZOZWVkZWQocG9zICsgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKHBvcyAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgbGV0IHAgPSBmaXJzdFBhZ2U7XG4gICAgICAgIGxldCBvID0gcG9zICUgUEFHRV9TSVpFO1xuICAgICAgICBsZXQgciA9IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IGJ1ZmYuc2xpY2UoYnVmZi5ieXRlTGVuZ3RoIC0gciwgYnVmZi5ieXRlTGVuZ3RoIC0gciArIGwpO1xuICAgICAgICAgICAgY29uc3QgZHN0VmlldyA9IG5ldyBVaW50OEFycmF5KHNlbGYuby5kYXRhW3BdLmJ1ZmZlciwgbywgbCk7XG4gICAgICAgICAgICBkc3RWaWV3LnNldChzcmNWaWV3KTtcbiAgICAgICAgICAgIHIgPSByLWw7XG4gICAgICAgICAgICBwICsrO1xuICAgICAgICAgICAgbyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcyA9IHBvcyArIGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkVG9CdWZmZXIoYnVmZkRzdCwgb2Zmc2V0LCBsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgaWYgKHR5cGVvZiBwb3MgPT0gXCJ1bmRlZmluZWRcIikgcG9zID0gc2VsZi5wb3M7XG4gICAgICAgIGlmICh0aGlzLnJlYWRPbmx5KSB7XG4gICAgICAgICAgICBpZiAocG9zICsgbGVuID4gdGhpcy50b3RhbFNpemUpIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZXNpemVJZk5lZWRlZChwb3MgKyBsZW4pO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0UGFnZSA9IE1hdGguZmxvb3IocG9zIC8gUEFHRV9TSVpFKTtcblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBwb3MgJSBQQUdFX1NJWkU7XG4gICAgICAgIC8vIFJlbWFpbmluZyBieXRlcyB0byByZWFkXG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICAvLyBieXRlcyB0byBjb3B5IGZyb20gdGhpcyBwYWdlXG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoc2VsZi5vLmRhdGFbcF0uYnVmZmVyLCBvLCBsKTtcbiAgICAgICAgICAgIGJ1ZmZEc3Quc2V0KHNyY1ZpZXcsIG9mZnNldCtsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb3MgPSBwb3MgKyBsZW47XG4gICAgfVxuXG4gICAgYXN5bmMgcmVhZChsZW4sIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG5cbiAgICAgICAgYXdhaXQgc2VsZi5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuLCBwb3MpO1xuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGNsb3NlKCkge1xuICAgIH1cblxuICAgIGFzeW5jIGRpc2NhcmQoKSB7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCB0cnVlKTtcblxuICAgICAgICBhd2FpdCBzZWxmLndyaXRlKHRtcEJ1ZmYzMiwgcG9zKTtcbiAgICB9XG5cbiAgICBhc3luYyB3cml0ZVVCRTMyKHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmMzJ2LnNldFVpbnQzMigwLCB2LCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgc2VsZi53cml0ZSh0bXBCdWZmMzIsIHBvcyk7XG4gICAgfVxuXG5cbiAgICBhc3luYyB3cml0ZVVMRTY0KHYsIHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICB0bXBCdWZmNjR2LnNldFVpbnQzMigwLCB2ICYgMHhGRkZGRkZGRiwgdHJ1ZSk7XG4gICAgICAgIHRtcEJ1ZmY2NHYuc2V0VWludDMyKDQsIE1hdGguZmxvb3IodiAvIDB4MTAwMDAwMDAwKSAsIHRydWUpO1xuXG4gICAgICAgIGF3YWl0IHNlbGYud3JpdGUodG1wQnVmZjY0LCBwb3MpO1xuICAgIH1cblxuXG4gICAgYXN5bmMgcmVhZFVMRTMyKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgYiA9IGF3YWl0IHNlbGYucmVhZCg0LCBwb3MpO1xuXG4gICAgICAgIGNvbnN0IHZpZXcgPSBuZXcgVWludDMyQXJyYXkoYi5idWZmZXIpO1xuXG4gICAgICAgIHJldHVybiB2aWV3WzBdO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVQkUzMihwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoNCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlldy5nZXRVaW50MzIoMCwgZmFsc2UpO1xuICAgIH1cblxuICAgIGFzeW5jIHJlYWRVTEU2NChwb3MpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGIgPSBhd2FpdCBzZWxmLnJlYWQoOCwgcG9zKTtcblxuICAgICAgICBjb25zdCB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KGIuYnVmZmVyKTtcblxuICAgICAgICByZXR1cm4gdmlld1sxXSAqIDB4MTAwMDAwMDAwICsgdmlld1swXTtcbiAgICB9XG5cbiAgICBhc3luYyByZWFkU3RyaW5nKHBvcykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgY29uc3QgZml4ZWRTaXplID0gMjA0ODtcblxuICAgICAgICBsZXQgY3VycmVudFBvc2l0aW9uID0gdHlwZW9mIHBvcyA9PSBcInVuZGVmaW5lZFwiID8gc2VsZi5wb3MgOiBwb3M7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQb3NpdGlvbiA+IHRoaXMudG90YWxTaXplKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5yZWFkT25seSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlYWRpbmcgb3V0IG9mIGJvdW5kc1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZUlmTmVlZGVkKHBvcyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZW5kT2ZTdHJpbmdGb3VuZCA9IGZhbHNlO1xuICAgICAgICBsZXQgc3RyID0gXCJcIjtcblxuICAgICAgICB3aGlsZSAoIWVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50UGFnZSA9IE1hdGguZmxvb3IoY3VycmVudFBvc2l0aW9uIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIGxldCBvZmZzZXRPblBhZ2UgPSBjdXJyZW50UG9zaXRpb24gJSBQQUdFX1NJWkU7XG5cbiAgICAgICAgICAgIGlmIChzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVSUk9SXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcmVhZExlbmd0aCA9IE1hdGgubWluKGZpeGVkU2l6ZSwgc2VsZi5vLmRhdGFbY3VycmVudFBhZ2VdLmxlbmd0aCAtIG9mZnNldE9uUGFnZSk7XG4gICAgICAgICAgICBjb25zdCBkYXRhQXJyYXkgPSBuZXcgVWludDhBcnJheShzZWxmLm8uZGF0YVtjdXJyZW50UGFnZV0uYnVmZmVyLCBvZmZzZXRPblBhZ2UsIHJlYWRMZW5ndGgpO1xuXG4gICAgICAgICAgICBsZXQgaW5kZXhFbmRPZlN0cmluZyA9IGRhdGFBcnJheS5maW5kSW5kZXgoZWxlbWVudCA9PiBlbGVtZW50ID09PSAwKTtcbiAgICAgICAgICAgIGVuZE9mU3RyaW5nRm91bmQgPSBpbmRleEVuZE9mU3RyaW5nICE9PSAtMTtcblxuICAgICAgICAgICAgaWYgKGVuZE9mU3RyaW5nRm91bmQpIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheS5zbGljZSgwLCBpbmRleEVuZE9mU3RyaW5nKSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGluZGV4RW5kT2ZTdHJpbmcgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzdHIgKz0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGRhdGFBcnJheSk7XG4gICAgICAgICAgICAgICAgc2VsZi5wb3MgPSBjdXJyZW50UGFnZSAqIFBBR0VfU0laRSArIG9mZnNldE9uUGFnZSArIGRhdGFBcnJheS5sZW5ndGg7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiA9IHNlbGYucG9zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHI7XG4gICAgfVxufVxuIiwiLyogZ2xvYmFsIGZldGNoICovXG5pbXBvcnQgeyBvcGVuIH0gZnJvbSBcIi4vb3NmaWxlLmpzXCI7XG5pbXBvcnQgKiBhcyBtZW1GaWxlIGZyb20gXCIuL21lbWZpbGUuanNcIjtcbmltcG9ydCAqIGFzIGJpZ01lbUZpbGUgZnJvbSBcIi4vYmlnbWVtZmlsZS5qc1wiO1xuaW1wb3J0IHsgT19UUlVOQywgT19DUkVBVCwgT19SRFdSLCBPX0VYQ0wsIE9fUkRPTkxZIH0gZnJvbSBcImNvbnN0YW50c1wiO1xuXG5jb25zdCBERUZBVUxUX0NBQ0hFX1NJWkUgPSAoMSA8PCAxNik7XG5jb25zdCBERUZBVUxUX1BBR0VfU0laRSA9ICgxIDw8IDEzKTtcblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU5vT3ZlcnJpZGUobywgYiwgYykge1xuICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBvID0ge1xuICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICBmaWxlTmFtZTogbyxcbiAgICAgICAgICAgIGNhY2hlU2l6ZTogYiB8fCBERUZBVUxUX0NBQ0hFX1NJWkUsXG4gICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBvcGVuKG8uZmlsZU5hbWUsIE9fVFJVTkMgfCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYmlnTWVtRmlsZS5jcmVhdGVOZXcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRFeGlzdGluZyhvLCBiLCBjKSB7XG4gICAgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIG8gPSB7XG4gICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgZGF0YTogb1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZldGNoKG8pLnRoZW4oIGZ1bmN0aW9uKHJlcykge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXMuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKGFiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFiKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbyA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIm1lbVwiLFxuICAgICAgICAgICAgICAgIGRhdGE6IGJ1ZmZcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIG8gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICAgICAgY2FjaGVTaXplOiBiIHx8IERFRkFVTFRfQ0FDSEVfU0laRSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogYyB8fCBERUZBVUxUX1BBR0VfU0laRVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoby50eXBlID09IFwiZmlsZVwiKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBvcGVuKG8uZmlsZU5hbWUsIE9fUkRPTkxZLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgbWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJiaWdNZW1cIikge1xuICAgICAgICByZXR1cm4gYXdhaXQgYmlnTWVtRmlsZS5yZWFkRXhpc3Rpbmcobyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBGYXN0RmlsZSB0eXBlOiBcIitvLnR5cGUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRXcml0ZUV4aXN0aW5nKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSLCBvLmNhY2hlU2l6ZSwgby5wYWdlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkV3JpdGVFeGlzdGluZ09yQ3JlYXRlKG8sIGIsIGMpIHtcbiAgICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgbyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgICAgICAgICAgZmlsZU5hbWU6IG8sXG4gICAgICAgICAgICBjYWNoZVNpemU6IGIgfHwgREVGQVVMVF9DQUNIRV9TSVpFLFxuICAgICAgICAgICAgcGFnZVNpemU6IGMgfHwgREVGQVVMVF9QQUdFX1NJWkVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgaWYgKG8udHlwZSA9PSBcImZpbGVcIikge1xuICAgICAgICByZXR1cm4gb3BlbihvLmZpbGVOYW1lLCBPX0NSRUFUIHwgT19SRFdSIHwgT19FWENMLCBvLmNhY2hlU2l6ZSk7XG4gICAgfSBlbHNlIGlmIChvLnR5cGUgPT0gXCJtZW1cIikge1xuICAgICAgICByZXR1cm4gbWVtRmlsZS5yZWFkV3JpdGVFeGlzdGluZyhvKTtcbiAgICB9IGVsc2UgaWYgKG8udHlwZSA9PSBcImJpZ01lbVwiKSB7XG4gICAgICAgIHJldHVybiBiaWdNZW1GaWxlLnJlYWRXcml0ZUV4aXN0aW5nKG8pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRmFzdEZpbGUgdHlwZTogXCIrby50eXBlKTtcbiAgICB9XG59XG4iLCJcbmltcG9ydCAgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEJpbkZpbGUoZmlsZU5hbWUsIHR5cGUsIG1heFZlcnNpb24sIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGZpbGVOYW1lLCBjYWNoZVNpemUsIHBhZ2VTaXplKTtcblxuICAgIGNvbnN0IGIgPSBhd2FpdCBmZC5yZWFkKDQpO1xuICAgIGxldCByZWFkZWRUeXBlID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSByZWFkZWRUeXBlICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYltpXSk7XG5cbiAgICBpZiAocmVhZGVkVHlwZSAhPSB0eXBlKSB0aHJvdyBuZXcgRXJyb3IoZmlsZU5hbWUgKyBcIjogSW52YWxpZCBGaWxlIGZvcm1hdFwiKTtcblxuICAgIGxldCB2ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBpZiAodj5tYXhWZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoXCJWZXJzaW9uIG5vdCBzdXBwb3J0ZWRcIik7XG5cbiAgICBjb25zdCBuU2VjdGlvbnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIC8vIFNjYW4gc2VjdGlvbnNcbiAgICBsZXQgc2VjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8blNlY3Rpb25zOyBpKyspIHtcbiAgICAgICAgbGV0IGh0ID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGxldCBobCA9IGF3YWl0IGZkLnJlYWRVTEU2NCgpO1xuICAgICAgICBpZiAodHlwZW9mIHNlY3Rpb25zW2h0XSA9PSBcInVuZGVmaW5lZFwiKSBzZWN0aW9uc1todF0gPSBbXTtcbiAgICAgICAgc2VjdGlvbnNbaHRdLnB1c2goe1xuICAgICAgICAgICAgcDogZmQucG9zLFxuICAgICAgICAgICAgc2l6ZTogaGxcbiAgICAgICAgfSk7XG4gICAgICAgIGZkLnBvcyArPSBobDtcbiAgICB9XG5cbiAgICByZXR1cm4ge2ZkLCBzZWN0aW9uc307XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCB0eXBlLCB2ZXJzaW9uLCBuU2VjdGlvbnMsIGNhY2hlU2l6ZSwgcGFnZVNpemUpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoZmlsZU5hbWUsIGNhY2hlU2l6ZSwgcGFnZVNpemUpO1xuXG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIGZvciAobGV0IGk9MDsgaTw0OyBpKyspIGJ1ZmZbaV0gPSB0eXBlLmNoYXJDb2RlQXQoaSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgMCk7IC8vIE1hZ2ljIFwicjFjc1wiXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHZlcnNpb24pOyAvLyBWZXJzaW9uXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuU2VjdGlvbnMpOyAvLyBOdW1iZXIgb2YgU2VjdGlvbnNcblxuICAgIHJldHVybiBmZDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0V3JpdGVTZWN0aW9uKGZkLCBpZFNlY3Rpb24pIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uICE9PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJBbHJlYWR5IHdyaXRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoaWRTZWN0aW9uKTsgLy8gSGVhZGVyIHR5cGVcbiAgICBmZC53cml0aW5nU2VjdGlvbiA9IHtcbiAgICAgICAgcFNlY3Rpb25TaXplOiBmZC5wb3NcbiAgICB9O1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBlbmRXcml0ZVNlY3Rpb24oZmQpIHtcbiAgICBpZiAodHlwZW9mIGZkLndyaXRpbmdTZWN0aW9uID09PSBcInVuZGVmaW5lZFwiKSB0aHJvdyBuZXcgRXJyb3IoXCJOb3Qgd3JpdGluZyBhIHNlY3Rpb25cIik7XG5cbiAgICBjb25zdCBzZWN0aW9uU2l6ZSA9IGZkLnBvcyAtIGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZSAtIDg7XG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuICAgIGZkLnBvcyA9IGZkLndyaXRpbmdTZWN0aW9uLnBTZWN0aW9uU2l6ZTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KHNlY3Rpb25TaXplKTtcbiAgICBmZC5wb3MgPSBvbGRQb3M7XG4gICAgZGVsZXRlIGZkLndyaXRpbmdTZWN0aW9uO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbikge1xuICAgIGlmICh0eXBlb2YgZmQucmVhZGluZ1NlY3Rpb24gIT09IFwidW5kZWZpbmVkXCIpIHRocm93IG5ldyBFcnJvcihcIkFscmVhZHkgcmVhZGluZyBhIHNlY3Rpb25cIik7XG4gICAgaWYgKCFzZWN0aW9uc1tpZFNlY3Rpb25dKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IE1pc3Npbmcgc2VjdGlvbiBcIisgaWRTZWN0aW9uICk7XG4gICAgaWYgKHNlY3Rpb25zW2lkU2VjdGlvbl0ubGVuZ3RoPjEpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IFNlY3Rpb24gRHVwbGljYXRlZCBcIiAraWRTZWN0aW9uKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0ucDtcblxuICAgIGZkLnJlYWRpbmdTZWN0aW9uID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuZFJlYWRTZWN0aW9uKGZkLCBub0NoZWNrKSB7XG4gICAgaWYgKHR5cGVvZiBmZC5yZWFkaW5nU2VjdGlvbiA9PT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKFwiTm90IHJlYWRpbmcgYSBzZWN0aW9uXCIpO1xuICAgIGlmICghbm9DaGVjaykge1xuICAgICAgICBpZiAoZmQucG9zLWZkLnJlYWRpbmdTZWN0aW9uLnAgIT0gIGZkLnJlYWRpbmdTZWN0aW9uLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgc2VjdGlvbiBzaXplIHJlYWRpbmdcIik7XG4gICAgfVxuICAgIGRlbGV0ZSBmZC5yZWFkaW5nU2VjdGlvbjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQmlnSW50KGZkLCBuLCBuOCwgcG9zKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KG44KTtcbiAgICBTY2FsYXIudG9ScHJMRShidWZmLCAwLCBuLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZiwgcG9zKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRCaWdJbnQoZmQsIG44LCBwb3MpIHtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCwgcG9zKTtcbiAgICByZXR1cm4gU2NhbGFyLmZyb21ScHJMRShidWZmLCAwLCBuOCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5U2VjdGlvbihmZEZyb20sIHNlY3Rpb25zLCBmZFRvLCBzZWN0aW9uSWQsIHNpemUpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgc2l6ZSA9IHNlY3Rpb25zW3NlY3Rpb25JZF1bMF0uc2l6ZTtcbiAgICB9XG4gICAgY29uc3QgY2h1bmtTaXplID0gZmRGcm9tLnBhZ2VTaXplO1xuICAgIGF3YWl0IHN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgY29uc3QgbCA9IE1hdGgubWluKHNpemUgLXAsIGNodW5rU2l6ZSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChsKTtcbiAgICAgICAgYXdhaXQgZmRUby53cml0ZShidWZmKTtcbiAgICB9XG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuICAgIGF3YWl0IGVuZFJlYWRTZWN0aW9uKGZkRnJvbSwgc2l6ZSAhPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnNpemUpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIGlkU2VjdGlvbiwgb2Zmc2V0LCBsZW5ndGgpIHtcblxuICAgIG9mZnNldCA9ICh0eXBlb2Ygb2Zmc2V0ID09PSBcInVuZGVmaW5lZFwiKSA/IDAgOiBvZmZzZXQ7XG4gICAgbGVuZ3RoID0gKHR5cGVvZiBsZW5ndGggPT09IFwidW5kZWZpbmVkXCIpID8gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC0gb2Zmc2V0IDogbGVuZ3RoO1xuXG4gICAgaWYgKG9mZnNldCArIGxlbmd0aCA+IHNlY3Rpb25zW2lkU2VjdGlvbl1bMF0uc2l6ZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkaW5nIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdGhlIHNlY3Rpb25cIik7XG4gICAgfVxuXG4gICAgbGV0IGJ1ZmY7XG4gICAgaWYgKGxlbmd0aCA8ICgxIDw8IDMwKSApIHtcbiAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuZ3RoKTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZiwgMCwgbGVuZ3RoLCBzZWN0aW9uc1tpZFNlY3Rpb25dWzBdLnAgKyBvZmZzZXQpO1xuICAgIHJldHVybiBidWZmO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VjdGlvbklzRXF1YWwoZmQxLCBzZWN0aW9uczEsIGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pIHtcbiAgICBjb25zdCBNQVhfQlVGRl9TSVpFID0gZmQxLnBhZ2VTaXplICogMTY7XG4gICAgYXdhaXQgc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDEsIHNlY3Rpb25zMSwgaWRTZWN0aW9uKTtcbiAgICBhd2FpdCBzdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMiwgc2VjdGlvbnMyLCBpZFNlY3Rpb24pO1xuICAgIGlmIChzZWN0aW9uczFbaWRTZWN0aW9uXVswXS5zaXplICE9IHNlY3Rpb25zMltpZFNlY3Rpb25dWzBdLnNpemUpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCB0b3RhbEJ5dGVzPXNlY3Rpb25zMVtpZFNlY3Rpb25dWzBdLnNpemU7XG4gICAgZm9yIChsZXQgaT0wOyBpPHRvdGFsQnl0ZXM7IGkrPSBNQVhfQlVGRl9TSVpFKSB7XG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih0b3RhbEJ5dGVzLWksIE1BWF9CVUZGX1NJWkUpO1xuICAgICAgICBjb25zdCBidWZmMSA9IGF3YWl0IGZkMS5yZWFkKG4pO1xuICAgICAgICBjb25zdCBidWZmMiA9IGF3YWl0IGZkMi5yZWFkKG4pO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8bjsgaisrKSBpZiAoYnVmZjFbal0gIT0gYnVmZjJbal0pIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgYXdhaXQgZW5kUmVhZFNlY3Rpb24oZmQxKTtcbiAgICBhd2FpdCBlbmRSZWFkU2VjdGlvbihmZDIpO1xuICAgIHJldHVybiB0cnVlO1xufVxuIiwiaW1wb3J0IHsgU2NhbGFyLCBidWlsZEJuMTI4LCBidWlsZEJsczEyMzgxfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IGJsczEyMzgxciA9IFNjYWxhci5lKFwiNzNlZGE3NTMyOTlkN2Q0ODMzMzlkODA4MDlhMWQ4MDU1M2JkYTQwMmZmZmU1YmZlZmZmZmZmZmYwMDAwMDAwMVwiLCAxNik7XG5jb25zdCBibjEyOHIgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBTY2FsYXIuZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNik7XG5jb25zdCBibjEyOHEgPSBTY2FsYXIuZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBvcHRpb25zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIC8vIGNoZWNrIHRoYXQgb3B0aW9ucyBwYXJhbSBpcyBkZWZpbmVkIGFuZCB0aGF0IG9wdGlvbnMuc2luZ2xlVGhyZWFkIGlzIGRlZmluZWRcbiAgICBsZXQgc2luZ2xlVGhyZWFkID0gb3B0aW9ucyAmJiBvcHRpb25zLnNpbmdsZVRocmVhZDtcbiAgICBpZiAoU2NhbGFyLmVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChTY2FsYXIuZXEociwgYmxzMTIzODFyKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7U2NhbGFyLnRvU3RyaW5nKHIpfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIG9wdGlvbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgbGV0IHNpbmdsZVRocmVhZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zaW5nbGVUaHJlYWQ7XG4gICAgaWYgKFNjYWxhci5lcShxLCBibjEyOHEpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSBpZiAoU2NhbGFyLmVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke1NjYWxhci50b1N0cmluZyhxKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tTmFtZShuYW1lLCBvcHRpb25zKSB7XG4gICAgbGV0IGN1cnZlO1xuICAgIGxldCBzaW5nbGVUaHJlYWQgPSBvcHRpb25zICYmIG9wdGlvbnMuc2luZ2xlVGhyZWFkO1xuICAgIGNvbnN0IG5vcm1OYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICBpZiAoW1wiQk4xMjhcIiwgXCJCTjI1NFwiLCBcIkFMVEJOMTI4XCJdLmluZGV4T2Yobm9ybU5hbWUpID49IDApIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChbXCJCTFMxMjM4MVwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHtuYW1lfWApO1xuICAgIH1cbiAgICByZXR1cm4gY3VydmU7XG5cbiAgICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG4pIHtcbiAgICAgICAgcmV0dXJuIG4udG9VcHBlckNhc2UoKS5tYXRjaCgvW0EtWmEtejAtOV0rL2cpLmpvaW4oXCJcIik7XG4gICAgfVxuXG59XG5cbiIsIm1vZHVsZS5leHBvcnRzID0gYXNzZXJ0XG5cbmNsYXNzIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige31cbkFzc2VydGlvbkVycm9yLnByb3RvdHlwZS5uYW1lID0gJ0Fzc2VydGlvbkVycm9yJ1xuXG4vKipcbiAqIE1pbmltYWwgYXNzZXJ0IGZ1bmN0aW9uXG4gKiBAcGFyYW0gIHthbnl9IHQgVmFsdWUgdG8gY2hlY2sgaWYgZmFsc3lcbiAqIEBwYXJhbSAge3N0cmluZz19IG0gT3B0aW9uYWwgYXNzZXJ0aW9uIGVycm9yIG1lc3NhZ2VcbiAqIEB0aHJvd3Mge0Fzc2VydGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBhc3NlcnQgKHQsIG0pIHtcbiAgaWYgKCF0KSB7XG4gICAgdmFyIGVyciA9IG5ldyBBc3NlcnRpb25FcnJvcihtKVxuICAgIGlmIChFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyLCBhc3NlcnQpXG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLmxlbmd0aFxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZmZlcltpXSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYnVmZmVyW29mZnNldCArIGldID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiY29uc3QgYWxwaGFiZXQgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcblxuY29uc3QgY29kZXMgPSBuZXcgVWludDhBcnJheSgyNTYpXG5cbmZvciAobGV0IGkgPSAwOyBpIDwgYWxwaGFiZXQubGVuZ3RoOyBpKyspIHtcbiAgY29kZXNbYWxwaGFiZXQuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbmNvZGVzWy8qIC0gKi8gMHgyZF0gPSA2MlxuY29kZXNbLyogXyAqLyAweDVmXSA9IDYzXG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICBsZXQgbGVuID0gc3RyaW5nLmxlbmd0aFxuXG4gIGlmIChzdHJpbmcuY2hhckNvZGVBdChsZW4gLSAxKSA9PT0gMHgzZCkgbGVuLS1cbiAgaWYgKGxlbiA+IDEgJiYgc3RyaW5nLmNoYXJDb2RlQXQobGVuIC0gMSkgPT09IDB4M2QpIGxlbi0tXG5cbiAgcmV0dXJuIChsZW4gKiAzKSA+Pj4gMlxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gMykge1xuICAgIHJlc3VsdCArPSAoXG4gICAgICBhbHBoYWJldFtidWZmZXJbaV0gPj4gMl0gK1xuICAgICAgYWxwaGFiZXRbKChidWZmZXJbaV0gJiAzKSA8PCA0KSB8IChidWZmZXJbaSArIDFdID4+IDQpXSArXG4gICAgICBhbHBoYWJldFsoKGJ1ZmZlcltpICsgMV0gJiAxNSkgPDwgMikgfCAoYnVmZmVyW2kgKyAyXSA+PiA2KV0gK1xuICAgICAgYWxwaGFiZXRbYnVmZmVyW2kgKyAyXSAmIDYzXVxuICAgIClcbiAgfVxuXG4gIGlmIChsZW4gJSAzID09PSAyKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gMSkgKyAnPSdcbiAgfSBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LnN1YnN0cmluZygwLCByZXN1bHQubGVuZ3RoIC0gMikgKyAnPT0nXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59O1xuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwLCBqID0gMDsgaiA8IGxlbjsgaSArPSA0KSB7XG4gICAgY29uc3QgYSA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkpXVxuICAgIGNvbnN0IGIgPSBjb2Rlc1tzdHJpbmcuY2hhckNvZGVBdChpICsgMSldXG4gICAgY29uc3QgYyA9IGNvZGVzW3N0cmluZy5jaGFyQ29kZUF0KGkgKyAyKV1cbiAgICBjb25zdCBkID0gY29kZXNbc3RyaW5nLmNoYXJDb2RlQXQoaSArIDMpXVxuXG4gICAgYnVmZmVyW2orK10gPSAoYSA8PCAyKSB8IChiID4+IDQpXG4gICAgYnVmZmVyW2orK10gPSAoKGIgJiAxNSkgPDwgNCkgfCAoYyA+PiAyKVxuICAgIGJ1ZmZlcltqKytdID0gKChjICYgMykgPDwgNikgfCAoZCAmIDYzKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiZnVuY3Rpb24gYnl0ZUxlbmd0aCAoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubGVuZ3RoID4+PiAxXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBidWZmZXIgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlciwgYnVmZmVyLmJ5dGVPZmZzZXQsIGxlbilcblxuICBsZXQgcmVzdWx0ID0gJydcbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIHJlc3VsdCArPSBidWZmZXIuZ2V0VWludDMyKGkpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCAnMCcpXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgcmVzdWx0ICs9IGJ1ZmZlci5nZXRVaW50OChpKS50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICBjb25zdCBsZW4gPSBNYXRoLm1pbihsZW5ndGgsIGJ1ZmZlci5ieXRlTGVuZ3RoIC0gb2Zmc2V0KVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBhID0gaGV4VmFsdWUoc3RyaW5nLmNoYXJDb2RlQXQoaSAqIDIpKVxuICAgIGNvbnN0IGIgPSBoZXhWYWx1ZShzdHJpbmcuY2hhckNvZGVBdChpICogMiArIDEpKVxuXG4gICAgaWYgKGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBidWZmZXIuc3ViYXJyYXkoMCwgaSlcbiAgICB9XG5cbiAgICBidWZmZXJbb2Zmc2V0ICsgaV0gPSAoYSA8PCA0KSB8IGJcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuXG5mdW5jdGlvbiBoZXhWYWx1ZSAoY2hhcikge1xuICBpZiAoY2hhciA+PSAweDMwICYmIGNoYXIgPD0gMHgzOSkgcmV0dXJuIGNoYXIgLSAweDMwXG4gIGlmIChjaGFyID49IDB4NDEgJiYgY2hhciA8PSAweDQ2KSByZXR1cm4gY2hhciAtIDB4NDEgKyAxMFxuICBpZiAoY2hhciA+PSAweDYxICYmIGNoYXIgPD0gMHg2NikgcmV0dXJuIGNoYXIgLSAweDYxICsgMTBcbn1cbiIsImZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZykge1xuICBsZXQgbGVuZ3RoID0gMFxuXG4gIGZvciAobGV0IGkgPSAwLCBuID0gc3RyaW5nLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgIGNvbnN0IGNvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgaWYgKGNvZGUgPj0gMHhkODAwICYmIGNvZGUgPD0gMHhkYmZmICYmIGkgKyAxIDwgbikge1xuICAgICAgY29uc3QgY29kZSA9IHN0cmluZy5jaGFyQ29kZUF0KGkgKyAxKVxuXG4gICAgICBpZiAoY29kZSA+PSAweGRjMDAgJiYgY29kZSA8PSAweGRmZmYpIHtcbiAgICAgICAgbGVuZ3RoICs9IDRcbiAgICAgICAgaSsrXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPD0gMHg3ZikgbGVuZ3RoICs9IDFcbiAgICBlbHNlIGlmIChjb2RlIDw9IDB4N2ZmKSBsZW5ndGggKz0gMlxuICAgIGVsc2UgbGVuZ3RoICs9IDNcbiAgfVxuXG4gIHJldHVybiBsZW5ndGhcbn1cblxubGV0IHRvU3RyaW5nXG5cbmlmICh0eXBlb2YgVGV4dERlY29kZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuXG4gIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICAgIHJldHVybiBkZWNvZGVyLmRlY29kZShidWZmZXIpXG4gIH1cbn0gZWxzZSB7XG4gIHRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKGJ1ZmZlcikge1xuICAgIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgICBsZXQgb3V0cHV0ID0gJydcbiAgICBsZXQgaSA9IDBcblxuICAgIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgICBsZXQgYnl0ZSA9IGJ1ZmZlcltpXVxuXG4gICAgICBpZiAoYnl0ZSA8PSAweDdmKSB7XG4gICAgICAgIG91dHB1dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGUpXG4gICAgICAgIGkrK1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBsZXQgYnl0ZXNOZWVkZWQgPSAwXG4gICAgICBsZXQgY29kZVBvaW50ID0gMFxuXG4gICAgICBpZiAoYnl0ZSA8PSAweGRmKSB7XG4gICAgICAgIGJ5dGVzTmVlZGVkID0gMVxuICAgICAgICBjb2RlUG9pbnQgPSBieXRlICYgMHgxZlxuICAgICAgfSBlbHNlIGlmIChieXRlIDw9IDB4ZWYpIHtcbiAgICAgICAgYnl0ZXNOZWVkZWQgPSAyXG4gICAgICAgIGNvZGVQb2ludCA9IGJ5dGUgJiAweDBmXG4gICAgICB9IGVsc2UgaWYgKGJ5dGUgPD0gMHhmNCkge1xuICAgICAgICBieXRlc05lZWRlZCA9IDNcbiAgICAgICAgY29kZVBvaW50ID0gYnl0ZSAmIDB4MDdcbiAgICAgIH1cblxuICAgICAgaWYgKGxlbiAtIGkgLSBieXRlc05lZWRlZCA+IDApIHtcbiAgICAgICAgbGV0IGsgPSAwXG5cbiAgICAgICAgd2hpbGUgKGsgPCBieXRlc05lZWRlZCkge1xuICAgICAgICAgIGJ5dGUgPSBidWZmZXJbaSArIGsgKyAxXVxuICAgICAgICAgIGNvZGVQb2ludCA9IChjb2RlUG9pbnQgPDwgNikgfCAoYnl0ZSAmIDB4M2YpXG4gICAgICAgICAgayArPSAxXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvZGVQb2ludCA9IDB4ZmZmZFxuICAgICAgICBieXRlc05lZWRlZCA9IGxlbiAtIGlcbiAgICAgIH1cblxuICAgICAgb3V0cHV0ICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNvZGVQb2ludClcbiAgICAgIGkgKz0gYnl0ZXNOZWVkZWQgKyAxXG4gICAgfVxuXG4gICAgcmV0dXJuIG91dHB1dFxuICB9XG59XG5cbmxldCB3cml0ZVxuXG5pZiAodHlwZW9mIFRleHRFbmNvZGVyICE9PSAndW5kZWZpbmVkJykge1xuICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcblxuICB3cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChidWZmZXIsIHN0cmluZywgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcpKSB7XG4gICAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcbiAgICBlbmNvZGVyLmVuY29kZUludG8oc3RyaW5nLCBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pKVxuICAgIHJldHVybiBsZW5cbiAgfVxufSBlbHNlIHtcbiAgd3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCA9IDAsIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nKSkge1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGxlbmd0aCwgYnVmZmVyLmJ5dGVMZW5ndGggLSBvZmZzZXQpXG5cbiAgICBidWZmZXIgPSBidWZmZXIuc3ViYXJyYXkob2Zmc2V0LCBvZmZzZXQgKyBsZW4pXG5cbiAgICBsZXQgaSA9IDBcbiAgICBsZXQgaiA9IDBcblxuICAgIHdoaWxlIChpIDwgc3RyaW5nLmxlbmd0aCkge1xuICAgICAgY29uc3QgY29kZSA9IHN0cmluZy5jb2RlUG9pbnRBdChpKVxuXG4gICAgICBpZiAoY29kZSA8PSAweDdmKSB7XG4gICAgICAgIGJ1ZmZlcltqKytdID0gY29kZVxuICAgICAgICBpKytcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgbGV0IGNvdW50ID0gMFxuICAgICAgbGV0IGJpdHMgPSAwXG5cbiAgICAgIGlmIChjb2RlIDw9IDB4N2ZmKSB7XG4gICAgICAgIGNvdW50ID0gNlxuICAgICAgICBiaXRzID0gMHhjMFxuICAgICAgfSBlbHNlIGlmIChjb2RlIDw9IDB4ZmZmZikge1xuICAgICAgICBjb3VudCA9IDEyXG4gICAgICAgIGJpdHMgPSAweGUwXG4gICAgICB9IGVsc2UgaWYgKGNvZGUgPD0gMHgxZmZmZmYpIHtcbiAgICAgICAgY291bnQgPSAxOFxuICAgICAgICBiaXRzID0gMHhmMFxuICAgICAgfVxuXG4gICAgICBidWZmZXJbaisrXSA9IGJpdHMgfCAoY29kZSA+PiBjb3VudClcbiAgICAgIGNvdW50IC09IDZcblxuICAgICAgd2hpbGUgKGNvdW50ID49IDApIHtcbiAgICAgICAgYnVmZmVyW2orK10gPSAweDgwIHwgKChjb2RlID4+IGNvdW50KSAmIDB4M2YpXG4gICAgICAgIGNvdW50IC09IDZcbiAgICAgIH1cblxuICAgICAgaSArPSBjb2RlID49IDB4MTAwMDAgPyAyIDogMVxuICAgIH1cblxuICAgIHJldHVybiBsZW5cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnl0ZUxlbmd0aCxcbiAgdG9TdHJpbmcsXG4gIHdyaXRlXG59XG4iLCJmdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5sZW5ndGggKiAyXG59XG5cbmZ1bmN0aW9uIHRvU3RyaW5nIChidWZmZXIpIHtcbiAgY29uc3QgbGVuID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICBsZXQgcmVzdWx0ID0gJydcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbiAtIDE7IGkgKz0gMikge1xuICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZmZlcltpXSArIChidWZmZXJbaSArIDFdICogMjU2KSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gd3JpdGUgKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQgPSAwLCBsZW5ndGggPSBieXRlTGVuZ3RoKHN0cmluZykpIHtcbiAgY29uc3QgbGVuID0gTWF0aC5taW4obGVuZ3RoLCBidWZmZXIuYnl0ZUxlbmd0aCAtIG9mZnNldClcblxuICBsZXQgdW5pdHMgPSBsZW5cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgY29uc3QgYyA9IHN0cmluZy5jaGFyQ29kZUF0KGkpXG4gICAgY29uc3QgaGkgPSBjID4+IDhcbiAgICBjb25zdCBsbyA9IGMgJSAyNTZcblxuICAgIGJ1ZmZlcltvZmZzZXQgKyBpICogMl0gPSBsb1xuICAgIGJ1ZmZlcltvZmZzZXQgKyBpICogMiArIDFdID0gaGlcbiAgfVxuXG4gIHJldHVybiBsZW5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJ5dGVMZW5ndGgsXG4gIHRvU3RyaW5nLFxuICB3cml0ZVxufVxuIiwiY29uc3QgYXNjaWkgPSByZXF1aXJlKCcuL2xpYi9hc2NpaScpXG5jb25zdCBiYXNlNjQgPSByZXF1aXJlKCcuL2xpYi9iYXNlNjQnKVxuY29uc3QgaGV4ID0gcmVxdWlyZSgnLi9saWIvaGV4JylcbmNvbnN0IHV0ZjggPSByZXF1aXJlKCcuL2xpYi91dGY4JylcbmNvbnN0IHV0ZjE2bGUgPSByZXF1aXJlKCcuL2xpYi91dGYxNmxlJylcblxuY29uc3QgTEUgPSBuZXcgVWludDhBcnJheShVaW50MTZBcnJheS5vZigweGZmKS5idWZmZXIpWzBdID09PSAweGZmXG5cbmZ1bmN0aW9uIGNvZGVjRm9yIChlbmNvZGluZykge1xuICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgY2FzZSAnYXNjaWknOlxuICAgICAgcmV0dXJuIGFzY2lpXG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHJldHVybiBiYXNlNjRcbiAgICBjYXNlICdoZXgnOlxuICAgICAgcmV0dXJuIGhleFxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgIHJldHVybiB1dGY4XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB1dGYxNmxlXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBlbmNvZGluZzogJHtlbmNvZGluZ31gKVxuICB9XG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBVaW50OEFycmF5XG59XG5cbmZ1bmN0aW9uIGlzRW5jb2RpbmcgKGVuY29kaW5nKSB7XG4gIHRyeSB7XG4gICAgY29kZWNGb3IoZW5jb2RpbmcpXG4gICAgcmV0dXJuIHRydWVcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIGV4cG9ydHMuZmlsbChidWZmZXIsIGZpbGwsIDAsIGJ1ZmZlci5ieXRlTGVuZ3RoLCBlbmNvZGluZylcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmVTbG93IChzaXplKSB7XG4gIHJldHVybiBuZXcgVWludDhBcnJheShzaXplKVxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIHJldHVybiBjb2RlY0ZvcihlbmNvZGluZykuYnl0ZUxlbmd0aChzdHJpbmcpXG59XG5cbmZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgY29uc3QgbGVuID0gTWF0aC5taW4oYS5ieXRlTGVuZ3RoLCBiLmJ5dGVMZW5ndGgpXG5cbiAgYSA9IG5ldyBEYXRhVmlldyhhLmJ1ZmZlciwgYS5ieXRlT2Zmc2V0LCBhLmJ5dGVMZW5ndGgpXG4gIGIgPSBuZXcgRGF0YVZpZXcoYi5idWZmZXIsIGIuYnl0ZU9mZnNldCwgYi5ieXRlTGVuZ3RoKVxuXG4gIGxldCBpID0gMFxuXG4gIGZvciAobGV0IG4gPSBsZW4gLSAobGVuICUgNCk7IGkgPCBuOyBpICs9IDQpIHtcbiAgICBjb25zdCB4ID0gYS5nZXRVaW50MzIoaSwgTEUpXG4gICAgY29uc3QgeSA9IGIuZ2V0VWludDMyKGksIExFKVxuICAgIGlmICh4ICE9PSB5KSBicmVha1xuICB9XG5cbiAgZm9yICg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHggPSBhLmdldFVpbnQ4KGkpXG4gICAgY29uc3QgeSA9IGIuZ2V0VWludDgoaSlcbiAgICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICAgIGlmICh4ID4geSkgcmV0dXJuIDFcbiAgfVxuXG4gIHJldHVybiBhLmJ5dGVMZW5ndGggPiBiLmJ5dGVMZW5ndGggPyAxIDogYS5ieXRlTGVuZ3RoIDwgYi5ieXRlTGVuZ3RoID8gLTEgOiAwXG59XG5cbmZ1bmN0aW9uIGNvbmNhdCAoYnVmZmVycywgdG90YWxMZW5ndGgpIHtcbiAgaWYgKHRvdGFsTGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICB0b3RhbExlbmd0aCA9IGJ1ZmZlcnMucmVkdWNlKChsZW4sIGJ1ZmZlcikgPT4gbGVuICsgYnVmZmVyLmJ5dGVMZW5ndGgsIDApXG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBuZXcgVWludDhBcnJheSh0b3RhbExlbmd0aClcblxuICBsZXQgb2Zmc2V0ID0gMFxuICBmb3IgKGNvbnN0IGJ1ZmZlciBvZiBidWZmZXJzKSB7XG4gICAgaWYgKG9mZnNldCArIGJ1ZmZlci5ieXRlTGVuZ3RoID4gcmVzdWx0LmJ5dGVMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN1YiA9IGJ1ZmZlci5zdWJhcnJheSgwLCByZXN1bHQuYnl0ZUxlbmd0aCAtIG9mZnNldClcbiAgICAgIHJlc3VsdC5zZXQoc3ViLCBvZmZzZXQpXG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfVxuICAgIHJlc3VsdC5zZXQoYnVmZmVyLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGNvcHkgKHNvdXJjZSwgdGFyZ2V0LCB0YXJnZXRTdGFydCA9IDAsIHN0YXJ0ID0gMCwgZW5kID0gc291cmNlLmJ5dGVMZW5ndGgpIHtcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIHJldHVybiAwXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAoc291cmNlLmJ5dGVMZW5ndGggPT09IDAgfHwgdGFyZ2V0LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IGlzIG91dCBvZiByYW5nZScpXG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gc291cmNlLmJ5dGVMZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBpcyBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBpcyBvdXQgb2YgcmFuZ2UnKVxuXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQuYnl0ZUxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQuYnl0ZUxlbmd0aFxuICBpZiAoZW5kID4gc291cmNlLmJ5dGVMZW5ndGgpIGVuZCA9IHNvdXJjZS5ieXRlTGVuZ3RoXG4gIGlmICh0YXJnZXQuYnl0ZUxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgY29uc3QgbGVuID0gZW5kIC0gc3RhcnRcblxuICBpZiAoc291cmNlID09PSB0YXJnZXQpIHtcbiAgICB0YXJnZXQuY29weVdpdGhpbih0YXJnZXRTdGFydCwgc3RhcnQsIGVuZClcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQuc2V0KHNvdXJjZS5zdWJhcnJheShzdGFydCwgZW5kKSwgdGFyZ2V0U3RhcnQpXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbmZ1bmN0aW9uIGVxdWFscyAoYSwgYikge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWVcbiAgaWYgKGEuYnl0ZUxlbmd0aCAhPT0gYi5ieXRlTGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBsZW4gPSBhLmJ5dGVMZW5ndGhcblxuICBhID0gbmV3IERhdGFWaWV3KGEuYnVmZmVyLCBhLmJ5dGVPZmZzZXQsIGEuYnl0ZUxlbmd0aClcbiAgYiA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpXG5cbiAgbGV0IGkgPSAwXG5cbiAgZm9yIChsZXQgbiA9IGxlbiAtIChsZW4gJSA0KTsgaSA8IG47IGkgKz0gNCkge1xuICAgIGlmIChhLmdldFVpbnQzMihpLCBMRSkgIT09IGIuZ2V0VWludDMyKGksIExFKSkgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmb3IgKDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGEuZ2V0VWludDgoaSkgIT09IGIuZ2V0VWludDgoaSkpIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZmlsbCAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBlbmQsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZmlsbChidWZmZXIsIHN0cmluZywgZW5jb2RpbmcpXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgICAgb2Zmc2V0ID0gMFxuICAgICAgZW5kID0gYnVmZmVyLmJ5dGVMZW5ndGhcblxuICAgIC8vIGZpbGwoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZW5kID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBlbmRcbiAgICAgIGVuZCA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgfVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB2YWx1ZSA9IHZhbHVlICYgMHhmZlxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgdmFsdWUgPSArdmFsdWVcbiAgfVxuXG4gIGlmIChvZmZzZXQgPCAwIHx8IGJ1ZmZlci5ieXRlTGVuZ3RoIDwgb2Zmc2V0IHx8IGJ1ZmZlci5ieXRlTGVuZ3RoIDwgZW5kKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ091dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChlbmQgPD0gb2Zmc2V0KSByZXR1cm4gYnVmZmVyXG5cbiAgaWYgKCF2YWx1ZSkgdmFsdWUgPSAwXG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGxldCBpID0gb2Zmc2V0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIGJ1ZmZlcltpXSA9IHZhbHVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gaXNCdWZmZXIodmFsdWUpID8gdmFsdWUgOiBmcm9tKHZhbHVlLCBlbmNvZGluZylcblxuICAgIGNvbnN0IGxlbiA9IHZhbHVlLmJ5dGVMZW5ndGhcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZW5kIC0gb2Zmc2V0OyArK2kpIHtcbiAgICAgIGJ1ZmZlcltpICsgb2Zmc2V0XSA9IHZhbHVlW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIC8vIGZyb20oc3RyaW5nLCBlbmNvZGluZylcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHJldHVybiBmcm9tU3RyaW5nKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuXG4gIC8vIGZyb20oYXJyYXkpXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZyb21BcnJheSh2YWx1ZSlcblxuICAvLyBmcm9tKGJ1ZmZlcilcbiAgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh2YWx1ZSkpIHJldHVybiBmcm9tQnVmZmVyKHZhbHVlKVxuXG4gIC8vIGZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gIHJldHVybiBmcm9tQXJyYXlCdWZmZXIodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBjb25zdCBjb2RlYyA9IGNvZGVjRm9yKGVuY29kaW5nKVxuICBjb25zdCBidWZmZXIgPSBuZXcgVWludDhBcnJheShjb2RlYy5ieXRlTGVuZ3RoKHN0cmluZykpXG4gIGNvZGVjLndyaXRlKGJ1ZmZlciwgc3RyaW5nLCAwLCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXkgKGFycmF5KSB7XG4gIGNvbnN0IGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KGFycmF5Lmxlbmd0aClcbiAgYnVmZmVyLnNldChhcnJheSlcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBmcm9tQnVmZmVyIChidWZmZXIpIHtcbiAgY29uc3QgY29weSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlci5ieXRlTGVuZ3RoKVxuICBjb3B5LnNldChidWZmZXIpXG4gIHJldHVybiBjb3B5XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUJ1ZmZlciAoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIsIGJ5dGVPZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gaW5jbHVkZXMgKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBpbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuZnVuY3Rpb24gYmlkaXJlY3Rpb25hbEluZGV4T2YgKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmaXJzdCkge1xuICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgIGJ5dGVPZmZzZXQgPSBmaXJzdCA/IDAgOiAoYnVmZmVyLmxlbmd0aCAtIDEpXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBieXRlT2Zmc2V0ICs9IGJ1ZmZlci5ieXRlTGVuZ3RoXG4gIH1cblxuICBpZiAoYnl0ZU9mZnNldCA+PSBidWZmZXIuYnl0ZUxlbmd0aCkge1xuICAgIGlmIChmaXJzdCkgcmV0dXJuIC0xXG4gICAgZWxzZSBieXRlT2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZmlyc3QpIGJ5dGVPZmZzZXQgPSAwXG4gICAgZWxzZSByZXR1cm4gLTFcbiAgfVxuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBmcm9tKHZhbHVlLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdmFsdWUgPSB2YWx1ZSAmIDB4ZmZcblxuICAgIGlmIChmaXJzdCkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5pbmRleE9mKHZhbHVlLCBieXRlT2Zmc2V0KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmZmVyLmxhc3RJbmRleE9mKHZhbHVlLCBieXRlT2Zmc2V0KVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZS5ieXRlTGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICBpZiAoZmlyc3QpIHtcbiAgICBsZXQgZm91bmRJbmRleCA9IC0xXG5cbiAgICBmb3IgKGxldCBpID0gYnl0ZU9mZnNldDsgaSA8IGJ1ZmZlci5ieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChidWZmZXJbaV0gPT09IHZhbHVlW2ZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4XSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbHVlLmJ5dGVMZW5ndGgpIHJldHVybiBmb3VuZEluZGV4XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZm91bmRJbmRleCAhPT0gLTEpIGkgLT0gaSAtIGZvdW5kSW5kZXhcbiAgICAgICAgZm91bmRJbmRleCA9IC0xXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChieXRlT2Zmc2V0ICsgdmFsdWUuYnl0ZUxlbmd0aCA+IGJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICBieXRlT2Zmc2V0ID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB2YWx1ZS5ieXRlTGVuZ3RoXG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBsZXQgZm91bmQgPSB0cnVlXG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmFsdWUuYnl0ZUxlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChidWZmZXJbaSArIGpdICE9PSB2YWx1ZVtqXSkge1xuICAgICAgICAgIGZvdW5kID0gZmFsc2VcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuZnVuY3Rpb24gaW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCB0cnVlIC8qIGZpcnN0ICovKVxufVxuXG5mdW5jdGlvbiBsYXN0SW5kZXhPZiAoYnVmZmVyLCB2YWx1ZSwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKGJ1ZmZlciwgdmFsdWUsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSAvKiBsYXN0ICovKVxufVxuXG5mdW5jdGlvbiBzd2FwIChidWZmZXIsIG4sIG0pIHtcbiAgY29uc3QgaSA9IGJ1ZmZlcltuXVxuICBidWZmZXJbbl0gPSBidWZmZXJbbV1cbiAgYnVmZmVyW21dID0gaVxufVxuXG5mdW5jdGlvbiBzd2FwMTYgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChsZW4gJSAyICE9PSAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHN3YXAoYnVmZmVyLCBpLCBpICsgMSlcblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHN3YXAzMiAoYnVmZmVyKSB7XG4gIGNvbnN0IGxlbiA9IGJ1ZmZlci5ieXRlTGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgIT09IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAoYnVmZmVyLCBpLCBpICsgMylcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDEsIGkgKyAyKVxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBzd2FwNjQgKGJ1ZmZlcikge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKGJ1ZmZlciwgaSwgaSArIDcpXG4gICAgc3dhcChidWZmZXIsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKGJ1ZmZlciwgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAoYnVmZmVyLCBpICsgMywgaSArIDQpXG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyIChidWZmZXIpIHtcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiB0b1N0cmluZyAoYnVmZmVyLCBlbmNvZGluZywgc3RhcnQgPSAwLCBlbmQgPSBidWZmZXIuYnl0ZUxlbmd0aCkge1xuICBjb25zdCBsZW4gPSBidWZmZXIuYnl0ZUxlbmd0aFxuXG4gIGlmIChzdGFydCA+PSBsZW4pIHJldHVybiAnJ1xuICBpZiAoZW5kIDw9IHN0YXJ0KSByZXR1cm4gJydcbiAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIGlmIChlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIGlmIChzdGFydCAhPT0gMCB8fCBlbmQgPCBsZW4pIGJ1ZmZlciA9IGJ1ZmZlci5zdWJhcnJheShzdGFydCwgZW5kKVxuXG4gIHJldHVybiBjb2RlY0ZvcihlbmNvZGluZykudG9TdHJpbmcoYnVmZmVyKVxufVxuXG5mdW5jdGlvbiB3cml0ZSAoYnVmZmVyLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyB3cml0ZShidWZmZXIsIHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcblxuICAvLyB3cml0ZShidWZmZXIsIHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIG9mZnNldCA9IHVuZGVmaW5lZFxuXG4gIC8vIHdyaXRlKGJ1ZmZlciwgc3RyaW5nLCBvZmZzZXQsIGVuY29kaW5nKVxuICB9IGVsc2UgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIGxlbmd0aCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcmV0dXJuIGNvZGVjRm9yKGVuY29kaW5nKS53cml0ZShidWZmZXIsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRGbG9hdDY0KG9mZnNldCwgdmFsdWUsIHRydWUpXG5cbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdExFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG4gIHZpZXcuc2V0RmxvYXQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRVaW50MzIob2Zmc2V0LCB2YWx1ZSwgdHJ1ZSlcblxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiB3cml0ZUludDMyTEUgKGJ1ZmZlciwgdmFsdWUsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcbiAgdmlldy5zZXRJbnQzMihvZmZzZXQsIHZhbHVlLCB0cnVlKVxuXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIHJlYWREb3VibGVMRSAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZpZXcuZ2V0RmxvYXQ2NChvZmZzZXQsIHRydWUpXG59XG5cbmZ1bmN0aW9uIHJlYWRGbG9hdExFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRGbG9hdDMyKG9mZnNldCwgdHJ1ZSlcbn1cblxuZnVuY3Rpb24gcmVhZFVJbnQzMkxFIChidWZmZXIsIG9mZnNldCkge1xuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDBcblxuICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIsIGJ1ZmZlci5ieXRlT2Zmc2V0LCBidWZmZXIuYnl0ZUxlbmd0aClcblxuICByZXR1cm4gdmlldy5nZXRVaW50MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5mdW5jdGlvbiByZWFkSW50MzJMRSAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSBvZmZzZXQgPSAwXG5cbiAgY29uc3QgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyLCBidWZmZXIuYnl0ZU9mZnNldCwgYnVmZmVyLmJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZpZXcuZ2V0SW50MzIob2Zmc2V0LCB0cnVlKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSB7XG4gIGlzQnVmZmVyLFxuICBpc0VuY29kaW5nLFxuICBhbGxvYyxcbiAgYWxsb2NVbnNhZmUsXG4gIGFsbG9jVW5zYWZlU2xvdyxcbiAgYnl0ZUxlbmd0aCxcbiAgY29tcGFyZSxcbiAgY29uY2F0LFxuICBjb3B5LFxuICBlcXVhbHMsXG4gIGZpbGwsXG4gIGZyb20sXG4gIGluY2x1ZGVzLFxuICBpbmRleE9mLFxuICBsYXN0SW5kZXhPZixcbiAgc3dhcDE2LFxuICBzd2FwMzIsXG4gIHN3YXA2NCxcbiAgdG9CdWZmZXIsXG4gIHRvU3RyaW5nLFxuICB3cml0ZSxcbiAgd3JpdGVEb3VibGVMRSxcbiAgd3JpdGVGbG9hdExFLFxuICB3cml0ZVVJbnQzMkxFLFxuICB3cml0ZUludDMyTEUsXG4gIHJlYWREb3VibGVMRSxcbiAgcmVhZEZsb2F0TEUsXG4gIHJlYWRVSW50MzJMRSxcbiAgcmVhZEludDMyTEVcbn1cbiIsInZhciBfX2NvbW1vbkpTID0gKGNiLCBtb2QpID0+IGZ1bmN0aW9uIF9fcmVxdWlyZSgpIHtcbiAgcmV0dXJuIG1vZCB8fCAoMCwgY2JbT2JqZWN0LmtleXMoY2IpWzBdXSkoKG1vZCA9IHsgZXhwb3J0czoge30gfSkuZXhwb3J0cywgbW9kKSwgbW9kLmV4cG9ydHM7XG59O1xudmFyIF9fdG9CaW5hcnkgPSAvKiBAX19QVVJFX18gKi8gKCgpID0+IHtcbiAgdmFyIHRhYmxlID0gbmV3IFVpbnQ4QXJyYXkoMTI4KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA2NDsgaSsrKVxuICAgIHRhYmxlW2kgPCAyNiA/IGkgKyA2NSA6IGkgPCA1MiA/IGkgKyA3MSA6IGkgPCA2MiA/IGkgLSA0IDogaSAqIDQgLSAyMDVdID0gaTtcbiAgcmV0dXJuIChiYXNlNjQpID0+IHtcbiAgICB2YXIgbiA9IGJhc2U2NC5sZW5ndGgsIGJ5dGVzMiA9IG5ldyBVaW50OEFycmF5KChuIC0gKGJhc2U2NFtuIC0gMV0gPT0gXCI9XCIpIC0gKGJhc2U2NFtuIC0gMl0gPT0gXCI9XCIpKSAqIDMgLyA0IHwgMCk7XG4gICAgZm9yICh2YXIgaTIgPSAwLCBqID0gMDsgaTIgPCBuOyApIHtcbiAgICAgIHZhciBjMCA9IHRhYmxlW2Jhc2U2NC5jaGFyQ29kZUF0KGkyKyspXSwgYzEgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV07XG4gICAgICB2YXIgYzIgPSB0YWJsZVtiYXNlNjQuY2hhckNvZGVBdChpMisrKV0sIGMzID0gdGFibGVbYmFzZTY0LmNoYXJDb2RlQXQoaTIrKyldO1xuICAgICAgYnl0ZXMyW2orK10gPSBjMCA8PCAyIHwgYzEgPj4gNDtcbiAgICAgIGJ5dGVzMltqKytdID0gYzEgPDwgNCB8IGMyID4+IDI7XG4gICAgICBieXRlczJbaisrXSA9IGMyIDw8IDYgfCBjMztcbiAgICB9XG4gICAgcmV0dXJuIGJ5dGVzMjtcbiAgfTtcbn0pKCk7XG5cbi8vIHdhc20tYmluYXJ5Oi4vYmxha2UyYi53YXRcbnZhciByZXF1aXJlX2JsYWtlMmIgPSBfX2NvbW1vbkpTKHtcbiAgXCJ3YXNtLWJpbmFyeTouL2JsYWtlMmIud2F0XCIoZXhwb3J0czIsIG1vZHVsZTIpIHtcbiAgICBtb2R1bGUyLmV4cG9ydHMgPSBfX3RvQmluYXJ5KFwiQUdGemJRRUFBQUFCRUFOZ0FuOS9BR0FEZjM5L0FHQUJmd0FEQlFRQUFRSUNCUVVCQVFyb0J3ZE5CUVp0WlcxdmNua0NBQXhpYkdGclpUSmlYMmx1YVhRQUFBNWliR0ZyWlRKaVgzVndaR0YwWlFBQkRXSnNZV3RsTW1KZlptbHVZV3dBQWhCaWJHRnJaVEppWDJOdmJYQnlaWE56QUFNS3Z6OEV3QUlBSUFCQ0FEY0RBQ0FBUWdBM0F3Z2dBRUlBTndNUUlBQkNBRGNER0NBQVFnQTNBeUFnQUVJQU53TW9JQUJDQURjRE1DQUFRZ0EzQXpnZ0FFSUFOd05BSUFCQ0FEY0RTQ0FBUWdBM0ExQWdBRUlBTndOWUlBQkNBRGNEWUNBQVFnQTNBMmdnQUVJQU53TndJQUJDQURjRGVDQUFRb2lTODUzL3pQbUU2Z0JCQUNrREFJVTNBNEFCSUFCQ3U4NnFwdGpRNjdPN2YwRUlLUU1BaFRjRGlBRWdBRUtyOE5QMHIrNjh0enhCRUNrREFJVTNBNUFCSUFCQzhlMzArS1duL2FlbGYwRVlLUU1BaFRjRG1BRWdBRUxSaFpyditzK1VoOUVBUVNBcEF3Q0ZOd09nQVNBQVFwL1krZG5Da2RxQ20zOUJLQ2tEQUlVM0E2Z0JJQUJDNi9xRzJyKzE5c0VmUVRBcEF3Q0ZOd093QVNBQVF2bkMrSnVSbzdQdzJ3QkJPQ2tEQUlVM0E3Z0JJQUJDQURjRHdBRWdBRUlBTndQSUFTQUFRZ0EzQTlBQkMyMEJBMzhnQUVIQUFXb2hBeUFBUWNnQmFpRUVJQVFwQXdDbklRVUNRQU5BSUFFZ0FrWU5BU0FGUVlBQlJnUkFJQU1nQXlrREFDQUZyWHczQXdCQkFDRUZJQUFRQXdzZ0FDQUZhaUFCTFFBQU9nQUFJQVZCQVdvaEJTQUJRUUZxSVFFTUFBc0xJQVFnQmEwM0F3QUxZUUVEZnlBQVFjQUJhaUVCSUFCQnlBRnFJUUlnQVNBQktRTUFJQUlwQXdCOE53TUFJQUJDZnpjRDBBRWdBaWtEQUtjaEF3SkFBMEFnQTBHQUFVWU5BU0FBSUFOcVFRQTZBQUFnQTBFQmFpRUREQUFMQ3lBQ0lBT3ROd01BSUFBUUF3dXFPd0lnZmdsL0lBQkJnQUZxSVNFZ0FFR0lBV29oSWlBQVFaQUJhaUVqSUFCQm1BRnFJU1FnQUVHZ0FXb2hKU0FBUWFnQmFpRW1JQUJCc0FGcUlTY2dBRUc0QVdvaEtDQWhLUU1BSVFFZ0lpa0RBQ0VDSUNNcEF3QWhBeUFrS1FNQUlRUWdKU2tEQUNFRklDWXBBd0FoQmlBbktRTUFJUWNnS0NrREFDRUlRb2lTODUzL3pQbUU2Z0FoQ1VLN3pxcW0yTkRyczd0L0lRcENxL0RUOUsvdXZMYzhJUXRDOGUzMCtLV24vYWVsZnlFTVF0R0ZtdS82ejVTSDBRQWhEVUtmMlBuWndwSGFncHQvSVE1QzYvcUcycisxOXNFZklROUMrY0w0bTVHanMvRGJBQ0VRSUFBcEF3QWhFU0FBS1FNSUlSSWdBQ2tERUNFVElBQXBBeGdoRkNBQUtRTWdJUlVnQUNrREtDRVdJQUFwQXpBaEZ5QUFLUU00SVJnZ0FDa0RRQ0VaSUFBcEEwZ2hHaUFBS1FOUUlSc2dBQ2tEV0NFY0lBQXBBMkFoSFNBQUtRTm9JUjRnQUNrRGNDRWZJQUFwQTNnaElDQU5JQUFwQThBQmhTRU5JQThnQUNrRDBBR0ZJUThnQVNBRklCRjhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQVNmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdFM3g4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQlI4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFWZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnRm54OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJkOGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBWWZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0dYeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCcDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QWJmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dISHg4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQjE4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FlZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSDN4OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUNCOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBZmZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0czeDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCVjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVpmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dHbng4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQ0I4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FlZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnRjN4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUJKOGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBZGZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0VYeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCTjhmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQWNmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dHSHg4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQlo4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FVZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnSEh4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUJsOGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBZGZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0VYeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCWjhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QVRmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dJSHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQjU4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFiZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSDN4OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJSOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBWGZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0dIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCSjhmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQWFmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdGWHg4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQmg4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FhZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnRkh4OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUJKOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBZWZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0hYeDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCeDhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQWZmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdFM3g4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQmQ4ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFXZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnRzN4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJWOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBUmZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0lIeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCbDhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWFmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdFWHg4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQlo4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFZZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnRTN4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJWOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBYmZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0lIeDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCOThmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQVNmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dISHg4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQjE4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FYZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnR1h4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUJSOGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBZWZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0UzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklCMThmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQVhmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHM3g4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQkY4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFjZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnR1h4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJSOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBVmZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0hueDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCaDhmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVdmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dJSHg4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQjk4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FTZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnR254OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUIxOGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBV2ZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0VueDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lDQjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QWZmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dIbng4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQlY4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FiZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnRVh4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUJoOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBWGZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0ZIeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCcDhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQVRmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdHWHg4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQng4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FlZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnSEh4OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJoOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBZmZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0hYeDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCSjhmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQVVmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dHbng4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQlo4ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFSZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnSUh4OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJWOGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBWmZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0YzeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklCTjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQWJmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdGM3g4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQ0I4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFmZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR254OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJ4OGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVWZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0VYeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlCbDhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWRmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdFM3g4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQjU4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFZZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnRW54OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJWOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBYmZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0ZueDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCdDhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQVRmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdHWHg4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQlY4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFZZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnRjN4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJKOGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBV2ZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0lIeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCeDhmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QWFmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dIM3g4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQlI4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FkZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnSG54OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJGOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBUmZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0VueDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCTjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQVVmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dGWHg4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQlo4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FYZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnR0h4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUJsOGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBYWZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0czeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCeDhmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQWRmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dIbng4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQjk4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FnZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnSDN4OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUJ0OGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBVmZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0dYeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCcDhmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QWdmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dIbng4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQmQ4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFTZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnSFh4OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUJGOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBVGZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0hIeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCaDhmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVdmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdGSHg4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0lTQWhLUU1BSUFFZ0NZV0ZOd01BSUNJZ0lpa0RBQ0FDSUFxRmhUY0RBQ0FqSUNNcEF3QWdBeUFMaFlVM0F3QWdKQ0FrS1FNQUlBUWdESVdGTndNQUlDVWdKU2tEQUNBRklBMkZoVGNEQUNBbUlDWXBBd0FnQmlBT2hZVTNBd0FnSnlBbktRTUFJQWNnRDRXRk53TUFJQ2dnS0NrREFDQUlJQkNGaFRjREFBcz1cIik7XG4gIH1cbn0pO1xuXG4vLyB3YXNtLW1vZHVsZTouL2JsYWtlMmIud2F0XG52YXIgYnl0ZXMgPSByZXF1aXJlX2JsYWtlMmIoKTtcbnZhciBjb21waWxlZCA9IFdlYkFzc2VtYmx5LmNvbXBpbGUoYnl0ZXMpO1xubW9kdWxlLmV4cG9ydHMgPSBhc3luYyAoaW1wb3J0cykgPT4ge1xuICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGF3YWl0IGNvbXBpbGVkLCBpbXBvcnRzKTtcbiAgcmV0dXJuIGluc3RhbmNlLmV4cG9ydHM7XG59O1xuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ25hbm9hc3NlcnQnKVxudmFyIGI0YSA9IHJlcXVpcmUoJ2I0YScpXG5cbnZhciB3YXNtID0gbnVsbFxudmFyIHdhc21Qcm9taXNlID0gdHlwZW9mIFdlYkFzc2VtYmx5ICE9PSBcInVuZGVmaW5lZFwiICYmIHJlcXVpcmUoJy4vYmxha2UyYicpKCkudGhlbihtb2QgPT4ge1xuICB3YXNtID0gbW9kXG59KVxuXG52YXIgaGVhZCA9IDY0XG52YXIgZnJlZUxpc3QgPSBbXVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJsYWtlMmJcbnZhciBCWVRFU19NSU4gPSBtb2R1bGUuZXhwb3J0cy5CWVRFU19NSU4gPSAxNlxudmFyIEJZVEVTX01BWCA9IG1vZHVsZS5leHBvcnRzLkJZVEVTX01BWCA9IDY0XG52YXIgQllURVMgPSBtb2R1bGUuZXhwb3J0cy5CWVRFUyA9IDMyXG52YXIgS0VZQllURVNfTUlOID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVNfTUlOID0gMTZcbnZhciBLRVlCWVRFU19NQVggPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFU19NQVggPSA2NFxudmFyIEtFWUJZVEVTID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVMgPSAzMlxudmFyIFNBTFRCWVRFUyA9IG1vZHVsZS5leHBvcnRzLlNBTFRCWVRFUyA9IDE2XG52YXIgUEVSU09OQUxCWVRFUyA9IG1vZHVsZS5leHBvcnRzLlBFUlNPTkFMQllURVMgPSAxNlxuXG5mdW5jdGlvbiBCbGFrZTJiIChkaWdlc3RMZW5ndGgsIGtleSwgc2FsdCwgcGVyc29uYWwsIG5vQXNzZXJ0KSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBCbGFrZTJiKSkgcmV0dXJuIG5ldyBCbGFrZTJiKGRpZ2VzdExlbmd0aCwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpXG4gIGlmICghd2FzbSkgdGhyb3cgbmV3IEVycm9yKCdXQVNNIG5vdCBsb2FkZWQuIFdhaXQgZm9yIEJsYWtlMmIucmVhZHkoY2IpJylcbiAgaWYgKCFkaWdlc3RMZW5ndGgpIGRpZ2VzdExlbmd0aCA9IDMyXG5cbiAgaWYgKG5vQXNzZXJ0ICE9PSB0cnVlKSB7XG4gICAgYXNzZXJ0KGRpZ2VzdExlbmd0aCA+PSBCWVRFU19NSU4sICdkaWdlc3RMZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAnICsgQllURVNfTUlOICsgJywgd2FzIGdpdmVuICcgKyBkaWdlc3RMZW5ndGgpXG4gICAgYXNzZXJ0KGRpZ2VzdExlbmd0aCA8PSBCWVRFU19NQVgsICdkaWdlc3RMZW5ndGggbXVzdCBiZSBhdCBtb3N0ICcgKyBCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGRpZ2VzdExlbmd0aClcbiAgICBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgIGFzc2VydChrZXkgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAna2V5IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICAgICAgYXNzZXJ0KGtleS5sZW5ndGggPj0gS0VZQllURVNfTUlOLCAna2V5IG11c3QgYmUgYXQgbGVhc3QgJyArIEtFWUJZVEVTX01JTiArICcsIHdhcyBnaXZlbiAnICsga2V5Lmxlbmd0aClcbiAgICAgIGFzc2VydChrZXkubGVuZ3RoIDw9IEtFWUJZVEVTX01BWCwgJ2tleSBtdXN0IGJlIGF0IGxlYXN0ICcgKyBLRVlCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgfVxuICAgIGlmIChzYWx0ICE9IG51bGwpIHtcbiAgICAgIGFzc2VydChzYWx0IGluc3RhbmNlb2YgVWludDhBcnJheSwgJ3NhbHQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG4gICAgICBhc3NlcnQoc2FsdC5sZW5ndGggPT09IFNBTFRCWVRFUywgJ3NhbHQgbXVzdCBiZSBleGFjdGx5ICcgKyBTQUxUQllURVMgKyAnLCB3YXMgZ2l2ZW4gJyArIHNhbHQubGVuZ3RoKVxuICAgIH1cbiAgICBpZiAocGVyc29uYWwgIT0gbnVsbCkge1xuICAgICAgYXNzZXJ0KHBlcnNvbmFsIGluc3RhbmNlb2YgVWludDhBcnJheSwgJ3BlcnNvbmFsIG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICAgICAgYXNzZXJ0KHBlcnNvbmFsLmxlbmd0aCA9PT0gUEVSU09OQUxCWVRFUywgJ3BlcnNvbmFsIG11c3QgYmUgZXhhY3RseSAnICsgUEVSU09OQUxCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgcGVyc29uYWwubGVuZ3RoKVxuICAgIH1cbiAgfVxuXG4gIGlmICghZnJlZUxpc3QubGVuZ3RoKSB7XG4gICAgZnJlZUxpc3QucHVzaChoZWFkKVxuICAgIGhlYWQgKz0gMjE2XG4gIH1cblxuICB0aGlzLmRpZ2VzdExlbmd0aCA9IGRpZ2VzdExlbmd0aFxuICB0aGlzLmZpbmFsaXplZCA9IGZhbHNlXG4gIHRoaXMucG9pbnRlciA9IGZyZWVMaXN0LnBvcCgpXG4gIHRoaXMuX21lbW9yeSA9IG5ldyBVaW50OEFycmF5KHdhc20ubWVtb3J5LmJ1ZmZlcilcblxuICB0aGlzLl9tZW1vcnkuZmlsbCgwLCAwLCA2NClcbiAgdGhpcy5fbWVtb3J5WzBdID0gdGhpcy5kaWdlc3RMZW5ndGhcbiAgdGhpcy5fbWVtb3J5WzFdID0ga2V5ID8ga2V5Lmxlbmd0aCA6IDBcbiAgdGhpcy5fbWVtb3J5WzJdID0gMSAvLyBmYW5vdXRcbiAgdGhpcy5fbWVtb3J5WzNdID0gMSAvLyBkZXB0aFxuXG4gIGlmIChzYWx0KSB0aGlzLl9tZW1vcnkuc2V0KHNhbHQsIDMyKVxuICBpZiAocGVyc29uYWwpIHRoaXMuX21lbW9yeS5zZXQocGVyc29uYWwsIDQ4KVxuXG4gIGlmICh0aGlzLnBvaW50ZXIgKyAyMTYgPiB0aGlzLl9tZW1vcnkubGVuZ3RoKSB0aGlzLl9yZWFsbG9jKHRoaXMucG9pbnRlciArIDIxNikgLy8gd2UgbmVlZCAyMTYgYnl0ZXMgZm9yIHRoZSBzdGF0ZVxuICB3YXNtLmJsYWtlMmJfaW5pdCh0aGlzLnBvaW50ZXIsIHRoaXMuZGlnZXN0TGVuZ3RoKVxuXG4gIGlmIChrZXkpIHtcbiAgICB0aGlzLnVwZGF0ZShrZXkpXG4gICAgdGhpcy5fbWVtb3J5LmZpbGwoMCwgaGVhZCwgaGVhZCArIGtleS5sZW5ndGgpIC8vIHdoaXRlb3V0IGtleVxuICAgIHRoaXMuX21lbW9yeVt0aGlzLnBvaW50ZXIgKyAyMDBdID0gMTI4XG4gIH1cbn1cblxuQmxha2UyYi5wcm90b3R5cGUuX3JlYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICB3YXNtLm1lbW9yeS5ncm93KE1hdGgubWF4KDAsIE1hdGguY2VpbChNYXRoLmFicyhzaXplIC0gdGhpcy5fbWVtb3J5Lmxlbmd0aCkgLyA2NTUzNikpKVxuICB0aGlzLl9tZW1vcnkgPSBuZXcgVWludDhBcnJheSh3YXNtLm1lbW9yeS5idWZmZXIpXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBhc3NlcnQodGhpcy5maW5hbGl6ZWQgPT09IGZhbHNlLCAnSGFzaCBpbnN0YW5jZSBmaW5hbGl6ZWQnKVxuICBhc3NlcnQoaW5wdXQgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnaW5wdXQgbXVzdCBiZSBVaW50OEFycmF5IG9yIEJ1ZmZlcicpXG5cbiAgaWYgKGhlYWQgKyBpbnB1dC5sZW5ndGggPiB0aGlzLl9tZW1vcnkubGVuZ3RoKSB0aGlzLl9yZWFsbG9jKGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHRoaXMuX21lbW9yeS5zZXQoaW5wdXQsIGhlYWQpXG4gIHdhc20uYmxha2UyYl91cGRhdGUodGhpcy5wb2ludGVyLCBoZWFkLCBoZWFkICsgaW5wdXQubGVuZ3RoKVxuICByZXR1cm4gdGhpc1xufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGFzc2VydCh0aGlzLmZpbmFsaXplZCA9PT0gZmFsc2UsICdIYXNoIGluc3RhbmNlIGZpbmFsaXplZCcpXG4gIHRoaXMuZmluYWxpemVkID0gdHJ1ZVxuXG4gIGZyZWVMaXN0LnB1c2godGhpcy5wb2ludGVyKVxuICB3YXNtLmJsYWtlMmJfZmluYWwodGhpcy5wb2ludGVyKVxuXG4gIGlmICghZW5jIHx8IGVuYyA9PT0gJ2JpbmFyeScpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIGVuYyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gYjRhLnRvU3RyaW5nKHRoaXMuX21lbW9yeSwgZW5jLCB0aGlzLnBvaW50ZXIgKyAxMjgsIHRoaXMucG9pbnRlciArIDEyOCArIHRoaXMuZGlnZXN0TGVuZ3RoKVxuICB9XG5cbiAgYXNzZXJ0KGVuYyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgZW5jLmxlbmd0aCA+PSB0aGlzLmRpZ2VzdExlbmd0aCwgJ2lucHV0IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGlnZXN0TGVuZ3RoOyBpKyspIHtcbiAgICBlbmNbaV0gPSB0aGlzLl9tZW1vcnlbdGhpcy5wb2ludGVyICsgMTI4ICsgaV1cbiAgfVxuXG4gIHJldHVybiBlbmNcbn1cblxuLy8gbGlic29kaXVtIGNvbXBhdFxuQmxha2UyYi5wcm90b3R5cGUuZmluYWwgPSBCbGFrZTJiLnByb3RvdHlwZS5kaWdlc3RcblxuQmxha2UyYi5XQVNNID0gd2FzbVxuQmxha2UyYi5TVVBQT1JURUQgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnXG5cbkJsYWtlMmIucmVhZHkgPSBmdW5jdGlvbiAoY2IpIHtcbiAgaWYgKCFjYikgY2IgPSBub29wXG4gIGlmICghd2FzbVByb21pc2UpIHJldHVybiBjYihuZXcgRXJyb3IoJ1dlYkFzc2VtYmx5IG5vdCBzdXBwb3J0ZWQnKSlcbiAgcmV0dXJuIHdhc21Qcm9taXNlLnRoZW4oKCkgPT4gY2IoKSwgY2IpXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnJlYWR5ID0gQmxha2UyYi5yZWFkeVxuXG5CbGFrZTJiLnByb3RvdHlwZS5nZXRQYXJ0aWFsSGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX21lbW9yeS5zbGljZSh0aGlzLnBvaW50ZXIsIHRoaXMucG9pbnRlciArIDIxNik7XG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnNldFBhcnRpYWxIYXNoID0gZnVuY3Rpb24gKHBoKSB7XG4gIHRoaXMuX21lbW9yeS5zZXQocGgsIHRoaXMucG9pbnRlcik7XG59XG5cbmZ1bmN0aW9uIG5vb3AgKCkge31cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8qIGdsb2JhbCB3aW5kb3cgKi9cbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCByZWFkbGluZSBmcm9tIFwicmVhZGxpbmVcIjtcbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBjcnlwdG8gZnJvbSBcImNyeXB0b1wiO1xuXG5jb25zdCBfcmV2VGFibGUgPSBbXTtcbmZvciAobGV0IGk9MDsgaTwyNTY7IGkrKykge1xuICAgIF9yZXZUYWJsZVtpXSA9IF9yZXZTbG93KGksIDgpO1xufVxuXG5mdW5jdGlvbiBfcmV2U2xvdyhpZHgsIGJpdHMpIHtcbiAgICBsZXQgcmVzID0wO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGk9MDsgaTxiaXRzOyBpKyspIHtcbiAgICAgICAgcmVzIDw8PSAxO1xuICAgICAgICByZXMgPSByZXMgfCAoYSAmMSk7XG4gICAgICAgIGEgPj49MTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJpdFJldmVyc2UoaWR4LCBiaXRzKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweEZGXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4RkZdIDw8IDI0KVxuICAgICkgPj4+ICgzMi1iaXRzKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gbG9nMiggViApXG57XG4gICAgcmV0dXJuKCAoICggViAmIDB4RkZGRjAwMDAgKSAhPT0gMCA/ICggViAmPSAweEZGRkYwMDAwLCAxNiApIDogMCApIHwgKCAoIFYgJiAweEZGMDBGRjAwICkgIT09IDAgPyAoIFYgJj0gMHhGRjAwRkYwMCwgOCApIDogMCApIHwgKCAoIFYgJiAweEYwRjBGMEYwICkgIT09IDAgPyAoIFYgJj0gMHhGMEYwRjBGMCwgNCApIDogMCApIHwgKCAoIFYgJiAweENDQ0NDQ0NDICkgIT09IDAgPyAoIFYgJj0gMHhDQ0NDQ0NDQywgMiApIDogMCApIHwgKCAoIFYgJiAweEFBQUFBQUFBICkgIT09IDAgKSApO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRIYXNoKGIsIHRpdGxlKSB7XG4gICAgY29uc3QgYSA9IG5ldyBEYXRhVmlldyhiLmJ1ZmZlciwgYi5ieXRlT2Zmc2V0LCBiLmJ5dGVMZW5ndGgpO1xuICAgIGxldCBTID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8NDsgaSsrKSB7XG4gICAgICAgIGlmIChpPjApIFMgKz0gXCJcXG5cIjtcbiAgICAgICAgUyArPSBcIlxcdFxcdFwiO1xuICAgICAgICBmb3IgKGxldCBqPTA7IGo8NDsgaisrKSB7XG4gICAgICAgICAgICBpZiAoaj4wKSBTICs9IFwiIFwiO1xuICAgICAgICAgICAgUyArPSBhLmdldFVpbnQzMihpKjE2K2oqNCkudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIFwiMFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAodGl0bGUpIFMgPSB0aXRsZSArIFwiXFxuXCIgKyBTO1xuICAgIHJldHVybiBTO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaElzRXF1YWwoaDEsIGgyKSB7XG4gICAgaWYgKGgxLmJ5dGVMZW5ndGggIT0gaDIuYnl0ZUxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIHZhciBkdjEgPSBuZXcgSW50OEFycmF5KGgxKTtcbiAgICB2YXIgZHYyID0gbmV3IEludDhBcnJheShoMik7XG4gICAgZm9yICh2YXIgaSA9IDAgOyBpICE9IGgxLmJ5dGVMZW5ndGggOyBpKyspXG4gICAge1xuICAgICAgICBpZiAoZHYxW2ldICE9IGR2MltpXSkgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lSGFzaGVyKGgpIHtcbiAgICBjb25zdCBwaCA9IGguZ2V0UGFydGlhbEhhc2goKTtcbiAgICBjb25zdCByZXMgPSBCbGFrZTJiKDY0KTtcbiAgICByZXMuc2V0UGFydGlhbEhhc2gocGgpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYW1lUmF0aW8oY3VydmUsIGcxcywgZzFzeCwgZzJzLCBnMnN4KSB7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXMpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGN1cnZlLkcxLmlzWmVybyhnMXN4KSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChjdXJ2ZS5HMi5pc1plcm8oZzJzeCkpIHJldHVybiBmYWxzZTtcbiAgICAvLyByZXR1cm4gY3VydmUuRjEyLmVxKGN1cnZlLnBhaXJpbmcoZzFzLCBnMnN4KSwgY3VydmUucGFpcmluZyhnMXN4LCBnMnMpKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoZzFzLCBnMnN4LCBjdXJ2ZS5HMS5uZWcoZzFzeCksIGcycyk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gYXNrRW50cm9weSgpIHtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cucHJvbXB0KFwiRW50ZXIgYSByYW5kb20gdGV4dC4gKEVudHJvcHkpOiBcIiwgXCJcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgICAgICAgICAgaW5wdXQ6IHByb2Nlc3Muc3RkaW4sXG4gICAgICAgICAgICBvdXRwdXQ6IHByb2Nlc3Muc3Rkb3V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgcmwucXVlc3Rpb24oXCJFbnRlciBhIHJhbmRvbSB0ZXh0LiAoRW50cm9weSk6IFwiLCAoaW5wdXQpID0+IHJlc29sdmUoaW5wdXQpICk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICBpZiAocHJvY2Vzcy5icm93c2VyKSB7IC8vIFN1cHBvcnRlZFxuICAgICAgICBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyYXkpO1xuICAgIH0gZWxzZSB7IC8vIE5vZGVKU1xuICAgICAgICBjcnlwdG8ucmFuZG9tRmlsbFN5bmMoYXJyYXkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaGEyNTZkaWdlc3QoZGF0YSkge1xuICAgIGlmIChwcm9jZXNzLmJyb3dzZXIpIHsgLy8gU3VwcG9ydGVkXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGdsb2JhbFRoaXMuY3J5cHRvLnN1YnRsZS5kaWdlc3QoXCJTSEEtMjU2XCIsIGRhdGEuYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgfSBlbHNlIHsgLy8gTm9kZUpTXG4gICAgICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoZGF0YSkuZGlnZXN0KCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gZGF0YVxuICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGRhdGEsIG9mZnNldCkge1xuICAgIHJldHVybiBuZXcgRGF0YVZpZXcoZGF0YS5idWZmZXIpLmdldFVpbnQzMihvZmZzZXQsIGZhbHNlKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJhbmRvbVJuZyhlbnRyb3B5KSB7XG4gICAgLy8gR2VuZXJhdGUgYSByYW5kb20gUm5nXG4gICAgd2hpbGUgKCFlbnRyb3B5KSB7XG4gICAgICAgIGVudHJvcHkgPSBhd2FpdCBhc2tFbnRyb3B5KCk7XG4gICAgfVxuICAgIGNvbnN0IGhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGhhc2hlci51cGRhdGUoZ2V0UmFuZG9tQnl0ZXMoNjQpKTtcbiAgICBjb25zdCBlbmMgPSBuZXcgVGV4dEVuY29kZXIoKTsgLy8gYWx3YXlzIHV0Zi04XG4gICAgaGFzaGVyLnVwZGF0ZShlbmMuZW5jb2RlKGVudHJvcHkpKTtcbiAgICBjb25zdCBoYXNoID0gaGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3Qgc2VlZCA9IFtdO1xuICAgIGZvciAobGV0IGk9MDtpPDg7aSsrKSB7XG4gICAgICAgIHNlZWRbaV0gPSByZWFkVUludDMyQkUoaGFzaCwgaSo0KTtcbiAgICB9XG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcbiAgICByZXR1cm4gcm5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcm5nRnJvbUJlYWNvblBhcmFtcyhiZWFjb25IYXNoLCBudW1JdGVyYXRpb25zRXhwKSB7XG4gICAgbGV0IG5JdGVyYXRpb25zSW5uZXI7XG4gICAgbGV0IG5JdGVyYXRpb25zT3V0ZXI7XG4gICAgaWYgKG51bUl0ZXJhdGlvbnNFeHA8MzIpIHtcbiAgICAgICAgbkl0ZXJhdGlvbnNJbm5lciA9ICgxIDw8IG51bUl0ZXJhdGlvbnNFeHApID4+PiAwO1xuICAgICAgICBuSXRlcmF0aW9uc091dGVyID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBuSXRlcmF0aW9uc0lubmVyID0gMHgxMDAwMDAwMDA7XG4gICAgICAgIG5JdGVyYXRpb25zT3V0ZXIgPSAoMSA8PCAobnVtSXRlcmF0aW9uc0V4cC0zMikpID4+PiAwO1xuICAgIH1cblxuICAgIGxldCBjdXJIYXNoID0gYmVhY29uSGFzaDtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkl0ZXJhdGlvbnNPdXRlcjsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGo9MDsgajxuSXRlcmF0aW9uc0lubmVyOyBqKyspIHtcbiAgICAgICAgICAgIGN1ckhhc2ggPSBhd2FpdCBzaGEyNTZkaWdlc3QoY3VySGFzaCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjdXJIYXNoViA9IG5ldyBEYXRhVmlldyhjdXJIYXNoLmJ1ZmZlciwgY3VySGFzaC5ieXRlT2Zmc2V0LCBjdXJIYXNoLmJ5dGVMZW5ndGgpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWRbaV0gPSBjdXJIYXNoVi5nZXRVaW50MzIoaSo0LCBmYWxzZSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIHJldHVybiBybmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoZXgyQnl0ZUFycmF5KHMpIHtcbiAgICBpZiAocyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBzO1xuICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSBzPSBzLnNsaWNlKDIpO1xuICAgIHJldHVybiBuZXcgVWludDhBcnJheShzLm1hdGNoKC9bXFxkYS1mXXsyfS9naSkubWFwKGZ1bmN0aW9uIChoKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChoLCAxNik7XG4gICAgfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnl0ZUFycmF5MmhleChieXRlQXJyYXkpIHtcbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKGJ5dGVBcnJheSwgZnVuY3Rpb24oYnl0ZSkge1xuICAgICAgICByZXR1cm4gKFwiMFwiICsgKGJ5dGUgJiAweEZGKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbiAgICB9KS5qb2luKFwiXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChGciwgbykge1xuICAgIGlmIChvIGluc3RhbmNlb2YgVWludDhBcnJheSkgIHtcbiAgICAgICAgcmV0dXJuIEZyLnRvU3RyaW5nKG8pO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvKSkge1xuICAgICAgICByZXR1cm4gby5tYXAoc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZC5iaW5kKG51bGwsIEZyKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCggKGspID0+IHtcbiAgICAgICAgICAgIHJlc1trXSA9IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQoRnIsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKCh0eXBlb2YobykgPT0gXCJiaWdpbnRcIikgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSAge1xuICAgICAgICByZXR1cm4gby50b1N0cmluZygxMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG87XG4gICAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IEhFQURFUl9aS0VZX1NFQ1RJT04gPSAxO1xuXG5leHBvcnQgY29uc3QgR1JPVEgxNl9QUk9UT0NPTF9JRCA9IDE7XG5leHBvcnQgY29uc3QgUExPTktfUFJPVE9DT0xfSUQgPSAyO1xuZXhwb3J0IGNvbnN0IEZGTE9OS19QUk9UT0NPTF9JRCA9IDEwO1xuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLy8gRkZsb25rIGNvbnN0YW50c1xuZXhwb3J0IGNvbnN0IEZGX1RfUE9MX0RFR19NSU4gPSAzO1xuXG4vLyBGRmxvbmsgQVxuZXhwb3J0IGNvbnN0IEEgPSAxMjtcblxuLy8gWktFWSBjb25zdGFudHNcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX05TRUNUSU9OUyA9IDE3O1xuXG5leHBvcnQgY29uc3QgWktFWV9GRl9IRUFERVJfU0VDVElPTiA9IDI7XG5leHBvcnQgY29uc3QgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgWktFWV9GRl9BX01BUF9TRUNUSU9OID0gNDtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04gPSA1O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfQ19NQVBfU0VDVElPTiA9IDY7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RTF9TRUNUSU9OID0gNztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1FSX1NFQ1RJT04gPSA4O1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfUU1fU0VDVElPTiA9IDk7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RT19TRUNUSU9OID0gMTA7XG5leHBvcnQgY29uc3QgWktFWV9GRl9RQ19TRUNUSU9OID0gMTE7XG5leHBvcnQgY29uc3QgWktFWV9GRl9TSUdNQTFfU0VDVElPTiA9IDEyO1xuZXhwb3J0IGNvbnN0IFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04gPSAxMztcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX1NJR01BM19TRUNUSU9OID0gMTQ7XG5leHBvcnQgY29uc3QgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OID0gMTU7XG5leHBvcnQgY29uc3QgWktFWV9GRl9QVEFVX1NFQ1RJT04gPSAxNjtcbmV4cG9ydCBjb25zdCBaS0VZX0ZGX0MwX1NFQ1RJT04gPSAxNztcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdFxuLy8gPT09PT09XG4vLyBIZWFkZXIoMSlcbi8vICAgICAgUHJvdmVyIFR5cGUgMSBHcm90aFxuLy8gSGVhZGVyR3JvdGgoMilcbi8vICAgICAgbjhxXG4vLyAgICAgIHFcbi8vICAgICAgbjhyXG4vLyAgICAgIHJcbi8vICAgICAgTlZhcnNcbi8vICAgICAgTlB1YlxuLy8gICAgICBEb21haW5TaXplICAobXVsdGlwbGUgb2YgMlxuLy8gICAgICBhbHBoYTFcbi8vICAgICAgYmV0YTFcbi8vICAgICAgZGVsdGExXG4vLyAgICAgIGJldGEyXG4vLyAgICAgIGdhbW1hMlxuLy8gICAgICBkZWx0YTJcbi8vIElDKDMpXG4vLyBDb2Vmcyg0KVxuLy8gUG9pbnRzQSg1KVxuLy8gUG9pbnRzQjEoNilcbi8vIFBvaW50c0IyKDcpXG4vLyBQb2ludHNDKDgpXG4vLyBQb2ludHNIKDkpXG4vLyBDb250cmlidXRpb25zKDEwKVxuXG5pbXBvcnQgeyBTY2FsYXIsIEYxRmllbGQgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcblxuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgbG9nMiB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7RkZMT05LX1BST1RPQ09MX0lELCBHUk9USDE2X1BST1RPQ09MX0lELCBQTE9OS19QUk9UT0NPTF9JRH0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7WktFWV9GRl9IRUFERVJfU0VDVElPTn0gZnJvbSBcIi4vZmZsb25rX2NvbnN0YW50cy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVIZWFkZXIoZmQsIHprZXkpIHtcblxuICAgIC8vIFdyaXRlIHRoZSBoZWFkZXJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMigxKTsgLy8gR3JvdGhcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIHRoZSBHcm90aCBoZWFkZXIgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgY29uc3QgbjhxID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIobjhxKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lUSwgbjhxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44cik7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZVIsIG44cik7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5Lm5WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKHprZXkublB1YmxpYyk7ICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBudW1iZXIgb2YgcHVibGljIHZhcnMgKG5vdCBpbmNsdWRpbmcgT05FKVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoemtleS5kb21haW5TaXplKTsgICAgICAgICAgICAgICAgICAvLyBkb21haW5TaXplXG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYWxwaGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkudmtfYmV0YV8xKTtcbiAgICBhd2FpdCB3cml0ZUcyKGZkLCBjdXJ2ZSwgemtleS52a19iZXRhXzIpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2dhbW1hXzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LnZrX2RlbHRhXzIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVaS2V5KGZpbGVOYW1lLCB6a2V5KSB7XG5cbiAgICBsZXQgY3VydmUgPSBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgY29uc3QgZmQgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShmaWxlTmFtZSxcInprZXlcIiwgMSwgOSk7XG5cbiAgICBhd2FpdCB3cml0ZUhlYWRlcihmZCwgemtleSk7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHprZXkucikgLSAxKSAvIDY0KSArMSkqODtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCBuOHIqOCksIHprZXkucik7XG4gICAgY29uc3QgUjJyID0gU2NhbGFyLm1vZChTY2FsYXIubXVsKFJyLFJyKSwgemtleS5yKTtcblxuICAgIC8vIFdyaXRlIFBvbHMgKEEgYW5kIEIgKEMgY2FuIGJlIG9taXR0ZWQpKVxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICB6a2V5LmNjb2VmcyA9IHprZXkuY2NvZWZzLmZpbHRlcihjID0+IGMubWF0cml4PDIpO1xuICAgIHprZXkuY2NvZWZzLnNvcnQoIChhLGIpID0+IGEuY29uc3RyYWludCAtIGIuY29uc3RyYWludCApO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih6a2V5LmNjb2Vmcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmNjb2Vmcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjb2VmID0gemtleS5jY29lZnNbaV07XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5tYXRyaXgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvZWYuY29uc3RyYWludCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY29lZi5zaWduYWwpO1xuICAgICAgICBhd2FpdCB3cml0ZUZyMihjb2VmLnZhbHVlKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIElDIFNlY3Rpb25cbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShmZCwgY3VydmUsIHprZXkuSUNbaV0gKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFdyaXRlIEFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGZkLCBjdXJ2ZSwgemtleS5BW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMVxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkIxW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBCMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoZmQsIGN1cnZlLCB6a2V5LkIyW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBDXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDgpO1xuICAgIGZvciAobGV0IGk9emtleS5uUHVibGljKzE7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LkNbaV0pO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gV3JpdGUgSCBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgOSk7XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCB6a2V5LmhFeHBzW2ldKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVGcjIobikge1xuICAgICAgICAvLyBDb252ZXJ0IHRvIG1vbnRnb21lcnlcbiAgICAgICAgbiA9IFNjYWxhci5tb2QoIFNjYWxhci5tdWwobiwgUjJyKSwgemtleS5yKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIG4sIG44cik7XG4gICAgfVxuXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzEoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoZmQsIGN1cnZlLCBwKSB7XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgMCwgcCk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjb25zdCByZXMgPSBjdXJ2ZS5HMS5mcm9tUnByTEVNKGJ1ZmYsIDApO1xuICAgIHJldHVybiB0b09iamVjdCA/IGN1cnZlLkcxLnRvT2JqZWN0KHJlcykgOiByZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KSB7XG4gICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoY3VydmUuRzIuRi5uOCoyKTtcbiAgICBjb25zdCByZXMgPSBjdXJ2ZS5HMi5mcm9tUnByTEVNKGJ1ZmYsIDApO1xuICAgIHJldHVybiB0b09iamVjdCA/IGN1cnZlLkcyLnRvT2JqZWN0KHJlcykgOiByZXM7XG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXIoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIC8vIFJlYWQgSGVhZGVyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBwcm90b2NvbElkID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIGlmIChwcm90b2NvbElkID09PSBHUk9USDE2X1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFkSGVhZGVyR3JvdGgxNihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0LCBvcHRpb25zKTtcbiAgICB9IGVsc2UgaWYgKHByb3RvY29sSWQgPT09IFBMT05LX1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCByZWFkSGVhZGVyUGxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIGlmIChwcm90b2NvbElkID09PSBGRkxPTktfUFJPVE9DT0xfSUQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHJlYWRIZWFkZXJGRmxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUHJvdG9jb2wgbm90IHN1cHBvcnRlZDogXCIpO1xuICAgIH1cbn1cblxuXG5cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlckdyb3RoMTYoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcImdyb3RoMTZcIjtcblxuICAgIC8vIFJlYWQgR3JvdGggSGVhZGVyXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBjb25zdCBuOHEgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44cSA9IG44cTtcbiAgICB6a2V5LnEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhxKTtcblxuICAgIGNvbnN0IG44ciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhyID0gbjhyO1xuICAgIHprZXkuciA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHIpO1xuICAgIHprZXkuY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEsIG9wdGlvbnMpO1xuICAgIHprZXkublZhcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5QdWJsaWMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmRvbWFpblNpemUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LnBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuICAgIHprZXkudmtfYWxwaGFfMSA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkudmtfYmV0YV8xID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS52a19iZXRhXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2dhbW1hXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2RlbHRhXzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LnZrX2RlbHRhXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHprZXk7XG5cbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVhZEhlYWRlclBsb25rKGZkLCBzZWN0aW9ucywgdG9PYmplY3QsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB6a2V5ID0ge307XG5cbiAgICB6a2V5LnByb3RvY29sID0gXCJwbG9ua1wiO1xuXG4gICAgLy8gUmVhZCBQbG9uayBIZWFkZXJcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDIpO1xuICAgIGNvbnN0IG44cSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubjhxID0gbjhxO1xuICAgIHprZXkucSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCBuOHEpO1xuXG4gICAgY29uc3QgbjhyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHIgPSBuOHI7XG4gICAgemtleS5yID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cik7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSwgb3B0aW9ucyk7XG4gICAgemtleS5uVmFycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkublB1YmxpYyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkuZG9tYWluU2l6ZSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkucG93ZXIgPSBsb2cyKHprZXkuZG9tYWluU2l6ZSk7XG4gICAgemtleS5uQWRkaXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uQ29uc3RyYWludHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmsxID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkuazIgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LlFtID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RbCA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUXIgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlFvID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5RYyA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuUzEgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcbiAgICB6a2V5LlMyID0gYXdhaXQgcmVhZEcxKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG4gICAgemtleS5TMyA9IGF3YWl0IHJlYWRHMShmZCwgemtleS5jdXJ2ZSwgdG9PYmplY3QpO1xuICAgIHprZXkuWF8yID0gYXdhaXQgcmVhZEcyKGZkLCB6a2V5LmN1cnZlLCB0b09iamVjdCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIHprZXk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRIZWFkZXJGRmxvbmsoZmQsIHNlY3Rpb25zLCB0b09iamVjdCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHprZXkgPSB7fTtcblxuICAgIHprZXkucHJvdG9jb2wgPSBcImZmbG9ua1wiO1xuICAgIHprZXkucHJvdG9jb2xJZCA9IEZGTE9OS19QUk9UT0NPTF9JRDtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgWktFWV9GRl9IRUFERVJfU0VDVElPTik7XG4gICAgY29uc3QgbjhxID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgemtleS5uOHEgPSBuOHE7XG4gICAgemtleS5xID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44cSk7XG4gICAgemtleS5jdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSwgb3B0aW9ucyk7XG5cbiAgICBjb25zdCBuOHIgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm44ciA9IG44cjtcbiAgICB6a2V5LnIgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjhyKTtcblxuICAgIHprZXkublZhcnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5Lm5QdWJsaWMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmRvbWFpblNpemUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LnBvd2VyID0gbG9nMih6a2V5LmRvbWFpblNpemUpO1xuICAgIHprZXkubkFkZGl0aW9ucyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHprZXkubkNvbnN0cmFpbnRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICB6a2V5LmsxID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkuazIgPSBhd2FpdCBmZC5yZWFkKG44cik7XG5cbiAgICB6a2V5LnczID0gYXdhaXQgZmQucmVhZChuOHIpO1xuICAgIHprZXkudzQgPSBhd2FpdCBmZC5yZWFkKG44cik7XG4gICAgemtleS53OCA9IGF3YWl0IGZkLnJlYWQobjhyKTtcbiAgICB6a2V5LndyID0gYXdhaXQgZmQucmVhZChuOHIpO1xuXG4gICAgemtleS5YXzIgPSBhd2FpdCByZWFkRzIoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIHprZXkuQzAgPSBhd2FpdCByZWFkRzEoZmQsIHprZXkuY3VydmUsIHRvT2JqZWN0KTtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICByZXR1cm4gemtleTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRaS2V5KGZpbGVOYW1lLCB0b09iamVjdCkge1xuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKGZpbGVOYW1lLCBcInprZXlcIiwgMSk7XG5cbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMsIHRvT2JqZWN0KTtcblxuICAgIGNvbnN0IEZyID0gbmV3IEYxRmllbGQoemtleS5yKTtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCB6a2V5Lm44cio4KSwgemtleS5yKTtcbiAgICBjb25zdCBScmkgPSBGci5pbnYoUnIpO1xuICAgIGNvbnN0IFJyaTIgPSBGci5tdWwoUnJpLCBScmkpO1xuXG4gICAgbGV0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcblxuICAgIC8vIFJlYWQgSUMgU2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICB6a2V5LklDID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgUCA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICAgICAgemtleS5JQy5wdXNoKFApO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIENvZWZzXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDQpO1xuICAgIGNvbnN0IG5DQ29lZnMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICB6a2V5LmNjb2VmcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ0NvZWZzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgICAgICBjb25zdCBjID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgICAgIGNvbnN0IHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICAgICAgY29uc3QgdiA9IGF3YWl0IHJlYWRGcjIodG9PYmplY3QpO1xuICAgICAgICB6a2V5LmNjb2Vmcy5wdXNoKHtcbiAgICAgICAgICAgIG1hdHJpeDogbSxcbiAgICAgICAgICAgIGNvbnN0cmFpbnQ6IGMsXG4gICAgICAgICAgICBzaWduYWw6IHMsXG4gICAgICAgICAgICB2YWx1ZTogdlxuICAgICAgICB9KTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIC8vIFJlYWQgQSBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNSk7XG4gICAgemtleS5BID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBBID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LkFbaV0gPSBBO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG5cbiAgICAvLyBSZWFkIEIxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDYpO1xuICAgIHprZXkuQjEgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8emtleS5uVmFyczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IEIxID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgICAgIHprZXkuQjFbaV0gPSBCMTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBCMiBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgNyk7XG4gICAgemtleS5CMiA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5Lm5WYXJzOyBpKyspIHtcbiAgICAgICAgY29uc3QgQjIgPSBhd2FpdCByZWFkRzIoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgICAgIHprZXkuQjJbaV0gPSBCMjtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuXG4gICAgLy8gUmVhZCBDIHBvaW50c1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA4KTtcbiAgICB6a2V5LkMgPSBbXTtcbiAgICBmb3IgKGxldCBpPXprZXkublB1YmxpYysxOyBpPHprZXkublZhcnM7IGkrKykge1xuICAgICAgICBjb25zdCBDID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuXG4gICAgICAgIHprZXkuQ1tpXSA9IEM7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cblxuICAgIC8vIFJlYWQgSCBwb2ludHNcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgOSk7XG4gICAgemtleS5oRXhwcyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICBjb25zdCBIID0gYXdhaXQgcmVhZEcxKGZkLCBjdXJ2ZSwgdG9PYmplY3QpO1xuICAgICAgICB6a2V5LmhFeHBzLnB1c2goSCk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHprZXk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRnIyKC8qIHRvT2JqZWN0ICovKSB7XG4gICAgICAgIGNvbnN0IG4gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgemtleS5uOHIpO1xuICAgICAgICByZXR1cm4gRnIubXVsKG4sIFJyaTIpO1xuICAgIH1cblxufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlLCB0b09iamVjdCkge1xuICAgIGNvbnN0IGMgPSB7ZGVsdGE6e319O1xuICAgIGMuZGVsdGFBZnRlciA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcxX3MgPSBhd2FpdCByZWFkRzEoZmQsIGN1cnZlLCB0b09iamVjdCk7XG4gICAgYy5kZWx0YS5nMV9zeCA9IGF3YWl0IHJlYWRHMShmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLmRlbHRhLmcyX3NweCA9IGF3YWl0IHJlYWRHMihmZCwgY3VydmUsIHRvT2JqZWN0KTtcbiAgICBjLnRyYW5zY3JpcHQgPSBhd2FpdCBmZC5yZWFkKDY0KTtcbiAgICBjLnR5cGUgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcblxuICAgIGNvbnN0IHBhcmFtTGVuZ3RoID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY3VyUG9zID0gZmQucG9zO1xuICAgIGxldCBsYXN0VHlwZSA9MDtcbiAgICB3aGlsZSAoZmQucG9zLWN1clBvcyA8IHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZUeXBlID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPD0gbGFzdFR5cGUpIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgaW4gdGhlIGNvbnRyaWJ1dGlvbiBtdXN0IGJlIHNvcnRlZFwiKTtcbiAgICAgICAgbGFzdFR5cGUgPSBidWZmVHlwZVswXTtcbiAgICAgICAgaWYgKGJ1ZmZUeXBlWzBdPT0xKSB7ICAgICAvLyBOYW1lXG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCBmZC5yZWFkKGJ1ZmZMZW5bMF0pO1xuICAgICAgICAgICAgYy5uYW1lID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGJ1ZmZTdHIpO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0yKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmRXhwID0gYXdhaXQgZmQucmVhZCgxKTtcbiAgICAgICAgICAgIGMubnVtSXRlcmF0aW9uc0V4cCA9IGJ1ZmZFeHBbMF07XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZMZW4gPSBhd2FpdCBmZC5yZWFkKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgZmQucmVhZChidWZmTGVuWzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlciBub3QgcmVjb2duaXplZFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZmQucG9zICE9IGN1clBvcyArIHBhcmFtTGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcmFtZXRlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjO1xufVxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkTVBDUGFyYW1zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDEwKTtcbiAgICBjb25zdCByZXMgPSB7IGNvbnRyaWJ1dGlvbnM6IFtdfTtcbiAgICByZXMuY3NIYXNoID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgY29uc3QgbiA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IGF3YWl0IHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKTtcbiAgICAgICAgcmVzLmNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgYykge1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhQWZ0ZXIpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgIGF3YWl0IHdyaXRlRzEoZmQsIGN1cnZlLCBjLmRlbHRhLmcxX3N4KTtcbiAgICBhd2FpdCB3cml0ZUcyKGZkLCBjdXJ2ZSwgYy5kZWx0YS5nMl9zcHgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjLnR5cGUgfHwgMCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSBbXTtcbiAgICBpZiAoYy5uYW1lKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDEpOyAgICAgIC8vIFBhcmFtIE5hbWVcbiAgICAgICAgY29uc3QgbmFtZURhdGEgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKS5lbmNvZGUoYy5uYW1lLnN1YnN0cmluZygwLDY0KSk7XG4gICAgICAgIHBhcmFtcy5wdXNoKG5hbWVEYXRhLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bmFtZURhdGEuYnl0ZUxlbmd0aDsgaSsrKSBwYXJhbXMucHVzaChuYW1lRGF0YVtpXSk7XG4gICAgfVxuICAgIGlmIChjLnR5cGUgPT0gMSkge1xuICAgICAgICBwYXJhbXMucHVzaCgyKTsgICAgICAvLyBQYXJhbSBudW1JdGVyYXRpb25zRXhwXG4gICAgICAgIHBhcmFtcy5wdXNoKGMubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgcGFyYW1zLnB1c2goMyk7ICAgICAgLy8gQmVhY29uIEhhc2hcbiAgICAgICAgcGFyYW1zLnB1c2goYy5iZWFjb25IYXNoLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Yy5iZWFjb25IYXNoLmJ5dGVMZW5ndGg7IGkrKykgcGFyYW1zLnB1c2goYy5iZWFjb25IYXNoW2ldKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sZW5ndGg+MCkge1xuICAgICAgICBjb25zdCBwYXJhbXNCdWZmID0gbmV3IFVpbnQ4QXJyYXkocGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihwYXJhbXNCdWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZShwYXJhbXNCdWZmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApO1xuICAgIH1cblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVNUENQYXJhbXMoZmQsIGN1cnZlLCBtcGNQYXJhbXMpIHtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDEwKTtcbiAgICBhd2FpdCBmZC53cml0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSxtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEcxKGhhc2hlciwgY3VydmUsIHApIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRzEuRi5uOCoyKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBwKTtcbiAgICBoYXNoZXIudXBkYXRlKGJ1ZmYpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzaEcyKGhhc2hlcixjdXJ2ZSwgcCkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMi5GLm44KjIpO1xuICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIHApO1xuICAgIGhhc2hlci51cGRhdGUoYnVmZik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNoUHViS2V5KGhhc2hlciwgY3VydmUsIGMpIHtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YUFmdGVyKTtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zKTtcbiAgICBoYXNoRzEoaGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zeCk7XG4gICAgaGFzaEcyKGhhc2hlciwgY3VydmUsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICBoYXNoZXIudXBkYXRlKGMudHJhbnNjcmlwdCk7XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlKGZkLCB3aXRuZXNzLCBwcmltZSkge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBjb25zdCBuOCA9IChNYXRoLmZsb29yKCAoU2NhbGFyLmJpdExlbmd0aChwcmltZSkgLSAxKSAvIDY0KSArMSkqODtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKG44KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMud3JpdGVCaWdJbnQoZmQsIHByaW1lLCBuOCk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMih3aXRuZXNzLmxlbmd0aCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGZvciAobGV0IGk9MDsgaTx3aXRuZXNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy53cml0ZUJpZ0ludChmZCwgd2l0bmVzc1tpXSwgbjgpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkLCAyKTtcblxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUJpbihmZCwgd2l0bmVzc0JpbiwgcHJpbWUpIHtcblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMSk7XG4gICAgY29uc3QgbjggPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWUpIC0gMSkgLyA2NCkgKzEpKjg7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihuOCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBwcmltZSwgbjgpO1xuICAgIGlmICh3aXRuZXNzQmluLmJ5dGVMZW5ndGggJSBuOCAhPSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgd2l0bmVzcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIod2l0bmVzc0Jpbi5ieXRlTGVuZ3RoIC8gbjgpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGF3YWl0IGZkLndyaXRlKHdpdG5lc3NCaW4pO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkSGVhZGVyKGZkLCBzZWN0aW9ucykge1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICBjb25zdCBuOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIGNvbnN0IHEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpZ0ludChmZCwgbjgpO1xuICAgIGNvbnN0IG5XaXRuZXNzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiB7bjgsIHEsIG5XaXRuZXNzfTtcblxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZChmaWxlTmFtZSkge1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoZmlsZU5hbWUsIFwid3Ruc1wiLCAyKTtcblxuICAgIGNvbnN0IHtuOCwgbldpdG5lc3N9ID0gYXdhaXQgcmVhZEhlYWRlcihmZCwgc2VjdGlvbnMpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bldpdG5lc3M7IGkrKykge1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQoZmQsIG44KTtcbiAgICAgICAgcmVzLnB1c2godik7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZCk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgd3Ruc1V0aWxzIGZyb20gXCIuL3d0bnNfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7IGxvZzIgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIHV0aWxzLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7c3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlByb3ZlKHprZXlGaWxlTmFtZSwgd2l0bmVzc0ZpbGVOYW1lLCBsb2dnZXIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7ZmQ6IGZkV3Rucywgc2VjdGlvbnM6IHNlY3Rpb25zV3Ruc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUod2l0bmVzc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIGNvbnN0IHd0bnMgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHNlY3Rpb25zV3Rucyk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkWktleSwgc2VjdGlvbnM6IHNlY3Rpb25zWktleX0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleUZpbGVOYW1lLCBcInprZXlcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZFpLZXksIHNlY3Rpb25zWktleSwgdW5kZWZpbmVkLCBvcHRpb25zKTtcblxuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBpZiAoIVNjYWxhci5lcSh6a2V5LnIsICB3dG5zLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgaWYgKHd0bnMubldpdG5lc3MgIT0gemtleS5uVmFycykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0bmVzcyBsZW5ndGguIENpcmN1aXQ6ICR7emtleS5uVmFyc30sIHdpdG5lc3M6ICR7d3Rucy5uV2l0bmVzc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG5cbiAgICBjb25zdCBwb3dlciA9IGxvZzIoemtleS5kb21haW5TaXplKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlJlYWRpbmcgV3Ruc1wiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHNlY3Rpb25zV3RucywgMik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDb2VmZnNcIik7XG4gICAgY29uc3QgYnVmZkNvZWZmcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJCdWlsZGluZyBBQkNcIik7XG4gICAgY29uc3QgW2J1ZmZBX1QsIGJ1ZmZCX1QsIGJ1ZmZDX1RdID0gYXdhaXQgYnVpbGRBQkMxKGN1cnZlLCB6a2V5LCBidWZmV2l0bmVzcywgYnVmZkNvZWZmcywgbG9nZ2VyKTtcblxuICAgIGNvbnN0IGluYyA9IHBvd2VyID09IEZyLnMgPyBjdXJ2ZS5Gci5zaGlmdCA6IGN1cnZlLkZyLndbcG93ZXIrMV07XG5cbiAgICBjb25zdCBidWZmQSA9IGF3YWl0IEZyLmlmZnQoYnVmZkFfVCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIklGRlRfQVwiKTtcbiAgICBjb25zdCBidWZmQW9kZCA9IGF3YWl0IEZyLmJhdGNoQXBwbHlLZXkoYnVmZkEsIEZyLmUoMSksIGluYyk7XG4gICAgY29uc3QgYnVmZkFvZGRfVCA9IGF3YWl0IEZyLmZmdChidWZmQW9kZCwgXCJcIiwgXCJcIiwgbG9nZ2VyLCBcIkZGVF9BXCIpO1xuXG4gICAgY29uc3QgYnVmZkIgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZCX1QsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJJRkZUX0JcIik7XG4gICAgY29uc3QgYnVmZkJvZGQgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZCLCBGci5lKDEpLCBpbmMpO1xuICAgIGNvbnN0IGJ1ZmZCb2RkX1QgPSBhd2FpdCBGci5mZnQoYnVmZkJvZGQsIFwiXCIsIFwiXCIsIGxvZ2dlciwgXCJGRlRfQlwiKTtcblxuICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgRnIuaWZmdChidWZmQ19ULCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiSUZGVF9DXCIpO1xuICAgIGNvbnN0IGJ1ZmZDb2RkID0gYXdhaXQgRnIuYmF0Y2hBcHBseUtleShidWZmQywgRnIuZSgxKSwgaW5jKTtcbiAgICBjb25zdCBidWZmQ29kZF9UID0gYXdhaXQgRnIuZmZ0KGJ1ZmZDb2RkLCBcIlwiLCBcIlwiLCBsb2dnZXIsIFwiRkZUX0NcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJKb2luIEFCQ1wiKTtcbiAgICBjb25zdCBidWZmUG9kZF9UID0gYXdhaXQgam9pbkFCQyhjdXJ2ZSwgemtleSwgYnVmZkFvZGRfVCwgYnVmZkJvZGRfVCwgYnVmZkNvZGRfVCwgbG9nZ2VyKTtcblxuICAgIGxldCBwcm9vZiA9IHt9O1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBBIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNBID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA1KTtcbiAgICBwcm9vZi5waV9hID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQSwgYnVmZldpdG5lc3MsIGxvZ2dlciwgXCJtdWx0aWV4cCBBXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBCMSBQb2ludHNcIik7XG4gICAgY29uc3QgYnVmZkJhc2VzQjEgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDYpO1xuICAgIGxldCBwaWIxID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQjEsIGJ1ZmZXaXRuZXNzLCBsb2dnZXIsIFwibXVsdGlleHAgQjFcIik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJSZWFkaW5nIEIyIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNCMiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHNlY3Rpb25zWktleSwgNyk7XG4gICAgcHJvb2YucGlfYiA9IGF3YWl0IGN1cnZlLkcyLm11bHRpRXhwQWZmaW5lKGJ1ZmZCYXNlc0IyLCBidWZmV2l0bmVzcywgbG9nZ2VyLCBcIm11bHRpZXhwIEIyXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBDIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA4KTtcbiAgICBwcm9vZi5waV9jID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzQywgYnVmZldpdG5lc3Muc2xpY2UoKHprZXkublB1YmxpYysxKSpjdXJ2ZS5Gci5uOCksIGxvZ2dlciwgXCJtdWx0aWV4cCBDXCIpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUmVhZGluZyBIIFBvaW50c1wiKTtcbiAgICBjb25zdCBidWZmQmFzZXNIID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA5KTtcbiAgICBjb25zdCByZXNIID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzSCwgYnVmZlBvZGRfVCwgbG9nZ2VyLCBcIm11bHRpZXhwIEhcIik7XG5cbiAgICBjb25zdCByID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgY29uc3QgcyA9IGN1cnZlLkZyLnJhbmRvbSgpO1xuXG4gICAgcHJvb2YucGlfYSAgPSBHMS5hZGQoIHByb29mLnBpX2EsIHprZXkudmtfYWxwaGFfMSApO1xuICAgIHByb29mLnBpX2EgID0gRzEuYWRkKCBwcm9vZi5waV9hLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHIgKSk7XG5cbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgemtleS52a19iZXRhXzIgKTtcbiAgICBwcm9vZi5waV9iICA9IEcyLmFkZCggcHJvb2YucGlfYiwgRzIudGltZXNGciggemtleS52a19kZWx0YV8yLCBzICkpO1xuXG4gICAgcGliMSA9IEcxLmFkZCggcGliMSwgemtleS52a19iZXRhXzEgKTtcbiAgICBwaWIxID0gRzEuYWRkKCBwaWIxLCBHMS50aW1lc0ZyKCB6a2V5LnZrX2RlbHRhXzEsIHMgKSk7XG5cbiAgICBwcm9vZi5waV9jID0gRzEuYWRkKHByb29mLnBpX2MsIHJlc0gpO1xuXG5cbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcHJvb2YucGlfYSwgcyApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggcGliMSwgciApKTtcbiAgICBwcm9vZi5waV9jICA9IEcxLmFkZCggcHJvb2YucGlfYywgRzEudGltZXNGciggemtleS52a19kZWx0YV8xLCBGci5uZWcoRnIubXVsKHIscykgKSkpO1xuXG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgYiA9IGJ1ZmZXaXRuZXNzLnNsaWNlKGkqRnIubjgsIGkqRnIubjgrRnIubjgpO1xuICAgICAgICBwdWJsaWNTaWduYWxzLnB1c2goU2NhbGFyLmZyb21ScHJMRShiKSk7XG4gICAgfVxuXG4gICAgcHJvb2YucGlfYSA9IEcxLnRvT2JqZWN0KEcxLnRvQWZmaW5lKHByb29mLnBpX2EpKTtcbiAgICBwcm9vZi5waV9iID0gRzIudG9PYmplY3QoRzIudG9BZmZpbmUocHJvb2YucGlfYikpO1xuICAgIHByb29mLnBpX2MgPSBHMS50b09iamVjdChHMS50b0FmZmluZShwcm9vZi5waV9jKSk7XG5cbiAgICBwcm9vZi5wcm90b2NvbCA9IFwiZ3JvdGgxNlwiO1xuICAgIHByb29mLmN1cnZlID0gY3VydmUubmFtZTtcblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgcHJvb2YgPSBzdHJpbmdpZnlCaWdJbnRzKHByb29mKTtcbiAgICBwdWJsaWNTaWduYWxzID0gc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKTtcblxuICAgIHJldHVybiB7cHJvb2YsIHB1YmxpY1NpZ25hbHN9O1xufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQUJDMShjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBuOCA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG4gICAgY29uc3QgbkNvZWYgPSAoY29lZmZzLmJ5dGVMZW5ndGgtNCkgLyBzQ29lZjtcblxuICAgIGNvbnN0IG91dEJ1ZmZBID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBuOCk7XG4gICAgY29uc3Qgb3V0QnVmZkIgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIG44KTtcbiAgICBjb25zdCBvdXRCdWZmQyA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogbjgpO1xuXG4gICAgY29uc3Qgb3V0QnVmID0gWyBvdXRCdWZmQSwgb3V0QnVmZkIgXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bkNvZWY7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1ZyhgUUFQIEFCOiAke2l9LyR7bkNvZWZ9YCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZDb2VmID0gY29lZmZzLnNsaWNlKDQraSpzQ29lZiwgNCtpKnNDb2VmK3NDb2VmKTtcbiAgICAgICAgY29uc3QgYnVmZkNvZWZWID0gbmV3IERhdGFWaWV3KGJ1ZmZDb2VmLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IG09IGJ1ZmZDb2VmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoNCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IHM9IGJ1ZmZDb2VmVi5nZXRVaW50MzIoOCwgdHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNvZWYgPSBidWZmQ29lZi5zbGljZSgxMiwgMTIrbjgpO1xuICAgICAgICBvdXRCdWZbbV0uc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIuYWRkKFxuICAgICAgICAgICAgICAgIG91dEJ1ZlttXS5zbGljZShjKm44LCBjKm44K244KSxcbiAgICAgICAgICAgICAgICBjdXJ2ZS5Gci5tdWwoY29lZiwgd2l0bmVzcy5zbGljZShzKm44LCBzKm44K244KSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjKm44XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGBRQVAgQzogJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KFxuICAgICAgICAgICAgY3VydmUuRnIubXVsKFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZBLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgICAgIG91dEJ1ZmZCLnNsaWNlKGkqbjgsIGkqbjgrbjgpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGkqbjhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gW291dEJ1ZmZBLCBvdXRCdWZmQiwgb3V0QnVmZkNdO1xuXG59XG5cbi8qXG5hc3luYyBmdW5jdGlvbiBidWlsZEFCQyhjdXJ2ZSwgemtleSwgd2l0bmVzcywgY29lZmZzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBjb25jdXJyZW5jeSA9IGN1cnZlLnRtLmNvbmN1cnJlbmN5O1xuICAgIGNvbnN0IHNDb2VmID0gNCozICsgemtleS5uOHI7XG5cbiAgICBsZXQgZ2V0VWludDMyO1xuXG4gICAgaWYgKGNvZWZmcyBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IFtdO1xuICAgICAgICBjb25zdCBQQUdFX0xFTiA9IGNvZWZmcy5idWZmZXJzWzBdLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBjb2VmZnMuYnVmZmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29lZmZzRFYucHVzaChuZXcgRGF0YVZpZXcoY29lZmZzLmJ1ZmZlcnNbaV0uYnVmZmVyKSk7XG4gICAgICAgIH1cbiAgICAgICAgZ2V0VWludDMyID0gZnVuY3Rpb24gKHBvcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvZWZmc0RWW01hdGguZmxvb3IocG9zL1BBR0VfTEVOKV0uZ2V0VWludDMyKHBvcyAlIFBBR0VfTEVOLCB0cnVlKTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjb2VmZnNEViA9IG5ldyBEYXRhVmlldyhjb2VmZnMuYnVmZmVyLCBjb2VmZnMuYnl0ZU9mZnNldCwgY29lZmZzLmJ5dGVMZW5ndGgpO1xuICAgICAgICBnZXRVaW50MzIgPSBmdW5jdGlvbiAocG9zKSB7XG4gICAgICAgICAgICByZXR1cm4gY29lZmZzRFYuZ2V0VWludDMyKHBvcywgdHJ1ZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHNQZXJDaHVuayA9IE1hdGguZmxvb3IoemtleS5kb21haW5TaXplL2NvbmN1cnJlbmN5KTtcbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgY29uc3QgY3V0UG9pbnRzID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgY3V0UG9pbnRzLnB1c2goIGdldEN1dFBvaW50KCBNYXRoLmZsb29yKGkqZWxlbWVudHNQZXJDaHVuaykgKSk7XG4gICAgfVxuICAgIGN1dFBvaW50cy5wdXNoKGNvZWZmcy5ieXRlTGVuZ3RoKTtcblxuICAgIGNvbnN0IGNodW5rU2l6ZSA9IDIqKjI2O1xuICAgIGZvciAobGV0IHM9MCA7IHM8emtleS5uVmFycyA7IHMrPSBjaHVua1NpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBRQVAgJHtzfTogJHtzfS8ke3prZXkublZhcnN9YCk7XG4gICAgICAgIGNvbnN0IG5zPSBNYXRoLm1pbih6a2V5Lm5WYXJzLXMsIGNodW5rU2l6ZSApO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCBjb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IGVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSB6a2V5LmRvbWFpblNpemUgLSBpKmVsZW1lbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjb2VmZnMuc2xpY2UoY3V0UG9pbnRzW2ldLCBjdXRQb2ludHNbaSsxXSl9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogd2l0bmVzcy5zbGljZShzKmN1cnZlLkZyLm44LCAocytucykqY3VydmUuRnIubjgpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDIsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAzLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogNCwgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfYnVpbGRBQkNcIiwgcGFyYW1zOltcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiAoY3V0UG9pbnRzW2krMV0gLSBjdXRQb2ludHNbaV0pL3NDb2VmfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICB7dmFsOiBpKmVsZW1lbnRzUGVyQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgIHt2YWw6IHN9LFxuICAgICAgICAgICAgICAgIHt2YWw6IG5zfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAyLCBsZW46IG4qY3VydmUuRnIubjh9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMywgbGVuOiBuKmN1cnZlLkZyLm44fSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAyLCB2YXI6IDQsIGxlbjogbipjdXJ2ZS5Gci5uOH0pO1xuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3Qgbkdyb3VwcyA9IHJlc3VsdC5sZW5ndGggLyBjb25jdXJyZW5jeTtcbiAgICBpZiAobkdyb3Vwcz4xKSB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzMiA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzaz1bXTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMCwgbGVuOiByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aH0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RofSk7XG4gICAgICAgICAgICBmb3IgKGxldCBtPTA7IG08MzsgbSsrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogcmVzdWx0W2ldW21dfSk7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgcz0xOyBzPG5Hcm91cHM7IHMrKykge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAxLCBidWZmOiByZXN1bHRbcypjb25jdXJyZW5jeSArIGldW21dfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBcInFhcF9iYXRjaEFkZFwiLCBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHJlc3VsdFtpXVttXS5sZW5ndGgvY3VydmUuRnIubjh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH1cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiBtLCB2YXI6IDAsIGxlbjogcmVzdWx0W2ldW21dLmxlbmd0aH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvbWlzZXMyLnB1c2goY3VydmUudG0ucXVldWVBY3Rpb24odGFzaykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzMik7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0QnVmZkEgPSBuZXcgQmlnQnVmZmVyKHprZXkuZG9tYWluU2l6ZSAqIGN1cnZlLkZyLm44KTtcbiAgICBjb25zdCBvdXRCdWZmQiA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogY3VydmUuRnIubjgpO1xuICAgIGNvbnN0IG91dEJ1ZmZDID0gbmV3IEJpZ0J1ZmZlcih6a2V5LmRvbWFpblNpemUgKiBjdXJ2ZS5Gci5uOCk7XG4gICAgbGV0IHA9MDtcbiAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG91dEJ1ZmZBLnNldChyZXN1bHRbaV1bMF0sIHApO1xuICAgICAgICBvdXRCdWZmQi5zZXQocmVzdWx0W2ldWzFdLCBwKTtcbiAgICAgICAgb3V0QnVmZkMuc2V0KHJlc3VsdFtpXVsyXSwgcCk7XG4gICAgICAgIHAgKz0gcmVzdWx0W2ldWzBdLmJ5dGVMZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtvdXRCdWZmQSwgb3V0QnVmZkIsIG91dEJ1ZmZDXTtcblxuICAgIGZ1bmN0aW9uIGdldEN1dFBvaW50KHYpIHtcbiAgICAgICAgbGV0IG0gPSAwO1xuICAgICAgICBsZXQgbiA9IGdldFVpbnQzMigwKTtcbiAgICAgICAgd2hpbGUgKG0gPCBuKSB7XG4gICAgICAgICAgICB2YXIgayA9IE1hdGguZmxvb3IoKG4gKyBtKSAvIDIpO1xuICAgICAgICAgICAgY29uc3QgdmEgPSBnZXRVaW50MzIoNCArIGsqc0NvZWYgKyA0KTtcbiAgICAgICAgICAgIGlmICh2YSA+IHYpIHtcbiAgICAgICAgICAgICAgICBuID0gayAtIDE7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHZhIDwgdikge1xuICAgICAgICAgICAgICAgIG0gPSBrICsgMTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IGs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDQgKyBtKnNDb2VmO1xuICAgIH1cbn1cbiovXG5cbmFzeW5jIGZ1bmN0aW9uIGpvaW5BQkMoY3VydmUsIHprZXksIGEsIGIsIGMsIGxvZ2dlcikge1xuICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMSA8PCAyMjtcblxuICAgIGNvbnN0IG44ID0gY3VydmUuRnIubjg7XG4gICAgY29uc3QgbkVsZW1lbnRzID0gTWF0aC5mbG9vcihhLmJ5dGVMZW5ndGggLyBjdXJ2ZS5Gci5uOCk7XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG5FbGVtZW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEpvaW5BQkM6ICR7aX0vJHtuRWxlbWVudHN9YCk7XG4gICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5FbGVtZW50cyAtIGksIE1BWF9DSFVOS19TSVpFKTtcblxuICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgY29uc3QgYUNodW5rID0gYS5zbGljZShpKm44LCAoaSArIG4pKm44ICk7XG4gICAgICAgIGNvbnN0IGJDaHVuayA9IGIuc2xpY2UoaSpuOCwgKGkgKyBuKSpuOCApO1xuICAgICAgICBjb25zdCBjQ2h1bmsgPSBjLnNsaWNlKGkqbjgsIChpICsgbikqbjggKTtcblxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGFDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGNDaHVua30pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipuOH0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJxYXBfam9pbkFCQ1wiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJmcm1fYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwYXJhbXM6W1xuICAgICAgICAgICAge3ZhcjogM30sXG4gICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qbjh9KTtcbiAgICAgICAgcHJvbWlzZXMucHVzaChjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgbGV0IG91dEJ1ZmY7XG4gICAgaWYgKGEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgb3V0QnVmZiA9IG5ldyBCaWdCdWZmZXIoYS5ieXRlTGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvdXRCdWZmID0gbmV3IFVpbnQ4QXJyYXkoYS5ieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBsZXQgcD0wO1xuICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0QnVmZi5zZXQocmVzdWx0W2ldWzBdLCBwKTtcbiAgICAgICAgcCArPSByZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0QnVmZjtcbn1cblxuIiwiLypcblxuQ29weXJpZ2h0IDIwMjAgMEtJTVMgYXNzb2NpYXRpb24uXG5cbkxpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG55b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG5Zb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG5Vbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG5kaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG5XSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cblNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbmxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG4qL1xuXG5leHBvcnQgZnVuY3Rpb24gZmxhdEFycmF5KGEpIHtcbiAgICBsZXQgcmVzID0gW107XG4gICAgZmlsbEFycmF5KHJlcywgYSk7XG4gICAgcmV0dXJuIHJlcztcblxuICAgIGZ1bmN0aW9uIGZpbGxBcnJheShyZXMsIGEpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZpbGxBcnJheShyZXMsIGFbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLnB1c2goYSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFJlZiBodHRwczovL2dpdGh1Yi5jb20vaWRlbjMvY2lyY29tL2NvbW1pdC9lYzYzODhjZjZlYjYyNDYzNTM5Y2I0YzQwY2MzY2VhZTk4MjZkZTE5XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKG4sIHByaW1lKSB7XG4gICAgbGV0IHJlcyA9IEJpZ0ludChuKSAlIHByaW1lO1xuICAgIGlmIChyZXMgPCAwKSByZXMgKz0gcHJpbWU7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZudkhhc2goc3RyKSB7XG4gICAgY29uc3QgdWludDY0X21heCA9IEJpZ0ludCgyKSAqKiBCaWdJbnQoNjQpO1xuICAgIGxldCBoYXNoID0gQmlnSW50KFwiMHhDQkYyOUNFNDg0MjIyMzI1XCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGhhc2ggXj0gQmlnSW50KHN0cltpXS5jaGFyQ29kZUF0KDApKTtcbiAgICAgICAgaGFzaCAqPSBCaWdJbnQoMHgxMDAwMDAwMDFCMyk7XG4gICAgICAgIGhhc2ggJT0gdWludDY0X21heDtcbiAgICB9XG4gICAgbGV0IHNoYXNoID0gaGFzaC50b1N0cmluZygxNik7XG4gICAgbGV0IG4gPSAxNiAtIHNoYXNoLmxlbmd0aDtcbiAgICBzaGFzaCA9IFwiMFwiLnJlcGVhdChuKS5jb25jYXQoc2hhc2gpO1xuICAgIHJldHVybiBzaGFzaDtcbn1cblxuLy8gTm90ZSB0aGF0IHRoaXMgcGFkcyB6ZXJvc1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXkzMihzLCBzaXplKSB7XG4gICAgY29uc3QgcmVzID0gW107IC8vbmV3IFVpbnQzMkFycmF5KHNpemUpOyAvL2hhcyBubyB1bnNoaWZ0XG4gICAgbGV0IHJlbSA9IEJpZ0ludChzKTtcbiAgICBjb25zdCByYWRpeCA9IEJpZ0ludCgweDEwMDAwMDAwMCk7XG4gICAgd2hpbGUgKHJlbSkge1xuICAgICAgICByZXMudW5zaGlmdChOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIGlmIChzaXplKSB7XG4gICAgICAgIGxldCBpID0gc2l6ZSAtIHJlcy5sZW5ndGg7XG4gICAgICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICAgICAgcmVzLnVuc2hpZnQoMCk7XG4gICAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsIi8qIGdsb2JhbHMgV2ViQXNzZW1ibHkgKi9cbi8qXG5cbkNvcHlyaWdodCAyMDIwIDBLSU1TIGFzc29jaWF0aW9uLlxuXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xueW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcblxuVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG5TZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG5saW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuKi9cblxuaW1wb3J0IHtmbGF0QXJyYXksIGZudkhhc2gsIHRvQXJyYXkzMiwgbm9ybWFsaXplfSBmcm9tIFwiLi91dGlscy5qc1wiO1xuaW1wb3J0IHtTY2FsYXIsIEYxRmllbGR9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gYnVpbGRlcihjb2RlLCBvcHRpb25zKSB7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCB3YztcbiAgICBsZXQgbWVtb3J5O1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gT25seSBjaXJjb20gMiBpbXBsZW1lbnRzIHZlcnNpb24gbG9va3VwIHRocm91Z2ggZXhwb3J0cyBpbiB0aGUgV0FTTVxuICAgIC8vIFdlIGRlZmF1bHQgdG8gYDFgIGFuZCB1cGRhdGUgaWYgd2Ugc2VlIHRoZSBgZ2V0VmVyc2lvbmAgZXhwb3J0IChtYWpvciB2ZXJzaW9uKVxuICAgIC8vIFRoZXNlIGFyZSB1cGRhdGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBpcyBpbnN0YW50aWF0ZWQsIGFzc3VtaW5nIHRoZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZVxuICAgIGxldCBtYWpvclZlcnNpb24gPSAxO1xuICAgIC8vIEFmdGVyIENpcmNvbSAyLjAuNywgQmxhaW5lIGFkZGVkIGV4cG9ydGVkIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyBtaW5vciBhbmQgcGF0Y2ggdmVyc2lvbnNcbiAgICBsZXQgbWlub3JWZXJzaW9uID0gMDtcbiAgICAvLyBJZiB3ZSBjYW4ndCBsb29rIHVwIHRoZSBwYXRjaCB2ZXJzaW9uLCBhc3N1bWUgdGhlIGxvd2VzdFxuICAgIGxldCBwYXRjaFZlcnNpb24gPSAwO1xuXG4gICAgbGV0IGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBmYWxzZTtcblxuICAgIC8vIElmIGNvZGUgaXMgYWxyZWFkeSBwcmVwYXJlZCBXZWJBc3NlbWJseS5JbnN0YW5jZSwgd2UgdXNlIGl0IGRpcmVjdGx5XG4gICAgaWYgKGNvZGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5JbnN0YW5jZSkge1xuICAgICAgICBpbnN0YW5jZSA9IGNvZGU7XG4gICAgICAgIGNvZGVJc1dlYkFzc2VtYmx5SW5zdGFuY2UgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBtZW1vcnlTaXplID0gMzI3Njc7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMubWVtb3J5U2l6ZSkge1xuICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgaW50XG4gICAgICAgICAgICBtZW1vcnlTaXplID0gcGFyc2VJbnQob3B0aW9ucy5tZW1vcnlTaXplKTtcbiAgICAgICAgICAgIGlmIChtZW1vcnlTaXplIDwgMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgbWVtb3J5IHNpemVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbWVtb3J5QWxsb2NhdGVkID0gZmFsc2U7XG4gICAgICAgIHdoaWxlICghbWVtb3J5QWxsb2NhdGVkKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG1lbW9yeSA9IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IG1lbW9yeVNpemV9KTtcbiAgICAgICAgICAgICAgICBtZW1vcnlBbGxvY2F0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKG1lbW9yeVNpemUgPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkNvdWxkIG5vdCBhbGxvY2F0ZSBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgKyBcIiBieXRlcy4gVGhpcyBtYXkgY2F1c2Ugc2V2ZXJlIGluc3RhYmlsaXR5LiBUcnlpbmcgd2l0aCBcIiArIG1lbW9yeVNpemUgKiAxMDI0ICogNjQgLyAyICsgXCIgYnl0ZXNcIik7XG4gICAgICAgICAgICAgICAgbWVtb3J5U2l6ZSA9IE1hdGguZmxvb3IobWVtb3J5U2l6ZSAvIDIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XG5cbiAgICAgICAgbGV0IGVyclN0ciA9IFwiXCI7XG4gICAgICAgIGxldCBtc2dTdHIgPSBcIlwiO1xuXG4gICAgICAgIGluc3RhbmNlID0gYXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUod2FzbU1vZHVsZSwge1xuICAgICAgICAgICAgZW52OiB7XG4gICAgICAgICAgICAgICAgXCJtZW1vcnlcIjogbWVtb3J5XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnVudGltZToge1xuICAgICAgICAgICAgICAgIHByaW50RGVidWcgOiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInByaW50RGVidWc6XCIsIHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZXI6IGZ1bmN0aW9uIChjb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIlNpZ25hbCBub3QgZm91bmQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVG9vIG1hbnkgc2lnbmFscyBzZXQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiU2lnbmFsIGFscmVhZHkgc2V0LiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBcIkFzc2VydCBGYWlsZWQuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiTm90IGVub3VnaCBtZW1vcnkuIFwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiSW5wdXQgc2lnbmFsIGFycmF5IGFjY2VzcyBleGNlZWRzIHRoZSBzaXplLiBcIjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IFwiVW5rbm93biBlcnJvci4gXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyciArIGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBBIG5ldyB3YXkgb2YgbG9nZ2luZyBtZXNzYWdlcyB3YXMgYWRkZWQgaW4gQ2lyY29tIDIuMC43IHRoYXQgcmVxdWlyZXMgMiBuZXcgaW1wb3J0c1xuICAgICAgICAgICAgICAgIC8vIGBwcmludEVycm9yTWVzc2FnZWAgYW5kIGB3cml0ZUJ1ZmZlck1lc3NhZ2VgLlxuICAgICAgICAgICAgICAgIHByaW50RXJyb3JNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGVyclN0ciArPSBnZXRNZXNzYWdlKCkgKyBcIlxcblwiO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgd3JpdGVCdWZmZXJNZXNzYWdlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1zZyA9IGdldE1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQW55IGNhbGxzIHRvIGBsb2coKWAgd2lsbCBhbHdheXMgZW5kIHdpdGggYSBgXFxuYCwgc28gdGhhdCdzIHdoZW4gd2UgcHJpbnQgYW5kIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cgPT09IFwiXFxuXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKG1zZ1N0cik7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UndmUgYnVmZmVyZWQgb3RoZXIgY29udGVudCwgcHV0IGEgc3BhY2UgaW4gYmV0d2VlbiB0aGUgaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2dTdHIgIT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVuIGFwcGVuZCB0aGUgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSB3ZSBhcmUgY3JlYXRpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1N0ciArPSBtc2c7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNob3dTaGFyZWRSV01lbW9yeTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFyZWRfcndfbWVtb3J5X3NpemUgPSBpbnN0YW5jZS5leHBvcnRzLmdldEZpZWxkTnVtTGVuMzIoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IFVpbnQzMkFycmF5KHNoYXJlZF9yd19tZW1vcnlfc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2hhcmVkX3J3X21lbW9yeV9zaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycltzaGFyZWRfcndfbWVtb3J5X3NpemUgLSAxIC0gal0gPSBpbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIEluIGNpcmNvbSAyLjAuNywgdGhleSBjaGFuZ2VkIHRoZSBsb2coKSBmdW5jdGlvbiB0byBhbGxvdyBzdHJpbmdzIGFuZCBjaGFuZ2VkIHRoZVxuICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgQVBJLiBUaGlzIHNtb290aGVzIG92ZXIgdGhlIGJyZWFraW5nIGNoYW5nZS5cbiAgICAgICAgICAgICAgICAgICAgaWYgKG1ham9yVmVyc2lvbiA+PSAyICYmIChtaW5vclZlcnNpb24gPj0gMSB8fCBwYXRjaFZlcnNpb24gPj0gNykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3ZlIGJ1ZmZlcmVkIG90aGVyIGNvbnRlbnQsIHB1dCBhIHNwYWNlIGluIGJldHdlZW4gdGhlIGl0ZW1zXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobXNnU3RyICE9PSBcIlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnU3RyICs9IFwiIFwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiBhcHBlbmQgdGhlIHZhbHVlIHRvIHRoZSBtZXNzYWdlIHdlIGFyZSBjcmVhdGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXNnID0gKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dTdHIgKz0gbXNnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbiAoY29kZSwgcHN0ciwgYSwgYiwgYywgZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyU3RyO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIHdjLmdldEZyKGIpLnRvU3RyaW5nKCkgKyBcIiAhPSBcIiArIHdjLmdldEZyKGMpLnRvU3RyaW5nKCkgKyBcIiBcIiArIHAyc3RyKGQpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyclN0ciA9IHAyc3RyKHBzdHIpICsgXCIgXCIgKyB3Yy5nZXRGcihiKS50b1N0cmluZygpICsgXCIgXCIgKyBwMnN0cihjKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoY29kZSA9PT0gNSkgJiYgKG9wdGlvbnMuc3ltKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyU3RyID0gcDJzdHIocHN0cikgKyBcIiBcIiArIG9wdGlvbnMuc3ltLmxhYmVsSWR4Mk5hbWVbY107XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJTdHIgPSBwMnN0cihwc3RyKSArIFwiIFwiICsgYSArIFwiIFwiICsgYiArIFwiIFwiICsgYyArIFwiIFwiICsgZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkVSUk9SOiBcIiwgY29kZSwgZXJyU3RyKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyclN0cik7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2c6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHdjLmdldEZyKGEpLnRvU3RyaW5nKCkpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9nR2V0U2lnbmFsOiBmdW5jdGlvbiAoc2lnbmFsLCBwVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmxvZ0dldFNpZ25hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dHZXRTaWduYWwoc2lnbmFsLCB3Yy5nZXRGcihwVmFsKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ1NldFNpZ25hbDogZnVuY3Rpb24gKHNpZ25hbCwgcFZhbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5sb2dTZXRTaWduYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU2V0U2lnbmFsKHNpZ25hbCwgd2MuZ2V0RnIocFZhbCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2dTdGFydENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQoY0lkeCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvZ0ZpbmlzaENvbXBvbmVudDogZnVuY3Rpb24gKGNJZHgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmxvZ0ZpbmlzaENvbXBvbmVudChjSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIG1ham9yVmVyc2lvbiA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0VmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0TWlub3JWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBtaW5vclZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldE1pbm9yVmVyc2lvbigpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGluc3RhbmNlLmV4cG9ydHMuZ2V0UGF0Y2hWZXJzaW9uID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBwYXRjaFZlcnNpb24gPSBpbnN0YW5jZS5leHBvcnRzLmdldFBhdGNoVmVyc2lvbigpO1xuICAgIH1cblxuICAgIGNvbnN0IHNhbml0eUNoZWNrID1cbiAgICAgICAgb3B0aW9ucyAmJlxuICAgICAgICAoXG4gICAgICAgICAgICBvcHRpb25zLnNhbml0eUNoZWNrIHx8XG4gICAgICAgICAgICBvcHRpb25zLmxvZ0dldFNpZ25hbCB8fFxuICAgICAgICAgICAgb3B0aW9ucy5sb2dTZXRTaWduYWwgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nU3RhcnRDb21wb25lbnQgfHxcbiAgICAgICAgICAgIG9wdGlvbnMubG9nRmluaXNoQ29tcG9uZW50XG4gICAgICAgICk7XG5cbiAgICAvLyBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciBtYWpvciB2ZXJzaW9uIDIgaW4gY2FzZSB0aGVyZSdzIGEgY2lyY29tIHYzIGluIHRoZSBmdXR1cmVcbiAgICBpZiAobWFqb3JWZXJzaW9uID09PSAyKSB7XG4gICAgICAgIHdjID0gbmV3IFdpdG5lc3NDYWxjdWxhdG9yQ2lyY29tMihpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSBpZiAobWFqb3JWZXJzaW9uID09PSAxKSB7XG4gICAgICAgIGlmIChjb2RlSXNXZWJBc3NlbWJseUluc3RhbmNlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvYWRpbmcgY29kZSBmcm9tIFdlYkFzc2VtYmx5IGluc3RhbmNlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGNpcmNvbSB2ZXJzaW9uIDEnKTtcbiAgICAgICAgfVxuICAgICAgICB3YyA9IG5ldyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTEobWVtb3J5LCBpbnN0YW5jZSwgc2FuaXR5Q2hlY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY2lyY29tIHZlcnNpb246ICR7bWFqb3JWZXJzaW9ufWApO1xuICAgIH1cbiAgICByZXR1cm4gd2M7XG5cbiAgICBmdW5jdGlvbiBnZXRNZXNzYWdlKCkge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IFwiXCI7XG4gICAgICAgIGxldCBjID0gaW5zdGFuY2UuZXhwb3J0cy5nZXRNZXNzYWdlQ2hhcigpO1xuICAgICAgICB3aGlsZSAoYyAhPT0gMCkge1xuICAgICAgICAgICAgbWVzc2FnZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICAgICAgYyA9IGluc3RhbmNlLmV4cG9ydHMuZ2V0TWVzc2FnZUNoYXIoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwMnN0cihwKSB7XG4gICAgICAgIGNvbnN0IGk4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG5cbiAgICAgICAgY29uc3QgYnl0ZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaThbcCArIGldID4gMDsgaSsrKSBieXRlcy5wdXNoKGk4W3AgKyBpXSk7XG5cbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgYnl0ZXMpO1xuICAgIH1cbn1cblxuY2xhc3MgV2l0bmVzc0NhbGN1bGF0b3JDaXJjb20xIHtcbiAgICBjb25zdHJ1Y3RvcihtZW1vcnksIGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLm1lbW9yeSA9IG1lbW9yeTtcbiAgICAgICAgdGhpcy5pMzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcblxuICAgICAgICB0aGlzLm4zMiA9ICh0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RnJMZW4oKSA+PiAyKSAtIDI7XG4gICAgICAgIGNvbnN0IHBSYXdQcmltZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRQUmF3UHJpbWUoKTtcblxuICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaTMyWyhwUmF3UHJpbWUgPj4gMikgKyBpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucHJpbWUgPSBTY2FsYXIuZnJvbUFycmF5KGFyciwgMHgxMDAwMDAwMDApO1xuXG4gICAgICAgIHRoaXMuRnIgPSBuZXcgRjFGaWVsZCh0aGlzLnByaW1lKTtcblxuICAgICAgICB0aGlzLm1hc2szMiA9IFNjYWxhci5mcm9tU3RyaW5nKFwiRkZGRkZGRkZcIiwgMTYpO1xuICAgICAgICB0aGlzLk5WYXJzID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldE5WYXJzKCk7XG4gICAgICAgIHRoaXMubjY0ID0gTWF0aC5mbG9vcigodGhpcy5Gci5iaXRMZW5ndGggLSAxKSAvIDY0KSArIDE7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuRnIuZShTY2FsYXIuc2hpZnRMZWZ0KDEsIHRoaXMubjY0ICogNjQpKTtcbiAgICAgICAgdGhpcy5SSW52ID0gdGhpcy5Gci5pbnYodGhpcy5SKTtcbiAgICAgICAgdGhpcy5zYW5pdHlDaGVjayA9IHNhbml0eUNoZWNrO1xuICAgIH1cblxuICAgIGNpcmNvbV92ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICBhc3luYyBfZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IHBTaWdPZmZzZXQgPSB0aGlzLmFsbG9jSW50KCk7XG4gICAgICAgIGNvbnN0IHBGciA9IHRoaXMuYWxsb2NGcigpO1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXQpO1xuICAgICAgICBrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGggPSBmbnZIYXNoKGspO1xuICAgICAgICAgICAgY29uc3QgaE1TQiA9IHBhcnNlSW50KGguc2xpY2UoMCwgOCksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGhMU0IgPSBwYXJzZUludChoLnNsaWNlKDgsIDE2KSwgMTYpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0U2lnbmFsT2Zmc2V0MzIocFNpZ09mZnNldCwgMCwgaE1TQiwgaExTQik7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNpZ25hbCAke2t9IGlzIG5vdCBhbiBpbnB1dCBvZiB0aGUgY2lyY3VpdC5gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHNpZ09mZnNldCA9IHRoaXMuZ2V0SW50KHBTaWdPZmZzZXQpO1xuICAgICAgICAgICAgY29uc3QgZkFyciA9IGZsYXRBcnJheShpbnB1dFtrXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZyKHBGciwgZkFycltpXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLnNldFNpZ25hbCgwLCAwLCBzaWdPZmZzZXQgKyBpLCBwRnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG4gICAgICAgIGNvbnN0IHcgPSBbXTtcblxuICAgICAgICBhd2FpdCBzZWxmLl9kb0NhbGN1bGF0ZVdpdG5lc3MoaW5wdXQsIHNhbml0eUNoZWNrKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYuTlZhcnM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcFdpdG5lc3MgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0UFdpdG5lc3MoaSk7XG4gICAgICAgICAgICB3LnB1c2goc2VsZi5nZXRGcihwV2l0bmVzcykpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5pMzJbMF0gPSBvbGQwO1xuICAgICAgICByZXR1cm4gdztcbiAgICB9XG5cbiAgICBhc3luYyBjYWxjdWxhdGVCaW5XaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjaykge1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBjb25zdCBvbGQwID0gc2VsZi5pMzJbMF07XG5cbiAgICAgICAgYXdhaXQgc2VsZi5fZG9DYWxjdWxhdGVXaXRuZXNzKGlucHV0LCBzYW5pdHlDaGVjayk7XG5cbiAgICAgICAgY29uc3QgcFdpdG5lc3NCdWZmZXIgPSBzZWxmLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzc0J1ZmZlcigpO1xuXG4gICAgICAgIHNlbGYuaTMyWzBdID0gb2xkMDtcblxuICAgICAgICBjb25zdCBidWZmID0gc2VsZi5tZW1vcnkuYnVmZmVyLnNsaWNlKHBXaXRuZXNzQnVmZmVyLCBwV2l0bmVzc0J1ZmZlciArIChzZWxmLk5WYXJzICogc2VsZi5uNjQgKiA4KSk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShidWZmKTtcbiAgICB9XG5cbiAgICBhbGxvY0ludCgpIHtcbiAgICAgICAgY29uc3QgcCA9IHRoaXMuaTMyWzBdO1xuICAgICAgICB0aGlzLmkzMlswXSA9IHAgKyA4O1xuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY0ZyKCkge1xuICAgICAgICBjb25zdCBwID0gdGhpcy5pMzJbMF07XG4gICAgICAgIHRoaXMuaTMyWzBdID0gcCArIHRoaXMubjMyICogNCArIDg7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGdldEludChwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmkzMltwID4+IDJdO1xuICAgIH1cblxuICAgIHNldEludChwLCB2KSB7XG4gICAgICAgIHRoaXMuaTMyW3AgPj4gMl0gPSB2O1xuICAgIH1cblxuICAgIGdldEZyKHApIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGlkeCA9IChwID4+IDIpO1xuXG4gICAgICAgIGlmIChzZWxmLmkzMltpZHggKyAxXSAmIDB4ODAwMDAwMDApIHtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShzZWxmLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbc2VsZi5uMzIgLSAxIC0gaV0gPSBzZWxmLmkzMltpZHggKyAyICsgaV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZXMgPSBzZWxmLkZyLmUoU2NhbGFyLmZyb21BcnJheShhcnIsIDB4MTAwMDAwMDAwKSk7XG4gICAgICAgICAgICBpZiAoc2VsZi5pMzJbaWR4ICsgMV0gJiAweDQwMDAwMDAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZyb21Nb250Z29tZXJ5KHJlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWxmLmkzMltpZHhdICYgMHg4MDAwMDAwMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLmUoc2VsZi5pMzJbaWR4XSAtIDB4MTAwMDAwMDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRnIuZShzZWxmLmkzMltpZHhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGZyb21Nb250Z29tZXJ5KG4pIHtcbiAgICAgICAgICAgIHJldHVybiBzZWxmLkZyLm11bChzZWxmLlJJbnYsIG4pO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIHNldEZyKHAsIHYpIHtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgdiA9IHNlbGYuRnIuZSh2KTtcblxuICAgICAgICBjb25zdCBtaW5TaG9ydCA9IHNlbGYuRnIubmVnKHNlbGYuRnIuZShcIjgwMDAwMDAwXCIsIDE2KSk7XG4gICAgICAgIGNvbnN0IG1heFNob3J0ID0gc2VsZi5Gci5lKFwiN0ZGRkZGRkZcIiwgMTYpO1xuXG4gICAgICAgIGlmICgoc2VsZi5Gci5nZXEodiwgbWluU2hvcnQpKVxuICAgICAgICAgICAgJiYgKHNlbGYuRnIubGVxKHYsIG1heFNob3J0KSkpIHtcbiAgICAgICAgICAgIGxldCBhO1xuICAgICAgICAgICAgaWYgKHNlbGYuRnIuZ2VxKHYsIHNlbGYuRnIuemVybykpIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHYpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBhID0gU2NhbGFyLnRvTnVtYmVyKHNlbGYuRnIuc3ViKHYsIG1pblNob3J0KSk7XG4gICAgICAgICAgICAgICAgYSA9IGEgLSAweDgwMDAwMDAwO1xuICAgICAgICAgICAgICAgIGEgPSAweDEwMDAwMDAwMCArIGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSBhO1xuICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAxXSA9IDA7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKV0gPSAwO1xuICAgICAgICBzZWxmLmkzMlsocCA+PiAyKSArIDFdID0gMHg4MDAwMDAwMDtcbiAgICAgICAgY29uc3QgYXJyID0gU2NhbGFyLnRvQXJyYXkodiwgMHgxMDAwMDAwMDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlbGYubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IGFyci5sZW5ndGggLSAxIC0gaTtcblxuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSBhcnJbaWR4XTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZi5pMzJbKHAgPj4gMikgKyAyICsgaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG5jbGFzcyBXaXRuZXNzQ2FsY3VsYXRvckNpcmNvbTIge1xuICAgIGNvbnN0cnVjdG9yKGluc3RhbmNlLCBzYW5pdHlDaGVjaykge1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFZlcnNpb24oKTtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0RmllbGROdW1MZW4zMigpO1xuXG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRSYXdQcmltZSgpO1xuICAgICAgICBjb25zdCBhcnIgPSBuZXcgVWludDMyQXJyYXkodGhpcy5uMzIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubjMyOyBpKyspIHtcbiAgICAgICAgICAgIGFyclt0aGlzLm4zMiAtIDEgLSBpXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcmltZSA9IFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCk7XG5cbiAgICAgICAgdGhpcy53aXRuZXNzU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRXaXRuZXNzU2l6ZSgpO1xuXG4gICAgICAgIHRoaXMuc2FuaXR5Q2hlY2sgPSBzYW5pdHlDaGVjaztcbiAgICB9XG5cbiAgICBjaXJjb21fdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRWZXJzaW9uKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgLy9pbnB1dCBpcyBhc3N1bWVkIHRvIGJlIGEgbWFwIGZyb20gc2lnbmFscyB0byBhcnJheXMgb2YgYmlnaW50c1xuICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuaW5pdCgodGhpcy5zYW5pdHlDaGVjayB8fCBzYW5pdHlDaGVjaykgPyAxIDogMCk7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpbnB1dCk7XG4gICAgICAgIGxldCBpbnB1dF9jb3VudGVyID0gMDtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBoID0gZm52SGFzaChrKTtcbiAgICAgICAgICAgIGNvbnN0IGhNU0IgPSBwYXJzZUludChoLnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgICAgICBjb25zdCBoTFNCID0gcGFyc2VJbnQoaC5zbGljZSg4LCAxNiksIDE2KTtcbiAgICAgICAgICAgIGNvbnN0IGZBcnIgPSBmbGF0QXJyYXkoaW5wdXRba10pO1xuICAgICAgICAgICAgLy8gU2xpZ2h0IGRldmlhdGlvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pZGVuMy9jaXJjb20vYmxvYi92Mi4xLjYvY29kZV9wcm9kdWNlcnMvc3JjL3dhc21fZWxlbWVudHMvY29tbW9uL3dpdG5lc3NfY2FsY3VsYXRvci5qc1xuICAgICAgICAgICAgLy8gYmVjYXVzZSBJIGRvbid0IGtub3cgd2hlbiB0aGlzIGV4cG9ydGVkIGZ1bmN0aW9uIHdhcyBhZGRlZFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0SW5wdXRTaWduYWxTaXplID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBsZXQgc2lnbmFsU2l6ZSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpZ25hbFNpemUoaE1TQiwgaExTQik7XG4gICAgICAgICAgICAgICAgaWYgKHNpZ25hbFNpemUgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU2lnbmFsICR7a30gbm90IGZvdW5kXFxuYCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmQXJyLmxlbmd0aCA8IHNpZ25hbFNpemUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgZW5vdWdoIHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZBcnIubGVuZ3RoID4gc2lnbmFsU2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRvbyBtYW55IHZhbHVlcyBmb3IgaW5wdXQgc2lnbmFsICR7a31cXG5gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhcnJGciA9IHRvQXJyYXkzMihub3JtYWxpemUoZkFycltpXSwgdGhpcy5wcmltZSksIHRoaXMubjMyKTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLndyaXRlU2hhcmVkUldNZW1vcnkoaiwgYXJyRnJbdGhpcy5uMzIgLSAxIC0gal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuc2V0SW5wdXRTaWduYWwoaE1TQiwgaExTQiwgaSk7XG4gICAgICAgICAgICAgICAgICAgIGlucHV0X2NvdW50ZXIrKztcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYEFmdGVyIGFkZGluZyBzaWduYWwgJHtpfSBvZiAke2t9YClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5wdXRfY291bnRlciA8IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5nZXRJbnB1dFNpemUoKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgYWxsIGlucHV0cyBoYXZlIGJlZW4gc2V0LiBPbmx5ICR7aW5wdXRfY291bnRlcn0gb3V0IG9mICR7dGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldElucHV0U2l6ZSgpfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgdyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm4zMik7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMubjMyOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbdGhpcy5uMzIgLSAxIC0gal0gPSB0aGlzLmluc3RhbmNlLmV4cG9ydHMucmVhZFNoYXJlZFJXTWVtb3J5KGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdy5wdXNoKFNjYWxhci5mcm9tQXJyYXkoYXJyLCAweDEwMDAwMDAwMCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHc7XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsY3VsYXRlV1ROU0JpbihpbnB1dCwgc2FuaXR5Q2hlY2spIHtcbiAgICAgICAgY29uc3QgYnVmZjMyID0gbmV3IFVpbnQzMkFycmF5KHRoaXMud2l0bmVzc1NpemUgKiB0aGlzLm4zMiArIHRoaXMubjMyICsgMTEpO1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoYnVmZjMyLmJ1ZmZlcik7XG4gICAgICAgIGF3YWl0IHRoaXMuX2RvQ2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgc2FuaXR5Q2hlY2spO1xuXG4gICAgICAgIC8vXCJ3dG5zXCJcbiAgICAgICAgYnVmZlswXSA9IFwid1wiLmNoYXJDb2RlQXQoMCk7XG4gICAgICAgIGJ1ZmZbMV0gPSBcInRcIi5jaGFyQ29kZUF0KDApO1xuICAgICAgICBidWZmWzJdID0gXCJuXCIuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgYnVmZlszXSA9IFwic1wiLmNoYXJDb2RlQXQoMCk7XG5cbiAgICAgICAgLy92ZXJzaW9uIDJcbiAgICAgICAgYnVmZjMyWzFdID0gMjtcblxuICAgICAgICAvL251bWJlciBvZiBzZWN0aW9uczogMlxuICAgICAgICBidWZmMzJbMl0gPSAyO1xuXG4gICAgICAgIC8vaWQgc2VjdGlvbiAxXG4gICAgICAgIGJ1ZmYzMlszXSA9IDE7XG5cbiAgICAgICAgY29uc3QgbjggPSB0aGlzLm4zMiAqIDQ7XG4gICAgICAgIC8vaWQgc2VjdGlvbiAxIGxlbmd0aCBpbiA2NGJ5dGVzXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGggPSA4ICsgbjg7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjFsZW5ndGhIZXggPSBpZFNlY3Rpb24xbGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyWzRdID0gcGFyc2VJbnQoaWRTZWN0aW9uMWxlbmd0aEhleC5zbGljZSgwLCA4KSwgMTYpO1xuICAgICAgICBidWZmMzJbNV0gPSBwYXJzZUludChpZFNlY3Rpb24xbGVuZ3RoSGV4LnNsaWNlKDgsIDE2KSwgMTYpO1xuXG4gICAgICAgIC8vdGhpcy5uMzJcbiAgICAgICAgYnVmZjMyWzZdID0gbjg7XG5cbiAgICAgICAgLy9wcmltZSBudW1iZXJcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5leHBvcnRzLmdldFJhd1ByaW1lKCk7XG5cbiAgICAgICAgbGV0IHBvcyA9IDc7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgYnVmZjMyW3BvcyArIGpdID0gdGhpcy5pbnN0YW5jZS5leHBvcnRzLnJlYWRTaGFyZWRSV01lbW9yeShqKTtcbiAgICAgICAgfVxuICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG5cbiAgICAgICAgLy8gd2l0bmVzcyBzaXplXG4gICAgICAgIGJ1ZmYzMltwb3NdID0gdGhpcy53aXRuZXNzU2l6ZTtcbiAgICAgICAgcG9zKys7XG5cbiAgICAgICAgLy9pZCBzZWN0aW9uIDJcbiAgICAgICAgYnVmZjMyW3Bvc10gPSAyO1xuICAgICAgICBwb3MrKztcblxuICAgICAgICAvLyBzZWN0aW9uIDIgbGVuZ3RoXG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGggPSBuOCAqIHRoaXMud2l0bmVzc1NpemU7XG4gICAgICAgIGNvbnN0IGlkU2VjdGlvbjJsZW5ndGhIZXggPSBpZFNlY3Rpb24ybGVuZ3RoLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgYnVmZjMyW3Bvc10gPSBwYXJzZUludChpZFNlY3Rpb24ybGVuZ3RoSGV4LnNsaWNlKDAsIDgpLCAxNik7XG4gICAgICAgIGJ1ZmYzMltwb3MgKyAxXSA9IHBhcnNlSW50KGlkU2VjdGlvbjJsZW5ndGhIZXguc2xpY2UoOCwgMTYpLCAxNik7XG5cbiAgICAgICAgcG9zICs9IDI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy53aXRuZXNzU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLmluc3RhbmNlLmV4cG9ydHMuZ2V0V2l0bmVzcyhpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5uMzI7IGorKykge1xuICAgICAgICAgICAgICAgIGJ1ZmYzMltwb3MgKyBqXSA9IHRoaXMuaW5zdGFuY2UuZXhwb3J0cy5yZWFkU2hhcmVkUldNZW1vcnkoaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3MgKz0gdGhpcy5uMzI7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIH0gZnJvbSBcImNpcmNvbV9ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zQ2FsY3VsYXRlKF9pbnB1dCwgd2FzbUZpbGVOYW1lLCB3dG5zRmlsZU5hbWUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG4gICAgY29uc3Qgd2MgPSBhd2FpdCBXaXRuZXNzQ2FsY3VsYXRvckJ1aWxkZXIod2FzbSwgb3B0aW9ucyk7XG4gICAgaWYgKHdjLmNpcmNvbV92ZXJzaW9uKCkgPT09IDEpIHtcbiAgICAgICAgY29uc3QgdyA9IGF3YWl0IHdjLmNhbGN1bGF0ZUJpbldpdG5lc3MoaW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IGZkV3RucyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHd0bnNGaWxlTmFtZSwgXCJ3dG5zXCIsIDIsIDIpO1xuXG4gICAgICAgIGF3YWl0IHd0bnNVdGlscy53cml0ZUJpbihmZFd0bnMsIHcsIHdjLnByaW1lKTtcbiAgICAgICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmRXdG5zID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUod3Ruc0ZpbGVOYW1lKTtcblxuICAgICAgICBjb25zdCB3ID0gYXdhaXQgd2MuY2FsY3VsYXRlV1ROU0JpbihpbnB1dCk7XG5cbiAgICAgICAgYXdhaXQgZmRXdG5zLndyaXRlKHcpO1xuICAgICAgICBhd2FpdCBmZFd0bnMuY2xvc2UoKTtcbiAgICB9XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgZ3JvdGgxNl9wcm92ZSBmcm9tIFwiLi9ncm90aDE2X3Byb3ZlLmpzXCI7XG5pbXBvcnQgd3Ruc19jYWxjdWxhdGUgZnJvbSBcIi4vd3Ruc19jYWxjdWxhdGUuanNcIjtcbmltcG9ydCB7dXRpbHN9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdyb3RoMTZGdWxsUHJvdmUoX2lucHV0LCB3YXNtRmlsZSwgemtleUZpbGVOYW1lLCBsb2dnZXIsIHd0bnNDYWxjT3B0aW9ucywgcHJvdmVyT3B0aW9ucykge1xuICAgIGNvbnN0IGlucHV0ID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9pbnB1dCk7XG5cbiAgICBjb25zdCB3dG5zPSB7XG4gICAgICAgIHR5cGU6IFwibWVtXCJcbiAgICB9O1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZSwgd3Rucywgd3Ruc0NhbGNPcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgZ3JvdGgxNl9wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE2LzI2MC5wZGYgKi9cbmltcG9ydCB7IFNjYWxhciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuLypcbiAgICBsZXQgY3B1YiA9IHZrX3ZlcmlmaWVyLklDWzBdO1xuICAgIGZvciAobGV0IHM9IDA7IHM8IHZrX3ZlcmlmaWVyLm5QdWJsaWM7IHMrKykge1xuICAgICAgICBjcHViICA9IEcxLmFkZCggY3B1YiwgRzEudGltZXNTY2FsYXIoIHZrX3ZlcmlmaWVyLklDW3MrMV0sIHB1YmxpY1NpZ25hbHNbc10pKTtcbiAgICB9XG4qL1xuXG4gICAgY29uc3QgdmtfdmVyaWZpZXIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3ZrX3ZlcmlmaWVyKTtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZSh2a192ZXJpZmllci5jdXJ2ZSk7XG5cbiAgICBjb25zdCBJQzAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDWzBdKTtcbiAgICBjb25zdCBJQyA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMiAqIHB1YmxpY1NpZ25hbHMubGVuZ3RoKTtcbiAgICBjb25zdCB3ID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRnIubjggKiBwdWJsaWNTaWduYWxzLmxlbmd0aCk7XG5cbiAgICBpZiAoIXB1YmxpY0lucHV0c0FyZVZhbGlkKGN1cnZlLCBwdWJsaWNTaWduYWxzKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQdWJsaWMgaW5wdXRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYnVmZlAgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHZrX3ZlcmlmaWVyLklDW2krMV0pO1xuICAgICAgICBJQy5zZXQoYnVmZlAsIGkqY3VydmUuRzEuRi5uOCoyKTtcbiAgICAgICAgU2NhbGFyLnRvUnByTEUodywgY3VydmUuRnIubjgqaSwgcHVibGljU2lnbmFsc1tpXSwgY3VydmUuRnIubjgpO1xuICAgIH1cblxuICAgIGxldCBjcHViID0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoSUMsIHcpO1xuICAgIGNwdWIgPSBjdXJ2ZS5HMS5hZGQoY3B1YiwgSUMwKTtcblxuICAgIGNvbnN0IHBpX2EgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2EpO1xuICAgIGNvbnN0IHBpX2IgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHByb29mLnBpX2IpO1xuICAgIGNvbnN0IHBpX2MgPSBjdXJ2ZS5HMS5mcm9tT2JqZWN0KHByb29mLnBpX2MpO1xuXG4gICAgaWYgKCFpc1dlbGxDb25zdHJ1Y3RlZChjdXJ2ZSwge3BpX2EsIHBpX2IsIHBpX2N9KSkge1xuICAgICAgICBpZihsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlByb29mIGNvbW1pdG1lbnRzIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgdmtfZ2FtbWFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZ2FtbWFfMik7XG4gICAgY29uc3QgdmtfZGVsdGFfMiA9IGN1cnZlLkcyLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfZGVsdGFfMik7XG4gICAgY29uc3QgdmtfYWxwaGFfMSA9IGN1cnZlLkcxLmZyb21PYmplY3QodmtfdmVyaWZpZXIudmtfYWxwaGFfMSk7XG4gICAgY29uc3QgdmtfYmV0YV8yID0gY3VydmUuRzIuZnJvbU9iamVjdCh2a192ZXJpZmllci52a19iZXRhXzIpO1xuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgY3VydmUucGFpcmluZ0VxKFxuICAgICAgICBjdXJ2ZS5HMS5uZWcocGlfYSkgLCBwaV9iLFxuICAgICAgICBjcHViICwgdmtfZ2FtbWFfMixcbiAgICAgICAgcGlfYyAsIHZrX2RlbHRhXzIsXG5cbiAgICAgICAgdmtfYWxwaGFfMSwgdmtfYmV0YV8yXG4gICAgKTtcblxuICAgIGlmICghIHJlcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIHByb29mXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzV2VsbENvbnN0cnVjdGVkKGN1cnZlLCBwcm9vZikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRzIgPSBjdXJ2ZS5HMjtcblxuICAgIHJldHVybiBHMS5pc1ZhbGlkKHByb29mLnBpX2EpXG4gICAgICAgICYmIEcyLmlzVmFsaWQocHJvb2YucGlfYilcbiAgICAgICAgJiYgRzEuaXNWYWxpZChwcm9vZi5waV9jKTtcbn1cblxuZnVuY3Rpb24gcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY0lucHV0cykge1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBwdWJsaWNJbnB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYoIVNjYWxhci5sdChwdWJsaWNJbnB1dHNbaV0sIGN1cnZlLnIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuaW1wb3J0IHsgIHV0aWxzIH0gICBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7IHVuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiK25zdHI7XG4gICAgbnN0ciA9IGBcIjB4JHtuc3RyfVwiYDtcbiAgICByZXR1cm4gbnN0cjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNkV4cG9ydFNvbGlkaXR5Q2FsbERhdGEoX3Byb29mLCBfcHViKSB7XG4gICAgY29uc3QgcHJvb2YgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKTtcbiAgICBjb25zdCBwdWIgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1Yik7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpPTA7IGk8cHViLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpbnB1dHMgIT0gXCJcIikgaW5wdXRzID0gaW5wdXRzICsgXCIsXCI7XG4gICAgICAgIGlucHV0cyA9IGlucHV0cyArIHAyNTYocHViW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgUztcbiAgICBTPWBbJHtwMjU2KHByb29mLnBpX2FbMF0pfSwgJHtwMjU2KHByb29mLnBpX2FbMV0pfV0sYCArXG4gICAgICAgIGBbWyR7cDI1Nihwcm9vZi5waV9iWzBdWzFdKX0sICR7cDI1Nihwcm9vZi5waV9iWzBdWzBdKX1dLFske3AyNTYocHJvb2YucGlfYlsxXVsxXSl9LCAke3AyNTYocHJvb2YucGlfYlsxXVswXSl9XV0sYCArXG4gICAgICAgIGBbJHtwMjU2KHByb29mLnBpX2NbMF0pfSwgJHtwMjU2KHByb29mLnBpX2NbMV0pfV0sYCArXG4gICAgICAgIGBbJHtpbnB1dHN9XWA7XG5cbiAgICByZXR1cm4gUztcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCB7ZGVmYXVsdCBhcyBmdWxsUHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL2dyb3RoMTZfcHJvdmUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB2ZXJpZnl9IGZyb20gXCIuL2dyb3RoMTZfdmVyaWZ5LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0U29saWRpdHlDYWxsRGF0YX0gZnJvbSBcIi4vZ3JvdGgxNl9leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgYmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5cbmltcG9ydCB7IENoYUNoYSB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc2hUb0cyKGN1cnZlLCBoYXNoKSB7XG4gICAgY29uc3QgaGFzaFYgPSBuZXcgRGF0YVZpZXcoaGFzaC5idWZmZXIsIGhhc2guYnl0ZU9mZnNldCwgaGFzaC5ieXRlTGVuZ3RoKTtcbiAgICBjb25zdCBzZWVkID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICBzZWVkW2ldID0gaGFzaFYuZ2V0VWludDMyKGkqNCk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm5nID0gbmV3IENoYUNoYShzZWVkKTtcblxuICAgIGNvbnN0IGcyX3NwID0gY3VydmUuRzIuZnJvbVJuZyhybmcpO1xuXG4gICAgcmV0dXJuIGcyX3NwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RzJzcChjdXJ2ZSwgcGVyc2luYWxpemF0aW9uLCBjaGFsbGVuZ2UsIGcxcywgZzFzeCkge1xuXG4gICAgY29uc3QgaCA9IGJsYWtlMmIoNjQpO1xuICAgIGNvbnN0IGIxID0gbmV3IFVpbnQ4QXJyYXkoW3BlcnNpbmFsaXphdGlvbl0pO1xuICAgIGgudXBkYXRlKGIxKTtcbiAgICBoLnVwZGF0ZShjaGFsbGVuZ2UpO1xuICAgIGNvbnN0IGIzID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzKTtcbiAgICBoLnVwZGF0ZSggYjMpO1xuICAgIGNvbnN0IGI0ID0gY3VydmUuRzEudG9VbmNvbXByZXNzZWQoZzFzeCk7XG4gICAgaC51cGRhdGUoIGI0KTtcbiAgICBjb25zdCBoYXNoID1oLmRpZ2VzdCgpO1xuXG4gICAgcmV0dXJuIGhhc2hUb0cyKGN1cnZlLCBoYXNoKTtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUHViS2V5KGssIGN1cnZlLCBwZXJzb25hbGl6YXRpb24sIGNoYWxsZW5nZUhhc2gsIHJuZyApIHtcbiAgICBrLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGsuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGsuZzFfcywgay5wcnZLZXkpKTtcbiAgICBrLmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoZ2V0RzJzcChjdXJ2ZSwgcGVyc29uYWxpemF0aW9uLCBjaGFsbGVuZ2VIYXNoLCBrLmcxX3MsIGsuZzFfc3gpKTtcbiAgICBrLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoay5nMl9zcCwgay5wcnZLZXkpKTtcbiAgICByZXR1cm4gaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBUYXVLZXkoY3VydmUsIGNoYWxsZW5nZUhhc2gsIHJuZykge1xuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG4gICAga2V5LnRhdS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAga2V5LmFscGhhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBrZXkuYmV0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY2FsY3VsYXRlUHViS2V5KGtleS50YXUsIGN1cnZlLCAwLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYWxwaGEsIGN1cnZlLCAxLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuICAgIGNhbGN1bGF0ZVB1YktleShrZXkuYmV0YSwgY3VydmUsIDIsIGNoYWxsZW5nZUhhc2gsIHJuZyk7XG4gICAgcmV0dXJuIGtleTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbHRhS2V5KGN1cnZlLCB0cmFuc2NyaXB0LCBybmcpIHtcbiAgICBjb25zdCBkZWx0YSA9IHt9O1xuICAgIGRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBkZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBkZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzU2NhbGFyKGRlbHRhLmcxX3MsIGRlbHRhLnBydktleSkpO1xuICAgIGRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIHRyYW5zY3JpcHQpO1xuICAgIGRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzU2NhbGFyKGRlbHRhLmcyX3NwLCBkZWx0YS5wcnZLZXkpKTtcbiAgICByZXR1cm4gZGVsdGE7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXIpIHtcbiAgICAvLyBXcml0ZSB0aGUgaGVhZGVyXG4gICAgLy8vLy8vLy8vLy9cblxuICAgIGlmICghIGNlcmVtb255UG93ZXIpIGNlcmVtb255UG93ZXIgPSBwb3dlcjtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDEpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBIZWFkZXJTaXplID0gZmQucG9zO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoMCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGN1cnZlLkYxLm42NCo4KTtcblxuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCk7XG4gICAgU2NhbGFyLnRvUnByTEUoYnVmZiwgMCwgY3VydmUucSwgY3VydmUuRjEubjgpO1xuICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmYpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIocG93ZXIpOyAgICAgICAgICAgICAgICAgICAgLy8gcG93ZXJcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNlcmVtb255UG93ZXIpOyAgICAgICAgICAgICAgIC8vIHBvd2VyXG5cbiAgICBjb25zdCBoZWFkZXJTaXplID0gZmQucG9zIC0gcEhlYWRlclNpemUgLSA4O1xuXG4gICAgY29uc3Qgb2xkUG9zID0gZmQucG9zO1xuXG4gICAgYXdhaXQgZmQud3JpdGVVTEU2NChoZWFkZXJTaXplLCBwSGVhZGVyU2l6ZSk7XG5cbiAgICBmZC5wb3MgPSBvbGRQb3M7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUFRhdUhlYWRlcihmZCwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzFdKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBoZWFkZXJcIik7XG4gICAgaWYgKHNlY3Rpb25zWzFdLmxlbmd0aD4xKSB0aHJvdyBuZXcgRXJyb3IoZmQuZmlsZU5hbWUgK1wiOiBGaWxlIGhhcyBtb3JlIHRoYW4gb25lIGhlYWRlclwiKTtcblxuICAgIGZkLnBvcyA9IHNlY3Rpb25zWzFdWzBdLnA7XG4gICAgY29uc3QgbjggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChuOCk7XG4gICAgY29uc3QgcSA9IFNjYWxhci5mcm9tUnByTEUoYnVmZik7XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlRnJvbVEocSk7XG5cbiAgICBpZiAoY3VydmUuRjEubjY0KjggIT0gbjgpIHRocm93IG5ldyBFcnJvcihmZC5maWxlTmFtZSArXCI6IEludmFsaWQgc2l6ZVwiKTtcblxuICAgIGNvbnN0IHBvd2VyID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY2VyZW1vbnlQb3dlciA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgaWYgKGZkLnBvcy1zZWN0aW9uc1sxXVswXS5wICE9IHNlY3Rpb25zWzFdWzBdLnNpemUpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUFRhdSBoZWFkZXIgc2l6ZVwiKTtcblxuICAgIHJldHVybiB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfTtcbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFB0YXVQdWJLZXkoZmQsIGN1cnZlLCBtb250Z29tZXJ5KSB7XG5cbiAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5GMS5uOCoyKjYgKyBjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgcmV0dXJuIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIDAsIGN1cnZlLCBtb250Z29tZXJ5KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIG1vbnRnb21lcnkpIHtcblxuICAgIGNvbnN0IGtleSA9IHtcbiAgICAgICAgdGF1OiB7fSxcbiAgICAgICAgYWxwaGE6IHt9LFxuICAgICAgICBiZXRhOiB7fVxuICAgIH07XG5cbiAgICBrZXkudGF1LmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcxX3N4ID0gcmVhZEcxKCk7XG4gICAga2V5LmFscGhhLmcxX3MgPSByZWFkRzEoKTtcbiAgICBrZXkuYWxwaGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkuYmV0YS5nMV9zID0gcmVhZEcxKCk7XG4gICAga2V5LmJldGEuZzFfc3ggPSByZWFkRzEoKTtcbiAgICBrZXkudGF1LmcyX3NweCA9IHJlYWRHMigpO1xuICAgIGtleS5hbHBoYS5nMl9zcHggPSByZWFkRzIoKTtcbiAgICBrZXkuYmV0YS5nMl9zcHggPSByZWFkRzIoKTtcblxuICAgIHJldHVybiBrZXk7XG5cbiAgICBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGxldCBwO1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJMRU0oIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCA9IGN1cnZlLkcxLmZyb21ScHJVbmNvbXByZXNzZWQoIGJ1ZmYsIHBvcyApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRHMigpIHtcbiAgICAgICAgbGV0IHA7XG4gICAgICAgIGlmIChtb250Z29tZXJ5KSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwckxFTSggYnVmZiwgcG9zICk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwID0gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZCggYnVmZiwgcG9zICk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkcyLkYubjgqMjtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9QdGF1UHViS2V5UnByKGJ1ZmYsIHBvcywgY3VydmUsIGtleSwgbW9udGdvbWVyeSkge1xuXG4gICAgd3JpdGVHMShrZXkudGF1LmcxX3MpO1xuICAgIHdyaXRlRzEoa2V5LnRhdS5nMV9zeCk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYWxwaGEuZzFfc3gpO1xuICAgIHdyaXRlRzEoa2V5LmJldGEuZzFfcyk7XG4gICAgd3JpdGVHMShrZXkuYmV0YS5nMV9zeCk7XG4gICAgd3JpdGVHMihrZXkudGF1LmcyX3NweCk7XG4gICAgd3JpdGVHMihrZXkuYWxwaGEuZzJfc3B4KTtcbiAgICB3cml0ZUcyKGtleS5iZXRhLmcyX3NweCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKHApIHtcbiAgICAgICAgaWYgKG1vbnRnb21lcnkpIHtcbiAgICAgICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChidWZmLCBwb3MsIHApO1xuICAgICAgICB9XG4gICAgICAgIHBvcyArPSBjdXJ2ZS5GMS5uOCoyO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIocCkge1xuICAgICAgICBpZiAobW9udGdvbWVyeSkge1xuICAgICAgICAgICAgY3VydmUuRzIudG9ScHJMRU0oYnVmZiwgcG9zLCBwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIHBvcywgcCk7XG4gICAgICAgIH1cbiAgICAgICAgcG9zICs9IGN1cnZlLkYyLm44KjI7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBrZXksIG1vbnRnb21lcnkpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRjEubjgqMio2ICsgY3VydmUuRjIubjgqMiozKTtcbiAgICB0b1B0YXVQdWJLZXlScHIoYnVmZiwgMCwgY3VydmUsIGtleSwgbW9udGdvbWVyeSk7XG4gICAgYXdhaXQgZmQud3JpdGUoYnVmZik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb24oZmQsIGN1cnZlKSB7XG4gICAgY29uc3QgYyA9IHt9O1xuXG4gICAgYy50YXVHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMudGF1RzIgPSBhd2FpdCByZWFkRzIoKTtcbiAgICBjLmFscGhhRzEgPSBhd2FpdCByZWFkRzEoKTtcbiAgICBjLmJldGFHMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGMuYmV0YUcyID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgYy5rZXkgPSBhd2FpdCByZWFkUHRhdVB1YktleShmZCwgY3VydmUsIHRydWUpO1xuICAgIGMucGFydGlhbEhhc2ggPSBhd2FpdCBmZC5yZWFkKDIxNik7XG4gICAgYy5uZXh0Q2hhbGxlbmdlID0gYXdhaXQgZmQucmVhZCg2NCk7XG4gICAgYy50eXBlID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBjb25zdCBidWZmViAgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIqNitjdXJ2ZS5HMi5GLm44KjIqMyk7XG4gICAgdG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgYy5rZXksIGZhbHNlKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goYy5wYXJ0aWFsSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGJ1ZmZWKTtcbiAgICBjLnJlc3BvbnNlSGFzaCA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgY29uc3QgcGFyYW1MZW5ndGggPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICBjb25zdCBjdXJQb3MgPSBmZC5wb3M7XG4gICAgbGV0IGxhc3RUeXBlID0wO1xuICAgIHdoaWxlIChmZC5wb3MtY3VyUG9zIDwgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgY29uc3QgYnVmZlR5cGUgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgIGlmIChidWZmVHlwZVswXTw9IGxhc3RUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJQYXJhbWV0ZXJzIGluIHRoZSBjb250cmlidXRpb24gbXVzdCBiZSBzb3J0ZWRcIik7XG4gICAgICAgIGxhc3RUeXBlID0gYnVmZlR5cGVbMF07XG4gICAgICAgIGlmIChidWZmVHlwZVswXT09MSkgeyAgICAgLy8gTmFtZVxuICAgICAgICAgICAgY29uc3QgYnVmZkxlbiA9IGF3YWl0IHJlYWREVigxKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTdHIgPSBhd2FpdCByZWFkRFYoYnVmZkxlblswXSk7XG4gICAgICAgICAgICBjLm5hbWUgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUoYnVmZlN0cik7XG4gICAgICAgIH0gZWxzZSBpZiAoYnVmZlR5cGVbMF09PTIpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZFeHAgPSBhd2FpdCByZWFkRFYoMSk7XG4gICAgICAgICAgICBjLm51bUl0ZXJhdGlvbnNFeHAgPSBidWZmRXhwWzBdO1xuICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZUeXBlWzBdPT0zKSB7XG4gICAgICAgICAgICBjb25zdCBidWZmTGVuID0gYXdhaXQgcmVhZERWKDEpO1xuICAgICAgICAgICAgYy5iZWFjb25IYXNoID0gYXdhaXQgcmVhZERWKGJ1ZmZMZW5bMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVyIG5vdCByZWNvZ25pemVkXCIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChmZC5wb3MgIT0gY3VyUG9zICsgcGFyYW1MZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyYW1ldGVycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoKSB7XG4gICAgICAgIGNvbnN0IHBCdWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwckxFTSggcEJ1ZmYgKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRFYobikge1xuICAgICAgICBjb25zdCBiID0gYXdhaXQgZmQucmVhZChuKTtcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDb250cmlidXRpb25zKGZkLCBjdXJ2ZSwgc2VjdGlvbnMpIHtcbiAgICBpZiAoIXNlY3Rpb25zWzddKSAgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICsgXCI6IEZpbGUgaGFzIG5vICBjb250cmlidXRpb25zXCIpO1xuICAgIGlmIChzZWN0aW9uc1s3XVswXS5sZW5ndGg+MSkgdGhyb3cgbmV3IEVycm9yKGZkLmZpbGVOYW1lICtcIjogRmlsZSBoYXMgbW9yZSB0aGFuIG9uZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG5cbiAgICBmZC5wb3MgPSBzZWN0aW9uc1s3XVswXS5wO1xuICAgIGNvbnN0IG5Db250cmlidXRpb25zID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IFtdO1xuICAgIGZvciAobGV0IGk9MDsgaTxuQ29udHJpYnV0aW9uczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBhd2FpdCByZWFkQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSk7XG4gICAgICAgIGMuaWQgPSBpKzE7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG5cbiAgICBpZiAoZmQucG9zLXNlY3Rpb25zWzddWzBdLnAgIT0gc2VjdGlvbnNbN11bMF0uc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb250cmlidXRpb24gc2VjdGlvbiBzaXplXCIpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uKSB7XG5cbiAgICBjb25zdCBidWZmRzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKTtcbiAgICBjb25zdCBidWZmRzIgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMi5uOCoyKTtcbiAgICBhd2FpdCB3cml0ZUcxKGNvbnRyaWJ1dGlvbi50YXVHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24udGF1RzIpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmFscGhhRzEpO1xuICAgIGF3YWl0IHdyaXRlRzEoY29udHJpYnV0aW9uLmJldGFHMSk7XG4gICAgYXdhaXQgd3JpdGVHMihjb250cmlidXRpb24uYmV0YUcyKTtcbiAgICBhd2FpdCB3cml0ZVB0YXVQdWJLZXkoZmQsIGN1cnZlLCBjb250cmlidXRpb24ua2V5LCB0cnVlKTtcbiAgICBhd2FpdCBmZC53cml0ZShjb250cmlidXRpb24ucGFydGlhbEhhc2gpO1xuICAgIGF3YWl0IGZkLndyaXRlKGNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNvbnRyaWJ1dGlvbi50eXBlIHx8IDApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gW107XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi5uYW1lKSB7XG4gICAgICAgIHBhcmFtcy5wdXNoKDEpOyAgICAgIC8vIFBhcmFtIE5hbWVcbiAgICAgICAgY29uc3QgbmFtZURhdGEgPSBuZXcgVGV4dEVuY29kZXIoXCJ1dGYtOFwiKS5lbmNvZGUoY29udHJpYnV0aW9uLm5hbWUuc3Vic3RyaW5nKDAsNjQpKTtcbiAgICAgICAgcGFyYW1zLnB1c2gobmFtZURhdGEuYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuYW1lRGF0YS5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKG5hbWVEYXRhW2ldKTtcbiAgICB9XG4gICAgaWYgKGNvbnRyaWJ1dGlvbi50eXBlID09IDEpIHtcbiAgICAgICAgcGFyYW1zLnB1c2goMik7ICAgICAgLy8gUGFyYW0gbnVtSXRlcmF0aW9uc0V4cFxuICAgICAgICBwYXJhbXMucHVzaChjb250cmlidXRpb24ubnVtSXRlcmF0aW9uc0V4cCk7XG5cbiAgICAgICAgcGFyYW1zLnB1c2goMyk7ICAgICAgLy8gQmVhY29uIEhhc2hcbiAgICAgICAgcGFyYW1zLnB1c2goY29udHJpYnV0aW9uLmJlYWNvbkhhc2guYnl0ZUxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjb250cmlidXRpb24uYmVhY29uSGFzaC5ieXRlTGVuZ3RoOyBpKyspIHBhcmFtcy5wdXNoKGNvbnRyaWJ1dGlvbi5iZWFjb25IYXNoW2ldKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5sZW5ndGg+MCkge1xuICAgICAgICBjb25zdCBwYXJhbXNCdWZmID0gbmV3IFVpbnQ4QXJyYXkocGFyYW1zKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEUzMihwYXJhbXNCdWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZC53cml0ZShwYXJhbXNCdWZmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMShwKSB7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmZHMSwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVHMihwKSB7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByTEVNKGJ1ZmZHMiwgMCwgcCk7XG4gICAgICAgIGF3YWl0IGZkLndyaXRlKGJ1ZmZHMik7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZUNvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBjb250cmlidXRpb25zKSB7XG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDcpOyAvLyBIZWFkZXIgdHlwZVxuICAgIGNvbnN0IHBDb250cmlidXRpb25zU2l6ZSA9IGZkLnBvcztcbiAgICBhd2FpdCBmZC53cml0ZVVMRTY0KDApOyAvLyBUZW1wb3JhbGx5IHNldCB0byAwIGxlbmd0aFxuXG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjb250cmlidXRpb25zLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBjb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlQ29udHJpYnV0aW9uKGZkLCBjdXJ2ZSwgY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnNTaXplID0gZmQucG9zIC0gcENvbnRyaWJ1dGlvbnNTaXplIC0gODtcblxuICAgIGNvbnN0IG9sZFBvcyA9IGZkLnBvcztcblxuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY29udHJpYnV0aW9uc1NpemUsIHBDb250cmlidXRpb25zU2l6ZSk7XG4gICAgZmQucG9zID0gb2xkUG9zO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRpbmcgRmlyc3QgQ2hhbGxlbmdlIEhhc2hcIik7XG5cbiAgICBjb25zdCBoYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG5cbiAgICBjb25zdCB2RzEgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5HMS5GLm44KjIpO1xuICAgIGNvbnN0IHZHMiA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcyLkYubjgqMik7XG4gICAgY3VydmUuRzEudG9ScHJVbmNvbXByZXNzZWQodkcxLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZCh2RzIsIDAsIGN1cnZlLkcyLmcpO1xuXG4gICAgaGFzaGVyLnVwZGF0ZShCbGFrZTJiKDY0KS5kaWdlc3QoKSk7XG5cbiAgICBsZXQgbjtcblxuICAgIG49KDIgKiogcG93ZXIpKjIgLTE7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiQ2FsY3VsYXRlIEluaXRpYWwgSGFzaDogdGF1RzFcIik7XG4gICAgaGFzaEJsb2NrKHZHMSwgbik7XG4gICAgbj0gMiAqKiBwb3dlcjtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiB0YXVHMlwiKTtcbiAgICBoYXNoQmxvY2sodkcyLCBuKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDYWxjdWxhdGUgSW5pdGlhbCBIYXNoOiBhbHBoYVRhdUcxXCIpO1xuICAgIGhhc2hCbG9jayh2RzEsIG4pO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIkNhbGN1bGF0ZSBJbml0aWFsIEhhc2g6IGJldGFUYXVHMVwiKTtcbiAgICBoYXNoQmxvY2sodkcxLCBuKTtcbiAgICBoYXNoZXIudXBkYXRlKHZHMik7XG5cbiAgICByZXR1cm4gaGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgZnVuY3Rpb24gaGFzaEJsb2NrKGJ1ZmYsIG4pIHtcbiAgICAgICAgLy8gdGhpcyBibG9jayBzaXplIGlzIGEgZ29vZCBjb21wcm9taXNlIGJldHdlZW4gc3BlZWQgYW5kIHRoZSBtYXhpbXVtXG4gICAgICAgIC8vIGlucHV0IHNpemUgb2YgdGhlIEJsYWtlMmIgdXBkYXRlIG1ldGhvZCAoNjUsNTM1LDcyMCBieXRlcykuXG4gICAgICAgIGNvbnN0IGJsb2NrU2l6ZSA9IDM0MTAwMDtcbiAgICAgICAgY29uc3QgbkJsb2NrcyA9IE1hdGguZmxvb3IobiAvIGJsb2NrU2l6ZSk7XG4gICAgICAgIGNvbnN0IHJlbSA9IG4gJSBibG9ja1NpemU7XG4gICAgICAgIGNvbnN0IGJpZ0J1ZmYgPSBuZXcgVWludDhBcnJheShibG9ja1NpemUgKiBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YmxvY2tTaXplOyBpKyspIHtcbiAgICAgICAgICAgIGJpZ0J1ZmYuc2V0KGJ1ZmYsIGkqYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkJsb2NrczsgaSsrKSB7XG4gICAgICAgICAgICBoYXNoZXIudXBkYXRlKGJpZ0J1ZmYpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiSW5pdGlhbCBoYXNoOiBcIiAraSpibG9ja1NpemUpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZW07IGkrKykge1xuICAgICAgICAgICAgaGFzaGVyLnVwZGF0ZShidWZmKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24ga2V5RnJvbUJlYWNvbihjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgYmVhY29uSGFzaCwgbnVtSXRlcmF0aW9uc0V4cCkge1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3Qga2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBjaGFsbGVuZ2VIYXNoLCBybmcpO1xuXG4gICAgcmV0dXJuIGtleTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbkhlYWRlcigxKVxuICAgIG44XG4gICAgcHJpbWVcbiAgICBwb3dlclxudGF1RzEoMilcbiAgICB7KDIgKiogcG93ZXIpKjItMX0gW1xuICAgICAgICBHMSwgdGF1KkcxLCB0YXVeMiAqIEcxLCAuLi4uXG4gICAgXVxudGF1RzIoMylcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIEcyLCB0YXUqRzIsIHRhdV4yICogRzIsIC4uLlxuICAgIF1cbmFscGhhVGF1RzEoNClcbiAgICB7MiAqKiBwb3dlcn1bXG4gICAgICAgIGFscGhhKkcxLCBhbHBoYSp0YXUqRzEsIGFscGhhKnRhdV4yKkcxLC4uLi5cbiAgICBdXG5iZXRhVGF1RzEoNSlcbiAgICB7MiAqKiBwb3dlcn0gW11cbiAgICAgICAgYmV0YSpHMSwgYmV0YSp0YXUqRzEsIGJldGEqdGF1XjIqRzEsIC4uLi5cbiAgICBdXG5iZXRhRzIoNilcbiAgICB7MX1bXG4gICAgICAgIGJldGEqRzJcbiAgICBdXG5jb250cmlidXRpb25zKDcpXG4gICAgTkNvbnRyaWJ1dGlvbnNcbiAgICB7TkNvbnRyaWJ1dGlvbnN9W1xuICAgICAgICB0YXUqRzFcbiAgICAgICAgdGF1KkcyXG4gICAgICAgIGFscGhhKkcxXG4gICAgICAgIGJldGEqRzFcbiAgICAgICAgYmV0YSpHMlxuICAgICAgICBwdWJLZXlcbiAgICAgICAgICAgIHRhdV9nMXNcbiAgICAgICAgICAgIHRhdV9nMXN4XG4gICAgICAgICAgICB0YXVfZzJzcHhcbiAgICAgICAgICAgIGFscGhhX2cxc1xuICAgICAgICAgICAgYWxwaGFfZzFzeFxuICAgICAgICAgICAgYWxwaGFfZzFzcHhcbiAgICAgICAgICAgIGJldGFfZzFzXG4gICAgICAgICAgICBiZXRhX2cxc3hcbiAgICAgICAgICAgIGJldGFfZzFzcHhcbiAgICAgICAgcGFydGlhbEhhc2ggKDIxNiBieXRlcykgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYWZpbnRvc2gvYmxha2UyYi13YXNtL2Jsb2IvMjNiZWUwNjk0NTgwNjMwOTk3N2FmODAyYmMzNzQ3Mjc1NDI2MTdjNy9ibGFrZTJiLndhdCNMOVxuICAgICAgICBoYXNoTmV3Q2hhbGxlbmdlXG4gICAgXVxuICovXG5cbmltcG9ydCAqIGFzIHB0YXVVdGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbmV3QWNjdW11bGF0b3IoY3VydmUsIHBvd2VyLCBmaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCBmZCA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKGZpbGVOYW1lLCBcInB0YXVcIiwgMSwgNyk7XG5cbiAgICBhd2FpdCBwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkLCBjdXJ2ZSwgcG93ZXIsIDApO1xuXG4gICAgY29uc3QgYnVmZkcxID0gY3VydmUuRzEub25lQWZmaW5lO1xuICAgIGNvbnN0IGJ1ZmZHMiA9IGN1cnZlLkcyLm9uZUFmZmluZTtcblxuICAgIC8vIFdyaXRlIHRhdUcxXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRXcml0ZVNlY3Rpb24oZmQsIDIpO1xuICAgIGNvbnN0IG5UYXVHMSA9ICgyICoqIHBvd2VyKSAqIDIgLTE7XG4gICAgZm9yIChsZXQgaT0wOyBpPCBuVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwidGF1RzE6IFwiICsgaSk7XG4gICAgfVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gV3JpdGUgdGF1RzJcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG4gICAgY29uc3QgblRhdUcyID0gKDIgKiogcG93ZXIpO1xuICAgIGZvciAobGV0IGk9MDsgaTwgblRhdUcyOyBpKyspIHtcbiAgICAgICAgYXdhaXQgZmQud3JpdGUoYnVmZkcyKTtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoKGklMTAwMDAwKSA9PSAwKSYmaSkgbG9nZ2VyLmxvZyhcInRhdUcyOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGFscGhhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNCk7XG4gICAgY29uc3QgbkFsZmFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5BbGZhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYWxwaGFUYXVHMTogXCIgKyBpKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cbiAgICAvLyBXcml0ZSBiZXRhVGF1RzFcbiAgICAvLy8vLy8vLy8vL1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgNSk7XG4gICAgY29uc3QgbkJldGFUYXVHMSA9ICgyICoqIHBvd2VyKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8IG5CZXRhVGF1RzE7IGkrKykge1xuICAgICAgICBhd2FpdCBmZC53cml0ZShidWZmRzEpO1xuICAgICAgICBpZiAoKGxvZ2dlcikmJigoaSUxMDAwMDApID09IDApJiZpKSBsb2dnZXIubG9nKFwiYmV0YVRhdUcxOiBcIiArIGkpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIC8vIFdyaXRlIGJldGFHMlxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA2KTtcbiAgICBhd2FpdCBmZC53cml0ZShidWZmRzIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmQpO1xuXG4gICAgLy8gQ29udHJpYnV0aW9uc1xuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCA3KTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKDApOyAvLyAwIENvbnRyaWJ1dGlvbnNcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBjb25zdCBmaXJzdENoYWxsZW5nZUhhc2ggPSBwdGF1VXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhtaXNjLmZvcm1hdEhhc2goQmxha2UyYig2NCkuZGlnZXN0KCksIFwiQmxhbmsgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChmaXJzdENoYWxsZW5nZUhhc2gsIFwiRmlyc3QgQ29udHJpYnV0aW9uIEhhc2g6XCIpKTtcblxuICAgIHJldHVybiBmaXJzdENoYWxsZW5nZUhhc2g7XG5cbn1cbiIsIi8vIEZvcm1hdCBvZiB0aGUgb3V0cHVcbi8vICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjRCeXRlc1xuLy8gICAgIDJeTiAqIDIgLTEgIFRhdUcxIHBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgVGF1RzIgUG9pbnRzICh1bmNvbXByZXNzZWQpXG4vLyAgICAgMl5OICBBbHBoYVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIDJeTiAgQmV0YVRhdUcxIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgIEJldGFHMiAodW5jb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBleHBvcnRDaGFsbGVuZ2UocFRhdUZpbGVuYW1lLCBjaGFsbGVuZ2VGaWxlbmFtZSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuICAgIGNvbnN0IHtmZDogZmRGcm9tLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkRnJvbSwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkRnJvbSwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBsZXQgbGFzdFJlc3BvbnNlSGFzaCwgY3VyQ2hhbGxlbmdlSGFzaDtcbiAgICBpZiAoY29udHJpYnV0aW9ucy5sZW5ndGggPT0gMCkge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gQmxha2UyYig2NCkuZGlnZXN0KCk7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsYXN0UmVzcG9uc2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5yZXNwb25zZUhhc2g7XG4gICAgICAgIGN1ckNoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGxhc3RSZXNwb25zZUhhc2gsIFwiTGFzdCBSZXNwb25zZSBIYXNoOiBcIikpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGN1ckNoYWxsZW5nZUhhc2gsIFwiTmV3IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG5cbiAgICBjb25zdCBmZFRvID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUoY2hhbGxlbmdlRmlsZW5hbWUpO1xuXG4gICAgY29uc3QgdG9IYXNoID0gQmxha2UyYig2NCk7XG4gICAgYXdhaXQgZmRUby53cml0ZShsYXN0UmVzcG9uc2VIYXNoKTtcbiAgICB0b0hhc2gudXBkYXRlKGxhc3RSZXNwb25zZUhhc2gpO1xuXG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbigzLCBcIkcyXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig0LCBcIkcxXCIsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBhd2FpdCBleHBvcnRTZWN0aW9uKDUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIpO1xuXG4gICAgYXdhaXQgZmRGcm9tLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuXG4gICAgY29uc3QgY2FsY0N1ckNoYWxsZW5nZUhhc2ggPSB0b0hhc2guZGlnZXN0KCk7XG5cbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwgKGN1ckNoYWxsZW5nZUhhc2gsIGNhbGNDdXJDaGFsbGVuZ2VIYXNoKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY2FsY0N1ckNoYWxsZW5nZUhhc2gsIFwiQ2FsYyBDdXJyZXQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUFRhdSBmaWxlIGlzIGNvcnJ1cHRlZC4gQ2FsY3VsYXRlZCBuZXcgY2hhbGxlbmdlIGhhc2ggZG9lcyBub3QgbWF0Y2ggd2l0aCB0aGUgZWNsYXJlZCBvbmVcIik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBUYXUgZmlsZSBpcyBjb3JydXB0ZWQuIENhbGN1bGF0ZWQgbmV3IGNoYWxsZW5nZSBoYXNoIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGVjbGFyZWQgb25lXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJDaGFsbGVuZ2VIYXNoO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRGcm9tLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEV4cG9ydGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQobipzRyk7XG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgICAgICAgICB0b0hhc2gudXBkYXRlKGJ1ZmYpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZEZyb20pO1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydFJlc3BvbnNlKG9sZFB0YXVGaWxlbmFtZSwgY29udHJpYnV0aW9uRmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgaW1wb3J0UG9pbnRzLCBsb2dnZXIpIHtcblxuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IG5vSGFzaCA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8NjQ7IGkrKykgbm9IYXNoW2ldID0gMHhGRjtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1cnJlbnRDb250cmlidXRpb24gPSB7fTtcblxuICAgIGlmIChuYW1lKSBjdXJyZW50Q29udHJpYnV0aW9uLm5hbWUgPSBuYW1lO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRjEubjgqMjtcbiAgICBjb25zdCBzY0cxID0gY3VydmUuRjEubjg7IC8vIENvbXByZXNzZWQgc2l6ZVxuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkYyLm44KjI7XG4gICAgY29uc3Qgc2NHMiA9IGN1cnZlLkYyLm44OyAvLyBDb21wcmVzc2VkIHNpemVcblxuICAgIGNvbnN0IGZkUmVzcG9uc2UgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3RpbmcoY29udHJpYnV0aW9uRmlsZW5hbWUpO1xuXG4gICAgaWYgIChmZFJlc3BvbnNlLnRvdGFsU2l6ZSAhPVxuICAgICAgICA2NCArICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9sZCBIYXNoXG4gICAgICAgICgoMiAqKiBwb3dlcikqMi0xKSpzY0cxICtcbiAgICAgICAgKDIgKiogcG93ZXIpKnNjRzIgK1xuICAgICAgICAoMiAqKiBwb3dlcikqc2NHMSArXG4gICAgICAgICgyICoqIHBvd2VyKSpzY0cxICtcbiAgICAgICAgc2NHMiArXG4gICAgICAgIHNHMSo2ICsgc0cyKjMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNpemUgb2YgdGhlIGNvbnRyaWJ1dGlvbiBpcyBpbnZhbGlkXCIpO1xuXG4gICAgbGV0IGxhc3RDaGFsbGVuZ2VIYXNoO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgaW1wb3J0UG9pbnRzID8gNzogMik7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uUHJldmlvdXNIYXNoID0gYXdhaXQgZmRSZXNwb25zZS5yZWFkKDY0KTtcblxuICAgIGlmIChtaXNjLmhhc2hJc0VxdWFsKG5vSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25QcmV2aW91c0hhc2g7XG4gICAgICAgIGNvbnRyaWJ1dGlvbnNbY29udHJpYnV0aW9ucy5sZW5ndGgtMV0ubmV4dENoYWxsZW5nZSA9IGxhc3RDaGFsbGVuZ2VIYXNoO1xuICAgIH1cblxuICAgIGlmKCFtaXNjLmhhc2hJc0VxdWFsKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCxsYXN0Q2hhbGxlbmdlSGFzaCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIGNvbnRyaWJ1dGlvbi4gVGhpcyBjb250cmlidXRpb24gaXMgbm90IGJhc2VkIG9uIHRoZSBwcmV2aW91cyBoYXNoXCIpO1xuXG4gICAgY29uc3QgaGFzaGVyUmVzcG9uc2UgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgaGFzaGVyUmVzcG9uc2UudXBkYXRlKGNvbnRyaWJ1dGlvblByZXZpb3VzSGFzaCk7XG5cbiAgICBjb25zdCBzdGFydFNlY3Rpb25zID0gW107XG4gICAgbGV0IHJlcztcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBbMV0sIFwidGF1RzFcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCAzLCAoMiAqKiBwb3dlcikgICAgICAgLCBbMV0sIFwidGF1RzJcIik7XG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi50YXVHMiA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBbMF0sIFwiYWxwaGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmFscGhhRzEgPSByZXNbMF07XG4gICAgcmVzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oZmRSZXNwb25zZSwgZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgWzBdLCBcImJldGFHMVwiKTtcbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmJldGFHMSA9IHJlc1swXTtcbiAgICByZXMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbihmZFJlc3BvbnNlLCBmZE5ldywgXCJHMlwiLCA2LCAxICAgICAgICAgICAgICAgICAgLCBbMF0sIFwiYmV0YUcyXCIpO1xuICAgIGN1cnJlbnRDb250cmlidXRpb24uYmV0YUcyID0gcmVzWzBdO1xuXG4gICAgY3VycmVudENvbnRyaWJ1dGlvbi5wYXJ0aWFsSGFzaCA9IGhhc2hlclJlc3BvbnNlLmdldFBhcnRpYWxIYXNoKCk7XG5cblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBhd2FpdCBmZFJlc3BvbnNlLnJlYWQoY3VydmUuRjEubjgqMio2K2N1cnZlLkYyLm44KjIqMyk7XG5cbiAgICBjdXJyZW50Q29udHJpYnV0aW9uLmtleSA9IHV0aWxzLmZyb21QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBmYWxzZSk7XG5cbiAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IGhhc2hlclJlc3BvbnNlLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGlmIChpbXBvcnRQb2ludHMpIHtcbiAgICAgICAgY29uc3QgbmV4dENoYWxsZW5nZUhhc2hlciA9IG5ldyBCbGFrZTJiKDY0KTtcbiAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgICAgICBhd2FpdCBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDMsICgyICoqIHBvd2VyKSAgICAgICAsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgYXdhaXQgaGFzaFNlY3Rpb24obmV4dENoYWxsZW5nZUhhc2hlciwgZmROZXcsIFwiRzFcIiwgNCwgKDIgKiogcG93ZXIpICAgICAgICwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgICAgIGF3YWl0IGhhc2hTZWN0aW9uKG5leHRDaGFsbGVuZ2VIYXNoZXIsIGZkTmV3LCBcIkcyXCIsIDYsIDEgICAgICAgICAgICAgICAgICAsIFwiYmV0YUcyXCIsIGxvZ2dlcik7XG5cbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlIEhhc2g6IFwiKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY3VycmVudENvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbm9IYXNoO1xuICAgIH1cblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJyZW50Q29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHV0aWxzLndyaXRlQ29udHJpYnV0aW9ucyhmZE5ldywgY3VydmUsIGNvbnRyaWJ1dGlvbnMpO1xuXG4gICAgYXdhaXQgZmRSZXNwb25zZS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiBjdXJyZW50Q29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgaWYgKGltcG9ydFBvaW50cykge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHByb2Nlc3NTZWN0aW9uSW1wb3J0UG9pbnRzKGZkRnJvbSwgZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBzZWN0aW9uTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgcHJvY2Vzc1NlY3Rpb25Ob0ltcG9ydFBvaW50cyhmZEZyb20sIGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzaW5ndWxhclBvaW50SW5kZXhlcywgc2VjdGlvbk5hbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFRvLCBzZWN0aW9uSWQpO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkVG8ucG9zO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgRy5iYXRjaEN0b0xFTShidWZmQyk7XG5cbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZkxFTSk7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYnVmZkxFTSwgKHNwLWkpKnNHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkVG8pO1xuXG4gICAgICAgIHJldHVybiBzaW5ndWxhclBvaW50cztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uTm9JbXBvcnRQb2ludHMoZmRGcm9tLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2luZ3VsYXJQb2ludEluZGV4ZXMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNjRyA9IEcuRi5uODtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zY0cpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSW1wb3J0aW5nICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzLWksIG5Qb2ludHNDaHVuayk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDID0gYXdhaXQgZmRGcm9tLnJlYWQobiAqIHNjRyk7XG4gICAgICAgICAgICBoYXNoZXJSZXNwb25zZS51cGRhdGUoYnVmZkMpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJDb21wcmVzc2VkKGJ1ZmZDLCAoc3AtaSkqc2NHKTtcbiAgICAgICAgICAgICAgICAgICAgc2luZ3VsYXJQb2ludHMucHVzaChQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2luZ3VsYXJQb2ludHM7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoU2VjdGlvbihuZXh0Q2hhbGxlbmdlSGFzaGVyLCBmZFRvLCBncm91cE5hbWUsIHNlY3Rpb25JZCwgblBvaW50cywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuXG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtncm91cE5hbWVdO1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCoyO1xuICAgICAgICBjb25zdCBuUG9pbnRzQ2h1bmsgPSBNYXRoLmZsb29yKCgxPDwyNCkvc0cpO1xuXG4gICAgICAgIGNvbnN0IG9sZFBvcyA9IGZkVG8ucG9zO1xuICAgICAgICBmZFRvLnBvcyA9IHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IG5Qb2ludHM7IGkgKz0gblBvaW50c0NodW5rKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEhhc2hpbmcgJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMtaSwgblBvaW50c0NodW5rKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkxFTSA9IGF3YWl0IGZkVG8ucmVhZChuICogc0cpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYnVmZkxFTSk7XG5cbiAgICAgICAgICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGJ1ZmZVKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZkVG8ucG9zID0gb2xkUG9zO1xuICAgIH1cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMga2V5UGFpciBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IENoYUNoYSwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXIsIHByZXYsIGxvZ2dlcikge1xuICAgIGxldCBzcjtcbiAgICBpZiAoY3VyLnR5cGUgPT0gMSkgeyAgICAvLyBWZXJpZnkgdGhlIGJlYWNvbi5cbiAgICAgICAgY29uc3QgYmVhY29uS2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIuYmVhY29uSGFzaCwgY3VyLm51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS50YXUuZzFfcywgYmVhY29uS2V5LnRhdS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zKSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkudGF1LmcxX3N4LCBiZWFjb25LZXkudGF1LmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMV9zeCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXIua2V5LnRhdS5nMl9zcHgsIGJlYWNvbktleS50YXUuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5ICh0YXVHMl9zcHgpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmFscGhhLmcxX3MsIGJlYWNvbktleS5hbHBoYS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3MpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoY3VyLmtleS5hbHBoYS5nMV9zeCwgYmVhY29uS2V5LmFscGhhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcxX3N4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ci5rZXkuYWxwaGEuZzJfc3B4LCBiZWFjb25LZXkuYWxwaGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChhbHBoYUcyX3NweCkgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ci5rZXkuYmV0YS5nMV9zLCBiZWFjb25LZXkuYmV0YS5nMV9zKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfcykgaXMgbm90IGdlbmVyYXRlZCBjb3JyZWN0bHkgaW4gY2hhbGxlbmdlICMke2N1ci5pZH0gICR7Y3VyLm5hbWUgfHwgXCJcIn1gICk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXIua2V5LmJldGEuZzFfc3gsIGJlYWNvbktleS5iZXRhLmcxX3N4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzFfc3gpIGlzIG5vdCBnZW5lcmF0ZWQgY29ycmVjdGx5IGluIGNoYWxsZW5nZSAjJHtjdXIuaWR9ICAke2N1ci5uYW1lIHx8IFwiXCJ9YCApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VydmUuRzIuZXEoY3VyLmtleS5iZXRhLmcyX3NweCwgYmVhY29uS2V5LmJldGEuZzJfc3B4KSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBCRUFDT04ga2V5IChiZXRhRzJfc3B4KSBpcyBub3QgZ2VuZXJhdGVkIGNvcnJlY3RseSBpbiBjaGFsbGVuZ2UgIyR7Y3VyLmlkfSAgJHtjdXIubmFtZSB8fCBcIlwifWAgKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGN1ci5rZXkudGF1LmcyX3NwID0gY3VydmUuRzIudG9BZmZpbmUoa2V5UGFpci5nZXRHMnNwKGN1cnZlLCAwLCBwcmV2Lm5leHRDaGFsbGVuZ2UsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4KSk7XG4gICAgY3VyLmtleS5hbHBoYS5nMl9zcCA9IGN1cnZlLkcyLnRvQWZmaW5lKGtleVBhaXIuZ2V0RzJzcChjdXJ2ZSwgMSwgcHJldi5uZXh0Q2hhbGxlbmdlLCBjdXIua2V5LmFscGhhLmcxX3MsIGN1ci5rZXkuYWxwaGEuZzFfc3gpKTtcbiAgICBjdXIua2V5LmJldGEuZzJfc3AgPSBjdXJ2ZS5HMi50b0FmZmluZShrZXlQYWlyLmdldEcyc3AoY3VydmUsIDIsIHByZXYubmV4dENoYWxsZW5nZSwgY3VyLmtleS5iZXRhLmcxX3MsIGN1ci5rZXkuYmV0YS5nMV9zeCkpO1xuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkudGF1LmcxX3MsIGN1ci5rZXkudGF1LmcxX3N4LCBjdXIua2V5LnRhdS5nMl9zcCwgY3VyLmtleS50YXUuZzJfc3B4KTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRCBrZXkgKHRhdSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIGN1ci5rZXkuYWxwaGEuZzFfcywgY3VyLmtleS5hbHBoYS5nMV9zeCwgY3VyLmtleS5hbHBoYS5nMl9zcCwgY3VyLmtleS5hbHBoYS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYWxwaGEpIGluIGNoYWxsZW5nZSAjXCIrY3VyLmlkKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGtleSAoYmV0YSkgaW4gY2hhbGxlbmdlICNcIitjdXIuaWQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYudGF1RzEsIGN1ci50YXVHMSwgY3VyLmtleS50YXUuZzJfc3AsIGN1ci5rZXkudGF1LmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcxLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCAgY3VyLmtleS50YXUuZzFfcywgY3VyLmtleS50YXUuZzFfc3gsIHByZXYudGF1RzIsIGN1ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgdGF1KkcyLiBjaGFsbGVuZ2UgI1wiK2N1ci5pZCtcIiBJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNyID0gYXdhaXQgc2FtZVJhdGlvKGN1cnZlLCBwcmV2LmFscGhhRzEsIGN1ci5hbHBoYUcxLCBjdXIua2V5LmFscGhhLmcyX3NwLCBjdXIua2V5LmFscGhhLmcyX3NweCk7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYWxwaGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHByZXYuYmV0YUcxLCBjdXIuYmV0YUcxLCBjdXIua2V5LmJldGEuZzJfc3AsIGN1ci5rZXkuYmV0YS5nMl9zcHgpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEIGJldGEqRzEuIGNoYWxsZW5nZSAjXCIrY3VyLmlkK1wiIEl0IGRvZXMgbm90IGZvbGxvdyB0aGUgcHJldmlvdXMgY29udHJpYnV0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsICBjdXIua2V5LmJldGEuZzFfcywgY3VyLmtleS5iZXRhLmcxX3N4LCBwcmV2LmJldGFHMiwgY3VyLmJldGFHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQgYmV0YSpHMi4gY2hhbGxlbmdlICNcIitjdXIuaWQrXCJJdCBkb2VzIG5vdCBmb2xsb3cgdGhlIHByZXZpb3VzIGNvbnRyaWJ1dGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUG93ZXJzIE9mIHRhdSBmaWxlIE9LIVwiKTtcbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5KHRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBsZXQgc3I7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUodGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyLCBjZXJlbW9ueVBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG4gICAgY29uc3QgY29udHJzID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJwb3dlcjogMioqXCIgKyBwb3dlcik7XG4gICAgLy8gVmVyaWZ5IExhc3QgY29udHJpYnV0aW9uXG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJDb21wdXRpbmcgaW5pdGlhbCBjb250cmlidXRpb24gaGFzaFwiKTtcbiAgICBjb25zdCBpbml0aWFsQ29udHJpYnV0aW9uID0ge1xuICAgICAgICB0YXVHMTogY3VydmUuRzEuZyxcbiAgICAgICAgdGF1RzI6IGN1cnZlLkcyLmcsXG4gICAgICAgIGFscGhhRzE6IGN1cnZlLkcxLmcsXG4gICAgICAgIGJldGFHMTogY3VydmUuRzEuZyxcbiAgICAgICAgYmV0YUcyOiBjdXJ2ZS5HMi5nLFxuICAgICAgICBuZXh0Q2hhbGxlbmdlOiB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIGNlcmVtb255UG93ZXIsIGxvZ2dlciksXG4gICAgICAgIHJlc3BvbnNlSGFzaDogQmxha2UyYig2NCkuZGlnZXN0KClcbiAgICB9O1xuXG4gICAgaWYgKGNvbnRycy5sZW5ndGggPT0gMCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIG5vIGNvbnRyaWJ1dGlvbiEgSXQgY2Fubm90IGJlIHVzZWQgaW4gcHJvZHVjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGxldCBwcmV2Q29udHI7XG4gICAgaWYgKGNvbnRycy5sZW5ndGg+MSkge1xuICAgICAgICBwcmV2Q29udHIgPSBjb250cnNbY29udHJzLmxlbmd0aC0yXTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q29udHIgPSBpbml0aWFsQ29udHJpYnV0aW9uO1xuICAgIH1cbiAgICBjb25zdCBjdXJDb250ciA9IGNvbnRyc1tjb250cnMubGVuZ3RoLTFdO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZhbGlkYXRpbmcgY29udHJpYnV0aW9uICNcIitjb250cnNbY29udHJzLmxlbmd0aC0xXS5pZCk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG5cblxuICAgIGNvbnN0IG5leHRDb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLnVwZGF0ZShjdXJDb250ci5yZXNwb25zZUhhc2gpO1xuXG4gICAgLy8gVmVyaWZ5IHBvd2VycyBhbmQgY29tcHV0ZSBuZXh0Q2hhbGxlbmdlSGFzaFxuXG4gICAgLy8gYXdhaXQgdGVzdCgpO1xuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiB0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByVGF1MSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDIsIFwiRzFcIiwgXCJ0YXVHMVwiLCAoMiAqKiBwb3dlcikqMi0xLCBbMCwgMV0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJUYXUxLlIxLCByVGF1MS5SMiwgY3VydmUuRzIuZywgY3VyQ29udHIudGF1RzIpO1xuICAgIGlmIChzciAhPT0gdHJ1ZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJ0YXVHMSBzZWN0aW9uLiBQb3dlcnMgZG8gbm90IG1hdGNoXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VydmUuRzEuZywgclRhdTEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgdGF1KkcxIHNlY3Rpb24gbXVzdCBiZSB0aGUgZ2VuZXJhdG9yXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzEuZXEoY3VyQ29udHIudGF1RzEsIHJUYXUxLnNpbmd1bGFyUG9pbnRzWzFdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJTZWNvbmQgZWxlbWVudCBvZiB0YXUqRzEgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIGF3YWl0IHRlc3QoKTtcblxuICAgIC8vIFZlcmlmeSBTZWN0aW9uIHRhdSpHMlxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gdGF1KkcyIHNlY3Rpb25cIik7XG4gICAgY29uc3QgclRhdTIgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCBcIkcyXCIsIFwidGF1RzJcIiwgMiAqKiBwb3dlciwgWzAsIDFdLCAgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VydmUuRzEuZywgY3VyQ29udHIudGF1RzEsIHJUYXUyLlIxLCByVGF1Mi5SMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcInRhdUcyIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJ2ZS5HMi5nLCByVGF1Mi5zaW5ndWxhclBvaW50c1swXSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiRmlyc3QgZWxlbWVudCBvZiB0YXUqRzIgc2VjdGlvbiBtdXN0IGJlIHRoZSBnZW5lcmF0b3JcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcShjdXJDb250ci50YXVHMiwgclRhdTIuc2luZ3VsYXJQb2ludHNbMV0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlNlY29uZCBlbGVtZW50IG9mIHRhdSpHMiBzZWN0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgaW4gdGhlIGNvbnRyaWJ1dGlvbiBzZWN0aW9uXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZ5IFNlY3Rpb24gYWxwaGEqdGF1KkcxXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiVmVyaWZ5aW5nIHBvd2VycyBpbiBhbHBoYSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQWxwaGFUYXVHMSA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDQsIFwiRzFcIiwgXCJhbHBoYXRhdUcxXCIsIDIgKiogcG93ZXIsIFswXSwgbG9nZ2VyKTtcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgckFscGhhVGF1RzEuUjEsIHJBbHBoYVRhdUcxLlIyLCBjdXJ2ZS5HMi5nLCBjdXJDb250ci50YXVHMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImFscGhhVGF1RzEgc2VjdGlvbi4gUG93ZXJzIGRvIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKGN1ckNvbnRyLmFscGhhRzEsIHJBbHBoYVRhdUcxLnNpbmd1bGFyUG9pbnRzWzBdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJGaXJzdCBlbGVtZW50IG9mIGFscGhhKnRhdSpHMSBzZWN0aW9uIChhbHBoYSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgU2VjdGlvbiBiZXRhKnRhdSpHMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlZlcmlmeWluZyBwb3dlcnMgaW4gYmV0YSp0YXUqRzEgc2VjdGlvblwiKTtcbiAgICBjb25zdCByQmV0YVRhdUcxID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNSwgXCJHMVwiLCBcImJldGF0YXVHMVwiLCAyICoqIHBvd2VyLCBbMF0sIGxvZ2dlcik7XG4gICAgc3IgPSBhd2FpdCBzYW1lUmF0aW8oY3VydmUsIHJCZXRhVGF1RzEuUjEsIHJCZXRhVGF1RzEuUjIsIGN1cnZlLkcyLmcsIGN1ckNvbnRyLnRhdUcyKTtcbiAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiYmV0YVRhdUcxIHNlY3Rpb24uIFBvd2VycyBkbyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMS5lcShjdXJDb250ci5iZXRhRzEsIHJCZXRhVGF1RzEuc2luZ3VsYXJQb2ludHNbMF0pKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkZpcnN0IGVsZW1lbnQgb2YgYmV0YSp0YXUqRzEgc2VjdGlvbiAoYmV0YSpHMSkgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgY29udHJpYnV0aW9uIHNlY3Rpb25cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvL1ZlcmlmeSBCZXRhIEcyXG4gICAgY29uc3QgYmV0YUcyID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKTtcbiAgICBpZiAoIWN1cnZlLkcyLmVxKGN1ckNvbnRyLmJldGFHMiwgYmV0YUcyKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJiZXRhRzIgZWxlbWVudCBpbiBiZXRhRzIgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaCB0aGUgb25lIGluIHRoZSBjb250cmlidXRpb24gc2VjdGlvblwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3QgbmV4dENvbnRyaWJ1dGlvbkhhc2ggPSBuZXh0Q29udHJpYnV0aW9uSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgLy8gQ2hlY2sgdGhlIG5leHRDaGFsbGVuZ2VIYXNoXG4gICAgaWYgKHBvd2VyID09IGNlcmVtb255UG93ZXIpIHtcbiAgICAgICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG5leHRDb250cmlidXRpb25IYXNoLGN1ckNvbnRyLm5leHRDaGFsbGVuZ2UpKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJIYXNoIG9mIHRoZSB2YWx1ZXMgZG9lcyBub3QgbWF0Y2ggdGhlIG5leHQgY2hhbGxlbmdlIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dG9yIGluIHRoZSBjb250cmlidXRpb25zIHNlY3Rpb25cIik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobmV4dENvbnRyaWJ1dGlvbkhhc2gsIFwiTmV4dCBjaGFsbGVuZ2UgaGFzaDogXCIpKTtcblxuICAgIC8vIFZlcmlmeSBQcmV2aW91cyBjb250cmlidXRpb25zXG5cbiAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKTtcbiAgICBmb3IgKGxldCBpID0gY29udHJzLmxlbmd0aC0yOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgY29uc3QgY3VyQ29udHIgPSBjb250cnNbaV07XG4gICAgICAgIGNvbnN0IHByZXZDb250ciA9ICAoaT4wKSA/IGNvbnRyc1tpLTFdIDogaW5pdGlhbENvbnRyaWJ1dGlvbjtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdmVyaWZ5Q29udHJpYnV0aW9uKGN1cnZlLCBjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyLCBsb2dnZXIpO1xuICAgIH1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuXG4gICAgaWYgKCghc2VjdGlvbnNbMTJdKSB8fCAoIXNlY3Rpb25zWzEzXSkgfHwgKCFzZWN0aW9uc1sxNF0pIHx8ICghc2VjdGlvbnNbMTVdKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcbiAgICAgICAgICAgIFwidGhpcyBmaWxlIGRvZXMgbm90IGNvbnRhaW4gcGhhc2UyIHByZWNhbGN1bGF0ZWQgdmFsdWVzLiBQbGVhc2UgcnVuOiBcXG5cIiArXG4gICAgICAgICAgICBcIiAgIHNuYXJranMgXFxcInBvd2Vyc29mdGF1IHByZXBhcmVwaGFzZTJcXFwiIHRvIHByZXBhcmUgdGhpcyBmaWxlIHRvIGJlIHVzZWQgaW4gdGhlIHBoYXNlMiBjZXJlbW9ueS5cIlxuICAgICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIHJlcyA9IGF3YWl0IHZlcmlmeUxhZ3JhbmdlRXZhbHVhdGlvbnMoXCJHMVwiLCAyLCAxMiwgXCJ0YXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgICAgICByZXMgPSBhd2FpdCB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKFwiRzJcIiwgMywgMTMsIFwidGF1RzJcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDQsIDE0LCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKCFyZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmVzID0gYXdhaXQgdmVyaWZ5TGFncmFuZ2VFdmFsdWF0aW9ucyhcIkcxXCIsIDUsIDE1LCBcImJldGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgICAgICBpZiAoIXJlcykgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlBvd2VycyBvZiBUYXUgT2shXCIpO1xuXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgICBmdW5jdGlvbiBwcmludENvbnRyaWJ1dGlvbihjdXJDb250ciwgcHJldkNvbnRyKSB7XG4gICAgICAgIGlmICghbG9nZ2VyKSByZXR1cm47XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKGBDb250cmlidXRpb24gIyR7Y3VyQ29udHIuaWR9OiAke2N1ckNvbnRyLm5hbWUgfHxcIlwifWApO1xuXG4gICAgICAgIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250ci5uZXh0Q2hhbGxlbmdlLCBcIk5leHQgQ2hhbGxlbmdlOiBcIikpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZWICA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkcxLkYubjgqMio2K2N1cnZlLkcyLkYubjgqMiozKTtcbiAgICAgICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZWLCAwLCBjdXJ2ZSwgY3VyQ29udHIua2V5LCBmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICAgICAgcmVzcG9uc2VIYXNoZXIuc2V0UGFydGlhbEhhc2goY3VyQ29udHIucGFydGlhbEhhc2gpO1xuICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZlYpO1xuICAgICAgICBjb25zdCByZXNwb25zZUhhc2ggPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocmVzcG9uc2VIYXNoLCBcIlJlc3BvbnNlIEhhc2g6XCIpKTtcblxuICAgICAgICBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gocHJldkNvbnRyLm5leHRDaGFsbGVuZ2UsIFwiUmVzcG9uc2UgSGFzaDpcIikpO1xuXG4gICAgICAgIGlmIChjdXJDb250ci50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gZ2VuZXJhdG9yOiAke21pc2MuYnl0ZUFycmF5MmhleChjdXJDb250ci5iZWFjb25IYXNoKX1gKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKGBCZWFjb24gaXRlcmF0aW9ucyBFeHA6ICR7Y3VyQ29udHIubnVtSXRlcmF0aW9uc0V4cH1gKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25CZXRhRzIobG9nZ2VyKSB7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZS5HMjtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgYnVmZlV2ID0gbmV3IFVpbnQ4QXJyYXkoc0cpO1xuXG4gICAgICAgIGlmICghc2VjdGlvbnNbNl0pICB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJGaWxlIGhhcyBubyBCZXRhRzIgc2VjdGlvblwiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaGFzIG5vIEJldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZWN0aW9uc1s2XS5sZW5ndGg+MSkge1xuICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRmlsZSBoYXMgbm8gQmV0YUcyIHNlY3Rpb25cIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGhhcyBtb3JlIHRoYW4gb25lIEdldGFHMiBzZWN0aW9uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGZkLnBvcyA9IHNlY3Rpb25zWzZdWzBdLnA7XG5cbiAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkLnJlYWQoc0cpO1xuICAgICAgICBjb25zdCBQID0gRy5mcm9tUnByTEVNKGJ1ZmYpO1xuXG4gICAgICAgIEcudG9ScHJVbmNvbXByZXNzZWQoYnVmZlV2LCAwLCBQKTtcbiAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYnVmZlV2KTtcblxuICAgICAgICByZXR1cm4gUDtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihpZFNlY3Rpb24sIGdyb3VwTmFtZSwgc2VjdGlvbk5hbWUsIG5Qb2ludHMsIHNpbmd1bGFyUG9pbnRJbmRleGVzLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwxNjtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgaWRTZWN0aW9uKTtcblxuICAgICAgICBjb25zdCBzaW5ndWxhclBvaW50cyA9IFtdO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuXG4gICAgICAgIGxldCBsYXN0QmFzZSA9IEcuemVybztcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBwb2ludHMgcmVsYXRpb25zOiAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9IGApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKG5Qb2ludHMgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBjb25zdCBiYXNlcyA9IGF3YWl0IGZkLnJlYWQobipzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhc2VzVSA9IGF3YWl0IEcuYmF0Y2hMRU10b1UoYmFzZXMpO1xuICAgICAgICAgICAgbmV4dENvbnRyaWJ1dGlvbkhhc2hlci51cGRhdGUoYmFzZXNVKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGFycyA9IG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCoobi0xKSk7XG5cbiAgICAgICAgICAgIGlmIChpPjApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaXJzdEJhc2UgPSBHLmZyb21ScHJMRU0oYmFzZXMsIDApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcblxuICAgICAgICAgICAgICAgIFIxID0gRy5hZGQoUjEsIEcudGltZXNTY2FsYXIobGFzdEJhc2UsIHIpKTtcbiAgICAgICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCBHLnRpbWVzU2NhbGFyKGZpcnN0QmFzZSwgcikpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByMSA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMuc2xpY2UoMCwgKG4tMSkqc0cpLCBzY2FsYXJzKTtcbiAgICAgICAgICAgIGNvbnN0IHIyID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiYXNlcy5zbGljZShzRyksIHNjYWxhcnMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByMSk7XG4gICAgICAgICAgICBSMiA9IEcuYWRkKFIyLCByMik7XG5cbiAgICAgICAgICAgIGxhc3RCYXNlID0gRy5mcm9tUnByTEVNKCBiYXNlcywgKG4tMSkqc0cpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8c2luZ3VsYXJQb2ludEluZGV4ZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcCA9IHNpbmd1bGFyUG9pbnRJbmRleGVzW2pdO1xuICAgICAgICAgICAgICAgIGlmICgoc3AgPj1pKSAmJiAoc3AgPCBpK24pKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IFAgPSBHLmZyb21ScHJMRU0oYmFzZXMsIChzcC1pKSpzRyk7XG4gICAgICAgICAgICAgICAgICAgIHNpbmd1bGFyUG9pbnRzLnB1c2goUCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgUjE6IFIxLFxuICAgICAgICAgICAgUjI6IFIyLFxuICAgICAgICAgICAgc2luZ3VsYXJQb2ludHM6IHNpbmd1bGFyUG9pbnRzXG4gICAgICAgIH07XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlMYWdyYW5nZUV2YWx1YXRpb25zKGdOYW1lLCB0YXVTZWN0aW9uLCBsYWdyYW5nZVNlY3Rpb24sIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFZlcmlmeWluZyBwaGFzZTIgY2FsY3VsYXRlZCB2YWx1ZXMgJHtzZWN0aW9uTmFtZX0uLi5gKTtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCBzZWVkPSBuZXcgQXJyYXkoOCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIHNlZWRbaV0gPSBtaXNjLnJlYWRVSW50MzJCRShtaXNjLmdldFJhbmRvbUJ5dGVzKDQpLCAwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9IHBvd2VyOyBwICsrKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGF1U2VjdGlvbiA9PSAyKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJpZnlQb3dlcihwb3dlcisxKTtcbiAgICAgICAgICAgIGlmICghcmVzKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiB2ZXJpZnlQb3dlcihwKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFBvd2VyICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGxldCBidWZmX3IgPSBuZXcgVWludDMyQXJyYXkoblBvaW50cyk7XG4gICAgICAgICAgICBsZXQgYnVmZkc7XG5cbiAgICAgICAgICAgIGxldCBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYENyZWF0aW5nIHJhbmRvbSBudW1iZXJzIFBvd2VycyR7cH0uLi5gKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHAgPT0gcG93ZXIrMSkmJihpID09IG5Qb2ludHMtMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZl9yW2ldID0gMDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZmX3JbaV0gPSBybmcubmV4dFUzMigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnVmZl9yID0gbmV3IFVpbnQ4QXJyYXkoYnVmZl9yLmJ1ZmZlciwgYnVmZl9yLmJ5dGVPZmZzZXQsIGJ1ZmZfci5ieXRlTGVuZ3RoKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBQb3dlcnMke3B9Li4uYCk7XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIHRhdVNlY3Rpb24pO1xuICAgICAgICAgICAgYnVmZkcgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgaWYgKHAgPT0gcG93ZXIrMSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgKG5Qb2ludHMtMSkqc0cpO1xuICAgICAgICAgICAgICAgIGJ1ZmZHLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzRyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkLnJlYWRUb0J1ZmZlcihidWZmRywgMCwgblBvaW50cypzRyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuXG4gICAgICAgICAgICBjb25zdCByZXNUYXUgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHApO1xuXG4gICAgICAgICAgICBidWZmX3IgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMgKiBuOHIpO1xuXG4gICAgICAgICAgICBybmcgPSBuZXcgQ2hhQ2hhKHNlZWQpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmNCA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICAgICAgY29uc3QgYnVmZjRWID0gbmV3IERhdGFWaWV3KGJ1ZmY0LmJ1ZmZlcik7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQ3JlYXRpbmcgcmFuZG9tIG51bWJlcnMgUG93ZXJzJHtwfS4uLmApO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICgoaSAhPSBuUG9pbnRzLTEpIHx8IChwICE9IHBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmY0Vi5zZXRVaW50MzIoMCwgcm5nLm5leHRVMzIoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZfci5zZXQoYnVmZjQsIGkqbjhyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgYmF0Y2hUb01vbnRnb21lcnkgJHtwfS4uLmApO1xuICAgICAgICAgICAgYnVmZl9yID0gYXdhaXQgY3VydmUuRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZl9yKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgZmZ0ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmZmdChidWZmX3IpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBiYXRjaEZyb21Nb250Z29tZXJ5ICR7cH0uLi5gKTtcbiAgICAgICAgICAgIGJ1ZmZfciA9IGF3YWl0IGN1cnZlLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkoYnVmZl9yKTtcblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGByZWFkaW5nIHBvaW50cyBMYWdyYW5nZSR7cH0uLi5gKTtcbiAgICAgICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgbGFncmFuZ2VTZWN0aW9uKTtcbiAgICAgICAgICAgIGZkLnBvcyArPSBzRyooKDIgKiogcCktMSk7XG4gICAgICAgICAgICBhd2FpdCBmZC5yZWFkVG9CdWZmZXIoYnVmZkcsIDAsIG5Qb2ludHMqc0cpO1xuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzTGFncmFuZ2UgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmZHLCBidWZmX3IsIGxvZ2dlciwgc2VjdGlvbk5hbWUgKyBcIl9cIiArIHAgKyBcIl90cmFuc2Zvcm1lZFwiKTtcblxuICAgICAgICAgICAgaWYgKCFHLmVxKHJlc1RhdSwgcmVzTGFncmFuZ2UpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUGhhc2UyIGNhY2x1dGF0aW9uIGRvZXMgbm90IG1hdGNoIHdpdGggcG93ZXJzIG9mIHRhdVwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbi8qXG4gICAgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgbmV3IHNlY3Rpb24gaW4gdGhlIGZkVG8gZmlsZSB3aXRoIGlkIGlkU2VjdGlvbi5cbiAgICBJdCBtdWx0aXBsaWVzIHRoZSBwb2ludHMgaW4gZmRGcm9tIGJ5IGZpcnN0LCBmaXJzdCppbmMsIGZpcnN0KmluY14yLCAuLi4uXG4gICAgblBvaW50IFRpbWVzLlxuICAgIEl0IGFsc28gdXBkYXRlcyB0aGUgbmV3Q2hhbGxlbmdlSGFzaGVyIHdpdGggdGhlIG5ldyBwb2ludHNcbiovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcHBseUtleVRvU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCBpZFNlY3Rpb24sIGN1cnZlLCBncm91cE5hbWUsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lLCBsb2dnZXIpIHtcbiAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMTY7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBuUG9pbnRzID0gc2VjdGlvbnNbaWRTZWN0aW9uXVswXS5zaXplIC8gc0c7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsaWRTZWN0aW9uICk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBpZFNlY3Rpb24pO1xuXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEFwcGx5aW5nIGtleTogJHtzZWN0aW9uTmFtZX06ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihuUG9pbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuICAgICAgICBsZXQgYnVmZjtcbiAgICAgICAgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobipzRyk7XG4gICAgICAgIGJ1ZmYgPSBhd2FpdCBHLmJhdGNoQXBwbHlLZXkoYnVmZiwgdCwgaW5jKTtcbiAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG4gICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgIH1cblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZE9sZCk7XG59XG5cblxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRPbGQsIGZkTmV3LCByZXNwb25zZUhhc2hlciwgY3VydmUsIGdyb3VwTmFtZSwgblBvaW50cywgZmlyc3QsIGluYywgZm9ybWF0T3V0LCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICBjb25zdCBjaHVua1NpemUgPSBNYXRoLmZsb29yKCgxPDwyMCkgLyBzRyk7ICAgLy8gMTI4TWIgY2h1bmtzXG4gICAgbGV0IHQgPSBmaXJzdDtcbiAgICBmb3IgKGxldCBpPTAgOyBpPG5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgQXBwbHlpbmcga2V5ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgY29uc3Qgbj0gTWF0aC5taW4oblBvaW50cy1pLCBjaHVua1NpemUgKTtcbiAgICAgICAgY29uc3QgYnVmZkluVSA9IGF3YWl0IGZkT2xkLnJlYWQobiAqIHNHKTtcbiAgICAgICAgY29uc3QgYnVmZkluTEVNID0gYXdhaXQgRy5iYXRjaFV0b0xFTShidWZmSW5VKTtcbiAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW5MRU0sIHQsIGluYyk7XG4gICAgICAgIGxldCBidWZmT3V0O1xuICAgICAgICBpZiAoZm9ybWF0T3V0ID09IFwiQ09NUFJFU1NFRFwiKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gYXdhaXQgRy5iYXRjaExFTXRvQyhidWZmT3V0TEVNKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKGJ1ZmZPdXRMRU0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3BvbnNlSGFzaGVyKSByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dCk7XG4gICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB0ID0gY3VydmUuRnIubXVsKHQsIGN1cnZlLkZyLmV4cChpbmMsIG4pKTtcbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIEZvcm1hdCBvZiB0aGUgb3V0cHV0XG4vLyAgICAgIEhhc2ggb2YgdGhlIGxhc3QgY29udHJpYnV0aW9uICA2NCBCeXRlc1xuLy8gICAgICAyXk4qMi0xIFRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEFscGhhVGF1RzEgUG9pbnRzIChjb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQmV0YVRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgUHVibGljIEtleVxuLy8gICAgICAgICAgQmV0YUcyIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqcyAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnMqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdCAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnQqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdSpiZXRhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqc3AqdGF1IChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqdHAqYWxwaGEgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMip1cCpiZXRhIChjb21wcmVzc2VkKVxuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5pbXBvcnQgKiBhcyBrZXlQYWlyIGZyb20gXCIuL2tleXBhaXIuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY2hhbGxlbmdlQ29udHJpYnV0ZShjdXJ2ZSwgY2hhbGxlbmdlRmlsZW5hbWUsIHJlc3BvbnNlRmlsZU5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IGZkRnJvbSA9IGF3YWl0IGZhc3RGaWxlLnJlYWRFeGlzdGluZyhjaGFsbGVuZ2VGaWxlbmFtZSk7XG5cblxuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkYxLm42NCo4KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRjIubjY0KjgqMjtcbiAgICBjb25zdCBkb21haW5TaXplID0gKGZkRnJvbS50b3RhbFNpemUgKyBzRzEgLSA2NCAtIHNHMikgLyAoNCpzRzEgKyBzRzIpO1xuICAgIGxldCBlID0gZG9tYWluU2l6ZTtcbiAgICBsZXQgcG93ZXIgPSAwO1xuICAgIHdoaWxlIChlPjEpIHtcbiAgICAgICAgZSA9IGUgLzI7XG4gICAgICAgIHBvd2VyICs9IDE7XG4gICAgfVxuXG4gICAgaWYgKDIgKiogcG93ZXIgIT0gZG9tYWluU2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBmaWxlIHNpemVcIik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiUG93ZXIgdG8gdGF1IHNpemU6IFwiK3Bvd2VyKTtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgY29uc3QgZmRUbyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKHJlc3BvbnNlRmlsZU5hbWUpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHRoZSBoYXNoXG4gICAgY29uc3QgY2hhbGxlbmdlSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgZm9yIChsZXQgaT0wOyBpPGZkRnJvbS50b3RhbFNpemU7IGkrPSBmZEZyb20ucGFnZVNpemUpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nIGNoYWxsZW5nZSAke2l9LyR7ZmRGcm9tLnRvdGFsU2l6ZX1gKTtcbiAgICAgICAgY29uc3QgcyA9IE1hdGgubWluKGZkRnJvbS50b3RhbFNpemUgLSBpLCBmZEZyb20ucGFnZVNpemUpO1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmRGcm9tLnJlYWQocyk7XG4gICAgICAgIGNoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZik7XG4gICAgfVxuXG4gICAgY29uc3QgY2xhaW1lZEhhc2ggPSBhd2FpdCBmZEZyb20ucmVhZCg2NCwgMCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNsYWltZWRIYXNoLCBcIkNsYWltZWQgUHJldmlvdXMgUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGNoYWxsZW5nZUhhc2ggPSBjaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNoYWxsZW5nZUhhc2gsIFwiQ3VycmVudCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnN0IGtleSA9IGtleVBhaXIuY3JlYXRlUFRhdUtleShjdXJ2ZSwgY2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgW1widGF1XCIsIFwiYWxwaGFcIiwgXCJiZXRhXCJdLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3M6IFwiICsgY3VydmUuRzEudG9TdHJpbmcoa2V5W2tdLmcxX3MsIDE2KSk7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoayArIFwiLmcxX3N4OiBcIiArIGN1cnZlLkcxLnRvU3RyaW5nKGtleVtrXS5nMV9zeCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhrICsgXCIuZzJfc3A6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NwLCAxNikpO1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGsgKyBcIi5nMl9zcHg6IFwiICsgY3VydmUuRzIudG9TdHJpbmcoa2V5W2tdLmcyX3NweCwgMTYpKTtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBCbGFrZTJiKDY0KTtcblxuICAgIGF3YWl0IGZkVG8ud3JpdGUoY2hhbGxlbmdlSGFzaCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGNoYWxsZW5nZUhhc2gpO1xuXG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpKjItMSwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcxXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgKDIgKiogcG93ZXIpICAgICwgY3VydmUuRnIub25lICAgICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcInRhdUcyXCIgICAgICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmFscGhhLnBydktleSwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImFscGhhVGF1RzFcIiwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzFcIiwgKDIgKiogcG93ZXIpICAgICwga2V5LmJldGEucHJ2S2V5ICwga2V5LnRhdS5wcnZLZXksIFwiQ09NUFJFU1NFRFwiLCBcImJldGFUYXVHMVwiICwgbG9nZ2VyICk7XG4gICAgYXdhaXQgYXBwbHlLZXlUb0NoYWxsZW5nZVNlY3Rpb24oZmRGcm9tLCBmZFRvLCByZXNwb25zZUhhc2hlciwgY3VydmUsIFwiRzJcIiwgMSAgICAgICAgICAgICAsIGtleS5iZXRhLnBydktleSAsIGtleS50YXUucHJ2S2V5LCBcIkNPTVBSRVNTRURcIiwgXCJiZXRhVGF1RzJcIiAsIGxvZ2dlciApO1xuXG4gICAgLy8gV3JpdGUgYW5kIGhhc2gga2V5XG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwga2V5LCBmYWxzZSk7XG4gICAgYXdhaXQgZmRUby53cml0ZShidWZmS2V5KTtcbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZktleSk7XG4gICAgY29uc3QgcmVzcG9uc2VIYXNoID0gcmVzcG9uc2VIYXNoZXIuZGlnZXN0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKHJlc3BvbnNlSGFzaCwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkVG8uY2xvc2UoKTtcbiAgICBhd2FpdCBmZEZyb20uY2xvc2UoKTtcbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlYWNvbihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgIGJlYWNvbkhhc2hTdHIsbnVtSXRlcmF0aW9uc0V4cCwgbG9nZ2VyKSB7XG4gICAgY29uc3QgYmVhY29uSGFzaCA9IG1pc2MuaGV4MkJ5dGVBcnJheShiZWFjb25IYXNoU3RyKTtcbiAgICBpZiAoICAgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCA9PSAwKVxuICAgICAgICB8fCAoYmVhY29uSGFzaC5ieXRlTGVuZ3RoKjIgIT1iZWFjb25IYXNoU3RyLmxlbmd0aCkpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIEJlYWNvbiBIYXNoLiAoSXQgbXVzdCBiZSBhIHZhbGlkIGhleGFkZWNpbWFsIHNlcXVlbmNlKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoYmVhY29uSGFzaC5sZW5ndGg+PTI1Nikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJNYXhpbXVtIGxlbmd0aCBvZiBiZWFjb24gaGFzaCBpcyAyNTUgYnl0ZXNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBudW1JdGVyYXRpb25zRXhwID0gcGFyc2VJbnQobnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgaWYgKChudW1JdGVyYXRpb25zRXhwPDEwKXx8KG51bUl0ZXJhdGlvbnNFeHA+NjMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtSXRlcmF0aW9uc0V4cC4gKE11c3QgYmUgYmV0d2VlbiAxMCBhbmQgNjMpXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuICAgIGlmIChwb3dlciAhPSBjZXJlbW9ueVBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlRoaXMgZmlsZSBoYXMgYmVlbiByZWR1Y2VkLiBZb3UgY2Fubm90IGNvbnRyaWJ1dGUgaW50byBhIHJlZHVjZWQgZmlsZS5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHNlY3Rpb25zWzEyXSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIud2FybihcIkNvbnRyaWJ1dGluZyBpbnRvIGEgZmlsZSB0aGF0IGhhcyBwaGFzZTIgY2FsY3VsYXRlZC4gWW91IHdpbGwgaGF2ZSB0byBwcmVwYXJlIHBoYXNlMiBhZ2Fpbi5cIik7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbnMgPSBhd2FpdCB1dGlscy5yZWFkQ29udHJpYnV0aW9ucyhmZE9sZCwgY3VydmUsIHNlY3Rpb25zKTtcbiAgICBjb25zdCBjdXJDb250cmlidXRpb24gPSB7XG4gICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgIHR5cGU6IDEsIC8vIEJlYWNvblxuICAgICAgICBudW1JdGVyYXRpb25zRXhwOiBudW1JdGVyYXRpb25zRXhwLFxuICAgICAgICBiZWFjb25IYXNoOiBiZWFjb25IYXNoXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGlmIChjb250cmlidXRpb25zLmxlbmd0aD4wKSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gY29udHJpYnV0aW9uc1tjb250cmlidXRpb25zLmxlbmd0aC0xXS5uZXh0Q2hhbGxlbmdlO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxhc3RDaGFsbGVuZ2VIYXNoID0gdXRpbHMuY2FsY3VsYXRlRmlyc3RDaGFsbGVuZ2VIYXNoKGN1cnZlLCBwb3dlciwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0gYXdhaXQgdXRpbHMua2V5RnJvbUJlYWNvbihjdXJ2ZSwgbGFzdENoYWxsZW5nZUhhc2gsIGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMSA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMywgXCJHMlwiLCAgKDIgKiogcG93ZXIpICwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcyXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi50YXVHMiA9IGZpcnN0UG9pbnRzWzFdO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oNCwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICwgY3VyQ29udHJpYnV0aW9uLmtleS5hbHBoYS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJhbHBoYVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIsIGxvZ2dlciApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5iZXRhRzEgPSBmaXJzdFBvaW50c1swXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDYsIFwiRzJcIiwgIDEsIGN1ckNvbnRyaWJ1dGlvbi5rZXkuYmV0YS5wcnZLZXksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJiZXRhVGF1RzJcIiwgbG9nZ2VyICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmJldGFHMiA9IGZpcnN0UG9pbnRzWzBdO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLnBhcnRpYWxIYXNoID0gcmVzcG9uc2VIYXNoZXIuZ2V0UGFydGlhbEhhc2goKTtcblxuICAgIGNvbnN0IGJ1ZmZLZXkgPSBuZXcgVWludDhBcnJheShjdXJ2ZS5GMS5uOCoyKjYrY3VydmUuRjIubjgqMiozKTtcblxuICAgIHV0aWxzLnRvUHRhdVB1YktleVJwcihidWZmS2V5LCAwLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmtleSwgZmFsc2UpO1xuXG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKG5ldyBVaW50OEFycmF5KGJ1ZmZLZXkpKTtcbiAgICBjb25zdCBoYXNoUmVzcG9uc2UgPSByZXNwb25zZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChoYXNoUmVzcG9uc2UsIFwiQ29udHJpYnV0aW9uIFJlc3BvbnNlIEhhc2ggaW1wb3J0ZWQ6IFwiKSk7XG5cbiAgICBjb25zdCBuZXh0Q2hhbGxlbmdlSGFzaGVyID0gbmV3IEJsYWtlMmIoNjQpO1xuICAgIG5leHRDaGFsbGVuZ2VIYXNoZXIudXBkYXRlKGhhc2hSZXNwb25zZSk7XG5cbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCAyLCAoMiAqKiBwb3dlcikgKiAyIC0xLCBcInRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDQsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYWxwaGFUYXVHMVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDUsICgyICoqIHBvd2VyKSAgICAgICAsIFwiYmV0YVRhdUcxXCIsIGxvZ2dlcik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIiwgbG9nZ2VyKTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi5uZXh0Q2hhbGxlbmdlID0gbmV4dENoYWxsZW5nZUhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSwgXCJOZXh0IENoYWxsZW5nZSBIYXNoOiBcIikpO1xuXG4gICAgY29udHJpYnV0aW9ucy5wdXNoKGN1ckNvbnRyaWJ1dGlvbik7XG5cbiAgICBhd2FpdCB1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMoZmROZXcsIGN1cnZlLCBjb250cmlidXRpb25zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIHJldHVybiBoYXNoUmVzcG9uc2U7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzU2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgTlBvaW50cywgZmlyc3QsIGluYywgc2VjdGlvbk5hbWUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgZmRPbGQucG9zID0gc2VjdGlvbnNbc2VjdGlvbklkXVswXS5wO1xuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZE5ldywgc2VjdGlvbklkKTtcblxuICAgICAgICBzdGFydFNlY3Rpb25zW3NlY3Rpb25JZF0gPSBmZE5ldy5wb3M7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoKDE8PDIwKSAvIHNHKTsgICAvLyAxMjhNYiBjaHVua3NcbiAgICAgICAgbGV0IHQgPSBmaXJzdDtcbiAgICAgICAgZm9yIChsZXQgaT0wIDsgaTxOUG9pbnRzIDsgaSs9IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBhcHBseWluZyBrZXkke3NlY3Rpb25OYW1lfTogJHtpfS8ke05Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuPSBNYXRoLm1pbihOUG9pbnRzLWksIGNodW5rU2l6ZSApO1xuICAgICAgICAgICAgY29uc3QgYnVmZkluID0gYXdhaXQgZmRPbGQucmVhZChuICogc0cpO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dExFTSA9IGF3YWl0IEcuYmF0Y2hBcHBseUtleShidWZmSW4sIHQsIGluYyk7XG5cbiAgICAgICAgICAgIC8qIENvZGUgdG8gdGVzdCB0aGUgY2FzZSB3aGVyZSB3ZSBkb24ndCBoYXZlIHRoZSAyXm0tMiBjb21wb25lbnRcbiAgICAgICAgICAgIGlmIChzZWN0aW9uTmFtZT09IFwidGF1RzFcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ6ID0gbmV3IFVpbnQ4QXJyYXkoNjQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXRMRU0uc2V0KGJ6LCA2NCooKDIgKiogcG93ZXIpIC0gMSApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgIGNvbnN0IHByb21pc2VXcml0ZSA9IGZkTmV3LndyaXRlKGJ1ZmZPdXRMRU0pO1xuICAgICAgICAgICAgY29uc3QgYnVmZk91dEMgPSBhd2FpdCBHLmJhdGNoTEVNdG9DKGJ1ZmZPdXRMRU0pO1xuXG4gICAgICAgICAgICByZXNwb25zZUhhc2hlci51cGRhdGUoYnVmZk91dEMpO1xuICAgICAgICAgICAgYXdhaXQgcHJvbWlzZVdyaXRlO1xuICAgICAgICAgICAgaWYgKGk9PTApICAgLy8gUmV0dXJuIHRoZSAyIGZpcnN0IHBvaW50cy5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8TWF0aC5taW4oMiwgTlBvaW50cyk7IGorKylcbiAgICAgICAgICAgICAgICAgICAgcmVzLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmZPdXRMRU0sIGoqc0cpKTtcbiAgICAgICAgICAgIHQgPSBjdXJ2ZS5Gci5tdWwodCwgY3VydmUuRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZE5ldyk7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGhhc2hTZWN0aW9uKGZkVG8sIGdyb3VwTmFtZSwgc2VjdGlvbklkLCBuUG9pbnRzLCBzZWN0aW9uTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZyAke3NlY3Rpb25OYW1lfTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGb3JtYXQgb2YgdGhlIG91dHB1dFxuLy8gICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjQgQnl0ZXNcbi8vICAgICAgMl5OKjItMSBUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIFRhdUcyIFBvaW50cyAodW5jb21wcmVzc2VkKVxuLy8gICAgICAyXk4gQWxwaGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEJldGFUYXVHMSBQb2ludHMgKHVuY29tcHJlc3NlZClcblxuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIGtleVBhaXIgZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gY29udHJpYnV0ZShvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKG9sZFB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEpO1xuICAgIGNvbnN0IHtjdXJ2ZSwgcG93ZXIsIGNlcmVtb255UG93ZXJ9ID0gYXdhaXQgdXRpbHMucmVhZFBUYXVIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcbiAgICBpZiAocG93ZXIgIT0gY2VyZW1vbnlQb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIGZpbGUgaGFzIGJlZW4gcmVkdWNlZC4gWW91IGNhbm5vdCBjb250cmlidXRlIGludG8gYSByZWR1Y2VkIGZpbGUuXCIpO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbnNbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci53YXJuKFwiV0FSTklORzogQ29udHJpYnV0aW5nIGludG8gYSBmaWxlIHRoYXQgaGFzIHBoYXNlMiBjYWxjdWxhdGVkLiBZb3Ugd2lsbCBoYXZlIHRvIHByZXBhcmUgcGhhc2UyIGFnYWluLlwiKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJpYnV0aW9ucyA9IGF3YWl0IHV0aWxzLnJlYWRDb250cmlidXRpb25zKGZkT2xkLCBjdXJ2ZSwgc2VjdGlvbnMpO1xuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHtcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdHlwZTogMCwgLy8gQmVhY29uXG4gICAgfTtcblxuICAgIGxldCBsYXN0Q2hhbGxlbmdlSGFzaDtcblxuICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2MuZ2V0UmFuZG9tUm5nKGVudHJvcHkpO1xuXG4gICAgaWYgKGNvbnRyaWJ1dGlvbnMubGVuZ3RoPjApIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSBjb250cmlidXRpb25zW2NvbnRyaWJ1dGlvbnMubGVuZ3RoLTFdLm5leHRDaGFsbGVuZ2U7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbGFzdENoYWxsZW5nZUhhc2ggPSB1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2goY3VydmUsIHBvd2VyLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIGEgcmFuZG9tIGtleVxuXG5cbiAgICBjdXJDb250cmlidXRpb24ua2V5ID0ga2V5UGFpci5jcmVhdGVQVGF1S2V5KGN1cnZlLCBsYXN0Q2hhbGxlbmdlSGFzaCwgcm5nKTtcblxuXG4gICAgY29uc3QgcmVzcG9uc2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgcmVzcG9uc2VIYXNoZXIudXBkYXRlKGxhc3RDaGFsbGVuZ2VIYXNoKTtcblxuICAgIGNvbnN0IGZkTmV3ID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUobmV3UFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSwgNyk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgY29uc3Qgc3RhcnRTZWN0aW9ucyA9IFtdO1xuXG4gICAgbGV0IGZpcnN0UG9pbnRzO1xuICAgIGZpcnN0UG9pbnRzID0gYXdhaXQgcHJvY2Vzc1NlY3Rpb24oMiwgXCJHMVwiLCAgKDIgKiogcG93ZXIpICogMiAtMSwgY3VydmUuRnIuZSgxKSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcInRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24udGF1RzEgPSBmaXJzdFBvaW50c1sxXTtcbiAgICBmaXJzdFBvaW50cyA9IGF3YWl0IHByb2Nlc3NTZWN0aW9uKDMsIFwiRzJcIiwgICgyICoqIHBvd2VyKSAsIGN1cnZlLkZyLmUoMSksIGN1ckNvbnRyaWJ1dGlvbi5rZXkudGF1LnBydktleSwgXCJ0YXVHMlwiICk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRhdUcyID0gZmlyc3RQb2ludHNbMV07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmFscGhhLnBydktleSwgY3VyQ29udHJpYnV0aW9uLmtleS50YXUucHJ2S2V5LCBcImFscGhhVGF1RzFcIiApO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5hbHBoYUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig1LCBcIkcxXCIsICAoMiAqKiBwb3dlcikgLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcxXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcxID0gZmlyc3RQb2ludHNbMF07XG4gICAgZmlyc3RQb2ludHMgPSBhd2FpdCBwcm9jZXNzU2VjdGlvbig2LCBcIkcyXCIsICAxLCBjdXJDb250cmlidXRpb24ua2V5LmJldGEucHJ2S2V5LCBjdXJDb250cmlidXRpb24ua2V5LnRhdS5wcnZLZXksIFwiYmV0YVRhdUcyXCIgKTtcbiAgICBjdXJDb250cmlidXRpb24uYmV0YUcyID0gZmlyc3RQb2ludHNbMF07XG5cbiAgICBjdXJDb250cmlidXRpb24ucGFydGlhbEhhc2ggPSByZXNwb25zZUhhc2hlci5nZXRQYXJ0aWFsSGFzaCgpO1xuXG4gICAgY29uc3QgYnVmZktleSA9IG5ldyBVaW50OEFycmF5KGN1cnZlLkYxLm44KjIqNitjdXJ2ZS5GMi5uOCoyKjMpO1xuXG4gICAgdXRpbHMudG9QdGF1UHViS2V5UnByKGJ1ZmZLZXksIDAsIGN1cnZlLCBjdXJDb250cmlidXRpb24ua2V5LCBmYWxzZSk7XG5cbiAgICByZXNwb25zZUhhc2hlci51cGRhdGUobmV3IFVpbnQ4QXJyYXkoYnVmZktleSkpO1xuICAgIGNvbnN0IGhhc2hSZXNwb25zZSA9IHJlc3BvbnNlSGFzaGVyLmRpZ2VzdCgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGhhc2hSZXNwb25zZSwgXCJDb250cmlidXRpb24gUmVzcG9uc2UgSGFzaCBpbXBvcnRlZDogXCIpKTtcblxuICAgIGNvbnN0IG5leHRDaGFsbGVuZ2VIYXNoZXIgPSBuZXcgQmxha2UyYig2NCk7XG4gICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoaGFzaFJlc3BvbnNlKTtcblxuICAgIGF3YWl0IGhhc2hTZWN0aW9uKGZkTmV3LCBcIkcxXCIsIDIsICgyICoqIHBvd2VyKSAqIDIgLTEsIFwidGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgMywgKDIgKiogcG93ZXIpICAgICAgICwgXCJ0YXVHMlwiKTtcbiAgICBhd2FpdCBoYXNoU2VjdGlvbihmZE5ldywgXCJHMVwiLCA0LCAoMiAqKiBwb3dlcikgICAgICAgLCBcImFscGhhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzFcIiwgNSwgKDIgKiogcG93ZXIpICAgICAgICwgXCJiZXRhVGF1RzFcIik7XG4gICAgYXdhaXQgaGFzaFNlY3Rpb24oZmROZXcsIFwiRzJcIiwgNiwgMSAgICAgICAgICAgICAgICAgICwgXCJiZXRhRzJcIik7XG5cbiAgICBjdXJDb250cmlidXRpb24ubmV4dENoYWxsZW5nZSA9IG5leHRDaGFsbGVuZ2VIYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY3VyQ29udHJpYnV0aW9uLm5leHRDaGFsbGVuZ2UsIFwiTmV4dCBDaGFsbGVuZ2UgSGFzaDogXCIpKTtcblxuICAgIGNvbnRyaWJ1dGlvbnMucHVzaChjdXJDb250cmlidXRpb24pO1xuXG4gICAgYXdhaXQgdXRpbHMud3JpdGVDb250cmlidXRpb25zKGZkTmV3LCBjdXJ2ZSwgY29udHJpYnV0aW9ucyk7XG5cbiAgICBhd2FpdCBmZE9sZC5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTmV3LmNsb3NlKCk7XG5cbiAgICByZXR1cm4gaGFzaFJlc3BvbnNlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb24oc2VjdGlvbklkLCBncm91cE5hbWUsIE5Qb2ludHMsIGZpcnN0LCBpbmMsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICBmZE9sZC5wb3MgPSBzZWN0aW9uc1tzZWN0aW9uSWRdWzBdLnA7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBzZWN0aW9uSWQpO1xuXG4gICAgICAgIHN0YXJ0U2VjdGlvbnNbc2VjdGlvbklkXSA9IGZkTmV3LnBvcztcblxuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gTWF0aC5mbG9vcigoMTw8MjApIC8gc0cpOyAgIC8vIDEyOE1iIGNodW5rc1xuICAgICAgICBsZXQgdCA9IGZpcnN0O1xuICAgICAgICBmb3IgKGxldCBpPTAgOyBpPE5Qb2ludHMgOyBpKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHByb2Nlc3Npbmc6ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7TlBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKE5Qb2ludHMtaSwgY2h1bmtTaXplICk7XG4gICAgICAgICAgICBjb25zdCBidWZmSW4gPSBhd2FpdCBmZE9sZC5yZWFkKG4gKiBzRyk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0TEVNID0gYXdhaXQgRy5iYXRjaEFwcGx5S2V5KGJ1ZmZJbiwgdCwgaW5jKTtcblxuICAgICAgICAgICAgLyogQ29kZSB0byB0ZXN0IHRoZSBjYXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgdGhlIDJebS0yIGNvbXBvbmVudFxuICAgICAgICAgICAgaWYgKHNlY3Rpb25OYW1lPT0gXCJ0YXVHMVwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYnogPSBuZXcgVWludDhBcnJheSg2NCk7XG4gICAgICAgICAgICAgICAgYnVmZk91dExFTS5zZXQoYnosIDY0KigoMiAqKiBwb3dlcikgLSAxICkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKi9cblxuICAgICAgICAgICAgY29uc3QgcHJvbWlzZVdyaXRlID0gZmROZXcud3JpdGUoYnVmZk91dExFTSk7XG4gICAgICAgICAgICBjb25zdCBidWZmT3V0QyA9IGF3YWl0IEcuYmF0Y2hMRU10b0MoYnVmZk91dExFTSk7XG5cbiAgICAgICAgICAgIHJlc3BvbnNlSGFzaGVyLnVwZGF0ZShidWZmT3V0Qyk7XG4gICAgICAgICAgICBhd2FpdCBwcm9taXNlV3JpdGU7XG4gICAgICAgICAgICBpZiAoaT09MCkgICAvLyBSZXR1cm4gdGhlIDIgZmlyc3QgcG9pbnRzLlxuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxNYXRoLm1pbigyLCBOUG9pbnRzKTsgaisrKVxuICAgICAgICAgICAgICAgICAgICByZXMucHVzaChHLmZyb21ScHJMRU0oYnVmZk91dExFTSwgaipzRykpO1xuICAgICAgICAgICAgdCA9IGN1cnZlLkZyLm11bCh0LCBjdXJ2ZS5Gci5leHAoaW5jLCBuKSk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkTmV3KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaFNlY3Rpb24oZmRUbywgZ3JvdXBOYW1lLCBzZWN0aW9uSWQsIG5Qb2ludHMsIHNlY3Rpb25OYW1lKSB7XG5cbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNDaHVuayA9IE1hdGguZmxvb3IoKDE8PDI0KS9zRyk7XG5cbiAgICAgICAgY29uc3Qgb2xkUG9zID0gZmRUby5wb3M7XG4gICAgICAgIGZkVG8ucG9zID0gc3RhcnRTZWN0aW9uc1tzZWN0aW9uSWRdO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgblBvaW50czsgaSArPSBuUG9pbnRzQ2h1bmspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmaSkgbG9nZ2VyLmRlYnVnKGBIYXNoaW5nICR7c2VjdGlvbk5hbWV9OiBgICsgaSk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oblBvaW50cy1pLCBuUG9pbnRzQ2h1bmspO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmTEVNID0gYXdhaXQgZmRUby5yZWFkKG4gKiBzRyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVID0gYXdhaXQgRy5iYXRjaExFTXRvVShidWZmTEVNKTtcblxuICAgICAgICAgICAgbmV4dENoYWxsZW5nZUhhc2hlci51cGRhdGUoYnVmZlUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZmRUby5wb3MgPSBvbGRQb3M7XG4gICAgfVxuXG5cbn1cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVBoYXNlMihvbGRQdGF1RmlsZW5hbWUsIG5ld1BUYXVGaWxlbmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUob2xkUHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZShuZXdQVGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxLCAxMSk7XG4gICAgYXdhaXQgdXRpbHMud3JpdGVQVGF1SGVhZGVyKGZkTmV3LCBjdXJ2ZSwgcG93ZXIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigzLCAxMywgXCJHMlwiLCBcInRhdUcyXCIgKTtcbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbig0LCAxNCwgXCJHMVwiLCBcImFscGhhVGF1RzFcIiApO1xuICAgIGF3YWl0IHByb2Nlc3NTZWN0aW9uKDUsIDE1LCBcIkcxXCIsIFwiYmV0YVRhdUcxXCIgKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGZvciAobGV0IHA9MDsgcDw9cG93ZXI7IHArKykge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1NlY3Rpb25Qb3dlcihwKSB7XG4gICAgICAgICAgICBjb25zdCBuUG9pbnRzID0gMiAqKiBwO1xuICAgICAgICAgICAgY29uc3QgRyA9IGN1cnZlW0dzdHJdO1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIGNvbnN0IHNHbWlkID0gRy5GLm44KjM7XG5cbiAgICAgICAgICAgIGxldCBidWZmO1xuICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzR2luKTtcblxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBvbGRTZWN0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKChvbGRTZWN0aW9uSWQgPT0gMikmJihwPT1wb3dlcisxKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgICAgICBidWZmLnNldChjdXJ2ZS5HMS56ZXJvQWZmaW5lLCAoblBvaW50cy0xKSpzR2luICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkT2xkLnJlYWRUb0J1ZmZlcihidWZmLCAwLG5Qb2ludHMqc0dpbiApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkT2xkLCB0cnVlKTtcblxuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpID0gIGJ1ZmYuc2xpY2UoaSpzR2luLCAoaSsxKSpzR2luKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG1pID0gYnVmZi5zbGljZSgoaStzbWFsbE0pKnNHaW4sIChpK3NtYWxsTSsxKSpzR2luKTtcblxuICAgICAgICAgICAgICAgICAgICB0MC5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcih0aSAsIHNoaWZ0X3RvX3NtYWxsX20pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bWlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZV9vdmVyX2Rlbm9tXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSpzR21pZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0MS5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBHLnRpbWVzRnIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRy5zdWIoIHRtaSwgdGkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyLm11bChzSW52QWNjLCBvbmVfb3Zlcl9kZW5vbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgICAgICBzSW52QWNjID0gRnIubXVsKHNJbnZBY2MsIEZyLnNoaWZ0SW52KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdDAgPSBhd2FpdCBHLmlmZnQodDAsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQwKTtcbiAgICAgICAgICAgICAgICB0MCA9IG51bGw7XG4gICAgICAgICAgICAgICAgdDEgPSBhd2FpdCBHLmlmZnQodDEsIFwiamFjb2JpYW5cIiwgXCJhZmZpbmVcIiwgbG9nZ2VyLCBzZWN0aW9uTmFtZSArIFwiIHQwXCIpO1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkTmV3LndyaXRlKHQxKTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJQb3dlciB0b28gYmlnXCIpO1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvd2VyIHRvIGJpZ1wiKTtcbiAgICAgICAgICAgIH1cbiovXG4gICAgICAgIH1cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdXRpbHMuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gdHJ1bmNhdGUocHRhdUZpbGVuYW1lLCB0ZW1wbGF0ZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkT2xkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocHRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlciwgY2VyZW1vbnlQb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGZvciAobGV0IHA9MTsgcDxwb3dlcjsgcCsrKSB7XG4gICAgICAgIGF3YWl0IGdlbmVyYXRlVHJ1bmNhdGUocCk7XG4gICAgfVxuXG4gICAgYXdhaXQgZmRPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVUcnVuY2F0ZShwKSB7XG5cbiAgICAgICAgbGV0IHNQID0gcC50b1N0cmluZygpO1xuICAgICAgICB3aGlsZSAoc1AubGVuZ3RoPDIpIHNQID0gXCIwXCIgKyBzUDtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJXcml0aW5nIFBvd2VyOiBcIitzUCk7XG5cbiAgICAgICAgY29uc3QgZmROZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh0ZW1wbGF0ZSArIHNQICsgXCIucHRhdVwiLCBcInB0YXVcIiwgMSwgMTEpO1xuICAgICAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwLCBjZXJlbW9ueVBvd2VyKTtcblxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMiwgKCgyICoqIHApKjItMSkgKiBzRzEgKTsgLy8gdGFnRzFcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDMsICgyICoqIHApICogc0cyKTsgLy8gdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDQsICgyICoqIHApICogc0cxKTsgLy8gYWxmYVRhdUcxXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA1LCAoMiAqKiBwKSAqIHNHMSk7IC8vIGJldGFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNiwgIHNHMik7IC8vIGJldGFUYXVHMlxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7IC8vIGNvbnRyaWJ1dGlvbnNcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDEyLCAoKDIgKiogKHArMSkpKjIgLTEpICogc0cxKTsgLy8gTF90YXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMsICgoMiAqKiBwKSoyIC0xKSAqIHNHMik7IC8vIExfdGF1RzJcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE0LCAoKDIgKiogcCkqMiAtMSkgKiBzRzEpOyAvLyBMX2FsZmFUYXVHMVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTUsICgoMiAqKiBwKSoyIC0xKSAqIHNHMSk7IC8vIExfYmV0YVRhdUcxXG5cbiAgICAgICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcbiAgICB9XG5cblxufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQge0JpZ0J1ZmZlcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBjb252ZXJ0KG9sZFB0YXVGaWxlbmFtZSwgbmV3UFRhdUZpbGVuYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShvbGRQdGF1RmlsZW5hbWUsIFwicHRhdVwiLCAxKTtcbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkT2xkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKG5ld1BUYXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDExKTtcbiAgICBhd2FpdCB1dGlscy53cml0ZVBUYXVIZWFkZXIoZmROZXcsIGN1cnZlLCBwb3dlcik7XG5cbiAgICAvLyBjb25zdCBmZFRtcCA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKG5ld1BUYXVGaWxlbmFtZSsgXCIudG1wXCIpO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDUpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA2KTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNyk7XG5cbiAgICBhd2FpdCBwcm9jZXNzU2VjdGlvbigyLCAxMiwgXCJHMVwiLCBcInRhdUcxXCIgKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgMTMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAxNCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDE1KTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIC8vIGF3YWl0IGZzLnByb21pc2VzLnVubGluayhuZXdQVGF1RmlsZW5hbWUrIFwiLnRtcFwiKTtcblxuICAgIHJldHVybjtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uKG9sZFNlY3Rpb25JZCwgbmV3U2VjdGlvbklkLCBHc3RyLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJTdGFydGluZyBzZWN0aW9uOiBcIitzZWN0aW9uTmFtZSk7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkTmV3LCBuZXdTZWN0aW9uSWQpO1xuXG4gICAgICAgIGNvbnN0IHNpemUgPSBzZWN0aW9uc1tuZXdTZWN0aW9uSWRdWzBdLnNpemU7XG4gICAgICAgIGNvbnN0IGNodW5rU2l6ZSA9IGZkT2xkLnBhZ2VTaXplO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG5ld1NlY3Rpb25JZCk7XG4gICAgICAgIGZvciAobGV0IHA9MDsgcDxzaXplOyBwKz1jaHVua1NpemUpIHtcbiAgICAgICAgICAgIGNvbnN0IGwgPSBNYXRoLm1pbihzaXplIC1wLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGF3YWl0IGZkT2xkLnJlYWQobCk7XG4gICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQpO1xuXG4gICAgICAgIGlmIChvbGRTZWN0aW9uSWQgPT0gMikge1xuICAgICAgICAgICAgYXdhaXQgcHJvY2Vzc1NlY3Rpb25Qb3dlcihwb3dlcisxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRXcml0ZVNlY3Rpb24oZmROZXcpO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NTZWN0aW9uUG93ZXIocCkge1xuICAgICAgICAgICAgY29uc3QgblBvaW50cyA9IDIgKiogcDtcbiAgICAgICAgICAgIGNvbnN0IEcgPSBjdXJ2ZVtHc3RyXTtcbiAgICAgICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcblxuICAgICAgICAgICAgbGV0IGJ1ZmY7XG4gICAgICAgICAgICBidWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHaW4pO1xuXG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIG9sZFNlY3Rpb25JZCk7XG4gICAgICAgICAgICBpZiAoKG9sZFNlY3Rpb25JZCA9PSAyKSYmKHA9PXBvd2VyKzEpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsKG5Qb2ludHMtMSkqc0dpbiApO1xuICAgICAgICAgICAgICAgIGJ1ZmYuc2V0KGN1cnZlLkcxLnplcm9BZmZpbmUsIChuUG9pbnRzLTEpKnNHaW4gKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmRPbGQucmVhZFRvQnVmZmVyKGJ1ZmYsIDAsblBvaW50cypzR2luICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmRPbGQsIHRydWUpO1xuXG4gICAgICAgICAgICBidWZmID0gYXdhaXQgRy5sYWdyYW5nZUV2YWx1YXRpb25zKGJ1ZmYsIFwiYWZmaW5lXCIsIFwiYWZmaW5lXCIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpO1xuICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUoYnVmZik7XG5cbi8qXG4gICAgICAgICAgICBpZiAocCA8PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICAgICAgYnVmZiA9IGF3YWl0IEcuaWZmdChidWZmLCBcImFmZmluZVwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBmZE5ldy53cml0ZShidWZmKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocCA9PSBjdXJ2ZS5Gci5zKzEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzbWFsbE0gPSAxPDxjdXJ2ZS5Gci5zO1xuICAgICAgICAgICAgICAgIGxldCB0MCA9IG5ldyBCaWdCdWZmZXIoIHNtYWxsTSAqIHNHbWlkICk7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gbmV3IEJpZ0J1ZmZlciggc21hbGxNICogc0dtaWQgKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHNoaWZ0X3RvX3NtYWxsX20gPSBGci5leHAoRnIuc2hpZnQsIHNtYWxsTSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb25lX292ZXJfZGVub20gPSBGci5pbnYoRnIuc3ViKHNoaWZ0X3RvX3NtYWxsX20sIEZyLm9uZSkpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHNJbnZBY2MgPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNtYWxsTTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpJTEwMDAwKSBsb2dnZXIuZGVidWcoYHNlY3Rpb25OYW1lIHByZXBhcmUgTCBjYWxjOiAke3NlY3Rpb25OYW1lfSwgJHtpfS8ke3NtYWxsTX1gKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGkgPSAgYnVmZi5zbGljZShpKnNHaW4sIChpKzEpKnNHaW4pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0bWkgPSBidWZmLnNsaWNlKChpK3NtYWxsTSkqc0dpbiwgKGkrc21hbGxNKzEpKnNHaW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIHQwLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRy50aW1lc0ZyKHRpICwgc2hpZnRfdG9fc21hbGxfbSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25lX292ZXJfZGVub21cbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKnNHbWlkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHQxLnNldChcbiAgICAgICAgICAgICAgICAgICAgICAgIEcudGltZXNGcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHLnN1YiggdG1pLCB0aSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnIubXVsKHNJbnZBY2MsIG9uZV9vdmVyX2Rlbm9tKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqc0dtaWRcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuXG4gICAgICAgICAgICAgICAgICAgIHNJbnZBY2MgPSBGci5tdWwoc0ludkFjYywgRnIuc2hpZnRJbnYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0MCA9IGF3YWl0IEcuaWZmdCh0MCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDBcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDApO1xuICAgICAgICAgICAgICAgIHQwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0MSA9IGF3YWl0IEcuaWZmdCh0MSwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIsIHNlY3Rpb25OYW1lICsgXCIgdDFcIik7XG4gICAgICAgICAgICAgICAgYXdhaXQgZmROZXcud3JpdGUodDEpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VyIHRvbyBiaWdcIik7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG93ZXIgdG8gYmlnXCIpO1xuICAgICAgICAgICAgfVxuKi9cbiAgICAgICAgfVxuXG5cbiAgICB9XG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7IHN0cmluZ2lmeUJpZ0ludHNXaXRoRmllbGQgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGV4cG9ydEpzb24ocFRhdUZpbGVuYW1lLCB2ZXJib3NlKSB7XG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVuYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICBjb25zdCB7Y3VydmUsIHBvd2VyfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBwVGF1ID0ge307XG4gICAgcFRhdS5xID0gY3VydmUucTtcbiAgICBwVGF1LnBvd2VyID0gcG93ZXI7XG4gICAgcFRhdS5jb250cmlidXRpb25zID0gYXdhaXQgdXRpbHMucmVhZENvbnRyaWJ1dGlvbnMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBwVGF1LnRhdUcxID0gYXdhaXQgZXhwb3J0U2VjdGlvbigyLCBcIkcxXCIsICgyICoqIHBvd2VyKSoyIC0xLCBcInRhdUcxXCIpO1xuICAgIHBUYXUudGF1RzIgPSBhd2FpdCBleHBvcnRTZWN0aW9uKDMsIFwiRzJcIiwgKDIgKiogcG93ZXIpLCBcInRhdUcyXCIpO1xuICAgIHBUYXUuYWxwaGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNCwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYWxwaGFUYXVHMVwiKTtcbiAgICBwVGF1LmJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydFNlY3Rpb24oNSwgXCJHMVwiLCAoMiAqKiBwb3dlciksIFwiYmV0YVRhdUcxXCIpO1xuICAgIHBUYXUuYmV0YUcyID0gYXdhaXQgZXhwb3J0U2VjdGlvbig2LCBcIkcyXCIsIDEsIFwiYmV0YUcyXCIpO1xuXG4gICAgcFRhdS5sVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxMiwgXCJHMVwiLCBcImxUYXVHMVwiKTtcbiAgICBwVGF1LmxUYXVHMiA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDEzLCBcIkcyXCIsIFwibFRhdUcyXCIpO1xuICAgIHBUYXUubEFscGhhVGF1RzEgPSBhd2FpdCBleHBvcnRMYWdyYW5nZSgxNCwgXCJHMVwiLCBcImxBbHBoYVRhdUcyXCIpO1xuICAgIHBUYXUubEJldGFUYXVHMSA9IGF3YWl0IGV4cG9ydExhZ3JhbmdlKDE1LCBcIkcxXCIsIFwibEJldGFUYXVHMlwiKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG5cbiAgICByZXR1cm4gc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZChjdXJ2ZS5GciwgcFRhdSk7XG5cblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZXhwb3J0U2VjdGlvbihzZWN0aW9uSWQsIGdyb3VwTmFtZSwgblBvaW50cywgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG5cbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkLCBzZWN0aW9ucywgc2VjdGlvbklkKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgodmVyYm9zZSkmJmkmJihpJTEwMDAwID09IDApKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IGAgKyBpKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKHNHKTtcbiAgICAgICAgICAgIHJlcy5wdXNoKEcuZnJvbVJwckxFTShidWZmLCAwKSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGV4cG9ydExhZ3JhbmdlKHNlY3Rpb25JZCwgZ3JvdXBOYW1lLCBzZWN0aW9uTmFtZSkge1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBzZWN0aW9uSWQpO1xuICAgICAgICBmb3IgKGxldCBwPTA7IHA8PXBvd2VyOyBwKyspIHtcbiAgICAgICAgICAgIGlmICh2ZXJib3NlKSBjb25zb2xlLmxvZyhgJHtzZWN0aW9uTmFtZX06IFBvd2VyOiAke3B9YCk7XG4gICAgICAgICAgICByZXNbcF0gPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IG5Qb2ludHMgPSAoMiAqKiBwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKHZlcmJvc2UpJiZpJiYoaSUxMDAwMCA9PSAwKSkgY29uc29sZS5sb2coYCR7c2VjdGlvbk5hbWV9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRyk7XG4gICAgICAgICAgICAgICAgcmVzW3BdLnB1c2goRy5mcm9tUnByTEVNKGJ1ZmYsIDApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQsIHRydWUpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuXG59XG5cblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIG5ld0FjY3VtdWxhdG9yfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9uZXcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRDaGFsbGVuZ2V9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X2V4cG9ydF9jaGFsbGVuZ2UuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBpbXBvcnRSZXNwb25zZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfaW1wb3J0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV92ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjaGFsbGVuZ2VDb250cmlidXRlfSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jaGFsbGVuZ2VfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlYWNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfYmVhY29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgY29udHJpYnV0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHByZXBhcmVQaGFzZTJ9IGZyb20gXCIuL3Bvd2Vyc29mdGF1X3ByZXBhcmVwaGFzZTIuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyB0cnVuY2F0ZX0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfdHJ1bmNhdGUuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBjb252ZXJ0fSBmcm9tIFwiLi9wb3dlcnNvZnRhdV9jb252ZXJ0LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vcG93ZXJzb2Z0YXVfZXhwb3J0X2pzb24uanNcIjtcbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHIxY3NQcmludChyMWNzLCBzeW1zLCBsb2dnZXIpIHtcbiAgICBmb3IgKGxldCBpPTA7IGk8cjFjcy5jb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBwcmludENvc3RyYWludChyMWNzLmNvbnN0cmFpbnRzW2ldKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcHJpbnRDb3N0cmFpbnQoYykge1xuICAgICAgICBjb25zdCBsYzJzdHIgPSAobGMpID0+IHtcbiAgICAgICAgICAgIGxldCBTID0gXCJcIjtcbiAgICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsYyk7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goIChrKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBzeW1zLnZhcklkeDJOYW1lW2tdO1xuICAgICAgICAgICAgICAgIGlmIChuYW1lID09IFwib25lXCIpIG5hbWUgPSBcIjFcIjtcblxuICAgICAgICAgICAgICAgIGxldCB2cyA9IHIxY3MuY3VydmUuRnIudG9TdHJpbmcobGNba10pO1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIjFcIikgdnMgPSBcIlwiOyAgLy8gRG8gbm90IHNob3cgb25lc1xuICAgICAgICAgICAgICAgIGlmICh2cyA9PSBcIi0xXCIpIHZzID0gXCItXCI7ICAvLyBEbyBub3Qgc2hvdyBvbmVzXG4gICAgICAgICAgICAgICAgaWYgKChTIT1cIlwiKSYmKHZzWzBdIT1cIi1cIikpIHZzID0gXCIrXCIrdnM7XG4gICAgICAgICAgICAgICAgaWYgKFMhPVwiXCIpIHZzID0gXCIgXCIrdnM7XG4gICAgICAgICAgICAgICAgUz0gUyArIHZzICAgKyBuYW1lO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gUztcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgUyA9IGBbICR7bGMyc3RyKGNbMF0pfSBdICogWyAke2xjMnN0cihjWzFdKX0gXSAtIFsgJHtsYzJzdHIoY1syXSl9IF0gPSAwYDtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oUyk7XG4gICAgfVxuXG59XG4iLCIvKiBnbG9iYWwgQmlnSW50ICovXG5jb25zdCBoZXhMZW4gPSBbIDAsIDEsIDIsIDIsIDMsIDMsIDMsIDMsIDQgLDQgLDQgLDQgLDQgLDQgLDQgLDRdO1xuXG5mdW5jdGlvbiBmcm9tU3RyaW5nKHMsIHJhZGl4KSB7XG4gICAgaWYgKCghcmFkaXgpfHwocmFkaXg9PTEwKSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgIH0gZWxzZSBpZiAocmFkaXg9PTE2KSB7XG4gICAgICAgIGlmIChzLnNsaWNlKDAsMikgPT0gXCIweFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gQmlnSW50KHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIEJpZ0ludChcIjB4XCIrcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmNvbnN0IGUgPSBmcm9tU3RyaW5nO1xuXG5mdW5jdGlvbiBmcm9tQXJyYXkoYSwgcmFkaXgpIHtcbiAgICBsZXQgYWNjID1CaWdJbnQoMCk7XG4gICAgcmFkaXggPSBCaWdJbnQocmFkaXgpO1xuICAgIGZvciAobGV0IGk9MDsgaTxhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGFjYyA9IGFjYypyYWRpeCArIEJpZ0ludChhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoJDYoYSkge1xuICAgIGNvbnN0IGFTID1hLnRvU3RyaW5nKDE2KTtcbiAgICByZXR1cm4gKGFTLmxlbmd0aC0xKSo0ICtoZXhMZW5bcGFyc2VJbnQoYVNbMF0sIDE2KV07XG59XG5cbmZ1bmN0aW9uIGlzTmVnYXRpdmUkNChhKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA8IEJpZ0ludCgwKTtcbn1cblxuZnVuY3Rpb24gaXNaZXJvJDEoYSkge1xuICAgIHJldHVybiAhYTtcbn1cblxuZnVuY3Rpb24gc2hpZnRMZWZ0KGEsIG4pIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw8IEJpZ0ludChuKTtcbn1cblxuZnVuY3Rpb24gc2hpZnRSaWdodChhLCBuKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+PiBCaWdJbnQobik7XG59XG5cbmNvbnN0IHNobCA9IHNoaWZ0TGVmdDtcbmNvbnN0IHNociA9IHNoaWZ0UmlnaHQ7XG5cbmZ1bmN0aW9uIGlzT2RkJDUoYSkge1xuICAgIHJldHVybiAoQmlnSW50KGEpICYgQmlnSW50KDEpKSA9PSBCaWdJbnQoMSk7XG59XG5cblxuZnVuY3Rpb24gbmFmKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIEJpZ0ludCg0KSk7XG4gICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgRSA9IEUgLSBCaWdJbnQoeik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG5mdW5jdGlvbiBiaXRzKG4pIHtcbiAgICBsZXQgRSA9IEJpZ0ludChuKTtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICB3aGlsZSAoRSkge1xuICAgICAgICBpZiAoRSAmIEJpZ0ludCgxKSkge1xuICAgICAgICAgICAgcmVzLnB1c2goMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICB9XG4gICAgICAgIEUgPSBFID4+IEJpZ0ludCgxKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gdG9OdW1iZXIkMShzKSB7XG4gICAgaWYgKHM+QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSICkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIHRvbyBiaWdcIik7XG4gICAgfVxuICAgIHJldHVybiBOdW1iZXIocyk7XG59XG5cbmZ1bmN0aW9uIHRvQXJyYXkocywgcmFkaXgpIHtcbiAgICBjb25zdCByZXMgPSBbXTtcbiAgICBsZXQgcmVtID0gQmlnSW50KHMpO1xuICAgIHJhZGl4ID0gQmlnSW50KHJhZGl4KTtcbiAgICB3aGlsZSAocmVtKSB7XG4gICAgICAgIHJlcy51bnNoaWZ0KCBOdW1iZXIocmVtICUgcmFkaXgpKTtcbiAgICAgICAgcmVtID0gcmVtIC8gcmFkaXg7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cblxuZnVuY3Rpb24gYWRkKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICsgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBzdWIoYSwgYikge1xuICAgIHJldHVybiBCaWdJbnQoYSkgLSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lZyhhKSB7XG4gICAgcmV0dXJuIC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIG11bChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gc3F1YXJlJDIoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgKiBCaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIHBvdyhhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAqKiBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGV4cCQxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICoqIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYWJzJDEoYSkge1xuICAgIHJldHVybiBCaWdJbnQoYSkgPj0gMCA/IEJpZ0ludChhKSA6IC1CaWdJbnQoYSk7XG59XG5cbmZ1bmN0aW9uIGRpdihhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAvIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbW9kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICUgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBlcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA9PSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIG5lcShhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAhPSBCaWdJbnQoYik7XG59XG5cbmZ1bmN0aW9uIGx0KGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBndChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSA+IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbGVxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIDw9IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gZ2VxKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpID49IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYmFuZChhLCBiKSB7XG4gICAgcmV0dXJuIEJpZ0ludChhKSAmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gYm9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHwgQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBieG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIF4gQmlnSW50KGIpO1xufVxuXG5mdW5jdGlvbiBsYW5kKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpICYmIEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG9yKGEsIGIpIHtcbiAgICByZXR1cm4gQmlnSW50KGEpIHx8IEJpZ0ludChiKTtcbn1cblxuZnVuY3Rpb24gbG5vdChhKSB7XG4gICAgcmV0dXJuICFCaWdJbnQoYSk7XG59XG5cbi8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiB0b1JwckxFKGJ1ZmYsIG8sIGUsIG44KSB7XG4gICAgY29uc3QgcyA9IFwiMDAwMDAwMFwiICsgZS50b1N0cmluZygxNik7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgbCA9ICgoKHMubGVuZ3RoLTcpKjQgLSAxKSA+PiA1KSsxOyAgICAvLyBOdW1iZXIgb2YgMzJiaXQgd29yZHM7XG4gICAgZm9yIChsZXQgaT0wOyBpPGw7IGkrKykgdltpXSA9IHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNik7XG4gICAgZm9yIChsZXQgaT1sOyBpPHYubGVuZ3RoOyBpKyspIHZbaV0gPSAwO1xuICAgIGZvciAobGV0IGk9di5sZW5ndGgqNDsgaTxuODsgaSsrKSBidWZmW2ldID0gdG9OdW1iZXIkMShiYW5kKHNoaWZ0UmlnaHQoZSwgaSo4KSwgMHhGRikpO1xufVxuXG4vLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuZnVuY3Rpb24gdG9ScHJCRShidWZmLCBvLCBlLCBuOCkge1xuICAgIGNvbnN0IHMgPSBcIjAwMDAwMDBcIiArIGUudG9TdHJpbmcoMTYpO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBsID0gKCgocy5sZW5ndGgtNykqNCAtIDEpID4+IDUpKzE7ICAgIC8vIE51bWJlciBvZiAzMmJpdCB3b3JkcztcbiAgICBmb3IgKGxldCBpPTA7IGk8bDsgaSsrKSB2LnNldFVpbnQzMihuOC1pKjQgLTQsIHBhcnNlSW50KHMuc3Vic3RyaW5nKHMubGVuZ3RoLTgqaS04LCBzLmxlbmd0aC04KmkpLCAxNiksIGZhbHNlKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bjgvNC1sOyBpKyspIHZbaV0gPSAwO1xufVxuXG4vLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbmZ1bmN0aW9uIGZyb21ScHJMRShidWZmLCBvLCBuOCkge1xuICAgIG44ID0gbjggfHwgYnVmZi5ieXRlTGVuZ3RoO1xuICAgIG8gPSBvIHx8IDA7XG4gICAgY29uc3QgdiA9IG5ldyBVaW50MzJBcnJheShidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0ICsgbywgbjgvNCk7XG4gICAgY29uc3QgYSA9IG5ldyBBcnJheShuOC80KTtcbiAgICB2LmZvckVhY2goIChjaCxpKSA9PiBhW2EubGVuZ3RoLWktMV0gPSBjaC50b1N0cmluZygxNikucGFkU3RhcnQoOCxcIjBcIikgKTtcbiAgICByZXR1cm4gZnJvbVN0cmluZyhhLmpvaW4oXCJcIiksIDE2KTtcbn1cblxuLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG5mdW5jdGlvbiBmcm9tUnByQkUoYnVmZiwgbywgbjgpIHtcbiAgICBuOCA9IG44IHx8IGJ1ZmYuYnl0ZUxlbmd0aDtcbiAgICBvID0gbyB8fCAwO1xuICAgIGNvbnN0IHYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCArIG8sIG44KTtcbiAgICBjb25zdCBhID0gbmV3IEFycmF5KG44LzQpO1xuICAgIGZvciAobGV0IGk9MDsgaTxuOC80OyBpKyspIHtcbiAgICAgICAgYVtpXSA9IHYuZ2V0VWludDMyKGkqNCwgZmFsc2UpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIik7XG4gICAgfVxuICAgIHJldHVybiBmcm9tU3RyaW5nKGEuam9pbihcIlwiKSwgMTYpO1xufVxuXG5mdW5jdGlvbiB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgIHJldHVybiBhLnRvU3RyaW5nKHJhZGl4KTtcbn1cblxuZnVuY3Rpb24gdG9MRUJ1ZmYoYSkge1xuICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheShNYXRoLmZsb29yKChiaXRMZW5ndGgkNihhKSAtIDEpIC8gOCkgKzEpO1xuICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gYnVmZjtcbn1cblxuY29uc3QgemVybyA9IGUoMCk7XG5jb25zdCBvbmUgPSBlKDEpO1xuXG52YXIgX1NjYWxhciA9IC8qI19fUFVSRV9fKi9PYmplY3QuZnJlZXplKHtcbiAgICBfX3Byb3RvX186IG51bGwsXG4gICAgYWJzOiBhYnMkMSxcbiAgICBhZGQ6IGFkZCxcbiAgICBiYW5kOiBiYW5kLFxuICAgIGJpdExlbmd0aDogYml0TGVuZ3RoJDYsXG4gICAgYml0czogYml0cyxcbiAgICBib3I6IGJvcixcbiAgICBieG9yOiBieG9yLFxuICAgIGRpdjogZGl2LFxuICAgIGU6IGUsXG4gICAgZXE6IGVxLFxuICAgIGV4cDogZXhwJDEsXG4gICAgZnJvbUFycmF5OiBmcm9tQXJyYXksXG4gICAgZnJvbVJwckJFOiBmcm9tUnByQkUsXG4gICAgZnJvbVJwckxFOiBmcm9tUnByTEUsXG4gICAgZnJvbVN0cmluZzogZnJvbVN0cmluZyxcbiAgICBnZXE6IGdlcSxcbiAgICBndDogZ3QsXG4gICAgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQ0LFxuICAgIGlzT2RkOiBpc09kZCQ1LFxuICAgIGlzWmVybzogaXNaZXJvJDEsXG4gICAgbGFuZDogbGFuZCxcbiAgICBsZXE6IGxlcSxcbiAgICBsbm90OiBsbm90LFxuICAgIGxvcjogbG9yLFxuICAgIGx0OiBsdCxcbiAgICBtb2Q6IG1vZCxcbiAgICBtdWw6IG11bCxcbiAgICBuYWY6IG5hZixcbiAgICBuZWc6IG5lZyxcbiAgICBuZXE6IG5lcSxcbiAgICBvbmU6IG9uZSxcbiAgICBwb3c6IHBvdyxcbiAgICBzaGlmdExlZnQ6IHNoaWZ0TGVmdCxcbiAgICBzaGlmdFJpZ2h0OiBzaGlmdFJpZ2h0LFxuICAgIHNobDogc2hsLFxuICAgIHNocjogc2hyLFxuICAgIHNxdWFyZTogc3F1YXJlJDIsXG4gICAgc3ViOiBzdWIsXG4gICAgdG9BcnJheTogdG9BcnJheSxcbiAgICB0b0xFQnVmZjogdG9MRUJ1ZmYsXG4gICAgdG9OdW1iZXI6IHRvTnVtYmVyJDEsXG4gICAgdG9ScHJCRTogdG9ScHJCRSxcbiAgICB0b1JwckxFOiB0b1JwckxFLFxuICAgIHRvU3RyaW5nOiB0b1N0cmluZyxcbiAgICB6ZXJvOiB6ZXJvXG59KTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgUG9sRmllbGQge1xuICAgIGNvbnN0cnVjdG9yIChGKSB7XG4gICAgICAgIHRoaXMuRiA9IEY7XG5cbiAgICAgICAgbGV0IHJlbSA9IEYuc3FydF90O1xuICAgICAgICBsZXQgcyA9IEYuc3FydF9zO1xuXG4gICAgICAgIGNvbnN0IGZpdmUgPSB0aGlzLkYuYWRkKHRoaXMuRi5hZGQodGhpcy5GLnR3bywgdGhpcy5GLnR3byksIHRoaXMuRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3coZml2ZSwgcmVtKTtcbiAgICAgICAgdGhpcy53aVtzXSA9IHRoaXMuRi5pbnYodGhpcy53W3NdKTtcblxuICAgICAgICBsZXQgbj1zLTE7XG4gICAgICAgIHdoaWxlIChuPj0wKSB7XG4gICAgICAgICAgICB0aGlzLndbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud1tuKzFdKTtcbiAgICAgICAgICAgIHRoaXMud2lbbl0gPSB0aGlzLkYuc3F1YXJlKHRoaXMud2lbbisxXSk7XG4gICAgICAgICAgICBuLS07XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMucm9vdHMgPSBbXTtcbi8qICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgKi9cbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoMTUpO1xuICAgIH1cblxuICAgIF9zZXRSb290cyhuKSB7XG4gICAgICAgIGlmIChuID4gdGhpcy5GLnNxcnRfcykgbiA9IHRoaXMucztcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucm9vdHNbaV0gPSByb290c2k7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCBtID0gTWF0aC5tYXgoYS5sZW5ndGgsIGIubGVuZ3RoKTtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYuYWRkKGFbaV0gfHwgdGhpcy5GLnplcm8sIGJbaV0gfHwgdGhpcy5GLnplcm8pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnJlZHVjZShyZXMpO1xuICAgIH1cblxuICAgIGRvdWJsZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZChhLGEpO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIGNvbnN0IG0gPSBNYXRoLm1heChhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc1tpXSA9IHRoaXMuRi5zdWIoYVtpXSB8fCB0aGlzLkYuemVybywgYltpXSB8fCB0aGlzLkYuemVybyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVkdWNlKHJlcyk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKHAsIGIpIHtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYuemVybykpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShiLCB0aGlzLkYub25lKSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubXVsKHBbaV0sIGIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cblxuICAgIG11bChhLCBiKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAwKSByZXR1cm4gW107XG4gICAgICAgIGlmIChhLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYiwgYVswXSk7XG4gICAgICAgIGlmIChiLmxlbmd0aCA9PSAxKSByZXR1cm4gdGhpcy5tdWxTY2FsYXIoYSwgYlswXSk7XG5cbiAgICAgICAgaWYgKGIubGVuZ3RoID4gYS5sZW5ndGgpIHtcbiAgICAgICAgICAgIFtiLCBhXSA9IFthLCBiXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoYi5sZW5ndGggPD0gMikgfHwgKGIubGVuZ3RoIDwgbG9nMiQyKGEubGVuZ3RoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm11bE5vcm1hbChhLGIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubXVsRkZUKGEsYik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxOb3JtYWwoYSwgYikge1xuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMgPSB0aGlzLmFkZChyZXMsIHRoaXMuc2NhbGVYKHRoaXMubXVsU2NhbGFyKGEsIGJbaV0pLCBpKSApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbXVsRkZUKGEsYikge1xuICAgICAgICBjb25zdCBsb25nZXN0TiA9IE1hdGgubWF4KGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGJpdHNSZXN1bHQgPSBsb2cyJDIobG9uZ2VzdE4tMSkrMjtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0c1Jlc3VsdCk7XG5cbiAgICAgICAgY29uc3QgbSA9IDEgPDwgYml0c1Jlc3VsdDtcbiAgICAgICAgY29uc3QgZWEgPSB0aGlzLmV4dGVuZChhLG0pO1xuICAgICAgICBjb25zdCBlYiA9IHRoaXMuZXh0ZW5kKGIsbSk7XG5cbiAgICAgICAgY29uc3QgdGEgPSBfX2ZmdCQxKHRoaXMsIGVhLCBiaXRzUmVzdWx0LCAwLCAxKTtcbiAgICAgICAgY29uc3QgdGIgPSBfX2ZmdCQxKHRoaXMsIGViLCBiaXRzUmVzdWx0LCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0cmVzID0gbmV3IEFycmF5KG0pO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHRyZXNbaV0gPSB0aGlzLkYubXVsKHRhW2ldLCB0YltpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIHRyZXMsIGJpdHNSZXN1bHQsIDAsIDEpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWR1Y2UocmVzbik7XG4gICAgfVxuXG5cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLGEpO1xuICAgIH1cblxuICAgIHNjYWxlWChwLCBuKSB7XG4gICAgICAgIGlmIChuPT0wKSB7XG4gICAgICAgICAgICByZXR1cm4gcDtcbiAgICAgICAgfSBlbHNlIGlmIChuPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHogPSBuZXcgQXJyYXkobikuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgICAgICByZXR1cm4gei5jb25jYXQocCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoLW4gPj0gcC5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgICAgIHJldHVybiBwLnNsaWNlKC1uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV2YWwyKHAsIHgpIHtcbiAgICAgICAgbGV0IHYgPSB0aGlzLkYuemVybztcbiAgICAgICAgbGV0IGl4ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHYgPSB0aGlzLkYuYWRkKHYsIHRoaXMuRi5tdWwocFtpXSwgaXgpKTtcbiAgICAgICAgICAgIGl4ID0gdGhpcy5GLm11bChpeCwgeCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocCx4KSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmIChwLmxlbmd0aCA9PSAwKSByZXR1cm4gRi56ZXJvO1xuICAgICAgICBjb25zdCBtID0gdGhpcy5fbmV4dDJQb3dlcihwLmxlbmd0aCk7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG5cbiAgICAgICAgcmV0dXJuIF9ldmFsKGVwLCB4LCAwLCAxLCBtKTtcblxuICAgICAgICBmdW5jdGlvbiBfZXZhbChwLCB4LCBvZmZzZXQsIHN0ZXAsIG4pIHtcbiAgICAgICAgICAgIGlmIChuPT0xKSByZXR1cm4gcFtvZmZzZXRdO1xuICAgICAgICAgICAgY29uc3QgbmV3WCA9IEYuc3F1YXJlKHgpO1xuICAgICAgICAgICAgY29uc3QgcmVzPSBGLmFkZChcbiAgICAgICAgICAgICAgICBfZXZhbChwLCBuZXdYLCBvZmZzZXQsIHN0ZXAgPDwgMSwgbiA+PiAxKSxcbiAgICAgICAgICAgICAgICBGLm11bChcbiAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgX2V2YWwocCwgbmV3WCwgb2Zmc2V0K3N0ZXAgLCBzdGVwIDw8IDEsIG4gPj4gMSkpKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsYWdyYW5nZShwb2ludHMpIHtcbiAgICAgICAgbGV0IHJvb3RzID0gW3RoaXMuRi5vbmVdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByb290cyA9IHRoaXMubXVsKHJvb3RzLCBbdGhpcy5GLm5lZyhwb2ludHNbaV1bMF0pLCB0aGlzLkYub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc3VtID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBtcG9sID0gdGhpcy5ydWZmaW5pKHJvb3RzLCBwb2ludHNbaV1bMF0pO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yID1cbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuaW52KHRoaXMuZXZhbHVhdGUobXBvbCwgcG9pbnRzW2ldWzBdKSksXG4gICAgICAgICAgICAgICAgICAgIHBvaW50c1tpXVsxXSk7XG4gICAgICAgICAgICBtcG9sID0gdGhpcy5tdWxTY2FsYXIobXBvbCwgZmFjdG9yKTtcbiAgICAgICAgICAgIHN1bSA9IHRoaXMuYWRkKHN1bSwgbXBvbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN1bTtcbiAgICB9XG5cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMihwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBjb25zdCBlcCA9IHRoaXMuZXh0ZW5kKHAsIG0pO1xuICAgICAgICBjb25zdCByZXMgPSBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmZnQyKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQyKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IF9fZmZ0Mih0aGlzLCBlcCwgYml0cyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBpZmZ0KHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdCQxKHRoaXMsIGVwLCBiaXRzLCAwLCAxKTtcblxuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5GLm11bChyZXNbKG0taSklbV0sIHR3b2ludm0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc247XG5cbiAgICB9XG5cblxuICAgIGlmZnQyKHApIHtcblxuICAgICAgICBpZiAocC5sZW5ndGggPD0gMSkgcmV0dXJuIHA7XG4gICAgICAgIGNvbnN0IGJpdHMgPSBsb2cyJDIocC5sZW5ndGgtMSkrMTtcbiAgICAgICAgdGhpcy5fc2V0Um9vdHMoYml0cyk7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIGNvbnN0IGVwID0gdGhpcy5leHRlbmQocCwgbSk7XG4gICAgICAgIF9fYml0UmV2ZXJzZShlcCwgYml0cyk7XG4gICAgICAgIGNvbnN0IHJlcyA9ICBfX2ZmdDIodGhpcywgZXAsIGJpdHMpO1xuXG4gICAgICAgIGNvbnN0IHR3b2ludm0gPSB0aGlzLkYuaW52KCB0aGlzLkYubXVsU2NhbGFyKHRoaXMuRi5vbmUsIG0pICk7XG4gICAgICAgIGNvbnN0IHJlc24gPSBuZXcgQXJyYXkobSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxtOyBpKyspIHtcbiAgICAgICAgICAgIHJlc25baV0gPSB0aGlzLkYubXVsKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcblxuICAgIH1cblxuICAgIF9mZnQocGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICAgICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICAgICAgaWYgKG49PTEpIHtcbiAgICAgICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgICAgIGNvbnN0IHAxID0gdGhpcy5fZmZ0KHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgICAgICBjb25zdCBwMiA9IHRoaXMuX2ZmdChwYWxsLCBiaXRzLTEsIG9mZnNldCtzdGVwLCBzdGVwKjIpO1xuXG4gICAgICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgICAgICBsZXQgbT0gdGhpcy5GLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5kaXYyOyBpKyspIHtcbiAgICAgICAgICAgIG91dFtpXSA9IHRoaXMuRi5hZGQocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG91dFtpK25kaXYyXSA9IHRoaXMuRi5zdWIocDFbaV0sIHRoaXMuRi5tdWwobSwgcDJbaV0pKTtcbiAgICAgICAgICAgIG0gPSB0aGlzLkYubXVsKG0sIHRoaXMud1tiaXRzXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cblxuICAgIGV4dGVuZChwLCBlKSB7XG4gICAgICAgIGlmIChlID09IHAubGVuZ3RoKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgeiA9IG5ldyBBcnJheShlLXAubGVuZ3RoKS5maWxsKHRoaXMuRi56ZXJvKTtcblxuICAgICAgICByZXR1cm4gcC5jb25jYXQoeik7XG4gICAgfVxuXG4gICAgcmVkdWNlKHApIHtcbiAgICAgICAgaWYgKHAubGVuZ3RoID09IDApIHJldHVybiBwO1xuICAgICAgICBpZiAoISB0aGlzLkYuZXEocFtwLmxlbmd0aC0xXSwgdGhpcy5GLnplcm8pICkgcmV0dXJuIHA7XG4gICAgICAgIGxldCBpPXAubGVuZ3RoLTE7XG4gICAgICAgIHdoaWxlKCBpPjAgJiYgdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSApIGktLTtcbiAgICAgICAgcmV0dXJuIHAuc2xpY2UoMCwgaSsxKTtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIGNvbnN0IHBhID0gdGhpcy5yZWR1Y2UoYSk7XG4gICAgICAgIGNvbnN0IHBiID0gdGhpcy5yZWR1Y2UoYik7XG5cbiAgICAgICAgaWYgKHBhLmxlbmd0aCAhPSBwYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRi5lcShwYVtpXSwgcGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBydWZmaW5pKHAsIHIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KHAubGVuZ3RoLTEpO1xuICAgICAgICByZXNbcmVzLmxlbmd0aC0xXSA9IHBbcC5sZW5ndGgtMV07XG4gICAgICAgIGZvciAobGV0IGkgPSByZXMubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgcmVzW2ldID0gdGhpcy5GLmFkZCh0aGlzLkYubXVsKHJlc1tpKzFdLCByKSwgcFtpKzFdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIF9uZXh0MlBvd2VyKHYpIHtcbiAgICAgICAgdi0tO1xuICAgICAgICB2IHw9IHYgPj4gMTtcbiAgICAgICAgdiB8PSB2ID4+IDI7XG4gICAgICAgIHYgfD0gdiA+PiA0O1xuICAgICAgICB2IHw9IHYgPj4gODtcbiAgICAgICAgdiB8PSB2ID4+IDE2O1xuICAgICAgICB2Kys7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgYXAgPSB0aGlzLm5vcm1hbGl6ZShwKTtcbiAgICAgICAgbGV0IFMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpPWFwLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5GLmVxKHBbaV0sIHRoaXMuRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGlmIChTIT1cIlwiKSBTICs9IFwiICsgXCI7XG4gICAgICAgICAgICAgICAgUyA9IFMgKyBwW2ldLnRvU3RyaW5nKDEwKTtcbiAgICAgICAgICAgICAgICBpZiAoaT4wKSB7XG4gICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJ4XCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpPjEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFMgPSBTICsgXCJeXCIgK2k7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFM7XG4gICAgfVxuXG4gICAgbm9ybWFsaXplKHApIHtcbiAgICAgICAgY29uc3QgcmVzICA9IG5ldyBBcnJheShwLmxlbmd0aCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXNbaV0gPSB0aGlzLkYubm9ybWFsaXplKHBbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG5cbiAgICBfcmVjaXByb2NhbChwLCBiaXRzKSB7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGJpdHM7XG4gICAgICAgIGlmIChrPT0xKSB7XG4gICAgICAgICAgICByZXR1cm4gWyB0aGlzLkYuaW52KHBbMF0pIF07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbnAgPSB0aGlzLnNjYWxlWChwLCAtay8yKTtcbiAgICAgICAgY29uc3QgcSA9IHRoaXMuX3JlY2lwcm9jYWwobnAsIGJpdHMtMSk7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLnNjYWxlWCh0aGlzLmRvdWJsZShxKSwgMyprLzItMik7XG4gICAgICAgIGNvbnN0IGIgPSB0aGlzLm11bCggdGhpcy5zcXVhcmUocSksIHApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnNjYWxlWCh0aGlzLnN1YihhLGIpLCAgIC0oay0yKSk7XG4gICAgfVxuXG4gICAgLy8gZGl2aWRlcyB4Xm0gLyB2XG4gICAgX2RpdjIobSwgdikge1xuICAgICAgICBjb25zdCBrYml0cyA9IGxvZzIkMih2Lmxlbmd0aC0xKSsxO1xuICAgICAgICBjb25zdCBrID0gMSA8PCBrYml0cztcblxuICAgICAgICBjb25zdCBzY2FsZVYgPSBrIC0gdi5sZW5ndGg7XG5cbiAgICAgICAgLy8gcmVjID0geF4oayAtIDIpIC8gdiogeF5zY2FsZVYgPT5cbiAgICAgICAgLy8gcmVjID0geF4oay0yLXNjYWxlVikvIHZcbiAgICAgICAgLy9cbiAgICAgICAgLy8gcmVzID0geF5tL3YgPSB4XihtICsgKDIqay0yIC0gc2NhbGVWKSAtICgyKmstMiAtIHNjYWxlVikpIC92ID0+XG4gICAgICAgIC8vIHJlcyA9IHJlYyAqIHheKG0gLSAoMiprLTIgLSBzY2FsZVYpKSA9PlxuICAgICAgICAvLyByZXMgPSByZWMgKiB4XihtIC0gMiprICsgMiArIHNjYWxlVilcblxuICAgICAgICBjb25zdCByZWMgPSB0aGlzLl9yZWNpcHJvY2FsKHRoaXMuc2NhbGVYKHYsIHNjYWxlViksIGtiaXRzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5zY2FsZVgocmVjLCBtIC0gMiprICsgMiArIHNjYWxlVik7XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBkaXYoX3UsIF92KSB7XG4gICAgICAgIGlmIChfdS5sZW5ndGggPCBfdi5sZW5ndGgpIHJldHVybiBbXTtcbiAgICAgICAgY29uc3Qga2JpdHMgPSBsb2cyJDIoX3YubGVuZ3RoLTEpKzE7XG4gICAgICAgIGNvbnN0IGsgPSAxIDw8IGtiaXRzO1xuXG4gICAgICAgIGNvbnN0IHUgPSB0aGlzLnNjYWxlWChfdSwgay1fdi5sZW5ndGgpO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy5zY2FsZVgoX3YsIGstX3YubGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBuID0gdi5sZW5ndGgtMTtcbiAgICAgICAgbGV0IG0gPSB1Lmxlbmd0aC0xO1xuXG4gICAgICAgIGNvbnN0IHMgPSB0aGlzLl9yZWNpcHJvY2FsKHYsIGtiaXRzKTtcbiAgICAgICAgbGV0IHQ7XG4gICAgICAgIGlmIChtPjIqbikge1xuICAgICAgICAgICAgdCA9IHRoaXMuc3ViKHRoaXMuc2NhbGVYKFt0aGlzLkYub25lXSwgMipuKSwgdGhpcy5tdWwocywgdikpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHEgPSBbXTtcbiAgICAgICAgbGV0IHJlbSA9IHU7XG4gICAgICAgIGxldCB1cywgdXQ7XG4gICAgICAgIGxldCBmaW5pc2ggPSBmYWxzZTtcblxuICAgICAgICB3aGlsZSAoIWZpbmlzaCkge1xuICAgICAgICAgICAgdXMgPSB0aGlzLm11bChyZW0sIHMpO1xuICAgICAgICAgICAgcSA9IHRoaXMuYWRkKHEsIHRoaXMuc2NhbGVYKHVzLCAtMipuKSk7XG5cbiAgICAgICAgICAgIGlmICggbSA+IDIqbiApIHtcbiAgICAgICAgICAgICAgICB1dCA9IHRoaXMubXVsKHJlbSwgdCk7XG4gICAgICAgICAgICAgICAgcmVtID0gdGhpcy5zY2FsZVgodXQsIC0yKm4pO1xuICAgICAgICAgICAgICAgIG0gPSByZW0ubGVuZ3RoLTE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZpbmlzaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcTtcbiAgICB9XG5cblxuICAgIC8vIHJldHVybnMgdGhlIGl0aCBudGgtcm9vdCBvZiBvbmVcbiAgICBvbmVSb290KG4sIGkpIHtcbiAgICAgICAgbGV0IG5iaXRzID0gbG9nMiQyKG4tMSkrMTtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRi5vbmU7XG4gICAgICAgIGxldCByID0gaTtcblxuICAgICAgICBpZihpPj1uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHaXZlbiAnaScgc2hvdWxkIGJlIGxvd2VyIHRoYW4gJ24nXCIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKDE8PG5iaXRzICE9PSBuKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludGVybmFsIGVycmxyOiAke259IHNob3VsZCBlcXVhbCAkezE8PG5iaXRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgaWYgKHIgJiAxID09IDEpIHtcbiAgICAgICAgICAgICAgICByZXMgPSB0aGlzLkYubXVsKHJlcywgdGhpcy53W25iaXRzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByID0gciA+PiAxO1xuICAgICAgICAgICAgbmJpdHMgLS07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBjb21wdXRlVmFuaXNoaW5nUG9saW5vbWlhbChiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG0gPSAxIDw8IGJpdHM7XG4gICAgICAgIHJldHVybiB0aGlzLkYuc3ViKHRoaXMuRi5wb3codCwgbSksIHRoaXMuRi5vbmUpO1xuICAgIH1cblxuICAgIGV2YWx1YXRlTGFncmFuZ2VQb2x5bm9taWFscyhiaXRzLCB0KSB7XG4gICAgICAgIGNvbnN0IG09IDEgPDwgYml0cztcbiAgICAgICAgY29uc3QgdG0gPSB0aGlzLkYucG93KHQsIG0pO1xuICAgICAgICBjb25zdCB1PSBuZXcgQXJyYXkobSkuZmlsbCh0aGlzLkYuemVybyk7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBvbWVnYSA9IHRoaXMud1tiaXRzXTtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHRtLCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5GLmVxKHRoaXMucm9vdHNbYml0c11bMF0sdCkpIHsgLy8gaS5lLiwgdCBlcXVhbHMgb21lZ2FeaVxuICAgICAgICAgICAgICAgICAgICB1W2ldID0gdGhpcy5GLm9uZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgeiA9IHRoaXMuRi5zdWIodG0sIHRoaXMuRi5vbmUpO1xuICAgICAgICAvLyAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYucG93KHRoaXMuRi50d29pbnYsIG0pKTtcbiAgICAgICAgbGV0IGwgPSB0aGlzLkYubXVsKHosICB0aGlzLkYuaW52KHRoaXMuRi5lKG0pKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB1W2ldID0gdGhpcy5GLm11bChsLCB0aGlzLkYuaW52KHRoaXMuRi5zdWIodCx0aGlzLnJvb3RzW2JpdHNdW2ldKSkpO1xuICAgICAgICAgICAgbCA9IHRoaXMuRi5tdWwobCwgb21lZ2EpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHU7XG4gICAgfVxuXG4gICAgbG9nMihWKSB7XG4gICAgICAgIHJldHVybiBsb2cyJDIoVik7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2cyJDIoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLCBvZmZzZXQsIHN0ZXApIHtcblxuICAgIGNvbnN0IG4gPSAxIDw8IGJpdHM7XG4gICAgaWYgKG49PTEpIHtcbiAgICAgICAgcmV0dXJuIFsgcGFsbFtvZmZzZXRdIF07XG4gICAgfSBlbHNlIGlmIChuPT0yKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBQRi5GLmFkZChwYWxsW29mZnNldF0sIHBhbGxbb2Zmc2V0ICsgc3RlcF0pLFxuICAgICAgICAgICAgUEYuRi5zdWIocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKV07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdCQxKFBGLCBwYWxsLCBiaXRzLTEsIG9mZnNldCwgc3RlcCoyKTtcbiAgICBjb25zdCBwMiA9IF9fZmZ0JDEoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5GLmFkZChwMVtpXSwgUEYuRi5tdWwoUEYucm9vdHNbYml0c11baV0sIHAyW2ldKSk7XG4gICAgICAgIG91dFtpK25kaXYyXSA9IFBGLkYuc3ViKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3V0O1xufVxuXG5cbmZ1bmN0aW9uIF9fZmZ0MihQRiwgcGFsbCwgYml0cykge1xuXG4gICAgY29uc3QgbiA9IDEgPDwgYml0cztcbiAgICBpZiAobj09MSkge1xuICAgICAgICByZXR1cm4gWyBwYWxsWzBdIF07XG4gICAgfVxuXG4gICAgY29uc3QgbmRpdjIgPSBuID4+IDE7XG4gICAgY29uc3QgcDEgPSBfX2ZmdDIoUEYsIHBhbGwuc2xpY2UoMCwgbmRpdjIpLCBiaXRzLTEpO1xuICAgIGNvbnN0IHAyID0gX19mZnQyKFBGLCBwYWxsLnNsaWNlKG5kaXYyKSwgYml0cy0xKTtcblxuICAgIGNvbnN0IG91dCA9IG5ldyBBcnJheShuKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxuZGl2MjsgaSsrKSB7XG4gICAgICAgIG91dFtpXSA9IFBGLkYuYWRkKHAxW2ldLCBQRi5GLm11bChQRi5yb290c1tiaXRzXVtpXSwgcDJbaV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRi5zdWIocDFbaV0sIFBGLkYubXVsKFBGLnJvb3RzW2JpdHNdW2ldLCBwMltpXSkpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59XG5cbmNvbnN0IF9yZXZUYWJsZSQxID0gW107XG5mb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICBfcmV2VGFibGUkMVtpXSA9IF9yZXZTbG93JDEoaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93JDEoaWR4LCBiaXRzKSB7XG4gICAgbGV0IHJlcyA9MDtcbiAgICBsZXQgYSA9IGlkeDtcbiAgICBmb3IgKGxldCBpPTA7IGk8Yml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJjEpO1xuICAgICAgICBhID4+PTE7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHJldihpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBfcmV2VGFibGUkMVtpZHggPj4+IDI0XSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiAxNikgJiAweEZGXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVsoaWR4ID4+PiA4KSAmIDB4RkZdIDw8IDE2KSB8XG4gICAgICAgIChfcmV2VGFibGUkMVtpZHggJiAweEZGXSA8PCAyNClcbiAgICApID4+PiAoMzItYml0cyk7XG59XG5cbmZ1bmN0aW9uIF9fYml0UmV2ZXJzZShwLCBiaXRzKSB7XG4gICAgZm9yIChsZXQgaz0wOyBrPHAubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgY29uc3QgciA9IHJldihrLCBiaXRzKTtcbiAgICAgICAgaWYgKHI+aykge1xuICAgICAgICAgICAgY29uc3QgdG1wPSBwW2tdO1xuICAgICAgICAgICAgcFtrXSA9IHBbcl07XG4gICAgICAgICAgICBwW3JdID0gdG1wO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMGtpbXMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuXG5mdW5jdGlvbiBtdWxTY2FsYXIoRiwgYmFzZSwgZSkge1xuICAgIGxldCByZXM7XG5cbiAgICBpZiAoaXNaZXJvJDEoZSkpIHJldHVybiBGLnplcm87XG5cbiAgICBjb25zdCBuID0gbmFmKGUpO1xuXG4gICAgaWYgKG5bbi5sZW5ndGgtMV0gPT0gMSkge1xuICAgICAgICByZXMgPSBiYXNlO1xuICAgIH0gZWxzZSBpZiAobltuLmxlbmd0aC0xXSA9PSAtMSkge1xuICAgICAgICByZXMgPSBGLm5lZyhiYXNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZsYXVkIE5BRlwiKTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuZG91YmxlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0gPT0gMSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBiYXNlKTtcbiAgICAgICAgfSBlbHNlIGlmIChuW2ldID09IC0xKSB7XG4gICAgICAgICAgICByZXMgPSBGLnN1YihyZXMsIGJhc2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuXG4vKlxuZXhwb3J0cy5tdWxTY2FsYXIgPSAoRiwgYmFzZSwgZSkgPT57XG4gICAgbGV0IHJlcyA9IEYuemVybztcbiAgICBsZXQgcmVtID0gYmlnSW50KGUpO1xuICAgIGxldCBleHAgPSBiYXNlO1xuXG4gICAgd2hpbGUgKCEgcmVtLmVxKGJpZ0ludC56ZXJvKSkge1xuICAgICAgICBpZiAocmVtLmFuZChiaWdJbnQub25lKS5lcShiaWdJbnQub25lKSkge1xuICAgICAgICAgICAgcmVzID0gRi5hZGQocmVzLCBleHApO1xuICAgICAgICB9XG4gICAgICAgIGV4cCA9IEYuZG91YmxlKGV4cCk7XG4gICAgICAgIHJlbSA9IHJlbS5zaGlmdFJpZ2h0KDEpO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG59O1xuKi9cblxuXG5mdW5jdGlvbiBleHAoRiwgYmFzZSwgZSkge1xuXG4gICAgaWYgKGlzWmVybyQxKGUpKSByZXR1cm4gRi5vbmU7XG5cbiAgICBjb25zdCBuID0gYml0cyhlKTtcblxuICAgIGlmIChuLmxlbmd0aD09MCkgcmV0dXJuIEYub25lO1xuXG4gICAgbGV0IHJlcyA9IGJhc2U7XG5cbiAgICBmb3IgKGxldCBpPW4ubGVuZ3RoLTI7IGk+PTA7IGktLSkge1xuXG4gICAgICAgIHJlcyA9IEYuc3F1YXJlKHJlcyk7XG5cbiAgICAgICAgaWYgKG5baV0pIHtcbiAgICAgICAgICAgIHJlcyA9IEYubXVsKHJlcywgYmFzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcblxuZnVuY3Rpb24gYnVpbGRTcXJ0IChGKSB7XG4gICAgaWYgKChGLm0gJSAyKSA9PSAxKSB7XG4gICAgICAgIGlmIChlcShtb2QoRi5wLCA0KSwgMSApKSB7XG4gICAgICAgICAgICBpZiAoZXEobW9kKEYucCwgOCksIDEgKSkge1xuICAgICAgICAgICAgICAgIGlmIChlcShtb2QoRi5wLCAxNiksIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBhbGc3X211bGxlcihGKTtcbiAgICAgICAgICAgICAgICAgICAgYWxnNV90b25lbGxpU2hhbmtzKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgMTYpLCA5ICkpIHtcbiAgICAgICAgICAgICAgICAgICAgYWxnNF9rb25nKEYpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXEobW9kKEYucCwgOCksIDUgKSkge1xuICAgICAgICAgICAgICAgIGFsZzNfYXRraW4oRik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZpZWxkIHdpdGhvdCBzcXJ0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGVxKG1vZChGLnAsIDQpLCAzICkpIHtcbiAgICAgICAgICAgIGFsZzJfc2hhbmtzKEYpO1xuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcG0ybW9kNCA9IG1vZChwb3coRi5wLCBGLm0vMiksIDQpO1xuICAgICAgICBpZiAocG0ybW9kNCA9PSAxKSB7XG4gICAgICAgICAgICBhbGcxMF9hZGooRik7XG4gICAgICAgIH0gZWxzZSBpZiAocG0ybW9kNCA9PSAzKSB7XG4gICAgICAgICAgICBhbGc5X2FkaihGKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFsZzhfY29tcGxleChGKTtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5cbmZ1bmN0aW9uIGFsZzVfdG9uZWxsaVNoYW5rcyhGKSB7XG4gICAgRi5zcXJ0X3EgPSBwb3coRi5wLCBGLm0pO1xuXG4gICAgRi5zcXJ0X3MgPSAwO1xuICAgIEYuc3FydF90ID0gc3ViKEYuc3FydF9xLCAxKTtcblxuICAgIHdoaWxlICghaXNPZGQkNShGLnNxcnRfdCkpIHtcbiAgICAgICAgRi5zcXJ0X3MgPSBGLnNxcnRfcyArIDE7XG4gICAgICAgIEYuc3FydF90ID0gZGl2KEYuc3FydF90LCAyKTtcbiAgICB9XG5cbiAgICBsZXQgYzAgPSBGLm9uZTtcblxuICAgIHdoaWxlIChGLmVxKGMwLCBGLm9uZSkpIHtcbiAgICAgICAgY29uc3QgYyA9IEYucmFuZG9tKCk7XG4gICAgICAgIEYuc3FydF96ID0gRi5wb3coYywgRi5zcXJ0X3QpO1xuICAgICAgICBjMCA9IEYucG93KEYuc3FydF96LCAyICoqIChGLnNxcnRfcy0xKSApO1xuICAgIH1cblxuICAgIEYuc3FydF90bTFkMiA9IGRpdihzdWIoRi5zcXJ0X3QsIDEpLDIpO1xuXG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oYSkge1xuICAgICAgICBjb25zdCBGPXRoaXM7XG4gICAgICAgIGlmIChGLmlzWmVybyhhKSkgcmV0dXJuIEYuemVybztcbiAgICAgICAgbGV0IHcgPSBGLnBvdyhhLCBGLnNxcnRfdG0xZDIpO1xuICAgICAgICBjb25zdCBhMCA9IEYucG93KCBGLm11bChGLnNxdWFyZSh3KSwgYSksIDIgKiogKEYuc3FydF9zLTEpICk7XG4gICAgICAgIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCB2ID0gRi5zcXJ0X3M7XG4gICAgICAgIGxldCB4ID0gRi5tdWwoYSwgdyk7XG4gICAgICAgIGxldCBiID0gRi5tdWwoeCwgdyk7XG4gICAgICAgIGxldCB6ID0gRi5zcXJ0X3o7XG4gICAgICAgIHdoaWxlICghRi5lcShiLCBGLm9uZSkpIHtcbiAgICAgICAgICAgIGxldCBiMmsgPSBGLnNxdWFyZShiKTtcbiAgICAgICAgICAgIGxldCBrPTE7XG4gICAgICAgICAgICB3aGlsZSAoIUYuZXEoYjJrLCBGLm9uZSkpIHtcbiAgICAgICAgICAgICAgICBiMmsgPSBGLnNxdWFyZShiMmspO1xuICAgICAgICAgICAgICAgIGsrKztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdyA9IHo7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8di1rLTE7IGkrKykge1xuICAgICAgICAgICAgICAgIHcgPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHogPSBGLnNxdWFyZSh3KTtcbiAgICAgICAgICAgIGIgPSBGLm11bChiLCB6KTtcbiAgICAgICAgICAgIHggPSBGLm11bCh4LCB3KTtcbiAgICAgICAgICAgIHYgPSBrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzRfa29uZyhGKSB7XG4gICAgRi5zcXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNxcnQgYWxnIDQgbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGFsZzNfYXRraW4oRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAzIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcyX3NoYW5rcyhGKSB7XG5cbiAgICBGLnNxcnRfcSA9IHBvdyhGLnAsIEYubSk7XG4gICAgRi5zcXJ0X2UxID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDMpICwgNCk7XG5cbiAgICBGLnNxcnQgPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICAvLyBUZXN0IHRoYXQgaGF2ZSBzb2x1dGlvblxuICAgICAgICBjb25zdCBhMSA9IHRoaXMucG93KGEsIHRoaXMuc3FydF9lMSk7XG5cbiAgICAgICAgY29uc3QgYTAgPSB0aGlzLm11bCh0aGlzLnNxdWFyZShhMSksIGEpO1xuXG4gICAgICAgIGlmICggdGhpcy5lcShhMCwgdGhpcy5uZWdvbmUpICkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgeCA9IHRoaXMubXVsKGExLCBhKTtcblxuICAgICAgICByZXR1cm4gRi5nZXEoeCwgRi56ZXJvKSA/IHggOiBGLm5lZyh4KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBhbGcxMF9hZGooRikge1xuICAgIEYuc3FydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTcXJ0IGFsZyAxMCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYWxnOV9hZGooRikge1xuICAgIEYuc3FydF9xID0gcG93KEYucCwgRi5tLzIpO1xuICAgIEYuc3FydF9lMzQgPSBkaXYoIHN1YihGLnNxcnRfcSwgMykgLCA0KTtcbiAgICBGLnNxcnRfZTEyID0gZGl2KCBzdWIoRi5zcXJ0X3EsIDEpICwgMik7XG5cbiAgICBGLmZyb2Jlbml1cyA9IGZ1bmN0aW9uKG4sIHgpIHtcbiAgICAgICAgaWYgKChuJTIpID09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBGLmNvbmp1Z2F0ZSh4KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIEYuc3FydCA9IGZ1bmN0aW9uKGEpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXM7XG4gICAgICAgIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgIGNvbnN0IGFsZmEgPSBGLm11bChGLnNxdWFyZShhMSksIGEpO1xuICAgICAgICBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICBsZXQgeDtcbiAgICAgICAgaWYgKEYuZXEoYWxmYSwgRi5uZWdvbmUpKSB7XG4gICAgICAgICAgICB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYiA9IEYucG93KEYuYWRkKEYub25lLCBhbGZhKSwgRi5zcXJ0X2UxMik7XG4gICAgICAgICAgICB4ID0gRi5tdWwoYiwgeDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBGLmdlcSh4LCBGLnplcm8pID8geCA6IEYubmVnKHgpO1xuICAgIH07XG59XG5cblxuZnVuY3Rpb24gYWxnOF9jb21wbGV4KEYpIHtcbiAgICBGLnNxcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU3FydCBhbGcgOCBub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gcXVhcnRlclJvdW5kKHN0LCBhLCBiLCBjLCBkKSB7XG5cbiAgICBzdFthXSA9IChzdFthXSArIHN0W2JdKSA+Pj4gMDtcbiAgICBzdFtkXSA9IChzdFtkXSBeIHN0W2FdKSA+Pj4gMDtcbiAgICBzdFtkXSA9ICgoc3RbZF0gPDwgMTYpIHwgKChzdFtkXT4+PjE2KSAmIDB4RkZGRikpID4+PiAwO1xuXG4gICAgc3RbY10gPSAoc3RbY10gKyBzdFtkXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoc3RbYl0gXiBzdFtjXSkgPj4+IDA7XG4gICAgc3RbYl0gPSAoKHN0W2JdIDw8IDEyKSB8ICgoc3RbYl0+Pj4yMCkgJiAweEZGRikpID4+PiAwO1xuXG4gICAgc3RbYV0gPSAoc3RbYV0gKyBzdFtiXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoc3RbZF0gXiBzdFthXSkgPj4+IDA7XG4gICAgc3RbZF0gPSAoKHN0W2RdIDw8IDgpIHwgKChzdFtkXT4+PjI0KSAmIDB4RkYpKSA+Pj4gMDtcblxuICAgIHN0W2NdID0gKHN0W2NdICsgc3RbZF0pID4+PiAwO1xuICAgIHN0W2JdID0gKHN0W2JdIF4gc3RbY10pID4+PiAwO1xuICAgIHN0W2JdID0gKChzdFtiXSA8PCA3KSB8ICgoc3RbYl0+Pj4yNSkgJiAweDdGKSkgPj4+IDA7XG59XG5cbmZ1bmN0aW9uIGRvdWJsZVJvdW5kKHN0KSB7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAwLCA0LCA4LDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDEsIDUsIDksMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMiwgNiwxMCwxNCk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAzLCA3LDExLDE1KTtcblxuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMCwgNSwxMCwxNSk7XG4gICAgcXVhcnRlclJvdW5kKHN0LCAxLCA2LDExLDEyKTtcbiAgICBxdWFydGVyUm91bmQoc3QsIDIsIDcsIDgsMTMpO1xuICAgIHF1YXJ0ZXJSb3VuZChzdCwgMywgNCwgOSwxNCk7XG59XG5cbmNsYXNzIENoYUNoYSB7XG5cbiAgICBjb25zdHJ1Y3RvcihzZWVkKSB7XG4gICAgICAgIHNlZWQgPSBzZWVkIHx8IFswLDAsMCwwLDAsMCwwLDBdO1xuICAgICAgICB0aGlzLnN0YXRlID0gW1xuICAgICAgICAgICAgMHg2MTcwNzg2NSxcbiAgICAgICAgICAgIDB4MzMyMDY0NkUsXG4gICAgICAgICAgICAweDc5NjIyRDMyLFxuICAgICAgICAgICAgMHg2QjIwNjU3NCxcbiAgICAgICAgICAgIHNlZWRbMF0sXG4gICAgICAgICAgICBzZWVkWzFdLFxuICAgICAgICAgICAgc2VlZFsyXSxcbiAgICAgICAgICAgIHNlZWRbM10sXG4gICAgICAgICAgICBzZWVkWzRdLFxuICAgICAgICAgICAgc2VlZFs1XSxcbiAgICAgICAgICAgIHNlZWRbNl0sXG4gICAgICAgICAgICBzZWVkWzddLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMFxuICAgICAgICBdO1xuICAgICAgICB0aGlzLmlkeCA9IDE2O1xuICAgICAgICB0aGlzLmJ1ZmYgPSBuZXcgQXJyYXkoMTYpO1xuICAgIH1cblxuICAgIG5leHRVMzIoKSB7XG4gICAgICAgIGlmICh0aGlzLmlkeCA9PSAxNikgdGhpcy51cGRhdGUoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVmZlt0aGlzLmlkeCsrXTtcbiAgICB9XG5cbiAgICBuZXh0VTY0KCkge1xuICAgICAgICByZXR1cm4gYWRkKG11bCh0aGlzLm5leHRVMzIoKSwgMHgxMDAwMDAwMDApLCB0aGlzLm5leHRVMzIoKSk7XG4gICAgfVxuXG4gICAgbmV4dEJvb2woKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5uZXh0VTMyKCkgJiAxKSA9PSAxO1xuICAgIH1cblxuICAgIHVwZGF0ZSgpIHtcbiAgICAgICAgLy8gQ29weSB0aGUgc3RhdGVcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9IHRoaXMuc3RhdGVbaV07XG5cbiAgICAgICAgLy8gQXBwbHkgdGhlIHJvdW5kc1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTA7IGkrKykgZG91YmxlUm91bmQodGhpcy5idWZmKTtcblxuICAgICAgICAvLyBBZGQgdG8gdGhlIGluaXRpYWxcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDE2OyBpKyspIHRoaXMuYnVmZltpXSA9ICh0aGlzLmJ1ZmZbaV0gKyB0aGlzLnN0YXRlW2ldKSA+Pj4gMDtcblxuICAgICAgICB0aGlzLmlkeCA9IDA7XG5cbiAgICAgICAgdGhpcy5zdGF0ZVsxMl0gPSAodGhpcy5zdGF0ZVsxMl0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTJdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxM10gPSAodGhpcy5zdGF0ZVsxM10gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTNdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNF0gPSAodGhpcy5zdGF0ZVsxNF0gKyAxKSA+Pj4gMDtcbiAgICAgICAgaWYgKHRoaXMuc3RhdGVbMTRdICE9IDApIHJldHVybjtcbiAgICAgICAgdGhpcy5zdGF0ZVsxNV0gPSAodGhpcy5zdGF0ZVsxNV0gKyAxKSA+Pj4gMDtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGdldFJhbmRvbUJ5dGVzKG4pIHtcbiAgICBsZXQgYXJyYXkgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICB7IC8vIEJyb3dzZXJcbiAgICAgICAgaWYgKHR5cGVvZiBnbG9iYWxUaGlzLmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIikgeyAvLyBTdXBwb3J0ZWRcbiAgICAgICAgICAgIGdsb2JhbFRoaXMuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnJheSk7XG4gICAgICAgIH0gZWxzZSB7IC8vIGZhbGxiYWNrXG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyYXlbaV0gPSAoTWF0aC5yYW5kb20oKSo0Mjk0OTY3Mjk2KT4+PjA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xufVxuXG5mdW5jdGlvbiBnZXRSYW5kb21TZWVkKCkge1xuICAgIGNvbnN0IGFyciA9IGdldFJhbmRvbUJ5dGVzKDMyKTtcbiAgICBjb25zdCBhcnJWID0gbmV3IFVpbnQzMkFycmF5KGFyci5idWZmZXIpO1xuICAgIGNvbnN0IHNlZWQgPSBbXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8ODsgaSsrKSB7XG4gICAgICAgIHNlZWQucHVzaChhcnJWW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlZWQ7XG59XG5cbmxldCB0aHJlYWRSbmcgPSBudWxsO1xuXG5mdW5jdGlvbiBnZXRUaHJlYWRSbmcoKSB7XG4gICAgaWYgKHRocmVhZFJuZykgcmV0dXJuIHRocmVhZFJuZztcbiAgICB0aHJlYWRSbmcgPSBuZXcgQ2hhQ2hhKGdldFJhbmRvbVNlZWQoKSk7XG4gICAgcmV0dXJuIHRocmVhZFJuZztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLypcbiAgICBUaGlzIGxpYnJhcnkgZG9lcyBvcGVyYXRpb25zIG9uIHBvbHlub21pYWxzIHdpdGggY29lZmZpY2llbnRzIGluIGEgZmllbGQgRi5cblxuICAgIEEgcG9seW5vbWlhbCBQKHgpID0gcDAgKyBwMSAqIHggKyBwMiAqIHheMiArIC4uLiArIHBuICogeF5uICBpcyByZXByZXNlbnRlZFxuICAgIGJ5IHRoZSBhcnJheSBbIHAwLCBwMSwgcDIsIC4uLiAsIHBuIF0uXG4gKi9cblxuY2xhc3MgRkZUIHtcbiAgICBjb25zdHJ1Y3RvciAoRywgRiwgb3BNdWxHRikge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLkcgPSBHO1xuICAgICAgICB0aGlzLm9wTXVsR0YgPSBvcE11bEdGO1xuXG4gICAgICAgIGxldCByZW0gPSBGLnNxcnRfdCB8fCBGLnQ7XG4gICAgICAgIGxldCBzID0gRi5zcXJ0X3MgfHwgRi5zO1xuXG4gICAgICAgIGxldCBucXIgPSBGLm9uZTtcbiAgICAgICAgd2hpbGUgKEYuZXEoRi5wb3cobnFyLCBGLmhhbGYpLCBGLm9uZSkpIG5xciA9IEYuYWRkKG5xciwgRi5vbmUpO1xuXG4gICAgICAgIHRoaXMudyA9IG5ldyBBcnJheShzKzEpO1xuICAgICAgICB0aGlzLndpID0gbmV3IEFycmF5KHMrMSk7XG4gICAgICAgIHRoaXMud1tzXSA9IHRoaXMuRi5wb3cobnFyLCByZW0pO1xuICAgICAgICB0aGlzLndpW3NdID0gdGhpcy5GLmludih0aGlzLndbc10pO1xuXG4gICAgICAgIGxldCBuPXMtMTtcbiAgICAgICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgICAgIHRoaXMud1tuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53W24rMV0pO1xuICAgICAgICAgICAgdGhpcy53aVtuXSA9IHRoaXMuRi5zcXVhcmUodGhpcy53aVtuKzFdKTtcbiAgICAgICAgICAgIG4tLTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5yb290cyA9IFtdO1xuICAgICAgICAvKlxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8MTY7IGkrKykge1xuICAgICAgICAgICAgbGV0IHIgPSB0aGlzLkYub25lO1xuICAgICAgICAgICAgbiA9IDEgPDwgaTtcbiAgICAgICAgICAgIGNvbnN0IHJvb3RzaSA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuOyBqKyspIHtcbiAgICAgICAgICAgICAgICByb290c2lbal0gPSByO1xuICAgICAgICAgICAgICAgIHIgPSB0aGlzLkYubXVsKHIsIHRoaXMud1tpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucm9vdHMucHVzaChyb290c2kpO1xuICAgICAgICB9XG4gICAgICAgICovXG4gICAgICAgIHRoaXMuX3NldFJvb3RzKE1hdGgubWluKHMsIDE1KSk7XG4gICAgfVxuXG4gICAgX3NldFJvb3RzKG4pIHtcbiAgICAgICAgZm9yIChsZXQgaT1uOyAoaT49MCkgJiYgKCF0aGlzLnJvb3RzW2ldKTsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgciA9IHRoaXMuRi5vbmU7XG4gICAgICAgICAgICBjb25zdCBucm9vdHMgPSAxIDw8IGk7XG4gICAgICAgICAgICBjb25zdCByb290c2kgPSBuZXcgQXJyYXkobnJvb3RzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxucm9vdHM7IGorKykge1xuICAgICAgICAgICAgICAgIHJvb3RzaVtqXSA9IHI7XG4gICAgICAgICAgICAgICAgciA9IHRoaXMuRi5tdWwociwgdGhpcy53W2ldKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yb290c1tpXSA9IHJvb3RzaTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZmdChwKSB7XG4gICAgICAgIGlmIChwLmxlbmd0aCA8PSAxKSByZXR1cm4gcDtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIkMShwLmxlbmd0aC0xKSsxO1xuICAgICAgICB0aGlzLl9zZXRSb290cyhiaXRzKTtcblxuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gX19mZnQodGhpcywgcCwgYml0cywgMCwgMSk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWZmdChwKSB7XG5cbiAgICAgICAgaWYgKHAubGVuZ3RoIDw9IDEpIHJldHVybiBwO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMiQxKHAubGVuZ3RoLTEpKzE7XG4gICAgICAgIHRoaXMuX3NldFJvb3RzKGJpdHMpO1xuICAgICAgICBjb25zdCBtID0gMSA8PCBiaXRzO1xuICAgICAgICBpZiAocC5sZW5ndGggIT0gbSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2l6ZSBtdXN0IGJlIG11bHRpcGxlIG9mIDJcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmVzID0gIF9fZmZ0KHRoaXMsIHAsIGJpdHMsIDAsIDEpO1xuICAgICAgICBjb25zdCB0d29pbnZtID0gdGhpcy5GLmludiggdGhpcy5GLm11bFNjYWxhcih0aGlzLkYub25lLCBtKSApO1xuICAgICAgICBjb25zdCByZXNuID0gbmV3IEFycmF5KG0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8bTsgaSsrKSB7XG4gICAgICAgICAgICByZXNuW2ldID0gdGhpcy5vcE11bEdGKHJlc1sobS1pKSVtXSwgdHdvaW52bSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzbjtcbiAgICB9XG5cblxufVxuXG5mdW5jdGlvbiBsb2cyJDEoIFYgKVxue1xuICAgIHJldHVybiggKCAoIFYgJiAweEZGRkYwMDAwICkgIT09IDAgPyAoIFYgJj0gMHhGRkZGMDAwMCwgMTYgKSA6IDAgKSB8ICggKCBWICYgMHhGRjAwRkYwMCApICE9PSAwID8gKCBWICY9IDB4RkYwMEZGMDAsIDggKSA6IDAgKSB8ICggKCBWICYgMHhGMEYwRjBGMCApICE9PSAwID8gKCBWICY9IDB4RjBGMEYwRjAsIDQgKSA6IDAgKSB8ICggKCBWICYgMHhDQ0NDQ0NDQyApICE9PSAwID8gKCBWICY9IDB4Q0NDQ0NDQ0MsIDIgKSA6IDAgKSB8ICggKCBWICYgMHhBQUFBQUFBQSApICE9PSAwICkgKTtcbn1cblxuXG5mdW5jdGlvbiBfX2ZmdChQRiwgcGFsbCwgYml0cywgb2Zmc2V0LCBzdGVwKSB7XG5cbiAgICBjb25zdCBuID0gMSA8PCBiaXRzO1xuICAgIGlmIChuPT0xKSB7XG4gICAgICAgIHJldHVybiBbIHBhbGxbb2Zmc2V0XSBdO1xuICAgIH0gZWxzZSBpZiAobj09Mikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgUEYuRy5hZGQocGFsbFtvZmZzZXRdLCBwYWxsW29mZnNldCArIHN0ZXBdKSxcbiAgICAgICAgICAgIFBGLkcuc3ViKHBhbGxbb2Zmc2V0XSwgcGFsbFtvZmZzZXQgKyBzdGVwXSldO1xuICAgIH1cblxuICAgIGNvbnN0IG5kaXYyID0gbiA+PiAxO1xuICAgIGNvbnN0IHAxID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0LCBzdGVwKjIpO1xuICAgIGNvbnN0IHAyID0gX19mZnQoUEYsIHBhbGwsIGJpdHMtMSwgb2Zmc2V0K3N0ZXAsIHN0ZXAqMik7XG5cbiAgICBjb25zdCBvdXQgPSBuZXcgQXJyYXkobik7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8bmRpdjI7IGkrKykge1xuICAgICAgICBvdXRbaV0gPSBQRi5HLmFkZChwMVtpXSwgUEYub3BNdWxHRihwMltpXSwgUEYucm9vdHNbYml0c11baV0pKTtcbiAgICAgICAgb3V0W2krbmRpdjJdID0gUEYuRy5zdWIocDFbaV0sIFBGLm9wTXVsR0YocDJbaV0sIFBGLnJvb3RzW2JpdHNdW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dDtcbn1cblxuLyogZ2xvYmFsIEJpZ0ludCAqL1xuXG5jbGFzcyBacUZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihwKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYxXCI7XG4gICAgICAgIHRoaXMub25lID0gQmlnSW50KDEpO1xuICAgICAgICB0aGlzLnplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgIHRoaXMucCA9IEJpZ0ludChwKTtcbiAgICAgICAgdGhpcy5tID0gMTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLnAtdGhpcy5vbmU7XG4gICAgICAgIHRoaXMudHdvID0gQmlnSW50KDIpO1xuICAgICAgICB0aGlzLmhhbGYgPSB0aGlzLnAgPj4gdGhpcy5vbmU7XG4gICAgICAgIHRoaXMuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDYodGhpcy5wKTtcbiAgICAgICAgdGhpcy5tYXNrID0gKHRoaXMub25lIDw8IEJpZ0ludCh0aGlzLmJpdExlbmd0aCkpIC0gdGhpcy5vbmU7XG5cbiAgICAgICAgdGhpcy5uNjQgPSBNYXRoLmZsb29yKCh0aGlzLmJpdExlbmd0aCAtIDEpIC8gNjQpKzE7XG4gICAgICAgIHRoaXMubjMyID0gdGhpcy5uNjQqMjtcbiAgICAgICAgdGhpcy5uOCA9IHRoaXMubjY0Kjg7XG4gICAgICAgIHRoaXMuUiA9IHRoaXMuZSh0aGlzLm9uZSA8PCBCaWdJbnQodGhpcy5uNjQqNjQpKTtcbiAgICAgICAgdGhpcy5SaSA9IHRoaXMuaW52KHRoaXMuUik7XG5cbiAgICAgICAgY29uc3QgZSA9IHRoaXMubmVnb25lID4+IHRoaXMub25lO1xuICAgICAgICB0aGlzLm5xciA9IHRoaXMudHdvO1xuICAgICAgICBsZXQgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgd2hpbGUgKCF0aGlzLmVxKHIsIHRoaXMubmVnb25lKSkge1xuICAgICAgICAgICAgdGhpcy5ucXIgPSB0aGlzLm5xciArIHRoaXMub25lO1xuICAgICAgICAgICAgciA9IHRoaXMucG93KHRoaXMubnFyLCBlKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgdGhpcy50ID0gdGhpcy5uZWdvbmU7XG5cbiAgICAgICAgd2hpbGUgKCh0aGlzLnQgJiB0aGlzLm9uZSkgPT0gdGhpcy56ZXJvKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdGhpcy50ID0gdGhpcy50ID4+IHRoaXMub25lO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ucXJfdG9fdCA9IHRoaXMucG93KHRoaXMubnFyLCB0aGlzLnQpO1xuXG4gICAgICAgIGJ1aWxkU3FydCh0aGlzKTtcblxuICAgICAgICB0aGlzLkZGVCA9IG5ldyBGRlQodGhpcywgdGhpcywgdGhpcy5tdWwuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgdGhpcy5mZnQgPSB0aGlzLkZGVC5mZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMuaWZmdCA9IHRoaXMuRkZULmlmZnQuYmluZCh0aGlzLkZGVCk7XG4gICAgICAgIHRoaXMudyA9IHRoaXMuRkZULnc7XG4gICAgICAgIHRoaXMud2kgPSB0aGlzLkZGVC53aTsgXG4gICAgXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLnNxdWFyZSh0aGlzLm5xcik7XG4gICAgICAgIHRoaXMuayA9IHRoaXMuZXhwKHRoaXMubnFyLCAyKip0aGlzLnMpO1xuICAgIH1cblxuICAgIGUoYSxiKSB7XG4gICAgICAgIGxldCByZXM7XG4gICAgICAgIGlmICghYikge1xuICAgICAgICAgICAgcmVzID0gQmlnSW50KGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGI9PTE2KSB7XG4gICAgICAgICAgICByZXMgPSBCaWdJbnQoXCIweFwiK2EpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXMgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbnJlcyA9IC1yZXM7XG4gICAgICAgICAgICBpZiAobnJlcyA+PSB0aGlzLnApIG5yZXMgPSBucmVzICUgdGhpcy5wO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucCAtIG5yZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKHJlcz49IHRoaXMucCkgPyByZXMldGhpcy5wIDogcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICBjb25zdCByZXMgPSBhICsgYjtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIHN1YihhLCBiKSB7XG4gICAgICAgIHJldHVybiAoYSA+PSBiKSA/IGEtYiA6IHRoaXMucC1iK2E7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIGEgPyB0aGlzLnAtYSA6IGE7XG4gICAgfVxuXG4gICAgbXVsKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIChhKmIpJXRoaXMucDtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgcykge1xuICAgICAgICByZXR1cm4gKGJhc2UgKiB0aGlzLmUocykpICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiAoYSphKSAlIHRoaXMucDtcbiAgICB9XG5cbiAgICBlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhPT1iO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiBhIT1iO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhIDwgYmI7XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPiBiYjtcbiAgICB9XG5cbiAgICBsZXEoYSwgYikge1xuICAgICAgICBjb25zdCBhYSA9IChhID4gdGhpcy5oYWxmKSA/IGEgLSB0aGlzLnAgOiBhO1xuICAgICAgICBjb25zdCBiYiA9IChiID4gdGhpcy5oYWxmKSA/IGIgLSB0aGlzLnAgOiBiO1xuICAgICAgICByZXR1cm4gYWEgPD0gYmI7XG4gICAgfVxuXG4gICAgZ2VxKGEsIGIpIHtcbiAgICAgICAgY29uc3QgYWEgPSAoYSA+IHRoaXMuaGFsZikgPyBhIC0gdGhpcy5wIDogYTtcbiAgICAgICAgY29uc3QgYmIgPSAoYiA+IHRoaXMuaGFsZikgPyBiIC0gdGhpcy5wIDogYjtcbiAgICAgICAgcmV0dXJuIGFhID49IGJiO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgaWRpdihhLCBiKSB7XG4gICAgICAgIGlmICghYikgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcbiAgICAgICAgcmV0dXJuIGEgLyBiO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIGlmICghYSkgdGhyb3cgbmV3IEVycm9yKFwiRGl2aXNpb24gYnkgemVyb1wiKTtcblxuICAgICAgICBsZXQgdCA9IHRoaXMuemVybztcbiAgICAgICAgbGV0IHIgPSB0aGlzLnA7XG4gICAgICAgIGxldCBuZXd0ID0gdGhpcy5vbmU7XG4gICAgICAgIGxldCBuZXdyID0gYSAlIHRoaXMucDtcbiAgICAgICAgd2hpbGUgKG5ld3IpIHtcbiAgICAgICAgICAgIGxldCBxID0gci9uZXdyO1xuICAgICAgICAgICAgW3QsIG5ld3RdID0gW25ld3QsIHQtcSpuZXd0XTtcbiAgICAgICAgICAgIFtyLCBuZXdyXSA9IFtuZXdyLCByLXEqbmV3cl07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHQ8dGhpcy56ZXJvKSB0ICs9IHRoaXMucDtcbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfVxuXG4gICAgbW9kKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEgJSBiO1xuICAgIH1cblxuICAgIHBvdyhiLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYiwgZSk7XG4gICAgfVxuXG4gICAgZXhwKGIsIGUpIHtcbiAgICAgICAgcmV0dXJuIGV4cCh0aGlzLCBiLCBlKTtcbiAgICB9XG5cbiAgICBiYW5kKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSAmIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJvcihhLCBiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9ICAoKGEgfCBiKSAmIHRoaXMubWFzayk7XG4gICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICB9XG5cbiAgICBieG9yKGEsIGIpIHtcbiAgICAgICAgY29uc3QgcmVzID0gICgoYSBeIGIpICYgdGhpcy5tYXNrKTtcbiAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgIH1cblxuICAgIGJub3QoYSkge1xuICAgICAgICBjb25zdCByZXMgPSBhIF4gdGhpcy5tYXNrO1xuICAgICAgICByZXR1cm4gcmVzID49IHRoaXMucCA/IHJlcy10aGlzLnAgOiByZXM7XG4gICAgfVxuXG4gICAgc2hsKGEsIGIpIHtcbiAgICAgICAgaWYgKE51bWJlcihiKSA8IHRoaXMuYml0TGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBiKSAmIHRoaXMubWFzaztcbiAgICAgICAgICAgIHJldHVybiByZXMgPj0gdGhpcy5wID8gcmVzLXRoaXMucCA6IHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYSA+PiBuYjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNocihhLCBiKSB7XG4gICAgICAgIGlmIChOdW1iZXIoYikgPCB0aGlzLmJpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGEgPj4gYjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5iID0gdGhpcy5wIC0gYjtcbiAgICAgICAgICAgIGlmIChOdW1iZXIobmIpIDwgdGhpcy5iaXRMZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSAoYSA8PCBuYikgJiB0aGlzLm1hc2s7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA+PSB0aGlzLnAgPyByZXMtdGhpcy5wIDogcmVzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGxhbmQoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgJiYgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsb3IoYSwgYikge1xuICAgICAgICByZXR1cm4gKGEgfHwgYikgPyB0aGlzLm9uZSA6IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBsbm90KGEpIHtcbiAgICAgICAgcmV0dXJuIChhKSA/IHRoaXMuemVybyA6IHRoaXMub25lO1xuICAgIH1cblxuICAgIHNxcnRfb2xkKG4pIHtcblxuICAgICAgICBpZiAobiA9PSB0aGlzLnplcm8pIHJldHVybiB0aGlzLnplcm87XG5cbiAgICAgICAgLy8gVGVzdCB0aGF0IGhhdmUgc29sdXRpb25cbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy5wb3cobiwgdGhpcy5uZWdvbmUgPj4gdGhpcy5vbmUpO1xuICAgICAgICBpZiAoIHJlcyAhPSB0aGlzLm9uZSApIHJldHVybiBudWxsO1xuXG4gICAgICAgIGxldCBtID0gdGhpcy5zO1xuICAgICAgICBsZXQgYyA9IHRoaXMubnFyX3RvX3Q7XG4gICAgICAgIGxldCB0ID0gdGhpcy5wb3cobiwgdGhpcy50KTtcbiAgICAgICAgbGV0IHIgPSB0aGlzLnBvdyhuLCB0aGlzLmFkZCh0aGlzLnQsIHRoaXMub25lKSA+PiB0aGlzLm9uZSApO1xuXG4gICAgICAgIHdoaWxlICggdCAhPSB0aGlzLm9uZSApIHtcbiAgICAgICAgICAgIGxldCBzcSA9IHRoaXMuc3F1YXJlKHQpO1xuICAgICAgICAgICAgbGV0IGkgPSAxO1xuICAgICAgICAgICAgd2hpbGUgKHNxICE9IHRoaXMub25lICkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICBzcSA9IHRoaXMuc3F1YXJlKHNxKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gYiA9IGMgXiBtLWktMVxuICAgICAgICAgICAgbGV0IGIgPSBjO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPCBtLWktMTsgaiArKykgYiA9IHRoaXMuc3F1YXJlKGIpO1xuXG4gICAgICAgICAgICBtID0gaTtcbiAgICAgICAgICAgIGMgPSB0aGlzLnNxdWFyZShiKTtcbiAgICAgICAgICAgIHQgPSB0aGlzLm11bCh0LCBjKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLm11bChyLCBiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyID4gKHRoaXMucCA+PiB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHIgPSB0aGlzLm5lZyhyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZShhLCBiKSB7XG4gICAgICAgIGEgPSBCaWdJbnQoYSxiKTtcbiAgICAgICAgaWYgKGEgPCAwKSB7XG4gICAgICAgICAgICBsZXQgbmEgPSAtYTtcbiAgICAgICAgICAgIGlmIChuYSA+PSB0aGlzLnApIG5hID0gbmEgJSB0aGlzLnA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wIC0gbmE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKGE+PSB0aGlzLnApID8gYSV0aGlzLnAgOiBhO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICBjb25zdCBuQnl0ZXMgPSAodGhpcy5iaXRMZW5ndGgqMiAvIDgpO1xuICAgICAgICBsZXQgcmVzID10aGlzLnplcm87XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrKykge1xuICAgICAgICAgICAgcmVzID0gKHJlcyA8PCBCaWdJbnQoOCkpICsgQmlnSW50KGdldFJhbmRvbUJ5dGVzKDEpWzBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzICUgdGhpcy5wO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIGJhc2UpIHtcbiAgICAgICAgYmFzZSA9IGJhc2UgfHwgMTA7XG4gICAgICAgIGxldCB2cztcbiAgICAgICAgaWYgKChhID4gdGhpcy5oYWxmKSYmKGJhc2UgPT0gMTApKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy5wLWE7XG4gICAgICAgICAgICB2cyA9IFwiLVwiK3YudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2cyA9IGEudG9TdHJpbmcoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZzO1xuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIHJldHVybiBhID09IHRoaXMuemVybztcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBsZXQgdjtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdj10aGlzLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgKz0gcm5nLm5leHRVNjQoKSA8PCBCaWdJbnQoNjQgKmkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdiAmPSB0aGlzLm1hc2s7XG4gICAgICAgIH0gd2hpbGUgKHYgPj0gdGhpcy5wKTtcbiAgICAgICAgdiA9ICh2ICogdGhpcy5SaSkgJSB0aGlzLnA7ICAgLy8gQ29udmVydCBmcm9tIG1vbnRnb21lcnlcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgfVxuXG4gICAgZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmZmdChhKTtcbiAgICB9XG5cbiAgICBpZmZ0KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRkZULmlmZnQoYSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyBhIGJ1ZmZlciB3aXRoIExpdHRsZSBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckxFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdG9ScHJMRShidWZmLCBvLCBlLCB0aGlzLm42NCo4KTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIGEgYnVmZmVyIHdpdGggQmlnIEVuZGlhbiBSZXByZXNlbnRhdGlvblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0b1JwckJFKGJ1ZmYsIG8sIGUsIHRoaXMubjY0KjgpO1xuICAgIH1cblxuICAgIC8vIFJldHVybnMgYSBidWZmZXIgd2l0aCBCaWcgRW5kaWFuIE1vbnRnb21lcnkgUmVwcmVzZW50YXRpb25cbiAgICB0b1JwckJFTShidWZmLCBvLCBlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvUnByQkUoYnVmZiwgbywgdGhpcy5tdWwodGhpcy5SLCBlKSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICByZXR1cm4gdGhpcy50b1JwckxFKGJ1ZmYsIG8sIHRoaXMubXVsKHRoaXMuUiwgZSkpO1xuICAgIH1cblxuXG4gICAgLy8gUGFzZXMgYSBidWZmZXIgd2l0aCBMaXR0bGUgRW5kaWFuIFJlcHJlc2VudGF0aW9uXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgcmV0dXJuIGZyb21ScHJMRShidWZmLCBvLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICAvLyBQYXNlcyBhIGJ1ZmZlciB3aXRoIEJpZyBFbmRpYW4gUmVwcmVzZW50YXRpb25cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gZnJvbVJwckJFKGJ1ZmYsIG8sIHRoaXMubjgpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByTEUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWwodGhpcy5mcm9tUnByQkUoYnVmZiwgbyksIHRoaXMuUmkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIEYyRmllbGQge1xuICAgIGNvbnN0cnVjdG9yKEYsIG5vblJlc2lkdWUpIHtcbiAgICAgICAgdGhpcy50eXBlPVwiRjJcIjtcbiAgICAgICAgdGhpcy5GID0gRjtcbiAgICAgICAgdGhpcy56ZXJvID0gW3RoaXMuRi56ZXJvLCB0aGlzLkYuemVyb107XG4gICAgICAgIHRoaXMub25lID0gW3RoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSoyO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcblxuICAgICAgICBidWlsZFNxcnQodGhpcyk7XG4gICAgfVxuXG4gICAgX211bEJ5Tm9uUmVzaWR1ZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYubXVsKHRoaXMubm9uUmVzaWR1ZSwgYSk7XG4gICAgfVxuXG4gICAgY29weShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmNvcHkoYVswXSksIHRoaXMuRi5jb3B5KGFbMV0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSxhKTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVsxXSwgYlsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdWIodGhpcy56ZXJvLCBhKTtcbiAgICB9XG5cbiAgICBjb25qdWdhdGUoYSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgYVswXSxcbiAgICAgICAgICAgIHRoaXMuRi5uZWcoYVsxXSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBtdWwoYSwgYikge1xuICAgICAgICBjb25zdCBhQSA9IHRoaXMuRi5tdWwoYVswXSAsIGJbMF0pO1xuICAgICAgICBjb25zdCBiQiA9IHRoaXMuRi5tdWwoYVsxXSAsIGJbMV0pO1xuXG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLkYuYWRkKCBhQSAsIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShiQikpLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMV0pLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJbMF0sIGJbMV0pKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpXTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7XG4gICAgICAgIGNvbnN0IHQxID0gdGhpcy5GLnNxdWFyZShhWzFdKTtcbiAgICAgICAgY29uc3QgdDIgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDEpKTtcbiAgICAgICAgY29uc3QgdDMgPSB0aGlzLkYuaW52KHQyKTtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgdDMpLFxuICAgICAgICAgICAgdGhpcy5GLm5lZyh0aGlzLkYubXVsKCBhWzFdLCB0MykpIF07XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsKGEsIHRoaXMuaW52KGIpKTtcbiAgICB9XG5cbiAgICBzcXVhcmUoYSkge1xuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSAsIGFbMV0pO1xuXG4gICAgICAgIC8qXG4gICAgICAgIFtcbiAgICAgICAgICAgIChhICsgYikgKiAoYSArIG5vbl9yZXNpZHVlICogYikgLSBhYiAtIG5vbl9yZXNpZHVlICogYWIsXG4gICAgICAgICAgICBhYiArIGFiXG4gICAgICAgIF07XG4gICAgICAgICovXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgdGhpcy5GLm11bChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSAsXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhWzBdICxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShhWzFdKSkpLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGFiLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoYWIpKSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFiLCBhYilcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5GLmlzWmVybyhhWzBdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMV0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSk7XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZ3QoYSwgYikge1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMF0sIGJbMF0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHRoaXMuRi5ndChiWzBdLCBhWzBdKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGFbMV0sIGJbMV0pKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGdlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmd0KGEsIGIpIHx8IHRoaXMuZXEoYSwgYik7XG4gICAgfVxuXG4gICAgbHQoYSwgYikge1xuICAgICAgICByZXR1cm4gIXRoaXMuZ2VxKGEsYik7XG4gICAgfVxuXG4gICAgbGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmd0KGEsYik7XG4gICAgfVxuXG4gICAgbmVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxKGEsYik7XG4gICAgfVxuXG4gICAgcmFuZG9tKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMF0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByTEVNKGJ1ZmYsIG8sIGVbMF0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgIH1cblxuXG4gICAgdG9ScHJCRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgZnJvbVJwckJFTShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMV07XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICB9XG5cbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5jbGFzcyBGM0ZpZWxkIHtcbiAgICBjb25zdHJ1Y3RvcihGLCBub25SZXNpZHVlKSB7XG4gICAgICAgIHRoaXMudHlwZT1cIkYzXCI7XG4gICAgICAgIHRoaXMuRiA9IEY7XG4gICAgICAgIHRoaXMuemVybyA9IFt0aGlzLkYuemVybywgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5vbmUgPSBbdGhpcy5GLm9uZSwgdGhpcy5GLnplcm8sIHRoaXMuRi56ZXJvXTtcbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMubm9uUmVzaWR1ZSA9IG5vblJlc2lkdWU7XG4gICAgICAgIHRoaXMubSA9IEYubSozO1xuICAgICAgICB0aGlzLnAgPSBGLnA7XG4gICAgICAgIHRoaXMubjY0ID0gRi5uNjQqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLm42NCoyO1xuICAgICAgICB0aGlzLm44ID0gdGhpcy5uNjQqODtcbiAgICB9XG5cbiAgICBfbXVsQnlOb25SZXNpZHVlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5tdWwodGhpcy5ub25SZXNpZHVlLCBhKTtcbiAgICB9XG5cbiAgICBjb3B5KGEpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYuY29weShhWzBdKSwgdGhpcy5GLmNvcHkoYVsxXSksIHRoaXMuRi5jb3B5KGFbMl0pXTtcbiAgICB9XG5cbiAgICBhZGQoYSwgYikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBiWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYlsxXSksXG4gICAgICAgICAgICB0aGlzLkYuYWRkKGFbMl0sIGJbMl0pXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZG91YmxlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKGEsYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5zdWIoYVswXSwgYlswXSksXG4gICAgICAgICAgICB0aGlzLkYuc3ViKGFbMV0sIGJbMV0pLFxuICAgICAgICAgICAgdGhpcy5GLnN1YihhWzJdLCBiWzJdKVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1Yih0aGlzLnplcm8sIGEpO1xuICAgIH1cblxuICAgIG11bChhLCBiKSB7XG5cbiAgICAgICAgY29uc3QgYUEgPSB0aGlzLkYubXVsKGFbMF0gLCBiWzBdKTtcbiAgICAgICAgY29uc3QgYkIgPSB0aGlzLkYubXVsKGFbMV0gLCBiWzFdKTtcbiAgICAgICAgY29uc3QgY0MgPSB0aGlzLkYubXVsKGFbMl0gLCBiWzJdKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICBhQSxcbiAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYVsxXSwgYVsyXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzFdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGJCLCBjQykpKSksICAgIC8vIGFBICsgbm9uX3Jlc2lkdWUqKChiK2MpKihCK0MpLWJCLWNDKSxcblxuICAgICAgICAgICAgdGhpcy5GLmFkZChcbiAgICAgICAgICAgICAgICB0aGlzLkYuc3ViKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYubXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChhWzBdLCBhWzFdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYlswXSwgYlsxXSkpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFBLCBiQikpLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZSggY0MpKSwgICAvLyAoYStiKSooQStCKS1hQS1iQitub25fcmVzaWR1ZSpjQ1xuXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHRoaXMuRi5zdWIoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKGFbMF0sIGFbMl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5GLmFkZChiWzBdLCBiWzJdKSksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoYUEsIGNDKSksXG4gICAgICAgICAgICAgICAgYkIpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAoYStjKSooQStDKS1hQStiQi1jQylcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICBjb25zdCB0MCA9IHRoaXMuRi5zcXVhcmUoYVswXSk7ICAgICAgICAgICAgIC8vIHQwID0gYV4yIDtcbiAgICAgICAgY29uc3QgdDEgPSB0aGlzLkYuc3F1YXJlKGFbMV0pOyAgICAgICAgICAgICAvLyB0MSA9IGJeMiA7XG4gICAgICAgIGNvbnN0IHQyID0gdGhpcy5GLnNxdWFyZShhWzJdKTsgICAgICAgICAgICAgLy8gdDIgPSBjXjI7XG4gICAgICAgIGNvbnN0IHQzID0gdGhpcy5GLm11bChhWzBdLGFbMV0pOyAgICAgICAgICAgLy8gdDMgPSBhYlxuICAgICAgICBjb25zdCB0NCA9IHRoaXMuRi5tdWwoYVswXSxhWzJdKTsgICAgICAgICAgIC8vIHQ0ID0gYWNcbiAgICAgICAgY29uc3QgdDUgPSB0aGlzLkYubXVsKGFbMV0sYVsyXSk7ICAgICAgICAgICAvLyB0NSA9IGJjO1xuICAgICAgICAvLyBjMCA9IHQwIC0gbm9uX3Jlc2lkdWUgKiB0NTtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuc3ViKHQwLCB0aGlzLl9tdWxCeU5vblJlc2lkdWUodDUpKTtcbiAgICAgICAgLy8gYzEgPSBub25fcmVzaWR1ZSAqIHQyIC0gdDM7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLnN1Yih0aGlzLl9tdWxCeU5vblJlc2lkdWUodDIpLCB0Myk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLnN1Yih0MSwgdDQpOyAgICAgICAgICAgICAgLy8gYzIgPSB0MS10NFxuXG4gICAgICAgIC8vIHQ2ID0gKGEgKiBjMCArIG5vbl9yZXNpZHVlICogKGMgKiBjMSArIGIgKiBjMikpLmludigpO1xuICAgICAgICBjb25zdCB0NiA9XG4gICAgICAgICAgICB0aGlzLkYuaW52KFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVswXSwgYzApLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9tdWxCeU5vblJlc2lkdWUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsyXSwgYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuRi5tdWwoYVsxXSwgYzIpKSkpKTtcblxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgdGhpcy5GLm11bCh0NiwgYzApLCAgICAgICAgIC8vIHQ2KmMwXG4gICAgICAgICAgICB0aGlzLkYubXVsKHQ2LCBjMSksICAgICAgICAgLy8gdDYqYzFcbiAgICAgICAgICAgIHRoaXMuRi5tdWwodDYsIGMyKV07ICAgICAgICAvLyB0NipjMlxuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm11bChhLCB0aGlzLmludihiKSk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgY29uc3QgczAgPSB0aGlzLkYuc3F1YXJlKGFbMF0pOyAgICAgICAgICAgICAgICAgICAvLyBzMCA9IGFeMlxuICAgICAgICBjb25zdCBhYiA9IHRoaXMuRi5tdWwoYVswXSwgYVsxXSk7ICAgICAgICAgICAgICAgIC8vIGFiID0gYSpiXG4gICAgICAgIGNvbnN0IHMxID0gdGhpcy5GLmFkZChhYiwgYWIpOyAgICAgICAgICAgICAgICAgICAgLy8gczEgPSAyYWI7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnNxdWFyZShcbiAgICAgICAgICAgIHRoaXMuRi5hZGQodGhpcy5GLnN1YihhWzBdLGFbMV0pLCBhWzJdKSk7ICAgICAvLyBzMiA9IChhIC0gYiArIGMpXjI7XG4gICAgICAgIGNvbnN0IGJjID0gdGhpcy5GLm11bChhWzFdLGFbMl0pOyAgICAgICAgICAgICAgICAgLy8gYmMgPSBiKmNcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYuYWRkKGJjLCBiYyk7ICAgICAgICAgICAgICAgICAgICAvLyBzMyA9IDIqYmNcbiAgICAgICAgY29uc3QgczQgPSB0aGlzLkYuc3F1YXJlKGFbMl0pOyAgICAgICAgICAgICAgICAgICAvLyBzNCA9IGNeMlxuXG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIHRoaXMuRi5hZGQoXG4gICAgICAgICAgICAgICAgczAsXG4gICAgICAgICAgICAgICAgdGhpcy5fbXVsQnlOb25SZXNpZHVlKHMzKSksICAgICAgICAgICAvLyBzMCArIG5vbl9yZXNpZHVlICogczMsXG4gICAgICAgICAgICB0aGlzLkYuYWRkKFxuICAgICAgICAgICAgICAgIHMxLFxuICAgICAgICAgICAgICAgIHRoaXMuX211bEJ5Tm9uUmVzaWR1ZShzNCkpLCAgICAgICAgICAgLy8gczEgKyBub25fcmVzaWR1ZSAqIHM0LFxuICAgICAgICAgICAgdGhpcy5GLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLkYuYWRkKCB0aGlzLkYuYWRkKHMxLCBzMikgLCBzMyApLFxuICAgICAgICAgICAgICAgIHRoaXMuRi5hZGQoczAsIHM0KSldOyAgICAgICAgICAgICAgICAgICAgICAvLyBzMSArIHMyICsgczMgLSBzMCAtIHM0XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5pc1plcm8oYVswXSkgJiYgdGhpcy5GLmlzWmVybyhhWzFdKSAmJiB0aGlzLkYuaXNaZXJvKGFbMl0pO1xuICAgIH1cblxuICAgIGVxKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuRi5lcShhWzBdLCBiWzBdKSAmJiB0aGlzLkYuZXEoYVsxXSwgYlsxXSkgJiYgdGhpcy5GLmVxKGFbMl0sIGJbMl0pO1xuICAgIH1cblxuICAgIGFmZmluZShhKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5GLmFmZmluZShhWzBdKSwgdGhpcy5GLmFmZmluZShhWzFdKSwgdGhpcy5GLmFmZmluZShhWzJdKV07XG4gICAgfVxuXG4gICAgbXVsU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBwb3coYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gZXhwKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGV4cChiYXNlLCBlKSB7XG4gICAgICAgIHJldHVybiBleHAodGhpcywgYmFzZSwgZSk7XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSkge1xuICAgICAgICByZXR1cm4gYFsgJHt0aGlzLkYudG9TdHJpbmcoYVswXSl9ICwgJHt0aGlzLkYudG9TdHJpbmcoYVsxXSl9LCAke3RoaXMuRi50b1N0cmluZyhhWzJdKX0gXWA7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBndChhLCBiKSB7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVswXSwgYlswXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMF0sIGFbMF0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsxXSwgYlsxXSkpIHJldHVybiB0cnVlO1xuICAgICAgICBpZiAodGhpcy5GLmd0KGJbMV0sIGFbMV0pKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLkYuZ3QoYVsyXSwgYlsyXSkpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG5cbiAgICBnZXEoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5ndChhLCBiKSB8fCB0aGlzLmVxKGEsIGIpO1xuICAgIH1cblxuICAgIGx0KGEsIGIpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmdlcShhLGIpO1xuICAgIH1cblxuICAgIGxlcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ndChhLGIpO1xuICAgIH1cblxuICAgIG5lcShhLCBiKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5lcShhLGIpO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLkYucmFuZG9tKCksIHRoaXMuRi5yYW5kb20oKSwgdGhpcy5GLnJhbmRvbSgpXTtcbiAgICB9XG5cblxuICAgIHRvUnByTEUoYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvLCBlWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJMRShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbywgZVsyXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8rdGhpcy5GLm44LCBlWzFdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYnVmZiwgbywgZSkge1xuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgZVswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgZVsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyLCBlWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIGUpIHtcbiAgICAgICAgdGhpcy5GLnRvUnByQkVNKGJ1ZmYsIG8sIGVbMl0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgsIGVbMV0pO1xuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbyt0aGlzLkYubjgqMiwgZVswXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgYzAgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyt0aGlzLm44KTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5uOCoyKTtcbiAgICAgICAgcmV0dXJuIFtjMCwgYzEsIGMyXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQkUoYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMubjgpO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByQkUoYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMyID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5mcm9tUnByQkVNKGJ1ZmYsIG8rdGhpcy5uOCk7XG4gICAgICAgIGNvbnN0IGMwID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyt0aGlzLm44KjIpO1xuICAgICAgICByZXR1cm4gW2MwLCBjMSwgYzJdO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgcmV0dXJuIGE7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE4IDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cblxuZnVuY3Rpb24gaXNHcmVhdGVzdChGLCBhKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgICAgZm9yIChsZXQgaT1hLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICghRi5GLmlzWmVybyhhW2ldKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0dyZWF0ZXN0KEYuRiwgYVtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbmEgPSBGLm5lZyhhKTtcbiAgICAgICAgcmV0dXJuIGd0KGEsIG5hKTtcbiAgICB9XG59XG5cblxuY2xhc3MgRUMge1xuXG4gICAgY29uc3RydWN0b3IoRiwgZykge1xuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLmcgPSBnO1xuICAgICAgICBpZiAodGhpcy5nLmxlbmd0aCA9PSAyKSB0aGlzLmdbMl0gPSB0aGlzLkYub25lO1xuICAgICAgICB0aGlzLnplcm8gPSBbdGhpcy5GLnplcm8sIHRoaXMuRi5vbmUsIHRoaXMuRi56ZXJvXTtcbiAgICB9XG5cbiAgICBhZGQocDEsIHAyKSB7XG5cbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5lcShwMSwgdGhpcy56ZXJvKSkgcmV0dXJuIHAyO1xuICAgICAgICBpZiAodGhpcy5lcShwMiwgdGhpcy56ZXJvKSkgcmV0dXJuIHAxO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gRi5zcXVhcmUoIHAxWzJdICk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBGLnNxdWFyZSggcDJbMl0gKTtcblxuICAgICAgICBjb25zdCBVMSA9IEYubXVsKCBwMVswXSAsIFoyWjIgKTsgICAgIC8vIFUxID0gWDEgICogWjJaMlxuICAgICAgICBjb25zdCBVMiA9IEYubXVsKCBwMlswXSAsIFoxWjEgKTsgICAgIC8vIFUyID0gWDIgICogWjFaMVxuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7ICAvLyBTMSA9IFkxICogWjIgKiBaMloyXG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpOyAgLy8gUzIgPSBZMiAqIFoxICogWjFaMVxuXG4gICAgICAgIGlmIChGLmVxKFUxLFUyKSAmJiBGLmVxKFMxLFMyKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG91YmxlKHAxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEggPSBGLnN1YiggVTIgLCBVMSApOyAgICAgICAgICAgICAgICAgICAgLy8gSCA9IFUyLVUxXG5cbiAgICAgICAgY29uc3QgUzJfbWludXNfUzEgPSBGLnN1YiggUzIgLCBTMSApO1xuXG4gICAgICAgIGNvbnN0IEkgPSBGLnNxdWFyZSggRi5hZGQoSCxIKSApOyAgICAgICAgIC8vIEkgPSAoMiAqIEgpXjJcbiAgICAgICAgY29uc3QgSiA9IEYubXVsKCBIICwgSSApOyAgICAgICAgICAgICAgICAgICAgICAvLyBKID0gSCAqIElcblxuICAgICAgICBjb25zdCByID0gRi5hZGQoIFMyX21pbnVzX1MxICwgUzJfbWludXNfUzEgKTsgIC8vIHIgPSAyICogKFMyLVMxKVxuICAgICAgICBjb25zdCBWID0gRi5tdWwoIFUxICwgSSApOyAgICAgICAgICAgICAgICAgICAgIC8vIFYgPSBVMSAqIElcblxuICAgICAgICByZXNbMF0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5zdWIoIEYuc3F1YXJlKHIpICwgSiApLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBWICwgViApKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFgzID0gcl4yIC0gSiAtIDIgKiBWXG5cbiAgICAgICAgY29uc3QgUzFfSiA9IEYubXVsKCBTMSAsIEogKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoIHIgLCBGLnN1YihWLHJlc1swXSkpLFxuICAgICAgICAgICAgICAgIEYuYWRkKCBTMV9KLFMxX0ogKSk7ICAgICAgICAgICAgICAgICAgIC8vIFkzID0gciAqIChWLVgzKS0yIFMxIEpcblxuICAgICAgICByZXNbMl0gPVxuICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgSCxcbiAgICAgICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICAgICAgRi5zcXVhcmUoIEYuYWRkKHAxWzJdLHAyWzJdKSApLFxuICAgICAgICAgICAgICAgICAgICBGLmFkZCggWjFaMSAsIFoyWjIgKSkpOyAgICAgICAgICAgIC8vIFozID0gKChaMStaMileMi1aMVoxLVoyWjIpICogSFxuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgbmVnKHApIHtcbiAgICAgICAgcmV0dXJuIFtwWzBdLCB0aGlzLkYubmVnKHBbMV0pLCBwWzJdXTtcbiAgICB9XG5cbiAgICBzdWIoYSwgYikge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGQoYSwgdGhpcy5uZWcoYikpO1xuICAgIH1cblxuICAgIGRvdWJsZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG5cbiAgICAgICAgY29uc3QgcmVzID0gbmV3IEFycmF5KDMpO1xuXG4gICAgICAgIGlmICh0aGlzLmVxKHAsIHRoaXMuemVybykpIHJldHVybiBwO1xuXG4gICAgICAgIGNvbnN0IEEgPSBGLnNxdWFyZSggcFswXSApOyAgICAgICAgICAgICAgICAgICAgLy8gQSA9IFgxXjJcbiAgICAgICAgY29uc3QgQiA9IEYuc3F1YXJlKCBwWzFdICk7ICAgICAgICAgICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICBjb25zdCBDID0gRi5zcXVhcmUoIEIgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEMgPSBCXjJcblxuICAgICAgICBsZXQgRCA9XG4gICAgICAgICAgICBGLnN1YihcbiAgICAgICAgICAgICAgICBGLnNxdWFyZSggRi5hZGQocFswXSAsIEIgKSksXG4gICAgICAgICAgICAgICAgRi5hZGQoIEEgLCBDKSk7XG4gICAgICAgIEQgPSBGLmFkZChELEQpOyAgICAgICAgICAgICAgICAgICAgLy8gRCA9IDIgKiAoKFgxICsgQileMiAtIEEgLSBDKVxuXG4gICAgICAgIGNvbnN0IEUgPSBGLmFkZCggRi5hZGQoQSxBKSwgQSk7ICAgICAgICAgIC8vIEUgPSAzICogQVxuICAgICAgICBjb25zdCBGRiA9Ri5zcXVhcmUoIEUgKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIEYgPSBFXjJcblxuICAgICAgICByZXNbMF0gPSBGLnN1YiggRkYgLCBGLmFkZChELEQpICk7ICAgICAgICAgLy8gWDMgPSBGIC0gMiBEXG5cbiAgICAgICAgbGV0IGVpZ2h0QyA9IEYuYWRkKCBDICwgQyApO1xuICAgICAgICBlaWdodEMgPSBGLmFkZCggZWlnaHRDICwgZWlnaHRDICk7XG4gICAgICAgIGVpZ2h0QyA9IEYuYWRkKCBlaWdodEMgLCBlaWdodEMgKTtcblxuICAgICAgICByZXNbMV0gPVxuICAgICAgICAgICAgRi5zdWIoXG4gICAgICAgICAgICAgICAgRi5tdWwoXG4gICAgICAgICAgICAgICAgICAgIEUsXG4gICAgICAgICAgICAgICAgICAgIEYuc3ViKCBELCByZXNbMF0gKSksXG4gICAgICAgICAgICAgICAgZWlnaHRDKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBZMyA9IEUgKiAoRCAtIFgzKSAtIDggKiBDXG5cbiAgICAgICAgY29uc3QgWTFaMSA9IEYubXVsKCBwWzFdICwgcFsyXSApO1xuICAgICAgICByZXNbMl0gPSBGLmFkZCggWTFaMSAsIFkxWjEgKTsgICAgICAgICAgICAgICAgIC8vIFozID0gMiAqIFkxICogWjFcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHRpbWVzU2NhbGFyKGJhc2UsIGUpIHtcbiAgICAgICAgcmV0dXJuIG11bFNjYWxhcih0aGlzLCBiYXNlLCBlKTtcbiAgICB9XG5cbiAgICBtdWxTY2FsYXIoYmFzZSwgZSkge1xuICAgICAgICByZXR1cm4gbXVsU2NhbGFyKHRoaXMsIGJhc2UsIGUpO1xuICAgIH1cblxuICAgIGFmZmluZShwKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhwKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfSBlbHNlIGlmIChGLmVxKHBbMl0sIEYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBaX2ludiA9IEYuaW52KHBbMl0pO1xuICAgICAgICAgICAgY29uc3QgWjJfaW52ID0gRi5zcXVhcmUoWl9pbnYpO1xuICAgICAgICAgICAgY29uc3QgWjNfaW52ID0gRi5tdWwoWjJfaW52LCBaX2ludik7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBBcnJheSgzKTtcbiAgICAgICAgICAgIHJlc1swXSA9IEYubXVsKHBbMF0sWjJfaW52KTtcbiAgICAgICAgICAgIHJlc1sxXSA9IEYubXVsKHBbMV0sWjNfaW52KTtcbiAgICAgICAgICAgIHJlc1syXSA9IEYub25lO1xuXG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbXVsdGlBZmZpbmUoYXJyKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcnIpO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhY2NNdWwgPSBuZXcgQXJyYXkoa2V5cy5sZW5ndGgrMSk7XG4gICAgICAgIGFjY011bFswXSA9IEYub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaTwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKEYuZXEoYXJyW2tleXNbaV1dWzJdLCBGLnplcm8pKSB7XG4gICAgICAgICAgICAgICAgYWNjTXVsW2krMV0gPSBhY2NNdWxbaV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGFjY011bFtpKzFdID0gRi5tdWwoYWNjTXVsW2ldLCBhcnJba2V5c1tpXV1bMl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgYWNjTXVsW2tleXMubGVuZ3RoXSA9IEYuaW52KGFjY011bFtrZXlzLmxlbmd0aF0pO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBrZXlzLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgICAgIGlmIChGLmVxKGFycltrZXlzW2ldXVsyXSwgRi56ZXJvKSkge1xuICAgICAgICAgICAgICAgIGFjY011bFtpXSA9IGFjY011bFtpKzFdO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXSA9IHRoaXMuemVybztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgWl9pbnYgPSBGLm11bChhY2NNdWxbaV0sIGFjY011bFtpKzFdKTtcbiAgICAgICAgICAgICAgICBhY2NNdWxbaV0gPSBGLm11bChhcnJba2V5c1tpXV1bMl0sIGFjY011bFtpKzFdKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IFoyX2ludiA9IEYuc3F1YXJlKFpfaW52KTtcbiAgICAgICAgICAgICAgICBjb25zdCBaM19pbnYgPSBGLm11bChaMl9pbnYsIFpfaW52KTtcblxuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVswXSA9IEYubXVsKGFycltrZXlzW2ldXVswXSxaMl9pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsxXSA9IEYubXVsKGFycltrZXlzW2ldXVsxXSxaM19pbnYpO1xuICAgICAgICAgICAgICAgIGFycltrZXlzW2ldXVsyXSA9IEYub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBlcShwMSwgcDIpIHtcbiAgICAgICAgY29uc3QgRiA9IHRoaXMuRjtcblxuICAgICAgICBpZiAodGhpcy5GLmVxKHAxWzJdLCB0aGlzLkYuemVybykpIHJldHVybiB0aGlzLkYuZXEocDJbMl0sIHRoaXMuRi56ZXJvKTtcbiAgICAgICAgaWYgKHRoaXMuRi5lcShwMlsyXSwgdGhpcy5GLnplcm8pKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IEYuc3F1YXJlKCBwMVsyXSApO1xuICAgICAgICBjb25zdCBaMloyID0gRi5zcXVhcmUoIHAyWzJdICk7XG5cbiAgICAgICAgY29uc3QgVTEgPSBGLm11bCggcDFbMF0gLCBaMloyICk7XG4gICAgICAgIGNvbnN0IFUyID0gRi5tdWwoIHAyWzBdICwgWjFaMSApO1xuXG4gICAgICAgIGNvbnN0IFoxX2N1YmVkID0gRi5tdWwoIHAxWzJdICwgWjFaMSk7XG4gICAgICAgIGNvbnN0IFoyX2N1YmVkID0gRi5tdWwoIHAyWzJdICwgWjJaMik7XG5cbiAgICAgICAgY29uc3QgUzEgPSBGLm11bCggcDFbMV0gLCBaMl9jdWJlZCk7XG4gICAgICAgIGNvbnN0IFMyID0gRi5tdWwoIHAyWzFdICwgWjFfY3ViZWQpO1xuXG4gICAgICAgIHJldHVybiAoRi5lcShVMSxVMikgJiYgRi5lcShTMSxTMikpO1xuICAgIH1cblxuICAgIGlzWmVybyhwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLkYuaXNaZXJvKHBbMl0pO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKHApIHtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgcmV0dXJuIGBbICR7dGhpcy5GLnRvU3RyaW5nKGNwWzBdKX0gLCAke3RoaXMuRi50b1N0cmluZyhjcFsxXSl9IF1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGxldCBQID0gW107XG4gICAgICAgIGxldCBncmVhdGVzdDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgUFswXSA9IEYuZnJvbVJuZyhybmcpO1xuICAgICAgICAgICAgZ3JlYXRlc3QgPSBybmcubmV4dEJvb2woKTtcbiAgICAgICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKFBbMF0pLCBQWzBdKSwgdGhpcy5iKTtcbiAgICAgICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcbiAgICAgICAgfSB3aGlsZSAoKFBbMV0gPT0gbnVsbCl8fChGLmlzWmVyb1tQXSkpO1xuXG4gICAgICAgIGNvbnN0IHMgPSBpc0dyZWF0ZXN0KEYsIFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG4gICAgICAgIFBbMl0gPSBGLm9uZTtcblxuICAgICAgICBpZiAodGhpcy5jb2ZhY3Rvcikge1xuICAgICAgICAgICAgUCA9IHRoaXMubXVsU2NhbGFyKFAsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgUCA9IHRoaXMuYWZmaW5lKFApO1xuXG4gICAgICAgIHJldHVybiBQO1xuXG4gICAgfVxuXG4gICAgdG9ScHJMRShidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBjb25zdCBCdWZmViA9IG5ldyBVaW50OEFycmF5KGJ1ZmYsIG8sIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIEJ1ZmZWLmZpbGwoMCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5GLnRvUnByTEUoYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFKGJ1ZmYsIG8rdGhpcy5GLm44LCBwWzFdKTtcbiAgICB9XG5cbiAgICB0b1JwckJFKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRShidWZmLCBvLCBwWzBdKTtcbiAgICAgICAgdGhpcy5GLnRvUnByQkUoYnVmZiwgbyt0aGlzLkYubjgsIHBbMV0pO1xuICAgIH1cblxuICAgIHRvUnByTEVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgdG9ScHJMRUpNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJMRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckxFTShidWZmLCBvKzIqdGhpcy5GLm44LCBwWzJdKTtcbiAgICB9XG5cblxuICAgIHRvUnByQkVNKGJ1ZmYsIG8sIHApIHtcbiAgICAgICAgcCA9IHRoaXMuYWZmaW5lKHApO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIGNvbnN0IEJ1ZmZWID0gbmV3IFVpbnQ4QXJyYXkoYnVmZiwgbywgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgQnVmZlYuZmlsbCgwKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLkYudG9ScHJCRU0oYnVmZiwgbywgcFswXSk7XG4gICAgICAgIHRoaXMuRi50b1JwckJFTShidWZmLCBvK3RoaXMuRi5uOCwgcFsxXSk7XG4gICAgfVxuXG4gICAgZnJvbVJwckxFKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEUoYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFKGJ1ZmYsIG8rdGhpcy5GLm44KTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHRoaXMuRi5vbmVdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRShidWZmLCBvKSB7XG4gICAgICAgIG8gPSBvIHx8IDA7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbVJwckJFKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJCRShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByTEVNKGJ1ZmYsIG8pIHtcbiAgICAgICAgbyA9IG8gfHwgMDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMuRi5mcm9tUnByTEVNKGJ1ZmYsIG8pO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyt0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh4KSAmJiB0aGlzLkYuaXNaZXJvKHkpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy56ZXJvO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgdGhpcy5GLm9uZV07XG4gICAgfVxuXG4gICAgZnJvbVJwckxFSk0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJMRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGNvbnN0IHogPSB0aGlzLkYuZnJvbVJwckxFTShidWZmLCBvK3RoaXMuRi5uOCoyKTtcbiAgICAgICAgaWYgKHRoaXMuRi5pc1plcm8oeCkgJiYgdGhpcy5GLmlzWmVybyh5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW3gsIHksIHpdO1xuICAgIH1cblxuICAgIGZyb21ScHJCRU0oYnVmZiwgbykge1xuICAgICAgICBvID0gbyB8fCAwO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLmZyb21ScHJCRU0oYnVmZiwgbyk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYuZnJvbVJwckJFTShidWZmLCBvK3RoaXMuRi5uOCk7XG4gICAgICAgIGlmICh0aGlzLkYuaXNaZXJvKHgpICYmIHRoaXMuRi5pc1plcm8oeSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnplcm87XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFt4LCB5LCB0aGlzLkYub25lXTtcbiAgICB9XG5cbiAgICBmcm9tUnByQ29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGNvbnN0IEYgPSB0aGlzLkY7XG4gICAgICAgIGNvbnN0IHYgPSBuZXcgVWludDhBcnJheShidWZmLmJ1ZmZlciwgbywgRi5uOCk7XG4gICAgICAgIGlmICh2WzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcbiAgICAgICAgY29uc3QgUCA9IG5ldyBBcnJheSgzKTtcblxuICAgICAgICBjb25zdCBncmVhdGVzdCA9ICgodlswXSAmIDB4ODApICE9IDApO1xuICAgICAgICB2WzBdID0gdlswXSAmIDB4N0Y7XG4gICAgICAgIFBbMF0gPSBGLmZyb21ScHJCRShidWZmLCBvKTtcbiAgICAgICAgaWYgKGdyZWF0ZXN0KSB2WzBdID0gdlswXSB8IDB4ODA7ICAvLyBzZXQgYmFjayBhZ2FpbiB0aGUgb2xkIHZhbHVlXG5cbiAgICAgICAgY29uc3QgeDNiID0gRi5hZGQoRi5tdWwoRi5zcXVhcmUoUFswXSksIFBbMF0pLCB0aGlzLmIpO1xuICAgICAgICBQWzFdID0gRi5zcXJ0KHgzYik7XG5cbiAgICAgICAgaWYgKFBbMV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgUG9pbnQhXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcyA9IGlzR3JlYXRlc3QoRiwgUFsxXSk7XG4gICAgICAgIGlmIChncmVhdGVzdCBeIHMpIFBbMV0gPSBGLm5lZyhQWzFdKTtcbiAgICAgICAgUFsyXSA9IEYub25lO1xuXG4gICAgICAgIHJldHVybiBQO1xuICAgIH1cblxuICAgIHRvUnByQ29tcHJlc3NlZChidWZmLCBvLCBwKSB7XG4gICAgICAgIHAgPSB0aGlzLmFmZmluZShwKTtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBVaW50OEFycmF5KGJ1ZmYuYnVmZmVyLCBvLCB0aGlzLkYubjgpO1xuICAgICAgICBpZiAodGhpcy5pc1plcm8ocCkpIHtcbiAgICAgICAgICAgIHYuZmlsbCgwKTtcbiAgICAgICAgICAgIHZbMF0gPSAweDQwO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuRi50b1JwckJFKGJ1ZmYsIG8sIHBbMF0pO1xuXG4gICAgICAgIGlmIChpc0dyZWF0ZXN0KHRoaXMuRiwgcFsxXSkpIHtcbiAgICAgICAgICAgIHZbMF0gPSB2WzBdIHwgMHg4MDtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCBvKSB7XG4gICAgICAgIGlmIChidWZmWzBdICYgMHg0MCkgcmV0dXJuIHRoaXMuemVybztcblxuICAgICAgICByZXR1cm4gdGhpcy5mcm9tUnByQkUoYnVmZiwgbyk7XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgbywgcCkge1xuICAgICAgICB0aGlzLnRvUnByQkUoYnVmZiwgbywgcCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKHApKSB7XG4gICAgICAgICAgICBidWZmW29dID0gYnVmZltvXSB8IDB4NDA7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuXG52YXIgdXRpbHMkNiA9IHt9O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnV0aWxzJDYuYmlnSW50MkJ5dGVzTEUgPSBmdW5jdGlvbiBiaWdJbnQyQnl0ZXNMRShfYSwgbGVuKSB7XG4gICAgY29uc3QgYiA9IEFycmF5KGxlbik7XG4gICAgbGV0IHYgPSBCaWdJbnQoX2EpO1xuICAgIGZvciAobGV0IGk9MDsgaTxsZW47IGkrKykge1xuICAgICAgICBiW2ldID0gTnVtYmVyKHYgJiAweEZGbik7XG4gICAgICAgIHYgPSB2ID4+IDhuO1xuICAgIH1cbiAgICByZXR1cm4gYjtcbn07XG5cbnV0aWxzJDYuYmlnSW50MlUzMkxFID0gZnVuY3Rpb24gYmlnSW50MkJ5dGVzTEUoX2EsIGxlbikge1xuICAgIGNvbnN0IGIgPSBBcnJheShsZW4pO1xuICAgIGxldCB2ID0gQmlnSW50KF9hKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bGVuOyBpKyspIHtcbiAgICAgICAgYltpXSA9IE51bWJlcih2ICYgMHhGRkZGRkZGRm4pO1xuICAgICAgICB2ID0gdiA+PiAzMm47XG4gICAgfVxuICAgIHJldHVybiBiO1xufTtcblxudXRpbHMkNi5pc09jYW1OdW0gPSBmdW5jdGlvbihhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKGEubGVuZ3RoICE9IDMpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMF0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodHlwZW9mIGFbMV0gIT09IFwibnVtYmVyXCIpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoYVsyXSkpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2ludCA9IGZ1bmN0aW9uIGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiaW50XCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge307XG5cbiAgICBjb25zdCBuMzIgPSBuNjQqMjtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQ7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgICAgIGkqOCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGkqOFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NDsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE9uZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfb25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIiksXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8bjY0OyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcXooXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgZ2V0Q29tcENvZGUobi0xKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoZ2V0Q29tcENvZGUobjY0LTEpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMucmV0KGMuaTMyX2NvbnN0KDApKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmdW5jdGlvbiBnZXRDb21wQ29kZShuKSB7XG4gICAgICAgICAgICBpZiAobj09MCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAgYy5yZXQoYy5pNjRfZXEoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHhcIiksIG4qOCApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGdldENvbXBDb2RlKG4tMSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGdldENvbXBDb2RlKG42NC0xKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnJldChjLmkzMl9jb25zdCgwKSkpO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEd0ZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0Q29tcENvZGUobikge1xuICAgICAgICAgICAgaWYgKG49PTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIGMucmV0KGMuaTY0X2dlX3UoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB4XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZChjLmdldExvY2FsKFwicHlcIikpXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9sdF91KFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoYy5nZXRMb2NhbChcInB5XCIpLCBuKjggKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2d0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweFwiKSwgbio4ICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKGMuZ2V0TG9jYWwoXCJweVwiKSwgbio4IClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBnZXRDb21wQ29kZShuLTEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGYuYWRkQ29kZShnZXRDb21wQ29kZShuNjQtMSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5yZXQoYy5pMzJfY29uc3QoMCkpKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGQoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbCggXCJjXCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSwgNCppKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQzMl91KGMuZ2V0TG9jYWwoXCJ5XCIpLCA0KmkpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0KGMuaTY0X3Nocl91IChjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKSkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWIoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXG4gICAgICAgICAgICBcImNcIixcbiAgICAgICAgICAgIGMuaTY0X3N1YihcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInlcIikpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInhcIiksIDQqaSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmdldExvY2FsKFwieVwiKSwgNCppKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfcyAoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgaSo0LFxuICAgICAgICAgICAgICAgIGMuaTY0X2FuZCggYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KFwiMHhGRkZGRkZGRlwiKSlcbiAgICAgICAgICAgICkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaTMyX3dyYXBfaTY0ICggYy5pNjRfc2hyX3MgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9tdWxcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjMCA9IFwiYzBcIjtcbiAgICAgICAgbGV0IGMxID0gXCJjMVwiO1xuXG4gICAgICAgIGZvciAobGV0IGs9MDsgazxuMzIqMi0xOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgICAgIGsqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgW2MwLCBjMV0gPSBbYzEsIGMwXTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJcIiksXG4gICAgICAgICAgICAgICAgbjMyKjQqMi00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGxvYWRYID0gW107XG4gICAgICAgIGZ1bmN0aW9uIG11bGlqKGksIGopIHtcbiAgICAgICAgICAgIGxldCBYLFk7XG4gICAgICAgICAgICBpZiAoIWxvYWRYW2ldKSB7XG4gICAgICAgICAgICAgICAgWCA9IGMudGVlTG9jYWwoXCJ4XCIraSwgYy5pNjRfbG9hZDMyX3UoIGMuZ2V0TG9jYWwoXCJ4XCIpLCBpKjQpKTtcbiAgICAgICAgICAgICAgICBsb2FkWFtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFggPSBjLmdldExvY2FsKFwieFwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFsb2FkWFtqXSkge1xuICAgICAgICAgICAgICAgIFkgPSBjLnRlZUxvY2FsKFwieFwiK2osIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaio0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbal0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBZID0gYy5nZXRMb2NhbChcInhcIitqKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGMuaTY0X211bCggWCwgWSApO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMCwgay1uMzIrMSk7IChpPCgoaysxKT4+MSkgKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgYnkgMlxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoayUyID09IDApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGs+PjEsIGs+PjEpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBvbGQgY2FycnlcblxuICAgICAgICAgICAgaWYgKGs+MCkge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxX29sZClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgayo0LFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMF9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBjMV9vbGQsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNCoyLTQsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3F1YXJlT2xkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXVhcmVPbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRNdWwxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MTsgaTxuMzI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCA0KmksIDApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInlcIilcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UgKGMuZ2V0TG9jYWwoXCJjXCIpLCBjLmk2NF9jb25zdCgzMikpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKSxcbiAgICAgICAgICAgICAgICBpKjQsXG4gICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfYnVpbGRBZGQxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fYWRkMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInB4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJweFwiLCBjLmdldExvY2FsKFwieFwiKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwieVwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFxuICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwiY1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwicHhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoNClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInB4XCIpLCAwLCAwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmk2NF9zdG9yZTMyKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiY1wiLFxuICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERpdigpIHtcbiAgICAgICAgX2J1aWxkTXVsMSgpO1xuICAgICAgICBfYnVpbGRBZGQxKCk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJlWFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVZXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3lcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzeFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVjXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBDYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFJhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuZ2V0TG9jYWwoXCJjY1wiKTtcbiAgICAgICAgY29uc3QgUiA9IGMuZ2V0TG9jYWwoXCJyclwiKTtcbiAgICAgICAgY29uc3QgcHIxID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCBSMSA9IGMuaTMyX2NvbnN0KHByMSk7XG4gICAgICAgIGNvbnN0IFIyID0gYy5pMzJfY29uc3QocHIxK244KTtcblxuICAgICAgICAvLyBJYyBjIGlzIDAgdGhlbiBzdG9yZSBpdCBpbiBhbiBhdXhpbGlhcnkgYnVmZmVyXG4gICAgICAgIGYuYWRkQ29kZShjLmlmKFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcImNcIiksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY2NcIiwgYy5nZXRMb2NhbChcImNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNjXCIsIENhdXgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIC8vIEljIHIgaXMgMCB0aGVuIHN0b3JlIGl0IGluIGFuIGF1eGlsaWFyeSBidWZmZXJcbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyclwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicnJcIiwgUmF1eClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgLy8gQ29weVxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInhcIiksIFIpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ5XCIpLCBZKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBDKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBSMSkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9jb25zdChuOC0xKSkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImVZXCIsIGMuaTMyX2NvbnN0KG44LTEpKSk7XG5cbiAgICAgICAgLy8gd2hpbGUgKGVZPjMpJiYoWVtlWV09PTApIGV5LS07XG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9vcihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChZICwgYy5nZXRMb2NhbChcImVZXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZVlcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJlWVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJzeVwiLFxuICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKCBZLCBjLmdldExvY2FsKFwiZVlcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRm9yY2UgYSBkaXZpZGUgYnkgMCBpZiBxdW90aWVuIGlzIDBcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmk2NF9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuaTY0X2Rpdl91KGMuaTY0X2NvbnN0KDApLCBjLmk2NF9jb25zdCgwKSkpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAvLyB3aGlsZSAoZVg+NykmJihZW2VYXT09MCkgZXgtLTtcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoUiAsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJlWFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImVYXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwic3hcIixcbiAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIFIsIGMuZ2V0TG9jYWwoXCJlWFwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg3KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAwLFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgYy5pNjRfZGl2X3UoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN5XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJlY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVYXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImVZXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDQpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gV2hpbGUgZ3JlYXRlciB0aGFuIDMyIGJpdHMgb3IgZWMgaXMgbmVnLCBzaHIgYW5kIGluYyBleHBcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2VxeihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzeFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoXCIweEZGRkZGRkZGMDAwMDAwMDBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZWNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInN4XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImVjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTY0X2VxeihjLmdldExvY2FsKFwic3hcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKHByZWZpeCArIFwiX2d0ZVwiLCBSLCBZKSlcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInN4XCIsIGMuaTY0X2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImVjXCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsMVwiLCBZLCBjLmdldExvY2FsKFwic3hcIiksIFIyKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgUixcbiAgICAgICAgICAgICAgICBjLmkzMl9zdWIoUjIsIGMuZ2V0TG9jYWwoXCJlY1wiKSksXG4gICAgICAgICAgICAgICAgUlxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2FkZDFcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoQywgYy5nZXRMb2NhbChcImVjXCIpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3hcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2VNb2QoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicG1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXd0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInFxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuZXdyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic3dwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNpZ250XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwic2lnbm5ld3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJzaWdueFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXgzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGF1eDQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgYXV4NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBhdXg2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IG11bEJ1ZmYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMikpO1xuICAgICAgICBjb25zdCBhdXg3ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInRcIiwgYXV4MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBhdXgxKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzaWdudFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInJcIiwgYXV4MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicG1cIiksIGF1eDIpXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5ld3RcIiwgYXV4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIGF1eDMpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ25uZXd0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBhdXg0KSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJweFwiKSwgYXV4NClcbiAgICAgICAgKTtcblxuXG5cblxuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInFxXCIsIGF1eDUpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJxclwiLCBhdXg2KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwieFwiLCBhdXg3KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5ld3JcIikgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kaXZcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJuZXdyXCIpLCBjLmdldExvY2FsKFwicXFcIiksIGMuZ2V0TG9jYWwoXCJxclwiKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYy5nZXRMb2NhbChcInFxXCIpLCBjLmdldExvY2FsKFwibmV3dFwiKSwgbXVsQnVmZiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNpZ250XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZ3RlXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmRyb3AoYy5jYWxsKHByZWZpeCArIFwiX3N1YlwiLCBtdWxCdWZmLCBjLmdldExvY2FsKFwidFwiKSwgYy5nZXRMb2NhbChcInhcIikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwic2lnbnhcIiwgYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2lnbm5ld3RcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIG11bEJ1ZmYsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBjLmlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9ndGVcIiwgYy5nZXRMb2NhbChcInRcIiksIG11bEJ1ZmYpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ0XCIpLCBtdWxCdWZmLCBjLmdldExvY2FsKFwieFwiKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJzaWdueFwiLCBjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5kcm9wKGMuY2FsbChwcmVmaXggKyBcIl9zdWJcIiwgbXVsQnVmZiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJ4XCIpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInNpZ254XCIsIGMuaTMyX2NvbnN0KDEpKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwidFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwidFwiLCBjLmdldExvY2FsKFwibmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3dFwiLCBjLmdldExvY2FsKFwieFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwieFwiLCBjLmdldExvY2FsKFwic3dwXCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNpZ250XCIsIGMuZ2V0TG9jYWwoXCJzaWdubmV3dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic2lnbm5ld3RcIiwgYy5nZXRMb2NhbChcInNpZ254XCIpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInN3cFwiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiclwiLCBjLmdldExvY2FsKFwibmV3clwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibmV3clwiLCBjLmdldExvY2FsKFwicXJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInFyXCIsIGMuZ2V0TG9jYWwoXCJzd3BcIikpLFxuXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5pZihcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzaWdudFwiKSxcbiAgICAgICAgICAgIGMuZHJvcChjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJwbVwiKSwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInRcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSlcbiAgICAgICAgKSk7XG4gICAgfVxuXG5cbiAgICBidWlsZENvcHkoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkR3RlKCk7XG4gICAgYnVpbGRBZGQoKTtcbiAgICBidWlsZFN1YigpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkRGl2KCk7XG4gICAgYnVpbGRJbnZlcnNlTW9kKCk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZ3RlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZGl2XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfaW52ZXJzZU1vZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbnZhciBidWlsZF90aW1lc3NjYWxhciA9IGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIobW9kdWxlLCBmbk5hbWUsIGVsZW1lbnRMZW4sIG9wQUIsIG9wQUEsIG9wQ29weSwgb3BJbml0KSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcImJhc2VcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuZ3RoXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJiXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInNjYWxhckxlbmd0aFwiKSksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wSW5pdCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgXVxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoYy5jYWxsKG9wQ29weSwgYy5nZXRMb2NhbChcImJhc2VcIiksIGF1eCkpO1xuICAgIGYuYWRkQ29kZShjLmNhbGwob3BJbml0LCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiaVwiLCBjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpKSk7XG4gICAgZi5hZGRDb2RlKGMuYmxvY2soYy5sb29wKFxuICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiYlwiLFxuICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICAuLi5pbm5lckxvb3AoKSxcbiAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgYy5icigwKVxuICAgICkpKTtcblxuXG4gICAgZnVuY3Rpb24gaW5uZXJMb29wKCkge1xuICAgICAgICBjb25zdCBjb2RlID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw4OyBpKyspIHtcbiAgICAgICAgICAgIGNvZGUucHVzaChcbiAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KCBjLmdldExvY2FsKFwiYlwiKSwgYy5pMzJfY29uc3QoMHg4MCA+PiBpKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg4MCA+PiBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BBQiwgYy5nZXRMb2NhbChcInJcIiksYXV4LCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG59O1xuXG52YXIgYnVpbGRfYmF0Y2hpbnZlcnNlID0gYnVpbGRCYXRjaEludmVyc2UkMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaEludmVyc2UkMyhtb2R1bGUsIHByZWZpeCkge1xuXG5cbiAgICBjb25zdCBuOCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0ubjY0Kjg7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9iYXRjaEludmVyc2VcIik7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiaW5TdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJvdXRTdGVwXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIixcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG5cbiAgICAvLyBBbGxvYyBXb3JraW5nIHNwYWNlIGZvciBhY2N1bXVsYXRlZCB1bWx0aXBsaWNhdGlvbnNcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9sb2FkKCBjLmkzMl9jb25zdCgwKSApKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgLy8gYXV4WzBdID0gYTtcbiAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9vbmVcIiwgYy5nZXRMb2NhbChcIml0QXV4XCIpKSxcbiAgICAgICAgLy8gZm9yIChpPTA7aTxuO2krKykgYXV4W2ldID0gYXV4W2ktMV0qaW5baV1cbiAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCtcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIml0SW5cIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJblwiKSwgYy5nZXRMb2NhbChcImluU3RlcFwiKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSxcblxuICAgICAgICAvLyBwb2ludCB0byB0aGUgbGFzdFxuICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpblN0ZXBcIikpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAvLyBpdE91dCA9IHBPdXQgKyAobi0xKSpzdGVwT3V0ICAgLy8gUG9pbnQgdG8gdGhlIGxhc3RcbiAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgIFwiaXRPdXRcIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib3V0U3RlcFwiKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICksXG5cbiAgICAgICAgLy8gYXV4W24tMV0gPSAxL2F1eFtuLTFdXG4gICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaW52ZXJzZVwiLCBjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSApLFxuXG4gICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXooIGMuZ2V0TG9jYWwoXCJpXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXgrXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEluXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRBdXhcIiksIGMuaTMyX2NvbnN0KG44KSksIEFVWCksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCtcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEluXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4K1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgQVVYLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0T3V0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmdldExvY2FsKFwiaW5TdGVwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5nZXRMb2NhbChcIm91dFN0ZXBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSlcblxuICAgICk7XG5cblxuICAgIC8vIFJlY292ZXIgT2xkIG1lbW9yeVxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKVxuICAgICAgICApXG4gICAgKTtcblxufVxuXG52YXIgYnVpbGRfYmF0Y2hjb252ZXJ0aW9uID0gYnVpbGRCYXRjaENvbnZlcnRpb24kMztcblxuZnVuY3Rpb24gYnVpbGRCYXRjaENvbnZlcnRpb24kMyhtb2R1bGUsIGZuTmFtZSwgaW50ZXJuYWxGbk5hbWUsIHNpemVJbiwgc2l6ZU91dCwgcmV2ZXJzZSkge1xuICAgIGlmICh0eXBlb2YgcmV2ZXJzZSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBTZXQgdGhlIHJldmVyc2UgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdG8gdXNlIHRoZSBzYW1lIGJ1ZmZlciBhcyBpbi9vdXQuXG4gICAgICAgIGlmIChzaXplSW4gPCBzaXplT3V0KSB7XG4gICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdE91dFwiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBpZiAocmV2ZXJzZSkge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVPdXQpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSAoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwiblwiKSApKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRlcm5hbEZuTmFtZSwgYy5nZXRMb2NhbChcIml0SW5cIiksIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYnVpbGRfYmF0Y2hvcCA9IGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDI7XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDIobW9kdWxlLCBmbk5hbWUsIGludGVybmFsRm5OYW1lLCBzaXplSW4sIHNpemVPdXQsIHJldmVyc2UpIHtcbiAgICBpZiAodHlwZW9mIHJldmVyc2UgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgLy8gU2V0IHRoZSByZXZlcnNlIGluIGEgd2F5IHRoYXQgYWxsb3dzIHRvIHVzZSB0aGUgc2FtZSBidWZmZXIgYXMgaW4vb3V0LlxuICAgICAgICBpZiAoc2l6ZUluIDwgc2l6ZU91dCkge1xuICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXZlcnNlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJbjFcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBJbjJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIml0SW4xXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpdEluMlwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG5cbiAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgaWYgKHJldmVyc2UpIHtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEluMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3Qoc2l6ZUluKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbjJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHNpemVJbilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChzaXplT3V0KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEgKCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcIm5cIikgKSksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50ZXJuYWxGbk5hbWUsIGMuZ2V0TG9jYWwoXCJpdEluMVwiKSwgYy5nZXRMb2NhbChcIml0SW4yXCIpLCBjLmdldExvY2FsKFwiaXRPdXRcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4xXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjJcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5pMzJfY29uc3Qoc2l6ZUluKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChzaXplT3V0KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJbjFcIiwgYy5nZXRMb2NhbChcInBJbjFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuZ2V0TG9jYWwoXCJwSW4yXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludGVybmFsRm5OYW1lLCBjLmdldExvY2FsKFwiaXRJbjFcIiksIGMuZ2V0TG9jYWwoXCJpdEluMlwiKSwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluMVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW4xXCIpLCBjLmkzMl9jb25zdChzaXplSW4pKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW4yXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRJbjJcIiksIGMuaTMyX2NvbnN0KHNpemVJbikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3Qoc2l6ZU91dCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG4gICAgfVxufVxuXG52YXIgYmlnaW50ID0ge307XG5cbi8vIE1hbnkgb2YgdGhlc2UgdXRpbGl0aWVzIGFyZSBmcm9tIHRoZSBgYmlnLWludGVnZXJgIGxpYnJhcnksXG4vLyBidXQgYWRqdXN0ZWQgdG8gb25seSB3b3JrIHdpdGggbmF0aXZlIEJpZ0ludCB0eXBlXG4vLyBSZWYgaHR0cHM6Ly9naXRodWIuY29tL3BldGVyb2xzb24vQmlnSW50ZWdlci5qcy9ibG9iL2U1ZDIxNTRkM2M0MTcwNjljNTFlNzExNmJhZmMzYjkxZDBiOWZlNDEvQmlnSW50ZWdlci5qc1xuLy8gT3JpZ2luYWxseSBsaWNlbnNlZCBUaGUgVW5saWNlbnNlXG5cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xufVxuXG5mdW5jdGlvbiBzcXVhcmUkMShuKSB7XG4gICAgcmV0dXJuIG4gKiBuO1xufVxuXG5mdW5jdGlvbiBpc09kZCQ0KG4pIHtcbiAgICByZXR1cm4gbiAlIDJuICE9PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNFdmVuKG4pIHtcbiAgICByZXR1cm4gbiAlIDJuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gaXNOZWdhdGl2ZSQzKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1Bvc2l0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA+IDBuO1xufVxuXG5mdW5jdGlvbiBiaXRMZW5ndGgkNShuKSB7XG4gICAgaWYgKGlzTmVnYXRpdmUkMyhuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBhYnMobikge1xuICAgIHJldHVybiBuIDwgMG4gPyAtbiA6IG47XG59XG5cbmZ1bmN0aW9uIGlzVW5pdChuKSB7XG4gICAgcmV0dXJuIGFicyhuKSA9PT0gMW47XG59XG5cbmZ1bmN0aW9uIG1vZEludiQzKGEsIG4pIHtcbiAgICB2YXIgdCA9IDBuLCBuZXdUID0gMW4sIHIgPSBuLCBuZXdSID0gYWJzKGEpLCBxLCBsYXN0VCwgbGFzdFI7XG4gICAgd2hpbGUgKG5ld1IgIT09IDBuKSB7XG4gICAgICAgIHEgPSByIC8gbmV3UjtcbiAgICAgICAgbGFzdFQgPSB0O1xuICAgICAgICBsYXN0UiA9IHI7XG4gICAgICAgIHQgPSBuZXdUO1xuICAgICAgICByID0gbmV3UjtcbiAgICAgICAgbmV3VCA9IGxhc3RUIC0gKHEgKiBuZXdUKTtcbiAgICAgICAgbmV3UiA9IGxhc3RSIC0gKHEgKiBuZXdSKTtcbiAgICB9XG4gICAgaWYgKCFpc1VuaXQocikpIHRocm93IG5ldyBFcnJvcihhLnRvU3RyaW5nKCkgKyBcIiBhbmQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBhcmUgbm90IGNvLXByaW1lXCIpO1xuICAgIGlmIChjb21wYXJlKHQsIDBuKSA9PT0gLTEpIHtcbiAgICAgICAgdCA9IHQgKyBuO1xuICAgIH1cbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGEpKSB7XG4gICAgICAgIHJldHVybiAtdDtcbiAgICB9XG4gICAgcmV0dXJuIHQ7XG59XG5cbmZ1bmN0aW9uIG1vZFBvdyQyKG4sIGV4cCwgbW9kKSB7XG4gICAgaWYgKG1vZCA9PT0gMG4pIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB0YWtlIG1vZFBvdyB3aXRoIG1vZHVsdXMgMFwiKTtcbiAgICB2YXIgciA9IDFuLFxuICAgICAgICBiYXNlID0gbiAlIG1vZDtcbiAgICBpZiAoaXNOZWdhdGl2ZSQzKGV4cCkpIHtcbiAgICAgICAgZXhwID0gZXhwICogLTFuO1xuICAgICAgICBiYXNlID0gbW9kSW52JDMoYmFzZSwgbW9kKTtcbiAgICB9XG4gICAgd2hpbGUgKGlzUG9zaXRpdmUoZXhwKSkge1xuICAgICAgICBpZiAoYmFzZSA9PT0gMG4pIHJldHVybiAwbjtcbiAgICAgICAgaWYgKGlzT2RkJDQoZXhwKSkgciA9IHIgKiBiYXNlICUgbW9kO1xuICAgICAgICBleHAgPSBleHAgLyAybjtcbiAgICAgICAgYmFzZSA9IHNxdWFyZSQxKGJhc2UpICUgbW9kO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gY29tcGFyZUFicyhhLCBiKSB7XG4gICAgYSA9IGEgPj0gMG4gPyBhIDogLWE7XG4gICAgYiA9IGIgPj0gMG4gPyBiIDogLWI7XG4gICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XG59XG5cbmZ1bmN0aW9uIGlzRGl2aXNpYmxlQnkoYSwgbikge1xuICAgIGlmIChuID09PSAwbikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiB0cnVlO1xuICAgIGlmIChjb21wYXJlQWJzKG4sIDJuKSA9PT0gMCkgcmV0dXJuIGlzRXZlbihhKTtcbiAgICByZXR1cm4gYSAlIG4gPT09IDBuO1xufVxuXG5mdW5jdGlvbiBpc0Jhc2ljUHJpbWUodikge1xuICAgIHZhciBuID0gYWJzKHYpO1xuICAgIGlmIChpc1VuaXQobikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA9PT0gMm4gfHwgbiA9PT0gM24gfHwgbiA9PT0gNW4pIHJldHVybiB0cnVlO1xuICAgIGlmIChpc0V2ZW4obikgfHwgaXNEaXZpc2libGVCeShuLCAzbikgfHwgaXNEaXZpc2libGVCeShuLCA1bikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAobiA8IDQ5bikgcmV0dXJuIHRydWU7XG4gICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XG59XG5cbmZ1bmN0aW9uIHByZXYobikge1xuICAgIHJldHVybiBuIC0gMW47XG59XG5cbmZ1bmN0aW9uIG1pbGxlclJhYmluVGVzdChuLCBhKSB7XG4gICAgdmFyIG5QcmV2ID0gcHJldihuKSxcbiAgICAgICAgYiA9IG5QcmV2LFxuICAgICAgICByID0gMCxcbiAgICAgICAgZCwgaSwgeDtcbiAgICB3aGlsZSAoaXNFdmVuKGIpKSBiID0gYiAvIDJuLCByKys7XG4gICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKG4gPCBhW2ldKSBjb250aW51ZTtcbiAgICAgICAgeCA9IG1vZFBvdyQyKEJpZ0ludChhW2ldKSwgYiwgbik7XG4gICAgICAgIGlmIChpc1VuaXQoeCkgfHwgeCA9PT0gblByZXYpIGNvbnRpbnVlO1xuICAgICAgICBmb3IgKGQgPSByIC0gMTsgZCAhPSAwOyBkLS0pIHtcbiAgICAgICAgICAgIHggPSBzcXVhcmUkMSh4KSAlIG47XG4gICAgICAgICAgICBpZiAoaXNVbml0KHgpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICBpZiAoeCA9PT0gblByZXYpIGNvbnRpbnVlIG5leHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNQcmltZSQxKHApIHtcbiAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZShwKTtcbiAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcbiAgICB2YXIgbiA9IGFicyhwKTtcbiAgICB2YXIgYml0cyA9IGJpdExlbmd0aCQ1KG4pO1xuICAgIGlmIChiaXRzIDw9IDY0KVxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcbiAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogTnVtYmVyKGJpdHMpO1xuICAgIHZhciB0ID0gTWF0aC5jZWlsKGxvZ04pO1xuICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcbiAgICAgICAgYS5wdXNoKEJpZ0ludChpICsgMikpO1xuICAgIH1cbiAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xufVxuXG5iaWdpbnQuYml0TGVuZ3RoID0gYml0TGVuZ3RoJDU7XG5iaWdpbnQuaXNPZGQgPSBpc09kZCQ0O1xuYmlnaW50LmlzTmVnYXRpdmUgPSBpc05lZ2F0aXZlJDM7XG5iaWdpbnQuYWJzID0gYWJzO1xuYmlnaW50LmlzVW5pdCA9IGlzVW5pdDtcbmJpZ2ludC5jb21wYXJlID0gY29tcGFyZTtcbmJpZ2ludC5tb2RJbnYgPSBtb2RJbnYkMztcbmJpZ2ludC5tb2RQb3cgPSBtb2RQb3ckMjtcbmJpZ2ludC5pc1ByaW1lID0gaXNQcmltZSQxO1xuYmlnaW50LnNxdWFyZSA9IHNxdWFyZSQxO1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkSW50ID0gYnVpbGRfaW50O1xuY29uc3QgdXRpbHMkNSA9IHV0aWxzJDY7XG5jb25zdCBidWlsZEV4cCQyID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSQyID0gYnVpbGRfYmF0Y2hpbnZlcnNlO1xuY29uc3QgYnVpbGRCYXRjaENvbnZlcnRpb24kMSA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkQmF0Y2hPcCA9IGJ1aWxkX2JhdGNob3A7XG5jb25zdCB7IGJpdExlbmd0aDogYml0TGVuZ3RoJDQsIG1vZEludjogbW9kSW52JDIsIG1vZFBvdzogbW9kUG93JDEsIGlzUHJpbWUsIGlzT2RkOiBpc09kZCQzLCBzcXVhcmUgfSA9IGJpZ2ludDtcblxudmFyIGJ1aWxkX2YxbSA9IGZ1bmN0aW9uIGJ1aWxkRjFtKG1vZHVsZSwgX3EsIF9wcmVmaXgsIF9pbnRQcmVmaXgpIHtcbiAgICBjb25zdCBxID0gQmlnSW50KF9xKTtcbiAgICBjb25zdCBuNjQgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkNChxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG4zMiA9IG42NCoyO1xuICAgIGNvbnN0IG44ID0gbjY0Kjg7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiZjFtXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGludFByZWZpeCA9IGJ1aWxkSW50KG1vZHVsZSwgbjY0LCBfaW50UHJlZml4KTtcbiAgICBjb25zdCBwcSA9IG1vZHVsZS5hbGxvYyhuOCwgdXRpbHMkNS5iaWdJbnQyQnl0ZXNMRShxLCBuOCkpO1xuXG4gICAgY29uc3QgcFIyID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoc3F1YXJlKDFuIDw8IEJpZ0ludChuNjQqNjQpKSAlIHEsIG44KSk7XG4gICAgY29uc3QgcE9uZSA9IG1vZHVsZS5hbGxvYyh1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKCgxbiA8PCBCaWdJbnQobjY0KjY0KSkgJSBxLCBuOCkpO1xuICAgIGNvbnN0IHBaZXJvID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoMG4sIG44KSk7XG4gICAgY29uc3QgX21pbnVzT25lID0gcSAtIDFuO1xuICAgIGNvbnN0IF9lID0gX21pbnVzT25lID4+IDFuOyAvLyBlID0gKHAtMSkvMlxuICAgIGNvbnN0IHBlID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF9lLCBuOCkpO1xuXG4gICAgY29uc3QgX2VQbHVzT25lID0gX2UgKyAxbjsgLy8gZSA9IChwLTEpLzJcbiAgICBjb25zdCBwZVBsdXNPbmUgPSBtb2R1bGUuYWxsb2MobjgsIHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoX2VQbHVzT25lLCBuOCkpO1xuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgcHE6IHBxLFxuICAgICAgICBwUjI6IHBSMixcbiAgICAgICAgbjY0OiBuNjQsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHBPbmU6IHBPbmUsXG4gICAgICAgIHBaZXJvOiBwWmVybyxcbiAgICAgICAgcGVQbHVzT25lOiBwZVBsdXNPbmVcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX29uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuaTMyX2NvbnN0KHBPbmUpLCBjLmdldExvY2FsKFwicHJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2FkZFwiLCBjLmdldExvY2FsKFwieFwiKSwgIGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCAgYy5nZXRMb2NhbChcInlcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksICBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3ViXCIsIGMuaTMyX2NvbnN0KHBaZXJvKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU2lnbigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc2lnblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYgKFxuICAgICAgICAgICAgICAgIGMuY2FsbChpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInhcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCArIFwiX2d0ZVwiLCBBVVgsIGMuaTMyX2NvbnN0KHBlUGx1c09uZSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KC0xKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTVJlZHVjdCgpIHtcbiAgICAgICAgY29uc3QgY2FycmllcyA9IG1vZHVsZS5hbGxvYyhuMzIqbjMyKjgpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX21SZWR1Y3RcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5wMzJcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibVwiLCBcImk2NFwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcImNcIiwgYy5pNjRfY29uc3QoMCkpKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwibVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIGkqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5wMzJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuMzI7IGorKykge1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiY1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbG9hZDMyX3UoYy5nZXRMb2NhbChcInRcIiksIChpK2opKjQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShjLmdldExvY2FsKFwiY1wiKSwgYy5pNjRfY29uc3QoMzIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkMzJfdShjLmkzMl9jb25zdChwcSksIGoqNCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGkraikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoY2FycmllcyksXG4gICAgICAgICAgICAgICAgICAgIGkqNCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoYy5nZXRMb2NhbChcImNcIiksIGMuaTY0X2NvbnN0KDMyKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9hZGRcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChjYXJyaWVzKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuMzIqNClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX211bFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMwXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFcIiwgXCJpNjRcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJucDMyXCIsIFwiaTY0XCIpO1xuXG5cbiAgICAgICAgZm9yIChsZXQgaT0wO2k8bjMyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJ4XCIraSwgXCJpNjRcIik7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieVwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkWSA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFlbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInlcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInlcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRZW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ5XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG5cbiAgICAgICAgZm9yIChsZXQgaz0wOyBrPG4zMioyLTE7IGsrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaT1NYXRoLm1heCgwLCBrLW4zMisxKTsgKGk8PWspJiYoaTxuMzIpOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBqPSBrLWk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bGlqKGksailcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgaWYgKGs+PW4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKGstbjMyKSo0LFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBbYzAsIGMxXSA9IFtjMSwgYzBdO1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl93cmFwX2k2NChjLmdldExvY2FsKGMxKSksXG4gICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGludFByZWZpeCtcIl9ndGVcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5kcm9wKGMuY2FsbChpbnRQcmVmaXgrXCJfc3ViXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJjMFwiLCBcImk2NFwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImMxXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzBfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYzFfb2xkXCIsIFwiaTY0XCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibnAzMlwiLCBcImk2NFwiKTtcblxuXG4gICAgICAgIGZvciAobGV0IGk9MDtpPG4zMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZExvY2FsKFwieFwiK2ksIFwiaTY0XCIpO1xuICAgICAgICAgICAgZi5hZGRMb2NhbChcIm1cIitpLCBcImk2NFwiKTtcbiAgICAgICAgICAgIGYuYWRkTG9jYWwoXCJxXCIraSwgXCJpNjRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IG5wMzIgPSBOdW1iZXIoMHgxMDAwMDAwMDBuIC0gbW9kSW52JDIocSwgMHgxMDAwMDAwMDBuKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJucDMyXCIsIGMuaTY0X2NvbnN0KG5wMzIpKSk7XG5cblxuICAgICAgICBjb25zdCBsb2FkWCA9IFtdO1xuICAgICAgICBjb25zdCBsb2FkUSA9IFtdO1xuICAgICAgICBmdW5jdGlvbiBtdWxpaihpLCBqKSB7XG4gICAgICAgICAgICBsZXQgWCxZO1xuICAgICAgICAgICAgaWYgKCFsb2FkWFtpXSkge1xuICAgICAgICAgICAgICAgIFggPSBjLnRlZUxvY2FsKFwieFwiK2ksIGMuaTY0X2xvYWQzMl91KCBjLmdldExvY2FsKFwieFwiKSwgaSo0KSk7XG4gICAgICAgICAgICAgICAgbG9hZFhbaV0gPSB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBYID0gYy5nZXRMb2NhbChcInhcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbG9hZFhbal0pIHtcbiAgICAgICAgICAgICAgICBZID0gYy50ZWVMb2NhbChcInhcIitqLCBjLmk2NF9sb2FkMzJfdSggYy5nZXRMb2NhbChcInhcIiksIGoqNCkpO1xuICAgICAgICAgICAgICAgIGxvYWRYW2pdID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGMuZ2V0TG9jYWwoXCJ4XCIraik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFgsIFkgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bHFtKGksIGopIHtcbiAgICAgICAgICAgIGxldCBRLE07XG4gICAgICAgICAgICBpZiAoIWxvYWRRW2ldKSB7XG4gICAgICAgICAgICAgICAgUSA9IGMudGVlTG9jYWwoXCJxXCIraSwgYy5pNjRfbG9hZDMyX3UoYy5pMzJfY29uc3QoMCksIHBxK2kqNCApKTtcbiAgICAgICAgICAgICAgICBsb2FkUVtpXSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIFEgPSBjLmdldExvY2FsKFwicVwiK2kpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgTSA9IGMuZ2V0TG9jYWwoXCJtXCIraik7XG5cbiAgICAgICAgICAgIHJldHVybiBjLmk2NF9tdWwoIFEsIE0gKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IGMwID0gXCJjMFwiO1xuICAgICAgICBsZXQgYzEgPSBcImMxXCI7XG4gICAgICAgIGxldCBjMF9vbGQgPSBcImMwX29sZFwiO1xuICAgICAgICBsZXQgYzFfb2xkID0gXCJjMV9vbGRcIjtcblxuICAgICAgICBmb3IgKGxldCBrPTA7IGs8bjMyKjItMTsgaysrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCwgYy5pNjRfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsIGMuaTY0X2NvbnN0KDApKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPU1hdGgubWF4KDAsIGstbjMyKzEpOyAoaTwoKGsrMSk+PjEpICkmJihpPG4zMik7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGo9IGstaTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsaWooaSxqKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGJ5IDJcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3NobChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKGslMiA9PSAwKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxpaihrPj4xLCBrPj4xKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgb2xkIGNhcnJ5XG5cbiAgICAgICAgICAgIGlmIChrPjApIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoYzAsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMHhGRkZGRkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMF9vbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMV9vbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGZvciAobGV0IGk9TWF0aC5tYXgoMSwgay1uMzIrMSk7IChpPD1rKSYmKGk8bjMyKTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgaj0gay1pO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWxxbShpLGopXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKGMxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChrPG4zMikge1xuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibVwiK2ssXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pNjRfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDB4RkZGRkZGRkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJucDMyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdChcIjB4RkZGRkZGRkZcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG5cblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9hbmQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgweEZGRkZGRkZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVscW0oMCxrKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChjMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTY0X2NvbnN0KDMyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChrPj1uMzIpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X3N0b3JlMzIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrLW4zMikqNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMwX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChjMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIGMxX29sZCxcbiAgICAgICAgICAgICAgICAgICAgYy5pNjRfc2hyX3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKGMwX29sZCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmk2NF9jb25zdCgzMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pNjRfc3RvcmUzMihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiclwiKSxcbiAgICAgICAgICAgICAgICBuMzIqNC00LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoYzBfb2xkKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfd3JhcF9pNjQoYy5nZXRMb2NhbChjMV9vbGQpKSxcbiAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4K1wiX2d0ZVwiLCBjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QocHEpICApLFxuICAgICAgICAgICAgICAgICAgICBjLmRyb3AoYy5jYWxsKGludFByZWZpeCtcIl9zdWJcIiwgYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZU9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4K1wiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb21Nb250Z29tZXJ5KCkge1xuXG4gICAgICAgIGNvbnN0IHBBdXgyID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwQXV4MikgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmkzMl9jb25zdChwQXV4MiArIG44KSApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXgrXCJfbVJlZHVjdFwiLCBjLmkzMl9jb25zdChwQXV4MiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChpbnRQcmVmaXggKyBcIl9pbnZlcnNlTW9kXCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChwcSksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmdldExvY2FsKFwiclwiKSkpO1xuICAgIH1cblxuICAgIC8vIENhbGN1bGF0ZSB2YXJpb3VzIHZhbHVzZSBuZWVkZWQgZm9yIHNxcnRcblxuXG4gICAgbGV0IF9ucXIgPSAybjtcbiAgICBpZiAoaXNQcmltZShxKSkge1xuICAgICAgICB3aGlsZSAobW9kUG93JDEoX25xciwgX2UsIHEpICE9PSBfbWludXNPbmUpIF9ucXIgPSBfbnFyICsgMW47XG4gICAgfVxuXG4gICAgbGV0IHMyID0gMDtcbiAgICBsZXQgX3QgPSBfbWludXNPbmU7XG5cbiAgICB3aGlsZSAoKCFpc09kZCQzKF90KSkmJihfdCAhPT0gMG4pKSB7XG4gICAgICAgIHMyKys7XG4gICAgICAgIF90ID0gX3QgPj4gMW47XG4gICAgfVxuICAgIGNvbnN0IHB0ID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90LCBuOCkpO1xuXG4gICAgY29uc3QgX25xclRvVCA9IG1vZFBvdyQxKF9ucXIsIF90LCBxKTtcbiAgICBjb25zdCBwTnFyVG9UID0gbW9kdWxlLmFsbG9jKHV0aWxzJDUuYmlnSW50MkJ5dGVzTEUoKF9ucXJUb1QgPDwgQmlnSW50KG42NCo2NCkpICUgcSwgbjgpKTtcblxuICAgIGNvbnN0IF90UGx1c09uZU92ZXIyID0gKF90ICsgMW4pID4+IDFuO1xuICAgIGNvbnN0IHB0UGx1c09uZU92ZXIyID0gbW9kdWxlLmFsbG9jKG44LCB1dGlscyQ1LmJpZ0ludDJCeXRlc0xFKF90UGx1c09uZU92ZXIyLCBuOCkpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXJ0KCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBPTkUgPSBjLmkzMl9jb25zdChwT25lKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgU1EgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgLy8gSWYgKG49PTApIHJldHVybiAwXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9jb25zdChzMikpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5pMzJfY29uc3QocE5xclRvVCksIEMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHQpLCBjLmkzMl9jb25zdChuOCksIFQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocHRQbHVzT25lT3ZlcjIpLCBjLmkzMl9jb25zdChuOCksIFIpLFxuXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLCBULCBPTkUpKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgVCwgU1EpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgU1EsIE9ORSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIFNRLCBTUSksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgQywgQiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfc3ViKGMuaTMyX3N1YiggYy5nZXRMb2NhbChcIm1cIiksIGMuZ2V0TG9jYWwoXCJpXCIpKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJqXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQiksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm1cIiwgYy5nZXRMb2NhbChcImlcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9zcXVhcmVcIiwgQiwgQyksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBULCBDLCBUKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIEIsIFIpLFxuXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIiwgUiksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBSLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgUiwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgT05FID0gYy5pMzJfY29uc3QocE9uZSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QocGUpLCBjLmkzMl9jb25zdChuOCksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfZXFcIiwgQVVYLCBPTkUpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZExvYWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2xvYWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHBBdXggPSBtb2R1bGUuYWxsb2MobjgpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChwQXV4KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5nZXRMb2NhbChcInNjYWxhclwiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2d0X3UoYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdChuOCkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBSMiksIFIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBSLCBBVVgpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibFwiLCBjLmkzMl9yZW1fdSggYy5nZXRMb2NhbChcInNjYWxhckxlblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICBjLmlmKGMuaTMyX2VxeihjLmdldExvY2FsKFwibFwiKSksIGMucmV0KFtdKSksXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfemVyb1wiLCBBVVgpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcShjLmdldExvY2FsKFwialwiKSwgYy5nZXRMb2NhbChcImxcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgIHBBdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoYy5nZXRMb2NhbChcInBcIikpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIFIpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocFIyKSwgUilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgUiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInJcIiksIEFVWCwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbG9hZFwiLCBjLmdldExvY2FsKFwic2NhbGFyXCIpLCBjLmdldExvY2FsKFwic2NhbGFyTGVuXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoaW50UHJlZml4ICsgXCJfZXFcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBPbmUpKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9jb3B5XCIsIHByZWZpeCtcIl9jb3B5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl96ZXJvXCIsIHByZWZpeCtcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihpbnRQcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oaW50UHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkTVJlZHVjdCgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZFNxdWFyZU9sZCgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuICAgIGJ1aWxkU2lnbigpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRMb2FkKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDIobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbiQxKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiLCBwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeVwiLCBuOCwgbjgpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE5lZ1wiLCBwcmVmaXggKyBcIl9uZWdcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaEFkZFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaFN1YlwiLCBwcmVmaXggKyBcIl9zdWJcIiwgbjgsIG44KTtcbiAgICBidWlsZEJhdGNoT3AobW9kdWxlLCBwcmVmaXggKyBcIl9iYXRjaE11bFwiLCBwcmVmaXggKyBcIl9tdWxcIiwgbjgsIG44KTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc05lZ2F0aXZlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc09uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc2lnblwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbVJlZHVjdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NxdWFyZU9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9sb2FkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEV4cCQyKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX2V4cFwiLFxuICAgICAgICBuOCxcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBpbnRQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIpO1xuICAgIGlmIChpc1ByaW1lKHEpKSB7XG4gICAgICAgIGJ1aWxkU3FydCgpO1xuICAgICAgICBidWlsZElzU3F1YXJlKCk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXJ0XCIpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgfVxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hGcm9tTW9udGdvbWVyeVwiKTtcbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRGMW0kMiA9YnVpbGRfZjFtO1xuY29uc3QgeyBiaXRMZW5ndGg6IGJpdExlbmd0aCQzIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9mMSA9IGZ1bmN0aW9uIGJ1aWxkRjEobW9kdWxlLCBfcSwgX3ByZWZpeCwgX2YxbVByZWZpeCwgX2ludFByZWZpeCkge1xuXG4gICAgY29uc3QgcSA9IEJpZ0ludChfcSk7XG4gICAgY29uc3QgbjY0ID0gTWF0aC5mbG9vcigoYml0TGVuZ3RoJDMocSAtIDFuKSAtIDEpLzY0KSArMTtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImYxXCI7XG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NFxuICAgIH07XG5cbiAgICBjb25zdCBpbnRQcmVmaXggPSBfaW50UHJlZml4IHx8IFwiaW50XCI7XG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMihtb2R1bGUsIHEsIF9mMW1QcmVmaXgsIGludFByZWZpeCk7XG5cblxuICAgIGNvbnN0IHBSMiA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBSMjtcbiAgICBjb25zdCBwcSA9ICAgICBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLnBxO1xuICAgIGNvbnN0IHBlUGx1c09uZSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucGVQbHVzT25lO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWwoKSB7XG4gICAgICAgIGNvbnN0IHBBdXgxID0gbW9kdWxlLmFsbG9jKG44KTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QocEF1eDEpKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBdXgxKSwgYy5pMzJfY29uc3QocFIyKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5nZXRMb2NhbChcInhcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEludmVyc2UoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ludmVyc2VcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGludFByZWZpeCArIFwiX2ludmVyc2VNb2RcIiwgYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KHBxKSwgYy5nZXRMb2NhbChcInJcIikpKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoaW50UHJlZml4ICsgXCJfZ3RlXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwZVBsdXNPbmUpIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEludmVyc2UoKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfYWRkXCIsIHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfc3ViXCIsIHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfbmVnXCIsIHByZWZpeCArIFwiX25lZ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHJlZml4K1wiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX3plcm9cIiwgcHJlZml4K1wiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGYxbVByZWZpeCArIFwiX29uZVwiLCBwcmVmaXgrXCJfb25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZjFtUHJlZml4ICsgXCJfZXFcIiwgcHJlZml4K1wiX2VxXCIpO1xuXG4gICAgcmV0dXJuIHByZWZpeDtcbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRFeHAkMSA9IGJ1aWxkX3RpbWVzc2NhbGFyO1xuY29uc3QgYnVpbGRCYXRjaEludmVyc2UkMSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcbmNvbnN0IHV0aWxzJDQgPSB1dGlscyQ2O1xuXG52YXIgYnVpbGRfZjJtID0gZnVuY3Rpb24gYnVpbGRGMm0obW9kdWxlLCBtdWxOb25SZXNpZHVlRm4sIHByZWZpeCwgZjFtUHJlZml4KSB7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgZjFuOCA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ubjY0Kjg7XG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2YxbVByZWZpeF0ucTtcblxuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqMlxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkVGltZXNTY2FsYXIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RpbWVzU2NhbGFyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInNjYWxhckxlblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFN1YigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3ViXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTmVnKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9uZWdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25qdWdhdGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2Nvbmp1Z2F0ZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZElzTmVnYXRpdmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzTmVnYXRpdmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgxKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBjb25zdCBBID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBEID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHkwLCBBKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnkwXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCB5MSwgQiksICAgICAgICAgICAgIC8vIEIgPSB4MSp5MVxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQyksICAgICAgICAgICAgIC8vIEMgPSB4MCArIHgxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHkwLCB5MSwgRCksICAgICAgICAgICAgIC8vIEQgPSB5MCArIHkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIEMpLCAgICAgICAgICAgICAgIC8vIEMgPSAoeDAgKyB4MSkqKHkwICsgeTEpID0geDAqeTAreDAqeTEreDEqeTAreDEqeTFcblxuICAgICAgICAgICAgLy8gIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWUpLCByMCksICAvLyByMCA9IG5yKih4MSp5MSlcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEIsIHIwKSwgIC8vIHIwID0gbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCByMCwgcjApLCAgICAgICAgICAgICAvLyByMCA9IHgwKnkwICsgbnIqKHgxKnkxKVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCByMSksICAgICAgICAgICAgIC8vIHIxID0geDAqeTAreDEqeTFcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgQywgcjEsIHIxKSAgICAgICAgICAgICAgLy8gcjEgPSB4MCp5MCt4MCp5MSt4MSp5MCt4MSp5MSAtIHgwKnkwK3gxKnkxID0geDAqeTEreDEqeTBcbiAgICAgICAgKTtcblxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXVsMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ5XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDAsIHksIHIwKSwgICAgICAgICAgICAgLy8gQSA9IHgwKnlcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgeDEsIHksIHIxKSwgICAgICAgICAgICAgLy8gQiA9IHgxKnlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFNxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfc3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IEFCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVBOQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFCUE5BQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBBQiA9IHgwKnkxXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHgwLCB4MSwgQUIpLFxuXG4gICAgICAgICAgICAvLyBBUEIgPSB4MCt5MVxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDEsIEFQQiksXG5cbiAgICAgICAgICAgIC8vIEFQQk4wID0geDAgKyBucip4MVxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgeDEsIEFQTkIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCB4MCwgQVBOQiwgQVBOQiksXG5cbiAgICAgICAgICAgIC8vIEFCUE5BQiA9IGFiICsgbnIqYWJcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIEFCLCBBQlBOQUIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBQlBOQUIsIEFCLCBBQlBOQUIpLFxuXG4gICAgICAgICAgICAvLyByMCA9IEFQQiAqIEFQTkIgLSBBQlBOQUJcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQVBCLCBBUE5CLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIHIwLCBBQlBOQUIsIHIwKSxcblxuICAgICAgICAgICAgLy8gcjEgPSBBQiArIEFCXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEFCLCBBQiwgcjEpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9mcm9tTW9udGdvbWVyeVwiLCB4MSwgcjEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9jb3B5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgxLCByMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgxKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX29uZVwiLCB4MCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZXFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MCwgeTApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDEsIHkxKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc1plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDEpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuXG4gICAgICAgIGNvbnN0IHQwID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDEsIHQxKSxcbiAgICAgICAgICAgIC8vIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZSksIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQxLCB0MiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHQwLCB0MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCB0MywgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIHQzLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCByMSwgcjEpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInNcIiAsIGMuY2FsbCggZjFtUHJlZml4ICsgXCJfc2lnblwiLCB4MSkpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmdldExvY2FsKFwic1wiKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnJldChjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNPbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzT25lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2lzT25lXCIsIHgwKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICAvLyBDaGVjayBoZXJlOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDEyLzY4NS5wZGZcbiAgICAvLyBBbGcgOWFkalxuICAgIGZ1bmN0aW9uIGJ1aWxkU3FydCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zcXJ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgLy8gQmlnSW50IGNhbid0IHRha2UgYHVuZGVmaW5lZGAgc28gd2UgdXNlIGB8fCAwYFxuICAgICAgICBjb25zdCBlMzQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkNC5iaWdJbnQyQnl0ZXNMRSgoQmlnSW50KHEgfHwgMCkgLSAzbikgLyA0biwgZjFuOCApKSk7XG4gICAgICAgIC8vIEJpZ0ludCBjYW4ndCB0YWtlIGB1bmRlZmluZWRgIHNvIHdlIHVzZSBgfHwgMGBcbiAgICAgICAgY29uc3QgZTEyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDQuYmlnSW50MkJ5dGVzTEUoKEJpZ0ludChxIHx8IDApIC0gMW4pIC8gMm4sIGYxbjggKSkpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjLmdldExvY2FsKFwiYVwiKTtcbiAgICAgICAgY29uc3QgYTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IGFscGhhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgcG4xID0gbW9kdWxlLmFsbG9jKGYxbjgqMik7XG4gICAgICAgIGNvbnN0IG4xID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFhID0gYy5pMzJfY29uc3QocG4xKTtcbiAgICAgICAgY29uc3QgbjFiID0gYy5pMzJfY29uc3QocG4xK2YxbjgpO1xuICAgICAgICBjb25zdCB4MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9vbmVcIiwgbjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBuMSwgbjEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2V4cFwiLCBhLCBlMzQsIGMuaTMyX2NvbnN0KGYxbjgpLCBhMSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGExID0gRi5wb3coYSwgRi5zcXJ0X2UzNCk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfc3F1YXJlXCIsIGExLCBhbHBoYSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsXCIsIGEsIGFscGhhLCBhbHBoYSksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGEwID0gRi5tdWwoRi5mcm9iZW5pdXMoMSwgYWxmYSksIGFsZmEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBhbHBoYSwgYTApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMCwgYWxwaGEsIGEwKSxcblxuICAgICAgICAgICAgLy8gaWYgKEYuZXEoYTAsIEYubmVnb25lKSkgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBjLmlmKGMuY2FsbChwcmVmaXggKyBcIl9lcVwiLGEwLG4xKSwgYy51bnJlYWNoYWJsZSgpICksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IHgwID0gRi5tdWwoYTEsIGEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhMSwgYSwgeDApLFxuXG4gICAgICAgICAgICAvLyBpZiAoRi5lcShhbGZhLCBGLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VxXCIsIGFscGhhLCBuMSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyB4ID0gRi5tdWwoeDAsIFtGLkYuemVybywgRi5GLm9uZV0pO1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfemVyb1wiLCBuMWEpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZjFtUHJlZml4ICsgXCJfb25lXCIsIG4xYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgbjEsIHgwLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zdCBiID0gRi5wb3coRi5hZGQoRi5vbmUsIGFsZmEpLCBGLnNxcnRfZTEyKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX29uZVwiLCBiKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2FkZFwiLCBiLCBhbHBoYSwgYiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYiwgZTEyLCBjLmkzMl9jb25zdChmMW44KSwgYiksXG5cbiAgICAgICAgICAgICAgICAgICAgLy8geCA9IEYubXVsKGIsIHgwKTtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBiLCB4MCwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNTcXVhcmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfaXNTcXVhcmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICAvLyBCaWdJbnQgY2FuJ3QgdGFrZSBgdW5kZWZpbmVkYCBzbyB3ZSB1c2UgYHx8IDBgXG4gICAgICAgIGNvbnN0IGUzNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQ0LmJpZ0ludDJCeXRlc0xFKChCaWdJbnQocSB8fCAwKSAtIDNuKSAvIDRuLCBmMW44ICkpKTtcblxuICAgICAgICBjb25zdCBhID0gYy5nZXRMb2NhbChcImFcIik7XG4gICAgICAgIGNvbnN0IGExID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgqMikpO1xuICAgICAgICBjb25zdCBhbHBoYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KjIpKTtcbiAgICAgICAgY29uc3QgYTAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCoyKSk7XG4gICAgICAgIGNvbnN0IHBuMSA9IG1vZHVsZS5hbGxvYyhmMW44KjIpO1xuICAgICAgICBjb25zdCBuMSA9IGMuaTMyX2NvbnN0KHBuMSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfb25lXCIsIG4xKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdcIiwgbjEsIG4xKSxcblxuICAgICAgICAgICAgLy8gY29uc3QgYTEgPSBGLnBvdyhhLCBGLnNxcnRfZTM0KTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9leHBcIiwgYSwgZTM0LCBjLmkzMl9jb25zdChmMW44KSwgYTEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMSA9IEYucG93KGEsIEYuc3FydF9lMzQpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3NxdWFyZVwiLCBhMSwgYWxwaGEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX211bFwiLCBhLCBhbHBoYSwgYWxwaGEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhMCA9IEYubXVsKEYuZnJvYmVuaXVzKDEsIGFsZmEpLCBhbGZhKTtcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgYWxwaGEsIGEwKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxcIiwgYTAsIGFscGhhLCBhMCksXG5cbiAgICAgICAgICAgIC8vIGlmIChGLmVxKGEwLCBGLm5lZ29uZSkpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGEwLFxuICAgICAgICAgICAgICAgICAgICBuMVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMCkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cblxuICAgIGJ1aWxkSXNaZXJvKCk7XG4gICAgYnVpbGRJc09uZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkT25lKCk7XG4gICAgYnVpbGRDb3B5KCk7XG4gICAgYnVpbGRNdWwoKTtcbiAgICBidWlsZE11bDEoKTtcbiAgICBidWlsZFNxdWFyZSgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGRTdWIoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkQ29uanVnYXRlKCk7XG4gICAgYnVpbGRUb01vbnRnb21lcnkoKTtcbiAgICBidWlsZEZyb21Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRFcSgpO1xuICAgIGJ1aWxkSW52ZXJzZSgpO1xuICAgIGJ1aWxkVGltZXNTY2FsYXIoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZElzTmVnYXRpdmUoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzT25lXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9vbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX211bFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zaWduXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25qdWdhdGVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlJDEobW9kdWxlLCBwcmVmaXgpO1xuICAgIGJ1aWxkRXhwJDEoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfZXhwXCIsXG4gICAgICAgIGYxbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3NxdWFyZVwiLFxuICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgIHByZWZpeCArIFwiX29uZVwiLFxuICAgICk7XG4gICAgYnVpbGRTcXJ0KCk7XG4gICAgYnVpbGRJc1NxdWFyZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2V4cFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoSW52ZXJzZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3FydFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IGJ1aWxkRXhwID0gYnVpbGRfdGltZXNzY2FsYXI7XG5jb25zdCBidWlsZEJhdGNoSW52ZXJzZSA9IGJ1aWxkX2JhdGNoaW52ZXJzZTtcblxudmFyIGJ1aWxkX2YzbSA9IGZ1bmN0aW9uIGJ1aWxkRjNtKG1vZHVsZSwgbXVsTm9uUmVzaWR1ZUZuLCBwcmVmaXgsIGYxbVByZWZpeCkge1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcblxuICAgIGNvbnN0IGYxbjggPSBtb2R1bGUubW9kdWxlc1tmMW1QcmVmaXhdLm42NCo4O1xuICAgIG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0gPSB7XG4gICAgICAgIG42NDogbW9kdWxlLm1vZHVsZXNbZjFtUHJlZml4XS5uNjQqM1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYWRkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCB5MCA9IGMuZ2V0TG9jYWwoXCJ5XCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieVwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MCwgeTAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIHgxLCB5MSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgeDIsIHkyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUaW1lc1NjYWxhcigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfdGltZXNTY2FsYXJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwic2NhbGFyTGVuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDAsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDEsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdGltZXNTY2FsYXJcIiwgeDIsIGMuZ2V0TG9jYWwoXCJzY2FsYXJcIiksIGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5cIiksIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zdWJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHkwID0gYy5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IHkxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ5XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3ViXCIsIHgwLCB5MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDEsIHkxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCB4MiwgeTIsIHIyKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE5lZygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX25lZ1wiLCB4MCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9uZWdcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbmVnXCIsIHgyLCByMiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc05lZ2F0aXZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc05lZ2F0aXZlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5jYWxsKGYxbVByZWZpeCtcIl9pc05lZ2F0aXZlXCIsIHgwKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuY2FsbChmMW1QcmVmaXgrXCJfaXNOZWdhdGl2ZVwiLCB4MikpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE11bCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfbXVsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGNkID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGEgPSBjZC5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IGIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieFwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgYyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ4XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IEEgPSBjZC5nZXRMb2NhbChcInlcIik7XG4gICAgICAgIGNvbnN0IEIgPSBjZC5pMzJfYWRkKGNkLmdldExvY2FsKFwieVwiKSwgY2QuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgQyA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJ5XCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gY2QuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGNkLmkzMl9hZGQoY2QuZ2V0TG9jYWwoXCJyXCIpLCBjZC5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgYUEgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYV9iID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFfQiA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhX2MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQV9DID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGJfYyA9IGNkLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBCX0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfYkIgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYUFfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYkJfY0MgPSBjZC5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgQVVYID0gY2QuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhLCBBLCBhQSksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiLCBCLCBiQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBjLCBDLCBjQyksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGEsIGIsIGFfYiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBBLCBCLCBBX0IpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYSwgYywgYV9jKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIEEsIEMsIEFfQyksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiLCBjLCBiX2MpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQl9DKSxcblxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgYUEsIGJCLCBhQV9iQiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhQSwgY0MsIGFBX2NDKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGJCLCBjQywgYkJfY0MpLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBiX2MsIEJfQywgcjApLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjAsIGJCX2NDLCByMCksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgcjAsIHIwKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIGFBLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX211bFwiLCBhX2IsIEFfQiwgcjEpLFxuICAgICAgICAgICAgY2QuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgcjEsIGFBX2JCLCByMSksXG4gICAgICAgICAgICBjZC5jYWxsKG11bE5vblJlc2lkdWVGbiwgY0MsIEFVWCksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCByMSwgQVVYLCByMSksXG5cbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIGFfYywgQV9DLCByMiksXG4gICAgICAgICAgICBjZC5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCByMiwgYUFfY0MsIHIyKSxcbiAgICAgICAgICAgIGNkLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCBiQiwgcjIpLFxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRTcXVhcmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3NxdWFyZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBhYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBiYyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHMzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgczQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEEsIHMwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgYWIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBhYiwgYWIsIHMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBBLCBCLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCBDLCBzMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHMyLCBzMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgQiwgQywgYmMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBiYywgYmMsIHMzKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3NxdWFyZVwiLCBDLCBzNCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHMzLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMwLCByMCwgcjApLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCBzNCwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMCwgczQsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9zdWJcIiwgczMsIHIyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfYWRkXCIsIHMyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBzMSwgcjIsIHIyKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3RvTW9udGdvbWVyeVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl90b01vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfdG9Nb250Z29tZXJ5XCIsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3RvTW9udGdvbWVyeVwiLCB4MiwgcjIpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGcm9tTW9udGdvbWVyeSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcjEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZnJvbU1vbnRnb21lcnlcIiwgeDIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29weVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuICAgICAgICBjb25zdCByMCA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCByMiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2NvcHlcIiwgeDEsIHIxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfY29weVwiLCB4MiwgcjIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfemVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl96ZXJvXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9vbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgPSBjLmdldExvY2FsKFwieFwiKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfb25lXCIsIHgwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfemVyb1wiLCB4MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3plcm9cIiwgeDIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRXEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcbiAgICAgICAgY29uc3QgeTAgPSBjLmdldExvY2FsKFwieVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KGYxbjgpKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInlcIiksIGMuaTMyX2NvbnN0KDIqZjFuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfZXFcIiwgeDAsIHkwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MSwgeTEpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9lcVwiLCB4MiwgeTIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJc1plcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2lzWmVyb1wiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pc1plcm9cIiwgeDIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbnZlcnNlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pbnZlcnNlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjFuOCkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMipmMW44KSk7XG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0MyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCBjMCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IGMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxbjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFuOCkpO1xuICAgICAgICBjb25zdCB0NiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMW44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zcXVhcmVcIiwgeDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfc3F1YXJlXCIsIHgxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3NxdWFyZVwiLCB4MiwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDAsIHgxLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB4MCwgeDIsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgxLCB4MiwgdDUpLFxuXG4gICAgICAgICAgICBjLmNhbGwobXVsTm9uUmVzaWR1ZUZuLCB0NSwgYzApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDAsIGMwLCBjMCksXG5cbiAgICAgICAgICAgIGMuY2FsbChtdWxOb25SZXNpZHVlRm4sIHQyLCBjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX3N1YlwiLCBjMSwgdDMsIGMxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgdDEsIHQ0LCBjMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgyLCBjMSwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgeDEsIGMyLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9hZGRcIiwgdDYsIEFVWCwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKG11bE5vblJlc2lkdWVGbiwgdDYsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHgwLCBjMCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfYWRkXCIsIEFVWCwgdDYsIHQ2KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9pbnZlcnNlXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXgrXCJfbXVsXCIsIHQ2LCBjMCwgcjApLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9tdWxcIiwgdDYsIGMxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX211bFwiLCB0NiwgYzIsIHIyKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTaWduKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9zaWduXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYxbjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiICwgYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgyKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuZ2V0TG9jYWwoXCJzXCIpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIgLCBjLmNhbGwoIGYxbVByZWZpeCArIFwiX3NpZ25cIiwgeDEpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgYy5yZXQoYy5nZXRMb2NhbChcInNcIikpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5yZXQoYy5jYWxsKCBmMW1QcmVmaXggKyBcIl9zaWduXCIsIHgwKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZElzT25lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pc09uZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMW44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9pc09uZVwiLCB4MCksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIHgyKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkSXNPbmUoKTtcbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZE9uZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkTXVsKCk7XG4gICAgYnVpbGRTcXVhcmUoKTtcbiAgICBidWlsZEFkZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGROZWcoKTtcbiAgICBidWlsZFNpZ24oKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGRJbnZlcnNlKCk7XG4gICAgYnVpbGRUaW1lc1NjYWxhcigpO1xuICAgIGJ1aWxkSXNOZWdhdGl2ZSgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfaXNPbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX29uZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3NpZ25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5XCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pbnZlcnNlXCIpO1xuICAgIGJ1aWxkQmF0Y2hJbnZlcnNlKG1vZHVsZSwgcHJlZml4KTtcbiAgICBidWlsZEV4cChcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl9leHBcIixcbiAgICAgICAgZjFuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3F1YXJlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfb25lXCJcbiAgICApO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9leHBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEludmVyc2VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzTmVnYXRpdmVcIik7XG5cbiAgICByZXR1cm4gcHJlZml4O1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG52YXIgYnVpbGRfdGltZXNzY2FsYXJuYWYgPSBmdW5jdGlvbiBidWlsZFRpbWVzU2NhbGFyTkFGKG1vZHVsZSwgZm5OYW1lLCBlbGVtZW50TGVuLCBvcEFCLCBvcEFBLCBvcEFtQiwgb3BDb3B5LCBvcEluaXQpIHtcblxuICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICBmLmFkZFBhcmFtKFwiYmFzZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwic2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJMZW5ndGhcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm9sZDBcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcIm5iaXRzXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJsYXN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJjdXJcIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcImNhcnJ5XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwXCIsIFwiaTMyXCIpO1xuXG4gICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhlbGVtZW50TGVuKSk7XG5cbiAgICBmdW5jdGlvbiBnZXRCaXQoSURYKSB7XG4gICAgICAgIHJldHVybiBjLmkzMl9hbmQoXG4gICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic2NhbGFyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRFgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDMpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGRkZGRkZDKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgICAgIElEWCxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHgxRilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwdXNoQml0KGIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgZi5hZGRDb2RlKFxuICAgICAgICBjLmlmKFxuICAgICAgICAgICAgYy5pMzJfZXF6KGMuZ2V0TG9jYWwoXCJzY2FsYXJMZW5ndGhcIikpLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcIm5iaXRzXCIsIGMuaTMyX3NobChjLmdldExvY2FsKFwic2NhbGFyTGVuZ3RoXCIpLCBjLmkzMl9jb25zdCgzKSkpLFxuICAgICAgICBjLnNldExvY2FsKFwib2xkMFwiLCBjLmkzMl9sb2FkKGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuZ2V0TG9jYWwoXCJvbGQwXCIpKSxcbiAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvbGQwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMzIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuYml0c1wiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRkZGRkZGOClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMSkpLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJsYXN0XCIsZ2V0Qml0KGMuaTMyX2NvbnN0KDApKSksXG4gICAgICAgIGMuc2V0TG9jYWwoXCJjYXJyeVwiLGMuaTMyX2NvbnN0KDApKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfZXEoIGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmdldExvY2FsKFwibmJpdHNcIikpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImN1clwiLCBnZXRCaXQoYy5nZXRMb2NhbChcImlcIikpKSxcbiAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJsYXN0XCIpLFxuICAgICAgICAgICAgICAgIGMuaWYoIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDI1NSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoYy5nZXRMb2NhbChcImNhcnJ5XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKCBjLmdldExvY2FsKFwiY3VyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwibGFzdFwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImNhcnJ5XCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDApXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihjLmdldExvY2FsKFwiY2FycnlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcImxhc3RcIiwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJjYXJyeVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJsYXN0XCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwiY2FycnlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMClcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pZiggYy5nZXRMb2NhbChcImxhc3RcIiksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMjU1KSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgwKSxcbiAgICAgICAgICAgICAgICAgICAgLi4ucHVzaEJpdCgxKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5wdXNoQml0KDEpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKGMuZ2V0TG9jYWwoXCJjYXJyeVwiKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMCksXG4gICAgICAgICAgICAgICAgICAgIC4uLnB1c2hCaXQoMSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICApLFxuXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwicFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAvLyBwIGFscmVhZHkgcG9pbnRzIHRvIHRoZSBsYXN0IGJpdFxuXG4gICAgICAgIGMuY2FsbChvcENvcHksIGMuZ2V0TG9jYWwoXCJiYXNlXCIpLCBhdXgpLFxuXG4gICAgICAgIGMuY2FsbChvcEluaXQsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICBjLmNhbGwob3BBQSwgYy5nZXRMb2NhbChcInJcIiksIGMuZ2V0TG9jYWwoXCJyXCIpKSxcblxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiY3VyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjdXJcIiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcImN1clwiKSwgYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwob3BBQiwgIGMuZ2V0TG9jYWwoXCJyXCIpLCBhdXgsIGMuZ2V0TG9jYWwoXCJyXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKG9wQW1CLCBjLmdldExvY2FsKFwiclwiKSwgYXV4LCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcSggYy5nZXRMb2NhbChcIm9sZDBcIiksIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG5cbiAgICAgICAgKSksXG5cbiAgICAgICAgYy5pMzJfc3RvcmUoIGMuaTMyX2NvbnN0KDApLCBjLmdldExvY2FsKFwib2xkMFwiKSlcblxuICAgICk7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX211bHRpZXhwID0gZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChtb2R1bGUsIHByZWZpeCwgZm5OYW1lLCBvcEFkZCwgbjhiKSB7XG5cbiAgICBjb25zdCBuNjRnID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgZnVuY3Rpb24gYnVpbGRHZXRDaHVuaygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUgKyBcIl9nZXRDaHVua1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBTY2FsYXJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJ5dGVzIG9mIHRoZSBzY2FsYXJcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gQml0IHRvIHN0YXJ0IGV4dHJhY3RcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIENodW5rIHNpemUgaW4gYml0c1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1RvRW5kXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibWFza1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImJpdHNUb0VuZFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic3RhcnRCaXRcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9ndF9zKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1RvRW5kXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzVG9FbmRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1hc2tcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAwICAgLy8gYWxpZ24gdG8gYnl0ZS5cbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg3KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibWFza1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTXV0aWV4cENodW5rKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSArIFwiX2NodW5rXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInN0YXJ0Qml0XCIsIFwiaTMyXCIpOyAgLy8gYml0IHdoZXJlIGl0IHN0YXJ0cyB0aGUgY2h1bmtcbiAgICAgICAgZi5hZGRQYXJhbShcImNodW5rU2l6ZVwiLCBcImkzMlwiKTsgIC8vIGJpdCB3aGVyZSBpdCBzdGFydHMgdGhlIGNodW5rXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5DaHVua3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImVuZFNjYWxhclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0QmFzZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiblRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFRhYmxlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicElkeFRhYmxlXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcIm5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgLy8gQWxsb2NhdGUgbWVtb3J5XG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuVGFibGVcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVGFibGVcIiwgYy5pMzJfbG9hZCggYy5pMzJfY29uc3QoMCkgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBSZXNldCBUYWJsZVxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuVGFibGVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX3plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICAvLyBEaXN0cmlidXRlIGVsZW1lbnRzXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuZ2V0TG9jYWwoXCJwQmFzZXNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0U2NhbGFyXCIsIGMuZ2V0TG9jYWwoXCJwU2NhbGFyc1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiZW5kU2NhbGFyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJlbmRTY2FsYXJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZm5OYW1lICsgXCJfZ2V0Q2h1bmtcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInN0YXJ0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHhcIiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJwSWR4VGFibGVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcEFkZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicElkeFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJhc2VcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJZHhUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRTY2FsYXJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdFNjYWxhclwiKSwgYy5nZXRMb2NhbChcInNjYWxhclNpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRCYXNlXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRCYXNlXCIpLCBjLmkzMl9jb25zdChuOGIpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLCBjLmdldExvY2FsKFwicFRhYmxlXCIpLCBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBUYWJsZVwiKVxuICAgICAgICAgICAgKVxuXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWx0aWV4cCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJhc2VzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFNjYWxhcnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJzY2FsYXJTaXplXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIHBvaW50c1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTsgIC8vIE51bWJlciBvZiBwb2ludHNcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY2h1bmtTaXplXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibkNodW5rc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0U2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZW5kU2NhbGFyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCYXNlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRCaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5UYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBUYWJsZVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJZHhUYWJsZVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBjb25zdCBwVFNpemVzID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIDE3LCAxNywgMTcsIDE3LCAgIDE3LCAxNywgMTcsIDE3LFxuICAgICAgICAgICAgMTcsIDE3LCAxNiwgMTYsICAgMTUsIDE0LCAxMywgMTMsXG4gICAgICAgICAgICAxMiwgMTEsIDEwLCAgOSwgICAgOCwgIDcsICA3LCAgNixcbiAgICAgICAgICAgIDUgLCAgNCwgIDMsICAyLCAgICAxLCAgMSwgIDEsICAxXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmdldExvY2FsKFwiblwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImNodW5rU2l6ZVwiLCBjLmkzMl9sb2FkOF91KCBjLmkzMl9jbHooYy5nZXRMb2NhbChcIm5cIikpLCAgcFRTaXplcyApKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuQ2h1bmtzXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9kaXZfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgzKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAvLyBBbGxvY2F0ZSBtZW1vcnlcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0Qml0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9zdWIoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkNodW5rc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgLy8gRG91YmxlIG5DaHVuayB0aW1lc1xuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwclwiKSkpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwialwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImNodW5rU2l6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInByXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9jaHVua1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJhc2VzXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNjYWxhcnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzY2FsYXJTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Qml0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY2h1bmtTaXplXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXhcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0Qml0XCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaXRCaXRcIiksIGMuZ2V0TG9jYWwoXCJjaHVua1NpemVcIikpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmVkdWNlVGFibGUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lICsgXCJfcmVkdWNlVGFibGVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwVGFibGVcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpOyAgLy8gTnVtYmVyIG9mIGJpdHMgb2YgdGhlIHRhYmxlXG4gICAgICAgIGYuYWRkTG9jYWwoXCJoYWxmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXQyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEFjY1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaGFsZlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3NobChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiaXQyXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFRhYmxlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaGFsZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEFjY1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXQxXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFjY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBY2NcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdDFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdDFcIiksIGMuaTMyX2NvbnN0KG44ZykpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXQyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXQyXCIpLCBjLmkzMl9jb25zdChuOGcpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmbk5hbWUgKyBcIl9yZWR1Y2VUYWJsZVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVGFibGVcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeihjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVcIiwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwQWNjXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRcIiwgYy5nZXRMb2NhbChcInBUYWJsZVwiKSwgYy5nZXRMb2NhbChcInBBY2NcIiksIGMuZ2V0TG9jYWwoXCJwVGFibGVcIikpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRHZXRDaHVuaygpO1xuICAgIGJ1aWxkUmVkdWNlVGFibGUoKTtcbiAgICBidWlsZE11dGlleHBDaHVuaygpO1xuICAgIGJ1aWxkTXVsdGlleHAoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUgK1wiX2NodW5rXCIpO1xuXG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgYnVpbGRUaW1lc1NjYWxhck5BRiA9IGJ1aWxkX3RpbWVzc2NhbGFybmFmO1xuLy9jb25zdCBidWlsZFRpbWVzU2NhbGFyID0gcmVxdWlyZShcIi4vYnVpbGRfdGltZXNzY2FsYXJcIik7XG5jb25zdCBidWlsZEJhdGNoQ29udmVydGlvbiA9IGJ1aWxkX2JhdGNoY29udmVydGlvbjtcbmNvbnN0IGJ1aWxkTXVsdGlleHAkMSA9IGJ1aWxkX211bHRpZXhwO1xuXG52YXIgYnVpbGRfY3VydmVfamFjb2JpYW5fYTAgPSBmdW5jdGlvbiBidWlsZEN1cnZlKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCwgcEIpIHtcblxuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG4gICAgaWYgKG1vZHVsZS5tb2R1bGVzW3ByZWZpeF0pIHJldHVybiBwcmVmaXg7ICAvLyBhbHJlYWR5IGJ1aWxkZWRcbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCozXG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgqMilcbiAgICAgICAgICAgIClcbiAgICAgICAgKSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGJ1aWxkSXNaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2lzWmVyb1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9pc1plcm9cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb3B5KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2NvcHlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBkXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG42NCozOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmk2NF9zdG9yZShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBkXCIpLFxuICAgICAgICAgICAgICAgICAgICBpKjgsXG4gICAgICAgICAgICAgICAgICAgIGMuaTY0X2xvYWQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBpKjhcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ29weUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwZFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuNjQqMjsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5pNjRfc3RvcmUoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgaSo4LFxuICAgICAgICAgICAgICAgICAgICBjLmk2NF9sb2FkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgaSo4XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkWmVybygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfb25lXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KjIpXG4gICAgICAgICAgICApXG4gICAgICAgICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRaZXJvQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3plcm9cIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl96ZXJvXCIsXG4gICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgKVxuICAgICAgICApKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEVxKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoyXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MiA9IGMuZ2V0TG9jYWwoXCJ6MlwiKTtcblxuICAgICAgICBjb25zdCBaMVoxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyWjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgejEpLFxuICAgICAgICAgICAgICAgIGMucmV0KGMuY2FsbChwcmVmaXggKyBcIl9lcU1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInAxXCIpKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFNaXhlZFwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwMlwiKSkpXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHoyLCBaMloyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4MSwgWjJaMiwgVTEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MiwgWjJaMiwgWjJfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBaMl9jdWJlZCwgUzEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIFUxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgUzEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRFcU1peGVkKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHoxID0gYy5nZXRMb2NhbChcInoxXCIpO1xuICAgICAgICBjb25zdCB4MiA9IGMuZ2V0TG9jYWwoXCJwMlwiKTtcbiAgICAgICAgY29uc3QgeTIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjFfY3ViZWQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDJcIikpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBjLnJldChjLmNhbGwocHJlZml4ICsgXCJfZXFBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicDJcIikpKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkyLCBaMV9jdWJlZCwgUzIpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHgxLCBVMiksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeTEsIFMyKSxcbiAgICAgICAgICAgICAgICAgICAgYy5yZXQoYy5pMzJfY29uc3QoMSkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRG91YmxlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBCID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBlaWdodEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNPbmVcIiwgeiksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChjLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCBCKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBCLCBDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHgsIEIsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIEQsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEEsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIEQpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgRSwgQSwgRSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgRSwgRiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCB6LCBHKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEQsIEQsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBGLCB4MywgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgQywgQywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBlaWdodEMsIGVpZ2h0QywgZWlnaHRDKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIEQsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIEUsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRDLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBHLCBHLCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZERvdWJsZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFhYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFlZWVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBNID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IGVpZ2h0WVlZWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAvLyBYWCA9IFgxXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB4LCBYWCksXG5cbiAgICAgICAgICAgIC8vIFlZID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHksIFlZKSxcblxuICAgICAgICAgICAgLy8gWVlZWSA9IFlZXjJcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBZWSwgWVlZWSksXG5cbiAgICAgICAgICAgIC8vIFMgPSAyKigoWDErWVkpXjItWFgtWVlZWSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB4LCBZWSwgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgUywgUyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUywgWFgsIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIFlZWVksIFMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMsIFMsIFMpLFxuXG4gICAgICAgICAgICAvLyBNID0gMypYWCthICAoSGVyYSBhPTApXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgWFgsIFhYLCBNKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBNLCBYWCwgTSksXG5cbiAgICAgICAgICAgIC8vIFozID0gMipZMVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHksIHksIHozKSxcblxuICAgICAgICAgICAgLy8gVCA9IE1eMi0yKlNcbiAgICAgICAgICAgIC8vIFgzID0gVFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIE0sIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgUywgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBTLCB4MyksXG5cbiAgICAgICAgICAgIC8vIFkzID0gTSooUy1UKS04KllZWVlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBZWVlZLCBZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIGVpZ2h0WVlZWSwgZWlnaHRZWVlZLCBlaWdodFlZWVkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFMsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIE0sIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgZWlnaHRZWVlZLCB5MyksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEVxQWZmaW5lKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2VxQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnJldChjLmkzMl9hbmQoXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2VxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInAyXCIpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZXFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRUb01vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX3RvTW9udGdvbWVyeVwiLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInAxXCIpLFxuICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICkpO1xuICAgICAgICBmb3IgKGxldCBpPTE7IGk8MzsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl90b01vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicDFcIiksXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgKSk7XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTwyOyBpKyspIHtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoXG4gICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl90b01vbnRnb21lcnlcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChpKm44KSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoaSpuOCkpXG4gICAgICAgICAgICApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnkoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDM7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRnJvbU1vbnRnb21lcnlBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfZnJvbU1vbnRnb21lcnlcIixcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwMVwiKSxcbiAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICApKTtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPDI7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoaSpuOCkpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KGkqbjgpKVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEFkZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInoxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuc2V0TG9jYWwoXCJ6MlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAyXCIpLCBjLmkzMl9jb25zdChuOCoyKSkpKTtcbiAgICAgICAgY29uc3QgejIgPSBjLmdldExvY2FsKFwiejJcIik7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IFoxWjEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjJaMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX1MxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgUzFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb1wiLCBjLmdldExvY2FsKFwicDJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9pc09uZVwiLCB6MSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgeDIsIHgxLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoyKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCB4MSwgeDIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB6MSwgWjFaMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejIsIFoyWjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBaMloyLCBVMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDIsIFoxWjEsIFUyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB6MSwgWjFaMSwgWjFfY3ViZWQpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHoyLCBaMloyLCBaMl9jdWJlZCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIFoyX2N1YmVkLCBTMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTIsIFoxX2N1YmVkLCBTMiksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgVTEsIFUyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCBTMSwgUzIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFUyLCBVMSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgUzIsIFMxLCBTMl9taW51c19TMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSCwgSCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSSwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgSCwgSSwgSiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgUzJfbWludXNfUzEsIFMyX21pbnVzX1MxLCByKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBVMSwgSSwgViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgciwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFYsIFYsIFYyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHIyLCBKLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeDMsIFYyLCB4MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBTMSwgSiwgUzFfSjIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMxX0oyLCBTMV9KMiwgUzFfSjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgViwgeDMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MywgciwgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHkzLCBTMV9KMiwgeTMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgejEsIHoyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBaMloyLCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejMsIEgsIHozKSxcbiAgICAgICAgKTtcblxuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRNaXhlZCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZE1peGVkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiejFcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MSA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeTEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBmLmFkZENvZGUoYy5zZXRMb2NhbChcInoxXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KjIpKSkpO1xuICAgICAgICBjb25zdCB6MSA9IGMuZ2V0TG9jYWwoXCJ6MVwiKTtcbiAgICAgICAgY29uc3QgeDIgPSBjLmdldExvY2FsKFwicDJcIik7XG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgY29uc3QgWjFaMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBVMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMV9jdWJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBTMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEhIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFMyX21pbnVzX3kxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCByID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgVjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTFfSjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwicDFcIiksIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2lzT25lXCIsIHoxKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgeDEsIHgyLCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejEsIFoxWjEpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgyLCBaMVoxLCBVMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgejEsIFoxWjEsIFoxX2N1YmVkKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5MiwgWjFfY3ViZWQsIFMyKSxcblxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB4MSwgVTIpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkxLCBTMiksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9kb3VibGVBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgVTIsIHgxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBTMiwgeTEsIFMyX21pbnVzX3kxKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBILCBISCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSEggLCBISCwgSSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgSSAsIEksIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIEgsIEksIEopLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIFMyX21pbnVzX3kxLCBTMl9taW51c195MSwgciksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeDEsIEksIFYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIHIsIHIyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBWLCBWLCBWMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCByMiwgSiwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgzLCBWMiwgeDMpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTEsIEosIHkxX0oyKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5MV9KMiwgeTFfSjIsIHkxX0oyKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIFYsIHgzLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeTMsIHIsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB5MywgeTFfSjIsIHkzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHoxLCBILCB6MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgejMsIHozKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB6MywgWjFaMSwgejMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHozLCBISCwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRBZGRBZmZpbmUoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9hZGRBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJ6MVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHgxID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5MSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiejFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpKSk7XG4gICAgICAgIGNvbnN0IHgyID0gYy5nZXRMb2NhbChcInAyXCIpO1xuICAgICAgICBjb25zdCB5MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuXG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgeTJfbWludXNfeTEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgcjIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgViA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBWMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCB5MV9KMiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicDFcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSAsIGMuaTMyX2NvbnN0KG44KjIpKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9jb3B5QWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfb25lXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIikgLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfZXFcIiwgeDEsIHgyKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9lcVwiLCB5MSwgeTIpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3ViXCIsIHgyLCB4MSwgSCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTIsIHkxLCB5Ml9taW51c195MSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgSCwgSEgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEhIICwgSEgsIEkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIEkgLCBJLCBJKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBILCBJLCBKKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCB5Ml9taW51c195MSwgeTJfbWludXNfeTEsIHIpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHgxLCBJLCBWKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCByLCByMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgViwgViwgVjIpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgcjIsIEosIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCB4MywgVjIsIHgzKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkxLCBKLCB5MV9KMiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeTFfSjIsIHkxX0oyLCB5MV9KMiksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3N1YlwiLCBWLCB4MywgeTMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHkzLCByLCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zdWJcIiwgeTMsIHkxX0oyLCB5MyksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2FkZFwiLCBILCBILCB6MyksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWcoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX25lZ1wiLCB5LCB5MyksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHosIHozKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGROZWdBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeCwgeDMpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHksIHkzKSxcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1YlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCozKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX25lZ1wiLCBjLmdldExvY2FsKFwicDJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfYWRkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkU3ViTWl4ZWQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViTWl4ZWRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgqMykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9uZWdBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAyXCIpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2FkZE1peGVkXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSwgQVVYLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRTdWJBZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfc3ViQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KjMpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbmVnQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMlwiKSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9hZGRBZmZpbmVcIiwgYy5nZXRMb2NhbChcInAxXCIpLCBBVVgsIGMuZ2V0TG9jYWwoXCJwclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gVGhpcyBzZXRzIFogdG8gT25lXG4gICAgZnVuY3Rpb24gYnVpbGROb3JtYWxpemUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbm9ybWFsaXplXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHggPSBjLmdldExvY2FsKFwicDFcIik7XG4gICAgICAgIGNvbnN0IHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgqMikpO1xuICAgICAgICBjb25zdCB4MyA9IGMuZ2V0TG9jYWwoXCJwclwiKTtcbiAgICAgICAgY29uc3QgeTMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuICAgICAgICBjb25zdCB6MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KjIpKTtcblxuXG4gICAgICAgIGNvbnN0IFpfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IFoyX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaM19pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9cIiwgYy5nZXRMb2NhbChcInAxXCIpKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicHJcIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaW52ZXJzZVwiLCB6LCBaX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCBaX2ludiwgWjJfaW52KSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIFpfaW52LCBaMl9pbnYsIFozX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCBaMl9pbnYsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbXVsXCIsIHksIFozX2ludiwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9vbmVcIiwgejMpLFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIC8vIERvZXMgbm90IHNldCBaLlxuICAgIGZ1bmN0aW9uIGJ1aWxkVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KG44KSk7XG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInAxXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5nZXRMb2NhbChcInByXCIpO1xuICAgICAgICBjb25zdCB5MyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44KSk7XG5cblxuICAgICAgICBjb25zdCBaX2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuICAgICAgICBjb25zdCBaMl9pbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcbiAgICAgICAgY29uc3QgWjNfaW52ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIHgzKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCB5MyksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2ludmVyc2VcIiwgeiwgWl9pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgWl9pbnYsIFoyX2ludiksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBaX2ludiwgWjJfaW52LCBaM19pbnYpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9tdWxcIiwgeCwgWjJfaW52LCB4MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB5LCBaM19pbnYsIHkzKSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFRvSmFjb2JpYW4oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfdG9KYWNvYmlhblwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInAxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInAxXCIpO1xuICAgICAgICBjb25zdCB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgpKTtcbiAgICAgICAgY29uc3QgejMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwMVwiKSksXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX29uZVwiLCB6MyksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgeSwgeTMpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4RmllbGQgKyBcIl9jb3B5XCIsIHgsIHgzKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEJhdGNoVG9BZmZpbmUoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0SW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEF1eFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0T3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHRtcCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQXV4XCIsIGMuaTMyX2xvYWQoIGMuaTMyX2NvbnN0KDApICkpLFxuICAgICAgICAgICAgYy5pMzJfc3RvcmUoXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMCksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKGMuZ2V0TG9jYWwoXCJuXCIpLCBjLmkzMl9jb25zdChuOCkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYmF0Y2hJbnZlcnNlXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwSW5cIiksIGMuaTMyX2NvbnN0KG44KjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCozKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEluXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0QXV4XCIsIGMuZ2V0TG9jYWwoXCJwQXV4XCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0T3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSlcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KG44KSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCtcIl9zcXVhcmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRBdXhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0QXV4XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRJblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkK1wiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdEF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QobjgpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0SW5cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdEluXCIpLCBjLmkzMl9jb25zdChuOCozKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdE91dFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmkzMl9jb25zdChuOCoyKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdEF1eFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0QXV4XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZShcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgwKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEF1eFwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBwcml2YXRlIGFuZCBkb2VzIG5vdCBhbGxvdyB0byBPVkVSTEFQIGJ1ZmZlcnMuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlQnl0ZXMoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRPdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdEluXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcIml0T3V0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJpdEluXCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJblwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoMSwgYy5pMzJfbHRfcyggYy5nZXRMb2NhbChcIml0T3V0XCIpLCBjLmdldExvY2FsKFwicE91dFwiKSApKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zdG9yZTgoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwiaXRJblwiKSksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRPdXRcIiwgYy5pMzJfc3ViKGMuZ2V0TG9jYWwoXCJpdE91dFwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaXRJblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0SW5cIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZExFTXRvQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b0NcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIikpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfemVyb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuaTMyX3N0b3JlOChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5yZXQoW10pXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXAsIGMuaTMyX2NvbnN0KG44KSwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc2lnblwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KC0xKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pMzJfc3RvcmU4KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicE91dFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkOF91KGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4ODApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTEVNdG9VKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvVVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBPdXRcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXAgPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWCA9IGMuaTMyX2NvbnN0KHBUbXApO1xuICAgICAgICBjb25zdCB0bXBZID0gYy5pMzJfY29uc3QocFRtcCArIG44KTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pc1plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBJblwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfemVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMucmV0KFtdKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9mcm9tTW9udGdvbWVyeUFmZmluZVwiLCBjLmdldExvY2FsKFwicEluXCIpLCB0bXApLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBYLCBjLmkzMl9jb25zdChuOCksIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIHRtcFksIGMuaTMyX2NvbnN0KG44KSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFV0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9VdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgcFRtcCA9IG1vZHVsZS5hbGxvYyhuOCoyKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFggPSBjLmkzMl9jb25zdChwVG1wKTtcbiAgICAgICAgY29uc3QgdG1wWSA9IGMuaTMyX2NvbnN0KHBUbXAgKyBuOCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmkzMl9hbmQoYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSwgYy5pMzJfY29uc3QoMHg0MCkpLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlQnl0ZXNcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgYy5pMzJfY29uc3QobjgpLCB0bXBYKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fcmV2ZXJzZUJ5dGVzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpLCBjLmkzMl9jb25zdChuOCksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeUFmZmluZVwiLCB0bXAsICBjLmdldExvY2FsKFwicE91dFwiKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEN0b0xFTSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZmlyc3RCeXRlXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiZ3JlYXRlc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwVG1wID0gbW9kdWxlLmFsbG9jKG44KjIpO1xuICAgICAgICBjb25zdCB0bXBYID0gYy5pMzJfY29uc3QocFRtcCk7XG4gICAgICAgIGNvbnN0IHRtcFkgPSBjLmkzMl9jb25zdChwVG1wICsgbjgpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiwgYy5pMzJfbG9hZDhfdShjLmdldExvY2FsKFwicEluXCIpKSksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZpcnN0Qnl0ZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHg0MClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKHByZWZpeCArIFwiX3plcm9BZmZpbmVcIiwgYy5nZXRMb2NhbChcInBPdXRcIikpLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLnJldChbXSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImdyZWF0ZXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZmlyc3RCeXRlXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweDgwKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcInBJblwiKSwgdG1wWSksXG4gICAgICAgICAgICBjLmkzMl9zdG9yZTgodG1wWSwgYy5pMzJfYW5kKGMuZ2V0TG9jYWwoXCJmaXJzdEJ5dGVcIiksIGMuaTMyX2NvbnN0KDB4M0YpKSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX3JldmVyc2VCeXRlc1wiLCB0bXBZLCBjLmkzMl9jb25zdChuOCksIHRtcFgpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfdG9Nb250Z29tZXJ5XCIsIHRtcFgsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfc3F1YXJlXCIsIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCB0bXBZKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCBjLmdldExvY2FsKFwicE91dFwiKSwgdG1wWSwgIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfYWRkXCIsIHRtcFksIGMuaTMyX2NvbnN0KHBCKSwgIHRtcFkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXJ0XCIsIHRtcFksIHRtcFkpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfbmVnXCIsIHRtcFksIHRtcFgpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zaWduXCIsIHRtcFkpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgtMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJncmVhdGVzdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImdyZWF0ZXN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9uZWdcIiwgdG1wWSwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwT3V0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeEZpZWxkICsgXCJfY29weVwiLCB0bXBZLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBPdXRcIiksIGMuaTMyX2NvbnN0KG44KSkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIClcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEluXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInBJblwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEluXCIpLCBjLmkzMl9jb25zdChuOCkpO1xuXG4gICAgICAgIGNvbnN0IHkyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG4gICAgICAgIGNvbnN0IHgzYiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3NxdWFyZVwiLCB5LCB5MiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9zcXVhcmVcIiwgeCwgeDNiKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX211bFwiLCB4LCB4M2IsIHgzYiksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl9hZGRcIiwgeDNiLCBjLmkzMl9jb25zdChwQiksIHgzYiksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX2VxXCIsIHkyLCB4M2IpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkN1cnZlKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwSW5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOCoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3RvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwSW5cIiksIGF1eCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGF1eCksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgYnVpbGRJc1plcm9BZmZpbmUoKTtcbiAgICBidWlsZElzWmVybygpO1xuICAgIGJ1aWxkWmVyb0FmZmluZSgpO1xuICAgIGJ1aWxkWmVybygpO1xuICAgIGJ1aWxkQ29weUFmZmluZSgpO1xuICAgIGJ1aWxkQ29weSgpO1xuICAgIGJ1aWxkVG9KYWNvYmlhbigpO1xuICAgIGJ1aWxkRXFBZmZpbmUoKTtcbiAgICBidWlsZEVxTWl4ZWQoKTtcbiAgICBidWlsZEVxKCk7XG4gICAgYnVpbGREb3VibGVBZmZpbmUoKTtcbiAgICBidWlsZERvdWJsZSgpO1xuICAgIGJ1aWxkQWRkQWZmaW5lKCk7XG4gICAgYnVpbGRBZGRNaXhlZCgpO1xuICAgIGJ1aWxkQWRkKCk7XG4gICAgYnVpbGROZWdBZmZpbmUoKTtcbiAgICBidWlsZE5lZygpO1xuICAgIGJ1aWxkU3ViQWZmaW5lKCk7XG4gICAgYnVpbGRTdWJNaXhlZCgpO1xuICAgIGJ1aWxkU3ViKCk7XG4gICAgYnVpbGRGcm9tTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkRnJvbU1vbnRnb21lcnkoKTtcbiAgICBidWlsZFRvTW9udGdvbWVyeUFmZmluZSgpO1xuICAgIGJ1aWxkVG9Nb250Z29tZXJ5KCk7XG4gICAgYnVpbGRUb0FmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZUFmZmluZSgpO1xuICAgIGJ1aWxkSW5DdXJ2ZSgpO1xuXG4gICAgYnVpbGRCYXRjaFRvQWZmaW5lKCk7XG5cbiAgICBidWlsZE5vcm1hbGl6ZSgpO1xuXG5cbiAgICBidWlsZFJldmVyc2VCeXRlcygpO1xuXG4gICAgYnVpbGRMRU10b1UoKTtcbiAgICBidWlsZExFTXRvQygpO1xuICAgIGJ1aWxkVXRvTEVNKCk7XG4gICAgYnVpbGRDdG9MRU0oKTtcblxuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgcHJlZml4ICsgXCJfTEVNdG9VXCIsIG44KjIsIG44KjIpO1xuICAgIGJ1aWxkQmF0Y2hDb252ZXJ0aW9uKG1vZHVsZSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b0NcIiwgcHJlZml4ICsgXCJfTEVNdG9DXCIsIG44KjIsIG44KTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVXRvTEVNXCIsIHByZWZpeCArIFwiX1V0b0xFTVwiLCBuOCoyLCBuOCoyKTtcbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIHByZWZpeCArIFwiX0N0b0xFTVwiLCBuOCwgbjgqMiwgdHJ1ZSk7XG5cbiAgICBidWlsZEJhdGNoQ29udmVydGlvbihtb2R1bGUsIHByZWZpeCArIFwiX2JhdGNoVG9KYWNvYmlhblwiLCBwcmVmaXggKyBcIl90b0phY29iaWFuXCIsIG44KjIsIG44KjMsIHRydWUpO1xuXG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cFwiLCBwcmVmaXggKyBcIl9hZGRcIiwgbjgqMyk7XG4gICAgYnVpbGRNdWx0aWV4cCQxKG1vZHVsZSwgcHJlZml4LCBwcmVmaXggKyBcIl9tdWx0aWV4cEFmZmluZVwiLCBwcmVmaXggKyBcIl9hZGRNaXhlZFwiLCBuOCoyKTtcblxuICAgIC8qXG4gICAgYnVpbGRUaW1lc1NjYWxhcihcbiAgICAgICAgbW9kdWxlLFxuICAgICAgICBwcmVmaXggKyBcIl90aW1lc1NjYWxhck9sZFwiLFxuICAgICAgICBuOCozLFxuICAgICAgICBwcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiLFxuICAgICk7XG4gICAgKi9cbiAgICBidWlsZFRpbWVzU2NhbGFyTkFGKFxuICAgICAgICBtb2R1bGUsXG4gICAgICAgIHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIsXG4gICAgICAgIG44KjMsXG4gICAgICAgIHByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICBwcmVmaXggKyBcIl9kb3VibGVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIGJ1aWxkVGltZXNTY2FsYXJOQUYoXG4gICAgICAgIG1vZHVsZSxcbiAgICAgICAgcHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIixcbiAgICAgICAgbjgqMixcbiAgICAgICAgcHJlZml4ICsgXCJfYWRkTWl4ZWRcIixcbiAgICAgICAgcHJlZml4ICsgXCJfZG91YmxlXCIsXG4gICAgICAgIHByZWZpeCArIFwiX3N1Yk1peGVkXCIsXG4gICAgICAgIHByZWZpeCArIFwiX2NvcHlBZmZpbmVcIixcbiAgICAgICAgcHJlZml4ICsgXCJfemVyb1wiXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9pc1plcm9cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9lcVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFNaXhlZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZXFBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfY29weUFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2RvdWJsZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYWRkTWl4ZWRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2FkZEFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9uZWdcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX25lZ0FmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3N1Yk1peGVkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9zdWJBZmZpbmVcIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfZnJvbU1vbnRnb21lcnlcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2Zyb21Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvTW9udGdvbWVyeVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9Nb250Z29tZXJ5QWZmaW5lXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RpbWVzU2NhbGFyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl90aW1lc1NjYWxhckFmZmluZVwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9ub3JtYWxpemVcIik7XG5cbiAgICAvLyBDb252ZXJ0aW9uIGZ1bmN0aW9uc1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9MRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX0xFTXRvQ1wiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfVXRvTEVNXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9DdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaFV0b0xFTVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hDdG9MRU1cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfdG9BZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3RvSmFjb2JpYW5cIik7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfYmF0Y2hUb0phY29iaWFuXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2luQ3VydmVBZmZpbmVcIik7XG5cbiAgICAvKlxuICAgIGJ1aWxkRzFNdWxTY2FsYXIobW9kdWxlLCB6cSk7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKFwiZzFNdWxTY2FsYXJcIik7XG4gICAgKi9cblxuICAgIHJldHVybiBwcmVmaXg7XG59O1xuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbXNuYXJrIChXZWIgQXNzZW1ibHkgemtTbmFyayBQcm92ZXIpLlxuXG4gICAgd2FzbXNuYXJrIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbXNuYXJrIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHdhc21zbmFyay4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmNvbnN0IHsgaXNPZGQ6IGlzT2RkJDIsIG1vZEludjogbW9kSW52JDEsIG1vZFBvdyB9ID0gYmlnaW50O1xuY29uc3QgdXRpbHMkMyA9IHV0aWxzJDY7XG5cbnZhciBidWlsZF9mZnQgPSBmdW5jdGlvbiBidWlsZEZGVChtb2R1bGUsIHByZWZpeCwgZ1ByZWZpeCwgZlByZWZpeCwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBuNjRmID0gbW9kdWxlLm1vZHVsZXNbZlByZWZpeF0ubjY0O1xuICAgIGNvbnN0IG44ZiA9IG42NGYqODtcblxuICAgIGNvbnN0IG42NGcgPSBtb2R1bGUubW9kdWxlc1tnUHJlZml4XS5uNjQ7XG4gICAgY29uc3QgbjhnID0gbjY0Zyo4O1xuXG4gICAgY29uc3QgcSA9IG1vZHVsZS5tb2R1bGVzW2ZQcmVmaXhdLnE7XG5cbiAgICBsZXQgcmVtID0gcSAtIDFuO1xuICAgIGxldCBtYXhCaXRzID0gMDtcbiAgICB3aGlsZSAoIWlzT2RkJDIocmVtKSkge1xuICAgICAgICBtYXhCaXRzICsrO1xuICAgICAgICByZW0gPSByZW0gPj4gMW47XG4gICAgfVxuXG4gICAgbGV0IG5yID0gMm47XG5cbiAgICB3aGlsZSAoIG1vZFBvdyhuciwgcSA+PiAxbiwgcSkgPT09IDFuICkgbnIgPSBuciArIDFuO1xuXG4gICAgLy8gY29uc29sZS5sb2cobnIpO1xuXG4gICAgY29uc3QgdyA9IG5ldyBBcnJheShtYXhCaXRzKzEpO1xuICAgIHdbbWF4Qml0c10gPSBtb2RQb3cobnIsIHJlbSwgcSk7XG5cbiAgICBsZXQgbj1tYXhCaXRzLTE7XG4gICAgd2hpbGUgKG4+PTApIHtcbiAgICAgICAgd1tuXSA9IG1vZFBvdyh3W24rMV0sIDJuLCBxKTtcbiAgICAgICAgbi0tO1xuICAgIH1cblxuICAgIGNvbnN0IGJ5dGVzID0gW107XG4gICAgY29uc3QgUiA9ICgxbiA8PCBCaWdJbnQobjhmKjgpKSAlIHE7XG5cbiAgICBmb3IgKGxldCBpPTA7IGk8dy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBtID0gd1tpXSAqIFIgJSBxO1xuICAgICAgICBieXRlcy5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUobSwgbjhmKSk7XG4gICAgfVxuXG4gICAgY29uc3QgUk9PVHMgPSBtb2R1bGUuYWxsb2MoYnl0ZXMpO1xuXG4gICAgY29uc3QgaTIgPSBuZXcgQXJyYXkobWF4Qml0cysxKTtcbiAgICBpMlswXSA9IDFuO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgaTJbaV0gPSBpMltpLTFdICogMm47XG4gICAgfVxuXG4gICAgY29uc3QgYnl0ZXNpMiA9W107XG4gICAgZm9yIChsZXQgaT0wOyBpPD1tYXhCaXRzOyBpKyspIHtcbiAgICAgICAgY29uc3QgbSA9IG1vZEludiQxKGkyW2ldLCBxKSAqIFIgJSBxO1xuICAgICAgICBieXRlc2kyLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShtLCBuOGYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBJTlYyID0gbW9kdWxlLmFsbG9jKGJ5dGVzaTIpO1xuXG4gICAgY29uc3Qgc2hpZnQgPSBtb2RQb3cobnIsIDJuLCBxKTtcbiAgICBjb25zdCBieXRlc1NoaWZ0VG9TbWFsbE0gPVtdO1xuICAgIGNvbnN0IGJ5dGVzU0NvbnN0ID1bXTtcbiAgICBmb3IgKGxldCBpPTA7IGk8PW1heEJpdHM7IGkrKykge1xuICAgICAgICBjb25zdCBzaGlmdFRvU21hbGxNID0gbW9kUG93KHNoaWZ0LCAybiAqKiBCaWdJbnQoaSksIHEpO1xuICAgICAgICBjb25zdCBzQ29uc3QgPSBtb2RJbnYkMShxICsgMW4gLSBzaGlmdFRvU21hbGxNLCBxKTtcbiAgICAgICAgYnl0ZXNTaGlmdFRvU21hbGxNLnB1c2goLi4udXRpbHMkMy5iaWdJbnQyQnl0ZXNMRShzaGlmdFRvU21hbGxNICogUiAlIHEsIG44ZikpO1xuICAgICAgICBieXRlc1NDb25zdC5wdXNoKC4uLnV0aWxzJDMuYmlnSW50MkJ5dGVzTEUoc0NvbnN0ICogUiAlIHEsIG44ZikpO1xuICAgIH1cblxuICAgIGNvbnN0IFNISUZUX1RPX00gPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU2hpZnRUb1NtYWxsTSAgKTtcbiAgICBjb25zdCBTQ09OU1QgPSBtb2R1bGUuYWxsb2MoIGJ5dGVzU0NvbnN0ICApO1xuXG4gICAgZnVuY3Rpb24gcmV2KHgpIHtcbiAgICAgICAgbGV0IHI9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHggJiAoMSA8PCBpKSkge1xuICAgICAgICAgICAgICAgIHIgPSByIHwgKDB4ODAgPj4gaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfVxuXG4gICAgY29uc3QgcnRhYmxlID0gQXJyYXkoMjU2KTtcbiAgICBmb3IgKGxldCBpPTA7IGk8MjU2OyBpKyspIHtcbiAgICAgICAgcnRhYmxlW2ldID0gcmV2KGkpO1xuICAgIH1cblxuICAgIGNvbnN0IFJFVlRBQkxFID0gbW9kdWxlLmFsbG9jKHJ0YWJsZSk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkTG9nMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfX2xvZzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYXV4XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImF1eFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGYuYWRkQ29kZShjLnNldExvY2FsKFwiYml0c1wiLCBjLmkzMl9jb25zdCgwKSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcImF1eFwiKSlcbiAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJhdXhcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImF1eFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5icigwKVxuICAgICAgICApKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9uZShcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnVucmVhY2hhYmxlKClcbiAgICAgICAgKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuaWYoXG4gICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG1heEJpdHMpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy51bnJlYWNoYWJsZSgpXG4gICAgICAgICkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmdldExvY2FsKFwiYml0c1wiKSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcblxuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IE9uZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwiYml0c1wiLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4ICsgXCJfX2xvZzJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5jYWxsKGZQcmVmaXggKyBcIl9vbmVcIiwgT25lKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXgrXCJfcmF3ZmZ0XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDApLFxuICAgICAgICAgICAgICAgIE9uZVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJRkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9pZmZ0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHhcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBJbnYyXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImJpdHNcIixcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeCArIFwiX19sb2cyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJwSW52MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoSU5WMiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIHByZWZpeCtcIl9yYXdmZnRcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBJbnYyXCIpXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmF3RkZUKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7IC8vIDIgcG93ZXJcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwialwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm1cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtZGl2MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19yZXZlcnNlUGVybXV0YXRpb25cIiwgYy5nZXRMb2NhbChcInB4XCIpLCBjLmdldExvY2FsKFwiYml0c1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwic1wiLCBjLmkzMl9jb25zdCgxKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9ndF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwibVwiLCBjLmkzMl9zaGwoYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJzXCIpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChST09UcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfb25lXCIsIFcpLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJtZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMSkpICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJtZGl2MlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwia1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwialwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm1kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwia1wiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImtcIiksIGMuZ2V0TG9jYWwoXCJtXCIpKSksXG4gICAgICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICAgICApKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJzXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwic1wiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBwcmVmaXggKyBcIl9fZmZ0RmluYWxcIixcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdHNcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInJldmVyc2VcIiksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEludmVyc2UoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19mZnRGaW5hbFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInB4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiYml0c1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJldmVyc2VcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJtdWxGYWN0b3JcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwSW52MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtYXNrXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5nZXRMb2NhbChcInJldmVyc2VcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblwiLCBjLmkzMl9zaGwoIGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiYml0c1wiKSkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwibWFza1wiLCBjLmkzMl9zdWIoIGMuZ2V0TG9jYWwoXCJuXCIpICwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJuZGl2MlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmV2ZXJzZVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLCBUKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwiaWR4MVwiKSApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChnUHJlZml4ICsgXCJfY29weVwiLCBUICwgYy5nZXRMb2NhbChcImlkeDJcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YgLCBjLmdldExvY2FsKFwiaWR4MlwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIFQgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZlByZWZpeCArIFwiX2lzT25lXCIsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcgKEl0IHNob3VsZCBub3QgYmUgaGVyZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKG9wR3RpbWVzRiAsIGMuZ2V0TG9jYWwoXCJpZHgxXCIpICwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSwgYy5nZXRMb2NhbChcImlkeDFcIikgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGICwgYy5nZXRMb2NhbChcImlkeDJcIikgLCBjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcblxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmUHJlZml4ICsgXCJfaXNPbmVcIiwgYy5nZXRMb2NhbChcIm11bEZhY3RvclwiKSksXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nIChJdCBzaG91bGQgbm90IGJlIGhlcmUpXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChvcEd0aW1lc0YsIGMuZ2V0TG9jYWwoXCJweFwiKSAsIGMuZ2V0TG9jYWwoXCJtdWxGYWN0b3JcIiksIGMuZ2V0TG9jYWwoXCJweFwiKSksXG4gICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwob3BHdGltZXNGLCBjLmdldExvY2FsKFwiaWR4MlwiKSxjLmdldExvY2FsKFwibXVsRmFjdG9yXCIpLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRSZXZlcnNlUGVybXV0YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX19yZXZlcnNlUGVybXV0YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuXCIsIGMuaTMyX3NobCggYy5pMzJfY29uc3QoMSksIGMuZ2V0TG9jYWwoXCJiaXRzXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJyaVwiLCBjLmNhbGwocHJlZml4ICsgXCJfX3JldlwiLCBjLmdldExvY2FsKFwiaVwiKSwgYy5nZXRMb2NhbChcImJpdHNcIikpKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJweFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicmlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2x0X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJyaVwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwoZ1ByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImlkeDFcIiksIFQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJpZHgyXCIpICwgYy5nZXRMb2NhbChcImlkeDFcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGdQcmVmaXggKyBcIl9jb3B5XCIsIFQgLCBjLmdldExvY2FsKFwiaWR4MlwiKSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG5cbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUmV2KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9fcmV2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaTMyX3JvdGwoXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaGwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgweEZGKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMHhGRilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVWVEFCTEUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc2hsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FuZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3Nocl91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDE2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVlRBQkxFLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCg4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3UoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9zaHJfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMjQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDB4RkYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZUQUJMRSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0c1wiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGZQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImluY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZGVEpvaW5FeHQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBTaGlmdFRvTVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0hJRlRfVE9fTSksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ0b3RhbEJpdHNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGYpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbCggZlByZWZpeCArIFwiX2NvcHlcIiwgYy5nZXRMb2NhbChcImZpcnN0XCIpLCBXKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU2hpZnRUb01cIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVyxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRKb2luRXh0SW52KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luRXh0SW52XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImZpcnN0XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiaW5jXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwidG90YWxCaXRzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNoaWZ0VG9NXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicFNDb25zdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhmKSk7XG4gICAgICAgIGNvbnN0IFUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhnKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNoaWZ0VG9NXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTSElGVF9UT19NKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFNDb25zdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoU0NPTlNUKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInRvdGFsQml0c1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG5cblxuICAgICAgICAgICAgYy5jYWxsKCBmUHJlZml4ICsgXCJfY29weVwiLCBjLmdldExvY2FsKFwiZmlyc3RcIiksIFcpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgxXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwiaWR4MlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIiksXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBnUHJlZml4ICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBVLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNDb25zdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDJcIilcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBTQ29uc3RcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZlByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaW5jXCIpLFxuICAgICAgICAgICAgICAgICAgICBXXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQnVmZjJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmlyc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJpbmNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ0b3RhbEJpdHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgxXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU2hpZnRUb01cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwU0NvbnN0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgVyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGYpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhuOGcpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU2hpZnRUb01cIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KFNISUZUX1RPX00pLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwU0NvbnN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChTQ09OU1QpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwidG90YWxCaXRzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9jb3B5XCIsIGMuZ2V0TG9jYWwoXCJmaXJzdFwiKSwgVyksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmMVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZjJcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFNoaWZ0VG9NXCIpLFxuICAgICAgICAgICAgICAgICAgICBVXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9zdWJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwU0NvbnN0XCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MVwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpbmNcIiksXG4gICAgICAgICAgICAgICAgICAgIFdcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGRlRNaXgoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdE1peFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBCdWZmXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcImV4cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIm5Hcm91cHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicGFpck9mZnNldFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpZHgyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImpcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwd21cIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBXID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZikpO1xuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuICAgICAgICBjb25zdCBVID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuUGVyR3JvdXBcIiwgYy5pMzJfc2hsKGMuaTMyX2NvbnN0KDEpLCBjLmdldExvY2FsKFwiZXhwXCIpKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiblBlckdyb3VwRGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblBlckdyb3VwXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5Hcm91cHNcIiwgYy5pMzJfc2hyX3UoYy5nZXRMb2NhbChcIm5cIiksIGMuZ2V0TG9jYWwoXCJleHBcIikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwYWlyT2Zmc2V0XCIsIGMuaTMyX211bChjLmdldExvY2FsKFwiblBlckdyb3VwRGl2MlwiKSwgYy5pMzJfY29uc3QobjhnKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInB3bVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoUk9PVHMpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiZXhwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhmKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibkdyb3Vwc1wiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoIGZQcmVmaXggKyBcIl9vbmVcIiwgVyksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuUGVyR3JvdXBEaXYyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaWR4MVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQnVmZlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblBlckdyb3VwXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImpcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJpZHgyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBhaXJPZmZzZXRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBvcEd0aW1lc0YsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICAgICBUXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX2NvcHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgVVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFUsXG4gICAgICAgICAgICAgICAgICAgICAgICBULFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgZ1ByZWZpeCArIFwiX3N1YlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgVSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBmUHJlZml4ICsgXCJfbXVsXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBXLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInB3bVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFcsXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJqXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwialwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgLy8gUmV2ZXJzZSBhbGwgYW5kIG11bHRpcGx5IGJ5IGZhY3RvclxuICAgIGZ1bmN0aW9uIGJ1aWxkRkZURmluYWwoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX2ZmdEZpbmFsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJ1ZmZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiZmFjdG9yXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaWR4MVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlkeDJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmRpdjJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44ZykpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJuZGl2MlwiLCBjLmkzMl9zaHJfdShjLmdldExvY2FsKFwiblwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfYW5kKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEJ1ZmZcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5kaXYyXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuZGl2MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOGcpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibmRpdjJcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDFcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44ZylcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcImlkeDJcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBCdWZmXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5cIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjhnKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaWR4MlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImZhY3RvclwiKSxcbiAgICAgICAgICAgICAgICAgICAgVFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIG9wR3RpbWVzRixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImlkeDFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJmYWN0b3JcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgyXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIGdQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgICAgIFQsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpZHgxXCIpLFxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZFJldigpO1xuICAgIGJ1aWxkUmV2ZXJzZVBlcm11dGF0aW9uKCk7XG4gICAgYnVpbGRGaW5hbEludmVyc2UoKTtcbiAgICBidWlsZFJhd0ZGVCgpO1xuICAgIGJ1aWxkTG9nMigpO1xuICAgIGJ1aWxkRkZUKCk7XG4gICAgYnVpbGRJRkZUKCk7XG4gICAgYnVpbGRGRlRKb2luKCk7XG4gICAgYnVpbGRGRlRKb2luRXh0KCk7XG4gICAgYnVpbGRGRlRKb2luRXh0SW52KCk7XG4gICAgYnVpbGRGRlRNaXgoKTtcbiAgICBidWlsZEZGVEZpbmFsKCk7XG4gICAgYnVpbGRQcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uKCk7XG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2lmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9yYXdmZnRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRKb2luXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXgrXCJfZmZ0Sm9pbkV4dFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX2ZmdEpvaW5FeHRJbnZcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRNaXhcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCtcIl9mZnRGaW5hbFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4K1wiX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb25cIik7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX3BvbCA9IGZ1bmN0aW9uIGJ1aWxkUG9sKG1vZHVsZSwgcHJlZml4LCBwcmVmaXhGaWVsZCkge1xuXG4gICAgY29uc3QgbjY0ID0gbW9kdWxlLm1vZHVsZXNbcHJlZml4RmllbGRdLm42NDtcbiAgICBjb25zdCBuOCA9IG42NCo4O1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZFplcm8oKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4K1wiX3plcm9cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJweFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJsYXN0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmdldExvY2FsKFwicHhcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RwXCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHhcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0cFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRDb25zdHJ1Y3RMQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfY29uc3RydWN0TENcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcG9seW5vbWlhbHNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwc2lnbmFsc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5TaWduYWxzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJlc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJqXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicHBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInBkXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibmNvZWZzXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuZ2V0TG9jYWwoXCJwcG9seW5vbWlhbHNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBzXCIsIGMuZ2V0TG9jYWwoXCJwc2lnbmFsc1wiKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5TaWduYWxzXCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIm5jb2Vmc1wiLCBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJwcFwiKSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdCg0KSkpLFxuXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJqXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuY29lZnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJwZFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwcmVzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwicHBcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBwXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHBcIiksIGMuaTMyX2NvbnN0KDQpKSksXG5cblxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBwXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9hZGRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwZFwiKVxuICAgICAgICAgICAgICAgICAgICApLFxuXG4gICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwcFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwXCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImpcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJqXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICAgICAgKSksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicHNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwc1wiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpXCIpLCBjLmkzMl9jb25zdCgxKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBidWlsZFplcm8oKTtcbiAgICBidWlsZENvbnN0cnVjdExDKCk7XG5cblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl96ZXJvXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9jb25zdHJ1Y3RMQ1wiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cblxuXG5cbn07XG5cbnZhciBidWlsZF9xYXAgPSBmdW5jdGlvbiBidWlsZFFBUChtb2R1bGUsIHByZWZpeCwgcHJlZml4RmllbGQpIHtcblxuICAgIGNvbnN0IG42NCA9IG1vZHVsZS5tb2R1bGVzW3ByZWZpeEZpZWxkXS5uNjQ7XG4gICAgY29uc3QgbjggPSBuNjQqODtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRCdWlsZEFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYnVpbGRBQkNcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJuQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwV2l0bmVzc1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm9mZnNldE91dFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5PdXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJvZmZzZXRXaXRuZXNzXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwibldpdG5lc3NcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJtXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcInNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwT3V0XCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBTZXQgb3V0cHV0IGEgYW5kIGIgdG8gMFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmdldExvY2FsKFwicEJcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm5PdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdGFcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwibGFzdFwiKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4RmllbGQgKyBcIl96ZXJvXCIsIGMuZ2V0TG9jYWwoXCJpdGFcIikpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXhGaWVsZCArIFwiX3plcm9cIiwgYy5nZXRMb2NhbChcIml0YlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSksXG5cblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICBcImxhc3RcIixcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuQ29lZnNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCsxMilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmJyX2lmKFxuICAgICAgICAgICAgICAgICAgICAxLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgICAgIFwic1wiLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9sb2FkKGMuZ2V0TG9jYWwoXCJpdFwiKSwgOClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX29yKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbHRfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwic1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwib2Zmc2V0V2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9nZV91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuV2l0bmVzc1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCsxMikpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG5cbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcIm1cIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZChjLmdldExvY2FsKFwiaXRcIikpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShjLmdldExvY2FsKFwibVwiKSwgYy5pMzJfY29uc3QoMCkpLFxuICAgICAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwicE91dFwiLCBjLmdldExvY2FsKFwicEFcIikpLFxuICAgICAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoYy5nZXRMb2NhbChcIm1cIiksIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwT3V0XCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuYnIoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcbiAgICAgICAgICAgICAgICAgICAgXCJjXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQoYy5nZXRMb2NhbChcIml0XCIpLCA0KVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9sdF91KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJjXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfZ2VfdShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJvZmZzZXRPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5icigxKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgICAgICBcInBPdXRcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBPdXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfc3ViKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiY1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIm9mZnNldE91dFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBXaXRuZXNzXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfbXVsKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX3N1YihjLmdldExvY2FsKFwic1wiKSwgYy5nZXRMb2NhbChcIm9mZnNldFdpdG5lc3NcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJpdFwiKSwgYy5pMzJfY29uc3QoMTIpKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfYWRkXCIsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICBhdXgsXG4gICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwT3V0XCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0XCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwiaXRcIiksIGMuaTMyX2NvbnN0KG44KzEyKSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRcIiwgYy5nZXRMb2NhbChcInBDXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicEFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuT3V0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRcIilcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdFwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0XCIpLCBjLmkzMl9jb25zdChuOCkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcblxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkSm9pbkFCQygpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfam9pbkFCQ1wiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcIm5cIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0YlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0Y1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcIml0cFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImxhc3RcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBhdXggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjgpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRhXCIsIGMuZ2V0TG9jYWwoXCJwQVwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRiXCIsIGMuZ2V0TG9jYWwoXCJwQlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRjXCIsIGMuZ2V0TG9jYWwoXCJwQ1wiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaXRwXCIsIGMuZ2V0TG9jYWwoXCJwUFwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFxuICAgICAgICAgICAgICAgIFwibGFzdFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBBXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9tdWwoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiblwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KG44KVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuICAgICAgICAgICAgICAgIGMuYnJfaWYoXG4gICAgICAgICAgICAgICAgICAgIDEsXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJsYXN0XCIpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICAgICAgcHJlZml4RmllbGQgKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YVwiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0YlwiKSxcbiAgICAgICAgICAgICAgICAgICAgYXV4XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgICAgIHByZWZpeEZpZWxkICsgXCJfc3ViXCIsXG4gICAgICAgICAgICAgICAgICAgIGF1eCxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0Y1wiKSxcbiAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcIml0cFwiKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGFcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGJcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGNcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdGNcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHBcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJpdHBcIiksIGMuaTMyX2NvbnN0KG44KSkpLFxuICAgICAgICAgICAgICAgIGMuYnIoMClcbiAgICAgICAgICAgICkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRCYXRjaEFkZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrXCJfYmF0Y2hBZGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwYVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRhXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRiXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwiaXRyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwibGFzdFwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGFcIiwgYy5nZXRMb2NhbChcInBhXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdGJcIiwgYy5nZXRMb2NhbChcInBiXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpdHJcIiwgYy5nZXRMb2NhbChcInByXCIpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXG4gICAgICAgICAgICAgICAgXCJsYXN0XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicGFcIiksXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX211bChcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJuXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QobjgpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5icl9pZihcbiAgICAgICAgICAgICAgICAgICAgMSxcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXEoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImxhc3RcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgICAgICBwcmVmaXhGaWVsZCArIFwiX2FkZFwiLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRhXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRiXCIpLFxuICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiaXRyXCIpLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YVwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0YlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0YlwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcIml0clwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIml0clwiKSwgYy5pMzJfY29uc3QobjgpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBidWlsZEJ1aWxkQUJDKCk7XG4gICAgYnVpbGRKb2luQUJDKCk7XG4gICAgYnVpbGRCYXRjaEFkZCgpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2J1aWxkQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9qb2luQUJDXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9iYXRjaEFkZFwiKTtcblxuICAgIHJldHVybiBwcmVmaXg7XG5cbn07XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtc25hcmsgKFdlYiBBc3NlbWJseSB6a1NuYXJrIFByb3ZlcikuXG5cbiAgICB3YXNtc25hcmsgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtc25hcmsgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbXNuYXJrLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxudmFyIGJ1aWxkX2FwcGx5a2V5ID0gZnVuY3Rpb24gYnVpbGRBcHBseUtleShtb2R1bGUsIGZuTmFtZSwgZ1ByZWZpeCwgZnJQcmVmaXgsIHNpemVHSW4sIHNpemVHT3V0LCBzaXplRiwgb3BHdGltZXNGKSB7XG5cbiAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgZi5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwiblwiLCBcImkzMlwiKTtcbiAgICBmLmFkZFBhcmFtKFwicEZpcnN0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwSW5jXCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkUGFyYW0oXCJwT3V0XCIsIFwiaTMyXCIpO1xuICAgIGYuYWRkTG9jYWwoXCJwT2xkRnJlZVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwiaVwiLCBcImkzMlwiKTtcbiAgICBmLmFkZExvY2FsKFwicEZyb21cIiwgXCJpMzJcIik7XG4gICAgZi5hZGRMb2NhbChcInBUb1wiLCBcImkzMlwiKTtcblxuICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICBjb25zdCB0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHNpemVGKSk7XG5cbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJwRnJvbVwiLCBjLmdldExvY2FsKFwicEluXCIpKSxcbiAgICAgICAgYy5zZXRMb2NhbChcInBUb1wiLCBjLmdldExvY2FsKFwicE91dFwiKSksXG4gICAgKTtcblxuICAgIC8vIHQgPSBmaXJzdFxuICAgIGYuYWRkQ29kZShcbiAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICBjLmdldExvY2FsKFwicEZpcnN0XCIpLFxuICAgICAgICAgICAgdFxuICAgICAgICApXG4gICAgKTtcbiAgICBmLmFkZENvZGUoXG4gICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuZ2V0TG9jYWwoXCJuXCIpICkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BHdGltZXNGLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSxcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwVG9cIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicEZyb21cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwRnJvbVwiKSwgYy5pMzJfY29uc3Qoc2l6ZUdJbikpKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwVG9cIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwVG9cIiksIGMuaTMyX2NvbnN0KHNpemVHT3V0KSkpLFxuXG4gICAgICAgICAgICAvLyB0ID0gdCogaW5jXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZnJQcmVmaXggKyBcIl9tdWxcIixcbiAgICAgICAgICAgICAgICB0LFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwSW5jXCIpLFxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICkpXG4gICAgKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuXG59O1xuXG5jb25zdCB1dGlscyQyID0gdXRpbHMkNjtcblxuY29uc3QgYnVpbGRGMW0kMSA9YnVpbGRfZjFtO1xuY29uc3QgYnVpbGRGMSQxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtJDEgPWJ1aWxkX2YybTtcbmNvbnN0IGJ1aWxkRjNtJDEgPWJ1aWxkX2YzbTtcbmNvbnN0IGJ1aWxkQ3VydmUkMSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQyID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wkMSA9IGJ1aWxkX3BvbDtcbmNvbnN0IGJ1aWxkUUFQJDEgPSBidWlsZF9xYXA7XG5jb25zdCBidWlsZEFwcGx5S2V5JDEgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMiwgbW9kSW52LCBpc09kZDogaXNPZGQkMSwgaXNOZWdhdGl2ZTogaXNOZWdhdGl2ZSQyIH0gPSBiaWdpbnQ7XG5cbnZhciBidWlsZF9ibjEyOCA9IGZ1bmN0aW9uIGJ1aWxkQk4xMjgobW9kdWxlLCBfcHJlZml4KSB7XG5cbiAgICBjb25zdCBwcmVmaXggPSBfcHJlZml4IHx8IFwiYm4xMjhcIjtcblxuICAgIGlmIChtb2R1bGUubW9kdWxlc1twcmVmaXhdKSByZXR1cm4gcHJlZml4OyAgLy8gYWxyZWFkeSBidWlsZGVkXG5cbiAgICBjb25zdCBxID0gMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg2OTYzMTExNTcyOTc4MjM2NjI2ODkwMzc4OTQ2NDUyMjYyMDg1ODNuO1xuICAgIGNvbnN0IHIgPSAyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODU0ODM2NDQwMDQxNjAzNDM0MzY5ODIwNDE4NjU3NTgwODQ5NTYxN247XG5cblxuICAgIGNvbnN0IG42NCA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQyKHEgLSAxbikgLSAxKS82NCkgKzE7XG4gICAgY29uc3QgbjggPSBuNjQqODtcbiAgICBjb25zdCBmcnNpemUgPSBuODtcbiAgICBjb25zdCBmMXNpemUgPSBuODtcbiAgICBjb25zdCBmMnNpemUgPSBmMXNpemUgKiAyO1xuICAgIGNvbnN0IGZ0c2l6ZSA9IGYxc2l6ZSAqIDEyO1xuXG4gICAgY29uc3QgcHIgPSBtb2R1bGUuYWxsb2ModXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggciwgZnJzaXplICkpO1xuXG4gICAgY29uc3QgZjFtUHJlZml4ID0gYnVpbGRGMW0kMShtb2R1bGUsIHEsIFwiZjFtXCIpO1xuICAgIGJ1aWxkRjEkMShtb2R1bGUsIHIsIFwiZnJcIiwgXCJmcm1cIik7XG5cbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgzbiksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlJDEobW9kdWxlLCBcImcxbVwiLCBcImYxbVwiLCBwRzFiKTtcblxuICAgIGJ1aWxkRkZUJDIobW9kdWxlLCBcImZybVwiLCBcImZybVwiLCBcImZybVwiLCBcImZybV9tdWxcIik7XG5cbiAgICBidWlsZFBvbCQxKG1vZHVsZSwgXCJwb2xcIiwgXCJmcm1cIik7XG4gICAgYnVpbGRRQVAkMShtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0kMShtb2R1bGUsIFwiZjFtX25lZ1wiLCBcImYybVwiLCBcImYxbVwiKTtcbiAgICBjb25zdCBwRzJiID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDE5NDg1ODc0NzUxNzU5MzU0NzcxMDI0MjM5MjYxMDIxNzIwNTA1NzkwNjE4NDY5MzAxNzIxMDY1NTY0NjMxMjk2NDUyNDU3NDc4MzczbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMjY2OTI5NzkxMTE5OTkxMTYxMjQ2OTA3Mzg3MTM3MjgzODQyNTQ1MDc2OTY1MzMyOTAwMjg4NTY5Mzc4NTEwOTEwMzA3NjM2NjkwbiksIGYxc2l6ZSApXG4gICAgXSk7XG4gICAgY29uc3QgZzJtUHJlZml4ID0gYnVpbGRDdXJ2ZSQxKG1vZHVsZSwgXCJnMm1cIiwgXCJmMm1cIiwgcEcyYik7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkR1RpbWVzRnIoZm5OYW1lLCBvcE11bCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwR1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBGclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQVVYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKG44KSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOCksXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInByXCIpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGZuTmFtZSk7XG4gICAgfVxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGclwiLCBcImcxbV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMW1cIiwgXCJnMW1cIiwgXCJmcm1cIiwgXCJnMW1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMm1fdGltZXNGclwiLCBcImcybV90aW1lc1NjYWxhclwiKTtcbiAgICBidWlsZEZGVCQyKG1vZHVsZSwgXCJnMm1cIiwgXCJnMm1cIiwgXCJmcm1cIiwgXCJnMm1fdGltZXNGclwiKTtcblxuICAgIGJ1aWxkR1RpbWVzRnIoXCJnMW1fdGltZXNGckFmZmluZVwiLCBcImcxbV90aW1lc1NjYWxhckFmZmluZVwiKTtcbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG5cbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImZybV9iYXRjaEFwcGx5S2V5XCIsIFwiZm1yXCIsIFwiZnJtXCIsIG44LCBuOCwgbjgsIFwiZnJtX211bFwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44KjMsIG44KjMsIG44LCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkkMShtb2R1bGUsIFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiLCBcImcxbVwiLCBcImZybVwiLCBuOCoyLCBuOCozLCBuOCwgXCJnMW1fdGltZXNGckFmZmluZVwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5XCIsIFwiZzJtXCIsIFwiZnJtXCIsIG44KjIqMywgbjgqMyoyLCBuOCwgXCJnMm1fdGltZXNGclwiKTtcbiAgICBidWlsZEFwcGx5S2V5JDEobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjgqMioyLCBuOCozKjIsIG44LCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG4gICAgZnVuY3Rpb24gdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIEJpZ0ludChhKSAqICggMW4gPDwgQmlnSW50KGYxc2l6ZSo4KSkgJSBxO1xuICAgIH1cblxuICAgIGNvbnN0IEcxZ2VuID0gW1xuICAgICAgICAxbixcbiAgICAgICAgMm4sXG4gICAgICAgIDFuXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMWdlbiA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblsyXSksIGYxc2l6ZSApLFxuICAgICAgICBdXG4gICAgKTtcblxuICAgIGNvbnN0IEcxemVybyA9IFtcbiAgICAgICAgMG4sXG4gICAgICAgIDFuLFxuICAgICAgICAwblxuICAgIF07XG5cbiAgICBjb25zdCBwRzF6ZXJvID0gbW9kdWxlLmFsbG9jKFxuICAgICAgICBbXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzF6ZXJvWzJdKSwgZjFzaXplIClcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMmdlbiA9IFtcbiAgICAgICAgW1xuICAgICAgICAgICAgMTA4NTcwNDY5OTkwMjMwNTcxMzU5NDQ1NzA3NjIyMzI4Mjk0ODEzNzA3NTYzNTk1Nzg1MTgwODY5OTA1MTk5OTMyODU2NTU4NTI3ODFuLFxuICAgICAgICAgICAgMTE1NTk3MzIwMzI5ODYzODcxMDc5OTEwMDQwMjEzOTIyODU3ODM5MjU4MTI4NjE4MjExOTI1MzA5MTc0MDMxNTE0NTIzOTE4MDU2MzRuLFxuICAgICAgICBdLFtcbiAgICAgICAgICAgIDg0OTU2NTM5MjMxMjM0MzE0MTc2MDQ5NzMyNDc0ODkyNzI0Mzg0MTgxOTA1ODcyNjM2MDAxNDg3NzAyODA2NDkzMDY5NTgxMDE5MzBuLFxuICAgICAgICAgICAgNDA4MjM2Nzg3NTg2MzQzMzY4MTMzMjIwMzQwMzE0NTQzNTU2ODMxNjg1MTMyNzU5MzQwMTIwODEwNTc0MTA3NjIxNDEyMDA5MzUzMW4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwTm9uUmVzaWR1ZUY2ID0gbW9kdWxlLmFsbG9jKFtcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDkpLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDEpLCBmMXNpemUgKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBUd29JbnYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoICBtb2RJbnYoMm4sIHEpKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIDBuLCBmMXNpemUgKVxuICAgIF0pO1xuXG4gICAgY29uc3QgcEFsdEJuMTI4VHdpc3QgPSBwTm9uUmVzaWR1ZUY2O1xuXG4gICAgY29uc3QgcFR3aXN0Q29lZkIgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMTk0ODU4NzQ3NTE3NTkzNTQ3NzEwMjQyMzkyNjEwMjE3MjA1MDU3OTA2MTg0NjkzMDE3MjEwNjU1NjQ2MzEyOTY0NTI0NTc0NzgzNzNuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgyNjY5Mjk3OTExMTk5OTExNjEyNDY5MDczODcxMzcyODM4NDI1NDUwNzY5NjUzMzI5MDAyODg1NjkzNzg1MTA5MTAzMDc2MzY2OTBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4ICsgXCJfbXVsTlI2XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGY2bVByZWZpeCA9IGJ1aWxkRjNtJDEobW9kdWxlLCBwcmVmaXgrXCJfbXVsTlI2XCIsIFwiZjZtXCIsIFwiZjJtXCIpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRfbXVsTlIxMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxOUjEyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFxuICAgICAgICAgICAgICAgIGYybVByZWZpeCArIFwiX211bFwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInhcIiksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqMikpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChuOCoyKSksXG4gICAgICAgICAgICAgICAgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QobjgqNCkpLFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjEyKCk7XG5cbiAgICBjb25zdCBmdG1QcmVmaXggPSBidWlsZEYybSQxKG1vZHVsZSwgcHJlZml4K1wiX211bE5SMTJcIiwgXCJmdG1cIiwgZjZtUHJlZml4KTtcblxuXG4gICAgY29uc3QgYXRlTG9vcENvdW50ID0gMjk3OTM5NjgyMDMxNTcwOTMyODhuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44O1xuICAgIGNvbnN0IHByZVFTaXplID0gMypuOCoyICsgYXRlTkNvZWZzKmF0ZUNvZWZTaXplO1xuXG5cbiAgICBtb2R1bGUubW9kdWxlc1twcmVmaXhdID0ge1xuICAgICAgICBuNjQ6IG42NCxcbiAgICAgICAgcEcxZ2VuOiBwRzFnZW4sXG4gICAgICAgIHBHMXplcm86IHBHMXplcm8sXG4gICAgICAgIHBHMWI6IHBHMWIsXG4gICAgICAgIHBHMmdlbjogcEcyZ2VuLFxuICAgICAgICBwRzJ6ZXJvOiBwRzJ6ZXJvLFxuICAgICAgICBwRzJiOiBwRzJiLFxuICAgICAgICBwcTogbW9kdWxlLm1vZHVsZXNbXCJmMW1cIl0ucHEsXG4gICAgICAgIHByOiBwcixcbiAgICAgICAgcE9uZVQ6IHBPbmVULFxuICAgICAgICBwcmVQU2l6ZTogcHJlUFNpemUsXG4gICAgICAgIHByZVFTaXplOiBwcmVRU2l6ZSxcbiAgICAgICAgcjogci50b1N0cmluZygpLFxuICAgICAgICBxOiBxLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgLy8gY29uc29sZS5sb2coXCJQcmVQU2l6ZTogXCIgK3ByZVBTaXplKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcIlByZVFTaXplOiBcIiArcHJlUVNpemUpO1xuXG4gICAgY29uc3QgZmluYWxFeHBaID0gNDk2NTY2MTM2NzE5Mjg0ODg4MW47XG5cbiAgICBmdW5jdGlvbiBuYWYobikge1xuICAgICAgICBsZXQgRSA9IG47XG4gICAgICAgIGNvbnN0IHJlcyA9IFtdO1xuICAgICAgICB3aGlsZSAoRSA+IDBuKSB7XG4gICAgICAgICAgICBpZiAoaXNPZGQkMShFKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSAyIC0gTnVtYmVyKEUgJSA0bik7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIHogKTtcbiAgICAgICAgICAgICAgICBFID0gRSAtIEJpZ0ludCh6KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYml0cyhuKSB7XG4gICAgICAgIGxldCBFID0gbjtcbiAgICAgICAgY29uc3QgcmVzID0gW107XG4gICAgICAgIHdoaWxlIChFID4gMG4pIHtcbiAgICAgICAgICAgIGlmIChpc09kZCQxKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcEFkZFN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwQWRkU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFgyICA9IGMuZ2V0TG9jYWwoXCJwUVwiKTtcbiAgICAgICAgY29uc3QgWTIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgWDEgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBZMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgWjEgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBFTExfMCAgPSBjLmdldExvY2FsKFwicENvZWZcIik7XG4gICAgICAgIGNvbnN0IEVMTF9WVyA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBFTExfVlYgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoMipmMnNpemUpKTtcblxuICAgICAgICBjb25zdCBEID0gRUxMX1ZXO1xuICAgICAgICBjb25zdCBFID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBGID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBHID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBIID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBJID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBKID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gRCA9IFgxIC0gWDIqWjFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDIsIFoxLCBEKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgWDEsIEQsIEQpLFxuXG4gICAgICAgICAgICAvLyBFID0gWTEgLSBZMipaMVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBZMiwgWjEsIEUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgRSwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSBEXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRCwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSBFXjJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSBEKkZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgRiwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBYMSAqIEZcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEYsIEkpLFxuXG4gICAgICAgICAgICAvLyBKID0gSCArIFoxKkcgLSAoSStJKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBJLCBJLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBaMSwgRywgSiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEgsIEosIEopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBKLCBBVVgsIEopLFxuXG5cbiAgICAgICAgICAgIC8vIFgzIChYMSkgPSBEKkpcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRCwgSiwgWDEpLFxuXG4gICAgICAgICAgICAvLyBZMyAoWTEpID0gRSooSS1KKS0oSCpZMSlcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgSCwgWTEsIFkxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgSSwgSiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBBVVgsIFkxLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBaMSpIXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFoxLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiAoRSAqIFgyIC0gRCAqIFkyKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBELCBZMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgRSwgWDIsIEVMTF8wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRUxMXzAsIEFVWCwgRUxMXzApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBFTExfMCwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBFTExfMCksXG5cblxuICAgICAgICAgICAgLy8gZWxsX1ZWID0gLSBFIChsYXRlcjogKiB4UClcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9uZWdcIiwgRSwgRUxMX1ZWKSxcblxuICAgICAgICAgICAgLy8gZWxsX1ZXID0gRCAobGF0ZXI6ICogeVAgICAgKVxuICAgICAgICAgICAgLy8gQWxyZWFkeSBhc3NpZ25lZFxuXG4gICAgICAgICk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwRGJsU3RlcFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicENvZWZcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBYMSAgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IFkxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBaMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEVMTF8wICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcbiAgICAgICAgY29uc3QgRUxMX1ZXID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEVMTF9WViAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IEEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEcgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEUyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBBID0gWDEgKiBZMSAvIDJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWTEsIGMuaTMyX2NvbnN0KHBUd29JbnYpLCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWDEsIEEsIEEpLFxuXG4gICAgICAgICAgICAvLyBCID0gWTFeMlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBZMSwgQiksXG5cbiAgICAgICAgICAgIC8vIEMgPSBaMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFoxLCBDKSxcblxuICAgICAgICAgICAgLy8gRCA9IDMgKiBDXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEMsIEMsIEQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBELCBDLCBEKSxcblxuICAgICAgICAgICAgLy8gRSA9IHR3aXN0X2IgKiBEXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBUd2lzdENvZWZCKSwgRCwgRSksXG5cbiAgICAgICAgICAgIC8vIEYgPSAzICogRVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBFLCBFLCBGKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRSwgRiwgRiksXG5cbiAgICAgICAgICAgIC8vIEcgPSAoQitGKS8yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEIsIEYsIEcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBHLCBjLmkzMl9jb25zdChwVHdvSW52KSwgRyksXG5cbiAgICAgICAgICAgIC8vIEggPSAoWTErWjEpXjItKEIrQylcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQiwgQywgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgWTEsIFoxLCBIKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgSCwgSCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIEgsIEFVWCwgSCksXG5cbiAgICAgICAgICAgIC8vIEkgPSBFLUJcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgRSwgQiwgSSksXG5cbiAgICAgICAgICAgIC8vIEogPSBYMV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFgxLCBKKSxcblxuICAgICAgICAgICAgLy8gRV9zcXVhcmVkID0gRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIEUsIEUyKSxcblxuICAgICAgICAgICAgLy8gWDMgKFgxKSA9IEEgKiAoQi1GKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBCLCBGLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBLCBBVVgsIFgxKSxcblxuICAgICAgICAgICAgLy8gWTMgKFkxKSA9IEdeMiAtIDMqRV4yXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEUyLCBFMiwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgRTIsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRywgWTEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBZMSwgQVVYLCBZMSksXG5cbiAgICAgICAgICAgIC8vIFozIChaMSkgPSBCICogSFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBCLCBILCBaMSksXG5cbiAgICAgICAgICAgIC8vIGVsbF8wID0geGkgKiBJXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBBbHRCbjEyOFR3aXN0KSwgSSwgRUxMXzApLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlcgPSAtIEggKGxhdGVyOiAqIHlQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCBILCBFTExfVlcpLFxuXG4gICAgICAgICAgICAvLyBlbGxfVlYgPSAzKkogKGxhdGVyOiAqIHhQKVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBKLCBFTExfVlYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBKLCBFTExfVlYsIEVMTF9WViksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5USgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXggKyBcIl9tdWxCeVFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwMVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInByXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJwMVwiKTtcbiAgICAgICAgY29uc3QgeSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicDFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB6ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwMVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcbiAgICAgICAgY29uc3QgeDMgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHkzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHozID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBNdWxCeVFYID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjIxNTc1NDYzNjM4MjgwODQzMDEwMzk4MzI0MjY5NDMwODI2MDk5MjY5MDQ0Mjc0MzQ3MjE2ODI3MjEyNjEzODY3ODM2NDM1MDI3MjYxXCIpLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShcIjEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0XCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IE11bEJ5UVkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KFwiMjgyMTU2NTE4MjE5NDUzNjg0NDU0ODE1OTU2MTY5MzUwMjY1OTM1OTYxNzE4NTI0NDEyMDM2NzA3ODA3OTU1NDE4NjQ4NDEyNjU1NFwiKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQyLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoXCIzNTA1ODQzNzY3OTExNTU2Mzc4Njg3MDMwMzA5OTg0MjQ4ODQ1NTQwMjQzNTA5ODk5MjU5NjQxMDEzNjc4MDkzMDMzMTMwOTMwNDAzXCIpLCBmMXNpemUgKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIC8vIFRoZSBmcm9iZW5pdXNNYXAoMSkgaW4gdGhpcyBmaWVsZCwgaXMgdGhlIGNvbmp1Z2F0ZVxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCB4LCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIE11bEJ5UVgsIHgzLCB4MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHksIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgTXVsQnlRWSwgeTMsIHkzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeiwgejMpLFxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzIoKSB7XG4gICAgICAgIGJ1aWxkTXVsQnlRKCk7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZExvY2FsKFwicENvZWZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgUVggPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuICAgICAgICBjb25zdCBSWCA9IGMuaTMyX2NvbnN0KHBSKTtcbiAgICAgICAgY29uc3QgUlkgPSBjLmkzMl9jb25zdChwUitmMnNpemUpO1xuICAgICAgICBjb25zdCBSWiA9IGMuaTMyX2NvbnN0KHBSKzIqZjJzaXplKTtcblxuICAgICAgICBjb25zdCBjUVggPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoMCkpO1xuICAgICAgICBjb25zdCBjUVkgPSBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgcFExID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSozKTtcbiAgICAgICAgY29uc3QgUTEgPSBjLmkzMl9jb25zdChwUTEpO1xuXG4gICAgICAgIGNvbnN0IHBRMiA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IFEyID0gYy5pMzJfY29uc3QocFEyKTtcbiAgICAgICAgY29uc3QgUTJZID0gYy5pMzJfY29uc3QocFEyICsgZjJzaXplKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfbm9ybWFsaXplXCIsIFFYLCBjUVgpLCAgLy8gVE9ETyBSZW1vdmUgaWYgYWxyZWFkeSBpbiBhZmZpbmVcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIGNRWCwgUlgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgY1FZLCBSWSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfb25lXCIsIFJaKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKCBjLmdldExvY2FsKFwicHByZVFcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSozKSkpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9wcmVwRGJsU3RlcFwiLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgY1FYLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9tdWxCeVFcIiwgY1FYLCBRMSksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfbXVsQnlRXCIsIFExLCBRMilcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIFEyWSwgUTJZKSxcblxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBBZGRTdGVwXCIsIFExLCBSLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfcHJlcEFkZFN0ZXBcIiwgUTIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICBjLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRNdWxCeTAyNE9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBFbGwwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZXXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbFZWXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgICAgICAgICAgLy8gUmVzdWx0IGluIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeDAgID0gYy5nZXRMb2NhbChcInBFbGwwXCIpO1xuICAgICAgICBjb25zdCB4MiAgPSBjLmdldExvY2FsKFwicEVsbFZWXCIpO1xuICAgICAgICBjb25zdCB4NCAgPSBjLmdldExvY2FsKFwicEVsbFZXXCIpO1xuXG4gICAgICAgIGNvbnN0IHowICA9IGMuZ2V0TG9jYWwoXCJwUlwiKTtcblxuICAgICAgICBjb25zdCBwQVVYMTIgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQVVYMTIgPSBjLmkzMl9jb25zdChwQVVYMTIpO1xuICAgICAgICBjb25zdCBBVVgxMl8wID0gYy5pMzJfY29uc3QocEFVWDEyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfMiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUpO1xuICAgICAgICBjb25zdCBBVVgxMl80ID0gYy5pMzJfY29uc3QocEFVWDEyK2Yyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgQVVYMTJfNiA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IEFVWDEyXzggPSBjLmkzMl9jb25zdChwQVVYMTIrZjJzaXplKjQpO1xuICAgICAgICBjb25zdCBBVVgxMl8xMCA9IGMuaTMyX2NvbnN0KHBBVVgxMitmMnNpemUqNSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfY29weVwiLCB4MCwgQVVYMTJfMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfemVyb1wiLCBBVVgxMl8yKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9jb3B5XCIsIHgyLCBBVVgxMl80KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl96ZXJvXCIsIEFVWDEyXzYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2NvcHlcIiwgeDQsIEFVWDEyXzgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3plcm9cIiwgQVVYMTJfMTApLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBBVVgxMiwgejAsIHowKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZE11bEJ5MDI0KCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX211bEJ5MDI0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEVsbDBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVldcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRWxsVlZcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUlwiLCBcImkzMlwiKTsgICAgICAgICAgICAvLyBSZXN1bHQgaW4gRjEyXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCAgPSBjLmdldExvY2FsKFwicEVsbDBcIik7XG4gICAgICAgIGNvbnN0IHgyICA9IGMuZ2V0TG9jYWwoXCJwRWxsVlZcIik7XG4gICAgICAgIGNvbnN0IHg0ICA9IGMuZ2V0TG9jYWwoXCJwRWxsVldcIik7XG5cbiAgICAgICAgY29uc3QgejAgID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCB6MSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCgyKm44KSk7XG4gICAgICAgIGNvbnN0IHoyICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDQqbjgpKTtcbiAgICAgICAgY29uc3QgejMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoNipuOCkpO1xuICAgICAgICBjb25zdCB6NCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdCg4Km44KSk7XG4gICAgICAgIGNvbnN0IHo1ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicFJcIiksIGMuaTMyX2NvbnN0KDEwKm44KSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgczAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IFQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBUNCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBENCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgUzEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IEFVWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIC8vIEQwID0gejAgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejAsIHgwLCBEMCksXG4gICAgICAgICAgICAvLyBEMiA9IHoyICogeDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoyLCB4MiwgRDIpLFxuICAgICAgICAgICAgLy8gRDQgPSB6NCAqIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6NCwgeDQsIEQ0KSxcbiAgICAgICAgICAgIC8vIHQyID0gejAgKyB6NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgejAsIHo0LCB0MiksXG4gICAgICAgICAgICAvLyB0MSA9IHowICsgejI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHowLCB6MiwgdDEpLFxuICAgICAgICAgICAgLy8gczAgPSB6MSArIHozICsgejU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHoxLCB6MywgczApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBzMCwgejUsIHMwKSxcblxuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5hXyA9IHowLlxuICAgICAgICAgICAgLy8gUzEgPSB6MSAqIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB6MSwgeDIsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gUzEgKyBENDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUzEsIEQ0LCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMyArIEQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIEQwLCB6MCksXG4gICAgICAgICAgICAvLyB6MCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5hXy5iXyA9IHoxXG4gICAgICAgICAgICAvLyBUMyA9IHo1ICogeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHo1LCB4NCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBEMjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDMsIEQyLCBUMyksXG4gICAgICAgICAgICAvLyBUNCA9IG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgYy5pMzJfY29uc3QocE5vblJlc2lkdWVGNiksIFQzLCBUNCksXG4gICAgICAgICAgICAvLyBUMyA9IHoxICogeDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHoxLCB4MCwgVDMpLFxuICAgICAgICAgICAgLy8gUzEgPSBTMSArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBTMSwgVDMsIFMxKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6MSksXG4gICAgICAgICAgICAvLyB6MSA9IFQ0O1xuXG5cblxuICAgICAgICAgICAgLy8gRm9yIHouYV8uY18gPSB6MlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDIsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDEgKiB0MCAtIEQwIC0gRDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDIsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gejMgKiB4NDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHg0LCBUNCksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUNCwgUzEpLFxuXG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmFfID0gejMgKHozIG5lZWRzIHoyKVxuICAgICAgICAgICAgLy8gdDAgPSB6MiArIHo0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB6MiwgejQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gVDMgKyBUNDtcbiAgICAgICAgICAgIC8vIHoyID0gVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFQzLCBUNCwgejIpLFxuICAgICAgICAgICAgLy8gdDEgPSB4MiArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgeDQsIHQxKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDAgKiB0MSAtIEQyIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMiwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgVDMsIFQ0KSxcbiAgICAgICAgICAgIC8vIFQzID0gejMgKiB4MDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejMsIHgwLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBUNCArIFQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBUNCwgVDMsIHozKSxcbiAgICAgICAgICAgIC8vIHozID0gVDQ7XG5cbiAgICAgICAgICAgIC8vIEZvciB6LmJfLmJfID0gejRcbiAgICAgICAgICAgIC8vIFQzID0gejUgKiB4MjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgejUsIHgyLCBUMyksXG4gICAgICAgICAgICAvLyBTMSA9IFMxICsgVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFMxLCBUMywgUzEpLFxuICAgICAgICAgICAgLy8gVDQgPSBteV9GcDY6Om5vbl9yZXNpZHVlICogVDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCBUMywgVDQpLFxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHg0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gdDIgKiB0MCAtIEQwIC0gRDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MCwgVDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBEMCwgRDQsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFQzLCBBVVgsIFQzKSxcbiAgICAgICAgICAgIC8vIFQ0ID0gVDQgKyBUMztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgVDQsIFQzLCB6NCksXG4gICAgICAgICAgICAvLyB6NCA9IFQ0O1xuXG4gICAgICAgICAgICAvLyBGb3Igei5iXy5jXyA9IHo1LlxuICAgICAgICAgICAgLy8gdDAgPSB4MCArIHgyICsgeDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MiwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgeDQsIHQwKSxcbiAgICAgICAgICAgIC8vIFQzID0gczAgKiB0MCAtIFMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBzMCwgdDAsIFQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgVDMsIFMxLCB6NSksXG4gICAgICAgICAgICAvLyB6NSA9IFQzO1xuXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQX1BYID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuICAgICAgICBjb25zdCBwcmVQX1BZID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgY29uc3QgRUxMXzAgID0gYy5nZXRMb2NhbChcInBDb2VmXCIpO1xuICAgICAgICBjb25zdCBFTExfVlcgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgRUxMX1ZWICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG5cblxuICAgICAgICBjb25zdCBwVlcgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlcgPSBjLmkzMl9jb25zdChwVlcpO1xuICAgICAgICBjb25zdCBwVlYgPSBtb2R1bGUuYWxsb2MoZjJzaXplKTtcbiAgICAgICAgY29uc3QgVlYgPSBjLmkzMl9jb25zdChwVlYpO1xuXG4gICAgICAgIGNvbnN0IEYgPSBjLmdldExvY2FsKFwiclwiKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgRiksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSwgYy5pMzJfY29uc3QoZjJzaXplKjMpKSksXG5cbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX2NvbnN0KGF0ZUxvb3BCaXRCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG5cblxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcscHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9fbXVsQnkwMjRcIiwgRUxMXzAsIFZXLCBWViwgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG5cbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcblxuICAgICAgICApO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WVywgcHJlUF9QWSwgVlcpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgRUxMX1ZWLCBwcmVQX1BYLCBWViksXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX211bEJ5MDI0XCIsIEVMTF8wLCBWVywgVlYsIEYpLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsMVwiLCBFTExfVlcsIHByZVBfUFksIFZXKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWwxXCIsIEVMTF9WViwgcHJlUF9QWCwgVlYpLFxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19tdWxCeTAyNFwiLCBFTExfMCwgVlcsIFZWLCBGKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzgzNzYxMTg4NjU3NjM4MjE0OTY1ODM5NzM4Njc2MjYzNjQwOTI1ODk5MDYwNjU4NjgyOTg3NzY5MDk2MTc5MTYwMTg3NjgzNDAwODBuLCAxNjQ2OTgyMzMyMzA3NzgwODIyMzg4OTEzNzI0MTE3NjUzNjc5OTAwOTI4NjY0NjEwODE2OTkzNTY1OTMwMTYxMzk2MTcxMjE5ODMxNm5dLFxuICAgICAgICAgICAgICAgIFsyMTg4ODI0Mjg3MTgzOTI3NTIyMDA0MjQ0NTI2MDEwOTE1MzE2NzI3NzcwNzQxNDQ3MjA2MTY0MTcxNDc1ODYzNTc2NTAyMDU1NjYxN24sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTE2OTc0MjM0OTYzNTgxNTQzMDQ4MjU3ODI5MjI1ODQ3MjUzMTI5MTIzODM0NDExNTk1MDUwMzg3OTQwMjcxMDU3Nzg5NTQxODQzMTluLCAzMDM4NDczODkxMzUwNjU4ODc0MjI3ODM0NTQ4Nzc2MDk5NDE0NTYzNDkxODg5MTk3MTkyNzIzNDUwODM5NTQ0Mzc4NjA0MDk2MDFuXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMzMjEzMDQ2MzA1OTQzMzI4MDgyNDE4MDkwNTQ5NTgzNjEyMjAzMjI0NzczNzUyOTEyMDYyNjE4ODQ0MDkxODk3NjAxODU4NDQyMzluLCA1NzIyMjY2OTM3ODk2NTMyODg1NzgwMDUxOTU4OTU4MzQ4MjMxMTQzMzczNzAwMTA5MzcyOTk5Mzc0ODIwMjM1MTIxMzc0NDE5ODY4bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgybiwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMzUxMjEyNDAwNjA3NTQ1MzcyNTY2MjQzMTg3NzYzMDkxMDk5NjEwNjQwNTA5MTQyOTUyNDg4NTc3OTQxOTk3ODYyNjQ1Nzg2ODUwM24sIDU0MTg0MTk1NDg3NjE0NjY5OTgzNTcyNjg1MDQwODA3MzgyODk2ODcwMjQ1MTExODk2NTM3MjcwMjk3MzYyODA2ODM1MTQwMTAyNjduXSxcbiAgICAgICAgICAgICAgICBbMjIwMzk2MDQ4NTE0ODEyMTkyMTQxODYwMzc0MjgyNTc2MjAyMDk3NDI3OTI1ODg4MDIwNTY1MTk2Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTAxOTA4MTkzNzU0ODExMjA5MTc0MjA2MjI4MjI2NzI1NDk3NzU3ODM5Mjc3MTYxMzgzMTg2MjM4OTUwMTA3ODg4NjYyNzIwMjQyNjRuLCAyMTU4NDM5NTQ4MjcwNDIwOTMzNDgyMzYyMjI5MDM3OTY2NTE0NzIzOTk2MTk2ODM3ODEwNDM5MDM0Mzk1Mzk0MDIwNzM2NTc5ODk4Mm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY3biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODU2NjkzODI0MTI0NDk0MjQxNDAwNDU5NjY5MDI5ODkxMzg2ODM3MzgzMzc4MjAwNjYxNzQwMDgwNDYyODcwNDg4NTA0MDM2NDM0NG4sIDE2MTY1OTc1OTMzOTQyNzQyMzM2NDY2MzUzNzg2Mjk4OTI2ODU3NTUyOTM3NDU3MTg4NDUwNjYzMzE0MjE3NjU5NTIzODUxNzg4NzE1bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyMTU3NTQ2MzYzODI4MDg0MzAxMDM5ODMyNDI2OTQzMDgyNjA5OTI2OTA0NDI3NDM0NzIxNjgyNzIxMjYxMzg2NzgzNjQzNTAyNzI2MW4sIDEwMzA3NjAxNTk1ODczNzA5NzAwMTUyMjg0MjczODE2MTEyMjY0MDY5MjMwMTMwNjE2NDM2NzU1NjI1MTk0ODU0ODE1ODc1NzEzOTU0bl0sXG4gICAgICAgICAgICAgICAgWzIxODg4MjQyODcxODM5Mjc1MjIwMDQyNDQ1MjYwMTA5MTUzMTY3Mjc3NzA3NDE0NDcyMDYxNjQxNzE0NzU4NjM1NzY1MDIwNTU2NjE2biwgMG5dLFxuICAgICAgICAgICAgICAgIFszNzcyMDAwODgxOTE5ODUzNzc2NDMzNjk1MTg2NzEzODU4MjM5MDA5MDczNTkzODE3MTk1NzcxNzczMzgxOTE5MzE2NDE5MzQ1MjYxbiwgMjIzNjU5NTQ5NTk2NzI0NTE4ODI4MTcwMTI0ODIwMzE4MTc5NTEyMTA2ODkwMjYwNTg2MTIyNzg1NTI2MTEzNzgyMDk0NDAwODkyNm5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxODQyOTAyMTIyMzQ3Nzg1MzY1NzY2MDc5MjAzNDM2OTg2NTgzOTExNDUwNDQ0NjQzMTIzNDcyNjM5MjA4MDAwMjEzNzU5ODA0NDY0NG4sIDkzNDQwNDU3Nzk5OTgzMjAzMzM4MTI0MjAyMjMyMzc5ODEwMjk1MDYwMTIxMjQwNzU1MjU2NzkyMDg1ODE5MDIwMDg0MDY0ODU3MDNuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzI1ODE5MTEzNDQ0NjcwMDkzMzUyNjczMTExMTU0Njg4MDMwOTk1NTE2NjU2MDUwNzYxOTY3NDA4Njc4MDUyNTg1NjgyMzQzNDYzMzhuLCAxOTkzNzc1Njk3MTc3NTY0Nzk4Nzk5NTkzMjE2OTkyOTM0MTk5NDMxNDY0MDY1Mjk2NDk0OTQ0ODMxMzM3NDQ3MjQwMDcxNjY2MTAzMG5dLFxuICAgICAgICAgICAgICAgIFsyMjAzOTYwNDg1MTQ4MTIxOTIxNDE4NjAzNzQyODI1NzYyMDIwOTc0Mjc5MjU4ODgwMjA1NjUxOTY2biwgMG5dLFxuICAgICAgICAgICAgICAgIFs1MzI0NDc5MjAyNDQ5OTAzNTQyNzI2NzgzMzk1NTA2MjE0NDgxOTI4MjU3NzYyNDAwNjQzMjc5NzgwMzQzMzY4NTU3Mjk3MTM1NzE4biwgMTYyMDg5MDAzODA3Mzc2OTMwODQ5MTk0OTUxMjczMzQzODc5ODEzOTM3MjY0MTk4NTY4ODg3OTk5MTc5MTQxODA5ODg4NDQxMjMwMzluXSxcbiAgICAgICAgICAgICAgICBbMjE4ODgyNDI4NzE4MzkyNzUyMjAwNDI0NDUyNjAxMDkxNTMxNjcyNzc3MDc0MTQ0NzIwNjE2NDE3MTQ3NTg2MzU3NjUwMjA1NTY2MTZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzEzOTgxODUyMzI0OTIyMzYyMzQ0MjUyMzExMjM0MjgyMjU3NTA3MjE2Mzg3Nzg5ODIwOTgzNjQyMDQwODg5MjY3NTE5Njk0NzI2NTI3biwgNzYyOTgyODM5MTE2NTIwOTM3MTU3NzM4NDE5MzI1MDgyMDIwMTY4NDI1NTI0MTc3MzgwOTA3NzE0Njc4NzEzNTkwMDg5MTYzMzA5N25dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDIuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCAzMiksXG4gICAgICAgICAgICAgICAgLi4udXRpbHMkMi5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoY29lZlsxXSksIDMyKSxcbiAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgaWYgKG4lMiA9PSAxKSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBYYzAsIFJjMCksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9uZWdcIiwgWGMxLCBSYzEpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFIsIGMuaTMyX2NvbnN0KHBDb2VmKSwgUiksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgWCwgYy5pMzJfY29uc3QocENvZWYpLCBSKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBtdWwyKGEsIGIpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjMCA9IEJpZ0ludChhWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IEJpZ0ludChhWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMCA9IEJpZ0ludChiWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IGJjMSA9IEJpZ0ludChiWzFdKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKCAgYWMxICogYmMxKSAgKSAlIHEsXG4gICAgICAgICAgICAgICAgKGFjMCAqIGJjMSArICggIGFjMSAqIGJjMCkgICkgJSBxLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGlmIChpc05lZ2F0aXZlJDIocmVzWzBdKSkgcmVzWzBdID0gcmVzWzBdICsgcTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25GaXJzdENodW5rKCkge1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCBlbHRDMCA9IGVsdDtcbiAgICAgICAgY29uc3QgZWx0QzEgPSBjLmkzMl9hZGQoZWx0LCBjLmkzMl9jb25zdChuOCo2KSk7XG4gICAgICAgIGNvbnN0IHIgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgcEEgPSBtb2R1bGUuYWxsb2MoZnRzaXplKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KHBBKTtcbiAgICAgICAgY29uc3QgQWMwID0gQTtcbiAgICAgICAgY29uc3QgQWMxID0gYy5pMzJfY29uc3QocEEgKyBuOCo2KTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBBID0gYWx0X2JuMTI4X0ZxMTIoZWx0LmMwLC1lbHQuYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgZWx0QzAsIEFjMCksXG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfbmVnXCIsIGVsdEMxLCBBYzEpLFxuXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBCID0gZWx0LmludmVyc2UoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9pbnZlcnNlXCIsIGVsdCwgQiksXG5cbiAgICAgICAgICAgIC8vIGNvbnN0IGFsdF9ibjEyOF9GcTEyIEMgPSBBICogQjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgQSwgQiwgQyksXG4gICAgICAgICAgICAvLyBjb25zdCBhbHRfYm4xMjhfRnExMiBEID0gQy5Gcm9iZW5pdXNfbWFwKDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEMsIEQpLFxuICAgICAgICAgICAgLy8gY29uc3QgYWx0X2JuMTI4X0ZxMTIgcmVzdWx0ID0gRCAqIEM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEQsIHIpLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgxLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MCwgdDAsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHgxLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgQVVYLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MSksXG5cbiAgICAgICAgICAgIC8vICAvLyB0MiArIHQzKnkgPSAoejIgKyB6Myp5KV4yID0gYl4yXG4gICAgICAgICAgICAvLyAgdG1wID0gejIgKiB6MztcbiAgICAgICAgICAgIC8vICB0MiA9ICh6MiArIHozKSAqICh6MiArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6MykgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQzID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MiwgeDMsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgzLCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgQVVYLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0MyksXG5cbiAgICAgICAgICAgIC8vICAvLyB0NCArIHQ1KnkgPSAoejQgKyB6NSp5KV4yID0gY14yXG4gICAgICAgICAgICAvLyAgdG1wID0gejQgKiB6NTtcbiAgICAgICAgICAgIC8vICB0NCA9ICh6NCArIHo1KSAqICh6NCArIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB6NSkgLSB0bXAgLSBteV9GcDY6Om5vbl9yZXNpZHVlICogdG1wO1xuICAgICAgICAgICAgLy8gIHQ1ID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4NCwgeDUsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHg1LCBjLmkzMl9jb25zdChwTm9uUmVzaWR1ZUY2KSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDQsIHg1LCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQ0LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIGMuaTMyX2NvbnN0KHBOb25SZXNpZHVlRjYpLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEFsdEJuMTI4VHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9fY3ljbG90b21pY0V4cF9cIitmbk5hbWUpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJiaXRcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJpXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgeCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGMuZ2V0TG9jYWwoXCJyXCIpO1xuXG4gICAgICAgIGNvbnN0IGludmVyc2UgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHgsIGludmVyc2UpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX29uZVwiLCByZXMpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0xKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9jb25zdCgxKVxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIGludmVyc2UsIHJlcyksXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoZXhwb25lbnROYWZCeXRlcy5sZW5ndGgtMikpLFxuICAgICAgICAgICAgYy5ibG9jayhjLmxvb3AoXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHJlcywgcmVzKSxcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLnRlZUxvY2FsKFwiYml0XCIsIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBFeHBvbmVudE5hZkJ5dGVzKSksXG4gICAgICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwiYml0XCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCByZXMsIHgsIHJlcyksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5icl9pZigxLCBjLmkzMl9lcXogKCBjLmdldExvY2FsKFwiaVwiKSApKSxcbiAgICAgICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9zdWIoYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpKSksXG4gICAgICAgICAgICAgICAgYy5icigwKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgKTtcbiAgICB9XG5cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uTGFzdENodW5rKCkge1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNTcXVhcmUoKTtcbiAgICAgICAgYnVpbGRDeWNsb3RvbWljRXhwKGZpbmFsRXhwWiwgXCJ3MFwiKTtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfX2ZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmtcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgQSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgQyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgRyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgSyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgTyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgUyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgVSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cblxuICAgICAgICAgICAgLy8gQSA9IGV4cF9ieV9uZWdfeihlbHQpICAvLyA9IGVsdF4oLXopXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgZWx0LCBBKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgQSwgQSksXG4gICAgICAgICAgICAvLyBCID0gQV4yICAgICAgICAgICAgICAgIC8vID0gZWx0XigtMip6KVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEEsIEIpLFxuICAgICAgICAgICAgLy8gQyA9IEJeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oLTQqeilcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY1NxdWFyZVwiLCBCLCBDKSxcbiAgICAgICAgICAgIC8vIEQgPSBDICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKC02KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIEMsIEIsIEQpLFxuICAgICAgICAgICAgLy8gRSA9IGV4cF9ieV9uZWdfeihEKSAgICAvLyA9IGVsdF4oNip6XjIpXG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgRCwgRSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEUsIEUpLFxuICAgICAgICAgICAgLy8gRiA9IEVeMiAgICAgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4yKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIEUsIEYpLFxuICAgICAgICAgICAgLy8gRyA9IGVweF9ieV9uZWdfeihGKSAgICAvLyA9IGVsdF4oLTEyKnpeMylcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiLCBGLCBHKSxcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRywgRyksXG4gICAgICAgICAgICAvLyBIID0gY29uaihEKSAgICAgICAgICAgIC8vID0gZWx0Xig2KnopXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIEQsIEgpLFxuICAgICAgICAgICAgLy8gSSA9IGNvbmooRykgICAgICAgICAgICAvLyA9IGVsdF4oMTIqel4zKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCBHLCBJKSxcbiAgICAgICAgICAgIC8vIEogPSBJICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBJLCBFLCBKKSxcbiAgICAgICAgICAgIC8vIEsgPSBKICogSCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNip6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBKLCBILCBLKSxcbiAgICAgICAgICAgIC8vIEwgPSBLICogQiAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6KVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCBLLCBCLCBMKSxcbiAgICAgICAgICAgIC8vIE0gPSBLICogRSAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeilcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgSywgRSwgTSksXG5cbiAgICAgICAgICAgIC8vIE4gPSBNICogZWx0ICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDEyKnpeMiArIDYqeiArIDEpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIE0sIGVsdCwgTiksXG5cbiAgICAgICAgICAgIC8vIE8gPSBMLkZyb2Jlbml1c19tYXAoMSkgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwMVwiLCBMLCBPKSxcbiAgICAgICAgICAgIC8vIFAgPSBPICogTiAgICAgICAgICAgICAgLy8gPSBlbHReKHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgTywgTiwgUCksXG4gICAgICAgICAgICAvLyBRID0gSy5Gcm9iZW5pdXNfbWFwKDIpIC8vID0gZWx0XihxXjIgKiAoMTIqel4zICsgNip6XjIgKyA2KnopKVxuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19mcm9iZW5pdXNNYXAyXCIsIEssIFEpLFxuICAgICAgICAgICAgLy8gUiA9IFEgKiBQICAgICAgICAgICAgICAvLyA9IGVsdF4ocV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUSwgUCwgUiksXG4gICAgICAgICAgICAvLyBTID0gY29uaihlbHQpICAgICAgICAgIC8vID0gZWx0XigtMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgZWx0LCBTKSxcbiAgICAgICAgICAgIC8vIFQgPSBTICogTCAgICAgICAgICAgICAgLy8gPSBlbHReKDEyKnpeMyArIDYqel4yICsgNCp6IC0gMSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgUywgTCwgVCksXG4gICAgICAgICAgICAvLyBVID0gVC5Gcm9iZW5pdXNfbWFwKDMpIC8vID0gZWx0XihxXjMoMTIqel4zICsgNip6XjIgKyA0KnogLSAxKSlcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZnJvYmVuaXVzTWFwM1wiLCBULCBVKSxcbiAgICAgICAgICAgIC8vIFYgPSBVICogUiAgICAgICAgICAgICAgLy8gPSBlbHReKHFeMygxMip6XjMgKyA2KnpeMiArIDQqeiAtIDEpICsgcV4yICogKDEyKnpeMyArIDYqel4yICsgNip6KSArIHEqKDEyKnpeMyArIDYqel4yICsgNCp6KSAqICgxMip6XjMgKyAxMip6XjIgKyA2KnogKyAxKSlcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgVSwgUiwgcmVzdWx0KSxcbiAgICAgICAgICAgIC8vIHJlc3VsdCA9IFZcbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpIHtcbiAgICAgICAgYnVpbGRGaW5hbEV4cG9uZW50aWF0aW9uRmlyc3RDaHVuaygpO1xuICAgICAgICBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25MYXN0Q2h1bmsoKTtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgZWx0VG9GaXJzdENodW5rID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkZpcnN0Q2h1bmtcIiwgZWx0LCBlbHRUb0ZpcnN0Q2h1bmsgKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9fZmluYWxFeHBvbmVudGlhdGlvbkxhc3RDaHVua1wiLCBlbHRUb0ZpcnN0Q2h1bmssIHJlc3VsdCApXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb25PbGQoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgZXhwb25lbnQgPSA1NTI0ODQyMzM2MTMyMjQwOTYzMTI2MTcxMjY3ODMxNzMxNDcwOTczODIxMDM3NjI5NTc2NTQxODg4ODI3MzQzMTQxOTY5MTA4Mzk5MDc1NDEyMTM5NzQ1MDI3NjE1NDA2Mjk4MTcwMDk2MDg1NDg2NTQ2ODAzNDM2Mjc3MDExNTM4Mjk0NDY3NDc4MTA5MDczNzMyNTY4NDE1NTEwMDYyMDE2Mzk2Nzc3MjYxMzk5NDYwMjkxOTk5Njg0MTI1OTg4MDQ4ODIzOTE3MDIyNzMwMTkwODM2NTMyNzIwNDc1NjYzMTY1ODQzNjU1NTk3NzY0OTMwMjc0OTU0NTgyMzgzNzM5MDI4NzU5Mzc2NTk5NDM1MDQ4NzMyMjA1NTQxNjE1NTA1MjU5MjYzMDIzMDMzMzE3NDc0NjM1MTU2NDQ3MTE4NzY2NTMxNzcxMjk1NzgzMDMxOTEwOTU5MDA5MDkxOTE2MjQ4MTc4MjY1NjY2ODgyNDE4MDQ0MDgwODE4OTI3ODU3MjU5Njc5MzE3MTQwOTc3MTY3MDk1MjYwOTIyNjEyNzgwNzE5NTI1NjAxNzExMTE0NDQwNzIwNDkyMjkxMjM1NjUwNTc0ODM3NTAxNjE0NjAwMjQzNTMzNDYyODQxNjcyODI0NTI3NTYyMTc2NjIzMzU1Mjg4MTM1MTkxMzk4MDgyOTExNzA1MzkwNzIxMjUzODEyMzA4MTU3MjkwNzE1NDQ4NjE2MDI3NTA5MzY5NjQ4MjkzMTM2MDgxMzczMjU0MjYzODM3MzUxMjIxNzUyMjk1NDExNTUzNzYzNDY0MzYwOTM5MzAyODc0MDIwODk1MTc0MjY5NzMxNzg5MTc1Njk3MTMzODQ3NDgwODE4MjcyNTU0NzI1NzY5Mzc0NzE0OTYxOTU3NTI3MjcxODgyNjE0MzU2MzMyNzEyMzg3MTAxMzE3MzYwOTYyOTk3OTgxNjg4NTI5MjU1NDA1NDkzNDIzMzA3NzUyNzk4NzcwMDY3ODQzNTQ4MDE0MjIyNDk3MjI1NzM3ODM1NjE2ODUxNzk2MTg4MTY0ODAwMzc2OTUwMDU1MTU0MjYxNjIzNjI0MzEwNzIyNDU2MzgzMjQ3NDQ0ODBuO1xuXG4gICAgICAgIGNvbnN0IHBFeHBvbmVudCA9IG1vZHVsZS5hbGxvYyh1dGlscyQyLmJpZ0ludDJCeXRlc0xFKCBleHBvbmVudCwgMzUyICkpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2V4cFwiLCBjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QocEV4cG9uZW50KSwgYy5pMzJfY29uc3QoMzUyKSwgYy5nZXRMb2NhbChcInJcIikpLFxuICAgICAgICApO1xuICAgIH1cblxuXG5cblxuICAgIGNvbnN0IHBQcmVQID0gbW9kdWxlLmFsbG9jKHByZVBTaXplKTtcbiAgICBjb25zdCBwUHJlUSA9IG1vZHVsZS5hbGxvYyhwcmVRU2l6ZSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmdFcXVhdGlvbihuUGFpcmluZ3MpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcGFpcmluZ0VxXCIrblBhaXJpbmdzKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicF9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgICAgIGYuYWRkUGFyYW0oXCJxX1wiK2ksIFwiaTMyXCIpO1xuICAgICAgICB9XG4gICAgICAgIGYuYWRkUGFyYW0oXCJjXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IHJlc1QgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IGF1eFQgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChmdG1QcmVmaXggKyBcIl9vbmVcIiwgcmVzVCApKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBhaXJpbmdzOyBpKyspIHtcblxuICAgICAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9wcmVwYXJlRzFcIiwgYy5nZXRMb2NhbChcInBfXCIraSksIGMuaTMyX2NvbnN0KHBQcmVQKSApKTtcbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgYnVpbGRQcmVwQWRkU3RlcCgpO1xuICAgIGJ1aWxkUHJlcERvdWJsZVN0ZXAoKTtcblxuICAgIGJ1aWxkUHJlcGFyZUcxKCk7XG4gICAgYnVpbGRQcmVwYXJlRzIoKTtcblxuICAgIGJ1aWxkTXVsQnkwMjQoKTtcbiAgICBidWlsZE11bEJ5MDI0T2xkKCk7XG4gICAgYnVpbGRNaWxsZXJMb29wKCk7XG5cblxuICAgIGZvciAobGV0IGk9MDsgaTwxMDsgaSsrKSB7XG4gICAgICAgIGJ1aWxkRnJvYmVuaXVzTWFwKGkpO1xuICAgICAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2Zyb2Jlbml1c01hcFwiK2kpO1xuICAgIH1cblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX3ByZXBhcmVHMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9taWxsZXJMb29wXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uT2xkXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fbXVsQnkwMjRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19tdWxCeTAyNE9sZFwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIpO1xuXG4gICAgLy8gY29uc29sZS5sb2cobW9kdWxlLmZ1bmN0aW9uSWR4QnlOYW1lKTtcblxufTtcblxuY29uc3QgdXRpbHMkMSA9IHV0aWxzJDY7XG5cbmNvbnN0IGJ1aWxkRjFtID1idWlsZF9mMW07XG5jb25zdCBidWlsZEYxID1idWlsZF9mMTtcbmNvbnN0IGJ1aWxkRjJtID1idWlsZF9mMm07XG5jb25zdCBidWlsZEYzbSA9YnVpbGRfZjNtO1xuY29uc3QgYnVpbGRDdXJ2ZSA9YnVpbGRfY3VydmVfamFjb2JpYW5fYTA7XG5jb25zdCBidWlsZEZGVCQxID0gYnVpbGRfZmZ0O1xuY29uc3QgYnVpbGRQb2wgPSBidWlsZF9wb2w7XG5jb25zdCBidWlsZFFBUCA9IGJ1aWxkX3FhcDtcbmNvbnN0IGJ1aWxkQXBwbHlLZXkgPSBidWlsZF9hcHBseWtleTtcbmNvbnN0IHsgYml0TGVuZ3RoOiBiaXRMZW5ndGgkMSwgaXNPZGQsIGlzTmVnYXRpdmU6IGlzTmVnYXRpdmUkMSB9ID0gYmlnaW50O1xuXG4vLyBEZWZpbml0aW9uIGhlcmU6IGh0dHBzOi8vZWxlY3RyaWNjb2luLmNvL2Jsb2cvbmV3LXNuYXJrLWN1cnZlL1xuXG52YXIgYnVpbGRfYmxzMTIzODEgPSBmdW5jdGlvbiBidWlsZEJMUzEyMzgxKG1vZHVsZSwgX3ByZWZpeCkge1xuXG4gICAgY29uc3QgcHJlZml4ID0gX3ByZWZpeCB8fCBcImJsczEyMzgxXCI7XG5cbiAgICBpZiAobW9kdWxlLm1vZHVsZXNbcHJlZml4XSkgcmV0dXJuIHByZWZpeDsgIC8vIGFscmVhZHkgYnVpbGRlZFxuXG4gICAgY29uc3QgcSA9IDB4MWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFibjtcbiAgICBjb25zdCByID0gMHg3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxbjtcblxuICAgIGNvbnN0IG42NHEgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShxIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44cSA9IG42NHEqODtcbiAgICBjb25zdCBmMXNpemUgPSBuOHE7XG4gICAgY29uc3QgZjJzaXplID0gZjFzaXplICogMjtcbiAgICBjb25zdCBmdHNpemUgPSBmMXNpemUgKiAxMjtcblxuICAgIGNvbnN0IG42NHIgPSBNYXRoLmZsb29yKChiaXRMZW5ndGgkMShyIC0gMW4pIC0gMSkvNjQpICsxO1xuICAgIGNvbnN0IG44ciA9IG42NHIqODtcbiAgICBjb25zdCBmcnNpemUgPSBuOHI7XG5cblxuICAgIGNvbnN0IHByID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHIsIGZyc2l6ZSApKTtcblxuICAgIGNvbnN0IGYxbVByZWZpeCA9IGJ1aWxkRjFtKG1vZHVsZSwgcSwgXCJmMW1cIiwgXCJpbnRxXCIpO1xuICAgIGJ1aWxkRjEobW9kdWxlLCByLCBcImZyXCIsIFwiZnJtXCIsIFwiaW50clwiKTtcbiAgICBjb25zdCBwRzFiID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApKTtcbiAgICBjb25zdCBnMW1QcmVmaXggPSBidWlsZEN1cnZlKG1vZHVsZSwgXCJnMW1cIiwgXCJmMW1cIiwgcEcxYik7XG5cbiAgICBidWlsZEZGVCQxKG1vZHVsZSwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1cIiwgXCJmcm1fbXVsXCIpO1xuXG4gICAgYnVpbGRQb2wobW9kdWxlLCBcInBvbFwiLCBcImZybVwiKTtcbiAgICBidWlsZFFBUChtb2R1bGUsIFwicWFwXCIsIFwiZnJtXCIpO1xuXG4gICAgY29uc3QgZjJtUHJlZml4ID0gYnVpbGRGMm0obW9kdWxlLCBcImYxbV9uZWdcIiwgXCJmMm1cIiwgXCJmMW1cIik7XG4gICAgY29uc3QgcEcyYiA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSg0biksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoNG4pLCBmMXNpemUgKVxuICAgIF0pO1xuICAgIGNvbnN0IGcybVByZWZpeCA9IGJ1aWxkQ3VydmUobW9kdWxlLCBcImcybVwiLCBcImYybVwiLCBwRzJiKTtcblxuXG4gICAgZnVuY3Rpb24gYnVpbGRHVGltZXNGcihmbk5hbWUsIG9wTXVsKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZm5OYW1lKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBHXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEZyXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MobjhyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKFwiZnJtX2Zyb21Nb250Z29tZXJ5XCIsIGMuZ2V0TG9jYWwoXCJwRnJcIiksIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgb3BNdWwsXG4gICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcInBHXCIpLFxuICAgICAgICAgICAgICAgIEFVWCxcbiAgICAgICAgICAgICAgICBjLmkzMl9jb25zdChuOHIpLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJwclwiKVxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmbk5hbWUpO1xuICAgIH1cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJcIiwgXCJnMW1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzFtXCIsIFwiZzFtXCIsIFwiZnJtXCIsIFwiZzFtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzJtX3RpbWVzRnJcIiwgXCJnMm1fdGltZXNTY2FsYXJcIik7XG4gICAgYnVpbGRGRlQkMShtb2R1bGUsIFwiZzJtXCIsIFwiZzJtXCIsIFwiZnJtXCIsIFwiZzJtX3RpbWVzRnJcIik7XG5cbiAgICBidWlsZEdUaW1lc0ZyKFwiZzFtX3RpbWVzRnJBZmZpbmVcIiwgXCJnMW1fdGltZXNTY2FsYXJBZmZpbmVcIik7XG4gICAgYnVpbGRHVGltZXNGcihcImcybV90aW1lc0ZyQWZmaW5lXCIsIFwiZzJtX3RpbWVzU2NhbGFyQWZmaW5lXCIpO1xuXG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZnJtX2JhdGNoQXBwbHlLZXlcIiwgXCJmbXJcIiwgXCJmcm1cIiwgbjhyLCBuOHIsIG44ciwgXCJmcm1fbXVsXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5XCIsIFwiZzFtXCIsIFwiZnJtXCIsIG44cSozLCBuOHEqMywgbjhyLCBcImcxbV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcxbV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMW1cIiwgXCJmcm1cIiwgbjhxKjIsIG44cSozLCBuOHIsIFwiZzFtX3RpbWVzRnJBZmZpbmVcIik7XG4gICAgYnVpbGRBcHBseUtleShtb2R1bGUsIFwiZzJtX2JhdGNoQXBwbHlLZXlcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMywgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyXCIpO1xuICAgIGJ1aWxkQXBwbHlLZXkobW9kdWxlLCBcImcybV9iYXRjaEFwcGx5S2V5TWl4ZWRcIiwgXCJnMm1cIiwgXCJmcm1cIiwgbjhxKjIqMiwgbjhxKjMqMiwgbjhyLCBcImcybV90aW1lc0ZyQWZmaW5lXCIpO1xuXG5cbiAgICBmdW5jdGlvbiB0b01vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gQmlnSW50KGEpICogKDFuIDw8IEJpZ0ludChmMXNpemUqOCkpICUgcTtcbiAgICB9XG5cbiAgICBjb25zdCBHMWdlbiA9IFtcbiAgICAgICAgMzY4NTQxNjc1MzcxMzM4NzAxNjc4MTA4ODMxNTE4MzA3Nzc1Nzk2MTYyMDc5NTc4MjU0NjQwOTg5NDU3ODM3ODY4ODYwNzU5MjM3ODM3NjMxODgzNjA1NDk0NzY3NjM0NTgyMTU0ODEwNDE4NTQ2NDUwN24sXG4gICAgICAgIDEzMzk1MDY1NDQ5NDQ0NzY0NzMwMjA0NzEzNzk5NDE5MjEyMjE1ODQ5MzM4NzU5MzgzNDk2MjA0MjY1NDM3MzY0MTY1MTE0MjM5NTYzMzM1MDY0NzI3MjQ2NTUzNTMzNjY1MzQ5OTIzOTE3NTY0NDE1NjluLFxuICAgICAgICAxblxuICAgIF07XG5cbiAgICBjb25zdCBwRzFnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMWdlblswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxZ2VuWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzFnZW5bMl0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMXplcm8gPSBbXG4gICAgICAgIDBuLFxuICAgICAgICAxbixcbiAgICAgICAgMG5cbiAgICBdO1xuXG4gICAgY29uc3QgcEcxemVybyA9IG1vZHVsZS5hbGxvYyhcbiAgICAgICAgW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1swXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1sxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcxemVyb1syXSksIGYxc2l6ZSApXG4gICAgICAgIF1cbiAgICApO1xuXG4gICAgY29uc3QgRzJnZW4gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDM1MjcwMTA2OTU4NzQ2NjYxODE4NzEzOTExNjAxMTA2MDE0NDg5MDAyOTk1Mjc5Mjc3NTI0MDIxOTkwODY0NDIzOTc5Mzc4NTczNTcxNTAyNjg3MzM0NzYwMDM0Mzg2NTE3NTk1Mjc2MTkyNjMwMzE2MG4sXG4gICAgICAgICAgICAzMDU5MTQ0MzQ0MjQ0MjEzNzA5OTcxMjU5ODE0NzUzNzgxNjM2OTg2NDcwMzI1NDc2NjQ3NTU4NjU5MzczMjA2MjkxNjM1MzI0NzY4OTU4NDMyNDMzNTA5NTYzMTA0MzQ3MDE3ODM3ODg1NzYzMzY1NzU4bixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAxOTg1MTUwNjAyMjg3MjkxOTM1NTY4MDU0NTIxMTc3MTcxNjM4MzAwODY4OTc4MjE1NjU1NzMwODU5Mzc4NjY1MDY2MzQ0NzI2MzczODIzNzE4NDIzODY5MTA0MjYzMzMzOTg0NjQxNDk0MzQwMzQ3OTA1bixcbiAgICAgICAgICAgIDkyNzU1MzY2NTQ5MjMzMjQ1NTc0NzIwMTk2NTc3NjAzNzg4MDc1Nzc0MDE5MzQ1MzU5Mjk3MDAyNTAyNzk3ODc5Mzk3Njg3NzAwMjY3NTU2NDk4MDk0OTI4OTcyNzk1NzU2NTU3NTQzMzM0NDIxOTU4Mm4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXVxuICAgIF07XG5cbiAgICBjb25zdCBwRzJnZW4gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblswXVswXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzBdWzFdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMmdlblsxXVsxXSksIGYxc2l6ZSApLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KEcyZ2VuWzJdWzBdKSwgZjFzaXplICksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoRzJnZW5bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBHMnplcm8gPSBbXG4gICAgICAgIFtcbiAgICAgICAgICAgIDBuLFxuICAgICAgICAgICAgMG4sXG4gICAgICAgIF0sW1xuICAgICAgICAgICAgMW4sXG4gICAgICAgICAgICAwbixcbiAgICAgICAgXSxbXG4gICAgICAgICAgICAwbixcbiAgICAgICAgICAgIDBuLFxuICAgICAgICBdXG4gICAgXTtcblxuICAgIGNvbnN0IHBHMnplcm8gPSBtb2R1bGUuYWxsb2MoXG4gICAgICAgIFtcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMF1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMV1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMF0pLCBmMXNpemUgKSxcbiAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeShHMnplcm9bMl1bMV0pLCBmMXNpemUgKSxcbiAgICAgICAgXVxuICAgICk7XG5cbiAgICBjb25zdCBwT25lVCA9IG1vZHVsZS5hbGxvYyhbXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgxbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIHRvTW9udGdvbWVyeSgwbiksIGYxc2l6ZSApLFxuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMG4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDBuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwQmxzMTIzODFUd2lzdCA9ICBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKCB0b01vbnRnb21lcnkoMW4pLCBmMXNpemUgKSxcbiAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSggdG9Nb250Z29tZXJ5KDFuKSwgZjFzaXplICksXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjJtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MGMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKSk7XG4gICAgICAgIGNvbnN0IHgwID0gYy5nZXRMb2NhbChcInhcIik7XG4gICAgICAgIGNvbnN0IHgxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgcjAgPSBjLmdldExvY2FsKFwicHJcIik7XG4gICAgICAgIGNvbnN0IHIxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwclwiKSwgYy5pMzJfY29uc3QoZjFzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9jb3B5XCIsIHgwLCB4MGMpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCtcIl9zdWJcIiwgeDAsIHgxLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4K1wiX2FkZFwiLCB4MGMsIHgxLCByMSksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkX211bE5SMigpO1xuXG4gICAgY29uc3QgZjZtUHJlZml4ID0gYnVpbGRGM20obW9kdWxlLCBmMm1QcmVmaXgrXCJfbXVsTlJcIiwgXCJmNm1cIiwgXCJmMm1cIik7XG5cbiAgICBmdW5jdGlvbiBidWlsZF9tdWxOUjYoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4ICsgXCJfbXVsTlJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBjMGNvcHkgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJ4XCIpLFxuICAgICAgICAgICAgICAgIGMwY29weVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9tdWxOUlwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjQpKSxcbiAgICAgICAgICAgICAgICBjLmdldExvY2FsKFwicHJcIilcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoXG4gICAgICAgICAgICAgICAgZjJtUHJlZml4ICsgXCJfY29weVwiLFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QobjhxKjIpKSxcbiAgICAgICAgICAgICAgICBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInByXCIpLCBjLmkzMl9jb25zdChuOHEqNCkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuY2FsbChcbiAgICAgICAgICAgICAgICBmMm1QcmVmaXggKyBcIl9jb3B5XCIsXG4gICAgICAgICAgICAgICAgYzBjb3B5LFxuICAgICAgICAgICAgICAgIGMuaTMyX2FkZChjLmdldExvY2FsKFwicHJcIiksIGMuaTMyX2NvbnN0KG44cSoyKSksXG4gICAgICAgICAgICApLFxuICAgICAgICApO1xuICAgIH1cbiAgICBidWlsZF9tdWxOUjYoKTtcblxuICAgIGNvbnN0IGZ0bVByZWZpeCA9IGJ1aWxkRjJtKG1vZHVsZSwgZjZtUHJlZml4K1wiX211bE5SXCIsIFwiZnRtXCIsIGY2bVByZWZpeCk7XG5cbiAgICBjb25zdCBhdGVMb29wQ291bnQgPSAweGQyMDEwMDAwMDAwMTAwMDBuO1xuICAgIGNvbnN0IGF0ZUxvb3BCaXRCeXRlcyA9IGJpdHMoYXRlTG9vcENvdW50KTtcbiAgICBjb25zdCBwQXRlTG9vcEJpdEJ5dGVzID0gbW9kdWxlLmFsbG9jKGF0ZUxvb3BCaXRCeXRlcyk7XG5cbiAgICBjb25zdCBhdGVDb2VmU2l6ZSA9IDMgKiBmMnNpemU7XG4gICAgY29uc3QgYXRlTkRibENvZWZzID0gYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0xO1xuICAgIGNvbnN0IGF0ZU5BZGRDb2VmcyA9IGF0ZUxvb3BCaXRCeXRlcy5yZWR1Y2UoKGFjYywgYikgPT4gIGFjYyArICggYiE9MCA/IDEgOiAwKSAgICwwKTtcbiAgICBjb25zdCBhdGVOQ29lZnMgPSBhdGVOQWRkQ29lZnMgKyBhdGVORGJsQ29lZnMgKyAxO1xuICAgIGNvbnN0IHByZVBTaXplID0gMyoyKm44cTtcbiAgICBjb25zdCBwcmVRU2l6ZSA9IDMqbjhxKjIgKyBhdGVOQ29lZnMqYXRlQ29lZlNpemU7XG4gICAgY29uc3QgZmluYWxFeHBJc05lZ2F0aXZlID0gdHJ1ZTtcblxuICAgIGNvbnN0IGZpbmFsRXhwWiA9IDE1MTMyMzc2MjIyOTQxNjQyNzUybjtcblxuXG4gICAgbW9kdWxlLm1vZHVsZXNbcHJlZml4XSA9IHtcbiAgICAgICAgbjY0cTogbjY0cSxcbiAgICAgICAgbjY0cjogbjY0cixcbiAgICAgICAgbjhxOiBuOHEsXG4gICAgICAgIG44cjogbjhyLFxuICAgICAgICBwRzFnZW46IHBHMWdlbixcbiAgICAgICAgcEcxemVybzogcEcxemVybyxcbiAgICAgICAgcEcxYjogcEcxYixcbiAgICAgICAgcEcyZ2VuOiBwRzJnZW4sXG4gICAgICAgIHBHMnplcm86IHBHMnplcm8sXG4gICAgICAgIHBHMmI6IHBHMmIsXG4gICAgICAgIHBxOiBtb2R1bGUubW9kdWxlc1tcImYxbVwiXS5wcSxcbiAgICAgICAgcHI6IHByLFxuICAgICAgICBwT25lVDogcE9uZVQsXG4gICAgICAgIHI6IHIsXG4gICAgICAgIHE6IHEsXG4gICAgICAgIHByZVBTaXplOiBwcmVQU2l6ZSxcbiAgICAgICAgcHJlUVNpemU6IHByZVFTaXplXG4gICAgfTtcblxuXG4gICAgZnVuY3Rpb24gbmFmKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IDIgLSBOdW1iZXIoRSAlIDRuKTtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggeiApO1xuICAgICAgICAgICAgICAgIEUgPSBFIC0gQmlnSW50KHopO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMucHVzaCggMCApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgRSA9IEUgPj4gMW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBiaXRzKG4pIHtcbiAgICAgICAgbGV0IEUgPSBuO1xuICAgICAgICBjb25zdCByZXMgPSBbXTtcbiAgICAgICAgd2hpbGUgKEUgPiAwbikge1xuICAgICAgICAgICAgaWYgKGlzT2RkKEUpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDEgKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzLnB1c2goIDAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEUgPSBFID4+IDFuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRQcmVwYXJlRzEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9wcmVwYXJlRzFcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwUFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBwcmVQXCIsIFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBjLmdldExvY2FsKFwicFBcIiksIGMuZ2V0TG9jYWwoXCJwcHJlUFwiKSksICAvLyBUT0RPIFJlbW92ZSBpZiBhbHJlYWR5IGluIGFmZmluZVxuICAgICAgICApO1xuICAgIH1cblxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBEb3VibGVTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcERibFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFJ4ICA9IGMuZ2V0TG9jYWwoXCJSXCIpO1xuICAgICAgICBjb25zdCBSeSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDIqbjhxKSk7XG4gICAgICAgIGNvbnN0IFJ6ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUlwiKSwgYy5pMzJfY29uc3QoNCpuOHEpKTtcblxuICAgICAgICBjb25zdCB0MCAgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDMgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCB0NiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cblxuICAgICAgICBjb25zdCB6c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB0bXAwID0gci54LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0bXAxID0gci55LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeSwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0bXAyID0gdG1wMS5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9ICh0bXAxICsgci54KS5zcXVhcmUoKSAtIHRtcDAgLSB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgUngsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDMsIHQzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDMsIHQwLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCB0MiwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wMyArIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA0ID0gdG1wMCArIHRtcDAgKyB0bXAwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MCwgdDAsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDQsIHQwLCB0NCksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSByLnggKyB0bXA0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBSeCwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdG1wNSA9IHRtcDQuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQ0LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHpzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenNxdWFyZWQpLFxuXG4gICAgICAgICAgICAvLyByLnggPSB0bXA1IC0gdG1wMyAtIHRtcDM7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ1LCB0MywgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDMsIFJ4KSxcblxuICAgICAgICAgICAgLy8gci56ID0gKHIueiArIHIueSkuc3F1YXJlKCkgLSB0bXAxIC0genNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeSwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDEsIFJ6KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUnosIHpzcXVhcmVkLCBSeiksXG5cbiAgICAgICAgICAgIC8vIHIueSA9ICh0bXAzIC0gci54KSAqIHRtcDQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQzLCBSeCwgUnkpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBSeSwgdDQsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdG1wMiA9IHRtcDIgKyB0bXAyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gci55IC09IHRtcDI7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ5LCB0MiwgUnkpLFxuXG4gICAgICAgICAgICAvLyB0bXAzID0gdG1wNCAqIHpzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgenNxdWFyZWQsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IHRtcDMgKyB0bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdG1wMyA9IC10bXAzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB0MywgdDMpLFxuXG4gICAgICAgICAgICAvLyB0bXA2ID0gdG1wNi5zcXVhcmUoKSAtIHRtcDAgLSB0bXA1O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgdDYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NiwgdDAsIHQ2KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQ1LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDEgPSB0bXAxICsgdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIHRtcDYgPSB0bXA2IC0gdG1wMTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDYsIHQxLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSByLnogKiB6c3F1YXJlZDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUnosIHpzcXVhcmVkLCB0MCksXG5cbiAgICAgICAgICAgIC8vIHRtcDAgPSB0bXAwICsgdG1wMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDAsIHQwLCB0MCksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBBZGRTdGVwKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfcHJlcEFkZFN0ZXBcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJSXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBSeCAgPSBjLmdldExvY2FsKFwiUlwiKTtcbiAgICAgICAgY29uc3QgUnkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJSXCIpLCBjLmkzMl9jb25zdCgyKm44cSkpO1xuICAgICAgICBjb25zdCBSeiAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcIlJcIiksIGMuaTMyX2NvbnN0KDQqbjhxKSk7XG5cbiAgICAgICAgY29uc3QgUXggID0gYy5nZXRMb2NhbChcIlFcIik7XG4gICAgICAgIGNvbnN0IFF5ICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiUVwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcblxuICAgICAgICBjb25zdCB0MTAgID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHQxICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoMipuOHEpKTtcbiAgICAgICAgY29uc3QgdDkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCg0Km44cSkpO1xuXG4gICAgICAgIGNvbnN0IHpzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB5c3F1YXJlZCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgenRzcXVhcmVkID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDUgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ2ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NyA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyB6c3F1YXJlZCA9IHIuei5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgUnosIHpzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8geXNxdWFyZWQgPSBxLnkuc3F1YXJlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFF5LCB5c3F1YXJlZCksXG5cbiAgICAgICAgICAgIC8vIHQwID0genNxdWFyZWQgKiBxLng7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHpzcXVhcmVkLCBReCwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MSA9ICgocS55ICsgci56KS5zcXVhcmUoKSAtIHlzcXVhcmVkIC0genNxdWFyZWQpICogenNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFF5LCBSeiwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgeXNxdWFyZWQsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIHpzcXVhcmVkLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB6c3F1YXJlZCwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MiA9IHQwIC0gci54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgUngsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0Mi5zcXVhcmUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zcXVhcmVcIiwgdDIsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0MyArIHQzO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MywgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDQgPSB0NCArIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0NCwgdDQsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0NCAqIHQyO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDYgPSB0MSAtIHIueSAtIHIueTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEsIFJ5LCB0NiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQ2LCBSeSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0OSA9IHQ2ICogcS54O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NiwgUXgsIHQ5KSxcblxuICAgICAgICAgICAgLy8gdDcgPSB0NCAqIHIueDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDQsIFJ4LCB0NyksXG5cbiAgICAgICAgICAgIC8vIHIueCA9IHQ2LnNxdWFyZSgpIC0gdDUgLSB0NyAtIHQ3O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCB0NiwgUngpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeCwgdDUsIFJ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgUngsIHQ3LCBSeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ4LCB0NywgUngpLFxuXG4gICAgICAgICAgICAvLyByLnogPSAoci56ICsgdDIpLnNxdWFyZSgpIC0genNxdWFyZWQgLSB0MztcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgUnosIHQyLCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIFJ6LCBSeiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIFJ6LCB6c3F1YXJlZCwgUnopLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCBSeiwgdDMsIFJ6KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gcS55ICsgci56O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBReSwgUnosIHQxMCksXG5cbiAgICAgICAgICAgIC8vIHQ4ID0gKHQ3IC0gci54KSAqIHQ2O1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NywgUngsIHQ4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDgsIHQ2LCB0OCksXG5cbiAgICAgICAgICAgIC8vIHQwID0gci55ICogdDU7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIFJ5LCB0NSwgdDApLFxuXG4gICAgICAgICAgICAvLyB0MCA9IHQwICsgdDA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCB0MCwgdDApLFxuXG4gICAgICAgICAgICAvLyByLnkgPSB0OCAtIHQwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0OCwgdDAsIFJ5KSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwLnNxdWFyZSgpIC0geXNxdWFyZWQ7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3F1YXJlXCIsIHQxMCwgdDEwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDEwLCB5c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8genRzcXVhcmVkID0gci56LnNxdWFyZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3NxdWFyZVwiLCBSeiwgenRzcXVhcmVkKSxcblxuICAgICAgICAgICAgLy8gdDEwID0gdDEwIC0genRzcXVhcmVkO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MTAsIHp0c3F1YXJlZCwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDkgPSB0OSArIHQ5IC0gdDEwO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0OSwgdDksIHQ5KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDksIHQxMCwgdDkpLFxuXG4gICAgICAgICAgICAvLyB0MTAgPSByLnogKyByLno7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIFJ6LCBSeiwgdDEwKSxcblxuICAgICAgICAgICAgLy8gdDYgPSAtdDY7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQxID0gdDYgKyB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDYsIHQ2LCB0MSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFByZXBhcmVHMigpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3ByZXBhcmVHMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBRXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVFcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuXG4gICAgICAgIGNvbnN0IFEgPSBjLmdldExvY2FsKFwicFFcIik7XG5cbiAgICAgICAgY29uc3QgcFIgPSBtb2R1bGUuYWxsb2MoZjJzaXplKjMpO1xuICAgICAgICBjb25zdCBSID0gYy5pMzJfY29uc3QocFIpO1xuXG4gICAgICAgIGNvbnN0IGJhc2UgPSBjLmdldExvY2FsKFwicHByZVFcIik7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX25vcm1hbGl6ZVwiLCBRLCBiYXNlKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcybVByZWZpeCArIFwiX2lzWmVyb1wiLCBiYXNlKSxcbiAgICAgICAgICAgICAgICBjLnJldChbXSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfY29weVwiLCBiYXNlLCBSKSxcbiAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcbiAgICAgICAgKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChhdGVMb29wQml0Qnl0ZXMubGVuZ3RoLTIpKSxcbiAgICAgICAgICAgIGMuYmxvY2soYy5sb29wKFxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX3ByZXBEYmxTdGVwXCIsIFIsIGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSksXG4gICAgICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEF0ZUxvb3BCaXRCeXRlcyksXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmMuY2FsbChwcmVmaXggKyBcIl9wcmVwQWRkU3RlcFwiLCBSLCBiYXNlLCBjLmdldExvY2FsKFwicENvZWZcIikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZcIiksIGMuaTMyX2NvbnN0KGF0ZUNvZWZTaXplKSkpLFxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRGNk11bDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwxXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEY2XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgYl9iID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjQpKTtcblxuICAgICAgICBjb25zdCBBYzBfQWMxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFjMV9BYzIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIEFjMV9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYl9iID0gc2VsZi5jMSAqIGMxO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBX2MxLCBjMSwgYl9iKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gKHNlbGYuYzEgKyBzZWxmLmMyKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzFfQWMyLCBjMSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MSwgYl9iLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MSA9IHQxLm11bF9ieV9ub25yZXNpZHVlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQyID0gKHNlbGYuYzAgKyBzZWxmLmMxKSAqIGMxIC0gYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMxLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYl9iLCB0MiksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwxKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZEY2TXVsMDEoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZjZtUHJlZml4KyBcIl9tdWwwMVwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInBBXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBSXCIsIFwiaTMyXCIpOyAgICAvLyBGNlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgQV9jMCA9IGMuZ2V0TG9jYWwoXCJwQVwiKTtcbiAgICAgICAgY29uc3QgQV9jMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicEFcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSoyKSk7XG4gICAgICAgIGNvbnN0IEFfYzIgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBBXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGMwICA9IGMuZ2V0TG9jYWwoXCJwQzBcIik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuZ2V0TG9jYWwoXCJwQzFcIik7XG5cbiAgICAgICAgY29uc3QgdDEgPSBjLmdldExvY2FsKFwicFJcIik7XG4gICAgICAgIGNvbnN0IHQyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBSXCIpLCBjLmkzMl9jb25zdChmMXNpemUqNCkpO1xuXG4gICAgICAgIGNvbnN0IGFfYSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBiX2IgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgQWMwX0FjMSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUqMikpO1xuICAgICAgICBjb25zdCBBYzBfQWMyID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSoyKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gbGV0IGFfYSA9IHNlbGYuYzAgKiBjMDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQV9jMCwgYzAsIGFfYSksXG5cbiAgICAgICAgICAgIC8vIGxldCBiX2IgPSBzZWxmLmMxICogYzE7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFfYzEsIGMxLCBiX2IpLFxuXG5cbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgQV9jMCwgQV9jMSwgQWMwX0FjMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzAsIEFfYzIsIEFjMF9BYzIpLFxuXG4gICAgICAgICAgICAvLyBsZXQgdDEgPSAoc2VsZi5jMSArIHNlbGYuYzIpICogYzEgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzIsIHQxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgdDEsIGMxLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQxLCBiX2IsIHQxKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gdDEubXVsX2J5X25vbnJlc2lkdWUoKSArIGFfYTtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0MSwgdDEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgYV9hLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCB0MiA9IChjMCArIGMxKSAqIChzZWxmLmMwICsgc2VsZi5jMSkgLSBhX2EgLSBiX2I7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIGMwLCBjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0MiwgQWMwX0FjMSwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MiwgYV9hLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQyLCBiX2IsIHQyKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQzID0gKHNlbGYuYzAgKyBzZWxmLmMyKSAqIGMwIC0gYV9hICsgYl9iO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBYzBfQWMyLCBjMCwgdDMpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MywgYV9hLCB0MyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCBiX2IsIHQzKSxcblxuXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjZNdWwwMSgpO1xuXG5cbiAgICBmdW5jdGlvbiBidWlsZEYxMk11bDAxNCgpIHtcblxuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKGZ0bVByZWZpeCsgXCJfbXVsMDE0XCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicEFcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuICAgICAgICBmLmFkZFBhcmFtKFwicEMwXCIsIFwiaTMyXCIpOyAgIC8vIEYyXG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQzFcIiwgXCJpMzJcIik7ICAgLy8gRjJcbiAgICAgICAgZi5hZGRQYXJhbShcInBDNFwiLCBcImkzMlwiKTsgICAvLyBGMlxuICAgICAgICBmLmFkZFBhcmFtKFwicFJcIiwgXCJpMzJcIik7ICAgIC8vIEYxMlxuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cblxuICAgICAgICBjb25zdCBBX2MwID0gYy5nZXRMb2NhbChcInBBXCIpO1xuICAgICAgICBjb25zdCBBX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQVwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBjb25zdCBjMCAgPSBjLmdldExvY2FsKFwicEMwXCIpO1xuICAgICAgICBjb25zdCBjMSAgPSBjLmdldExvY2FsKFwicEMxXCIpO1xuICAgICAgICBjb25zdCBjNCAgPSBjLmdldExvY2FsKFwicEM0XCIpO1xuXG4gICAgICAgIGNvbnN0IGFhID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IGJiID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYxc2l6ZSo2KSk7XG4gICAgICAgIGNvbnN0IG8gPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBjb25zdCBSX2MwID0gYy5nZXRMb2NhbChcInBSXCIpO1xuICAgICAgICBjb25zdCBSX2MxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUlwiKSwgYy5pMzJfY29uc3QoZjFzaXplKjYpKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyBsZXQgYWEgPSBzZWxmLmMwLm11bF9ieV8wMShjMCwgYzEpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bDAxXCIsIEFfYzAsIGMwLCBjMSwgYWEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYmIgPSBzZWxmLmMxLm11bF9ieV8xKGM0KTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwxXCIsIEFfYzEsIGM0LCBiYiksXG5cbiAgICAgICAgICAgIC8vIGxldCBvID0gYzEgKyBjNDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgYzEsIGM0LCBvKSxcblxuICAgICAgICAgICAgLy8gbGV0IGMxID0gc2VsZi5jMSArIHNlbGYuYzA7XG4gICAgICAgICAgICBjLmNhbGwoZjZtUHJlZml4ICsgXCJfYWRkXCIsIEFfYzEsIEFfYzAsIFJfYzEpLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzEgPSBjMS5tdWxfYnlfMDEoYzAsICZvKTtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9tdWwwMVwiLCBSX2MxLCBjMCwgbywgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMSA9IGMxIC0gYWEgLSBiYjtcbiAgICAgICAgICAgIGMuY2FsbChmNm1QcmVmaXggKyBcIl9zdWJcIiwgUl9jMSwgYWEsIFJfYzEpLFxuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX3N1YlwiLCBSX2MxLCBiYiwgUl9jMSksXG5cbiAgICAgICAgICAgIC8vIGxldCBjMCA9IGJiO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2NvcHlcIiwgYmIsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMC5tdWxfYnlfbm9ucmVzaWR1ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX211bE5SXCIsIFJfYzAsIFJfYzApLFxuXG4gICAgICAgICAgICAvLyBsZXQgYzAgPSBjMCArIGFhO1xuICAgICAgICAgICAgYy5jYWxsKGY2bVByZWZpeCArIFwiX2FkZFwiLCBSX2MwLCBhYSwgUl9jMCksXG4gICAgICAgICk7XG4gICAgfVxuICAgIGJ1aWxkRjEyTXVsMDE0KCk7XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRUxMKCkge1xuICAgICAgICBjb25zdCBmID0gbW9kdWxlLmFkZEZ1bmN0aW9uKHByZWZpeCsgXCJfZWxsXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwQ29lZnNcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwRlwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IFB4ICA9IGMuZ2V0TG9jYWwoXCJwUFwiKTtcbiAgICAgICAgY29uc3QgUHkgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwUFwiKSwgYy5pMzJfY29uc3QobjhxKSk7XG5cbiAgICAgICAgY29uc3QgRiAgPSBjLmdldExvY2FsKFwicEZcIik7XG5cbiAgICAgICAgY29uc3QgY29lZjBfMCAgPSBjLmdldExvY2FsKFwicENvZWZzXCIpO1xuICAgICAgICBjb25zdCBjb2VmMF8xICA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwicENvZWZzXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMCAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjIpKTtcbiAgICAgICAgY29uc3QgY29lZjFfMSAgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2Vmc1wiKSwgYy5pMzJfY29uc3QoZjFzaXplKjMpKTtcbiAgICAgICAgY29uc3QgY29lZjIgID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZnNcIiksIGMuaTMyX2NvbnN0KGYxc2l6ZSo0KSk7XG5cbiAgICAgICAgY29uc3QgcGMwID0gbW9kdWxlLmFsbG9jKGYxc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgYzAgID0gYy5pMzJfY29uc3QocGMwKTtcbiAgICAgICAgY29uc3QgYzBfYzAgPSBjLmkzMl9jb25zdChwYzApO1xuICAgICAgICBjb25zdCBjMF9jMSA9IGMuaTMyX2NvbnN0KHBjMCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBjMSA9IG1vZHVsZS5hbGxvYyhmMXNpemUqMik7XG4gICAgICAgIGNvbnN0IGMxICA9IGMuaTMyX2NvbnN0KHBjMSk7XG4gICAgICAgIGNvbnN0IGMxX2MwID0gYy5pMzJfY29uc3QocGMxKTtcbiAgICAgICAgY29uc3QgYzFfYzEgPSBjLmkzMl9jb25zdChwYzErZjFzaXplKTtcbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgLy8gICAgIGxldCBtdXQgYzAgPSBjb2VmZnMuMDtcbiAgICAgICAgICAgIC8vICAgICBsZXQgbXV0IGMxID0gY29lZmZzLjE7XG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gICAgYzAuYzAgKj0gcC55O1xuICAgICAgICAgICAgLy8gICAgYzAuYzEgKj0gcC55O1xuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vICAgIGMxLmMwICo9IHAueDtcbiAgICAgICAgICAgIC8vICAgIGMxLmMxICo9IHAueDtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyAgICAgZi5tdWxfYnlfMDE0KCZjb2VmZnMuMiwgJmMxLCAmYzApXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMCwgUHksIGMwX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjBfMSwgUHksIGMwX2MxKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMCwgUHgsIGMxX2MwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgY29lZjFfMSwgUHgsIGMxX2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bDAxNFwiLCBGLCBjb2VmMiwgYzEsIGMwLCBGKSxcblxuICAgICAgICApO1xuXG4gICAgfVxuICAgIGJ1aWxkRUxMKCk7XG5cbiAgICBmdW5jdGlvbiBidWlsZE1pbGxlckxvb3AoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24ocHJlZml4KyBcIl9taWxsZXJMb29wXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicHByZVBcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwcHJlUVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG4gICAgICAgIGYuYWRkTG9jYWwoXCJwQ29lZlwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBwcmVQID0gYy5nZXRMb2NhbChcInBwcmVQXCIpO1xuXG4gICAgICAgIGNvbnN0IGNvZWZzICA9IGMuZ2V0TG9jYWwoXCJwQ29lZlwiKTtcblxuICAgICAgICBjb25zdCBGID0gYy5nZXRMb2NhbChcInJcIik7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIEYpLFxuXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9pc1plcm9cIiwgcHJlUCksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfaXNaZXJvXCIsIGMuZ2V0TG9jYWwoXCJwcHJlUVwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoW10pXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgYy5zZXRMb2NhbChcInBDb2VmXCIsIGMuaTMyX2FkZCggYy5nZXRMb2NhbChcInBwcmVRXCIpLCBjLmkzMl9jb25zdChmMnNpemUqMykpKSxcblxuICAgICAgICAgICAgYy5zZXRMb2NhbChcImlcIiwgYy5pMzJfY29uc3QoYXRlTG9vcEJpdEJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcblxuXG4gICAgICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX2VsbFwiLCBwcmVQLCBjb2VmcywgIEYpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJwQ29lZlwiLCBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBDb2VmXCIpLCBjLmkzMl9jb25zdChhdGVDb2VmU2l6ZSkpKSxcblxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2xvYWQ4X3MoYy5nZXRMb2NhbChcImlcIiksIHBBdGVMb29wQml0Qnl0ZXMpLFxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLmNhbGwocHJlZml4ICsgXCJfZWxsXCIsIHByZVAsIGNvZWZzLCAgRiksXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jLnNldExvY2FsKFwicENvZWZcIiwgYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwQ29lZlwiKSwgYy5pMzJfY29uc3QoYXRlQ29lZlNpemUpKSksXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9zcXVhcmVcIiwgRiwgRiksXG5cbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxICggYy5nZXRMb2NhbChcImlcIiksIGMuaTMyX2NvbnN0KDEpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGMuY2FsbChwcmVmaXggKyBcIl9lbGxcIiwgcHJlUCwgY29lZnMsICBGKSxcblxuICAgICAgICApO1xuXG5cbiAgICAgICAge1xuICAgICAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgRiwgRiksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZEZyb2Jlbml1c01hcChuKSB7XG4gICAgICAgIGNvbnN0IEYxMiA9IFtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMW4sIDBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzM4NTA3NTQzNzAwMzcxNjkwMTE5NTIxNDcwNzYwNTEzNjQwNTcxNTg4MDc0MjA5NzA2ODI0Mzg2NzYwNTA1MjI2MTM2Mjg0MjMyMTk2Mzc3MjUwNzIxODI2OTcxMTMwNjI3Nzc4OTE1ODk1MDY0MjQ3NjBuLCAxNTE2NTUxODUxODQ0OTgzODE0NjU2NDI3NDk2ODQ1NDAwOTkzOTgwNzUzOTg5NjgzMjU0NDY2NTYwMDc2MTM1MTA0MDMyMjcyNzEyMDAxMzkzNzA1MDQ5MzIwMTU5NTI4ODYxNDYzMDQ3NjYxMzUwMjduXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFsyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwbiwgMTAyODczMjE0NjIzNTEwNjM0OTk3NTMyNDQ3OTIxNTc5NTI3NzM4NDgzOTkzNjkyOTc1Nzg5NjE1NTY0MzExODAzMjYxMDg0MzI5ODY1NTIyNTg3NTU3MTMxMDU1MjU0MzAxNDY5MDg3ODM1NDg2OTI1N25dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzMxMjUzMzI1OTQxNzEwNTk0MjQ5MDgxMDgwOTYyMDQ2NDg5Nzg1NzAxMTgyODE5Nzc1NzU0MzU4MzI0MjI2MzE2MDE4MjQwMzQ0NjMzODI3Nzc5Mzc2MjEyNTA1OTI0MjU1MzU0OTMzMjA2ODM4MjU1NTduLCA4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuXSxcbiAgICAgICAgICAgICAgICBbNDAwMjQwOTU1NTIyMTY2NzM5MzQxNzc4OTgyNTczNTkwNDE1NjU1Njg4MjgxOTkzOTAwNzg4NTMzMjA1ODEzNjEyNDAzMTY1MDQ5MDgzNzg2NDQ0MjY4NzYyOTEyOTAxNTY2NDAzNzg5NDI3MjU1OTc4Nm4sIDBuXSxcbiAgICAgICAgICAgICAgICBbMTUxNjU1MTg1MTg0NDk4MzgxNDY1NjQyNzQ5Njg0NTQwMDk5Mzk4MDc1Mzk4OTY4MzI1NDQ2NjU2MDA3NjEzNTEwNDAzMjI3MjcxMjAwMTM5MzcwNTA0OTMyMDE1OTUyODg2MTQ2MzA0NzY2MTM1MDI3biwgMzg1MDc1NDM3MDAzNzE2OTAxMTk1MjE0NzA3NjA1MTM2NDA1NzE1ODgwNzQyMDk3MDY4MjQzODY3NjA1MDUyMjYxMzYyODQyMzIxOTYzNzcyNTA3MjE4MjY5NzExMzA2Mjc3Nzg5MTU4OTUwNjQyNDc2MG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2biwgMG5dLFxuICAgICAgICAgICAgICAgIFsxMDI4NzMyMTQ2MjM1MTA2MzQ5OTc1MzI0NDc5MjE1Nzk1Mjc3Mzg0ODM5OTM2OTI5NzU3ODk2MTU1NjQzMTE4MDMyNjEwODQzMjk4NjU1MjI1ODc1NTcxMzEwNTUyNTQzMDE0NjkwODc4MzU0ODY5MjU3biwgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG5dLFxuICAgICAgICAgICAgICAgIFs0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM3biwgMG5dLFxuICAgICAgICAgICAgICAgIFs4NzcwNzY5NjEwNTA2MDc5Njg1MDk2ODE3Mjk1MzEyNTUxNzc5ODY3NjQ1Mzc5NjE0MzI0NDk0OTk2MzU1MDQ1MjIyMDc2MTYwMjc0NTUwODY1MDUwNjYzNzg1MzY1OTAxMjg1NDQ1NzM1ODg3MzQyMzBuLCAzMTI1MzMyNTk0MTcxMDU5NDI0OTA4MTA4MDk2MjA0NjQ4OTc4NTcwMTE4MjgxOTc3NTc1NDM1ODMyNDIyNjMxNjAxODI0MDM0NDYzMzgyNzc3OTM3NjIxMjUwNTkyNDI1NTM1NDkzMzIwNjgzODI1NTU3bl0sXG4gICAgICAgICAgICBdXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgRjYgPSBbXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxbiwgMG5dLFxuICAgICAgICAgICAgICAgIFswbiwgNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm5dLFxuICAgICAgICAgICAgICAgIFs3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCAxbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzBuLCA3OTM0NzkzOTA3MjkyMTU1MTI2MjEzNzk3MDE2MzM0MjE0NDcwNjA4ODY3NDAyODEwNjA0OTMwMTA0NTY0ODc0MjcyODE2NDkwNzU0NzYzMDU2MjA3NTg3MzE2MjAzNTBuXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzFuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzduLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTI2MjQzMTA0MzUwMDY2ODg2NDM5MzU1MDMxMTgzMDU1ODY0MzgyNzExNzEzOTU4NDI5NzExNTc0ODAzODEzNzcwMTU0MDU5ODAwNTM1MzkzNTg0MTcxMzU1NDA5Mzk0MzZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzQwMDI0MDk1NTUyMjE2NjczOTM0MTc3ODk4MjU3MzU5MDQxNTY1NTY4ODI4MTk5MzkwMDc4ODUzMzIwNTgxMzYxMjQwMzE2NTA0OTA4Mzc4NjQ0NDI2ODc2MjkxMjkwMTU2NjQwMzc4OTQyNzI1NTk3ODZuLCAwbl0sXG4gICAgICAgICAgICAgICAgWzc5MzQ3OTM5MDcyOTIxNTUxMjYyMTM3OTcwMTYzMzQyMTQ0NzA2MDg4Njc0MDI4MTA2MDQ5MzAxMDQ1NjQ4NzQyNzI4MTY0OTA3NTQ3NjMwNTYyMDc1ODczMTYyMDM1MG4sIDBuXSxcbiAgICAgICAgICAgICAgICBbNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUxbiwgMG5dLFxuICAgICAgICAgICAgXVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwXCIrbik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTw2OyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IFggPSAoaT09MCkgPyBjLmdldExvY2FsKFwieFwiKSA6IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoaSpmMnNpemUpKTtcbiAgICAgICAgICAgIGNvbnN0IFhjMCA9IFg7XG4gICAgICAgICAgICBjb25zdCBYYzEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplICsgZjFzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSID0gKGk9PTApID8gYy5nZXRMb2NhbChcInJcIikgOiBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KGkqZjJzaXplKSk7XG4gICAgICAgICAgICBjb25zdCBSYzAgPSBSO1xuICAgICAgICAgICAgY29uc3QgUmMxID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChpKmYyc2l6ZSArIGYxc2l6ZSkpO1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IG11bDIoRjEyW01hdGguZmxvb3IoaS8zKV1bbiUxMl0gLCBGNltpJTNdW24lNl0pO1xuICAgICAgICAgICAgY29uc3QgcENvZWYgPSBtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMF0pLCBuOHEpLFxuICAgICAgICAgICAgICAgIC4uLnV0aWxzJDEuYmlnSW50MkJ5dGVzTEUodG9Nb250Z29tZXJ5KGNvZWZbMV0pLCBuOHEpLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICBpZiAobiUyID09IDEpIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIFhjMCwgUmMwKSxcbiAgICAgICAgICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX25lZ1wiLCBYYzEsIFJjMSksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgUiwgYy5pMzJfY29uc3QocENvZWYpLCBSKSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBYLCBjLmkzMl9jb25zdChwQ29lZiksIFIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG11bDIoYSwgYikge1xuICAgICAgICAgICAgY29uc3QgYWMwID0gYVswXTtcbiAgICAgICAgICAgIGNvbnN0IGFjMSA9IGFbMV07XG4gICAgICAgICAgICBjb25zdCBiYzAgPSBiWzBdO1xuICAgICAgICAgICAgY29uc3QgYmMxID0gYlsxXTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IFtcbiAgICAgICAgICAgICAgICAoYWMwICogYmMwIC0gKGFjMSAqIGJjMSkpICUgcSxcbiAgICAgICAgICAgICAgICAoYWMwICogYmMxICsgKGFjMSAqIGJjMCkpICUgcSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBpZiAoaXNOZWdhdGl2ZSQxKHJlc1swXSkpIHJlc1swXSA9IHJlc1swXSArIHE7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwieFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4MCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCB4NCA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHgzID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCgyKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB4MiA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwieFwiKSwgYy5pMzJfY29uc3QoMypmMnNpemUpKTtcbiAgICAgICAgY29uc3QgeDEgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInhcIiksIGMuaTMyX2NvbnN0KDQqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHg1ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdCg1KmYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IHIwID0gYy5nZXRMb2NhbChcInJcIik7XG4gICAgICAgIGNvbnN0IHI0ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdChmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjMgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDIqZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHIyID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJyXCIpLCBjLmkzMl9jb25zdCgzKmYyc2l6ZSkpO1xuICAgICAgICBjb25zdCByMSA9IGMuaTMyX2FkZChjLmdldExvY2FsKFwiclwiKSwgYy5pMzJfY29uc3QoNCpmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcjUgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInJcIiksIGMuaTMyX2NvbnN0KDUqZjJzaXplKSk7XG5cbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgdG1wID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGYyc2l6ZSkpO1xuICAgICAgICBjb25zdCBBVVggPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG5cblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAvLyAgICAvLyB0MCArIHQxKnkgPSAoejAgKyB6MSp5KV4yID0gYV4yXG4gICAgICAgICAgICAvLyAgICB0bXAgPSB6MCAqIHoxO1xuICAgICAgICAgICAgLy8gICAgdDAgPSAoejAgKyB6MSkgKiAoejAgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejEpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICAgIHQxID0gdG1wICsgdG1wO1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB4MCwgeDEsIHRtcCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgeDEsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDAsIHQwLCB0MCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHgwLCB4MSwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgQVVYLCB0MCwgdDApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHRtcCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCBBVVgsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfc3ViXCIsIHQwLCBBVVgsIHQwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdG1wLCB0bXAsIHQxKSxcblxuICAgICAgICAgICAgLy8gIC8vIHQyICsgdDMqeSA9ICh6MiArIHozKnkpXjIgPSBiXjJcbiAgICAgICAgICAgIC8vICB0bXAgPSB6MiAqIHozO1xuICAgICAgICAgICAgLy8gIHQyID0gKHoyICsgejMpICogKHoyICsgbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHozKSAtIHRtcCAtIG15X0ZwNjo6bm9uX3Jlc2lkdWUgKiB0bXA7XG4gICAgICAgICAgICAvLyAgdDMgPSB0bXAgKyB0bXA7XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHgyLCB4MywgdG1wKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB4MywgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4MiwgdDIsIHQyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgeDIsIHgzLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBBVVgsIHQyLCB0MiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsTlJcIiwgdG1wLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIEFVWCwgQVVYKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIEFVWCwgdDIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0bXAsIHRtcCwgdDMpLFxuXG4gICAgICAgICAgICAvLyAgLy8gdDQgKyB0NSp5ID0gKHo0ICsgejUqeSleMiA9IGNeMlxuICAgICAgICAgICAgLy8gIHRtcCA9IHo0ICogejU7XG4gICAgICAgICAgICAvLyAgdDQgPSAoejQgKyB6NSkgKiAoejQgKyBteV9GcDY6Om5vbl9yZXNpZHVlICogejUpIC0gdG1wIC0gbXlfRnA2Ojpub25fcmVzaWR1ZSAqIHRtcDtcbiAgICAgICAgICAgIC8vICB0NSA9IHRtcCArIHRtcDtcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxcIiwgeDQsIHg1LCB0bXApLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bE5SXCIsIHg1LCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHg0LCB0NCwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB4NCwgeDUsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIEFVWCwgdDQsIHQ0KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9tdWxOUlwiLCB0bXAsIEFVWCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgQVVYLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgQVVYLCB0NCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHRtcCwgdG1wLCB0NSksXG5cbiAgICAgICAgICAgIC8vIEZvciBBXG4gICAgICAgICAgICAvLyB6MCA9IDMgKiB0MCAtIDIgKiB6MFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0MCwgeDAsIHIwKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjAsIHIwLCByMCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQwLCByMCwgcjApLFxuICAgICAgICAgICAgLy8gejEgPSAzICogdDEgKyAyICogejFcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDEsIHgxLCByMSksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIxLCByMSwgcjEpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MSwgcjEsIHIxKSxcblxuICAgICAgICAgICAgLy8gRm9yIEJcbiAgICAgICAgICAgIC8vIHoyID0gMyAqICh4aSAqIHQ1KSArIDIgKiB6MlxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCB0NSwgYy5pMzJfY29uc3QocEJsczEyMzgxVHdpc3QpLCBBVVgpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHgyLCByMiksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHIyLCByMiwgcjIpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCBBVVgsIHIyLCByMiksXG4gICAgICAgICAgICAvLyB6MyA9IDMgKiB0NCAtIDIgKiB6M1xuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX3N1YlwiLCB0NCwgeDMsIHIzKSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgcjMsIHIzLCByMyksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQ0LCByMywgcjMpLFxuXG4gICAgICAgICAgICAvLyBGb3IgQ1xuICAgICAgICAgICAgLy8gejQgPSAzICogdDIgLSAyICogejRcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9zdWJcIiwgdDIsIHg0LCByNCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHI0LCByNCwgcjQpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCB0MiwgcjQsIHI0KSxcbiAgICAgICAgICAgIC8vIHo1ID0gMyAqIHQzICsgMiAqIHo1XG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfYWRkXCIsIHQzLCB4NSwgcjUpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX2FkZFwiLCByNSwgcjUsIHI1KSxcbiAgICAgICAgICAgIGMuY2FsbChmMm1QcmVmaXggKyBcIl9hZGRcIiwgdDMsIHI1LCByNSksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkQ3ljbG90b21pY0V4cChleHBvbmVudCwgaXNFeHBOZWdhdGl2ZSwgZm5OYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9uZW50TmFmQnl0ZXMgPSBuYWYoZXhwb25lbnQpLm1hcCggKGIpID0+IChiPT0tMSA/IDB4RkY6IGIpICk7XG4gICAgICAgIGNvbnN0IHBFeHBvbmVudE5hZkJ5dGVzID0gbW9kdWxlLmFsbG9jKGV4cG9uZW50TmFmQnl0ZXMpO1xuICAgICAgICAvLyBjb25zdCBwRXhwb25lbnQgPSBtb2R1bGUuYWxsb2ModXRpbHMuYmlnSW50MkJ5dGVzTEUoZXhwb25lbnQsIG44KSk7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX19jeWNsb3RvbWljRXhwX1wiK2ZuTmFtZSk7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImJpdFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRMb2NhbChcImlcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCB4ID0gYy5nZXRMb2NhbChcInhcIik7XG5cbiAgICAgICAgY29uc3QgcmVzID0gYy5nZXRMb2NhbChcInJcIik7XG5cbiAgICAgICAgY29uc3QgaW52ZXJzZSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcblxuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgeCwgaW52ZXJzZSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlcyksXG5cbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy50ZWVMb2NhbChcImJpdFwiLCBjLmkzMl9sb2FkOF9zKGMuaTMyX2NvbnN0KGV4cG9uZW50TmFmQnl0ZXMubGVuZ3RoLTEpLCBwRXhwb25lbnROYWZCeXRlcykpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXRMb2NhbChcImJpdFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2NvbnN0KDEpXG4gICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCB4LCByZXMpLFxuICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgaW52ZXJzZSwgcmVzKSxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLnNldExvY2FsKFwiaVwiLCBjLmkzMl9jb25zdChleHBvbmVudE5hZkJ5dGVzLmxlbmd0aC0yKSksXG4gICAgICAgICAgICBjLmJsb2NrKGMubG9vcChcbiAgICAgICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgcmVzLCByZXMpLFxuICAgICAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgICAgIGMudGVlTG9jYWwoXCJiaXRcIiwgYy5pMzJfbG9hZDhfcyhjLmdldExvY2FsKFwiaVwiKSwgcEV4cG9uZW50TmFmQnl0ZXMpKSxcbiAgICAgICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuaTMyX2VxKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZ2V0TG9jYWwoXCJiaXRcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5pMzJfY29uc3QoMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlcywgeCwgcmVzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgcmVzLCBpbnZlcnNlLCByZXMpLFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBjLmJyX2lmKDEsIGMuaTMyX2VxeiAoIGMuZ2V0TG9jYWwoXCJpXCIpICkpLFxuICAgICAgICAgICAgICAgIGMuc2V0TG9jYWwoXCJpXCIsIGMuaTMyX3N1YihjLmdldExvY2FsKFwiaVwiKSwgYy5pMzJfY29uc3QoMSkpKSxcbiAgICAgICAgICAgICAgICBjLmJyKDApXG4gICAgICAgICAgICApKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChpc0V4cE5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Nvbmp1Z2F0ZVwiLCByZXMsIHJlcyksXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpbmFsRXhwb25lbnRpYXRpb24oKSB7XG4gICAgICAgIGJ1aWxkQ3ljbG90b21pY1NxdWFyZSgpO1xuICAgICAgICBidWlsZEN5Y2xvdG9taWNFeHAoZmluYWxFeHBaLCBmaW5hbEV4cElzTmVnYXRpdmUsIFwidzBcIik7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjID0gZi5nZXRDb2RlQnVpbGRlcigpO1xuXG4gICAgICAgIGNvbnN0IGVsdCA9IGMuZ2V0TG9jYWwoXCJ4XCIpO1xuICAgICAgICBjb25zdCByZXMgPSBjLmdldExvY2FsKFwiclwiKTtcbiAgICAgICAgY29uc3QgdDAgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQxID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0MiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDMgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG4gICAgICAgIGNvbnN0IHQ0ID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCB0NSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmdHNpemUpKTtcbiAgICAgICAgY29uc3QgdDYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZnRzaXplKSk7XG5cbiAgICAgICAgZi5hZGRDb2RlKFxuXG4gICAgICAgICAgICAvLyBsZXQgbXV0IHQwID0gZi5mcm9iZW5pdXNfbWFwKDYpXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZnJvYmVuaXVzTWFwNlwiLCBlbHQsIHQwKSxcblxuICAgICAgICAgICAgLy8gbGV0IHQxID0gZi5pbnZlcnQoKVxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2ludmVyc2VcIiwgZWx0LCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDIgPSB0MCAqIHQxO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MCwgdDEsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDEgPSB0Mi5jbG9uZSgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2NvcHlcIiwgdDIsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDIgPSB0Mi5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDIsIHQyKSxcblxuICAgICAgICAgICAgLy8gdDIgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQyLCB0MSwgdDIpLFxuXG5cbiAgICAgICAgICAgIC8vIHQxID0gY3ljbG90b21pY19zcXVhcmUodDIpLmNvbmp1Z2F0ZSgpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIsIHQyLCB0MSksXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQxLCB0MSksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDMgPSBjeWNvbG90b21pY19leHAodDIpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQyLCB0MyksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDQgPSBjeWNsb3RvbWljX3NxdWFyZSh0Myk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNTcXVhcmVcIiwgdDMsIHQ0KSxcblxuICAgICAgICAgICAgLy8gbGV0IG11dCB0NSA9IHQxICogdDM7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MywgdDUpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IGN5Y29sb3RvbWljX2V4cCh0NSk7XG4gICAgICAgICAgICBjLmNhbGwocHJlZml4ICsgXCJfX2N5Y2xvdG9taWNFeHBfdzBcIiwgdDUsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDAgPSBjeWNvbG90b21pY19leHAodDEpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQxLCB0MCksXG5cbiAgICAgICAgICAgIC8vIGxldCBtdXQgdDYgPSBjeWNvbG90b21pY19leHAodDApO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQwLCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQ2ICo9IHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NiwgdDQsIHQ2KSxcblxuICAgICAgICAgICAgLy8gdDQgPSBjeWNvbG90b21pY19leHAodDYpO1xuICAgICAgICAgICAgYy5jYWxsKHByZWZpeCArIFwiX19jeWNsb3RvbWljRXhwX3cwXCIsIHQ2LCB0NCksXG5cbiAgICAgICAgICAgIC8vIHQ1ID0gdDUuY29uanVnYXRlKCk7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfY29uanVnYXRlXCIsIHQ1LCB0NSksXG5cbiAgICAgICAgICAgIC8vIHQ0ICo9IHQ1ICogdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ0LCB0NSwgdDQpLFxuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0NCwgdDIsIHQ0KSxcblxuICAgICAgICAgICAgLy8gdDUgPSB0Mi5jb25qdWdhdGUoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9jb25qdWdhdGVcIiwgdDIsIHQ1KSxcblxuICAgICAgICAgICAgLy8gdDEgKj0gdDI7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQxLCB0MiwgdDEpLFxuXG4gICAgICAgICAgICAvLyB0MSA9IHQxLmZyb2Jlbml1c19tYXAoKS5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDNcIiwgdDEsIHQxKSxcblxuICAgICAgICAgICAgLy8gdDYgKj0gdDU7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQ2LCB0NSwgdDYpLFxuXG4gICAgICAgICAgICAvLyB0NiA9IHQ2LmZyb2Jlbml1c19tYXAoKTtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXAxXCIsIHQ2LCB0NiksXG5cbiAgICAgICAgICAgIC8vIHQzICo9IHQwO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDAsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgPSB0My5mcm9iZW5pdXNfbWFwKCkuZnJvYmVuaXVzX21hcCgpO1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX2Zyb2Jlbml1c01hcDJcIiwgdDMsIHQzKSxcblxuICAgICAgICAgICAgLy8gdDMgKj0gdDE7XG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHQzLCB0MSwgdDMpLFxuXG4gICAgICAgICAgICAvLyB0MyAqPSB0NjtcbiAgICAgICAgICAgIGMuY2FsbChmdG1QcmVmaXggKyBcIl9tdWxcIiwgdDMsIHQ2LCB0MyksXG5cbiAgICAgICAgICAgIC8vIGYgPSB0MyAqIHQ0O1xuICAgICAgICAgICAgYy5jYWxsKGZ0bVByZWZpeCArIFwiX211bFwiLCB0MywgdDQsIHJlcyksXG5cbiAgICAgICAgKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJ4XCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwiclwiLCBcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBleHBvbmVudCA9IDMyMjI3NzM2MTUxNjkzNDE0MDQ2Mjg5MTU2NDU4NjUxMDEzOTkwODM3OTk2OTUxNDgyODQ5NDIxODM2NjY4ODAyNTI4ODY2MTA0MTEwNDY4Mjc5NDk5ODY4MDQ5NzU4MDAwODg5OTk3MzI0OTgxNDEwNDQ0NzY5Mjc3ODk4ODIwODM3Njc3OTU3MzgxOTQ4NTI2MzAyNjE1OTU4ODUxMDUxMzgzNDg3NjMwMzAxNDAxNjc5ODgwOTkxOTM0MzUzMjg5OTE2NDg0ODczMDI4MDk0MjYwOTk1NjY3MDkxNzU2NTYxODExNTg2NzI4NzM5OTYyMzI4NjgxMzI3MDM1NzkwMTczMTUxMDE4ODE0OTkzNDM2MzM2MDM4MTYxNDUwMTMzNDA4NjgyNTQ0MjI3MTkyMDA3OTM2MzI4OTk1NDUxMDU2NTM3NTM3ODQ0MzcwNDM3Mjk5NDg4MTQwNjc5Nzg4MjY3Njk3MTA4MjIwMDYyNjU0MTkxNjQxMzE4NDY0MjUyMDI2OTY3ODg5NzU1OTUzMjI2MDk0OTMzNDc2MDYwNDk2MjA4NjM0ODg5ODExODk4MjI0ODg0MjYzNDM3OTYzNzU5ODY2NTQ2ODgxNzc2OTA3NTg3ODU1NTQ5Mzc1MjIxNDQ5Mjc5MDEyMjc4NTg1MDIwMjk1NzU3NTIwMDE3NjA4NDIwNDQyMjc1MTQ4NTk1NzMzNjQ2NTQ3MjMyNDgxMDk4MjgzMzYzODQ5MDkwNDI3OTI4MjY5NjEzNDMyMzA3MjUxNTIyMDA0NDQ1MTU5MjY0Njg4NTQxMDU3MjIzNDQ1MTczMjc5MDU5MDAxMzQ3OTM1ODM0Mzg0MTIyMDA3NDE3NDg0ODIyMTcyMjAxNzA4MzU5Nzg3MjAxNzYzODUxNDEwMzE3NDEyMjc4NDg0MzkyNTU3ODM3MDQzMDg0MzUyMjk1OTYwMDA5NTY3NjI4NTcyMzczNzA0OTQzODM0NjU0NDc1MzE2ODkxMjk3NDk3Njc5MTUyODUzNTI3NjMxNzI1NjkwNDMzNjUyMDE3OTI4MTE0NTM5NDY4NjU2NTA1MDQxOTI1MDYxNDEwNzgwMzIzMzMxNDY1ODgyNTQ2MzExNzkwMDI1MDcwMTE5OTE4MTUyOTIwNTk0MjM2MzE1OTMyNTc2NTk5MTgxOTQzMzkxNDMwMzkwODg2MDQ2MDcyMDU4MTQwODIwMTM3MzE2NDA0Nzc3Mzc5NDgyNTQxMTAxMTkyMjMwNTgyMDA2NTYxMTEyMTU0NDU2MTgwODQxNDA1NTMwMjIxMjA1NzQ3MTM5NTcxOTQzMjA3MjIwOTI0NTYwMDI1ODEzNDM2NDU4NDYzNjgxMDA5MzUyMDI4NTcxMTA3MjU3ODcyMTQzNTUxNzg4NDEwMzUyNjQ4MzgzMjczMzI4OTgwMjQyNjE1NzMwMTU0Mjc0NDQ3Njc0MDAwODQ5NDc4MDM2MzM1NDMwNTExNjk3ODgwNTYyMDY3MTQ2NzA3MTQwMDcxMTM1ODgzOTU1MzM3NTM0MDcyNDg5OTczNTQ2MDQ4MDE0NDU5OTc4MjAxNDkwNjU4NjU0MzgxMzI5MjE1NzkyMjIyMDY0NTA4OTE5MjEzMDIwOTMzNDkyNjY2MTU4ODczNzAwNzc2ODU2NTgzODUxOTQ1NjYwMTU2MDgwNDk1Nzk4NTY2Nzg4MDM5NTIyMTA0OTI0OTgwMzc1MzU4MjYzNzcwODU2MG47XG5cbiAgICAgICAgY29uc3QgcEV4cG9uZW50ID0gbW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoIGV4cG9uZW50LCA1NDQgKSk7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBmLmFkZENvZGUoXG4gICAgICAgICAgICBjLmNhbGwoZnRtUHJlZml4ICsgXCJfZXhwXCIsIGMuZ2V0TG9jYWwoXCJ4XCIpLCBjLmkzMl9jb25zdChwRXhwb25lbnQpLCBjLmkzMl9jb25zdCg1NDQpLCBjLmdldExvY2FsKFwiclwiKSksXG4gICAgICAgICk7XG4gICAgfVxuXG5cbiAgICBjb25zdCBwUHJlUCA9IG1vZHVsZS5hbGxvYyhwcmVQU2l6ZSk7XG4gICAgY29uc3QgcFByZVEgPSBtb2R1bGUuYWxsb2MocHJlUVNpemUpO1xuXG4gICAgZnVuY3Rpb24gYnVpbGRQYWlyaW5nRXF1YXRpb24oblBhaXJpbmdzKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdFcVwiK25QYWlyaW5ncyk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUGFpcmluZ3M7IGkrKykge1xuICAgICAgICAgICAgZi5hZGRQYXJhbShcInBfXCIraSwgXCJpMzJcIik7XG4gICAgICAgICAgICBmLmFkZFBhcmFtKFwicV9cIitpLCBcImkzMlwiKTtcbiAgICAgICAgfVxuICAgICAgICBmLmFkZFBhcmFtKFwiY1wiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuICAgICAgICBjb25zdCBhdXhUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfb25lXCIsIHJlc1QgKSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5QYWlyaW5nczsgaSsrKSB7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwX1wiK2kpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX3ByZXBhcmVHMlwiLCBjLmdldExvY2FsKFwicV9cIitpKSwgYy5pMzJfY29uc3QocFByZVEpICkpO1xuXG4gICAgICAgICAgICAvLyBDaGVja3NcbiAgICAgICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgICAgICBjLmkzMl9lcXooYy5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYy5pMzJfY29uc3QocFByZVApKSksXG4gICAgICAgICAgICAgICAgICAgIGMucmV0KGMuaTMyX2NvbnN0KDApKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkdyb3VwQWZmaW5lXCIsIGMuaTMyX2NvbnN0KHBQcmVRKSkpLFxuICAgICAgICAgICAgICAgICAgICBjLnJldChjLmkzMl9jb25zdCgwKSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX21pbGxlckxvb3BcIiwgYy5pMzJfY29uc3QocFByZVApLCBjLmkzMl9jb25zdChwUHJlUSksIGF1eFQgKSk7XG5cbiAgICAgICAgICAgIGYuYWRkQ29kZShjLmNhbGwoZnRtUHJlZml4ICsgXCJfbXVsXCIsIHJlc1QsIGF1eFQsIHJlc1QgKSk7XG4gICAgICAgIH1cblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIiwgcmVzVCwgcmVzVCApKTtcblxuICAgICAgICBmLmFkZENvZGUoYy5jYWxsKGZ0bVByZWZpeCArIFwiX2VxXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJjXCIpKSk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBidWlsZFBhaXJpbmcoKSB7XG5cbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihwcmVmaXgrIFwiX3BhaXJpbmdcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicVwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5hZGRQYXJhbShcInJcIiwgXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCByZXNUID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKGZ0c2l6ZSkpO1xuXG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIsIGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChwUHJlUCkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfcHJlcGFyZUcyXCIsIGMuZ2V0TG9jYWwoXCJxXCIpLCBjLmkzMl9jb25zdChwUHJlUSkgKSk7XG4gICAgICAgIGYuYWRkQ29kZShjLmNhbGwocHJlZml4ICsgXCJfbWlsbGVyTG9vcFwiLCBjLmkzMl9jb25zdChwUHJlUCksIGMuaTMyX2NvbnN0KHBQcmVRKSwgcmVzVCApKTtcbiAgICAgICAgZi5hZGRDb2RlKGMuY2FsbChwcmVmaXggKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCIsIHJlc1QsIGMuZ2V0TG9jYWwoXCJyXCIpICkpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gYnVpbGRJbkdyb3VwRzIoKSB7XG4gICAgICAgIGNvbnN0IGYgPSBtb2R1bGUuYWRkRnVuY3Rpb24oZzJtUHJlZml4KyBcIl9pbkdyb3VwQWZmaW5lXCIpO1xuICAgICAgICBmLmFkZFBhcmFtKFwicFwiLCBcImkzMlwiKTtcbiAgICAgICAgZi5zZXRSZXR1cm5UeXBlKFwiaTMyXCIpO1xuXG4gICAgICAgIGNvbnN0IGMgPSBmLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgV0lOViA9IFtcbiAgICAgICAgICAgIDIwMDEyMDQ3Nzc2MTA4MzM2OTY3MDg4OTQ5MTI4Njc5NTIwNzgyNzg0NDE0MDk5Njk1MDM5NDI2NjYwMjkwNjgwNjIwMTU4MjUyNDU0MTg5MzIyMjEzNDM4MTQ1NjQ1MDc4MzIwMTg5NDcxMzYyNzk4OTRuLFxuICAgICAgICAgICAgMjAwMTIwNDc3NzYxMDgzMzY5NjcwODg5NDkxMjg2Nzk1MjA3ODI3ODQ0MTQwOTk2OTUwMzk0MjY2NjAyOTA2ODA2MjAxNTgyNTI0NTQxODkzMjIyMTM0MzgxNDU2NDUwNzgzMjAxODk0NzEzNjI3OTg5M25cbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBGUk9CMlggPSA0MDAyNDA5NTU1MjIxNjY3MzkyNjI0MzEwNDM1MDA2Njg4NjQzOTM1NTAzMTE4MzA1NTg2NDM4MjcxMTcxMzk1ODQyOTcxMTU3NDgwMzgxMzc3MDE1NDA1OTgwMDUzNTM5MzU4NDE3MTM1NTQwOTM5NDM2bjtcbiAgICAgICAgY29uc3QgRlJPQjNZID0gW1xuICAgICAgICAgICAgMjk3MzY3NzQwODk4NjU2MTA0MzQ0MjQ2NTM0NjUyMDEwODg3OTE3MjA0Mjg4MzAwOTI0OTk4OTE3NjQxNTAxODA5MTQyMDgwNzE5MjE4MjYzODU2NzExNjMxODU3NjQ3MjY0OTM0NzAxNTkxNzY5MDUzMG4sXG4gICAgICAgICAgICAyOTczNjc3NDA4OTg2NTYxMDQzNDQyNDY1MzQ2NTIwMTA4ODc5MTcyMDQyODgzMDA5MjQ5OTg5MTc2NDE1MDE4MDkxNDIwODA3MTkyMTgyNjM4NTY3MTE2MzE4NTc2NDcyNjQ5MzQ3MDE1OTE3NjkwNTMwblxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IHdJbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoW1xuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoV0lOVlswXSksIG44cSksXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShXSU5WWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IGZyb2IyWCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyh1dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CMlgpLCBuOHEpKSk7XG4gICAgICAgIGNvbnN0IGZyb2IzWSA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhbXG4gICAgICAgICAgICAuLi51dGlscyQxLmJpZ0ludDJCeXRlc0xFKHRvTW9udGdvbWVyeShGUk9CM1lbMF0pLCBuOHEpLFxuICAgICAgICAgICAgLi4udXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoRlJPQjNZWzFdKSwgbjhxKSxcbiAgICAgICAgXSkpO1xuXG4gICAgICAgIGNvbnN0IHogPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRShmaW5hbEV4cFosIDgpKSk7XG5cbiAgICAgICAgY29uc3QgcHggPSBjLmdldExvY2FsKFwicFwiKTtcbiAgICAgICAgY29uc3QgcHkgPSBjLmkzMl9hZGQoYy5nZXRMb2NhbChcInBcIiksIGMuaTMyX2NvbnN0KGYyc2l6ZSkpO1xuXG4gICAgICAgIGNvbnN0IGF1eCA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMXNpemUpKTtcblxuICAgICAgICBjb25zdCB4X3dpbnYgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKSk7XG4gICAgICAgIGNvbnN0IHlfd2ludiA9IGMuaTMyX2NvbnN0KG1vZHVsZS5hbGxvYyhmMnNpemUpKTtcbiAgICAgICAgY29uc3QgcGYyID0gbW9kdWxlLmFsbG9jKGYyc2l6ZSoyKTtcbiAgICAgICAgY29uc3QgZjIgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnggPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzEgPSBjLmkzMl9jb25zdChwZjIpO1xuICAgICAgICBjb25zdCBmMnhfYzIgPSBjLmkzMl9jb25zdChwZjIrZjFzaXplKTtcbiAgICAgICAgY29uc3QgZjJ5ID0gYy5pMzJfY29uc3QocGYyK2Yyc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYyeV9jMSA9IGMuaTMyX2NvbnN0KHBmMitmMnNpemUpO1xuICAgICAgICBjb25zdCBmMnlfYzIgPSBjLmkzMl9jb25zdChwZjIrZjJzaXplK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IHBmMyA9IG1vZHVsZS5hbGxvYyhmMnNpemUqMyk7XG4gICAgICAgIGNvbnN0IGYzID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4ID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MxID0gYy5pMzJfY29uc3QocGYzKTtcbiAgICAgICAgY29uc3QgZjN4X2MyID0gYy5pMzJfY29uc3QocGYzK2Yxc2l6ZSk7XG4gICAgICAgIGNvbnN0IGYzeSA9IGMuaTMyX2NvbnN0KHBmMytmMnNpemUpO1xuICAgICAgICBjb25zdCBmM3lfYzEgPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKTtcbiAgICAgICAgY29uc3QgZjN5X2MyID0gYy5pMzJfY29uc3QocGYzK2Yyc2l6ZStmMXNpemUpO1xuICAgICAgICBjb25zdCBmM3ogPSBjLmkzMl9jb25zdChwZjMrZjJzaXplKjIpO1xuXG5cbiAgICAgICAgZi5hZGRDb2RlKFxuICAgICAgICAgICAgYy5pZihcbiAgICAgICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfaXNaZXJvQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSxcbiAgICAgICAgICAgICAgICBjLnJldCggYy5pMzJfY29uc3QoMSkpLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5pMzJfZXF6KGMuY2FsbChnMm1QcmVmaXggKyBcIl9pbkN1cnZlQWZmaW5lXCIsIGMuZ2V0TG9jYWwoXCJwXCIpKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDApKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCB3SW52LCB4X3dpbnYpLFxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bFwiLCBweSwgd0ludiwgeV93aW52KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX211bDFcIiwgeF93aW52LCBmcm9iMlgsIGYyeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbmVnXCIsIHlfd2ludiwgZjJ5KSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX25lZ1wiLCB4X3dpbnYsIGYzeCksXG4gICAgICAgICAgICBjLmNhbGwoZjJtUHJlZml4ICsgXCJfbXVsXCIsIHlfd2ludiwgZnJvYjNZLCBmM3kpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYyeF9jMSwgZjJ4X2MyLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmMnhfYzEsIGYyeF9jMiwgZjJ4X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjJ4X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX3N1YlwiLCBmMnlfYzEsIGYyeV9jMiwgYXV4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjJ5X2MxLCBmMnlfYzIsIGYyeV9jMiksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfY29weVwiLCBhdXgsIGYyeV9jMSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9hZGRcIiwgZjN4X2MxLCBmM3hfYzIsIGF1eCksXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeF9jMSwgZjN4X2MyLCBmM3hfYzIpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgYXV4LCBmM3hfYzEpLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfc3ViXCIsIGYzeV9jMiwgZjN5X2MxLCBhdXgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2FkZFwiLCBmM3lfYzEsIGYzeV9jMiwgZjN5X2MyKSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIGF1eCwgZjN5X2MxKSxcblxuICAgICAgICAgICAgYy5jYWxsKGYybVByZWZpeCArIFwiX29uZVwiLCBmM3opLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgZjMsIHosIGMuaTMyX2NvbnN0KDgpLCBmMyksXG4gICAgICAgICAgICBjLmNhbGwoZzJtUHJlZml4ICsgXCJfYWRkTWl4ZWRcIiwgZjMsIGYyLCBmMyksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMm1QcmVmaXggKyBcIl9lcU1peGVkXCIsIGYzLCBjLmdldExvY2FsKFwicFwiKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMm1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjJzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMm1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEluR3JvdXBHMSgpIHtcbiAgICAgICAgY29uc3QgZiA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXgrIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgICAgIGYuYWRkUGFyYW0oXCJwXCIsIFwiaTMyXCIpO1xuICAgICAgICBmLnNldFJldHVyblR5cGUoXCJpMzJcIik7XG5cbiAgICAgICAgY29uc3QgYyA9IGYuZ2V0Q29kZUJ1aWxkZXIoKTtcblxuICAgICAgICBjb25zdCBCRVRBID0gNDAwMjQwOTU1NTIyMTY2NzM5MjYyNDMxMDQzNTAwNjY4ODY0MzkzNTUwMzExODMwNTU4NjQzODI3MTE3MTM5NTg0Mjk3MTE1NzQ4MDM4MTM3NzAxNTQwNTk4MDA1MzUzOTM1ODQxNzEzNTU0MDkzOTQzNm47XG4gICAgICAgIGNvbnN0IEJFVEEyID0gNzkzNDc5MzkwNzI5MjE1NTEyNjIxMzc5NzAxNjMzNDIxNDQ3MDYwODg2NzQwMjgxMDYwNDkzMDEwNDU2NDg3NDI3MjgxNjQ5MDc1NDc2MzA1NjIwNzU4NzMxNjIwMzUwbjtcbiAgICAgICAgY29uc3QgWjJNMUQzID0gKGZpbmFsRXhwWiAqIGZpbmFsRXhwWiAtIDFuKSAvIDNuO1xuXG4gICAgICAgIGNvbnN0IGJldGEgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQSksIG44cSkpKTtcbiAgICAgICAgY29uc3QgYmV0YTIgPSBjLmkzMl9jb25zdChtb2R1bGUuYWxsb2ModXRpbHMkMS5iaWdJbnQyQnl0ZXNMRSh0b01vbnRnb21lcnkoQkVUQTIpLCBuOHEpKSk7XG5cbiAgICAgICAgY29uc3QgejJtMWQzID0gYy5pMzJfY29uc3QobW9kdWxlLmFsbG9jKHV0aWxzJDEuYmlnSW50MkJ5dGVzTEUoWjJNMUQzLCAxNikpKTtcblxuXG4gICAgICAgIGNvbnN0IHB4ID0gYy5nZXRMb2NhbChcInBcIik7XG4gICAgICAgIGNvbnN0IHB5ID0gYy5pMzJfYWRkKGMuZ2V0TG9jYWwoXCJwXCIpLCBjLmkzMl9jb25zdChmMXNpemUpKTtcblxuICAgICAgICBjb25zdCBwc3AgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjMpO1xuICAgICAgICBjb25zdCBzcCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweCA9IGMuaTMyX2NvbnN0KHBzcCk7XG4gICAgICAgIGNvbnN0IHNweSA9IGMuaTMyX2NvbnN0KHBzcCtmMXNpemUpO1xuXG4gICAgICAgIGNvbnN0IHBzMnAgPSBtb2R1bGUuYWxsb2MoZjFzaXplKjIpO1xuICAgICAgICBjb25zdCBzMnAgPSBjLmkzMl9jb25zdChwczJwKTtcbiAgICAgICAgY29uc3QgczJweCA9IGMuaTMyX2NvbnN0KHBzMnApO1xuICAgICAgICBjb25zdCBzMnB5ID0gYy5pMzJfY29uc3QocHMycCtmMXNpemUpO1xuXG4gICAgICAgIGYuYWRkQ29kZShcbiAgICAgICAgICAgIGMuaWYoXG4gICAgICAgICAgICAgICAgYy5jYWxsKGcxbVByZWZpeCArIFwiX2lzWmVyb0FmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSksXG4gICAgICAgICAgICAgICAgYy5yZXQoIGMuaTMyX2NvbnN0KDEpKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBjLmlmKFxuICAgICAgICAgICAgICAgIGMuaTMyX2VxeihjLmNhbGwoZzFtUHJlZml4ICsgXCJfaW5DdXJ2ZUFmZmluZVwiLCBjLmdldExvY2FsKFwicFwiKSkpLFxuICAgICAgICAgICAgICAgIGMucmV0KCBjLmkzMl9jb25zdCgwKSksXG4gICAgICAgICAgICApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZjFtUHJlZml4ICsgXCJfbXVsXCIsIHB4LCBiZXRhLCBzcHgpLFxuICAgICAgICAgICAgYy5jYWxsKGYxbVByZWZpeCArIFwiX2NvcHlcIiwgcHksIHNweSksXG5cbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9tdWxcIiwgcHgsIGJldGEyLCBzMnB4KSxcbiAgICAgICAgICAgIGMuY2FsbChmMW1QcmVmaXggKyBcIl9jb3B5XCIsIHB5LCBzMnB5KSxcblxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfZG91YmxlQWZmaW5lXCIsIHNwLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIGMuZ2V0TG9jYWwoXCJwXCIpLCBzcCksXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfc3ViTWl4ZWRcIiwgc3AsIHMycCwgc3ApLFxuXG4gICAgICAgICAgICBjLmNhbGwoZzFtUHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIiwgc3AsIHoybTFkMywgYy5pMzJfY29uc3QoMTYpLCBzcCksXG5cbiAgICAgICAgICAgIGMucmV0KFxuICAgICAgICAgICAgICAgIGMuY2FsbChnMW1QcmVmaXggKyBcIl9lcU1peGVkXCIsIHNwLCBzMnApXG4gICAgICAgICAgICApXG5cbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmSW5Hcm91cCA9IG1vZHVsZS5hZGRGdW5jdGlvbihnMW1QcmVmaXggKyBcIl9pbkdyb3VwXCIpO1xuICAgICAgICBmSW5Hcm91cC5hZGRQYXJhbShcInBJblwiLCBcImkzMlwiKTtcbiAgICAgICAgZkluR3JvdXAuc2V0UmV0dXJuVHlwZShcImkzMlwiKTtcblxuICAgICAgICBjb25zdCBjMiA9IGZJbkdyb3VwLmdldENvZGVCdWlsZGVyKCk7XG5cbiAgICAgICAgY29uc3QgYXV4MiA9IGMyLmkzMl9jb25zdChtb2R1bGUuYWxsb2MoZjFzaXplKjIpKTtcblxuICAgICAgICBmSW5Hcm91cC5hZGRDb2RlKFxuICAgICAgICAgICAgYzIuY2FsbChnMW1QcmVmaXggKyBcIl90b0FmZmluZVwiLCBjMi5nZXRMb2NhbChcInBJblwiKSwgYXV4MiksXG5cbiAgICAgICAgICAgIGMyLnJldChcbiAgICAgICAgICAgICAgICBjMi5jYWxsKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIiwgYXV4MiksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaT0wOyBpPDEwOyBpKyspIHtcbiAgICAgICAgYnVpbGRGcm9iZW5pdXNNYXAoaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmdG1QcmVmaXggKyBcIl9mcm9iZW5pdXNNYXBcIitpKTtcbiAgICB9XG5cblxuICAgIGJ1aWxkSW5Hcm91cEcxKCk7XG4gICAgYnVpbGRJbkdyb3VwRzIoKTtcblxuICAgIGJ1aWxkUHJlcEFkZFN0ZXAoKTtcbiAgICBidWlsZFByZXBEb3VibGVTdGVwKCk7XG5cbiAgICBidWlsZFByZXBhcmVHMSgpO1xuICAgIGJ1aWxkUHJlcGFyZUcyKCk7XG5cbiAgICBidWlsZE1pbGxlckxvb3AoKTtcblxuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbk9sZCgpO1xuICAgIGJ1aWxkRmluYWxFeHBvbmVudGlhdGlvbigpO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD01OyBpKyspIHtcbiAgICAgICAgYnVpbGRQYWlyaW5nRXF1YXRpb24oaSk7XG4gICAgICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nRXFcIitpKTtcbiAgICB9XG5cbiAgICBidWlsZFBhaXJpbmcoKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wYWlyaW5nXCIpO1xuXG5cbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24ocHJlZml4ICsgXCJfcHJlcGFyZUcxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9wcmVwYXJlRzJcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX21pbGxlckxvb3BcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25cIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX2ZpbmFsRXhwb25lbnRpYXRpb25PbGRcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKHByZWZpeCArIFwiX19jeWNsb3RvbWljU3F1YXJlXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihwcmVmaXggKyBcIl9fY3ljbG90b21pY0V4cF93MFwiKTtcblxuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwxXCIpO1xuICAgIG1vZHVsZS5leHBvcnRGdW5jdGlvbihmNm1QcmVmaXggKyBcIl9tdWwwMVwiKTtcbiAgICBtb2R1bGUuZXhwb3J0RnVuY3Rpb24oZnRtUHJlZml4ICsgXCJfbXVsMDE0XCIpO1xuXG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcxbVByZWZpeCArIFwiX2luR3JvdXBcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBBZmZpbmVcIik7XG4gICAgbW9kdWxlLmV4cG9ydEZ1bmN0aW9uKGcybVByZWZpeCArIFwiX2luR3JvdXBcIik7XG5cbiAgICAvLyBjb25zb2xlLmxvZyhtb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWUpO1xufTtcblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBtb2R1bGUuZXhwb3J0cy5ibjEyOF93YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvYm4xMjhfd2FzbS5qc1wiKTtcbi8vIG1vZHVsZS5leHBvcnRzLmJsczEyMzgxX3dhc20gPSByZXF1aXJlKFwiLi9idWlsZC9ibHMxMjM4MV93YXNtLmpzXCIpO1xuLy8gbW9kdWxlLmV4cG9ydHMubW50Njc1M193YXNtID0gcmVxdWlyZShcIi4vYnVpbGQvbW50Njc1M193YXNtLmpzXCIpO1xuXG52YXIgYnVpbGRCbjEyOCQxID0gYnVpbGRfYm4xMjg7XG52YXIgYnVpbGRCbHMxMjM4MSQxID0gYnVpbGRfYmxzMTIzODE7XG5cbi8qIGdsb2JhbCBCaWdJbnQgKi9cblxuZnVuY3Rpb24gc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUobywgMCk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlCaWdJbnRzKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrKSA9PiB7XG4gICAgICAgICAgICByZXNba10gPSBzdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5QmlnSW50cyhvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL15bMC05XSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcInN0cmluZ1wiICYmIC9eMHhbMC05YS1mQS1GXSskLy50ZXN0KG8pKSB7XG4gICAgICAgIHJldHVybiBCaWdJbnQobyk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcCh1bnN0cmluZ2lmeUJpZ0ludHMpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlCaWdJbnRzKG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGJlQnVmZjJpbnQoYnVmZikge1xuICAgIGxldCByZXMgPSBCaWdJbnQoMCk7XG4gICAgbGV0IGkgPSBidWZmLmxlbmd0aDtcbiAgICBsZXQgb2Zmc2V0ID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpID4gMCkge1xuICAgICAgICBpZiAoaSA+PSA0KSB7XG4gICAgICAgICAgICBpIC09IDQ7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA+PSAyKSB7XG4gICAgICAgICAgICBpIC09IDI7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQxNihpKSkgPDwgQmlnSW50KG9mZnNldCAqIDgpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGkpKSA8PCBCaWdJbnQob2Zmc2V0ICogOCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBiZUludDJCdWZmKG4sIGxlbikge1xuICAgIGxldCByID0gbjtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlcik7XG4gICAgbGV0IG8gPSBsZW47XG4gICAgd2hpbGUgKG8gPiAwKSB7XG4gICAgICAgIGlmIChvIC0gNCA+PSAwKSB7XG4gICAgICAgICAgICBvIC09IDQ7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyAtIDIgPj0gMCkge1xuICAgICAgICAgICAgbyAtPSAyO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDE2KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmZmZikpKTtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgxNik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvIC09IDE7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50OChvLCBOdW1iZXIociAmIEJpZ0ludCgweGZmKSkpO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBkb2VzIG5vdCBmaXQgaW4gdGhpcyBsZW5ndGhcIik7XG4gICAgfVxuICAgIHJldHVybiBidWZmO1xufVxuXG5mdW5jdGlvbiBsZUJ1ZmYyaW50KGJ1ZmYpIHtcbiAgICBsZXQgcmVzID0gQmlnSW50KDApO1xuICAgIGxldCBpID0gMDtcbiAgICBjb25zdCBidWZmViA9IG5ldyBEYXRhVmlldyhidWZmLmJ1ZmZlciwgYnVmZi5ieXRlT2Zmc2V0LCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgIHdoaWxlIChpIDwgYnVmZi5sZW5ndGgpIHtcbiAgICAgICAgaWYgKGkgKyA0IDw9IGJ1ZmYubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQzMihpLCB0cnVlKSkgPDwgQmlnSW50KGkgKiA4KTtcbiAgICAgICAgICAgIGkgKz0gNDtcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMiA8PSBidWZmLmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzICs9IEJpZ0ludChidWZmVi5nZXRVaW50MTYoaSwgdHJ1ZSkpIDw8IEJpZ0ludChpICogOCk7XG4gICAgICAgICAgICBpICs9IDI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMgKz0gQmlnSW50KGJ1ZmZWLmdldFVpbnQ4KGksIHRydWUpKSA8PCBCaWdJbnQoaSAqIDgpO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGxlSW50MkJ1ZmYobiwgbGVuKSB7XG4gICAgbGV0IHIgPSBuO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGxlbiA9IE1hdGguZmxvb3IoKGJpdExlbmd0aCQ2KG4pIC0gMSkgLyA4KSArIDE7XG4gICAgICAgIGlmIChsZW4gPT0gMCkgbGVuID0gMTtcbiAgICB9XG4gICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgIGxldCBvID0gMDtcbiAgICB3aGlsZSAobyA8IGxlbikge1xuICAgICAgICBpZiAobyArIDQgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmZmZmZikpLCB0cnVlKTtcbiAgICAgICAgICAgIG8gKz0gNDtcbiAgICAgICAgICAgIHIgPSByID4+IEJpZ0ludCgzMik7XG4gICAgICAgIH0gZWxzZSBpZiAobyArIDIgPD0gbGVuKSB7XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MTYobywgTnVtYmVyKHIgJiBCaWdJbnQoMHhmZmZmKSksIHRydWUpO1xuICAgICAgICAgICAgbyArPSAyO1xuICAgICAgICAgICAgciA9IHIgPj4gQmlnSW50KDE2KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQ4KG8sIE51bWJlcihyICYgQmlnSW50KDB4ZmYpKSwgdHJ1ZSk7XG4gICAgICAgICAgICBvICs9IDE7XG4gICAgICAgICAgICByID0gciA+PiBCaWdJbnQoOCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTnVtYmVyIGRvZXMgbm90IGZpdCBpbiB0aGlzIGxlbmd0aFwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGJ1ZmY7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeUZFbGVtZW50cyhGLCBvKSB7XG4gICAgaWYgKHR5cGVvZiBvID09IFwiYmlnaW50XCIgfHwgby5lcSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBvLnRvU3RyaW5nKDEwKTtcbiAgICB9IGVsc2UgaWYgKG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgIHJldHVybiBGLnRvU3RyaW5nKEYuZShvKSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG8pKSB7XG4gICAgICAgIHJldHVybiBvLm1hcChzdHJpbmdpZnlGRWxlbWVudHMuYmluZCh0aGlzLCBGKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgbyA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG9ba10pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHVuc3RyaW5naWZ5RkVsZW1lbnRzKEYsIG8pIHtcbiAgICBpZiAodHlwZW9mIG8gPT0gXCJzdHJpbmdcIiAmJiAvXlswLTldKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvID09IFwic3RyaW5nXCIgJiYgL14weFswLTlhLWZBLUZdKyQvLnRlc3QobykpIHtcbiAgICAgICAgcmV0dXJuIEYuZShvKTtcbiAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkobykpIHtcbiAgICAgICAgcmV0dXJuIG8ubWFwKHVuc3RyaW5naWZ5RkVsZW1lbnRzLmJpbmQodGhpcywgRikpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG8gPT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAobyA9PT0gbnVsbCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobyk7XG4gICAgICAgIGtleXMuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgICAgcmVzW2tdID0gdW5zdHJpbmdpZnlGRWxlbWVudHMoRiwgb1trXSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBvO1xuICAgIH1cbn1cblxuY29uc3QgX3JldlRhYmxlID0gW107XG5mb3IgKGxldCBpID0gMDsgaSA8IDI1NjsgaSsrKSB7XG4gICAgX3JldlRhYmxlW2ldID0gX3JldlNsb3coaSwgOCk7XG59XG5cbmZ1bmN0aW9uIF9yZXZTbG93KGlkeCwgYml0cykge1xuICAgIGxldCByZXMgPSAwO1xuICAgIGxldCBhID0gaWR4O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYml0czsgaSsrKSB7XG4gICAgICAgIHJlcyA8PD0gMTtcbiAgICAgICAgcmVzID0gcmVzIHwgKGEgJiAxKTtcbiAgICAgICAgYSA+Pj0gMTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gYml0UmV2ZXJzZShpZHgsIGJpdHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICAoX3JldlRhYmxlW2lkeCA+Pj4gMjRdIHxcbiAgICAgICAgKF9yZXZUYWJsZVsoaWR4ID4+PiAxNikgJiAweGZmXSA8PCA4KSB8XG4gICAgICAgIChfcmV2VGFibGVbKGlkeCA+Pj4gOCkgJiAweGZmXSA8PCAxNikgfFxuICAgICAgICAoX3JldlRhYmxlW2lkeCAmIDB4ZmZdIDw8IDI0KSkgPj4+XG4gICAgICAgICgzMiAtIGJpdHMpXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gbG9nMihWKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKChWICYgMHhmZmZmMDAwMCkgIT09IDAgPyAoKFYgJj0gMHhmZmZmMDAwMCksIDE2KSA6IDApIHxcbiAgICAgICAgKChWICYgMHhmZjAwZmYwMCkgIT09IDAgPyAoKFYgJj0gMHhmZjAwZmYwMCksIDgpIDogMCkgfFxuICAgICAgICAoKFYgJiAweGYwZjBmMGYwKSAhPT0gMCA/ICgoViAmPSAweGYwZjBmMGYwKSwgNCkgOiAwKSB8XG4gICAgICAgICgoViAmIDB4Y2NjY2NjY2MpICE9PSAwID8gKChWICY9IDB4Y2NjY2NjY2MpLCAyKSA6IDApIHxcbiAgICAgICAgKChWICYgMHhhYWFhYWFhYSkgIT09IDApXG4gICAgKTtcbn1cblxuZnVuY3Rpb24gYnVmZlJldmVyc2VCaXRzKGJ1ZmYsIGVTaXplKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIGVTaXplO1xuICAgIGNvbnN0IGJpdHMgPSBsb2cyKG4pO1xuICAgIGlmIChuICE9IDEgPDwgYml0cykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludGVyc1wiKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgY29uc3QgciA9IGJpdFJldmVyc2UoaSwgYml0cyk7XG4gICAgICAgIGlmIChpID4gcikge1xuICAgICAgICAgICAgY29uc3QgdG1wID0gYnVmZi5zbGljZShpICogZVNpemUsIChpICsgMSkgKiBlU2l6ZSk7XG4gICAgICAgICAgICBidWZmLnNldChidWZmLnNsaWNlKHIgKiBlU2l6ZSwgKHIgKyAxKSAqIGVTaXplKSwgaSAqIGVTaXplKTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHRtcCwgciAqIGVTaXplKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gYXJyYXkyYnVmZmVyKGFyciwgc0cpIHtcbiAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cgKiBhcnIubGVuZ3RoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGJ1ZmYuc2V0KGFycltpXSwgaSAqIHNHKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZjtcbn1cblxuZnVuY3Rpb24gYnVmZmVyMmFycmF5KGJ1ZmYsIHNHKSB7XG4gICAgY29uc3QgbiA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHO1xuICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBhcnJbaV0gPSBidWZmLnNsaWNlKGkgKiBzRywgaSAqIHNHICsgc0cpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyO1xufVxuXG52YXIgX3V0aWxzID0gLyojX19QVVJFX18qL09iamVjdC5mcmVlemUoe1xuICAgIF9fcHJvdG9fXzogbnVsbCxcbiAgICBhcnJheTJidWZmZXI6IGFycmF5MmJ1ZmZlcixcbiAgICBiZUJ1ZmYyaW50OiBiZUJ1ZmYyaW50LFxuICAgIGJlSW50MkJ1ZmY6IGJlSW50MkJ1ZmYsXG4gICAgYml0UmV2ZXJzZTogYml0UmV2ZXJzZSxcbiAgICBidWZmUmV2ZXJzZUJpdHM6IGJ1ZmZSZXZlcnNlQml0cyxcbiAgICBidWZmZXIyYXJyYXk6IGJ1ZmZlcjJhcnJheSxcbiAgICBsZUJ1ZmYyaW50OiBsZUJ1ZmYyaW50LFxuICAgIGxlSW50MkJ1ZmY6IGxlSW50MkJ1ZmYsXG4gICAgbG9nMjogbG9nMixcbiAgICBzdHJpbmdpZnlCaWdJbnRzOiBzdHJpbmdpZnlCaWdJbnRzLFxuICAgIHN0cmluZ2lmeUZFbGVtZW50czogc3RyaW5naWZ5RkVsZW1lbnRzLFxuICAgIHVuc3RyaW5naWZ5QmlnSW50czogdW5zdHJpbmdpZnlCaWdJbnRzLFxuICAgIHVuc3RyaW5naWZ5RkVsZW1lbnRzOiB1bnN0cmluZ2lmeUZFbGVtZW50c1xufSk7XG5cbmNvbnN0IFBBR0VfU0laRSA9IDE8PDMwO1xuXG5jbGFzcyBCaWdCdWZmZXIge1xuXG4gICAgY29uc3RydWN0b3Ioc2l6ZSkge1xuICAgICAgICB0aGlzLmJ1ZmZlcnMgPSBbXTtcbiAgICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gc2l6ZTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHNpemU7IGkrPSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihzaXplLWksIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlcnMucHVzaChuZXcgVWludDhBcnJheShuKSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHNsaWNlKGZyLCB0bykge1xuICAgICAgICBpZiAoIHRvID09PSB1bmRlZmluZWQgKSB0byA9IHRoaXMuYnl0ZUxlbmd0aDtcbiAgICAgICAgaWYgKCBmciA9PT0gdW5kZWZpbmVkICkgZnIgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0by1mcjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKGZyIC8gUEFHRV9TSVpFKTtcbiAgICAgICAgY29uc3QgbGFzdFBhZ2UgPSBNYXRoLmZsb29yKChmcitsZW4tMSkgLyBQQUdFX1NJWkUpO1xuXG4gICAgICAgIGlmICgoZmlyc3RQYWdlID09IGxhc3RQYWdlKXx8KGxlbj09MCkpXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5idWZmZXJzW2ZpcnN0UGFnZV0uc2xpY2UoZnIlUEFHRV9TSVpFLCBmciVQQUdFX1NJWkUgKyBsZW4pO1xuXG4gICAgICAgIGxldCBidWZmO1xuXG4gICAgICAgIGxldCBwID0gZmlyc3RQYWdlO1xuICAgICAgICBsZXQgbyA9IGZyICUgUEFHRV9TSVpFO1xuICAgICAgICAvLyBSZW1haW5pbmcgYnl0ZXMgdG8gcmVhZFxuICAgICAgICBsZXQgciA9IGxlbjtcbiAgICAgICAgd2hpbGUgKHI+MCkge1xuICAgICAgICAgICAgLy8gYnl0ZXMgdG8gY29weSBmcm9tIHRoaXMgcGFnZVxuICAgICAgICAgICAgY29uc3QgbCA9IChvK3IgPiBQQUdFX1NJWkUpID8gKFBBR0VfU0laRSAtbykgOiByO1xuICAgICAgICAgICAgY29uc3Qgc3JjVmlldyA9IG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyc1twXS5idWZmZXIsIHRoaXMuYnVmZmVyc1twXS5ieXRlT2Zmc2V0K28sIGwpO1xuICAgICAgICAgICAgaWYgKGwgPT0gbGVuKSByZXR1cm4gc3JjVmlldy5zbGljZSgpO1xuICAgICAgICAgICAgaWYgKCFidWZmKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8PSBQQUdFX1NJWkUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZiA9IG5ldyBCaWdCdWZmZXIobGVuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBidWZmLnNldChzcmNWaWV3LCBsZW4tcik7XG4gICAgICAgICAgICByID0gci1sO1xuICAgICAgICAgICAgcCArKztcbiAgICAgICAgICAgIG8gPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgc2V0KGJ1ZmYsIG9mZnNldCkge1xuICAgICAgICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIG9mZnNldCA9IDA7XG5cbiAgICAgICAgY29uc3QgbGVuID0gYnVmZi5ieXRlTGVuZ3RoO1xuXG4gICAgICAgIGlmIChsZW49PTApIHJldHVybjtcblxuICAgICAgICBjb25zdCBmaXJzdFBhZ2UgPSBNYXRoLmZsb29yKG9mZnNldCAvIFBBR0VfU0laRSk7XG4gICAgICAgIGNvbnN0IGxhc3RQYWdlID0gTWF0aC5mbG9vcigob2Zmc2V0K2xlbi0xKSAvIFBBR0VfU0laRSk7XG5cbiAgICAgICAgaWYgKGZpcnN0UGFnZSA9PSBsYXN0UGFnZSkge1xuICAgICAgICAgICAgaWYgKChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSYmKGJ1ZmYuYnVmZmVycy5sZW5ndGg9PTEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyc1tmaXJzdFBhZ2VdLnNldChidWZmLmJ1ZmZlcnNbMF0sIG9mZnNldCAlIFBBR0VfU0laRSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcnNbZmlyc3RQYWdlXS5zZXQoYnVmZiwgb2Zmc2V0ICUgUEFHRV9TSVpFKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cblxuICAgICAgICBsZXQgcCA9IGZpcnN0UGFnZTtcbiAgICAgICAgbGV0IG8gPSBvZmZzZXQgJSBQQUdFX1NJWkU7XG4gICAgICAgIGxldCByID0gbGVuO1xuICAgICAgICB3aGlsZSAocj4wKSB7XG4gICAgICAgICAgICBjb25zdCBsID0gKG8rciA+IFBBR0VfU0laRSkgPyAoUEFHRV9TSVpFIC1vKSA6IHI7XG4gICAgICAgICAgICBjb25zdCBzcmNWaWV3ID0gYnVmZi5zbGljZSggbGVuIC1yLCBsZW4gLXIrbCk7XG4gICAgICAgICAgICBjb25zdCBkc3RWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXJzW3BdLmJ1ZmZlciwgdGhpcy5idWZmZXJzW3BdLmJ5dGVPZmZzZXQgKyBvLCBsKTtcbiAgICAgICAgICAgIGRzdFZpZXcuc2V0KHNyY1ZpZXcpO1xuICAgICAgICAgICAgciA9IHItbDtcbiAgICAgICAgICAgIHAgKys7XG4gICAgICAgICAgICBvID0gMDtcbiAgICAgICAgfVxuXG4gICAgfVxufVxuXG5mdW5jdGlvbiBidWlsZEJhdGNoQ29udmVydCh0bSwgZm5OYW1lLCBzSW4sIHNPdXQpIHtcbiAgICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gYmF0Y2hDb252ZXJ0KGJ1ZmZJbikge1xuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmSW4uYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmICggblBvaW50cyAqIHNJbiAhPT0gYnVmZkluLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZDaHVuayA9IGJ1ZmZJbi5zbGljZShpKnBvaW50c1BlckNodW5rKnNJbiwgaSpwb2ludHNQZXJDaHVuaypzSW4gKyBuKnNJbik7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW1xuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOmJ1ZmZDaHVua30sXG4gICAgICAgICAgICAgICAge2NtZDogXCJBTExPQ1wiLCB2YXI6IDEsIGxlbjpzT3V0ICogbn0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IG59LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfVxuICAgICAgICAgICAgICAgIF19LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5jbGFzcyBXYXNtRmllbGQxIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIG44LCBwKSB7XG4gICAgICAgIHRoaXMudG0gPSB0bTtcbiAgICAgICAgdGhpcy5wcmVmaXggPSBwcmVmaXg7XG5cbiAgICAgICAgdGhpcy5wID0gcDtcbiAgICAgICAgdGhpcy5uOCA9IG44O1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYxXCI7XG4gICAgICAgIHRoaXMubSA9IDE7XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodChwLCBvbmUpO1xuICAgICAgICB0aGlzLmJpdExlbmd0aCA9IGJpdExlbmd0aCQ2KHApO1xuICAgICAgICB0aGlzLm1hc2sgPSBzdWIoc2hpZnRMZWZ0KG9uZSwgdGhpcy5iaXRMZW5ndGgpLCBvbmUpO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKG44KTtcbiAgICAgICAgdGhpcy5wT3AyID0gdG0uYWxsb2MobjgpO1xuICAgICAgICB0aGlzLnBPcDMgPSB0bS5hbGxvYyhuOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIHRoaXMubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbcHJlZml4ICsgXCJfb25lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5uOCk7XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLm42NCA9IE1hdGguZmxvb3IobjgvOCk7XG4gICAgICAgIHRoaXMubjMyID0gTWF0aC5mbG9vcihuOC80KTtcblxuICAgICAgICBpZih0aGlzLm42NCo4ICE9IHRoaXMubjgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIm44IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA4XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5oYWxmID0gc2hpZnRSaWdodCh0aGlzLnAsIG9uZSk7XG4gICAgICAgIHRoaXMubnFyID0gdGhpcy50d287XG4gICAgICAgIGxldCByID0gdGhpcy5leHAodGhpcy5ucXIsIHRoaXMuaGFsZik7XG4gICAgICAgIHdoaWxlICghdGhpcy5lcShyLCB0aGlzLm5lZ29uZSkpIHtcbiAgICAgICAgICAgIHRoaXMubnFyID0gdGhpcy5hZGQodGhpcy5ucXIsIHRoaXMub25lKTtcbiAgICAgICAgICAgIHIgPSB0aGlzLmV4cCh0aGlzLm5xciwgdGhpcy5oYWxmKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2hpZnQgPSB0aGlzLm11bCh0aGlzLm5xciwgdGhpcy5ucXIpO1xuICAgICAgICB0aGlzLnNoaWZ0SW52ID0gdGhpcy5pbnYodGhpcy5zaGlmdCk7XG5cbiAgICAgICAgdGhpcy5zID0gMDtcbiAgICAgICAgbGV0IHQgPSBzdWIodGhpcy5wLCBvbmUpO1xuXG4gICAgICAgIHdoaWxlICggIWlzT2RkJDUodCkgKSB7XG4gICAgICAgICAgICB0aGlzLnMgPSB0aGlzLnMgKyAxO1xuICAgICAgICAgICAgdCA9IHNoaWZ0UmlnaHQodCwgb25lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudyA9IFtdO1xuICAgICAgICB0aGlzLndbdGhpcy5zXSA9IHRoaXMuZXhwKHRoaXMubnFyLCB0KTtcblxuICAgICAgICBmb3IgKGxldCBpPSB0aGlzLnMtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICB0aGlzLndbaV0gPSB0aGlzLnNxdWFyZSh0aGlzLndbaSsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuZXEodGhpcy53WzBdLCB0aGlzLm9uZSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVycm9yIGNhbGN1bGF0aW5nIHJvb3RzIG9mIHVuaXR5XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5iYXRjaFRvTW9udGdvbWVyeSA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvTW9udGdvbWVyeVwiLCB0aGlzLm44LCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy5iYXRjaEZyb21Nb250Z29tZXJ5ID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoRnJvbU1vbnRnb21lcnlcIiwgdGhpcy5uOCwgdGhpcy5uOCk7XG4gICAgfVxuXG5cbiAgICBvcDIob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIG9wMkJvb2wob3BOYW1lLCBhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMik7XG4gICAgfVxuXG4gICAgb3AxKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDFCb29sKG9wTmFtZSwgYSkge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgcmV0dXJuICEhdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgb3BOYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMyk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgc3ViKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfc3ViXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG5lZyhhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9uZWdcIiwgYSk7XG4gICAgfVxuXG4gICAgaW52KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2ludmVyc2VcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIGUoYSwgYikge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICBsZXQgcmEgPSBlKGEsIGIpO1xuICAgICAgICBpZiAoaXNOZWdhdGl2ZSQ0KHJhKSkge1xuICAgICAgICAgICAgcmEgPSBuZWcocmEpO1xuICAgICAgICAgICAgaWYgKGd0KHJhLCB0aGlzLnApKSB7XG4gICAgICAgICAgICAgICAgcmEgPSBtb2QocmEsIHRoaXMucCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByYSA9IHN1Yih0aGlzLnAsIHJhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChndChyYSwgdGhpcy5wKSkge1xuICAgICAgICAgICAgICAgIHJhID0gbW9kKHJhLCB0aGlzLnApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZUludDJCdWZmKHJhLCB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KGJ1ZmYpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGNvbnN0IGFuID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgY29uc3QgcyA9IGZyb21ScHJMRShhbiwgMCk7XG4gICAgICAgIHJldHVybiB0b1N0cmluZyhzLCByYWRpeCk7XG4gICAgfVxuXG4gICAgZnJvbVJuZyhybmcpIHtcbiAgICAgICAgbGV0IHY7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLm44KTtcbiAgICAgICAgZG8ge1xuICAgICAgICAgICAgdiA9IHplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5uNjQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHYgPSBhZGQodiwgIHNoaWZ0TGVmdChybmcubmV4dFU2NCgpLCA2NCppKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2ID0gYmFuZCh2LCB0aGlzLm1hc2spO1xuICAgICAgICB9IHdoaWxlIChnZXEodiwgdGhpcy5wKSk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgdiwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBhbiA9IHRoaXMuZnJvbU1vbnRnb21lcnkoYSk7XG4gICAgICAgIHJldHVybiBmcm9tUnByTEUoYW4sIDApO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5uOCk7XG4gICAgICAgIHRvUnByTEUoYnVmZiwgMCwgYSwgdGhpcy5uOCk7XG4gICAgICAgIHJldHVybiB0aGlzLnRvTW9udGdvbWVyeShidWZmKTtcbiAgICB9XG5cbiAgICB0b1JwckxFKGJ1ZmYsIG9mZnNldCwgYSkge1xuICAgICAgICBidWZmLnNldCh0aGlzLmZyb21Nb250Z29tZXJ5KGEpLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIHRvUnByQkUoYnVmZiwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gdGhpcy5mcm9tTW9udGdvbWVyeShhKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMubjgvMjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdXggPSBidWZmMltpXTtcbiAgICAgICAgICAgIGJ1ZmYyW2ldID0gYnVmZjJbdGhpcy5uOC0xLWldO1xuICAgICAgICAgICAgYnVmZjJbdGhpcy5uOC0xLWldID0gYXV4O1xuICAgICAgICB9XG4gICAgICAgIGJ1ZmYuc2V0KGJ1ZmYyLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJMRShidWZmLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IHJlcyA9IGJ1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyB0aGlzLm44KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Nb250Z29tZXJ5KHJlcyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYmF0Y2hJbnZlcnNlKGJ1ZmZJbikge1xuICAgICAgICBsZXQgcmV0dXJuQXJyYXkgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc0luID0gdGhpcy5uODtcbiAgICAgICAgY29uc3Qgc091dCA9IHRoaXMubjg7XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYnVmZkluKSkge1xuICAgICAgICAgICAgYnVmZkluID0gYXJyYXkyYnVmZmVyKGJ1ZmZJbiwgc0luICk7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmSW4gPSBidWZmSW4uc2xpY2UoMCwgYnVmZkluLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZkluLmJ5dGVMZW5ndGggLyBzSW4pO1xuICAgICAgICBpZiAoIG5Qb2ludHMgKiBzSW4gIT09IGJ1ZmZJbi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gTWF0aC5mbG9vcihuUG9pbnRzL3RoaXMudG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLnRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRoaXMudG0uY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKnBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG49PTApIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmQ2h1bmsgPSBidWZmSW4uc2xpY2UoaSpwb2ludHNQZXJDaHVuaypzSW4sIGkqcG9pbnRzUGVyQ2h1bmsqc0luICsgbipzSW4pO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjpidWZmQ2h1bmt9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAxLCBsZW46c091dCAqIG59LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IHRoaXMucHJlZml4ICsgXCJfYmF0Y2hJbnZlcnNlXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogc0lufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBzT3V0fSxcbiAgICAgICAgICAgICAgICBdfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMSwgbGVuOnNPdXQgKiBufSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdGhpcy50bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmZJbiBpbnN0YW5jZW9mIEJpZ0J1ZmZlcikge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShmdWxsQnVmZk91dCwgc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgICAgIH1cblxuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQyIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYyXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDI7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMjtcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjI7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCoyO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIGFkZChhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX2FkZFwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyQm9vbChcIl9lcVwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBpc1plcm8oYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzWmVyb1wiLCBhKTtcbiAgICB9XG5cbiAgICBzdWIoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICB9XG5cbiAgICBpbnYoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfaW52ZXJzZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc05lZ2F0aXZlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc05lZ2F0aXZlXCIsIGEpO1xuICAgIH1cblxuICAgIHRvTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b01vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgZnJvbU1vbnRnb21lcnkoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZnJvbU1vbnRnb21lcnlcIiwgYSk7XG4gICAgfVxuXG4gICAgbXVsKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfbXVsXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIG11bDEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWwxXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIGRpdihhLCBiKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfaW52ZXJzZVwiXSh0aGlzLnBPcDIsIHRoaXMucE9wMik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX211bFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMubjgpO1xuICAgIH1cblxuICAgIHNxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgaXNTcXVhcmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzU3F1YXJlXCIsIGEpO1xuICAgIH1cblxuICAgIHNxcnQoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfc3FydFwiLCBhKTtcbiAgICB9XG5cbiAgICBleHAoYSwgYikge1xuICAgICAgICBpZiAoIShiIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICAgICAgICAgIGIgPSB0b0xFQnVmZihlKGIpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX2V4cFwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgYi5ieXRlTGVuZ3RoLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgZShhLCBiKSB7XG4gICAgICAgIGlmIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIGE7XG4gICAgICAgIGlmICgoQXJyYXkuaXNBcnJheShhKSkgJiYgKGEubGVuZ3RoID09IDIpKSB7XG4gICAgICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi5lKGFbMF0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZShhWzFdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KjIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgRjJcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b1N0cmluZyhhLCByYWRpeCkge1xuICAgICAgICBjb25zdCBzMSA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczIgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIHJldHVybiBgWyR7czF9LCAke3MyfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICByZXMuc2V0KGMyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHJhbmRvbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZnJvbVJuZyhnZXRUaHJlYWRSbmcoKSk7XG4gICAgfVxuXG4gICAgdG9PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBjMSA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKDAsIHRoaXMuRi5uOCkpO1xuICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi50b09iamVjdChhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpKTtcbiAgICAgICAgcmV0dXJuIFtjMSwgYzJdO1xuICAgIH1cblxuICAgIGZyb21PYmplY3QoYSkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBjb25zdCBiMSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMF0pO1xuICAgICAgICBjb25zdCBiMiA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBidWZmLnNldChiMSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIyLCB0aGlzLkYubjgpO1xuICAgICAgICByZXR1cm4gYnVmZjtcbiAgICB9XG5cbiAgICBjMShhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgYzIoYSkge1xuICAgICAgICByZXR1cm4gYS5zbGljZSh0aGlzLkYubjgpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtRmllbGQzIHtcblxuICAgIGNvbnN0cnVjdG9yKHRtLCBwcmVmaXgsIEYpIHtcbiAgICAgICAgdGhpcy50bSA9IHRtO1xuICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeDtcblxuICAgICAgICB0aGlzLkYgPSBGO1xuICAgICAgICB0aGlzLnR5cGUgPSBcIkYzXCI7XG4gICAgICAgIHRoaXMubSA9IEYubSAqIDM7XG4gICAgICAgIHRoaXMubjggPSB0aGlzLkYubjgqMztcbiAgICAgICAgdGhpcy5uMzIgPSB0aGlzLkYubjMyKjM7XG4gICAgICAgIHRoaXMubjY0ID0gdGhpcy5GLm42NCozO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3ByZWZpeCArIFwiX29uZVwiXSh0aGlzLnBPcDEpO1xuICAgICAgICB0aGlzLm9uZSA9IHRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLm44KTtcblxuICAgICAgICB0aGlzLm5lZ29uZSA9IHRoaXMubmVnKHRoaXMub25lKTtcbiAgICAgICAgdGhpcy50d28gPSB0aGlzLmFkZCh0aGlzLm9uZSwgdGhpcy5vbmUpO1xuXG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBvcDJCb29sKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgb3AxQm9vbChvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHJldHVybiAhIXRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuXG4gICAgZXEoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMkJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgaXNaZXJvKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9cIiwgYSk7XG4gICAgfVxuXG4gICAgYWRkKGEsYikge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YlwiLCBhLCBiKTtcbiAgICB9XG5cbiAgICBuZWcoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfbmVnXCIsIGEpO1xuICAgIH1cblxuICAgIGludihhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9pbnZlcnNlXCIsIGEpO1xuICAgIH1cblxuICAgIGlzTmVnYXRpdmUoYSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcDFCb29sKFwiX2lzTmVnYXRpdmVcIiwgYSk7XG4gICAgfVxuXG4gICAgdG9Nb250Z29tZXJ5KGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3RvTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBmcm9tTW9udGdvbWVyeShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9mcm9tTW9udGdvbWVyeVwiLCBhKTtcbiAgICB9XG5cbiAgICBtdWwoYSxiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9tdWxcIiwgYSwgYik7XG4gICAgfVxuXG4gICAgZGl2KGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9pbnZlcnNlXCJdKHRoaXMucE9wMiwgdGhpcy5wT3AyKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfbXVsXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5uOCk7XG4gICAgfVxuXG4gICAgc3F1YXJlKGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX3NxdWFyZVwiLCBhKTtcbiAgICB9XG5cbiAgICBpc1NxdWFyZShhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNTcXVhcmVcIiwgYSk7XG4gICAgfVxuXG4gICAgc3FydChhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wMShcIl9zcXJ0XCIsIGEpO1xuICAgIH1cblxuICAgIGV4cChhLCBiKSB7XG4gICAgICAgIGlmICghKGIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgYiA9IHRvTEVCdWZmKGUoYikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AyLCBiKTtcbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfZXhwXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBiLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLm44KTtcbiAgICB9XG5cbiAgICBlKGEsIGIpIHtcbiAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSByZXR1cm4gYTtcbiAgICAgICAgaWYgKChBcnJheS5pc0FycmF5KGEpKSAmJiAoYS5sZW5ndGggPT0gMykpIHtcbiAgICAgICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmUoYVswXSwgYik7XG4gICAgICAgICAgICBjb25zdCBjMiA9IHRoaXMuRi5lKGFbMV0sIGIpO1xuICAgICAgICAgICAgY29uc3QgYzMgPSB0aGlzLkYuZShhWzJdLCBiKTtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzEpO1xuICAgICAgICAgICAgcmVzLnNldChjMiwgdGhpcy5GLm44KTtcbiAgICAgICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIEYzXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9TdHJpbmcoYSwgcmFkaXgpIHtcbiAgICAgICAgY29uc3QgczEgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgIGNvbnN0IHMyID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgY29uc3QgczMgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgcmV0dXJuIGBbJHtzMX0sICR7czJ9LCAke3MzfV1gO1xuICAgIH1cblxuICAgIGZyb21Sbmcocm5nKSB7XG4gICAgICAgIGNvbnN0IGMxID0gdGhpcy5GLmZyb21Sbmcocm5nKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYuZnJvbVJuZyhybmcpO1xuICAgICAgICBjb25zdCBjMyA9IHRoaXMuRi5mcm9tUm5nKHJuZyk7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCozKTtcbiAgICAgICAgcmVzLnNldChjMSk7XG4gICAgICAgIHJlcy5zZXQoYzIsIHRoaXMuRi5uOCk7XG4gICAgICAgIHJlcy5zZXQoYzMsIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICByYW5kb20oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZyb21SbmcoZ2V0VGhyZWFkUm5nKCkpO1xuICAgIH1cblxuICAgIHRvT2JqZWN0KGEpIHtcbiAgICAgICAgY29uc3QgYzEgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSgwLCB0aGlzLkYubjgpKTtcbiAgICAgICAgY29uc3QgYzIgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGNvbnN0IGMzID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIHJldHVybiBbYzEsIGMyLCBjM107XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgIGNvbnN0IGIxID0gdGhpcy5GLmZyb21PYmplY3QoYVswXSk7XG4gICAgICAgIGNvbnN0IGIyID0gdGhpcy5GLmZyb21PYmplY3QoYVsxXSk7XG4gICAgICAgIGNvbnN0IGIzID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIGJ1ZmYuc2V0KGIxKTtcbiAgICAgICAgYnVmZi5zZXQoYjIsIHRoaXMuRi5uOCk7XG4gICAgICAgIGJ1ZmYuc2V0KGIzLCB0aGlzLkYubjgqMik7XG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH1cblxuICAgIGMxKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UoMCwgdGhpcy5GLm44KTtcbiAgICB9XG5cbiAgICBjMihhKSB7XG4gICAgICAgIHJldHVybiBhLnNsaWNlKHRoaXMuRi5uOCwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIGMzKGEpIHtcbiAgICAgICAgcmV0dXJuIGEuc2xpY2UodGhpcy5GLm44KjIpO1xuICAgIH1cblxufVxuXG5jbGFzcyBXYXNtQ3VydmUge1xuXG4gICAgY29uc3RydWN0b3IodG0sIHByZWZpeCwgRiwgcEdlbiwgcEdiLCBjb2ZhY3Rvcikge1xuICAgICAgICB0aGlzLnRtID0gdG07XG4gICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgICAgICB0aGlzLkYgPSBGO1xuXG4gICAgICAgIHRoaXMucE9wMSA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMiA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMucE9wMyA9IHRtLmFsbG9jKEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVybyA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1twcmVmaXggKyBcIl96ZXJvQWZmaW5lXCJdKHRoaXMucE9wMSk7XG4gICAgICAgIHRoaXMuemVyb0FmZmluZSA9IHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDEsIEYubjgqMik7XG4gICAgICAgIHRoaXMub25lID0gdGhpcy50bS5nZXRCdWZmKHBHZW4sIEYubjgqMyk7XG4gICAgICAgIHRoaXMuZyA9IHRoaXMub25lO1xuICAgICAgICB0aGlzLm9uZUFmZmluZSA9IHRoaXMudG0uZ2V0QnVmZihwR2VuLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmdBZmZpbmUgPSB0aGlzLm9uZUFmZmluZTtcbiAgICAgICAgdGhpcy5iID0gdGhpcy50bS5nZXRCdWZmKHBHYiwgRi5uOCk7XG5cbiAgICAgICAgaWYgKGNvZmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLmNvZmFjdG9yID0gdG9MRUJ1ZmYoY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uZWdvbmUgPSB0aGlzLm5lZyh0aGlzLm9uZSk7XG4gICAgICAgIHRoaXMudHdvID0gdGhpcy5hZGQodGhpcy5vbmUsIHRoaXMub25lKTtcblxuICAgICAgICB0aGlzLmJhdGNoTEVNdG9DID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoTEVNdG9DXCIsIEYubjgqMiwgRi5uOCk7XG4gICAgICAgIHRoaXMuYmF0Y2hMRU10b1UgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hMRU10b1VcIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoQ3RvTEVNID0gYnVpbGRCYXRjaENvbnZlcnQodG0sIHByZWZpeCArIFwiX2JhdGNoQ3RvTEVNXCIsIEYubjgsIEYubjgqMik7XG4gICAgICAgIHRoaXMuYmF0Y2hVdG9MRU0gPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hVdG9MRU1cIiwgRi5uOCoyLCBGLm44KjIpO1xuICAgICAgICB0aGlzLmJhdGNoVG9KYWNvYmlhbiA9IGJ1aWxkQmF0Y2hDb252ZXJ0KHRtLCBwcmVmaXggKyBcIl9iYXRjaFRvSmFjb2JpYW5cIiwgRi5uOCoyLCBGLm44KjMpO1xuICAgICAgICB0aGlzLmJhdGNoVG9BZmZpbmUgPSBidWlsZEJhdGNoQ29udmVydCh0bSwgcHJlZml4ICsgXCJfYmF0Y2hUb0FmZmluZVwiLCBGLm44KjMsIEYubjgqMik7XG4gICAgfVxuXG4gICAgb3AyKG9wTmFtZSwgYSwgYikge1xuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgYik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDIsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgb3AyYm9vbChvcE5hbWUsIGEsIGIpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIGIpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCB0aGlzLnBPcDMpO1xuICAgIH1cblxuICAgIG9wMShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjMpO1xuICAgIH1cblxuICAgIG9wMUFmZmluZShvcE5hbWUsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIG9wTmFtZV0odGhpcy5wT3AxLCB0aGlzLnBPcDMpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMywgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIG9wMUJvb2wob3BOYW1lLCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICByZXR1cm4gISF0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBvcE5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AzKTtcbiAgICB9XG5cbiAgICBhZGQoYSxiKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkXCIsIGEsIGIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGlmIChiLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcDIoXCJfYWRkTWl4ZWRcIiwgYiwgYSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9hZGRBZmZpbmVcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN1YihhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMihcIl9zdWJNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyKFwiX3N1YkFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmVnKGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX25lZ1wiLCBhKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUFmZmluZShcIl9uZWdBZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkb3VibGUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDEoXCJfZG91YmxlXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxKFwiX2RvdWJsZUFmZmluZVwiLCBhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzWmVybyhhKSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMUJvb2woXCJfaXNaZXJvXCIsIGEpO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AxQm9vbChcIl9pc1plcm9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aW1lc1NjYWxhcihhLCBzKSB7XG4gICAgICAgIGlmICghKHMgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgcyA9IHRvTEVCdWZmKGUocykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJcIjtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLnNldEJ1ZmYodGhpcy5wT3AxLCBhKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMiwgcyk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1tmbk5hbWVdKHRoaXMucE9wMSwgdGhpcy5wT3AyLCBzLmJ5dGVMZW5ndGgsIHRoaXMucE9wMyk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AzLCB0aGlzLkYubjgqMyk7XG4gICAgfVxuXG4gICAgdGltZXNGcihhLCBzKSB7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IHRoaXMucHJlZml4ICsgXCJfdGltZXNGclwiO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgZm5OYW1lID0gdGhpcy5wcmVmaXggKyBcIl90aW1lc0ZyQWZmaW5lXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDIsIHMpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbZm5OYW1lXSh0aGlzLnBPcDEsIHRoaXMucE9wMiwgdGhpcy5wT3AzKTtcbiAgICAgICAgcmV0dXJuIHRoaXMudG0uZ2V0QnVmZih0aGlzLnBPcDMsIHRoaXMuRi5uOCozKTtcbiAgICB9XG5cbiAgICBlcShhLGIpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFcIiwgYSwgYik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgaWYgKGIuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMmJvb2woXCJfZXFNaXhlZFwiLCBiLCBhKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYi5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub3AyYm9vbChcIl9lcUFmZmluZVwiLCBhLCBiKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9BZmZpbmUoYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcDFBZmZpbmUoXCJfdG9BZmZpbmVcIiwgYSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvSmFjb2JpYW4oYSkge1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICByZXR1cm4gYTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wMShcIl90b0phY29iaWFuXCIsIGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBwb2ludCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX3RvQWZmaW5lXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgfSBlbHNlIGlmIChhLmJ5dGVMZW5ndGggIT0gdGhpcy5GLm44KjIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9MRU10b1VcIl0odGhpcy5wT3AxLCB0aGlzLnBPcDEpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgIGFyci5zZXQocmVzLCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGZyb21ScHJVbmNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYnVmZik7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLnByZWZpeCArIFwiX1V0b0xFTVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIHJldHVybiB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgfVxuXG4gICAgdG9ScHJDb21wcmVzc2VkKGFyciwgb2Zmc2V0LCBhKSB7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGEpO1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgIH0gZWxzZSBpZiAoYS5ieXRlTGVuZ3RoICE9IHRoaXMuRi5uOCoyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbnZhbGlkIHBvaW50IHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50bS5pbnN0YW5jZS5leHBvcnRzW3RoaXMucHJlZml4ICsgXCJfTEVNdG9DXCJdKHRoaXMucE9wMSwgdGhpcy5wT3AxKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMSwgdGhpcy5GLm44KTtcbiAgICAgICAgYXJyLnNldChyZXMsIG9mZnNldCk7XG4gICAgfVxuXG4gICAgZnJvbVJwckNvbXByZXNzZWQoYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGFyci5zbGljZShvZmZzZXQsIG9mZnNldCArIHRoaXMuRi5uOCk7XG4gICAgICAgIHRoaXMudG0uc2V0QnVmZih0aGlzLnBPcDEsIGJ1ZmYpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl9DdG9MRU1cIl0odGhpcy5wT3AxLCB0aGlzLnBPcDIpO1xuICAgICAgICByZXR1cm4gdGhpcy50bS5nZXRCdWZmKHRoaXMucE9wMiwgdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvVW5jb21wcmVzc2VkKGEpIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHRoaXMuRi5uOCoyKTtcbiAgICAgICAgdGhpcy50b1JwclVuY29tcHJlc3NlZChidWZmLCAwLCBhKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfVxuXG4gICAgdG9ScHJMRU0oYXJyLCBvZmZzZXQsIGEpIHtcbiAgICAgICAgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgYXJyLnNldChhLCBvZmZzZXQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMykge1xuICAgICAgICAgICAgdGhpcy50bS5zZXRCdWZmKHRoaXMucE9wMSwgYSk7XG4gICAgICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5wcmVmaXggKyBcIl90b0FmZmluZVwiXSh0aGlzLnBPcDEsIHRoaXMucE9wMSk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYodGhpcy5wT3AxLCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBhcnIuc2V0KHJlcywgb2Zmc2V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZyb21ScHJMRU0oYXJyLCBvZmZzZXQpIHtcbiAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG4gICAgICAgIHJldHVybiBhcnIuc2xpY2Uob2Zmc2V0LCBvZmZzZXQrdGhpcy5GLm44KjIpO1xuICAgIH1cblxuICAgIHRvU3RyaW5nKGEsIHJhZGl4KSB7XG4gICAgICAgIGlmIChhLmJ5dGVMZW5ndGggPT0gdGhpcy5GLm44KjMpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSgwLCB0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICBjb25zdCB5ID0gdGhpcy5GLnRvU3RyaW5nKGEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHogPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgqMiksIHJhZGl4KTtcbiAgICAgICAgICAgIHJldHVybiBgWyAke3h9LCAke3l9LCAke3p9IF1gO1xuICAgICAgICB9IGVsc2UgaWYgKGEuYnl0ZUxlbmd0aCA9PSB0aGlzLkYubjgqMikge1xuICAgICAgICAgICAgY29uc3QgeCA9IHRoaXMuRi50b1N0cmluZyhhLnNsaWNlKDAsIHRoaXMuRi5uOCksIHJhZGl4KTtcbiAgICAgICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9TdHJpbmcoYS5zbGljZSh0aGlzLkYubjgpLCByYWRpeCk7XG4gICAgICAgICAgICByZXR1cm4gYFsgJHt4fSwgJHt5fSBdYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImludmFsaWQgcG9pbnQgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzVmFsaWQoYSkge1xuICAgICAgICBpZiAodGhpcy5pc1plcm8oYSkpIHJldHVybiB0cnVlO1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBjb25zdCBhYSA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIGNvbnN0IHggPSBhYS5zbGljZSgwLCB0aGlzLkYubjgpO1xuICAgICAgICBjb25zdCB5ID0gYWEuc2xpY2UodGhpcy5GLm44LCB0aGlzLkYubjgqMik7XG4gICAgICAgIGNvbnN0IHgzYiA9IEYuYWRkKEYubXVsKEYuc3F1YXJlKHgpLHgpLCB0aGlzLmIpO1xuICAgICAgICBjb25zdCB5MiA9IEYuc3F1YXJlKHkpO1xuICAgICAgICByZXR1cm4gRi5lcSh4M2IsIHkyKTtcbiAgICB9XG5cbiAgICBmcm9tUm5nKHJuZykge1xuICAgICAgICBjb25zdCBGID0gdGhpcy5GO1xuICAgICAgICBsZXQgUCA9IFtdO1xuICAgICAgICBsZXQgZ3JlYXRlc3Q7XG4gICAgICAgIGxldCB4M2I7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIFBbMF0gPSBGLmZyb21Sbmcocm5nKTtcbiAgICAgICAgICAgIGdyZWF0ZXN0ID0gcm5nLm5leHRCb29sKCk7XG4gICAgICAgICAgICB4M2IgPSBGLmFkZChGLm11bChGLnNxdWFyZShQWzBdKSwgUFswXSksIHRoaXMuYik7XG4gICAgICAgIH0gd2hpbGUgKCFGLmlzU3F1YXJlKHgzYikpO1xuXG4gICAgICAgIFBbMV0gPSBGLnNxcnQoeDNiKTtcblxuICAgICAgICBjb25zdCBzID0gRi5pc05lZ2F0aXZlKFBbMV0pO1xuICAgICAgICBpZiAoZ3JlYXRlc3QgXiBzKSBQWzFdID0gRi5uZWcoUFsxXSk7XG5cbiAgICAgICAgbGV0IFBidWZmID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5GLm44KjIpO1xuICAgICAgICBQYnVmZi5zZXQoUFswXSk7XG4gICAgICAgIFBidWZmLnNldChQWzFdLCB0aGlzLkYubjgpO1xuXG4gICAgICAgIGlmICh0aGlzLmNvZmFjdG9yKSB7XG4gICAgICAgICAgICBQYnVmZiA9IHRoaXMudGltZXNTY2FsYXIoUGJ1ZmYsIHRoaXMuY29mYWN0b3IpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFBidWZmO1xuICAgIH1cblxuXG5cbiAgICB0b09iamVjdChhKSB7XG4gICAgICAgIGlmICh0aGlzLmlzWmVybyhhKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgICAgIHRoaXMuRi50b09iamVjdCh0aGlzLkYub25lKSxcbiAgICAgICAgICAgICAgICB0aGlzLkYudG9PYmplY3QodGhpcy5GLnplcm8pLFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB4ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UoMCwgdGhpcy5GLm44KSk7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLkYudG9PYmplY3QoYS5zbGljZSh0aGlzLkYubjgsIHRoaXMuRi5uOCoyKSk7XG4gICAgICAgIGxldCB6O1xuICAgICAgICBpZiAoYS5ieXRlTGVuZ3RoID09IHRoaXMuRi5uOCozKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KGEuc2xpY2UodGhpcy5GLm44KjIsIHRoaXMuRi5uOCozKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLnRvT2JqZWN0KHRoaXMuRi5vbmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbeCwgeSwgel07XG4gICAgfVxuXG4gICAgZnJvbU9iamVjdChhKSB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLkYuZnJvbU9iamVjdChhWzBdKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMuRi5mcm9tT2JqZWN0KGFbMV0pO1xuICAgICAgICBsZXQgejtcbiAgICAgICAgaWYgKGEubGVuZ3RoPT0zKSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLmZyb21PYmplY3QoYVsyXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB6ID0gdGhpcy5GLm9uZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5GLmlzWmVybyh6LCB0aGlzLkYub25lKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuemVyb0FmZmluZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLkYuZXEoeiwgdGhpcy5GLm9uZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMik7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSh0aGlzLkYubjgqMyk7XG4gICAgICAgICAgICBidWZmLnNldCh4KTtcbiAgICAgICAgICAgIGJ1ZmYuc2V0KHksIHRoaXMuRi5uOCk7XG4gICAgICAgICAgICBidWZmLnNldCh6LCB0aGlzLkYubjgqMik7XG4gICAgICAgICAgICByZXR1cm4gYnVmZjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGUoYSkge1xuICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHJldHVybiBhO1xuICAgICAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0KGEpO1xuICAgIH1cblxuICAgIHgoYSkge1xuICAgICAgICBjb25zdCB0bXAgPSB0aGlzLnRvQWZmaW5lKGEpO1xuICAgICAgICByZXR1cm4gdG1wLnNsaWNlKDAsIHRoaXMuRi5uOCk7XG4gICAgfVxuXG4gICAgeShhKSB7XG4gICAgICAgIGNvbnN0IHRtcCA9IHRoaXMudG9BZmZpbmUoYSk7XG4gICAgICAgIHJldHVybiB0bXAuc2xpY2UodGhpcy5GLm44KTtcbiAgICB9XG5cbn1cblxuLyogZ2xvYmFsIFdlYkFzc2VtYmx5ICovXG5cbmZ1bmN0aW9uIHRocmVhZChzZWxmKSB7XG4gICAgY29uc3QgTUFYTUVNID0gMzI3Njc7XG4gICAgbGV0IGluc3RhbmNlO1xuICAgIGxldCBtZW1vcnk7XG5cbiAgICBpZiAoc2VsZikge1xuICAgICAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhO1xuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXCJJTklUXCIpIHtcbiAgICAgICAgICAgICAgICBpbml0KGRhdGFbMF0pLnRoZW4oZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhWzBdLmNtZCA9PSBcIlRFUk1JTkFURVwiKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xuICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UocmVzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgY29kZSA9IG5ldyBVaW50OEFycmF5KGRhdGEuY29kZSk7XG4gICAgICAgIGNvbnN0IHdhc21Nb2R1bGUgPSBhd2FpdCBXZWJBc3NlbWJseS5jb21waWxlKGNvZGUpO1xuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XG5cbiAgICAgICAgaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgICAgICBlbnY6IHtcbiAgICAgICAgICAgICAgICBcIm1lbW9yeVwiOiBtZW1vcnlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG5cblxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1MzIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHdoaWxlICh1MzJbMF0gJiAzKSB1MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XG4gICAgICAgIHUzMlswXSArPSBsZW5ndGg7XG4gICAgICAgIGlmICh1MzJbMF0gKyBsZW5ndGggPiBtZW1vcnkuYnVmZmVyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XG4gICAgICAgICAgICBsZXQgcmVxdWlyZWRQYWdlcyA9IE1hdGguZmxvb3IoKHUzMlswXSArIGxlbmd0aCkgLyAweDEwMDAwKSsxO1xuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUGFnZXM+TUFYTUVNKSByZXF1aXJlZFBhZ2VzPU1BWE1FTTtcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFsbG9jQnVmZmVyKGJ1ZmZlcikge1xuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICBzZXRCdWZmZXIocCwgYnVmZmVyKTtcbiAgICAgICAgcmV0dXJuIHA7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0QnVmZmVyKHBvaW50ZXIsIGxlbmd0aCkge1xuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkodTguYnVmZmVyLCB1OC5ieXRlT2Zmc2V0ICsgcG9pbnRlciwgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRCdWZmZXIocG9pbnRlciwgYnVmZmVyKSB7XG4gICAgICAgIGNvbnN0IHU4ID0gbmV3IFVpbnQ4QXJyYXkobWVtb3J5LmJ1ZmZlcik7XG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcbiAgICAgICAgaWYgKHRhc2tbMF0uY21kID09IFwiSU5JVFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdHggPSB7XG4gICAgICAgICAgICB2YXJzOiBbXSxcbiAgICAgICAgICAgIG91dDogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcbiAgICAgICAgY29uc3Qgb2xkQWxsb2MgPSB1MzJhWzBdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xuICAgICAgICAgICAgY2FzZSBcIkFMTE9DU0VUXCI6XG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJBTExPQ1wiOlxuICAgICAgICAgICAgICAgIGN0eC52YXJzW3Rhc2tbaV0udmFyXSA9IGFsbG9jKHRhc2tbaV0ubGVuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJTRVRcIjpcbiAgICAgICAgICAgICAgICBzZXRCdWZmZXIoY3R4LnZhcnNbdGFza1tpXS52YXJdLCB0YXNrW2ldLmJ1ZmYpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIkNBTExcIjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajx0YXNrW2ldLnBhcmFtcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwID0gdGFza1tpXS5wYXJhbXNbal07XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKGN0eC52YXJzW3AudmFyXSArIChwLm9mZnNldCB8fCAwKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHAudmFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5leHBvcnRzW3Rhc2tbaV0uZm5OYW1lXSguLi5wYXJhbXMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBcIkdFVFwiOlxuICAgICAgICAgICAgICAgIGN0eC5vdXRbdGFza1tpXS5vdXRdID0gZ2V0QnVmZmVyKGN0eC52YXJzW3Rhc2tbaV0udmFyXSwgdGFza1tpXS5sZW4pLnNsaWNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgY21kXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUzMmIgPSBuZXcgVWludDMyQXJyYXkobWVtb3J5LmJ1ZmZlciwgMCwgMSk7XG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcbiAgICAgICAgcmV0dXJuIGN0eC5vdXQ7XG4gICAgfVxuXG5cbiAgICByZXR1cm4gcnVuVGFzaztcbn1cblxuLypcbiAgICBDb3B5cmlnaHQgMjAxOSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHdhc21zbmFyayAoV2ViIEFzc2VtYmx5IHprU25hcmsgUHJvdmVyKS5cblxuICAgIHdhc21zbmFyayBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHdhc21zbmFyayBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtc25hcmsuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBjb25zdCBNRU1fU0laRSA9IDEwMDA7ICAvLyBNZW1vcnkgc2l6ZSBpbiA2NEsgUGFrZXMgKDUxMk1iKVxuY29uc3QgTUVNX1NJWkUgPSAyNTsgIC8vIE1lbW9yeSBzaXplIGluIDY0SyBQYWtlcyAoMTYwMEtiKVxuXG5jbGFzcyBEZWZlcnJlZCB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMucHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT4ge1xuICAgICAgICAgICAgdGhpcy5yZWplY3QgPSByZWplY3Q7XG4gICAgICAgICAgICB0aGlzLnJlc29sdmUgPSByZXNvbHZlO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG5sZXQgd29ya2VyU291cmNlO1xuXG5jb25zdCB0aHJlYWRTdHIgPSBgKCR7XCJmdW5jdGlvbiB0aHJlYWQoc2VsZikge1xcbiAgICBjb25zdCBNQVhNRU0gPSAzMjc2NztcXG4gICAgbGV0IGluc3RhbmNlO1xcbiAgICBsZXQgbWVtb3J5O1xcblxcbiAgICBpZiAoc2VsZikge1xcbiAgICAgICAgc2VsZi5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7XFxuICAgICAgICAgICAgbGV0IGRhdGE7XFxuICAgICAgICAgICAgaWYgKGUuZGF0YSkge1xcbiAgICAgICAgICAgICAgICBkYXRhID0gZS5kYXRhO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICBpZiAoZGF0YVswXS5jbWQgPT0gXFxcIklOSVRcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGluaXQoZGF0YVswXSkudGhlbihmdW5jdGlvbigpIHtcXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YS5yZXN1bHQpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGFbMF0uY21kID09IFxcXCJURVJNSU5BVEVcXFwiKSB7XFxuICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBydW5UYXNrKGRhdGEpO1xcbiAgICAgICAgICAgICAgICBzZWxmLnBvc3RNZXNzYWdlKHJlcyk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgfVxcblxcbiAgICBhc3luYyBmdW5jdGlvbiBpbml0KGRhdGEpIHtcXG4gICAgICAgIGNvbnN0IGNvZGUgPSBuZXcgVWludDhBcnJheShkYXRhLmNvZGUpO1xcbiAgICAgICAgY29uc3Qgd2FzbU1vZHVsZSA9IGF3YWl0IFdlYkFzc2VtYmx5LmNvbXBpbGUoY29kZSk7XFxuICAgICAgICBtZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOmRhdGEuaW5pdCwgbWF4aW11bTogTUFYTUVNfSk7XFxuXFxuICAgICAgICBpbnN0YW5jZSA9IGF3YWl0IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc21Nb2R1bGUsIHtcXG4gICAgICAgICAgICBlbnY6IHtcXG4gICAgICAgICAgICAgICAgXFxcIm1lbW9yeVxcXCI6IG1lbW9yeVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuXFxuXFxuICAgIGZ1bmN0aW9uIGFsbG9jKGxlbmd0aCkge1xcbiAgICAgICAgY29uc3QgdTMyID0gbmV3IFVpbnQzMkFycmF5KG1lbW9yeS5idWZmZXIsIDAsIDEpO1xcbiAgICAgICAgd2hpbGUgKHUzMlswXSAmIDMpIHUzMlswXSsrOyAgLy8gUmV0dXJuIGFsd2F5cyBhbGlnbmVkIHBvaW50ZXJzXFxuICAgICAgICBjb25zdCByZXMgPSB1MzJbMF07XFxuICAgICAgICB1MzJbMF0gKz0gbGVuZ3RoO1xcbiAgICAgICAgaWYgKHUzMlswXSArIGxlbmd0aCA+IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCkge1xcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlcyA9IG1lbW9yeS5idWZmZXIuYnl0ZUxlbmd0aCAvIDB4MTAwMDA7XFxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkUGFnZXMgPSBNYXRoLmZsb29yKCh1MzJbMF0gKyBsZW5ndGgpIC8gMHgxMDAwMCkrMTtcXG4gICAgICAgICAgICBpZiAocmVxdWlyZWRQYWdlcz5NQVhNRU0pIHJlcXVpcmVkUGFnZXM9TUFYTUVNO1xcbiAgICAgICAgICAgIG1lbW9yeS5ncm93KHJlcXVpcmVkUGFnZXMtY3VycmVudFBhZ2VzKTtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiByZXM7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gYWxsb2NCdWZmZXIoYnVmZmVyKSB7XFxuICAgICAgICBjb25zdCBwID0gYWxsb2MoYnVmZmVyLmJ5dGVMZW5ndGgpO1xcbiAgICAgICAgc2V0QnVmZmVyKHAsIGJ1ZmZlcik7XFxuICAgICAgICByZXR1cm4gcDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRCdWZmZXIocG9pbnRlciwgbGVuZ3RoKSB7XFxuICAgICAgICBjb25zdCB1OCA9IG5ldyBVaW50OEFycmF5KG1lbW9yeS5idWZmZXIpO1xcbiAgICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHU4LmJ1ZmZlciwgdTguYnl0ZU9mZnNldCArIHBvaW50ZXIsIGxlbmd0aCk7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gc2V0QnVmZmVyKHBvaW50ZXIsIGJ1ZmZlcikge1xcbiAgICAgICAgY29uc3QgdTggPSBuZXcgVWludDhBcnJheShtZW1vcnkuYnVmZmVyKTtcXG4gICAgICAgIHU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBydW5UYXNrKHRhc2spIHtcXG4gICAgICAgIGlmICh0YXNrWzBdLmNtZCA9PSBcXFwiSU5JVFxcXCIpIHtcXG4gICAgICAgICAgICByZXR1cm4gaW5pdCh0YXNrWzBdKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IGN0eCA9IHtcXG4gICAgICAgICAgICB2YXJzOiBbXSxcXG4gICAgICAgICAgICBvdXQ6IFtdXFxuICAgICAgICB9O1xcbiAgICAgICAgY29uc3QgdTMyYSA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIGNvbnN0IG9sZEFsbG9jID0gdTMyYVswXTtcXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0YXNrLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgc3dpdGNoICh0YXNrW2ldLmNtZCkge1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkFMTE9DU0VUXFxcIjpcXG4gICAgICAgICAgICAgICAgY3R4LnZhcnNbdGFza1tpXS52YXJdID0gYWxsb2NCdWZmZXIodGFza1tpXS5idWZmKTtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgY2FzZSBcXFwiQUxMT0NcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgudmFyc1t0YXNrW2ldLnZhcl0gPSBhbGxvYyh0YXNrW2ldLmxlbik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIlNFVFxcXCI6XFxuICAgICAgICAgICAgICAgIHNldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0uYnVmZik7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIGNhc2UgXFxcIkNBTExcXFwiOiB7XFxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGFza1tpXS5wYXJhbXMubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHAgPSB0YXNrW2ldLnBhcmFtc1tqXTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcC52YXIgIT09IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2goY3R4LnZhcnNbcC52YXJdICsgKHAub2Zmc2V0IHx8IDApKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHAudmFsICE9IFxcXCJ1bmRlZmluZWRcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocC52YWwpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmV4cG9ydHNbdGFza1tpXS5mbk5hbWVdKC4uLnBhcmFtcyk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXNlIFxcXCJHRVRcXFwiOlxcbiAgICAgICAgICAgICAgICBjdHgub3V0W3Rhc2tbaV0ub3V0XSA9IGdldEJ1ZmZlcihjdHgudmFyc1t0YXNrW2ldLnZhcl0sIHRhc2tbaV0ubGVuKS5zbGljZSgpO1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIkludmFsaWQgY21kXFxcIik7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgdTMyYiA9IG5ldyBVaW50MzJBcnJheShtZW1vcnkuYnVmZmVyLCAwLCAxKTtcXG4gICAgICAgIHUzMmJbMF0gPSBvbGRBbGxvYztcXG4gICAgICAgIHJldHVybiBjdHgub3V0O1xcbiAgICB9XFxuXFxuXFxuICAgIHJldHVybiBydW5UYXNrO1xcbn1cIn0pKHNlbGYpYDtcbntcbiAgICBpZihnbG9iYWxUaGlzPy5CbG9iKSB7XG4gICAgICAgIGNvbnN0IHRocmVhZEJ5dGVzPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodGhyZWFkU3RyKTtcbiAgICAgICAgY29uc3Qgd29ya2VyQmxvYiA9IG5ldyBCbG9iKFt0aHJlYWRCeXRlc10sIHsgdHlwZTogXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIgfSkgO1xuICAgICAgICB3b3JrZXJTb3VyY2UgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHdvcmtlckJsb2IpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHdvcmtlclNvdXJjZSA9IFwiZGF0YTphcHBsaWNhdGlvbi9qYXZhc2NyaXB0O2Jhc2U2NCxcIiArIGdsb2JhbFRoaXMuYnRvYSh0aHJlYWRTdHIpO1xuICAgIH1cbn1cblxuXG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkVGhyZWFkTWFuYWdlcih3YXNtLCBzaW5nbGVUaHJlYWQpIHtcbiAgICBjb25zdCB0bSA9IG5ldyBUaHJlYWRNYW5hZ2VyKCk7XG5cbiAgICB0bS5tZW1vcnkgPSBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOk1FTV9TSVpFfSk7XG4gICAgdG0udTggPSBuZXcgVWludDhBcnJheSh0bS5tZW1vcnkuYnVmZmVyKTtcbiAgICB0bS51MzIgPSBuZXcgVWludDMyQXJyYXkodG0ubWVtb3J5LmJ1ZmZlcik7XG5cbiAgICBjb25zdCB3YXNtTW9kdWxlID0gYXdhaXQgV2ViQXNzZW1ibHkuY29tcGlsZSh3YXNtLmNvZGUpO1xuXG4gICAgdG0uaW5zdGFuY2UgPSBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSh3YXNtTW9kdWxlLCB7XG4gICAgICAgIGVudjoge1xuICAgICAgICAgICAgXCJtZW1vcnlcIjogdG0ubWVtb3J5XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBpZighZ2xvYmFsVGhpcz8uV29ya2VyKSB7XG4gICAgICAgIHNpbmdsZVRocmVhZCA9IHRydWU7XG4gICAgfVxuICAgIFxuICAgIHRtLnNpbmdsZVRocmVhZCA9IHNpbmdsZVRocmVhZDtcbiAgICB0bS5pbml0YWxQRnJlZSA9IHRtLnUzMlswXTsgICAvLyBTYXZlIHRoZSBQb2ludGVyIHRvIGZyZWUgc3BhY2UuXG4gICAgdG0ucHEgPSB3YXNtLnBxO1xuICAgIHRtLnByID0gd2FzbS5wcjtcbiAgICB0bS5wRzFnZW4gPSB3YXNtLnBHMWdlbjtcbiAgICB0bS5wRzF6ZXJvID0gd2FzbS5wRzF6ZXJvO1xuICAgIHRtLnBHMmdlbiA9IHdhc20ucEcyZ2VuO1xuICAgIHRtLnBHMnplcm8gPSB3YXNtLnBHMnplcm87XG4gICAgdG0ucE9uZVQgPSB3YXNtLnBPbmVUO1xuXG4gICAgLy8gICAgdG0ucFRtcDAgPSB0bS5hbGxvYyhjdXJ2ZS5HMi5GLm44KjMpO1xuICAgIC8vICAgIHRtLnBUbXAxID0gdG0uYWxsb2MoY3VydmUuRzIuRi5uOCozKTtcblxuICAgIGlmIChzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgdG0uY29kZSA9IHdhc20uY29kZTtcbiAgICAgICAgdG0udGFza01hbmFnZXIgPSB0aHJlYWQoKTtcbiAgICAgICAgYXdhaXQgdG0udGFza01hbmFnZXIoW3tcbiAgICAgICAgICAgIGNtZDogXCJJTklUXCIsXG4gICAgICAgICAgICBpbml0OiBNRU1fU0laRSxcbiAgICAgICAgICAgIGNvZGU6IHRtLmNvZGUuc2xpY2UoKVxuICAgICAgICB9XSk7XG4gICAgICAgIHRtLmNvbmN1cnJlbmN5ICA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdG0ud29ya2VycyA9IFtdO1xuICAgICAgICB0bS5wZW5kaW5nRGVmZXJyZWRzID0gW107XG4gICAgICAgIHRtLndvcmtpbmcgPSBbXTtcblxuICAgICAgICBsZXQgY29uY3VycmVuY3kgPSAyO1xuICAgICAgICB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG5hdmlnYXRvciA9PT0gXCJvYmplY3RcIiAmJiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSkge1xuICAgICAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gbmF2aWdhdG9yLmhhcmR3YXJlQ29uY3VycmVuY3k7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZihjb25jdXJyZW5jeSA9PSAwKXtcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5ID0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExpbWl0IHRvIDY0IHRocmVhZHMgZm9yIG1lbW9yeSByZWFzb25zLlxuICAgICAgICBpZiAoY29uY3VycmVuY3k+NjQpIGNvbmN1cnJlbmN5PTY0O1xuICAgICAgICB0bS5jb25jdXJyZW5jeSA9IGNvbmN1cnJlbmN5O1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXSA9IG5ldyBXb3JrZXIod29ya2VyU291cmNlKTtcblxuICAgICAgICAgICAgdG0ud29ya2Vyc1tpXS5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBnZXRPbk1zZyhpKSk7XG5cbiAgICAgICAgICAgIHRtLndvcmtpbmdbaV09ZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbml0UHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLndvcmtlcnMubGVuZ3RoO2krKykge1xuICAgICAgICAgICAgY29uc3QgY29weUNvZGUgPSB3YXNtLmNvZGUuc2xpY2UoKTtcbiAgICAgICAgICAgIGluaXRQcm9taXNlcy5wdXNoKHRtLnBvc3RBY3Rpb24oaSwgW3tcbiAgICAgICAgICAgICAgICBjbWQ6IFwiSU5JVFwiLFxuICAgICAgICAgICAgICAgIGluaXQ6IE1FTV9TSVpFLFxuICAgICAgICAgICAgICAgIGNvZGU6IGNvcHlDb2RlXG4gICAgICAgICAgICB9XSwgW2NvcHlDb2RlLmJ1ZmZlcl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGluaXRQcm9taXNlcyk7XG5cbiAgICB9XG4gICAgcmV0dXJuIHRtO1xuXG4gICAgZnVuY3Rpb24gZ2V0T25Nc2coaSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZSkge1xuICAgICAgICAgICAgbGV0IGRhdGE7XG4gICAgICAgICAgICBpZiAoKGUpJiYoZS5kYXRhKSkge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlLmRhdGE7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0bS53b3JraW5nW2ldPWZhbHNlO1xuICAgICAgICAgICAgdG0ucGVuZGluZ0RlZmVycmVkc1tpXS5yZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgdG0ucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH07XG4gICAgfVxuXG59XG5cbmNsYXNzIFRocmVhZE1hbmFnZXIge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlID0gW107XG4gICAgICAgIHRoaXMub2xkUEZyZWUgPSAwO1xuICAgIH1cblxuICAgIHN0YXJ0U3luY09wKCkge1xuICAgICAgICBpZiAodGhpcy5vbGRQRnJlZSAhPSAwKSB0aHJvdyBuZXcgRXJyb3IoXCJTeW5jIG9wZXJhdGlvbiBpbiBwcm9ncmVzc1wiKTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IHRoaXMudTMyWzBdO1xuICAgIH1cblxuICAgIGVuZFN5bmNPcCgpIHtcbiAgICAgICAgaWYgKHRoaXMub2xkUEZyZWUgPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiTm8gc3luYyBvcGVyYXRpb24gaW4gcHJvZ3Jlc3NcIik7XG4gICAgICAgIHRoaXMudTMyWzBdID0gdGhpcy5vbGRQRnJlZTtcbiAgICAgICAgdGhpcy5vbGRQRnJlZSA9IDA7XG4gICAgfVxuXG4gICAgcG9zdEFjdGlvbih3b3JrZXJJZCwgZSwgdHJhbnNmZXJzLCBfZGVmZXJyZWQpIHtcbiAgICAgICAgaWYgKHRoaXMud29ya2luZ1t3b3JrZXJJZF0pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvc3RpbmcgYSBqb2IgdCBhIHdvcmtpbmcgd29ya2VyXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2luZ1t3b3JrZXJJZF0gPSB0cnVlO1xuXG4gICAgICAgIHRoaXMucGVuZGluZ0RlZmVycmVkc1t3b3JrZXJJZF0gPSBfZGVmZXJyZWQgPyBfZGVmZXJyZWQgOiBuZXcgRGVmZXJyZWQoKTtcbiAgICAgICAgdGhpcy53b3JrZXJzW3dvcmtlcklkXS5wb3N0TWVzc2FnZShlLCB0cmFuc2ZlcnMpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnBlbmRpbmdEZWZlcnJlZHNbd29ya2VySWRdLnByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1dvcmtzKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IChpPHRoaXMud29ya2Vycy5sZW5ndGgpJiYodGhpcy5hY3Rpb25RdWV1ZS5sZW5ndGggPiAwKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53b3JraW5nW2ldID09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgd29yayA9IHRoaXMuYWN0aW9uUXVldWUuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RBY3Rpb24oaSwgd29yay5kYXRhLCB3b3JrLnRyYW5zZmVycywgd29yay5kZWZlcnJlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBxdWV1ZUFjdGlvbihhY3Rpb25EYXRhLCB0cmFuc2ZlcnMpIHtcbiAgICAgICAgY29uc3QgZCA9IG5ldyBEZWZlcnJlZCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNpbmdsZVRocmVhZCkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gdGhpcy50YXNrTWFuYWdlcihhY3Rpb25EYXRhKTtcbiAgICAgICAgICAgIGQucmVzb2x2ZShyZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICBkYXRhOiBhY3Rpb25EYXRhLFxuICAgICAgICAgICAgICAgIHRyYW5zZmVyczogdHJhbnNmZXJzLFxuICAgICAgICAgICAgICAgIGRlZmVycmVkOiBkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1dvcmtzKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQucHJvbWlzZTtcbiAgICB9XG5cbiAgICByZXNldE1lbW9yeSgpIHtcbiAgICAgICAgdGhpcy51MzJbMF0gPSB0aGlzLmluaXRhbFBGcmVlO1xuICAgIH1cblxuICAgIGFsbG9jQnVmZihidWZmKSB7XG4gICAgICAgIGNvbnN0IHBvaW50ZXIgPSB0aGlzLmFsbG9jKGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuc2V0QnVmZihwb2ludGVyLCBidWZmKTtcbiAgICAgICAgcmV0dXJuIHBvaW50ZXI7XG4gICAgfVxuXG4gICAgZ2V0QnVmZihwb2ludGVyLCBsZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudTguc2xpY2UocG9pbnRlciwgcG9pbnRlcisgbGVuZ3RoKTtcbiAgICB9XG5cbiAgICBzZXRCdWZmKHBvaW50ZXIsIGJ1ZmZlcikge1xuICAgICAgICB0aGlzLnU4LnNldChuZXcgVWludDhBcnJheShidWZmZXIpLCBwb2ludGVyKTtcbiAgICB9XG5cbiAgICBhbGxvYyhsZW5ndGgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMudTMyWzBdICYgMykgdGhpcy51MzJbMF0rKzsgIC8vIFJldHVybiBhbHdheXMgYWxpZ25lZCBwb2ludGVyc1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnUzMlswXTtcbiAgICAgICAgdGhpcy51MzJbMF0gKz0gbGVuZ3RoO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIHRlcm1pbmF0ZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMud29ya2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy53b3JrZXJzW2ldLnBvc3RNZXNzYWdlKFt7Y21kOiBcIlRFUk1JTkFURVwifV0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHNsZWVwKDIwMCk7XG4gICAgfVxuXG59XG5cbmZ1bmN0aW9uIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IGN1cnZlLnRtO1xuXG4gICAgY3VydmVbZ3JvdXBOYW1lXS5iYXRjaEFwcGx5S2V5ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgZmlyc3QsIGluYywgaW5UeXBlLCBvdXRUeXBlKSB7XG4gICAgICAgIGluVHlwZSA9IGluVHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBvdXRUeXBlID0gb3V0VHlwZSB8fCBcImFmZmluZVwiO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkFmZmluZTtcbiAgICAgICAgbGV0IHNHaW4sIHNHbWlkLCBzR291dDtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dpbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2JhdGNoQXBwbHlLZXlNaXhlZFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiamFjb2JpYW5cIikge1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZuQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgICAgIHNHb3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImphY29iaWFuXCIpIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjM7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzR2luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fYmF0Y2hBcHBseUtleU1peGVkXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzR21pZCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgaWYgKG91dFR5cGUgPT0gXCJqYWNvYmlhblwiKSB7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5BZmZpbmUgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9iYXRjaEFwcGx5S2V5XCI7XG4gICAgICAgICAgICBzR2luID0gRy5uODtcbiAgICAgICAgICAgIHNHbWlkID0gRy5uODtcbiAgICAgICAgICAgIHNHb3V0ID0gRy5uODtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXA6IFwiICsgZ3JvdXBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzR2luKTtcbiAgICAgICAgY29uc3QgcG9pbnRzUGVyQ2h1bmsgPSBNYXRoLmZsb29yKG5Qb2ludHMvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGluYyA9IEZyLmUoaW5jKTtcbiAgICAgICAgbGV0IHQgPSBGci5lKGZpcnN0KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRtLmNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IHRtLmNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzIC0gaSpwb2ludHNQZXJDaHVuaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJBTExPQ1NFVFwiLFxuICAgICAgICAgICAgICAgIHZhcjogMCxcbiAgICAgICAgICAgICAgICBidWZmOiBidWZmLnNsaWNlKGkqcG9pbnRzUGVyQ2h1bmsqc0dpbiwgaSpwb2ludHNQZXJDaHVuaypzR2luICsgbipzR2luKVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IHR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogbipNYXRoLm1heChzR21pZCwgc0dvdXQpfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgIGNtZDogXCJDQUxMXCIsXG4gICAgICAgICAgICAgICAgZm5OYW1lOiBmbk5hbWUsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOjN9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoZm5BZmZpbmUpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgICAgICBmbk5hbWU6IGZuQWZmaW5lLFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogbn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAzLCBsZW46IG4qc0dvdXR9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKHRtLnF1ZXVlQWN0aW9uKHRhc2spKTtcbiAgICAgICAgICAgIHQgPSBGci5tdWwodCwgRnIuZXhwKGluYywgbikpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5hbGwob3BQcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IG91dEJ1ZmY7XG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBvdXRCdWZmID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG91dEJ1ZmYgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG91dEJ1ZmYuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwICs9IHJlc3VsdFtpXVswXS5ieXRlTGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dEJ1ZmY7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYWlyaW5nKGN1cnZlKSB7XG4gICAgY29uc3QgdG0gPSBjdXJ2ZS50bTtcbiAgICBjdXJ2ZS5wYWlyaW5nID0gZnVuY3Rpb24gcGFpcmluZyhhLCBiKSB7XG5cbiAgICAgICAgdG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0bS5hbGxvY0J1ZmYoY3VydmUuRzEudG9KYWNvYmlhbihhKSk7XG4gICAgICAgIGNvbnN0IHBCID0gdG0uYWxsb2NCdWZmKGN1cnZlLkcyLnRvSmFjb2JpYW4oYikpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9wYWlyaW5nXCJdKHBBLCBwQiwgcFJlcyk7XG5cbiAgICAgICAgY29uc3QgcmVzID0gdG0uZ2V0QnVmZihwUmVzLCBjdXJ2ZS5HdC5uOCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLnBhaXJpbmdFcSA9IGFzeW5jIGZ1bmN0aW9uIHBhaXJpbmdFcSgpIHtcbiAgICAgICAgbGV0ICBidWZmQ3Q7XG4gICAgICAgIGxldCBuRXFzO1xuICAgICAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggJSAyKSA9PSAxKSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXTtcbiAgICAgICAgICAgIG5FcXMgPSAoYXJndW1lbnRzLmxlbmd0aCAtMSkgLzI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmQ3QgPSBjdXJ2ZS5HdC5vbmU7XG4gICAgICAgICAgICBuRXFzID0gYXJndW1lbnRzLmxlbmd0aCAvMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5FcXM7IGkrKykge1xuXG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG5cbiAgICAgICAgICAgIGNvbnN0IGcxQnVmZiA9IGN1cnZlLkcxLnRvSmFjb2JpYW4oYXJndW1lbnRzW2kqMl0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBnMUJ1ZmZ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBjdXJ2ZS5wcmVQU2l6ZX0pO1xuXG4gICAgICAgICAgICBjb25zdCBnMkJ1ZmYgPSBjdXJ2ZS5HMi50b0phY29iaWFuKGFyZ3VtZW50c1tpKjIgKzFdKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZzJCdWZmfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1wiLCB2YXI6IDMsIGxlbjogY3VydmUucHJlUVNpemV9KTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiA0LCBsZW46IGN1cnZlLkd0Lm44fSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcxXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfcHJlcGFyZUcyXCIsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDN9XG4gICAgICAgICAgICBdfSk7XG5cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBjdXJ2ZS5uYW1lICsgXCJfbWlsbGVyTG9vcFwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFyOiA0fVxuICAgICAgICAgICAgXX0pO1xuXG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDQsIGxlbjogY3VydmUuR3Qubjh9KTtcblxuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIHRtLnF1ZXVlQWN0aW9uKHRhc2spXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICB0bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUmVzID0gdG0uYWxsb2MoY3VydmUuR3QubjgpO1xuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9vbmUocFJlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcE1SID0gdG0uYWxsb2NCdWZmKHJlc3VsdFtpXVswXSk7XG4gICAgICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzLmZ0bV9tdWwocFJlcywgcE1SLCBwUmVzKTtcbiAgICAgICAgfVxuICAgICAgICB0bS5pbnN0YW5jZS5leHBvcnRzW2N1cnZlLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBSZXMsIHBSZXMpO1xuXG4gICAgICAgIGNvbnN0IHBDdCA9IHRtLmFsbG9jQnVmZihidWZmQ3QpO1xuXG4gICAgICAgIGNvbnN0IHIgPSAhIXRtLmluc3RhbmNlLmV4cG9ydHMuZnRtX2VxKHBSZXMsIHBDdCk7XG5cbiAgICAgICAgdG0uZW5kU3luY09wKCk7XG5cbiAgICAgICAgcmV0dXJuIHI7XG4gICAgfTtcblxuICAgIGN1cnZlLnByZXBhcmVHMSA9IGZ1bmN0aW9uKHApIHtcbiAgICAgICAgdGhpcy50bS5zdGFydFN5bmNPcCgpO1xuICAgICAgICBjb25zdCBwUCA9IHRoaXMudG0uYWxsb2NCdWZmKHApO1xuICAgICAgICBjb25zdCBwUHJlcFAgPSB0aGlzLnRtLmFsbG9jKHRoaXMucHJlUFNpemUpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfcHJlcGFyZUcxXCJdKHBQLCBwUHJlcFApO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFByZXBQLCB0aGlzLnByZVBTaXplKTtcbiAgICAgICAgdGhpcy50bS5lbmRTeW5jT3AoKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9O1xuXG4gICAgY3VydmUucHJlcGFyZUcyID0gZnVuY3Rpb24ocSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBRID0gdGhpcy50bS5hbGxvY0J1ZmYocSk7XG4gICAgICAgIGNvbnN0IHBQcmVwUSA9IHRoaXMudG0uYWxsb2ModGhpcy5wcmVRU2l6ZSk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9wcmVwYXJlRzJcIl0ocFEsIHBQcmVwUSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IHRoaXMudG0uZ2V0QnVmZihwUHJlcFEsIHRoaXMucHJlUVNpemUpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5taWxsZXJMb29wID0gZnVuY3Rpb24ocHJlUCwgcHJlUSkge1xuICAgICAgICB0aGlzLnRtLnN0YXJ0U3luY09wKCk7XG4gICAgICAgIGNvbnN0IHBQcmVQID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUCk7XG4gICAgICAgIGNvbnN0IHBQcmVRID0gdGhpcy50bS5hbGxvY0J1ZmYocHJlUSk7XG4gICAgICAgIGNvbnN0IHBSZXMgPSB0aGlzLnRtLmFsbG9jKHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmluc3RhbmNlLmV4cG9ydHNbdGhpcy5uYW1lICsgXCJfbWlsbGVyTG9vcFwiXShwUHJlUCwgcFByZVEsIHBSZXMpO1xuICAgICAgICBjb25zdCByZXMgPSB0aGlzLnRtLmdldEJ1ZmYocFJlcywgdGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uZW5kU3luY09wKCk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfTtcblxuICAgIGN1cnZlLmZpbmFsRXhwb25lbnRpYXRpb24gPSBmdW5jdGlvbihhKSB7XG4gICAgICAgIHRoaXMudG0uc3RhcnRTeW5jT3AoKTtcbiAgICAgICAgY29uc3QgcEEgPSB0aGlzLnRtLmFsbG9jQnVmZihhKTtcbiAgICAgICAgY29uc3QgcFJlcyA9IHRoaXMudG0uYWxsb2ModGhpcy5HdC5uOCk7XG4gICAgICAgIHRoaXMudG0uaW5zdGFuY2UuZXhwb3J0c1t0aGlzLm5hbWUgKyBcIl9maW5hbEV4cG9uZW50aWF0aW9uXCJdKHBBLCBwUmVzKTtcbiAgICAgICAgY29uc3QgcmVzID0gdGhpcy50bS5nZXRCdWZmKHBSZXMsIHRoaXMuR3QubjgpO1xuICAgICAgICB0aGlzLnRtLmVuZFN5bmNPcCgpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH07XG5cbn1cblxuY29uc3QgcFRTaXplcyA9IFtcbiAgICAxICwgIDEsICAxLCAgMSwgICAgMiwgIDMsICA0LCAgNSxcbiAgICA2ICwgIDcsICA3LCAgOCwgICAgOSwgMTAsIDExLCAxMixcbiAgICAxMywgMTMsIDE0LCAxNSwgICAxNiwgMTYsIDE3LCAxNyxcbiAgICAxNywgMTcsIDE3LCAxNywgICAxNywgMTcsIDE3LCAxN1xuXTtcblxuZnVuY3Rpb24gYnVpbGRNdWx0aWV4cChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgdG0gPSBHLnRtO1xuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlcywgYnVmZlNjYWxhcnMsIGluVHlwZSwgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIGlmICggISAoYnVmZkJhc2VzIGluc3RhbmNlb2YgVWludDhBcnJheSkgKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZkJhc2VzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCAhIChidWZmU2NhbGFycyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpICkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGAke2xvZ1RleHR9IF9tdWx0aUV4cENodW5rIGJ1ZmZTY2FsYXJzIGlzIG5vdCBVaW50OEFycmF5YCk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7bG9nVGV4dH0gX211bHRpRXhwQ2h1bmsgYnVmZlNjYWxhcnMgaXMgbm90IFVpbnQ4QXJyYXlgKTtcbiAgICAgICAgfVxuICAgICAgICBpblR5cGUgPSBpblR5cGUgfHwgXCJhZmZpbmVcIjtcblxuICAgICAgICBsZXQgc0dJbjtcbiAgICAgICAgbGV0IGZuTmFtZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX211bHRpZXhwQWZmaW5lX2NodW5rXCI7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9tdWx0aWV4cF9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk5hbWUgPSBcImcybV9tdWx0aWV4cEFmZmluZV9jaHVua1wiO1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fbXVsdGlleHBfY2h1bmtcIjtcbiAgICAgICAgICAgICAgICBzR0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPT0gMCkgcmV0dXJuIEcuemVybztcbiAgICAgICAgY29uc3Qgc1NjYWxhciA9IE1hdGguZmxvb3IoYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCAvIG5Qb2ludHMpO1xuICAgICAgICBpZiggc1NjYWxhciAqIG5Qb2ludHMgIT0gYnVmZlNjYWxhcnMuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NhbGFyIHNpemUgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiaXRDaHVua1NpemUgPSBwVFNpemVzW2xvZzIoblBvaW50cyldO1xuICAgICAgICBjb25zdCBuQ2h1bmtzID0gTWF0aC5mbG9vcigoc1NjYWxhcio4IC0gMSkgLyBiaXRDaHVua1NpemUpICsxO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DaHVua3M7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYnVmZkJhc2VzfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZlNjYWxhcnN9LFxuICAgICAgICAgICAgICAgIHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IEcuRi5uOCozfSxcbiAgICAgICAgICAgICAgICB7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHNTY2FsYXJ9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogaSpiaXRDaHVua1NpemV9LFxuICAgICAgICAgICAgICAgICAgICB7dmFsOiBNYXRoLm1pbihzU2NhbGFyKjggLSBpKmJpdENodW5rU2l6ZSwgYml0Q2h1bmtTaXplKX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9XG4gICAgICAgICAgICAgICAgXX0sXG4gICAgICAgICAgICAgICAge2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogRy5GLm44KjN9XG4gICAgICAgICAgICBdO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKFxuICAgICAgICAgICAgICAgIEcudG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAoIUcuaXNaZXJvKHJlcykpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8Yml0Q2h1bmtTaXplOyBqKyspIHJlcyA9IEcuZG91YmxlKHJlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkge1xuICAgICAgICBjb25zdCBNQVhfQ0hVTktfU0laRSA9IDEgPDwgMjI7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMSA8PCAxMDtcbiAgICAgICAgbGV0IHNHSW47XG5cbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNHSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0dJbiA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmZCYXNlcy5ieXRlTGVuZ3RoIC8gc0dJbik7XG4gICAgICAgIGNvbnN0IHNTY2FsYXIgPSBNYXRoLmZsb29yKGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGggLyBuUG9pbnRzKTtcbiAgICAgICAgaWYoIHNTY2FsYXIgKiBuUG9pbnRzICE9IGJ1ZmZTY2FsYXJzLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjYWxhciBzaXplIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYml0Q2h1bmtTaXplID0gcFRTaXplc1tsb2cyKG5Qb2ludHMpXTtcbiAgICAgICAgY29uc3QgbkNodW5rcyA9IE1hdGguZmxvb3IoKHNTY2FsYXIqOCAtIDEpIC8gYml0Q2h1bmtTaXplKSArMTtcblxuICAgICAgICBsZXQgY2h1bmtTaXplO1xuICAgICAgICBjaHVua1NpemUgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyAodG0uY29uY3VycmVuY3kgL25DaHVua3MpKTtcbiAgICAgICAgaWYgKGNodW5rU2l6ZT5NQVhfQ0hVTktfU0laRSkgY2h1bmtTaXplID0gTUFYX0NIVU5LX1NJWkU7XG4gICAgICAgIGlmIChjaHVua1NpemU8TUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkgKz0gY2h1bmtTaXplKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIHN0YXJ0OiAke2xvZ1RleHR9OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuICAgICAgICAgICAgY29uc3QgYnVmZkJhc2VzQ2h1bmsgPSBidWZmQmFzZXMuc2xpY2UoaSpzR0luLCAoaStuKSpzR0luKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTY2FsYXJzQ2h1bmsgPSBidWZmU2NhbGFycy5zbGljZShpKnNTY2FsYXIsIChpK24pKnNTY2FsYXIpO1xuICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKF9tdWx0aUV4cENodW5rKGJ1ZmZCYXNlc0NodW5rLCBidWZmU2NhbGFyc0NodW5rLCBpblR5cGUsIGxvZ2dlciwgbG9nVGV4dCkudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYE11bHRpZXhwIGVuZDogJHtsb2dUZXh0fTogJHtpfS8ke25Qb2ludHN9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgcmVzID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPXJlc3VsdC5sZW5ndGgtMTsgaT49MDsgaS0tKSB7XG4gICAgICAgICAgICByZXMgPSBHLmFkZChyZXMsIHJlc3VsdFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIEcubXVsdGlFeHAgPSBhc3luYyBmdW5jdGlvbiBtdWx0aUV4cEFmZmluZShidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBsb2dnZXIsIGxvZ1RleHQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IF9tdWx0aUV4cChidWZmQmFzZXMsIGJ1ZmZTY2FsYXJzLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nVGV4dCk7XG4gICAgfTtcbiAgICBHLm11bHRpRXhwQWZmaW5lID0gYXN5bmMgZnVuY3Rpb24gbXVsdGlFeHBBZmZpbmUoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgbG9nZ2VyLCBsb2dUZXh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfbXVsdGlFeHAoYnVmZkJhc2VzLCBidWZmU2NhbGFycywgXCJhZmZpbmVcIiwgbG9nZ2VyLCBsb2dUZXh0KTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBidWlsZEZGVChjdXJ2ZSwgZ3JvdXBOYW1lKSB7XG4gICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCB0bSA9IEcudG07XG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdChidWZmLCBpbnZlcnNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG5cbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIGNvbnN0IE1BWF9CSVRTX1RIUkVBRCA9IDE0O1xuXG4gICAgICAgIGxldCBzSW4sIHNNaWQsIHNPdXQsIGZuSW4yTWlkLCBmbk1pZDJPdXQsIGZuRkZUTWl4LCBmbkZGVEpvaW4sIGZuRkZURmluYWw7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgICAgICBmbkluMk1pZCA9IFwiZzFtX2JhdGNoVG9KYWNvYmlhblwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICAgICAgZm5GRlRGaW5hbCA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbkZGVEpvaW4gPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgICAgICBmbkZGVE1peCA9IFwiZzFtX2ZmdE1peFwiO1xuXG4gICAgICAgICAgICBpZiAob3V0VHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgICAgIGZuTWlkMk91dCA9IFwiZzFtX2JhdGNoVG9BZmZpbmVcIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCozO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImcybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRKb2luID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICAgICAgZm5GRlRNaXggPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5NaWQyT3V0ID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRy5uODtcbiAgICAgICAgICAgIHNNaWQgPSBHLm44O1xuICAgICAgICAgICAgc091dCA9IEcubjg7XG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGZuRkZURmluYWwgPSBcImZybV9mZnRGaW5hbFwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm5GRlRNaXggPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJldHVybkFycmF5ID0gZmFsc2U7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJ1ZmYpKSB7XG4gICAgICAgICAgICBidWZmID0gYXJyYXkyYnVmZmVyKGJ1ZmYsIHNJbik7XG4gICAgICAgICAgICByZXR1cm5BcnJheSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmID0gYnVmZi5zbGljZSgwLCBidWZmLmJ5dGVMZW5ndGgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvIHNJbjtcbiAgICAgICAgY29uc3QgYml0cyA9IGxvZzIoblBvaW50cyk7XG5cbiAgICAgICAgaWYgICgoMSA8PCBiaXRzKSAhPSBuUG9pbnRzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZnQgbXVzdCBiZSBtdWx0aXBsZSBvZiAyXCIgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiaXRzID09IEZyLnMgKzEpIHtcbiAgICAgICAgICAgIGxldCBidWZmT3V0O1xuXG4gICAgICAgICAgICBpZiAoaW52ZXJzZSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQgPSAgYXdhaXQgX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dCA9ICBhd2FpdCBfZmZ0RXh0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmV0dXJuQXJyYXkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyMmFycmF5KGJ1ZmZPdXQsIHNPdXQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBpbnY7XG4gICAgICAgIGlmIChpbnZlcnNlKSB7XG4gICAgICAgICAgICBpbnYgPSBGci5pbnYoRnIuZShuUG9pbnRzKSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYnVmZk91dDtcblxuICAgICAgICBidWZmUmV2ZXJzZUJpdHMoYnVmZiwgc0luKTtcblxuICAgICAgICBsZXQgY2h1bmtzO1xuICAgICAgICBsZXQgcG9pbnRzSW5DaHVuayA9IE1hdGgubWluKDEgPDwgTUFYX0JJVFNfVEhSRUFELCBuUG9pbnRzKTtcbiAgICAgICAgbGV0IG5DaHVua3MgPSBuUG9pbnRzIC8gcG9pbnRzSW5DaHVuaztcblxuICAgICAgICB3aGlsZSAoKG5DaHVua3MgPCB0bS5jb25jdXJyZW5jeSkmJihwb2ludHNJbkNodW5rPj0xNikpIHtcbiAgICAgICAgICAgIG5DaHVua3MgKj0gMjtcbiAgICAgICAgICAgIHBvaW50c0luQ2h1bmsgLz0gMjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGwyQ2h1bmsgPSBsb2cyKHBvaW50c0luQ2h1bmspO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBtaXggc3RhcnQ6ICR7aX0vJHtuQ2h1bmtzfWApO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqcG9pbnRzSW5DaHVua30pO1xuICAgICAgICAgICAgY29uc3QgYnVmZkNodW5rID0gYnVmZi5zbGljZSggKHBvaW50c0luQ2h1bmsgKiBpKSpzSW4sIChwb2ludHNJbkNodW5rICogKGkrMSkpKnNJbik7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmQ2h1bmt9KTtcbiAgICAgICAgICAgIGlmIChmbkluMk1pZCkge1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjB9LCB7dmFsOiBwb2ludHNJbkNodW5rfSwge3ZhcjogMH1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqPTE7IGo8PWwyQ2h1bms7aisrKSB7XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6Zm5GRlRNaXgsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFsOiBqfV19KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGwyQ2h1bms9PWJpdHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm5GRlRGaW5hbCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRGaW5hbCwgIHBhcmFtczpbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZuTWlkMk91dCkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c0luQ2h1bmsqc091dH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OjAsIHZhcjogMCwgbGVuOiBzTWlkKnBvaW50c0luQ2h1bmt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0ICR7Yml0c30gbWl4IGVuZDogJHtpfS8ke25DaHVua3N9YCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjaHVua3MgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpPCBuQ2h1bmtzOyBpKyspIGNodW5rc1tpXSA9IGNodW5rc1tpXVswXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gbDJDaHVuaysxOyAgIGk8PWJpdHM7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGAke2xvZ2dlclR4dH06IGZmdCAgJHtiaXRzfSAgam9pbjogJHtpfS8ke2JpdHN9YCk7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAoYml0cyAtIGkpO1xuICAgICAgICAgICAgY29uc3QgbkNodW5rc1Blckdyb3VwID0gbkNodW5rcyAvIG5Hcm91cHM7XG4gICAgICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8bkdyb3VwczsgaisrKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrIDxuQ2h1bmtzUGVyR3JvdXAvMjsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gRnIuZXhwKCBGci53W2ldLCBrKnBvaW50c0luQ2h1bmspO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmMgPSBGci53W2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMSA9IGoqbkNodW5rc1Blckdyb3VwICsgaztcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzIgPSBqKm5DaHVua3NQZXJHcm91cCArIGsgKyBuQ2h1bmtzUGVyR3JvdXAvMjtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogY2h1bmtzW28xXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGNodW5rc1tvMl19KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAyLCBidWZmOiBmaXJzdH0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDMsIGJ1ZmY6IGluY30pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5GRlRKb2luLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMX0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFsOiBwb2ludHNJbkNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaT09Yml0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZuRkZURmluYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDQsIGJ1ZmY6IGludn0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEZpbmFsLCAgcGFyYW1zOltcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c0luQ2h1bmt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiA0fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuRkZURmluYWwsICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogcG9pbnRzSW5DaHVua30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDR9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IHBvaW50c0luQ2h1bmt9LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNPdXR9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBwb2ludHNJbkNodW5rKnNNaWR9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvcFByb21pc2VzLnB1c2godG0ucXVldWVBY3Rpb24odGFzaykudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnQgJHtiaXRzfSBqb2luICAke2l9LyR7Yml0c30gICR7aisxfS8ke25Hcm91cHN9ICR7a30vJHtuQ2h1bmtzUGVyR3JvdXAvMn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmIGluc3RhbmNlb2YgQmlnQnVmZmVyKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNPdXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc091dCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGludmVyc2UpIHtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1swXS5zbGljZSgocG9pbnRzSW5DaHVuay0xKSpzT3V0KSk7XG4gICAgICAgICAgICBsZXQgcD0gc091dDtcbiAgICAgICAgICAgIGZvciAobGV0IGk9bkNodW5rcy0xOyBpPjA7IGktLSkge1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGNodW5rc1tpXSwgcCk7XG4gICAgICAgICAgICAgICAgcCArPSBwb2ludHNJbkNodW5rKnNPdXQ7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTsgIC8vIExpYmVyYXRlIG1lbVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzWzBdLnNsaWNlKDAsIChwb2ludHNJbkNodW5rLTEpKnNPdXQpLCBwKTtcbiAgICAgICAgICAgIGRlbGV0ZSBjaHVua3NbMF07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkNodW5rczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVmZk91dC5zZXQoY2h1bmtzW2ldLCBwb2ludHNJbkNodW5rKnNPdXQqaSk7XG4gICAgICAgICAgICAgICAgZGVsZXRlIGNodW5rc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXR1cm5BcnJheSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjJhcnJheShidWZmT3V0LCBzT3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmT3V0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dChidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIFtiMSwgYjJdID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRcIiwgRnIub25lLCBGci5zaGlmdCwgaW5UeXBlLCBcImphY29iaWFuXCIsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcblxuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIxLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCBmYWxzZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuXG4gICAgICAgIGNvbnN0IHJlczEgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gX2ZmdEV4dEludihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGxldCBiMSwgYjI7XG4gICAgICAgIGIxID0gYnVmZi5zbGljZSggMCAsIGJ1ZmYuYnl0ZUxlbmd0aC8yKTtcbiAgICAgICAgYjIgPSBidWZmLnNsaWNlKCBidWZmLmJ5dGVMZW5ndGgvMiwgYnVmZi5ieXRlTGVuZ3RoKTtcblxuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIHByb21pc2VzLnB1c2goIF9mZnQoYjEsIHRydWUsIGluVHlwZSwgXCJqYWNvYmlhblwiLCBsb2dnZXIsIGxvZ2dlclR4dCkpO1xuICAgICAgICBwcm9taXNlcy5wdXNoKCBfZmZ0KGIyLCB0cnVlLCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQpKTtcblxuICAgICAgICBbYjEsIGIyXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBjb25zdCByZXMxID0gYXdhaXQgX2ZmdEpvaW5FeHQoYjEsIGIyLCBcImZmdEpvaW5FeHRJbnZcIiwgRnIub25lLCBGci5zaGlmdEludiwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCk7XG5cbiAgICAgICAgbGV0IGJ1ZmZPdXQ7XG4gICAgICAgIGlmIChyZXMxWzBdLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihyZXMxWzBdLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkocmVzMVswXS5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZk91dC5zZXQocmVzMVswXSk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHJlczFbMV0sIHJlczFbMF0uYnl0ZUxlbmd0aCk7XG5cbiAgICAgICAgcmV0dXJuIGJ1ZmZPdXQ7XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBfZmZ0Sm9pbkV4dChidWZmMSwgYnVmZjIsIGZuLCBmaXJzdCwgaW5jLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MTY7XG4gICAgICAgIGNvbnN0IE1JTl9DSFVOS19TSVpFID0gMTw8NDtcblxuICAgICAgICBsZXQgZm5OYW1lO1xuICAgICAgICBsZXQgZm5JbjJNaWQsIGZuTWlkMk91dDtcbiAgICAgICAgbGV0IHNPdXQsIHNJbiwgc01pZDtcblxuICAgICAgICBpZiAoZ3JvdXBOYW1lID09IFwiRzFcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcxbV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzTWlkID0gRy5GLm44KjM7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9cIitmbjtcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcxbV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgaWYgKGluVHlwZSA9PSBcImFmZmluZVwiKSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjI7XG4gICAgICAgICAgICAgICAgZm5JbjJNaWQgPSBcImcybV9iYXRjaFRvSmFjb2JpYW5cIjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9cIitmbjtcbiAgICAgICAgICAgIHNNaWQgPSBHLkYubjgqMztcbiAgICAgICAgICAgIGlmIChvdXRUeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBmbk1pZDJPdXQgPSBcImcybV9iYXRjaFRvQWZmaW5lXCI7XG4gICAgICAgICAgICAgICAgc091dCA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzT3V0ID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgICAgICBzT3V0ID0gRnIubjg7XG4gICAgICAgICAgICBzTWlkID0gRnIubjg7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9cIiArIGZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChidWZmMS5ieXRlTGVuZ3RoICE9IGJ1ZmYyLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYnVmZmVyIHNpemVcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgblBvaW50cyA9IE1hdGguZmxvb3IoYnVmZjEuYnl0ZUxlbmd0aCAvIHNJbik7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNodW5rU2l6ZSA9IE1hdGguZmxvb3IoblBvaW50cyAvdG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoY2h1bmtTaXplIDwgTUlOX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1JTl9DSFVOS19TSVpFO1xuICAgICAgICBpZiAoY2h1bmtTaXplID4gTUFYX0NIVU5LX1NJWkUpIGNodW5rU2l6ZSA9IE1BWF9DSFVOS19TSVpFO1xuXG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8blBvaW50czsgaSArPSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgJHtsb2dnZXJUeHR9OiBmZnRKb2luRXh0IFN0YXJ0OiAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG49IE1hdGgubWluKG5Qb2ludHMgLSBpLCBjaHVua1NpemUpO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdENodW5rID0gRnIubXVsKGZpcnN0LCBGci5leHAoIGluYywgaSkpO1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuXG4gICAgICAgICAgICBjb25zdCBiMSA9IGJ1ZmYxLnNsaWNlKGkqc0luLCAoaStuKSpzSW4pO1xuICAgICAgICAgICAgY29uc3QgYjIgPSBidWZmMi5zbGljZShpKnNJbiwgKGkrbikqc0luKTtcblxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAwLCBsZW46IHNNaWQqbn0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMSwgbGVuOiBzTWlkKm59KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIlNFVFwiLCB2YXI6IDEsIGJ1ZmY6IGIyfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0Q2h1bmt9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICBpZiAoZm5JbjJNaWQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbkluMk1pZCwgcGFyYW1zOiBbe3ZhcjowfSwge3ZhbDogbn0sIHt2YXI6IDB9XX0pO1xuICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOmZuSW4yTWlkLCBwYXJhbXM6IFt7dmFyOjF9LCB7dmFsOiBufSwge3ZhcjogMX1dfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBGci5zfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIGlmIChmbk1pZDJPdXQpIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MH0sIHt2YWw6IG59LCB7dmFyOiAwfV19KTtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTpmbk1pZDJPdXQsIHBhcmFtczogW3t2YXI6MX0sIHt2YWw6IG59LCB7dmFyOiAxfV19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDEsIHZhcjogMSwgbGVuOiBuKnNPdXR9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKS50aGVuKCAocikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYCR7bG9nZ2VyVHh0fTogZmZ0Sm9pbkV4dCBFbmQ6ICR7aX0vJHtuUG9pbnRzfWApO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDE7XG4gICAgICAgIGxldCBmdWxsQnVmZk91dDI7XG4gICAgICAgIGlmIChuUG9pbnRzICogc091dCA+IDE8PDI4KSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc091dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNPdXQpO1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQyID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzT3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH1cblxuXG4gICAgRy5mZnQgPSBhc3luYyBmdW5jdGlvbihidWZmLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBfZmZ0KGJ1ZmYsIGZhbHNlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5pZmZ0ID0gYXN5bmMgZnVuY3Rpb24oYnVmZiwgaW5UeXBlLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCkge1xuICAgICAgICByZXR1cm4gYXdhaXQgX2ZmdChidWZmLCB0cnVlLCBpblR5cGUsIG91dFR5cGUsIGxvZ2dlciwgbG9nZ2VyVHh0KTtcbiAgICB9O1xuXG4gICAgRy5sYWdyYW5nZUV2YWx1YXRpb25zID0gYXN5bmMgZnVuY3Rpb24gKGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpIHtcbiAgICAgICAgaW5UeXBlID0gaW5UeXBlIHx8IFwiYWZmaW5lXCI7XG4gICAgICAgIG91dFR5cGUgPSBvdXRUeXBlIHx8IFwiYWZmaW5lXCI7XG5cbiAgICAgICAgbGV0IHNJbjtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGlmIChpblR5cGUgPT0gXCJhZmZpbmVcIikge1xuICAgICAgICAgICAgICAgIHNJbiA9IEcuRi5uOCoyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBpZiAoaW5UeXBlID09IFwiYWZmaW5lXCIpIHtcbiAgICAgICAgICAgICAgICBzSW4gPSBHLkYubjgqMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc0luID0gRy5GLm44KjM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRnJcIikge1xuICAgICAgICAgICAgc0luID0gRnIubjg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGdyb3VwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgblBvaW50cyA9IGJ1ZmYuYnl0ZUxlbmd0aCAvc0luO1xuICAgICAgICBjb25zdCBiaXRzID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBpZiAoKDIgKiogYml0cykqc0luICE9IGJ1ZmYuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpaW52YWxpZCBpbnB1dCBzaXplXCIpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibGFncmFuZ2VFdmFsdWF0aW9ucyBpbnZhbGlkIElucHV0IHNpemVcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYml0cyA8PSBGci5zKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgRy5pZmZ0KGJ1ZmYsIGluVHlwZSwgb3V0VHlwZSwgbG9nZ2VyLCBsb2dnZXJUeHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdHMgPiBGci5zKzEpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImxhZ3JhbmdlRXZhbHVhdGlvbnMgaW5wdXQgdG9vIGJpZ1wiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB0MCA9IGJ1ZmYuc2xpY2UoMCwgYnVmZi5ieXRlTGVuZ3RoLzIpO1xuICAgICAgICBsZXQgdDEgPSBidWZmLnNsaWNlKGJ1ZmYuYnl0ZUxlbmd0aC8yLCBidWZmLmJ5dGVMZW5ndGgpO1xuXG5cbiAgICAgICAgY29uc3Qgc2hpZnRUb1NtYWxsTSA9IEZyLmV4cChGci5zaGlmdCwgblBvaW50cy8yKTtcbiAgICAgICAgY29uc3Qgc0NvbnN0ID0gRnIuaW52KCBGci5zdWIoRnIub25lLCBzaGlmdFRvU21hbGxNKSk7XG5cbiAgICAgICAgW3QwLCB0MV0gPSBhd2FpdCBfZmZ0Sm9pbkV4dCh0MCwgdDEsIFwicHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvblwiLCBzQ29uc3QsIEZyLnNoaWZ0SW52LCBpblR5cGUsIFwiamFjb2JpYW5cIiwgbG9nZ2VyLCBsb2dnZXJUeHQgKyBcIiBwcmVwXCIpO1xuXG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW107XG5cbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MCwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQwXCIpKTtcbiAgICAgICAgcHJvbWlzZXMucHVzaCggX2ZmdCh0MSwgdHJ1ZSwgXCJqYWNvYmlhblwiLCBvdXRUeXBlLCBsb2dnZXIsIGxvZ2dlclR4dCArIFwiIHQxXCIpKTtcblxuICAgICAgICBbdDAsIHQxXSA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgICBsZXQgYnVmZk91dDtcbiAgICAgICAgaWYgKHQwLmJ5dGVMZW5ndGggPiAoMTw8MjgpKSB7XG4gICAgICAgICAgICBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcih0MC5ieXRlTGVuZ3RoKjIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KHQwLmJ5dGVMZW5ndGgqMik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmT3V0LnNldCh0MCk7XG4gICAgICAgIGJ1ZmZPdXQuc2V0KHQxLCB0MC5ieXRlTGVuZ3RoKTtcblxuICAgICAgICByZXR1cm4gYnVmZk91dDtcbiAgICB9O1xuXG4gICAgRy5mZnRNaXggPSBhc3luYyBmdW5jdGlvbiBmZnRNaXgoYnVmZikge1xuICAgICAgICBjb25zdCBzRyA9IEcuRi5uOCozO1xuICAgICAgICBsZXQgZm5OYW1lLCBmbkZGVEpvaW47XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzFtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJHMlwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZzJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIGlmIChncm91cE5hbWUgPT0gXCJGclwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImZybV9mZnRNaXhcIjtcbiAgICAgICAgICAgIGZuRkZUSm9pbiA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gTWF0aC5mbG9vcihidWZmLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGNvbnN0IHBvd2VyID0gbG9nMihuUG9pbnRzKTtcblxuICAgICAgICBsZXQgbkNodW5rcyA9IDEgPDwgbG9nMih0bS5jb25jdXJyZW5jeSk7XG5cbiAgICAgICAgaWYgKG5Qb2ludHMgPD0gbkNodW5rcyoyKSBuQ2h1bmtzID0gMTtcblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IG5Qb2ludHMgLyBuQ2h1bmtzO1xuXG4gICAgICAgIGNvbnN0IHBvd2VyQ2h1bmsgPSBsb2cyKHBvaW50c1BlckNodW5rKTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgIGNvbnN0IGIgPSBidWZmLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYn0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0xOyBqPD1wb3dlckNodW5rOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhbDogan1cbiAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGNvbnN0IGNodW5rcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSBjaHVua3NbaV0gPSByZXN1bHRbaV1bMF07XG5cblxuICAgICAgICBmb3IgKGxldCBpID0gcG93ZXJDaHVuaysxOyBpPD1wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBuR3JvdXBzID0gMSA8PCAocG93ZXIgLSBpKTtcbiAgICAgICAgICAgIGNvbnN0IG5DaHVua3NQZXJHcm91cCA9IG5DaHVua3MgLyBuR3JvdXBzO1xuICAgICAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPG5Hcm91cHM7IGorKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGs9MDsgayA8bkNodW5rc1Blckdyb3VwLzI7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaXJzdCA9IEZyLmV4cCggRnIud1tpXSwgaypwb2ludHNQZXJDaHVuayk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluYyA9IEZyLndbaV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8xID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvMiA9IGoqbkNodW5rc1Blckdyb3VwICsgayArIG5DaHVua3NQZXJHcm91cC8yO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBjaHVua3NbbzFdfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogY2h1bmtzW28yXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDIsIGJ1ZmY6IGZpcnN0fSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMywgYnVmZjogaW5jfSk7XG4gICAgICAgICAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbkZGVEpvaW4sICBwYXJhbXM6W1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogM31cbiAgICAgICAgICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDAsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMSwgdmFyOiAxLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaCh0bS5xdWV1ZUFjdGlvbih0YXNrKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcbiAgICAgICAgICAgIGZvciAobGV0IGo9MDsgajxuR3JvdXBzOyBqKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrPTA7IGsgPG5DaHVua3NQZXJHcm91cC8yOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbzEgPSBqKm5DaHVua3NQZXJHcm91cCArIGs7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG8yID0gaipuQ2h1bmtzUGVyR3JvdXAgKyBrICsgbkNodW5rc1Blckdyb3VwLzI7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc0NodW5rID0gcmVzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGNodW5rc1tvMV0gPSByZXNDaHVua1swXTtcbiAgICAgICAgICAgICAgICAgICAgY2h1bmtzW28yXSA9IHJlc0NodW5rWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHAgPTA7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0LnNldChjaHVua3NbaV0sIHApO1xuICAgICAgICAgICAgcCs9Y2h1bmtzW2ldLmJ5dGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVsbEJ1ZmZPdXQ7XG4gICAgfTtcblxuICAgIEcuZmZ0Sm9pbiA9IGFzeW5jIGZ1bmN0aW9uIGZmdEpvaW4oYnVmZjEsIGJ1ZmYyLCBmaXJzdCwgaW5jKSB7XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjM7XG4gICAgICAgIGxldCBmbk5hbWU7XG4gICAgICAgIGlmIChncm91cE5hbWUgPT0gXCJHMVwiKSB7XG4gICAgICAgICAgICBmbk5hbWUgPSBcImcxbV9mZnRKb2luXCI7XG4gICAgICAgIH0gZWxzZSBpZiAoZ3JvdXBOYW1lID09IFwiRzJcIikge1xuICAgICAgICAgICAgZm5OYW1lID0gXCJnMm1fZmZ0Sm9pblwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkZyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZnJtX2ZmdEpvaW5cIjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZ3JvdXBcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYnVmZjEuYnl0ZUxlbmd0aCAhPSBidWZmMi5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ1ZmZlciBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYxLmJ5dGVMZW5ndGggLyBzRyk7XG4gICAgICAgIGlmIChuUG9pbnRzICE9IDEgPDwgbG9nMihuUG9pbnRzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5DaHVua3MgPSAxIDw8IGxvZzIodG0uY29uY3VycmVuY3kpO1xuICAgICAgICBpZiAoblBvaW50cyA8PSBuQ2h1bmtzKjIpIG5DaHVua3MgPSAxO1xuXG4gICAgICAgIGNvbnN0IHBvaW50c1BlckNodW5rID0gblBvaW50cyAvIG5DaHVua3M7XG5cblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQ2h1bmtzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RDaHVuayA9IEZyLm11bChmaXJzdCwgRnIuZXhwKGluYywgaSpwb2ludHNQZXJDaHVuaykpO1xuICAgICAgICAgICAgY29uc3QgYjEgPSBidWZmMS5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoKGkrMSkqIHBvaW50c1BlckNodW5rKSpzRyk7XG4gICAgICAgICAgICBjb25zdCBiMiA9IGJ1ZmYyLnNsaWNlKChpKiBwb2ludHNQZXJDaHVuaykqc0csICgoaSsxKSogcG9pbnRzUGVyQ2h1bmspKnNHKTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMCwgYnVmZjogYjF9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYjJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMiwgYnVmZjogZmlyc3RDaHVua30pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAzLCBidWZmOiBpbmN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmbk5hbWUsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgIHt2YXI6IDB9LFxuICAgICAgICAgICAgICAgIHt2YXI6IDF9LFxuICAgICAgICAgICAgICAgIHt2YWw6IHBvaW50c1BlckNodW5rfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgICAgICB7dmFyOiAzfVxuICAgICAgICAgICAgXX0pO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiR0VUXCIsIG91dDogMCwgdmFyOiAwLCBsZW46IHBvaW50c1BlckNodW5rKnNHfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAxLCB2YXI6IDEsIGxlbjogcG9pbnRzUGVyQ2h1bmsqc0d9KTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChcbiAgICAgICAgICAgICAgICB0bS5xdWV1ZUFjdGlvbih0YXNrKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQxO1xuICAgICAgICBsZXQgZnVsbEJ1ZmZPdXQyO1xuICAgICAgICBpZiAoYnVmZjEgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0MSA9IG5ldyBCaWdCdWZmZXIoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgQmlnQnVmZmVyKG5Qb2ludHMqc0cpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQxID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzRyk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIgPSBuZXcgVWludDhBcnJheShuUG9pbnRzKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBwID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDEuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBmdWxsQnVmZk91dDIuc2V0KHJlc3VsdFtpXVsxXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbZnVsbEJ1ZmZPdXQxLCBmdWxsQnVmZk91dDJdO1xuICAgIH07XG5cblxuXG4gICAgRy5mZnRGaW5hbCA9ICBhc3luYyBmdW5jdGlvbiBmZnRGaW5hbChidWZmLCBmYWN0b3IpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuTmFtZSwgZm5Ub0FmZmluZTtcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzFtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuTmFtZSA9IFwiZzJtX2ZmdEZpbmFsXCI7XG4gICAgICAgICAgICBmblRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBNYXRoLmZsb29yKGJ1ZmYuYnl0ZUxlbmd0aCAvIHNHKTtcbiAgICAgICAgaWYgKG5Qb2ludHMgIT0gMSA8PCBsb2cyKG5Qb2ludHMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG51bWJlciBvZiBwb2ludHNcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwb2ludHNQZXJDaHVuayA9IE1hdGguZmxvb3IoblBvaW50cyAvIHRtLmNvbmN1cnJlbmN5KTtcblxuICAgICAgICBjb25zdCBvcFByb21pc2VzID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0bS5jb25jdXJyZW5jeTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChpPCB0bS5jb25jdXJyZW5jeS0xKSB7XG4gICAgICAgICAgICAgICAgbiA9IHBvaW50c1BlckNodW5rO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqcG9pbnRzUGVyQ2h1bms7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0YXNrID0gW107XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZi5zbGljZSgoaSogcG9pbnRzUGVyQ2h1bmspKnNHLCAoaSpwb2ludHNQZXJDaHVuaytuKSpzRyk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogZmFjdG9yfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5OYW1lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAxfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkNBTExcIiwgZm5OYW1lOiBmblRvQWZmaW5lLCBwYXJhbXM6IFtcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgICAgICB7dmFsOiBufSxcbiAgICAgICAgICAgICAgICB7dmFyOiAwfSxcbiAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMCwgbGVuOiBuKnNHb3V0fSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goXG4gICAgICAgICAgICAgICAgdG0ucXVldWVBY3Rpb24odGFzaylcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGxldCBmdWxsQnVmZk91dDtcbiAgICAgICAgaWYgKGJ1ZmYgaW5zdGFuY2VvZiBCaWdCdWZmZXIpIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcihuUG9pbnRzKnNHb3V0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZ1bGxCdWZmT3V0ID0gbmV3IFVpbnQ4QXJyYXkoblBvaW50cypzR291dCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT1yZXN1bHQubGVuZ3RoLTE7IGk+PTA7IGktLSkge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBidWlsZEVuZ2luZShwYXJhbXMpIHtcblxuICAgIGNvbnN0IHRtID0gYXdhaXQgYnVpbGRUaHJlYWRNYW5hZ2VyKHBhcmFtcy53YXNtLCBwYXJhbXMuc2luZ2xlVGhyZWFkKTtcblxuXG4gICAgY29uc3QgY3VydmUgPSB7fTtcblxuICAgIGN1cnZlLnEgPSBlKHBhcmFtcy53YXNtLnEudG9TdHJpbmcoKSk7XG4gICAgY3VydmUuciA9IGUocGFyYW1zLndhc20uci50b1N0cmluZygpKTtcbiAgICBjdXJ2ZS5uYW1lID0gcGFyYW1zLm5hbWU7XG4gICAgY3VydmUudG0gPSB0bTtcbiAgICBjdXJ2ZS5wcmVQU2l6ZSA9IHBhcmFtcy53YXNtLnByZVBTaXplO1xuICAgIGN1cnZlLnByZVFTaXplID0gcGFyYW1zLndhc20ucHJlUVNpemU7XG4gICAgY3VydmUuRnIgPSBuZXcgV2FzbUZpZWxkMSh0bSwgXCJmcm1cIiwgcGFyYW1zLm44ciwgcGFyYW1zLnIpO1xuICAgIGN1cnZlLkYxID0gbmV3IFdhc21GaWVsZDEodG0sIFwiZjFtXCIsIHBhcmFtcy5uOHEsIHBhcmFtcy5xKTtcbiAgICBjdXJ2ZS5GMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImYybVwiLCBjdXJ2ZS5GMSk7XG4gICAgY3VydmUuRzEgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcxbVwiLCBjdXJ2ZS5GMSwgcGFyYW1zLndhc20ucEcxZ2VuLCBwYXJhbXMud2FzbS5wRzFiLCBwYXJhbXMuY29mYWN0b3JHMSk7XG4gICAgY3VydmUuRzIgPSBuZXcgV2FzbUN1cnZlKHRtLCBcImcybVwiLCBjdXJ2ZS5GMiwgcGFyYW1zLndhc20ucEcyZ2VuLCBwYXJhbXMud2FzbS5wRzJiLCBwYXJhbXMuY29mYWN0b3JHMik7XG4gICAgY3VydmUuRjYgPSBuZXcgV2FzbUZpZWxkMyh0bSwgXCJmNm1cIiwgY3VydmUuRjIpO1xuICAgIGN1cnZlLkYxMiA9IG5ldyBXYXNtRmllbGQyKHRtLCBcImZ0bVwiLCBjdXJ2ZS5GNik7XG5cbiAgICBjdXJ2ZS5HdCA9IGN1cnZlLkYxMjtcblxuICAgIGJ1aWxkQmF0Y2hBcHBseUtleShjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZEJhdGNoQXBwbHlLZXkoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRCYXRjaEFwcGx5S2V5KGN1cnZlLCBcIkZyXCIpO1xuXG4gICAgYnVpbGRNdWx0aWV4cChjdXJ2ZSwgXCJHMVwiKTtcbiAgICBidWlsZE11bHRpZXhwKGN1cnZlLCBcIkcyXCIpO1xuXG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzFcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRzJcIik7XG4gICAgYnVpbGRGRlQoY3VydmUsIFwiRnJcIik7XG5cbiAgICBidWlsZFBhaXJpbmcoY3VydmUpO1xuXG4gICAgY3VydmUuYXJyYXkyYnVmZmVyID0gZnVuY3Rpb24oYXJyLCBzRykge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cqYXJyLmxlbmd0aCk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYnVmZi5zZXQoYXJyW2ldLCBpKnNHKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmO1xuICAgIH07XG5cbiAgICBjdXJ2ZS5idWZmZXIyYXJyYXkgPSBmdW5jdGlvbihidWZmICwgc0cpIHtcbiAgICAgICAgY29uc3Qgbj0gYnVmZi5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG47IGkrKykge1xuICAgICAgICAgICAgYXJyW2ldID0gYnVmZi5zbGljZShpKnNHLCBpKnNHK3NHKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3VydmU7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmZ1bmN0aW9uIHRvTnVtYmVyKG4pIHtcbiAgICByZXR1cm4gQmlnSW50KG4pO1xufVxuXG5mdW5jdGlvbiBpc05lZ2F0aXZlKG4pIHtcbiAgICByZXR1cm4gbiA8IDBuO1xufVxuXG5mdW5jdGlvbiBpc1plcm8obikge1xuICAgIHJldHVybiBuID09PSAwbjtcbn1cblxuZnVuY3Rpb24gYml0TGVuZ3RoKG4pIHtcbiAgICBpZiAoaXNOZWdhdGl2ZShuKSkge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGggLSAxOyAvLyBkaXNjYXJkIHRoZSAtIHNpZ25cbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gbi50b1N0cmluZygyKS5sZW5ndGg7XG4gICAgfVxufVxuXG5mdW5jdGlvbiB1MzIobikge1xuICAgIGNvbnN0IGIgPSBbXTtcbiAgICBjb25zdCB2ID0gdG9OdW1iZXIobik7XG4gICAgYi5wdXNoKE51bWJlcih2ICYgMHhGRm4pKTtcbiAgICBiLnB1c2goTnVtYmVyKHYgPj4gOG4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAxNm4gJiAweEZGbikpO1xuICAgIGIucHVzaChOdW1iZXIodiA+PiAyNG4gJiAweEZGbikpO1xuICAgIHJldHVybiBiO1xufVxuXG5mdW5jdGlvbiB0b1VURjhBcnJheShzdHIpIHtcbiAgICB2YXIgdXRmOCA9IFtdO1xuICAgIGZvciAodmFyIGk9MDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hhcmNvZGUgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKGNoYXJjb2RlIDwgMHg4MCkgdXRmOC5wdXNoKGNoYXJjb2RlKTtcbiAgICAgICAgZWxzZSBpZiAoY2hhcmNvZGUgPCAweDgwMCkge1xuICAgICAgICAgICAgdXRmOC5wdXNoKDB4YzAgfCAoY2hhcmNvZGUgPj4gNiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjaGFyY29kZSA8IDB4ZDgwMCB8fCBjaGFyY29kZSA+PSAweGUwMDApIHtcbiAgICAgICAgICAgIHV0ZjgucHVzaCgweGUwIHwgKGNoYXJjb2RlID4+IDEyKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+NikgJiAweDNmKSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKGNoYXJjb2RlICYgMHgzZikpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgLy8gVVRGLTE2IGVuY29kZXMgMHgxMDAwMC0weDEwRkZGRiBieVxuICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgMHgxMDAwMCBhbmQgc3BsaXR0aW5nIHRoZVxuICAgICAgICAgICAgLy8gMjAgYml0cyBvZiAweDAtMHhGRkZGRiBpbnRvIHR3byBoYWx2ZXNcbiAgICAgICAgICAgIGNoYXJjb2RlID0gMHgxMDAwMCArICgoKGNoYXJjb2RlICYgMHgzZmYpPDwxMClcbiAgICAgICAgICAgICAgICAgICAgICB8IChzdHIuY2hhckNvZGVBdChpKSAmIDB4M2ZmKSk7XG4gICAgICAgICAgICB1dGY4LnB1c2goMHhmMCB8IChjaGFyY29kZSA+PjE4KSxcbiAgICAgICAgICAgICAgICAweDgwIHwgKChjaGFyY29kZT4+MTIpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8ICgoY2hhcmNvZGU+PjYpICYgMHgzZiksXG4gICAgICAgICAgICAgICAgMHg4MCB8IChjaGFyY29kZSAmIDB4M2YpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXRmODtcbn1cblxuZnVuY3Rpb24gc3RyaW5nKHN0cikge1xuICAgIGNvbnN0IGJ5dGVzID0gdG9VVEY4QXJyYXkoc3RyKTtcbiAgICByZXR1cm4gWyAuLi52YXJ1aW50MzIoYnl0ZXMubGVuZ3RoKSwgLi4uYnl0ZXMgXTtcbn1cblxuZnVuY3Rpb24gdmFydWludChuKSB7XG4gICAgY29uc3QgY29kZSA9IFtdO1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKGlzTmVnYXRpdmUodikpIHRocm93IG5ldyBFcnJvcihcIk51bWJlciBjYW5ub3QgYmUgbmVnYXRpdmVcIik7XG4gICAgd2hpbGUgKCFpc1plcm8odikpIHtcbiAgICAgICAgY29kZS5wdXNoKE51bWJlcih2ICYgMHg3Rm4pKTtcbiAgICAgICAgdiA9IHYgPj4gN247XG4gICAgfVxuICAgIGlmIChjb2RlLmxlbmd0aD09MCkgY29kZS5wdXNoKDApO1xuICAgIGZvciAobGV0IGk9MDsgaTxjb2RlLmxlbmd0aC0xOyBpKyspIHtcbiAgICAgICAgY29kZVtpXSA9IGNvZGVbaV0gfCAweDgwO1xuICAgIH1cbiAgICByZXR1cm4gY29kZTtcbn1cblxuZnVuY3Rpb24gdmFyaW50KF9uKSB7XG4gICAgbGV0IG4sIHNpZ247XG4gICAgY29uc3QgYml0cyA9IGJpdExlbmd0aChfbik7XG4gICAgaWYgKF9uPDApIHtcbiAgICAgICAgc2lnbiA9IHRydWU7XG4gICAgICAgIG4gPSAoMW4gPDwgQmlnSW50KGJpdHMpKSArIF9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZ24gPSBmYWxzZTtcbiAgICAgICAgbiA9IHRvTnVtYmVyKF9uKTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ0JpdHMgPSA3IC0gKGJpdHMgJSA3KTtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSAoKDFuIDw8IEJpZ0ludChwYWRkaW5nQml0cykpIC0gMW4pIDw8IEJpZ0ludChiaXRzKTtcbiAgICBjb25zdCBwYWRkaW5nTWFzayA9ICgoMSA8PCAoNyAtIHBhZGRpbmdCaXRzKSktMSkgfCAweDgwO1xuXG4gICAgY29uc3QgY29kZSA9IHZhcnVpbnQobiArIHBhZGRpbmcpO1xuXG4gICAgaWYgKCFzaWduKSB7XG4gICAgICAgIGNvZGVbY29kZS5sZW5ndGgtMV0gPSBjb2RlW2NvZGUubGVuZ3RoLTFdICYgcGFkZGluZ01hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvZGU7XG59XG5cbmZ1bmN0aW9uIHZhcmludDMyKG4pIHtcbiAgICBsZXQgdiA9IHRvTnVtYmVyKG4pO1xuICAgIGlmICh2ID4gMHhGRkZGRkZGRm4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gYmlnXCIpO1xuICAgIGlmICh2ID4gMHg3RkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDBuO1xuICAgIC8vIGJpZ0ludChcIi04MDAwMDAwMFwiLCAxNikgYXMgYmFzZTEwXG4gICAgaWYgKHYgPCAtMjE0NzQ4MzY0OG4pIHRocm93IG5ldyBFcnJvcihcIk51bWJlciB0b28gc21hbGxcIik7XG4gICAgcmV0dXJuIHZhcmludCh2KTtcbn1cblxuZnVuY3Rpb24gdmFyaW50NjQobikge1xuICAgIGxldCB2ID0gdG9OdW1iZXIobik7XG4gICAgaWYgKHYgPiAweEZGRkZGRkZGRkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICBpZiAodiA+IDB4N0ZGRkZGRkZGRkZGRkZGRm4pIHYgPSB2IC0gMHgxMDAwMDAwMDAwMDAwMDAwMG47XG4gICAgLy8gYmlnSW50KFwiLTgwMDAwMDAwMDAwMDAwMDBcIiwgMTYpIGFzIGJhc2UxMFxuICAgIGlmICh2IDwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIHNtYWxsXCIpO1xuICAgIHJldHVybiB2YXJpbnQodik7XG59XG5cbmZ1bmN0aW9uIHZhcnVpbnQzMihuKSB7XG4gICAgbGV0IHYgPSB0b051bWJlcihuKTtcbiAgICBpZiAodiA+IDB4RkZGRkZGRkZuKSB0aHJvdyBuZXcgRXJyb3IoXCJOdW1iZXIgdG9vIGJpZ1wiKTtcbiAgICByZXR1cm4gdmFydWludCh2KTtcbn1cblxuZnVuY3Rpb24gdG9IZXhTdHJpbmcoYnl0ZUFycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYnl0ZUFycmF5LCBmdW5jdGlvbihieXRlKSB7XG4gICAgICAgIHJldHVybiAoXCIwXCIgKyAoYnl0ZSAmIDB4RkYpLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTIpO1xuICAgIH0pLmpvaW4oXCJcIik7XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY2xhc3MgQ29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5mdW5jID0gZnVuYztcbiAgICAgICAgdGhpcy5mdW5jdGlvbk5hbWUgPSBmdW5jLmZ1bmN0aW9uTmFtZTtcbiAgICAgICAgdGhpcy5tb2R1bGUgPSBmdW5jLm1vZHVsZTtcbiAgICB9XG5cbiAgICBzZXRMb2NhbChsb2NhbE5hbWUsIHZhbENvZGUpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV07XG4gICAgICAgIGlmIChpZHggPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTG9jYWwgVmFyaWFibGUgbm90IGRlZmluZWQ6IEZ1bmN0aW9uOiAke3RoaXMuZnVuY3Rpb25OYW1lfSBsb2NhbDogJHtsb2NhbE5hbWV9IGApO1xuICAgICAgICByZXR1cm4gWy4uLnZhbENvZGUsIDB4MjEsIC4uLnZhcnVpbnQzMiggaWR4ICldO1xuICAgIH1cblxuICAgIHRlZUxvY2FsKGxvY2FsTmFtZSwgdmFsQ29kZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMb2NhbCBWYXJpYWJsZSBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7dGhpcy5mdW5jdGlvbk5hbWV9IGxvY2FsOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIHJldHVybiBbLi4udmFsQ29kZSwgMHgyMiwgLi4udmFydWludDMyKCBpZHggKV07XG4gICAgfVxuXG4gICAgZ2V0TG9jYWwobG9jYWxOYW1lKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZnVuYy5sb2NhbElkeEJ5TmFtZVtsb2NhbE5hbWVdO1xuICAgICAgICBpZiAoaWR4ID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExvY2FsIFZhcmlhYmxlIG5vdCBkZWZpbmVkOiBGdW5jdGlvbjogJHt0aGlzLmZ1bmN0aW9uTmFtZX0gbG9jYWw6ICR7bG9jYWxOYW1lfSBgKTtcbiAgICAgICAgcmV0dXJuIFsweDIwLCAuLi52YXJ1aW50MzIoIGlkeCApXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfcyhpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDhfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAwIDogX2FsaWduOyAgLy8gOCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzMSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDE2IGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDMyLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMTYgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MzMsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X2xvYWQzMl9zKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDIgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgzNCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpNjRfbG9hZDMyX3UoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDM1LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGk2NF9sb2FkKGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDMgOiBfYWxpZ247ICAvLyA2NCBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyOSwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cblxuICAgIGk2NF9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMztcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzcsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTY0X3N0b3JlMzIoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDI7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlMTYoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduLCBfY29kZVZhbCkge1xuICAgICAgICBsZXQgb2Zmc2V0LCBhbGlnbiwgY29kZVZhbDtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoX29mZnNldCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX29mZnNldDtcbiAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KF9hbGlnbikpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IDE7XG4gICAgICAgICAgICBjb2RlVmFsID0gX2FsaWduO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2NvZGVWYWwpKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBfb2Zmc2V0O1xuICAgICAgICAgICAgYWxpZ24gPSBfYWxpZ247XG4gICAgICAgICAgICBjb2RlVmFsID0gX2NvZGVWYWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAuLi5jb2RlVmFsLCAweDNkLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuXG4gICAgaTY0X3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2MsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQ4X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMCA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJjLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkOF91KGlkeENvZGUsIF9vZmZzZXQsIF9hbGlnbikge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBfb2Zmc2V0IHx8IDA7XG4gICAgICAgIGNvbnN0IGFsaWduID0gKF9hbGlnbiA9PT0gdW5kZWZpbmVkKSA/IDAgOiBfYWxpZ247ICAvLyAzMiBiaXRzIGFsaWdubWVudCBieSBkZWZhdWx0XG4gICAgICAgIHJldHVybiBbLi4uaWR4Q29kZSwgMHgyZCwgYWxpZ24sIC4uLnZhcnVpbnQzMihvZmZzZXQpXTtcbiAgICB9XG5cbiAgICBpMzJfbG9hZDE2X3MoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMSA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDJlLCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9sb2FkMTZfdShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24pIHtcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gX29mZnNldCB8fCAwO1xuICAgICAgICBjb25zdCBhbGlnbiA9IChfYWxpZ24gPT09IHVuZGVmaW5lZCkgPyAxIDogX2FsaWduOyAgLy8gMzIgYml0cyBhbGlnbm1lbnQgYnkgZGVmYXVsdFxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIDB4MmYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX2xvYWQoaWR4Q29kZSwgX29mZnNldCwgX2FsaWduKSB7XG4gICAgICAgIGNvbnN0IG9mZnNldCA9IF9vZmZzZXQgfHwgMDtcbiAgICAgICAgY29uc3QgYWxpZ24gPSAoX2FsaWduID09PSB1bmRlZmluZWQpID8gMiA6IF9hbGlnbjsgIC8vIDMyIGJpdHMgYWxpZ25tZW50IGJ5IGRlZmF1bHRcbiAgICAgICAgcmV0dXJuIFsuLi5pZHhDb2RlLCAweDI4LCBhbGlnbiwgLi4udmFydWludDMyKG9mZnNldCldO1xuICAgIH1cblxuICAgIGkzMl9zdG9yZShpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4MzYsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG5cbiAgICBpMzJfc3RvcmUxNihpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMTtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2IsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgaTMyX3N0b3JlOChpZHhDb2RlLCBfb2Zmc2V0LCBfYWxpZ24sIF9jb2RlVmFsKSB7XG4gICAgICAgIGxldCBvZmZzZXQsIGFsaWduLCBjb2RlVmFsO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShfb2Zmc2V0KSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfb2Zmc2V0O1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoX2FsaWduKSkge1xuICAgICAgICAgICAgb2Zmc2V0ID0gX29mZnNldDtcbiAgICAgICAgICAgIGFsaWduID0gMDtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfYWxpZ247XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShfY29kZVZhbCkpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IF9vZmZzZXQ7XG4gICAgICAgICAgICBhbGlnbiA9IF9hbGlnbjtcbiAgICAgICAgICAgIGNvZGVWYWwgPSBfY29kZVZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gWy4uLmlkeENvZGUsIC4uLmNvZGVWYWwsIDB4M2EsIGFsaWduLCAuLi52YXJ1aW50MzIob2Zmc2V0KV07XG4gICAgfVxuXG4gICAgY2FsbChmbk5hbWUsIC4uLmFyZ3MpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5tb2R1bGUuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGdW5jdGlvbiBub3QgZGVmaW5lZDogRnVuY3Rpb246ICR7Zm5OYW1lfWApO1xuICAgICAgICByZXR1cm4gWy4uLltdLmNvbmNhdCguLi5hcmdzKSwgMHgxMCwgLi4udmFydWludDMyKGlkeCldO1xuICAgIH1cblxuICAgIGNhbGxfaW5kaXJlY3QoZm5JZHgsIC4uLmFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIFsuLi5bXS5jb25jYXQoLi4uYXJncyksIC4uLmZuSWR4LCAweDExLCAwLCAwXTtcbiAgICB9XG5cbiAgICBpZihjb25kQ29kZSwgdGhlbkNvZGUsIGVsc2VDb2RlKSB7XG4gICAgICAgIGlmIChlbHNlQ29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIFsuLi5jb25kQ29kZSwgMHgwNCwgMHg0MCwgLi4udGhlbkNvZGUsIDB4MDUsIC4uLmVsc2VDb2RlLCAweDBiXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbLi4uY29uZENvZGUsIDB4MDQsIDB4NDAsIC4uLnRoZW5Db2RlLCAweDBiXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGJsb2NrKGJDb2RlKSB7IHJldHVybiBbMHgwMiwgMHg0MCwgLi4uYkNvZGUsIDB4MGJdOyB9XG4gICAgbG9vcCguLi5hcmdzKSB7XG4gICAgICAgIHJldHVybiBbMHgwMywgMHg0MCwgLi4uW10uY29uY2F0KC4uLlsuLi5hcmdzXSksIDB4MGJdO1xuICAgIH1cbiAgICBicl9pZihyZWxQYXRoLCBjb25kQ29kZSkgeyByZXR1cm4gWy4uLmNvbmRDb2RlLCAweDBkLCAuLi52YXJ1aW50MzIocmVsUGF0aCldOyB9XG4gICAgYnIocmVsUGF0aCkgeyByZXR1cm4gWzB4MGMsIC4uLnZhcnVpbnQzMihyZWxQYXRoKV07IH1cbiAgICByZXQockNvZGUpIHsgcmV0dXJuIFsuLi5yQ29kZSwgMHgwZl07IH1cbiAgICBkcm9wKGRDb2RlKSB7IHJldHVybiBbLi4uZENvZGUsICAweDFhXTsgfVxuXG4gICAgaTY0X2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDIsIC4uLnZhcmludDY0KG51bSldOyB9XG4gICAgaTMyX2NvbnN0KG51bSkgeyByZXR1cm4gWzB4NDEsIC4uLnZhcmludDMyKG51bSldOyB9XG5cblxuICAgIGk2NF9lcXoob3Bjb2RlKSB7IHJldHVybiBbLi4ub3Bjb2RlLCAweDUwXTsgfVxuICAgIGk2NF9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg1MV07IH1cbiAgICBpNjRfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTJdOyB9XG4gICAgaTY0X2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTNdOyB9XG4gICAgaTY0X2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTRdOyB9XG4gICAgaTY0X2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTVdOyB9XG4gICAgaTY0X2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTZdOyB9XG4gICAgaTY0X2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTddOyB9XG4gICAgaTY0X2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NThdOyB9XG4gICAgaTY0X2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NTldOyB9XG4gICAgaTY0X2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NWFdOyB9XG4gICAgaTY0X2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3Y107IH1cbiAgICBpNjRfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdkXTsgfVxuICAgIGk2NF9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4N2VdOyB9XG4gICAgaTY0X2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDdmXTsgfVxuICAgIGk2NF9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4MF07IH1cbiAgICBpNjRfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODFdOyB9XG4gICAgaTY0X3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDgyXTsgfVxuICAgIGk2NF9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODNdOyB9XG4gICAgaTY0X29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg0XTsgfVxuICAgIGk2NF94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODVdOyB9XG4gICAgaTY0X3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg4Nl07IH1cbiAgICBpNjRfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4ODddOyB9XG4gICAgaTY0X3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDg4XTsgfVxuICAgIGk2NF9leHRlbmRfaTMyX3Mob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4YWNdOyB9XG4gICAgaTY0X2V4dGVuZF9pMzJfdShvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhZF07IH1cbiAgICBpNjRfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDc5XTsgfVxuICAgIGk2NF9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4N2FdOyB9XG5cbiAgICBpMzJfZXF6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDQ1XTsgfVxuICAgIGkzMl9lcShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg0Nl07IH1cbiAgICBpMzJfbmUob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDddOyB9XG4gICAgaTMyX2x0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDhdOyB9XG4gICAgaTMyX2x0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NDldOyB9XG4gICAgaTMyX2d0X3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGFdOyB9XG4gICAgaTMyX2d0X3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGJdOyB9XG4gICAgaTMyX2xlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGNdOyB9XG4gICAgaTMyX2xlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGRdOyB9XG4gICAgaTMyX2dlX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGVdOyB9XG4gICAgaTMyX2dlX3Uob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NGZdOyB9XG4gICAgaTMyX2FkZChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2YV07IH1cbiAgICBpMzJfc3ViKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZiXTsgfVxuICAgIGkzMl9tdWwob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmNdOyB9XG4gICAgaTMyX2Rpdl9zKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDZkXTsgfVxuICAgIGkzMl9kaXZfdShvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg2ZV07IH1cbiAgICBpMzJfcmVtX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NmZdOyB9XG4gICAgaTMyX3JlbV91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcwXTsgfVxuICAgIGkzMl9hbmQob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzFdOyB9XG4gICAgaTMyX29yKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDcyXTsgfVxuICAgIGkzMl94b3Iob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzNdOyB9XG4gICAgaTMyX3NobChvcDFjb2RlLCBvcDJjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgLi4ub3AyY29kZSwgMHg3NF07IH1cbiAgICBpMzJfc2hyX3Mob3AxY29kZSwgb3AyY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIC4uLm9wMmNvZGUsIDB4NzVdOyB9XG4gICAgaTMyX3Nocl91KG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc2XTsgfVxuICAgIGkzMl9yb3RsKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc3XTsgfVxuICAgIGkzMl9yb3RyKG9wMWNvZGUsIG9wMmNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAuLi5vcDJjb2RlLCAweDc4XTsgfVxuICAgIGkzMl93cmFwX2k2NChvcDFjb2RlKSB7IHJldHVybiBbLi4ub3AxY29kZSwgMHhhN107IH1cbiAgICBpMzJfY2x6KG9wMWNvZGUpIHsgcmV0dXJuIFsuLi5vcDFjb2RlLCAweDY3XTsgfVxuICAgIGkzMl9jdHoob3AxY29kZSkgeyByZXR1cm4gWy4uLm9wMWNvZGUsIDB4NjhdOyB9XG5cbiAgICB1bnJlYWNoYWJsZSgpIHsgcmV0dXJuIFsgMHgwIF07IH1cblxuICAgIGN1cnJlbnRfbWVtb3J5KCkgeyByZXR1cm4gWyAweDNmLCAwXTsgfVxuXG4gICAgY29tbWVudCgpIHsgcmV0dXJuIFtdOyB9XG59XG5cbi8qXG4gICAgQ29weXJpZ2h0IDIwMTkgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB3YXNtYnVpbGRlclxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICB3YXNtYnVpbGRlciBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCB3YXNtYnVpbGRlci4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cblxuY29uc3QgdHlwZUNvZGVzID0ge1xuICAgIFwiaTMyXCI6IDB4N2YsXG4gICAgXCJpNjRcIjogMHg3ZSxcbiAgICBcImYzMlwiOiAweDdkLFxuICAgIFwiZjY0XCI6IDB4N2MsXG4gICAgXCJhbnlmdW5jXCI6IDB4NzAsXG4gICAgXCJmdW5jXCI6IDB4NjAsXG4gICAgXCJlbXB0eWJsb2NrXCI6IDB4NDBcbn07XG5cblxuY2xhc3MgRnVuY3Rpb25CdWlsZGVyIHtcblxuICAgIGNvbnN0cnVjdG9yIChtb2R1bGUsIGZuTmFtZSwgZm5UeXBlLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgaWYgKGZuVHlwZSA9PSBcImltcG9ydFwiKSB7XG4gICAgICAgICAgICB0aGlzLmZuVHlwZSA9IFwiaW1wb3J0XCI7XG4gICAgICAgICAgICB0aGlzLm1vZHVsZU5hbWUgPSBtb2R1bGVOYW1lO1xuICAgICAgICAgICAgdGhpcy5maWVsZE5hbWUgPSBmaWVsZE5hbWU7XG4gICAgICAgIH0gZWxzZSBpZiAoZm5UeXBlID09IFwiaW50ZXJuYWxcIikge1xuICAgICAgICAgICAgdGhpcy5mblR5cGUgPSBcImludGVybmFsXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGZ1bmN0aW9uIGZuVHlwZTogXCIgKyBmblR5cGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kdWxlID0gbW9kdWxlO1xuICAgICAgICB0aGlzLmZuTmFtZSA9IGZuTmFtZTtcbiAgICAgICAgdGhpcy5wYXJhbXMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZSA9IHt9O1xuICAgICAgICB0aGlzLmNvZGUgPSBbXTtcbiAgICAgICAgdGhpcy5yZXR1cm5UeXBlID0gbnVsbDtcbiAgICAgICAgdGhpcy5uZXh0TG9jYWwgPTA7XG4gICAgfVxuXG4gICAgYWRkUGFyYW0ocGFyYW1OYW1lLCBwYXJhbVR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxJZHhCeU5hbWVbcGFyYW1OYW1lXSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcGFyYW0gYWxyZWFkeSBleGlzdHMuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfSwgUGFyYW06ICR7cGFyYW1OYW1lfSBgKTtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5uZXh0TG9jYWwrKztcbiAgICAgICAgdGhpcy5sb2NhbElkeEJ5TmFtZVtwYXJhbU5hbWVdID0gaWR4O1xuICAgICAgICB0aGlzLnBhcmFtcy5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6IHBhcmFtVHlwZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRMb2NhbChsb2NhbE5hbWUsIGxvY2FsVHlwZSwgX2xlbmd0aCkge1xuICAgICAgICBjb25zdCBsZW5ndGggPSBfbGVuZ3RoIHx8IDE7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsSWR4QnlOYW1lW2xvY2FsTmFtZV0pXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGxvY2FsIGFscmVhZHkgZXhpc3RzLiBGdW5jdGlvbjogJHt0aGlzLmZuTmFtZX0sIFBhcmFtOiAke2xvY2FsTmFtZX0gYCk7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMubmV4dExvY2FsKys7XG4gICAgICAgIHRoaXMubG9jYWxJZHhCeU5hbWVbbG9jYWxOYW1lXSA9IGlkeDtcbiAgICAgICAgdGhpcy5sb2NhbHMucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFR5cGUsXG4gICAgICAgICAgICBsZW5ndGg6IGxlbmd0aFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBzZXRSZXR1cm5UeXBlKHJldHVyblR5cGUpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVHlwZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgcmV0dXJuVHlwZSBhbHJlYWR5IGRlZmluZWQuIEZ1bmN0aW9uOiAke3RoaXMuZm5OYW1lfWApO1xuICAgICAgICB0aGlzLnJldHVyblR5cGUgPSByZXR1cm5UeXBlO1xuICAgIH1cblxuICAgIGdldFNpZ25hdHVyZSgpIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gWy4uLnZhcnVpbnQzMih0aGlzLnBhcmFtcy5sZW5ndGgpLCAuLi50aGlzLnBhcmFtcy5tYXAoKHApID0+IHR5cGVDb2Rlc1twLnR5cGVdKV07XG4gICAgICAgIGNvbnN0IHJldHVybnMgPSB0aGlzLnJldHVyblR5cGUgPyBbMHgwMSwgdHlwZUNvZGVzW3RoaXMucmV0dXJuVHlwZV1dIDogWzBdO1xuICAgICAgICByZXR1cm4gWzB4NjAsIC4uLnBhcmFtcywgLi4ucmV0dXJuc107XG4gICAgfVxuXG4gICAgZ2V0Qm9keSgpIHtcbiAgICAgICAgY29uc3QgbG9jYWxzID0gdGhpcy5sb2NhbHMubWFwKChsKSA9PiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIobC5sZW5ndGgpLFxuICAgICAgICAgICAgdHlwZUNvZGVzW2wudHlwZV1cbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgYm9keSA9IFtcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmxvY2Fscy5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uW10uY29uY2F0KC4uLmxvY2FscyksXG4gICAgICAgICAgICAuLi50aGlzLmNvZGUsXG4gICAgICAgICAgICAweDBiXG4gICAgICAgIF07XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi52YXJ1aW50MzIoYm9keS5sZW5ndGgpLFxuICAgICAgICAgICAgLi4uYm9keVxuICAgICAgICBdO1xuICAgIH1cblxuICAgIGFkZENvZGUoLi4uY29kZSkge1xuICAgICAgICB0aGlzLmNvZGUucHVzaCguLi5bXS5jb25jYXQoLi4uWy4uLmNvZGVdKSk7XG4gICAgfVxuXG4gICAgZ2V0Q29kZUJ1aWxkZXIoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkZXIodGhpcyk7XG4gICAgfVxufVxuXG4vKlxuICAgIENvcHlyaWdodCAyMDE5IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygd2FzbWJ1aWxkZXJcblxuICAgIHdhc21idWlsZGVyIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgd2FzbWJ1aWxkZXIgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggd2FzbWJ1aWxkZXIuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5cbmNsYXNzIE1vZHVsZUJ1aWxkZXIge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zID0gW107XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zID0gMDtcbiAgICAgICAgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnMgPTA7XG4gICAgICAgIHRoaXMubWVtb3J5ID0ge1xuICAgICAgICAgICAgcGFnZXNTaXplOiAxLFxuICAgICAgICAgICAgbW9kdWxlTmFtZTogXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogXCJtZW1vcnlcIlxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmZyZWUgPSA4O1xuICAgICAgICB0aGlzLmRhdGFzID0gW107XG4gICAgICAgIHRoaXMubW9kdWxlcyA9IHt9O1xuICAgICAgICB0aGlzLmV4cG9ydHMgPSBbXTtcbiAgICAgICAgdGhpcy5mdW5jdGlvbnNUYWJsZSA9IFtdO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICB0aGlzLl9zZXRTaWduYXR1cmVzKCk7XG4gICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShbXG4gICAgICAgICAgICAuLi51MzIoMHg2ZDczNjEwMCksXG4gICAgICAgICAgICAuLi51MzIoMSksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZFR5cGUoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkSW1wb3J0KCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uRGVjbGFyYXRpb25zKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEZ1bmN0aW9uc1RhYmxlKCksXG4gICAgICAgICAgICAuLi50aGlzLl9idWlsZEV4cG9ydHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkRWxlbWVudHMoKSxcbiAgICAgICAgICAgIC4uLnRoaXMuX2J1aWxkQ29kZSgpLFxuICAgICAgICAgICAgLi4udGhpcy5fYnVpbGREYXRhKClcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb24oZm5OYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9ucy5sZW5ndGg7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25JZHhCeU5hbWVbZm5OYW1lXSA9IGlkeDtcblxuICAgICAgICB0aGlzLmZ1bmN0aW9ucy5wdXNoKG5ldyBGdW5jdGlvbkJ1aWxkZXIodGhpcywgZm5OYW1lLCBcImludGVybmFsXCIpKTtcblxuICAgICAgICB0aGlzLm5JbnRlcm5hbEZ1bmN0aW9ucysrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBhZGRJaW1wb3J0RnVuY3Rpb24oZm5OYW1lLCBtb2R1bGVOYW1lLCBfZmllbGROYW1lKSB7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSAhPT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gYWxyZWFkeSBkZWZpbmVkOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBpZiAoICAodGhpcy5mdW5jdGlvbnMubGVuZ3RoPjApXG4gICAgICAgICAgICAmJih0aGlzLmZ1bmN0aW9uc1t0aGlzLmZ1bmN0aW9ucy5sZW5ndGgtMV0udHlwZSA9PSBcImludGVybmFsXCIpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbXBvcnQgZnVuY3Rpb25zIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGludGVybmFsOiAke2ZuTmFtZX1gKTtcblxuICAgICAgICBsZXQgZmllbGROYW1lID0gX2ZpZWxkTmFtZSB8fCBmbk5hbWU7XG5cbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5mdW5jdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV0gPSBpZHg7XG5cbiAgICAgICAgdGhpcy5mdW5jdGlvbnMucHVzaChuZXcgRnVuY3Rpb25CdWlsZGVyKHRoaXMsIGZuTmFtZSwgXCJpbXBvcnRcIiwgbW9kdWxlTmFtZSwgZmllbGROYW1lKSk7XG5cbiAgICAgICAgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsrO1xuICAgICAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbaWR4XTtcbiAgICB9XG5cbiAgICBzZXRNZW1vcnkocGFnZXNTaXplLCBtb2R1bGVOYW1lLCBmaWVsZE5hbWUpIHtcbiAgICAgICAgdGhpcy5tZW1vcnkgPSB7XG4gICAgICAgICAgICBwYWdlc1NpemU6IHBhZ2VzU2l6ZSxcbiAgICAgICAgICAgIG1vZHVsZU5hbWU6IG1vZHVsZU5hbWUgfHwgXCJlbnZcIixcbiAgICAgICAgICAgIGZpZWxkTmFtZTogZmllbGROYW1lIHx8IFwibWVtb3J5XCJcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBleHBvcnRGdW5jdGlvbihmbk5hbWUsIF9leHBvcnROYW1lKSB7XG4gICAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBfZXhwb3J0TmFtZSB8fCBmbk5hbWU7XG4gICAgICAgIGlmICh0eXBlb2YodGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtmbk5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRnVuY3Rpb24gbm90IGRlZmluZWQ6ICR7Zm5OYW1lfWApO1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIGlmIChleHBvcnROYW1lICE9IGZuTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbklkeEJ5TmFtZVtleHBvcnROYW1lXSA9IGlkeDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4cG9ydHMucHVzaCh7XG4gICAgICAgICAgICBleHBvcnROYW1lOiBleHBvcnROYW1lLFxuICAgICAgICAgICAgaWR4OiBpZHhcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWRkRnVuY3Rpb25Ub1RhYmxlKGZuTmFtZSkge1xuICAgICAgICBjb25zdCBpZHggPSB0aGlzLmZ1bmN0aW9uSWR4QnlOYW1lW2ZuTmFtZV07XG4gICAgICAgIHRoaXMuZnVuY3Rpb25zVGFibGUucHVzaChpZHgpO1xuICAgIH1cblxuICAgIGFkZERhdGEob2Zmc2V0LCBieXRlcykge1xuICAgICAgICB0aGlzLmRhdGFzLnB1c2goe1xuICAgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICAgICAgICBieXRlczogYnl0ZXNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWxsb2MoYSwgYikge1xuICAgICAgICBsZXQgc2l6ZTtcbiAgICAgICAgbGV0IGJ5dGVzO1xuICAgICAgICBpZiAoKEFycmF5LmlzQXJyYXkoYSkgfHwgQXJyYXlCdWZmZXIuaXNWaWV3KGEpKSAmJiAodHlwZW9mKGIpID09PSBcInVuZGVmaW5lZFwiKSkge1xuICAgICAgICAgICAgc2l6ZSA9IGEubGVuZ3RoO1xuICAgICAgICAgICAgYnl0ZXMgPSBhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2l6ZSA9IGE7XG4gICAgICAgICAgICBieXRlcyA9IGI7XG4gICAgICAgIH1cbiAgICAgICAgc2l6ZSA9ICgoKHNpemUtMSk+PjMpICsxKTw8MzsgICAgICAgLy8gQWxpZ24gdG8gNjQgYml0cy5cbiAgICAgICAgY29uc3QgcCA9IHRoaXMuZnJlZTtcbiAgICAgICAgdGhpcy5mcmVlICs9IHNpemU7XG4gICAgICAgIGlmIChieXRlcykge1xuICAgICAgICAgICAgdGhpcy5hZGREYXRhKHAsIGJ5dGVzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcDtcbiAgICB9XG5cbiAgICBhbGxvY1N0cmluZyhzKSB7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgZ2xvYmFsVGhpcy5UZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCB1aW50OGFycmF5ID0gZW5jb2Rlci5lbmNvZGUocyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbG9jKFsuLi51aW50OGFycmF5LCAwXSk7XG4gICAgfVxuXG4gICAgX3NldFNpZ25hdHVyZXMoKSB7XG4gICAgICAgIHRoaXMuc2lnbmF0dXJlcyA9IFtdO1xuICAgICAgICBjb25zdCBzaWduYXR1cmVJZHhCeU5hbWUgPSB7fTtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoPjApIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHRoaXMuZnVuY3Rpb25zW3RoaXMuZnVuY3Rpb25zVGFibGVbMF1dLmdldFNpZ25hdHVyZSgpO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTmFtZSA9IFwic19cIit0b0hleFN0cmluZyhzaWduYXR1cmUpO1xuICAgICAgICAgICAgc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdID0gMDtcbiAgICAgICAgICAgIHRoaXMuc2lnbmF0dXJlcy5wdXNoKHNpZ25hdHVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuZnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSB0aGlzLmZ1bmN0aW9uc1tpXS5nZXRTaWduYXR1cmUoKTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZU5hbWUgPSBcInNfXCIrdG9IZXhTdHJpbmcoc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Yoc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdKSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNpZ25hdHVyZUlkeEJ5TmFtZVtzaWduYXR1cmVOYW1lXSA9IHRoaXMuc2lnbmF0dXJlcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdGhpcy5zaWduYXR1cmVzLnB1c2goc2lnbmF0dXJlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4ID0gc2lnbmF0dXJlSWR4QnlOYW1lW3NpZ25hdHVyZU5hbWVdO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBfYnVpbGRTZWN0aW9uKHNlY3Rpb25UeXBlLCBzZWN0aW9uKSB7XG4gICAgICAgIHJldHVybiBbc2VjdGlvblR5cGUsIC4uLnZhcnVpbnQzMihzZWN0aW9uLmxlbmd0aCksIC4uLnNlY3Rpb25dO1xuICAgIH1cblxuICAgIF9idWlsZFR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idWlsZFNlY3Rpb24oXG4gICAgICAgICAgICAweDAxLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLnNpZ25hdHVyZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bXS5jb25jYXQoLi4udGhpcy5zaWduYXR1cmVzKVxuICAgICAgICAgICAgXVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZEltcG9ydCgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5Lm1vZHVsZU5hbWUpLFxuICAgICAgICAgICAgLi4uc3RyaW5nKHRoaXMubWVtb3J5LmZpZWxkTmFtZSksXG4gICAgICAgICAgICAweDAyLFxuICAgICAgICAgICAgMHgwMCwgICAvL0ZsYWdzIG5vIGluaXQgdmFsdWFcbiAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLm1lbW9yeS5wYWdlc1NpemUpXG4gICAgICAgIF0pO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9uczsgaSsrKSB7XG4gICAgICAgICAgICBlbnRyaWVzLnB1c2goW1xuICAgICAgICAgICAgICAgIC4uLnN0cmluZyh0aGlzLmZ1bmN0aW9uc1tpXS5tb2R1bGVOYW1lKSxcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5mdW5jdGlvbnNbaV0uZmllbGROYW1lKSxcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1tpXS5zaWduYXR1cmVJZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwMixcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRnVuY3Rpb25EZWNsYXJhdGlvbnMoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT10aGlzLm5JbXBvcnRGdW5jdGlvbnM7IGk8IHRoaXMubkltcG9ydEZ1bmN0aW9ucyArIHRoaXMubkludGVybmFsRnVuY3Rpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGVudHJpZXMucHVzaCguLi52YXJ1aW50MzIodGhpcy5mdW5jdGlvbnNbaV0uc2lnbmF0dXJlSWR4KSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDMsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKGVudHJpZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi5bLi4uZW50cmllc11cbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRGdW5jdGlvbnNUYWJsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDQsXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLFxuICAgICAgICAgICAgICAgIDB4NzAsIDAsIC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlLmxlbmd0aClcbiAgICAgICAgICAgIF1cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBfYnVpbGRFbGVtZW50cygpIHtcbiAgICAgICAgaWYgKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8dGhpcy5mdW5jdGlvbnNUYWJsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKC4uLnZhcnVpbnQzMih0aGlzLmZ1bmN0aW9uc1RhYmxlW2ldKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MDksXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKDEpLCAgICAgIC8vIDEgZW50cnlcbiAgICAgICAgICAgICAgICAuLi52YXJ1aW50MzIoMCksICAgICAgLy8gVGFibGUgKDAgaW4gTVZQKVxuICAgICAgICAgICAgICAgIDB4NDEsICAgICAgICAgICAgICAgICAgICAgICAvLyBvZmZzZXQgMFxuICAgICAgICAgICAgICAgIC4uLnZhcmludDMyKDApLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZnVuY3Rpb25zVGFibGUubGVuZ3RoKSwgLy8gTnVtYmVyIG9mIGVsZW1lbnRzXG4gICAgICAgICAgICAgICAgLi4uWy4uLmVudHJpZXNdXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkRXhwb3J0cygpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8IHRoaXMuZXhwb3J0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAuLi5zdHJpbmcodGhpcy5leHBvcnRzW2ldLmV4cG9ydE5hbWUpLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZXhwb3J0c1tpXS5pZHgpXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fYnVpbGRTZWN0aW9uKFxuICAgICAgICAgICAgMHgwNyxcbiAgICAgICAgICAgIHZhcnVpbnQzMihlbnRyaWVzLmxlbmd0aCkuY29uY2F0KC4uLmVudHJpZXMpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgX2J1aWxkQ29kZSgpIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPXRoaXMubkltcG9ydEZ1bmN0aW9uczsgaTwgdGhpcy5uSW1wb3J0RnVuY3Rpb25zICsgdGhpcy5uSW50ZXJuYWxGdW5jdGlvbnM7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKHRoaXMuZnVuY3Rpb25zW2ldLmdldEJvZHkoKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGEsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIF9idWlsZERhdGEoKSB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBbXTtcbiAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICAweDQxLFxuICAgICAgICAgICAgMHgwMCxcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAweDA0LFxuICAgICAgICAgICAgLi4udTMyKHRoaXMuZnJlZSlcbiAgICAgICAgXSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTwgdGhpcy5kYXRhcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtcbiAgICAgICAgICAgICAgICAweDAwLFxuICAgICAgICAgICAgICAgIDB4NDEsXG4gICAgICAgICAgICAgICAgLi4udmFyaW50MzIodGhpcy5kYXRhc1tpXS5vZmZzZXQpLFxuICAgICAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICAgICAgLi4udmFydWludDMyKHRoaXMuZGF0YXNbaV0uYnl0ZXMubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLmRhdGFzW2ldLmJ5dGVzLFxuICAgICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkU2VjdGlvbihcbiAgICAgICAgICAgIDB4MGIsXG4gICAgICAgICAgICB2YXJ1aW50MzIoZW50cmllcy5sZW5ndGgpLmNvbmNhdCguLi5lbnRyaWVzKVxuICAgICAgICApO1xuICAgIH1cblxufVxuXG5nbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBpZiAoKCFzaW5nbGVUaHJlYWQpICYmIChnbG9iYWxUaGlzLmN1cnZlX2JuMTI4KSkgcmV0dXJuIGdsb2JhbFRoaXMuY3VydmVfYm4xMjg7XG5cbiAgICBjb25zdCBtb2R1bGVCdWlsZGVyID0gbmV3IE1vZHVsZUJ1aWxkZXIoKTtcbiAgICBtb2R1bGVCdWlsZGVyLnNldE1lbW9yeSgyNSk7XG4gICAgYnVpbGRCbjEyOCQxKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgaWYgKHBsdWdpbnMpIHBsdWdpbnMobW9kdWxlQnVpbGRlcik7XG5cbiAgICBjb25zdCBibjEyOHdhc20gPSB7fTtcblxuICAgIGJuMTI4d2FzbS5jb2RlID0gbW9kdWxlQnVpbGRlci5idWlsZCgpO1xuICAgIGJuMTI4d2FzbS5wcSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mMW0ucHE7XG4gICAgYm4xMjh3YXNtLnByID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmZybS5wcTtcbiAgICBibjEyOHdhc20ucEcxZ2VuID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWdlbjtcbiAgICBibjEyOHdhc20ucEcxemVybyA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzF6ZXJvO1xuICAgIGJuMTI4d2FzbS5wRzFiID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnBHMWI7XG4gICAgYm4xMjh3YXNtLnBHMmdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJnZW47XG4gICAgYm4xMjh3YXNtLnBHMnplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucEcyemVybztcbiAgICBibjEyOHdhc20ucEcyYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wRzJiO1xuICAgIGJuMTI4d2FzbS5wT25lVCA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5wT25lVDtcbiAgICBibjEyOHdhc20ucHJlUFNpemUgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucHJlUFNpemU7XG4gICAgYm4xMjh3YXNtLnByZVFTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJuMTI4LnByZVFTaXplO1xuICAgIGJuMTI4d2FzbS5uOHEgPSAzMjtcbiAgICBibjEyOHdhc20ubjhyID0gMzI7XG4gICAgYm4xMjh3YXNtLnEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYm4xMjgucTtcbiAgICBibjEyOHdhc20uciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibjEyOC5yO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJuMTI4XCIsXG4gICAgICAgIHdhc206IGJuMTI4d2FzbSxcbiAgICAgICAgcTogZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4Njk2MzExMTU3Mjk3ODIzNjYyNjg5MDM3ODk0NjQ1MjI2MjA4NTgzXCIpLFxuICAgICAgICByOiBlKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIiksXG4gICAgICAgIG44cTogMzIsXG4gICAgICAgIG44cjogMzIsXG4gICAgICAgIGNvZmFjdG9yRzI6IGUoXCIzMDY0NGU3MmUxMzFhMDI5Yjg1MDQ1YjY4MTgxNTg1ZTA2Y2VlY2RhNTcyYTI0ODkzNDVmMjI5OWMwZjlmYThkXCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JuMTI4ID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibjEyOCA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IG51bGw7XG5cbmFzeW5jIGZ1bmN0aW9uIGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKSB7XG4gICAgaWYgKCghc2luZ2xlVGhyZWFkKSAmJiAoZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSkpIHJldHVybiBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxO1xuXG4gICAgY29uc3QgbW9kdWxlQnVpbGRlciA9IG5ldyBNb2R1bGVCdWlsZGVyKCk7XG4gICAgbW9kdWxlQnVpbGRlci5zZXRNZW1vcnkoMjUpO1xuICAgIGJ1aWxkQmxzMTIzODEkMShtb2R1bGVCdWlsZGVyKTtcblxuICAgIGlmIChwbHVnaW5zKSBwbHVnaW5zKG1vZHVsZUJ1aWxkZXIpO1xuXG4gICAgY29uc3QgYmxzMTIzODF3YXNtID0ge307XG5cbiAgICBibHMxMjM4MXdhc20uY29kZSA9IG1vZHVsZUJ1aWxkZXIuYnVpbGQoKTtcbiAgICBibHMxMjM4MXdhc20ucHEgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuZjFtLnBxO1xuICAgIGJsczEyMzgxd2FzbS5wciA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5mcm0ucHE7XG4gICAgYmxzMTIzODF3YXNtLnBHMWdlbiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFnZW47XG4gICAgYmxzMTIzODF3YXNtLnBHMXplcm8gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcxemVybztcbiAgICBibHMxMjM4MXdhc20ucEcxYiA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wRzFiO1xuICAgIGJsczEyMzgxd2FzbS5wRzJnZW4gPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyZ2VuO1xuICAgIGJsczEyMzgxd2FzbS5wRzJ6ZXJvID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnBHMnplcm87XG4gICAgYmxzMTIzODF3YXNtLnBHMmIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucEcyYjtcbiAgICBibHMxMjM4MXdhc20ucE9uZVQgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucE9uZVQ7XG4gICAgYmxzMTIzODF3YXNtLnByZVBTaXplID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnByZVBTaXplO1xuICAgIGJsczEyMzgxd2FzbS5wcmVRU2l6ZSA9IG1vZHVsZUJ1aWxkZXIubW9kdWxlcy5ibHMxMjM4MS5wcmVRU2l6ZTtcbiAgICBibHMxMjM4MXdhc20ubjhxID0gNDg7XG4gICAgYmxzMTIzODF3YXNtLm44ciA9IDMyO1xuICAgIGJsczEyMzgxd2FzbS5xID0gbW9kdWxlQnVpbGRlci5tb2R1bGVzLmJsczEyMzgxLnE7XG4gICAgYmxzMTIzODF3YXNtLnIgPSBtb2R1bGVCdWlsZGVyLm1vZHVsZXMuYmxzMTIzODEucjtcblxuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICBuYW1lOiBcImJsczEyMzgxXCIsXG4gICAgICAgIHdhc206IGJsczEyMzgxd2FzbSxcbiAgICAgICAgcTogZShcIjFhMDExMWVhMzk3ZmU2OWE0YjFiYTdiNjQzNGJhY2Q3NjQ3NzRiODRmMzg1MTJiZjY3MzBkMmEwZjZiMGY2MjQxZWFiZmZmZWIxNTNmZmZmYjlmZWZmZmZmZmZmYWFhYlwiLCAxNiksXG4gICAgICAgIHI6IGUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KSxcbiAgICAgICAgbjhxOiA0OCxcbiAgICAgICAgbjhyOiAzMixcbiAgICAgICAgY29mYWN0b3JHMTogZShcIjB4Mzk2YzhjMDA1NTU1ZTE1NjhjMDBhYWFiMDAwMGFhYWJcIiwgMTYpLFxuICAgICAgICBjb2ZhY3RvckcyOiBlKFwiMHg1ZDU0M2E5NTQxNGU3ZjEwOTFkNTA3OTI4NzZhMjAyY2Q5MWRlNDU0NzA4NWFiYWE2OGEyMDViMmU1YTdkZGZhNjI4ZjFjYjRkOWU4MmVmMjE1MzdlMjkzYTY2OTFhZTE2MTZlYzZlNzg2ZjBjNzBjZjFjMzhlMzFjNzIzOGU1XCIsIDE2KSxcbiAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQgPyB0cnVlIDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBidWlsZEVuZ2luZShwYXJhbXMpO1xuICAgIGN1cnZlLnRlcm1pbmF0ZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFwYXJhbXMuc2luZ2xlVGhyZWFkKSB7XG4gICAgICAgICAgICBnbG9iYWxUaGlzLmN1cnZlX2JsczEyMzgxID0gbnVsbDtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMudG0udGVybWluYXRlKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFzaW5nbGVUaHJlYWQpIHtcbiAgICAgICAgZ2xvYmFsVGhpcy5jdXJ2ZV9ibHMxMjM4MSA9IGN1cnZlO1xuICAgIH1cblxuICAgIHJldHVybiBjdXJ2ZTtcbn1cblxuY29uc3QgYmxzMTIzODFyID0gZShcIjczZWRhNzUzMjk5ZDdkNDgzMzM5ZDgwODA5YTFkODA1NTNiZGE0MDJmZmZlNWJmZWZmZmZmZmZmMDAwMDAwMDFcIiwgMTYpO1xuY29uc3QgYm4xMjhyID0gZShcIjIxODg4MjQyODcxODM5Mjc1MjIyMjQ2NDA1NzQ1MjU3Mjc1MDg4NTQ4MzY0NDAwNDE2MDM0MzQzNjk4MjA0MTg2NTc1ODA4NDk1NjE3XCIpO1xuXG5jb25zdCBibHMxMjM4MXEgPSBlKFwiMWEwMTExZWEzOTdmZTY5YTRiMWJhN2I2NDM0YmFjZDc2NDc3NGI4NGYzODUxMmJmNjczMGQyYTBmNmIwZjYyNDFlYWJmZmZlYjE1M2ZmZmZiOWZlZmZmZmZmZmZhYWFiXCIsIDE2KTtcbmNvbnN0IGJuMTI4cSA9IGUoXCIyMTg4ODI0Mjg3MTgzOTI3NTIyMjI0NjQwNTc0NTI1NzI3NTA4ODY5NjMxMTE1NzI5NzgyMzY2MjY4OTAzNzg5NDY0NTIyNjIwODU4M1wiKTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VydmVGcm9tUihyLCBzaW5nbGVUaHJlYWQsIHBsdWdpbnMpIHtcbiAgICBsZXQgY3VydmU7XG4gICAgaWYgKGVxKHIsIGJuMTI4cikpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJuMTI4KHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIGlmIChlcShyLCBibHMxMjM4MXIpKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbHMxMjM4MShzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ3VydmUgbm90IHN1cHBvcnRlZDogJHt0b1N0cmluZyhyKX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21RKHEsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBpZiAoZXEocSwgYm4xMjhxKSkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQm4xMjgoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2UgaWYgKGVxKHEsIGJsczEyMzgxcSkpIHtcbiAgICAgICAgY3VydmUgPSBhd2FpdCBidWlsZEJsczEyMzgxKHNpbmdsZVRocmVhZCwgcGx1Z2lucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDdXJ2ZSBub3Qgc3VwcG9ydGVkOiAke3RvU3RyaW5nKHEsIDE2KX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21OYW1lKG5hbWUsIHNpbmdsZVRocmVhZCwgcGx1Z2lucykge1xuICAgIGxldCBjdXJ2ZTtcbiAgICBjb25zdCBub3JtTmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSk7XG4gICAgaWYgKFtcIkJOMTI4XCIsIFwiQk4yNTRcIiwgXCJBTFRCTjEyOFwiXS5pbmRleE9mKG5vcm1OYW1lKSA+PSAwKSB7XG4gICAgICAgIGN1cnZlID0gYXdhaXQgYnVpbGRCbjEyOChzaW5nbGVUaHJlYWQsIHBsdWdpbnMpO1xuICAgIH0gZWxzZSBpZiAoW1wiQkxTMTIzODFcIl0uaW5kZXhPZihub3JtTmFtZSkgPj0gMCkge1xuICAgICAgICBjdXJ2ZSA9IGF3YWl0IGJ1aWxkQmxzMTIzODEoc2luZ2xlVGhyZWFkLCBwbHVnaW5zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEN1cnZlIG5vdCBzdXBwb3J0ZWQ6ICR7bmFtZX1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnZlO1xuXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuKSB7XG4gICAgICAgIHJldHVybiBuLnRvVXBwZXJDYXNlKCkubWF0Y2goL1tBLVphLXowLTldKy9nKS5qb2luKFwiXCIpO1xuICAgIH1cblxufVxuXG5jb25zdCBTY2FsYXI9X1NjYWxhcjtcbmNvbnN0IHV0aWxzID0gX3V0aWxzO1xuXG5leHBvcnQgeyBCaWdCdWZmZXIsIENoYUNoYSwgRUMsIFpxRmllbGQgYXMgRjFGaWVsZCwgRjJGaWVsZCwgRjNGaWVsZCwgUG9sRmllbGQsIFNjYWxhciwgWnFGaWVsZCwgYnVpbGRCbHMxMjM4MSwgYnVpbGRCbjEyOCwgZ2V0Q3VydmVGcm9tTmFtZSwgZ2V0Q3VydmVGcm9tUSwgZ2V0Q3VydmVGcm9tUiwgdXRpbHMgfTtcbiIsImNvbnN0IFNVQkFSUkFZX1NJWkUgPSAweDQwMDAwO1xuXG5jb25zdCBCaWdBcnJheUhhbmRsZXIgPSB7XG4gICAgZ2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcbiAgICAgICAgaWYgKCFpc05hTihwcm9wKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9iai5nZXRFbGVtZW50KHByb3ApO1xuICAgICAgICB9IGVsc2UgcmV0dXJuIG9ialtwcm9wXTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24ob2JqLCBwcm9wLCB2YWx1ZSkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLnNldEVsZW1lbnQocHJvcCwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgb2JqW3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmNsYXNzIF9CaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IgKGluaXRTaXplKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gaW5pdFNpemUgfHwgMDtcbiAgICAgICAgdGhpcy5hcnIgPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGluaXRTaXplOyBpKz1TVUJBUlJBWV9TSVpFKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpL1NVQkFSUkFZX1NJWkVdID0gbmV3IEFycmF5KE1hdGgubWluKFNVQkFSUkFZX1NJWkUsIGluaXRTaXplIC0gaSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBwdXNoICgpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50ICh0aGlzLmxlbmd0aCwgYXJndW1lbnRzW2ldKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNsaWNlIChmLCB0KSB7XG4gICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheSh0LWYpO1xuICAgICAgICBmb3IgKGxldCBpPWY7IGk8IHQ7IGkrKykgYXJyW2ktZl0gPSB0aGlzLmdldEVsZW1lbnQoaSk7XG4gICAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICAgIGdldEVsZW1lbnQoaWR4KSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJyW2lkeDFdID8gdGhpcy5hcnJbaWR4MV1baWR4Ml0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldEVsZW1lbnQoaWR4LCB2YWx1ZSkge1xuICAgICAgICBpZHggPSBwYXJzZUludChpZHgpO1xuICAgICAgICBjb25zdCBpZHgxID0gTWF0aC5mbG9vcihpZHggLyBTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgaWYgKCF0aGlzLmFycltpZHgxXSkge1xuICAgICAgICAgICAgdGhpcy5hcnJbaWR4MV0gPSBuZXcgQXJyYXkoU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaWR4MiA9IGlkeCAlIFNVQkFSUkFZX1NJWkU7XG4gICAgICAgIHRoaXMuYXJyW2lkeDFdW2lkeDJdID0gdmFsdWU7XG4gICAgICAgIGlmIChpZHggPj0gdGhpcy5sZW5ndGgpIHRoaXMubGVuZ3RoID0gaWR4KzE7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBnZXRLZXlzKCkge1xuICAgICAgICBjb25zdCBuZXdBID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx0aGlzLmFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYXJyW2ldKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPHRoaXMuYXJyW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcnJbaV1bal0gIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0EucHVzaChpKlNVQkFSUkFZX1NJWkUraik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0E7XG4gICAgfVxufVxuXG5jbGFzcyBCaWdBcnJheSB7XG4gICAgY29uc3RydWN0b3IoIGluaXRTaXplICkge1xuICAgICAgICBjb25zdCBvYmogPSBuZXcgX0JpZ0FycmF5KGluaXRTaXplKTtcbiAgICAgICAgY29uc3QgZXh0T2JqID0gbmV3IFByb3h5KG9iaiwgQmlnQXJyYXlIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIGV4dE9iajtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEJpZ0FycmF5O1xuIiwiaW1wb3J0IHtGMUZpZWxkLCBnZXRDdXJ2ZUZyb21SfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgIEJpZ0FycmF5IGZyb20gXCJAaWRlbjMvYmlnYXJyYXlcIjtcbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuXG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0hFQURFUl9TRUNUSU9OID0gMTtcbmV4cG9ydCBjb25zdCBSMUNTX0ZJTEVfQ09OU1RSQUlOVFNfU0VDVElPTiA9IDI7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX1dJUkUyTEFCRUxJRF9TRUNUSU9OID0gMztcbmV4cG9ydCBjb25zdCBSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX0xJU1RfU0VDVElPTiA9IDQ7XG5leHBvcnQgY29uc3QgUjFDU19GSUxFX0NVU1RPTV9HQVRFU19VU0VTX1NFQ1RJT04gPSA1O1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZFIxY3NIZWFkZXIoZmQsc2VjdGlvbnMsc2luZ2xlVGhyZWFkKSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBzaW5nbGVUaHJlYWQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgb3B0aW9ucyA9IHNpbmdsZVRocmVhZDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzaW5nbGVUaHJlYWQgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb3B0aW9ucz0ge1xuICAgICAgICAgICAgc2luZ2xlVGhyZWFkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgICAgc2luZ2xlVGhyZWFkOiBzaW5nbGVUaHJlYWQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzID0ge307XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCAxKTtcbiAgICAvLyBSZWFkIEhlYWRlclxuICAgIHJlcy5uOCA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5wcmltZSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmlnSW50KGZkLCByZXMubjgpO1xuXG4gICAgaWYgKG9wdGlvbnMuRikge1xuICAgICAgICBpZiAob3B0aW9ucy5GLnAgIT0gcmVzLnByaW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJEaWZmZXJlbnQgUHJpbWVcIik7XG4gICAgICAgIHJlcy5GID0gb3B0aW9ucy5GO1xuICAgIH0gZWxzZSBpZiAob3B0aW9ucy5nZXRGaWVsZEZyb21QcmltZSkge1xuICAgICAgICByZXMuRiA9IGF3YWl0IG9wdGlvbnMuZ2V0RmllbGRGcm9tUHJpbWUocmVzLnByaW1lLCBvcHRpb25zLnNpbmdsZVRocmVhZCk7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmdldEN1cnZlRnJvbVByaW1lKSB7XG4gICAgICAgIHJlcy5jdXJ2ZSA9IGF3YWl0IG9wdGlvbnMuZ2V0Q3VydmVGcm9tUHJpbWUocmVzLnByaW1lLCBvcHRpb25zLnNpbmdsZVRocmVhZCk7XG4gICAgICAgIHJlcy5GID0gcmVzLmN1cnZlLkZyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXMuY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZUZyb21SKHJlcy5wcmltZSwgb3B0aW9ucy5zaW5nbGVUaHJlYWQpO1xuICAgICAgICAgICAgcmVzLkYgPSByZXMuY3VydmUuRnI7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgcmVzLkYgPSBuZXcgRjFGaWVsZChyZXMucHJpbWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVzLm5WYXJzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5PdXRwdXRzID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG4gICAgcmVzLm5QdWJJbnB1dHMgPSBhd2FpdCBmZC5yZWFkVUxFMzIoKTtcbiAgICByZXMublBydklucHV0cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy5uTGFiZWxzID0gYXdhaXQgZmQucmVhZFVMRTY0KCk7XG4gICAgcmVzLm5Db25zdHJhaW50cyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuICAgIHJlcy51c2VDdXN0b21HYXRlcyA9IHR5cGVvZiBzZWN0aW9uc1tSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX0xJU1RfU0VDVElPTl0gIT09IFwidW5kZWZpbmVkXCIgJiYgc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19MSVNUX1NFQ1RJT05dICE9PSBudWxsXG4gICAgICAgICYmIHR5cGVvZiBzZWN0aW9uc1tSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX1VTRVNfU0VDVElPTl0gIT09IFwidW5kZWZpbmVkXCIgJiYgc2VjdGlvbnNbUjFDU19GSUxFX0NVU1RPTV9HQVRFU19VU0VTX1NFQ1RJT05dICE9PSBudWxsO1xuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ29uc3RyYWludHMoZmQsc2VjdGlvbnMsIHIxY3MsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgb3B0aW9ucyA9IGxvZ2dlcjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb2dnZXIgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb3B0aW9ucz0ge307XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGxvZ2dlcjogbG9nZ2VyLFxuICAgICAgICAgICAgbG9nZ2VyQ3R4OiBsb2dnZXJDdHgsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmQsIHNlY3Rpb25zLCAyKTtcbiAgICBsZXQgYlIxY3NQb3MgPSAwO1xuICAgIGxldCBjb25zdHJhaW50cztcbiAgICBpZiAocjFjcy5uQ29uc3RyYWludHM+MTw8MjApIHtcbiAgICAgICAgY29uc3RyYWludHMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdHJhaW50cyA9IFtdO1xuICAgIH1cbiAgICBmb3IgKGxldCBpPTA7IGk8cjFjcy5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICBpZiAoKG9wdGlvbnMubG9nZ2VyKSYmKGklMTAwMDAwID09IDApKSBvcHRpb25zLmxvZ2dlci5pbmZvKGAke29wdGlvbnMubG9nZ2VyQ3R4fTogTG9hZGluZyBjb25zdHJhaW50czogJHtpfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICBjb25zdCBjID0gcmVhZENvbnN0cmFpbnQoKTtcbiAgICAgICAgY29uc3RyYWludHMucHVzaChjKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbnN0cmFpbnRzO1xuXG5cbiAgICBmdW5jdGlvbiByZWFkQ29uc3RyYWludCgpIHtcbiAgICAgICAgY29uc3QgYyA9IFtdO1xuICAgICAgICBjWzBdID0gcmVhZExDKCk7XG4gICAgICAgIGNbMV0gPSByZWFkTEMoKTtcbiAgICAgICAgY1syXSA9IHJlYWRMQygpO1xuICAgICAgICByZXR1cm4gYztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkTEMoKSB7XG4gICAgICAgIGNvbnN0IGxjPSB7fTtcblxuICAgICAgICBjb25zdCBidWZmVUwzMiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1Bvcys0KTtcbiAgICAgICAgYlIxY3NQb3MgKz0gNDtcbiAgICAgICAgY29uc3QgYnVmZlVMMzJWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTDMyLmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IG5JZHggPSBidWZmVUwzMlYuZ2V0VWludDMyKDAsIHRydWUpO1xuXG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBiUjFjcy5zbGljZShiUjFjc1BvcywgYlIxY3NQb3MgKyAoNCtyMWNzLm44KSpuSWR4ICk7XG4gICAgICAgIGJSMWNzUG9zICs9ICg0K3IxY3MubjgpKm5JZHg7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5JZHg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gYnVmZlYuZ2V0VWludDMyKGkqKDQrcjFjcy5uOCksIHRydWUpO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gcjFjcy5GLmZyb21ScHJMRShidWZmLCBpKig0K3IxY3MubjgpKzQpO1xuICAgICAgICAgICAgbGNbaWR4XSA9IHZhbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGM7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZE1hcChmZCwgc2VjdGlvbnMsIHIxY3MsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgbGV0IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiBsb2dnZXIgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgb3B0aW9ucyA9IGxvZ2dlcjtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBsb2dnZXIgPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgb3B0aW9ucz0ge307XG4gICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIGxvZ2dlcjogbG9nZ2VyLFxuICAgICAgICAgICAgbG9nZ2VyQ3R4OiBsb2dnZXJDdHgsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNvbnN0IGJNYXAgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmQsIHNlY3Rpb25zLCAzKTtcbiAgICBsZXQgYk1hcFBvcyA9IDA7XG4gICAgbGV0IG1hcDtcblxuICAgIGlmIChyMWNzLm5WYXJzPjE8PDIwKSB7XG4gICAgICAgIG1hcCA9IG5ldyBCaWdBcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1hcCA9IFtdO1xuICAgIH1cbiAgICBmb3IgKGxldCBpPTA7IGk8cjFjcy5uVmFyczsgaSsrKSB7XG4gICAgICAgIGlmICgob3B0aW9ucy5sb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgb3B0aW9ucy5sb2dnZXIuaW5mbyhgJHtvcHRpb25zLmxvZ2dlckN0eH06IExvYWRpbmcgbWFwOiAke2l9LyR7cjFjcy5uVmFyc31gKTtcbiAgICAgICAgY29uc3QgaWR4ID0gcmVhZFVMRTY0KCk7XG4gICAgICAgIG1hcC5wdXNoKGlkeCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcDtcblxuICAgIGZ1bmN0aW9uIHJlYWRVTEU2NCgpIHtcbiAgICAgICAgY29uc3QgYnVmZlVMRTY0ID0gYk1hcC5zbGljZShiTWFwUG9zLCBiTWFwUG9zKzgpO1xuICAgICAgICBiTWFwUG9zICs9IDg7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTEU2NFYgPSBuZXcgRGF0YVZpZXcoYnVmZlVMRTY0LmJ1ZmZlcik7XG4gICAgICAgIGNvbnN0IExTQiA9IGJ1ZmZVTEU2NFYuZ2V0VWludDMyKDAsIHRydWUpO1xuICAgICAgICBjb25zdCBNU0IgPSBidWZmVUxFNjRWLmdldFVpbnQzMig0LCB0cnVlKTtcblxuICAgICAgICByZXR1cm4gTVNCICogMHgxMDAwMDAwMDAgKyBMU0I7XG4gICAgfVxuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkUjFjc0ZkKGZkLCBzZWN0aW9ucywgb3B0aW9ucykge1xuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgcHJvcGVydGllczpcbiAgICAgKiAgbG9hZENvbnN0cmFpbnRzOiA8Ym9vbD4gdHJ1ZSBieSBkZWZhdWx0XG4gICAgICogIGxvYWRNYXA6ICAgICAgICAgPGJvb2w+IGZhbHNlIGJ5IGRlZmF1bHRcbiAgICAgKiAgbG9hZEN1c3RvbUdhdGVzOiA8Ym9vbD4gdHJ1ZSBieSBkZWZhdWx0XG4gICAgICovXG5cbiAgICBpZih0eXBlb2Ygb3B0aW9ucyAhPT0gXCJvYmplY3RcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJyZWFkUjFjc0ZkOiBvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0XCIpO1xuICAgIH1cblxuICAgIG9wdGlvbnMubG9hZENvbnN0cmFpbnRzID0gXCJsb2FkQ29uc3RyYWludHNcIiBpbiBvcHRpb25zID8gb3B0aW9ucy5sb2FkQ29uc3RyYWludHMgOiB0cnVlO1xuICAgIG9wdGlvbnMubG9hZE1hcCA9IFwibG9hZE1hcFwiIGluIG9wdGlvbnMgPyBvcHRpb25zLmxvYWRNYXAgOiBmYWxzZTtcbiAgICBvcHRpb25zLmxvYWRDdXN0b21HYXRlcyA9IFwibG9hZEN1c3RvbUdhdGVzXCIgaW4gb3B0aW9ucyA/IG9wdGlvbnMubG9hZEN1c3RvbUdhdGVzIDogdHJ1ZTtcblxuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlYWRSMWNzSGVhZGVyKGZkLCBzZWN0aW9ucywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5sb2FkQ29uc3RyYWludHMpIHtcbiAgICAgICAgcmVzLmNvbnN0cmFpbnRzID0gYXdhaXQgcmVhZENvbnN0cmFpbnRzKGZkLCBzZWN0aW9ucywgcmVzLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIExhYmVsc1xuXG4gICAgaWYgKG9wdGlvbnMubG9hZE1hcCkge1xuICAgICAgICByZXMubWFwID0gYXdhaXQgcmVhZE1hcChmZCwgc2VjdGlvbnMsIHJlcywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9hZEN1c3RvbUdhdGVzKSB7XG4gICAgICAgIGlmIChyZXMudXNlQ3VzdG9tR2F0ZXMpIHtcbiAgICAgICAgICAgIHJlcy5jdXN0b21HYXRlcyA9IGF3YWl0IHJlYWRDdXN0b21HYXRlc0xpc3RTZWN0aW9uKGZkLCBzZWN0aW9ucywgcmVzKTtcbiAgICAgICAgICAgIHJlcy5jdXN0b21HYXRlc1VzZXMgPSBhd2FpdCByZWFkQ3VzdG9tR2F0ZXNVc2VzU2VjdGlvbihmZCwgc2VjdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzLmN1c3RvbUdhdGVzID0gW107XG4gICAgICAgICAgICByZXMuY3VzdG9tR2F0ZXNVc2VzID0gW107XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRSMWNzKGZpbGVOYW1lLCBsb2FkQ29uc3RyYWludHMsIGxvYWRNYXAsIHNpbmdsZVRocmVhZCwgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcbiAgICBsZXQgb3B0aW9ucztcbiAgICBpZiAodHlwZW9mIGxvYWRDb25zdHJhaW50cyA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBvcHRpb25zID0gbG9hZENvbnN0cmFpbnRzO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGxvYWRDb25zdHJhaW50cyA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBvcHRpb25zPSB7XG4gICAgICAgICAgICBsb2FkQ29uc3RyYWludHM6IHRydWUsXG4gICAgICAgICAgICBsb2FkTWFwOiBmYWxzZSxcbiAgICAgICAgICAgIGxvYWRDdXN0b21HYXRlczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBsb2FkQ29uc3RyYWludHM6IGxvYWRDb25zdHJhaW50cyxcbiAgICAgICAgICAgIGxvYWRNYXA6IGxvYWRNYXAsXG4gICAgICAgICAgICBzaW5nbGVUaHJlYWQ6IHNpbmdsZVRocmVhZCxcbiAgICAgICAgICAgIGxvZ2dlcjogbG9nZ2VyLFxuICAgICAgICAgICAgbG9nZ2VyQ3R4OiBsb2dnZXJDdHhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7ZmQsIHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZShmaWxlTmFtZSwgXCJyMWNzXCIsIDEsIDE8PDI1LCAxPDwyMik7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCByZWFkUjFjc0ZkKGZkLCBzZWN0aW9ucywgb3B0aW9ucyk7XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRDdXN0b21HYXRlc0xpc3RTZWN0aW9uKGZkLCBzZWN0aW9ucywgcmVzKSB7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCBSMUNTX0ZJTEVfQ1VTVE9NX0dBVEVTX0xJU1RfU0VDVElPTik7XG5cbiAgICBsZXQgbnVtID0gYXdhaXQgZmQucmVhZFVMRTMyKCk7XG5cbiAgICBsZXQgY3VzdG9tR2F0ZXMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgICAgIGxldCBjdXN0b21HYXRlID0ge307XG4gICAgICAgIGN1c3RvbUdhdGUudGVtcGxhdGVOYW1lID0gYXdhaXQgZmQucmVhZFN0cmluZygpO1xuICAgICAgICBsZXQgbnVtUGFyYW1ldGVycyA9IGF3YWl0IGZkLnJlYWRVTEUzMigpO1xuXG4gICAgICAgIGN1c3RvbUdhdGUucGFyYW1ldGVycyA9IEFycmF5KG51bVBhcmFtZXRlcnMpO1xuICAgICAgICBsZXQgYnVmZiA9IGF3YWl0IGZkLnJlYWQocmVzLm44ICogbnVtUGFyYW1ldGVycyk7XG5cbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBudW1QYXJhbWV0ZXJzOyBqKyspIHtcbiAgICAgICAgICAgIGN1c3RvbUdhdGUucGFyYW1ldGVyc1tqXSA9IHJlcy5GLmZyb21ScHJMRShidWZmLCBqICogcmVzLm44LCByZXMubjgpOztcbiAgICAgICAgfVxuICAgICAgICBjdXN0b21HYXRlcy5wdXNoKGN1c3RvbUdhdGUpO1xuICAgIH1cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQpO1xuXG4gICAgcmV0dXJuIGN1c3RvbUdhdGVzO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZEN1c3RvbUdhdGVzVXNlc1NlY3Rpb24oZmQsc2VjdGlvbnMsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBiUjFjcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZCwgc2VjdGlvbnMsIFIxQ1NfRklMRV9DVVNUT01fR0FURVNfVVNFU19TRUNUSU9OKTtcbiAgICBjb25zdCBiUjFjczMyID0gbmV3IFVpbnQzMkFycmF5KGJSMWNzLmJ1ZmZlciwgYlIxY3MuYnl0ZU9mZnNldCwgYlIxY3MuYnl0ZUxlbmd0aC80KTtcbiAgICBjb25zdCBuQ3VzdG9tR2F0ZVVzZXMgPSBiUjFjczMyWzBdO1xuICAgIGxldCBiUjFjc1BvcyA9IDE7XG4gICAgbGV0IGN1c3RvbUdhdGVzVXNlcztcbiAgICBpZiAobkN1c3RvbUdhdGVVc2VzPjE8PDIwKSB7XG4gICAgICAgIGN1c3RvbUdhdGVzVXNlcyA9IG5ldyBCaWdBcnJheSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGN1c3RvbUdhdGVzVXNlcyA9IFtdO1xuICAgIH1cbiAgICBmb3IgKGxldCBpPTA7IGk8bkN1c3RvbUdhdGVVc2VzOyBpKyspIHtcbiAgICAgICAgaWYgKChvcHRpb25zLmxvZ2dlcikmJihpJTEwMDAwMCA9PSAwKSkgb3B0aW9ucy5sb2dnZXIuaW5mbyhgJHtvcHRpb25zLmxvZ2dlckN0eH06IExvYWRpbmcgY3VzdG9tIGdhdGUgdXNlczogJHtpfS8ke25DdXN0b21HYXRlVXNlc31gKTtcbiAgICAgICAgbGV0IGMgPSB7fTtcbiAgICAgICAgYy5pZCA9IGJSMWNzMzJbYlIxY3NQb3MrK107XG4gICAgICAgIGxldCBudW1TaWduYWxzID0gYlIxY3MzMltiUjFjc1BvcysrXTtcbiAgICAgICAgYy5zaWduYWxzID0gW107XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtU2lnbmFsczsgaisrKSB7XG4gICAgICAgICAgICBjb25zdCBMU0IgPSBiUjFjczMyW2JSMWNzUG9zKytdO1xuICAgICAgICAgICAgY29uc3QgTVNCID0gYlIxY3MzMltiUjFjc1BvcysrXTtcbiAgICAgICAgICAgIGMuc2lnbmFscy5wdXNoKE1TQiAqIDB4MTAwMDAwMDAwICsgTFNCKTtcbiAgICAgICAgfVxuICAgICAgICBjdXN0b21HYXRlc1VzZXMucHVzaChjKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1c3RvbUdhdGVzVXNlcztcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUjFjc0hlYWRlcihmZCwgY2lyKSB7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAxKTtcbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uOCk7IC8vIFRlbXBvcmFsbHkgc2V0IHRvIDAgbGVuZ3RoXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLndyaXRlQmlnSW50KGZkLCBjaXIucHJpbWUsIGNpci5uOCk7XG5cbiAgICBhd2FpdCBmZC53cml0ZVVMRTMyKGNpci5uVmFycyk7XG4gICAgYXdhaXQgZmQud3JpdGVVTEUzMihjaXIubk91dHB1dHMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm5QdWJJbnB1dHMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLm5QcnZJbnB1dHMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFNjQoY2lyLm5MYWJlbHMpO1xuICAgIGF3YWl0IGZkLndyaXRlVUxFMzIoY2lyLmNvbnN0cmFpbnRzLmxlbmd0aCk7XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUjFjc0NvbnN0cmFpbnRzKGZkLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KSB7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkLCAyKTtcblxuICAgIGZvciAobGV0IGk9MDsgaTxjaXIuY29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMCA9PSAwKSkgbG9nZ2VyLmluZm8oYCR7bG9nZ2VyQ3R4fTogd3JpdGluZyBjb25zdHJhaW50OiAke2l9LyR7Y2lyLmNvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgYXdhaXQgd3JpdGVDb25zdHJhaW50KGNpci5jb25zdHJhaW50c1tpXSk7XG4gICAgfVxuXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZCk7XG5cblxuICAgIGZ1bmN0aW9uIHdyaXRlQ29uc3RyYWludChjKSB7XG4gICAgICAgIGNvbnN0IG44ID0gY2lyLm44O1xuICAgICAgICBjb25zdCBGID0gY2lyLkYgfHwgY2lyLmN1cnZlLkZyO1xuICAgICAgICBjb25zdCBpZHhBID0gT2JqZWN0LmtleXMoY1swXSk7XG4gICAgICAgIGNvbnN0IGlkeEIgPSBPYmplY3Qua2V5cyhjWzFdKTtcbiAgICAgICAgY29uc3QgaWR4QyA9IE9iamVjdC5rZXlzKGNbMl0pO1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoKGlkeEEubGVuZ3RoK2lkeEIubGVuZ3RoK2lkeEMubGVuZ3RoKSoobjgrNCkgKyAxMik7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyKTtcbiAgICAgICAgbGV0IG89MDtcblxuICAgICAgICBidWZmVi5zZXRVaW50MzIobywgaWR4QS5sZW5ndGgsIHRydWUpOyBvKz00O1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aWR4QS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY29lZiA9IGlkeEFbaV07XG4gICAgICAgICAgICBidWZmVi5zZXRVaW50MzIobywgY29lZiwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICBGLnRvUnByTEUoYnVmZiwgbywgY1swXVtjb2VmXSk7IG8rPW44O1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGlkeEIubGVuZ3RoLCB0cnVlKTsgbys9NDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGlkeEIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSBpZHhCW2ldO1xuICAgICAgICAgICAgYnVmZlYuc2V0VWludDMyKG8sIGNvZWYsIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgRi50b1JwckxFKGJ1ZmYsIG8sIGNbMV1bY29lZl0pOyBvKz1uODtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBpZHhDLmxlbmd0aCwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxpZHhDLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjb2VmID0gaWR4Q1tpXTtcbiAgICAgICAgICAgIGJ1ZmZWLnNldFVpbnQzMihvLCBjb2VmLCB0cnVlKTsgbys9NDtcbiAgICAgICAgICAgIEYudG9ScHJMRShidWZmLCBvLCBjWzJdW2NvZWZdKTsgbys9bjg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmQud3JpdGUoYnVmZik7XG4gICAgfVxuXG59XG5cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlUjFjc01hcChmZCwgY2lyLCBsb2dnZXIsIGxvZ2dlckN0eCkge1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZCwgMyk7XG5cbiAgICBpZiAoY2lyLm1hcC5sZW5ndGggIT0gY2lyLm5WYXJzKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG1hcCBzaXplXCIpO1xuICAgIGZvciAobGV0IGk9MDsgaTxjaXIublZhcnM7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwID09IDApKSBsb2dnZXIuaW5mbyhgJHtsb2dnZXJDdHh9OiB3cml0aW5nIG1hcDogJHtpfS8ke2Npci5uVmFyc31gKTtcbiAgICAgICAgYXdhaXQgZmQud3JpdGVVTEU2NChjaXIubWFwW2ldKTtcbiAgICB9XG5cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkKTtcbn1cblxuXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3cml0ZVIxY3MoZmlsZU5hbWUsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpIHtcblxuICAgIGNvbnN0IGZkID0gYXdhaXQgYmluRmlsZVV0aWxzLmNyZWF0ZUJpbkZpbGUoZmlsZU5hbWUsIFwicjFjc1wiLCAxLCAzLCAxPDwyNSwgMTw8MjIpO1xuXG4gICAgYXdhaXQgd3JpdGVSMWNzSGVhZGVyKGZkLCBjaXIpO1xuXG4gICAgYXdhaXQgd3JpdGVSMWNzQ29uc3RyYWludHMoZmQsIGNpciwgbG9nZ2VyLCBsb2dnZXJDdHgpO1xuXG4gICAgYXdhaXQgd3JpdGVSMWNzTWFwKGZkLCBjaXIsIGxvZ2dlciwgbG9nZ2VyQ3R4KTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyByZWFkUjFjcyB9ICBmcm9tIFwicjFjc2ZpbGVcIjtcblxuY29uc3QgYmxzMTIzODFyID0gU2NhbGFyLmUoXCI3M2VkYTc1MzI5OWQ3ZDQ4MzMzOWQ4MDgwOWExZDgwNTUzYmRhNDAyZmZmZTViZmVmZmZmZmZmZjAwMDAwMDAxXCIsIDE2KTtcbmNvbnN0IGJuMTI4ciA9IFNjYWxhci5lKFwiMjE4ODgyNDI4NzE4MzkyNzUyMjIyNDY0MDU3NDUyNTcyNzUwODg1NDgzNjQ0MDA0MTYwMzQzNDM2OTgyMDQxODY1NzU4MDg0OTU2MTdcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHIxY3NJbmZvKHIxY3NOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IGNpciA9IGF3YWl0IHJlYWRSMWNzKHIxY3NOYW1lKTtcblxuICAgIGlmIChTY2FsYXIuZXEoY2lyLnByaW1lLCBibjEyOHIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiQ3VydmU6IGJuLTEyOFwiKTtcbiAgICB9IGVsc2UgaWYgKFNjYWxhci5lcShjaXIucHJpbWUsIGJsczEyMzgxcikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJDdXJ2ZTogYmxzMTItMzgxXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGBVbmtub3duIEN1cnZlLiBQcmltZTogJHtTY2FsYXIudG9TdHJpbmcoY2lyLnByaW1lKX1gKTtcbiAgICB9XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgV2lyZXM6ICR7Y2lyLm5WYXJzfWApO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGAjIG9mIENvbnN0cmFpbnRzOiAke2Npci5uQ29uc3RyYWludHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgUHJpdmF0ZSBJbnB1dHM6ICR7Y2lyLm5QcnZJbnB1dHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgUHVibGljIElucHV0czogJHtjaXIublB1YklucHV0c31gKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgIyBvZiBMYWJlbHM6ICR7Y2lyLm5MYWJlbHN9YCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYCMgb2YgT3V0cHV0czogJHtjaXIubk91dHB1dHN9YCk7XG5cbiAgICByZXR1cm4gY2lyO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtyZWFkUjFjc30gIGZyb20gXCJyMWNzZmlsZVwiO1xuaW1wb3J0IHsgc3RyaW5naWZ5QmlnSW50c1dpdGhGaWVsZCB9IGZyb20gXCIuL21pc2MuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiByMWNzRXhwb3J0SnNvbihyMWNzRmlsZU5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgY2lyID0gYXdhaXQgcmVhZFIxY3MocjFjc0ZpbGVOYW1lLCB0cnVlLCB0cnVlLCB0cnVlLCBsb2dnZXIpO1xuICAgIGNvbnN0IEZyPWNpci5jdXJ2ZS5GcjtcbiAgICBkZWxldGUgY2lyLmN1cnZlO1xuICAgIGRlbGV0ZSBjaXIuRjtcblxuICAgIHJldHVybiBzdHJpbmdpZnlCaWdJbnRzV2l0aEZpZWxkKEZyLCBjaXIpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHtkZWZhdWx0IGFzIHByaW50fSBmcm9tIFwiLi9yMWNzX3ByaW50LmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW5mb30gZnJvbSBcIi4vcjFjc19pbmZvLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vcjFjc19leHBvcnRfanNvbi5qc1wiO1xuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBmYXN0RmlsZSBmcm9tIFwiZmFzdGZpbGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbG9hZFN5bWJvbHMoc3ltRmlsZU5hbWUpIHtcbiAgICBjb25zdCBzeW0gPSB7XG4gICAgICAgIGxhYmVsSWR4Mk5hbWU6IFsgXCJvbmVcIiBdLFxuICAgICAgICB2YXJJZHgyTmFtZTogWyBcIm9uZVwiIF0sXG4gICAgICAgIGNvbXBvbmVudElkeDJOYW1lOiBbXVxuICAgIH07XG4gICAgY29uc3QgZmQgPSBhd2FpdCBmYXN0RmlsZS5yZWFkRXhpc3Rpbmcoc3ltRmlsZU5hbWUpO1xuICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGZkLnRvdGFsU2l6ZSk7XG4gICAgY29uc3Qgc3ltc1N0ciA9IG5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpLmRlY29kZShidWZmKTtcbiAgICBjb25zdCBsaW5lcyA9IHN5bXNTdHIuc3BsaXQoXCJcXG5cIik7XG4gICAgZm9yIChsZXQgaT0wOyBpPGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IGxpbmVzW2ldLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgaWYgKGFyci5sZW5ndGghPTQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoc3ltLnZhcklkeDJOYW1lW2FyclsxXV0pIHtcbiAgICAgICAgICAgIHN5bS52YXJJZHgyTmFtZVthcnJbMV1dICs9IFwifFwiICsgYXJyWzNdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3ltLnZhcklkeDJOYW1lW2FyclsxXV0gPSBhcnJbM107XG4gICAgICAgIH1cbiAgICAgICAgc3ltLmxhYmVsSWR4Mk5hbWVbYXJyWzBdXSA9IGFyclszXTtcbiAgICAgICAgaWYgKCFzeW0uY29tcG9uZW50SWR4Mk5hbWVbYXJyWzJdXSkge1xuICAgICAgICAgICAgc3ltLmNvbXBvbmVudElkeDJOYW1lW2FyclsyXV0gPSBleHRyYWN0Q29tcG9uZW50KGFyclszXSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIHN5bTtcblxuICAgIGZ1bmN0aW9uIGV4dHJhY3RDb21wb25lbnQobmFtZSkge1xuICAgICAgICBjb25zdCBhcnIgPSBuYW1lLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgYXJyLnBvcCgpOyAvLyBSZW1vdmUgdGhlIGxhc3IgZWxlbWVudFxuICAgICAgICByZXR1cm4gYXJyLmpvaW4oXCIuXCIpO1xuICAgIH1cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyIH0gZnJvbSBcImNpcmNvbV9ydW50aW1lXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgbG9hZFN5bXMgZnJvbSBcIi4vbG9hZHN5bXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zRGVidWcoX2lucHV0LCB3YXNtRmlsZU5hbWUsIHd0bnNGaWxlTmFtZSwgc3ltTmFtZSwgb3B0aW9ucywgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3QgZmRXYXNtID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKHdhc21GaWxlTmFtZSk7XG4gICAgY29uc3Qgd2FzbSA9IGF3YWl0IGZkV2FzbS5yZWFkKGZkV2FzbS50b3RhbFNpemUpO1xuICAgIGF3YWl0IGZkV2FzbS5jbG9zZSgpO1xuXG4gICAgY29uc3Qgd2NPcHMgPSB7Li4ub3B0aW9ucywgc2FuaXR5Q2hlY2s6IHRydWV9O1xuICAgIGxldCBzeW0gPSBhd2FpdCBsb2FkU3ltcyhzeW1OYW1lKTtcbiAgICBpZiAob3B0aW9ucy5zZXQpIHtcbiAgICAgICAgaWYgKCFzeW0pIHN5bSA9IGF3YWl0IGxvYWRTeW1zKHN5bU5hbWUpO1xuICAgICAgICB3Y09wcy5sb2dTZXRTaWduYWw9IGZ1bmN0aW9uKGxhYmVsSWR4LCB2YWx1ZSkge1xuICAgICAgICAgICAgLy8gVGhlIGxpbmUgYmVsb3cgc3BsaXRzIHRoZSBhcnJvdyBsb2cgaW50byAyIHN0cmluZ3MgdG8gYXZvaWQgc29tZSBTZWN1cmUgRUNNQVNjcmlwdCBpc3N1ZXNcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiU0VUIFwiICsgc3ltLmxhYmVsSWR4Mk5hbWVbbGFiZWxJZHhdICsgXCIgPFwiICsgXCItLSBcIiArIHZhbHVlLnRvU3RyaW5nKCkpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5nZXQpIHtcbiAgICAgICAgaWYgKCFzeW0pIHN5bSA9IGF3YWl0IGxvYWRTeW1zKHN5bU5hbWUpO1xuICAgICAgICB3Y09wcy5sb2dHZXRTaWduYWw9IGZ1bmN0aW9uKHZhcklkeCwgdmFsdWUpIHtcbiAgICAgICAgICAgIC8vIFRoZSBsaW5lIGJlbG93IHNwbGl0cyB0aGUgYXJyb3cgbG9nIGludG8gMiBzdHJpbmdzIHRvIGF2b2lkIHNvbWUgU2VjdXJlIEVDTUFTY3JpcHQgaXNzdWVzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkdFVCBcIiArIHN5bS5sYWJlbElkeDJOYW1lW3ZhcklkeF0gKyBcIiAtLVwiICsgXCI+IFwiICsgdmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyaWdnZXIpIHtcbiAgICAgICAgaWYgKCFzeW0pIHN5bSA9IGF3YWl0IGxvYWRTeW1zKHN5bU5hbWUpO1xuICAgICAgICB3Y09wcy5sb2dTdGFydENvbXBvbmVudD0gZnVuY3Rpb24oY0lkeCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJTVEFSVDogXCIgKyBzeW0uY29tcG9uZW50SWR4Mk5hbWVbY0lkeF0pO1xuICAgICAgICB9O1xuICAgICAgICB3Y09wcy5sb2dGaW5pc2hDb21wb25lbnQ9IGZ1bmN0aW9uKGNJZHgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRklOSVNIOiBcIiArIHN5bS5jb21wb25lbnRJZHgyTmFtZVtjSWR4XSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIHdjT3BzLnN5bSA9IHN5bTtcblxuICAgIGNvbnN0IHdjID0gYXdhaXQgV2l0bmVzc0NhbGN1bGF0b3JCdWlsZGVyKHdhc20sIHdjT3BzKTtcbiAgICBjb25zdCB3ID0gYXdhaXQgd2MuY2FsY3VsYXRlV2l0bmVzcyhpbnB1dCwgdHJ1ZSk7XG5cbiAgICBjb25zdCBmZFd0bnMgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh3dG5zRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAyKTtcblxuICAgIGF3YWl0IHd0bnNVdGlscy53cml0ZShmZFd0bnMsIHcsIHdjLnByaW1lKTtcblxuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtyZWFkfSBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHd0bnNFeHBvcnRKc29uKHd0bnNGaWxlTmFtZSkge1xuXG4gICAgY29uc3QgdyA9IGF3YWl0IHJlYWQod3Ruc0ZpbGVOYW1lKTtcblxuICAgIHJldHVybiB3O1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB3dG5zVXRpbHMgZnJvbSBcIi4vd3Ruc191dGlscy5qc1wiO1xuaW1wb3J0IHsgcmVhZFIxY3NGZCB9IGZyb20gXCJyMWNzZmlsZVwiO1xuaW1wb3J0IHsgU2NhbGFyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0ICogYXMgY3VydmVzIGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiB3dG5zQ2hlY2socjFjc0ZpbGVuYW1lLCB3dG5zRmlsZW5hbWUsIGxvZ2dlcikge1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJXSVRORVNTIENIRUNLSU5HIFNUQVJURURcIik7XG5cbiAgICAvLyBSZWFkIHIxY3MgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHIxY3MgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFIxY3MsXG4gICAgICAgIHNlY3Rpb25zOiBzZWN0aW9uc1IxY3NcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHIxY3NGaWxlbmFtZSwgXCJyMWNzXCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7IGxvYWRDb25zdHJhaW50czogZmFsc2UsIGxvYWRDdXN0b21HYXRlczogZmFsc2UgfSk7XG5cbiAgICAvLyBSZWFkIHdpdG5lc3MgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFd0bnMsXG4gICAgICAgIHNlY3Rpb25zOiB3dG5zU2VjdGlvbnNcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHd0bnNGaWxlbmFtZSwgXCJ3dG5zXCIsIDIsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGNvbnN0IHd0bnNIZWFkZXIgPSBhd2FpdCB3dG5zVXRpbHMucmVhZEhlYWRlcihmZFd0bnMsIHd0bnNTZWN0aW9ucyk7XG5cbiAgICBpZiAoIVNjYWxhci5lcShyMWNzLnByaW1lLCB3dG5zSGVhZGVyLnEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkN1cnZlIG9mIHRoZSB3aXRuZXNzIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJ2ZSBvZiB0aGUgcHJvdmluZyBrZXlcIik7XG4gICAgfVxuXG4gICAgY29uc3QgYnVmZldpdG5lc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRXdG5zLCB3dG5zU2VjdGlvbnMsIDIpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tUihyMWNzLnByaW1lKTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHNGciA9IEZyLm44O1xuXG4gICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiICBXSVRORVNTIENIRUNLXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXJ2ZTogICAgICAgICAgJHtyMWNzLmN1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnMgKHdpcmVzKTogICAke3IxY3MublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIE91dHB1dHM6ICAgICAgICAke3IxY3Mubk91dHB1dHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyBJbnB1dHM6ICAke3IxY3MublB1YklucHV0c31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgUHJpdmF0ZSBJbnB1dHM6ICR7cjFjcy5uUHJ2SW5wdXRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBMYWJlbHM6ICAgICAgICAgJHtyMWNzLm5MYWJlbHN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIENvbnN0cmFpbnRzOiAgICAke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDdXN0b20gR2F0ZXM6ICAgJHtyMWNzLnVzZUN1c3RvbUdhdGVzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIHdpdG5lc3MgY29ycmVjdG5lc3NcIik7XG5cbiAgICBsZXQgYlIxY3NQb3MgPSAwO1xuICAgIGxldCByZXMgPSB0cnVlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcjFjcy5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oYMK3wrfCtyBwcm9jZXNzaW5nIHIxY3MgY29uc3RyYWludHMgJHtpfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9SZWFkIHRoZSB0aHJlZSBsaW5lYXIgY29tYmluYXRpb25zIG9mIHRoZSBjb25zdHJhaW50IHdoZXJlIEEgKiBCIC0gQyA9IDBcbiAgICAgICAgY29uc3QgbGNBID0gcmVhZExDKCk7XG4gICAgICAgIGNvbnN0IGxjQiA9IHJlYWRMQygpO1xuICAgICAgICBjb25zdCBsY0MgPSByZWFkTEMoKTtcblxuICAgICAgICAvLyBFdmFsdWF0ZSB0aGUgbGluZWFyIGNvbWJpbmF0aW9uc1xuICAgICAgICBjb25zdCBldmFsQSA9IEV2YWx1YXRlTGluZWFyQ29tYmluYXRpb24obGNBKTtcbiAgICAgICAgY29uc3QgZXZhbEIgPSBFdmFsdWF0ZUxpbmVhckNvbWJpbmF0aW9uKGxjQik7XG4gICAgICAgIGNvbnN0IGV2YWxDID0gRXZhbHVhdGVMaW5lYXJDb21iaW5hdGlvbihsY0MpO1xuXG4gICAgICAgIC8vIENoZWNrIHRoYXQgQSAqIEIgLSBDID09IDBcbiAgICAgICAgaWYgKCFGci5lcShGci5zdWIoRnIubXVsKGV2YWxBLCBldmFsQiksIGV2YWxDKSwgRnIuemVybykpIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiwrfCt8K3IGFib3J0aW5nIGNoZWNraW5nIHByb2Nlc3MgYXQgY29uc3RyYWludCBcIiArIGkpO1xuICAgICAgICAgICAgcmVzID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZkUjFjcy5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIldJVE5FU1MgSVMgQ09SUkVDVFwiKTtcbiAgICAgICAgICAgIGxvZ2dlci5pbmZvKFwiV0lUTkVTUyBDSEVDS0lORyBGSU5JU0hFRCBTVUNDRVNTRlVMTFlcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIldJVE5FU1MgSVMgTk9UIENPUlJFQ1RcIik7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIldJVE5FU1MgQ0hFQ0tJTkcgRklOSVNIRUQgVU5TVUNDRVNTRlVMTFlcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuXG4gICAgZnVuY3Rpb24gRXZhbHVhdGVMaW5lYXJDb21iaW5hdGlvbihsYykge1xuICAgICAgICBsZXQgcmVzID0gRnIuemVybztcblxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobGMpO1xuICAgICAgICBrZXlzLmZvckVhY2goKHNpZ25hbElkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzaWduYWxWYWx1ZSA9IGdldFdpdG5lc3NWYWx1ZShzaWduYWxJZCk7XG4gICAgICAgICAgICBjb25zdCBzaWduYWxGYWN0b3IgPSBsY1tzaWduYWxJZF07XG5cbiAgICAgICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChzaWduYWxWYWx1ZSwgc2lnbmFsRmFjdG9yKSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVhZExDKCkge1xuICAgICAgICBjb25zdCBsYyA9IHt9O1xuXG4gICAgICAgIGNvbnN0IGJ1ZmZVTDMyID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgNCk7XG4gICAgICAgIGJSMWNzUG9zICs9IDQ7XG4gICAgICAgIGNvbnN0IGJ1ZmZVTDMyViA9IG5ldyBEYXRhVmlldyhidWZmVUwzMi5idWZmZXIpO1xuICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICBjb25zdCBidWZmID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgKDQgKyByMWNzLm44KSAqIG5JZHgpO1xuICAgICAgICBiUjFjc1BvcyArPSAoNCArIHIxY3MubjgpICogbklkeDtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JZHg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaWR4ID0gYnVmZlYuZ2V0VWludDMyKGkgKiAoNCArIHIxY3MubjgpLCB0cnVlKTtcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSAqICg0ICsgcjFjcy5uOCkgKyA0KTtcbiAgICAgICAgICAgIGxjW2lkeF0gPSB2YWw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxjO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFdpdG5lc3NWYWx1ZShzaWduYWxJZCkge1xuICAgICAgICByZXR1cm4gRnIuZnJvbVJwckxFKGJ1ZmZXaXRuZXNzLnNsaWNlKHNpZ25hbElkICogc0ZyLCBzaWduYWxJZCAqIHNGciArIHNGcikpO1xuICAgIH1cbn0iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQge2RlZmF1bHQgYXMgY2FsY3VsYXRlfSBmcm9tIFwiLi93dG5zX2NhbGN1bGF0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGRlYnVnfSBmcm9tIFwiLi93dG5zX2RlYnVnLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0SnNvbn0gZnJvbSBcIi4vd3Ruc19leHBvcnRfanNvbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNoZWNrfSBmcm9tIFwiLi93dG5zX2NoZWNrLmpzXCI7IiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgU1VCQVJSQVlfU0laRSA9IDB4NDAwMDA7XG5cbmNvbnN0IEJpZ0FycmF5SGFuZGxlciA9IHtcbiAgICBnZXQ6IGZ1bmN0aW9uKG9iaiwgcHJvcCkge1xuICAgICAgICBpZiAoIWlzTmFOKHByb3ApKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqLmdldEVsZW1lbnQocHJvcCk7XG4gICAgICAgIH0gZWxzZSByZXR1cm4gb2JqW3Byb3BdO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbihvYmosIHByb3AsIHZhbHVlKSB7XG4gICAgICAgIGlmICghaXNOYU4ocHJvcCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmouc2V0RWxlbWVudChwcm9wLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvYmpbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxufTtcblxuY2xhc3MgX0JpZ0FycmF5IHtcbiAgICBjb25zdHJ1Y3RvciAoaW5pdFNpemUpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBpbml0U2l6ZSB8fCAwO1xuICAgICAgICB0aGlzLmFyciA9IG5ldyBBcnJheShTVUJBUlJBWV9TSVpFKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8aW5pdFNpemU7IGkrPVNVQkFSUkFZX1NJWkUpIHtcbiAgICAgICAgICAgIHRoaXMuYXJyW2kvU1VCQVJSQVlfU0laRV0gPSBuZXcgQXJyYXkoTWF0aC5taW4oU1VCQVJSQVlfU0laRSwgaW5pdFNpemUgLSBpKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHB1c2ggKCkge1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQgKHRoaXMubGVuZ3RoLCBhcmd1bWVudHNbaV0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2xpY2UgKGYsIHQpIHtcbiAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KHQtZik7XG4gICAgICAgIGZvciAobGV0IGk9ZjsgaTwgdDsgaSsrKSBhcnJbaS1mXSA9IHRoaXMuZ2V0RWxlbWVudChpKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgZ2V0RWxlbWVudChpZHgpIHtcbiAgICAgICAgaWR4ID0gcGFyc2VJbnQoaWR4KTtcbiAgICAgICAgY29uc3QgaWR4MSA9IE1hdGguZmxvb3IoaWR4IC8gU1VCQVJSQVlfU0laRSk7XG4gICAgICAgIGNvbnN0IGlkeDIgPSBpZHggJSBTVUJBUlJBWV9TSVpFO1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJbaWR4MV0gPyB0aGlzLmFycltpZHgxXVtpZHgyXSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgc2V0RWxlbWVudChpZHgsIHZhbHVlKSB7XG4gICAgICAgIGlkeCA9IHBhcnNlSW50KGlkeCk7XG4gICAgICAgIGNvbnN0IGlkeDEgPSBNYXRoLmZsb29yKGlkeCAvIFNVQkFSUkFZX1NJWkUpO1xuICAgICAgICBpZiAoIXRoaXMuYXJyW2lkeDFdKSB7XG4gICAgICAgICAgICB0aGlzLmFycltpZHgxXSA9IG5ldyBBcnJheShTVUJBUlJBWV9TSVpFKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpZHgyID0gaWR4ICUgU1VCQVJSQVlfU0laRTtcbiAgICAgICAgdGhpcy5hcnJbaWR4MV1baWR4Ml0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKGlkeCA+PSB0aGlzLmxlbmd0aCkgdGhpcy5sZW5ndGggPSBpZHgrMTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGdldEtleXMoKSB7XG4gICAgICAgIGNvbnN0IG5ld0EgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHRoaXMuYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hcnJbaV0pIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8dGhpcy5hcnJbaV0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFycltpXVtqXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3QS5wdXNoKGkqU1VCQVJSQVlfU0laRStqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3QTtcbiAgICB9XG59XG5cbmNsYXNzIEJpZ0FycmF5IHtcbiAgICBjb25zdHJ1Y3RvciggaW5pdFNpemUgKSB7XG4gICAgICAgIGNvbnN0IG9iaiA9IG5ldyBfQmlnQXJyYXkoaW5pdFNpemUpO1xuICAgICAgICBjb25zdCBleHRPYmogPSBuZXcgUHJveHkob2JqLCBCaWdBcnJheUhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gZXh0T2JqO1xuICAgIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQmlnQXJyYXk7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge3JlYWRSMWNzSGVhZGVyfSBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQge1xuICAgIHJlYWRCaW5GaWxlLFxuICAgIGNyZWF0ZUJpbkZpbGUsXG4gICAgcmVhZFNlY3Rpb24sXG4gICAgd3JpdGVCaWdJbnQsXG4gICAgc3RhcnRXcml0ZVNlY3Rpb24sXG4gICAgZW5kV3JpdGVTZWN0aW9uLFxufSBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHsgbG9nMiwgZm9ybWF0SGFzaCB9IGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IFNjYWxhciwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0IEJpZ0FycmF5IGZyb20gXCIuL2JpZ2FycmF5LmpzXCI7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gbmV3WktleShyMWNzTmFtZSwgcHRhdU5hbWUsIHprZXlOYW1lLCBsb2dnZXIpIHtcblxuICAgIGNvbnN0IFRBVV9HMSA9IDA7XG4gICAgY29uc3QgVEFVX0cyID0gMTtcbiAgICBjb25zdCBBTFBIQVRBVV9HMSA9IDI7XG4gICAgY29uc3QgQkVUQVRBVV9HMSA9IDM7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuICAgIGNvbnN0IGNzSGFzaGVyID0gQmxha2UyYig2NCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkUFRhdSwgc2VjdGlvbnM6IHNlY3Rpb25zUFRhdX0gPSBhd2FpdCByZWFkQmluRmlsZShwdGF1TmFtZSwgXCJwdGF1XCIsIDEsIDE8PDIyLCAxPDwyNCk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZFBUYXUsIHNlY3Rpb25zUFRhdSk7XG4gICAgY29uc3Qge2ZkOiBmZFIxY3MsIHNlY3Rpb25zOiBzZWN0aW9uc1IxY3N9ID0gYXdhaXQgcmVhZEJpbkZpbGUocjFjc05hbWUsIFwicjFjc1wiLCAxLCAxPDwyMiwgMTw8MjQpO1xuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0hlYWRlcihmZFIxY3MsIHNlY3Rpb25zUjFjcywgZmFsc2UpO1xuXG4gICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgY3JlYXRlQmluRmlsZSh6a2V5TmFtZSwgXCJ6a2V5XCIsIDEsIDEwLCAxPDwyMiwgMTw8MjQpO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGlmIChyMWNzLnByaW1lICE9IGN1cnZlLnIpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgY29uc3QgY2lyUG93ZXIgPSBsb2cyKHIxY3MubkNvbnN0cmFpbnRzICsgcjFjcy5uUHViSW5wdXRzICsgcjFjcy5uT3V0cHV0cyArMSAtMSkgKzE7XG5cbiAgICBpZiAoY2lyUG93ZXIgPiBwb3dlcikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoYGNpcmN1aXQgdG9vIGJpZyBmb3IgdGhpcyBwb3dlciBvZiB0YXUgY2VyZW1vbnkuICR7cjFjcy5uQ29uc3RyYWludHN9KjIgPiAyKioke3Bvd2VyfWApO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgaWYgKCFzZWN0aW9uc1BUYXVbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VycyBvZiB0YXUgaXMgbm90IHByZXBhcmVkLlwiKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuICAgIGNvbnN0IG5QdWJsaWMgPSByMWNzLm5PdXRwdXRzICsgcjFjcy5uUHViSW5wdXRzO1xuICAgIGNvbnN0IGRvbWFpblNpemUgPSAyICoqIGNpclBvd2VyO1xuXG4gICAgLy8gV3JpdGUgdGhlIGhlYWRlclxuICAgIC8vLy8vLy8vLy8vXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMigxKTsgLy8gR3JvdGhcbiAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcblxuICAgIC8vIFdyaXRlIHRoZSBHcm90aCBoZWFkZXIgc2VjdGlvblxuICAgIC8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDIpO1xuICAgIGNvbnN0IHByaW1lUSA9IGN1cnZlLnE7XG4gICAgY29uc3QgbjhxID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArMSkqODtcblxuICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgY29uc3QgbjhyID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArMSkqODtcbiAgICBjb25zdCBSciA9IFNjYWxhci5tb2QoU2NhbGFyLnNobCgxLCBuOHIqOCksIHByaW1lUik7XG4gICAgY29uc3QgUjJyID0gY3VydmUuRnIuZShTY2FsYXIubW9kKFNjYWxhci5tdWwoUnIsUnIpLCBwcmltZVIpKTtcblxuICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cSk7XG4gICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVEsIG44cSk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUiwgbjhyKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihyMWNzLm5WYXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIGJhcnNcbiAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuUHVibGljKTsgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBwdWJsaWMgdmFycyAobm90IGluY2x1ZGluZyBPTkUpXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoZG9tYWluU2l6ZSk7ICAgICAgICAgICAgICAgICAgLy8gZG9tYWluU2l6ZVxuXG4gICAgbGV0IGJBbHBoYTE7XG4gICAgYkFscGhhMSA9IGF3YWl0IGZkUFRhdS5yZWFkKHNHMSwgc2VjdGlvbnNQVGF1WzRdWzBdLnApO1xuICAgIGF3YWl0IGZkWktleS53cml0ZShiQWxwaGExKTtcbiAgICBiQWxwaGExID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYkFscGhhMSk7XG4gICAgY3NIYXNoZXIudXBkYXRlKGJBbHBoYTEpO1xuXG4gICAgbGV0IGJCZXRhMTtcbiAgICBiQmV0YTEgPSBhd2FpdCBmZFBUYXUucmVhZChzRzEsIHNlY3Rpb25zUFRhdVs1XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkJldGExKTtcbiAgICBiQmV0YTEgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaExFTXRvVShiQmV0YTEpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQmV0YTEpO1xuXG4gICAgbGV0IGJCZXRhMjtcbiAgICBiQmV0YTIgPSBhd2FpdCBmZFBUYXUucmVhZChzRzIsIHNlY3Rpb25zUFRhdVs2XVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYkJldGEyKTtcbiAgICBiQmV0YTIgPSBhd2FpdCBjdXJ2ZS5HMi5iYXRjaExFTXRvVShiQmV0YTIpO1xuICAgIGNzSGFzaGVyLnVwZGF0ZShiQmV0YTIpO1xuXG4gICAgY29uc3QgYmcxID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICBjdXJ2ZS5HMS50b1JwckxFTShiZzEsIDAsIGN1cnZlLkcxLmcpO1xuICAgIGNvbnN0IGJnMiA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgY3VydmUuRzIudG9ScHJMRU0oYmcyLCAwLCBjdXJ2ZS5HMi5nKTtcbiAgICBjb25zdCBiZzFVID0gbmV3IFVpbnQ4QXJyYXkoc0cxKTtcbiAgICBjdXJ2ZS5HMS50b1JwclVuY29tcHJlc3NlZChiZzFVLCAwLCBjdXJ2ZS5HMS5nKTtcbiAgICBjb25zdCBiZzJVID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICBjdXJ2ZS5HMi50b1JwclVuY29tcHJlc3NlZChiZzJVLCAwLCBjdXJ2ZS5HMi5nKTtcblxuICAgIGF3YWl0IGZkWktleS53cml0ZShiZzIpOyAgICAgICAgLy8gZ2FtbWEyXG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJnMSk7ICAgICAgICAvLyBkZWx0YTFcbiAgICBhd2FpdCBmZFpLZXkud3JpdGUoYmcyKTsgICAgICAgIC8vIGRlbHRhMlxuICAgIGNzSGFzaGVyLnVwZGF0ZShiZzJVKTsgICAgICAvLyBnYW1tYTJcbiAgICBjc0hhc2hlci51cGRhdGUoYmcxVSk7ICAgICAgLy8gZGVsdGExXG4gICAgY3NIYXNoZXIudXBkYXRlKGJnMlUpOyAgICAgIC8vIGRlbHRhMlxuICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIHIxY3NcIik7XG4gICAgbGV0IHNSMWNzID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuXG4gICAgY29uc3QgQSA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBCMSA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBCMiA9IG5ldyBCaWdBcnJheShyMWNzLm5WYXJzKTtcbiAgICBjb25zdCBDID0gbmV3IEJpZ0FycmF5KHIxY3MublZhcnMtIG5QdWJsaWMgLTEpO1xuICAgIGNvbnN0IElDID0gbmV3IEFycmF5KG5QdWJsaWMrMSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgdGF1RzFcIik7XG4gICAgbGV0IHNUYXVHMSA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxMiwgKGRvbWFpblNpemUgLTEpKnNHMSwgZG9tYWluU2l6ZSpzRzEpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUmVhZGluZyB0YXVHMlwiKTtcbiAgICBsZXQgc1RhdUcyID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRQVGF1LCBzZWN0aW9uc1BUYXUsIDEzLCAoZG9tYWluU2l6ZSAtMSkqc0cyLCBkb21haW5TaXplKnNHMik7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIGFscGhhdGF1RzFcIik7XG4gICAgbGV0IHNBbHBoYVRhdUcxID0gYXdhaXQgcmVhZFNlY3Rpb24oZmRQVGF1LCBzZWN0aW9uc1BUYXUsIDE0LCAoZG9tYWluU2l6ZSAtMSkqc0cxLCBkb21haW5TaXplKnNHMSk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJSZWFkaW5nIGJldGF0YXVHMVwiKTtcbiAgICBsZXQgc0JldGFUYXVHMSA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxNSwgKGRvbWFpblNpemUgLTEpKnNHMSwgZG9tYWluU2l6ZSpzRzEpO1xuXG4gICAgYXdhaXQgcHJvY2Vzc0NvbnN0cmFpbnRzKCk7XG5cbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoMywgXCJHMVwiLCBJQywgXCJJQ1wiKTtcblxuICAgIGF3YWl0IHdyaXRlSHMoKTtcblxuICAgIGF3YWl0IGhhc2hIUG9pbnRzKCk7XG5cbiAgICBhd2FpdCBjb21wb3NlQW5kV3JpdGVQb2ludHMoOCwgXCJHMVwiLCBDLCBcIkNcIik7XG4gICAgYXdhaXQgY29tcG9zZUFuZFdyaXRlUG9pbnRzKDUsIFwiRzFcIiwgQSwgXCJBXCIpO1xuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg2LCBcIkcxXCIsIEIxLCBcIkIxXCIpO1xuICAgIGF3YWl0IGNvbXBvc2VBbmRXcml0ZVBvaW50cyg3LCBcIkcyXCIsIEIyLCBcIkIyXCIpO1xuXG4gICAgY29uc3QgY3NIYXNoID0gY3NIYXNoZXIuZGlnZXN0KCk7XG4gICAgLy8gQ29udHJpYnV0aW9ucyBzZWN0aW9uXG4gICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAxMCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGNzSGFzaCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoMCk7XG4gICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhmb3JtYXRIYXNoKGNzSGFzaCwgXCJDaXJjdWl0IGhhc2g6IFwiKSk7XG5cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGNzSGFzaDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlSHMoKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgOSk7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqc0cxKTtcbiAgICAgICAgaWYgKGNpclBvd2VyIDwgY3VydmUuRnIucykge1xuICAgICAgICAgICAgbGV0IHNUYXVHMSA9IGF3YWl0IHJlYWRTZWN0aW9uKGZkUFRhdSwgc2VjdGlvbnNQVGF1LCAxMiwgKGRvbWFpblNpemUqMi0xKSpzRzEsIGRvbWFpblNpemUqMipzRzEpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPCBkb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHNwbGl0dGluZyBidWZmZXI6ICR7aX0vJHtkb21haW5TaXplfWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBzVGF1RzEuc2xpY2UoIChpKjIrMSkqc0cxLCAoaSoyKzEpKnNHMSArIHNHMSApO1xuICAgICAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGJ1ZmYsIGkqc0cxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaXJQb3dlciA9PSBjdXJ2ZS5Gci5zKSB7XG4gICAgICAgICAgICBjb25zdCBvID0gc2VjdGlvbnNQVGF1WzEyXVswXS5wICsgKCgyICoqIChjaXJQb3dlcisxKSkgLTEpKnNHMTtcbiAgICAgICAgICAgIGF3YWl0IGZkUFRhdS5yZWFkVG9CdWZmZXIoYnVmZk91dCwgMCwgZG9tYWluU2l6ZSpzRzEsIG8gKyBkb21haW5TaXplKnNHMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJDaXJjdWl0IHRvbyBiaWdcIik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDaXJjdWl0IHRvbyBiaWcgZm9yIHRoaXMgY3VydmVcIik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzQ29uc3RyYWludHMoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmZDb2VmZiA9IG5ldyBVaW50OEFycmF5KDEyICsgY3VydmUuRnIubjgpO1xuICAgICAgICBjb25zdCBidWZmQ29lZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmZDb2VmZi5idWZmZXIpO1xuICAgICAgICBjb25zdCBiT25lID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRnIubjgpO1xuICAgICAgICBjdXJ2ZS5Gci50b1JwckxFKGJPbmUsIDAsIGN1cnZlLkZyLmUoMSkpO1xuXG4gICAgICAgIGxldCByMWNzUG9zID0gMDtcblxuICAgICAgICBmdW5jdGlvbiByMWNzX3JlYWRVTEUzMigpIHtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBzUjFjcy5zbGljZShyMWNzUG9zLCByMWNzUG9zKzQpO1xuICAgICAgICAgICAgcjFjc1BvcyArPSA0O1xuICAgICAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvZWZzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgICAgIGZvciAobGV0IGM9MDsgYzxyMWNzLm5Db25zdHJhaW50czsgYysrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihjJTEwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHByb2Nlc3NpbmcgY29uc3RyYWludHM6ICR7Y30vJHtyMWNzLm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG5BID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MDsgaTxuQTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcyA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY29lZnAgPSByMWNzUG9zO1xuICAgICAgICAgICAgICAgIHIxY3NQb3MgKz0gY3VydmUuRnIubjg7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsMXQgPSBUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDEgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBjb25zdCBsMnQgPSBCRVRBVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwyID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBBW3NdID09PSBcInVuZGVmaW5lZFwiKSBBW3NdID0gW107XG4gICAgICAgICAgICAgICAgQVtzXS5wdXNoKFtsMXQsIGwxLCBjb2VmcF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHMgPD0gblB1YmxpYykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIElDW3NdID09PSBcInVuZGVmaW5lZFwiKSBJQ1tzXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBJQ1tzXS5wdXNoKFtsMnQsIGwyLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ1tzLSBuUHVibGljIC0xXSA9PT0gXCJ1bmRlZmluZWRcIikgQ1tzLSBuUHVibGljIC0xXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBDW3MgLSBuUHVibGljIC0xXS5wdXNoKFtsMnQsIGwyLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2Vmcy5wdXNoKFswLCBjLCBzLCBjb2VmcF0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBuQiA9IHIxY3NfcmVhZFVMRTMyKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8bkI7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHMgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvZWZwID0gcjFjc1BvcztcbiAgICAgICAgICAgICAgICByMWNzUG9zICs9IGN1cnZlLkZyLm44O1xuXG4gICAgICAgICAgICAgICAgY29uc3QgbDF0ID0gVEFVX0cxO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwxID0gc0cxKmM7XG4gICAgICAgICAgICAgICAgY29uc3QgbDJ0ID0gVEFVX0cyO1xuICAgICAgICAgICAgICAgIGNvbnN0IGwyID0gc0cyKmM7XG4gICAgICAgICAgICAgICAgY29uc3QgbDN0ID0gQUxQSEFUQVVfRzE7XG4gICAgICAgICAgICAgICAgY29uc3QgbDMgPSBzRzEqYztcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIEIxW3NdID09PSBcInVuZGVmaW5lZFwiKSBCMVtzXSA9IFtdO1xuICAgICAgICAgICAgICAgIEIxW3NdLnB1c2goW2wxdCwgbDEsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBCMltzXSA9PT0gXCJ1bmRlZmluZWRcIikgQjJbc10gPSBbXTtcbiAgICAgICAgICAgICAgICBCMltzXS5wdXNoKFtsMnQsIGwyLCBjb2VmcF0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHMgPD0gblB1YmxpYykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIElDW3NdID09PSBcInVuZGVmaW5lZFwiKSBJQ1tzXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBJQ1tzXS5wdXNoKFtsM3QsIGwzLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ1tzLSBuUHVibGljIC0xXSA9PT0gXCJ1bmRlZmluZWRcIikgQ1tzLSBuUHVibGljIC0xXSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBDW3MtIG5QdWJsaWMgLTFdLnB1c2goW2wzdCwgbDMsIGNvZWZwXSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29lZnMucHVzaChbMSwgYywgcywgY29lZnBdKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbkMgPSByMWNzX3JlYWRVTEUzMigpO1xuICAgICAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5DOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzID0gcjFjc19yZWFkVUxFMzIoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjb2VmcCA9IHIxY3NQb3M7XG4gICAgICAgICAgICAgICAgcjFjc1BvcyArPSBjdXJ2ZS5Gci5uODtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGwxdCA9IFRBVV9HMTtcbiAgICAgICAgICAgICAgICBjb25zdCBsMSA9IHNHMSpjO1xuICAgICAgICAgICAgICAgIGlmIChzIDw9IG5QdWJsaWMpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBJQ1tzXSA9PT0gXCJ1bmRlZmluZWRcIikgSUNbc10gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgSUNbc10ucHVzaChbbDF0LCBsMSwgY29lZnBdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIENbcy0gblB1YmxpYyAtMV0gPT09IFwidW5kZWZpbmVkXCIpIENbcy0gblB1YmxpYyAtMV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgQ1tzLSBuUHVibGljIC0xXS5wdXNoKFtsMXQsIGwxLCBjb2VmcF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHMgPSAwOyBzIDw9IG5QdWJsaWMgOyBzKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGwxdCA9IFRBVV9HMTtcbiAgICAgICAgICAgIGNvbnN0IGwxID0gc0cxKihyMWNzLm5Db25zdHJhaW50cyArIHMpO1xuICAgICAgICAgICAgY29uc3QgbDJ0ID0gQkVUQVRBVV9HMTtcbiAgICAgICAgICAgIGNvbnN0IGwyID0gc0cxKihyMWNzLm5Db25zdHJhaW50cyArIHMpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBBW3NdID09PSBcInVuZGVmaW5lZFwiKSBBW3NdID0gW107XG4gICAgICAgICAgICBBW3NdLnB1c2goW2wxdCwgbDEsIC0xXSk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIElDW3NdID09PSBcInVuZGVmaW5lZFwiKSBJQ1tzXSA9IFtdO1xuICAgICAgICAgICAgSUNbc10ucHVzaChbbDJ0LCBsMiwgLTFdKTtcbiAgICAgICAgICAgIGNvZWZzLnB1c2goWzAsIHIxY3MubkNvbnN0cmFpbnRzICsgcywgcywgLTFdKTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCA0KTtcblxuICAgICAgICBjb25zdCBidWZmU2VjdGlvbiA9IG5ldyBCaWdCdWZmZXIoY29lZnMubGVuZ3RoKigxMitjdXJ2ZS5Gci5uOCkgKyA0KTtcblxuICAgICAgICBjb25zdCBidWZmNCA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCBidWZmNFYgPSBuZXcgRGF0YVZpZXcoYnVmZjQuYnVmZmVyKTtcbiAgICAgICAgYnVmZjRWLnNldFVpbnQzMigwLCBjb2Vmcy5sZW5ndGgsIHRydWUpO1xuICAgICAgICBidWZmU2VjdGlvbi5zZXQoYnVmZjQpO1xuICAgICAgICBsZXQgY29lZnNQb3MgPSA0O1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29lZnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgY29lZmZzOiAke2l9LyR7Y29lZnMubGVuZ3RofWApO1xuICAgICAgICAgICAgd3JpdGVDb2VmKGNvZWZzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmU2VjdGlvbik7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgIGZ1bmN0aW9uIHdyaXRlQ29lZihjKSB7XG4gICAgICAgICAgICBidWZmQ29lZmZWLnNldFVpbnQzMigwLCBjWzBdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZDb2VmZlYuc2V0VWludDMyKDQsIGNbMV0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZkNvZWZmVi5zZXRVaW50MzIoOCwgY1syXSwgdHJ1ZSk7XG4gICAgICAgICAgICBsZXQgbjtcbiAgICAgICAgICAgIGlmIChjWzNdPj0wKSB7XG4gICAgICAgICAgICAgICAgbiA9IGN1cnZlLkZyLmZyb21ScHJMRShzUjFjcy5zbGljZShjWzNdLCBjWzNdICsgY3VydmUuRnIubjgpLCAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IGN1cnZlLkZyLmZyb21ScHJMRShiT25lLCAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IG5SMiA9IGN1cnZlLkZyLm11bChuLCBSMnIpO1xuICAgICAgICAgICAgY3VydmUuRnIudG9ScHJMRShidWZmQ29lZmYsIDEyLCBuUjIpO1xuICAgICAgICAgICAgYnVmZlNlY3Rpb24uc2V0KGJ1ZmZDb2VmZiwgY29lZnNQb3MpO1xuICAgICAgICAgICAgY29lZnNQb3MgKz0gYnVmZkNvZWZmLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcG9zZUFuZFdyaXRlUG9pbnRzKGlkU2VjdGlvbiwgZ3JvdXBOYW1lLCBhcnIsIHNlY3Rpb25OYW1lKSB7XG4gICAgICAgIGNvbnN0IENIVU5LX1NJWkU9IDE8PDE1O1xuICAgICAgICBjb25zdCBHID0gY3VydmVbZ3JvdXBOYW1lXTtcblxuICAgICAgICBoYXNoVTMyKGFyci5sZW5ndGgpO1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIGlkU2VjdGlvbik7XG5cbiAgICAgICAgbGV0IG9wUHJvbWlzZXMgPSBbXTtcblxuICAgICAgICBsZXQgaT0wO1xuICAgICAgICB3aGlsZSAoaTxhcnIubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgIGxldCB0PTA7XG4gICAgICAgICAgICB3aGlsZSAoKGk8YXJyLmxlbmd0aCkmJih0PGN1cnZlLnRtLmNvbmN1cnJlbmN5KSkge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIpICBsb2dnZXIuZGVidWcoYFdyaXRpbmcgcG9pbnRzIHN0YXJ0ICR7c2VjdGlvbk5hbWV9OiAke2l9LyR7YXJyLmxlbmd0aH1gKTtcbiAgICAgICAgICAgICAgICBsZXQgbiA9IDE7XG4gICAgICAgICAgICAgICAgbGV0IG5QID0gKGFycltpXSA/IGFycltpXS5sZW5ndGggOiAwKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGkgKyBuIDwgYXJyLmxlbmd0aCkgJiYgKG5QICsgKGFycltpK25dID8gYXJyW2krbl0ubGVuZ3RoIDogMCkgPCBDSFVOS19TSVpFKSAmJiAobjxDSFVOS19TSVpFKSkge1xuICAgICAgICAgICAgICAgICAgICBuUCArPSAoYXJyW2krbl0gPyBhcnJbaStuXS5sZW5ndGggOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgbiArKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgc3ViQXJyID0gYXJyLnNsaWNlKGksIGkgKyBuKTtcbiAgICAgICAgICAgICAgICBjb25zdCBfaSA9IGk7XG4gICAgICAgICAgICAgICAgb3BQcm9taXNlcy5wdXNoKGNvbXBvc2VBbmRXcml0ZVBvaW50c1RocmVhZChncm91cE5hbWUsIHN1YkFyciwgbG9nZ2VyLCBzZWN0aW9uTmFtZSkudGhlbiggKHIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ2dlcikgIGxvZ2dlci5kZWJ1ZyhgV3JpdGluZyBwb2ludHMgZW5kICR7c2VjdGlvbk5hbWV9OiAke19pfS8ke2Fyci5sZW5ndGh9YCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICBpICs9IG47XG4gICAgICAgICAgICAgICAgdCsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaz0wOyBrPHJlc3VsdC5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShyZXN1bHRba11bMF0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBHLmJhdGNoTEVNdG9VKHJlc3VsdFtrXVswXSk7XG4gICAgICAgICAgICAgICAgY3NIYXNoZXIudXBkYXRlKGJ1ZmYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3BQcm9taXNlcyA9IFtdO1xuXG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wb3NlQW5kV3JpdGVQb2ludHNUaHJlYWQoZ3JvdXBOYW1lLCBhcnIsIGxvZ2dlciwgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHaW4gPSBHLkYubjgqMjtcbiAgICAgICAgY29uc3Qgc0dtaWQgPSBHLkYubjgqMztcbiAgICAgICAgY29uc3Qgc0dvdXQgPSBHLkYubjgqMjtcbiAgICAgICAgbGV0IGZuRXhwLCBmbk11bHRpRXhwLCBmbkJhdGNoVG9BZmZpbmUsIGZuWmVybztcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIGZuRXhwID0gXCJnMW1fdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuTXVsdGlFeHAgPSBcImcxbV9tdWx0aWV4cEFmZmluZVwiO1xuICAgICAgICAgICAgZm5CYXRjaFRvQWZmaW5lID0gXCJnMW1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgZm5aZXJvID0gXCJnMW1femVyb1wiO1xuICAgICAgICB9IGVsc2UgaWYgKGdyb3VwTmFtZSA9PSBcIkcyXCIpIHtcbiAgICAgICAgICAgIGZuRXhwID0gXCJnMm1fdGltZXNTY2FsYXJBZmZpbmVcIjtcbiAgICAgICAgICAgIGZuTXVsdGlFeHAgPSBcImcybV9tdWx0aWV4cEFmZmluZVwiO1xuICAgICAgICAgICAgZm5CYXRjaFRvQWZmaW5lID0gXCJnMm1fYmF0Y2hUb0FmZmluZVwiO1xuICAgICAgICAgICAgZm5aZXJvID0gXCJnMm1femVyb1wiO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBncm91cFwiKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgYWNjID0wO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSBhY2MgKz0gYXJyW2ldID8gYXJyW2ldLmxlbmd0aCA6IDA7XG4gICAgICAgIGxldCBiQmFzZXMsIGJTY2FsYXJzO1xuICAgICAgICBpZiAoYWNjPiAyPDwxNCkge1xuICAgICAgICAgICAgYkJhc2VzID0gbmV3IEJpZ0J1ZmZlcihhY2Mqc0dpbik7XG4gICAgICAgICAgICBiU2NhbGFycyA9IG5ldyBCaWdCdWZmZXIoYWNjKmN1cnZlLkZyLm44KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJCYXNlcyA9IG5ldyBVaW50OEFycmF5KGFjYypzR2luKTtcbiAgICAgICAgICAgIGJTY2FsYXJzID0gbmV3IFVpbnQ4QXJyYXkoYWNjKmN1cnZlLkZyLm44KTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcEIgPTA7XG4gICAgICAgIGxldCBwUyA9MDtcblxuICAgICAgICBjb25zdCBzQnVmZnMgPSBbXG4gICAgICAgICAgICBzVGF1RzEsXG4gICAgICAgICAgICBzVGF1RzIsXG4gICAgICAgICAgICBzQWxwaGFUYXVHMSxcbiAgICAgICAgICAgIHNCZXRhVGF1RzFcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCBiT25lID0gbmV3IFVpbnQ4QXJyYXkoY3VydmUuRnIubjgpO1xuICAgICAgICBjdXJ2ZS5Gci50b1JwckxFKGJPbmUsIDAsIGN1cnZlLkZyLmUoMSkpO1xuXG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoIWFycltpXSkgY29udGludWU7XG4gICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8YXJyW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaikmJihqJTEwMDAwID09IDApKSAgbG9nZ2VyLmRlYnVnKGBDb25maWd1cmluZyBiaWcgYXJyYXkgJHtzZWN0aW9uTmFtZX06ICR7an0vJHthcnJbaV0ubGVuZ3RofWApO1xuICAgICAgICAgICAgICAgIGJCYXNlcy5zZXQoXG4gICAgICAgICAgICAgICAgICAgIHNCdWZmc1thcnJbaV1bal1bMF1dLnNsaWNlKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2pdWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2pdWzFdICsgc0dpblxuICAgICAgICAgICAgICAgICAgICApLCBvZmZzZXQqc0dpblxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKGFycltpXVtqXVsyXT49MCkge1xuICAgICAgICAgICAgICAgICAgICBiU2NhbGFycy5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICBzUjFjcy5zbGljZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV1bal1bMl0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldW2pdWzJdICsgY3VydmUuRnIubjhcbiAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQqY3VydmUuRnIubjhcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBiU2NhbGFycy5zZXQoYk9uZSwgb2Zmc2V0KmN1cnZlLkZyLm44KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGFyci5sZW5ndGg+MSkge1xuICAgICAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBiQmFzZXN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYlNjYWxhcnN9KTtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBhcnIubGVuZ3RoKnNHbWlkfSk7XG4gICAgICAgICAgICBwQiA9IDA7XG4gICAgICAgICAgICBwUyA9IDA7XG4gICAgICAgICAgICBsZXQgcEQgPTA7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8YXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhcnJbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuWmVybywgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgICAgIHBEICs9IHNHbWlkO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFycltpXS5sZW5ndGggPT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5FeHAsIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICAgICAge3ZhcjogMCwgb2Zmc2V0OiBwQn0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAxLCBvZmZzZXQ6IHBTfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YWw6IGN1cnZlLkZyLm44fSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogcER9XG4gICAgICAgICAgICAgICAgICAgIF19KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogZm5NdWx0aUV4cCwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IHBCfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHt2YXI6IDEsIG9mZnNldDogcFN9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogY3VydmUuRnIubjh9LFxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbDogYXJyW2ldLmxlbmd0aH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7dmFyOiAyLCBvZmZzZXQ6IHBEfVxuICAgICAgICAgICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBCICs9IHNHaW4qYXJyW2ldLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBwUyArPSBjdXJ2ZS5Gci5uOCphcnJbaV0ubGVuZ3RoO1xuICAgICAgICAgICAgICAgIHBEICs9IHNHbWlkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IGZuQmF0Y2hUb0FmZmluZSwgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICAgICAge3ZhbDogYXJyLmxlbmd0aH0sXG4gICAgICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICBdfSk7XG4gICAgICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogYXJyLmxlbmd0aCpzR291dH0pO1xuXG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgcmVzID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShiQmFzZXMsIGJTY2FsYXJzLCBsb2dnZXIsIHNlY3Rpb25OYW1lKTtcbiAgICAgICAgICAgIHJlcyA9IFsgRy50b0FmZmluZShyZXMpIF07XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBhc3luYyBmdW5jdGlvbiBoYXNoSFBvaW50cygpIHtcbiAgICAgICAgY29uc3QgQ0hVTktfU0laRSA9IDE8PDE0O1xuXG4gICAgICAgIGhhc2hVMzIoZG9tYWluU2l6ZS0xKTtcblxuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ZG9tYWluU2l6ZS0xOyBpKz0gQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgIGxvZ2dlci5kZWJ1ZyhgSGFzaGluZ0hQb2ludHM6ICR7aX0vJHtkb21haW5TaXplfWApO1xuICAgICAgICAgICAgY29uc3QgbiA9IE1hdGgubWluKGRvbWFpblNpemUtMSwgQ0hVTktfU0laRSk7XG4gICAgICAgICAgICBhd2FpdCBoYXNoSFBvaW50c0NodW5rKGksIG4pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHNDaHVuayhvZmZzZXQsIG5Qb2ludHMpIHtcbiAgICAgICAgY29uc3QgYnVmZjEgPSBhd2FpdCBmZFBUYXUucmVhZChuUG9pbnRzICpzRzEsIHNlY3Rpb25zUFRhdVsyXVswXS5wICsgKG9mZnNldCArIGRvbWFpblNpemUpKnNHMSk7XG4gICAgICAgIGNvbnN0IGJ1ZmYyID0gYXdhaXQgZmRQVGF1LnJlYWQoblBvaW50cyAqc0cxLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCArIG9mZnNldCpzRzEpO1xuICAgICAgICBjb25zdCBjb25jdXJyZW5jeT0gY3VydmUudG0uY29uY3VycmVuY3k7XG4gICAgICAgIGNvbnN0IG5Qb2ludHNQZXJUaHJlYWQgPSBNYXRoLmZsb29yKG5Qb2ludHMgLyBjb25jdXJyZW5jeSk7XG4gICAgICAgIGNvbnN0IG9wUHJvbWlzZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNvbmN1cnJlbmN5OyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuO1xuICAgICAgICAgICAgaWYgKGk8IGNvbmN1cnJlbmN5LTEpIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbiA9IG5Qb2ludHMgLSBpKm5Qb2ludHNQZXJUaHJlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobj09MCkgY29udGludWU7XG5cbiAgICAgICAgICAgIGNvbnN0IHN1YkJ1ZmYxID0gYnVmZjEuc2xpY2UoaSpuUG9pbnRzUGVyVGhyZWFkKnNHMSwgKGkqblBvaW50c1BlclRocmVhZCtuKSpzRzEpO1xuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjIgPSBidWZmMi5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBvcFByb21pc2VzLnB1c2goaGFzaEhQb2ludHNUaHJlYWQoc3ViQnVmZjEsIHN1YkJ1ZmYyKSk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFByb21pc2UuYWxsKG9wUHJvbWlzZXMpO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxyZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNzSGFzaGVyLnVwZGF0ZShyZXN1bHRbaV1bMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gaGFzaEhQb2ludHNUaHJlYWQoYnVmZjEsIGJ1ZmYyKSB7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmMS5ieXRlTGVuZ3RoL3NHMTtcbiAgICAgICAgY29uc3Qgc0dtaWQgPSBjdXJ2ZS5HMS5GLm44KjM7XG4gICAgICAgIGNvbnN0IHRhc2sgPSBbXTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NTRVRcIiwgdmFyOiAwLCBidWZmOiBidWZmMX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDEsIGJ1ZmY6IGJ1ZmYyfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DXCIsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHbWlkfSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpKyspIHtcbiAgICAgICAgICAgIHRhc2sucHVzaCh7XG4gICAgICAgICAgICAgICAgY21kOiBcIkNBTExcIixcbiAgICAgICAgICAgICAgICBmbk5hbWU6IFwiZzFtX3N1YkFmZmluZVwiLFxuICAgICAgICAgICAgICAgIHBhcmFtczogW1xuICAgICAgICAgICAgICAgICAgICB7dmFyOiAwLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMSwgb2Zmc2V0OiBpKnNHMX0sXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDIsIG9mZnNldDogaSpzR21pZH0sXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoVG9BZmZpbmVcIiwgcGFyYW1zOiBbXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgICAgIHt2YWw6IG5Qb2ludHN9LFxuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgIF19KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQ0FMTFwiLCBmbk5hbWU6IFwiZzFtX2JhdGNoTEVNdG9VXCIsIHBhcmFtczogW1xuICAgICAgICAgICAge3ZhcjogMn0sXG4gICAgICAgICAgICB7dmFsOiBuUG9pbnRzfSxcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICBdfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkdFVFwiLCBvdXQ6IDAsIHZhcjogMiwgbGVuOiBuUG9pbnRzKnNHMX0pO1xuXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGN1cnZlLnRtLnF1ZXVlQWN0aW9uKHRhc2spO1xuXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaGFzaFUzMihuKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBuZXcgVWludDhBcnJheSg0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgYnVmZlYuc2V0VWludDMyKDAsIG4sIGZhbHNlKTtcbiAgICAgICAgY3NIYXNoZXIudXBkYXRlKGJ1ZmYpO1xuICAgIH1cblxufVxuXG5cbiIsIlxuaW1wb3J0ICogYXMgYmluRmlsZVV0aWxzIGZyb20gXCJAaWRlbjMvYmluZmlsZXV0aWxzXCI7XG5pbXBvcnQgKiBhcyB6a2V5VXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMmV4cG9ydE1QQ1BhcmFtcyh6a2V5TmFtZSwgbXBjcGFyYW1zTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBjb25zdCB7ZmQ6IGZkWktleSwgc2VjdGlvbnM6IHNlY3Rpb25zWktleX0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRaS2V5LCBzZWN0aW9uc1pLZXkpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IHNHMiA9IGN1cnZlLkcyLkYubjgqMjtcblxuICAgIGNvbnN0IG1wY1BhcmFtcyA9IGF3YWl0IHprZXlVdGlscy5yZWFkTVBDUGFyYW1zKGZkWktleSwgY3VydmUsIHNlY3Rpb25zWktleSk7XG5cbiAgICBjb25zdCBmZE1QQ1BhcmFtcyA9IGF3YWl0IGZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlKG1wY3BhcmFtc05hbWUpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gVmVyaWZpY2F0aW9uIEtleSBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgYXdhaXQgd3JpdGVHMSh6a2V5LnZrX2FscGhhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzEoemtleS52a19iZXRhXzEpO1xuICAgIGF3YWl0IHdyaXRlRzIoemtleS52a19iZXRhXzIpO1xuICAgIGF3YWl0IHdyaXRlRzIoemtleS52a19nYW1tYV8yKTtcbiAgICBhd2FpdCB3cml0ZUcxKHprZXkudmtfZGVsdGFfMSk7XG4gICAgYXdhaXQgd3JpdGVHMih6a2V5LnZrX2RlbHRhXzIpO1xuXG4gICAgLy8gSUNcbiAgICBsZXQgYnVmZkJhc2VzSUM7XG4gICAgYnVmZkJhc2VzSUMgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uc1pLZXksIDMpO1xuICAgIGJ1ZmZCYXNlc0lDID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzSUMpO1xuXG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzSUMpO1xuXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgLy8gaCBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgY29uc3QgYnVmZkJhc2VzSF9Mb2RkID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA5KTtcblxuICAgIGxldCBidWZmQmFzZXNIX1RhdTtcbiAgICBidWZmQmFzZXNIX1RhdSA9IGF3YWl0IGN1cnZlLkcxLmZmdChidWZmQmFzZXNIX0xvZGQsIFwiYWZmaW5lXCIsIFwiamFjb2JpYW5cIiwgbG9nZ2VyKTtcbiAgICBidWZmQmFzZXNIX1RhdSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoQXBwbHlLZXkoYnVmZkJhc2VzSF9UYXUsIGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5lKDIpKSwgY3VydmUuRnIud1t6a2V5LnBvd2VyKzFdLCBcImphY29iaWFuXCIsIFwiYWZmaW5lXCIsIGxvZ2dlcik7XG5cbiAgICAvLyBSZW1vdmUgbGFzdCBlbGVtZW50LiAgKFRoZSBkZWdyZWUgb2YgSCB3aWxsIGJlIGFsd2F5cyBtLTIpXG4gICAgYnVmZkJhc2VzSF9UYXUgPSBidWZmQmFzZXNIX1RhdS5zbGljZSgwLCBidWZmQmFzZXNIX1RhdS5ieXRlTGVuZ3RoIC0gc0cxKTtcbiAgICBidWZmQmFzZXNIX1RhdSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0hfVGF1KTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNIX1RhdSk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBMIHNlY3Rpb25cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBsZXQgYnVmZkJhc2VzQztcbiAgICBidWZmQmFzZXNDID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA4KTtcbiAgICBidWZmQmFzZXNDID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQyk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQyk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBBIFNlY3Rpb24gKEMgc2VjdGlvbilcbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICBsZXQgYnVmZkJhc2VzQTtcbiAgICBidWZmQmFzZXNBID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA1KTtcbiAgICBidWZmQmFzZXNBID0gYXdhaXQgY3VydmUuRzEuYmF0Y2hMRU10b1UoYnVmZkJhc2VzQSk7XG4gICAgYXdhaXQgd3JpdGVQb2ludEFycmF5KFwiRzFcIiwgYnVmZkJhc2VzQSk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0IxO1xuICAgIGJ1ZmZCYXNlc0IxID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA2KTtcbiAgICBidWZmQmFzZXNCMSA9IGF3YWl0IGN1cnZlLkcxLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0IxKTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMVwiLCBidWZmQmFzZXNCMSk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy9cbiAgICAvLyBCMiBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4gICAgbGV0IGJ1ZmZCYXNlc0IyO1xuICAgIGJ1ZmZCYXNlc0IyID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgc2VjdGlvbnNaS2V5LCA3KTtcbiAgICBidWZmQmFzZXNCMiA9IGF3YWl0IGN1cnZlLkcyLmJhdGNoTEVNdG9VKGJ1ZmZCYXNlc0IyKTtcbiAgICBhd2FpdCB3cml0ZVBvaW50QXJyYXkoXCJHMlwiLCBidWZmQmFzZXNCMik7XG5cbiAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBhd2FpdCB3cml0ZVUzMihtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhQWZ0ZXIpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfcyk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zeCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoYy5kZWx0YS5nMl9zcHgpO1xuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShjLnRyYW5zY3JpcHQpO1xuICAgIH1cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkTVBDUGFyYW1zLmNsb3NlKCk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcyKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMik7XG4gICAgICAgIGN1cnZlLkcyLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZE1QQ1BhcmFtcy53cml0ZShidWZmKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZVBvaW50QXJyYXkoZ3JvdXBOYW1lLCBidWZmKSB7XG4gICAgICAgIGxldCBzRztcbiAgICAgICAgaWYgKGdyb3VwTmFtZSA9PSBcIkcxXCIpIHtcbiAgICAgICAgICAgIHNHID0gc0cxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc0cgPSBzRzI7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBidWZmU2l6ZSA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCBidWZmU2l6ZVYgPSBuZXcgRGF0YVZpZXcoYnVmZlNpemUuYnVmZmVyLCBidWZmU2l6ZS5ieXRlT2Zmc2V0LCBidWZmU2l6ZS5ieXRlTGVuZ3RoKTtcbiAgICAgICAgYnVmZlNpemVWLnNldFVpbnQzMigwLCBidWZmLmJ5dGVMZW5ndGggLyBzRywgZmFsc2UpO1xuXG4gICAgICAgIGF3YWl0IGZkTVBDUGFyYW1zLndyaXRlKGJ1ZmZTaXplKTtcbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVVMzIobikge1xuICAgICAgICBjb25zdCBidWZmU2l6ZSA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgICAgICBjb25zdCBidWZmU2l6ZVYgPSBuZXcgRGF0YVZpZXcoYnVmZlNpemUuYnVmZmVyLCBidWZmU2l6ZS5ieXRlT2Zmc2V0LCBidWZmU2l6ZS5ieXRlTGVuZ3RoKTtcbiAgICAgICAgYnVmZlNpemVWLnNldFVpbnQzMigwLCBuLCBmYWxzZSk7XG5cbiAgICAgICAgYXdhaXQgZmRNUENQYXJhbXMud3JpdGUoYnVmZlNpemUpO1xuICAgIH1cblxuXG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIGZhc3RGaWxlIGZyb20gXCJmYXN0ZmlsZVwiO1xuaW1wb3J0IHsgZ2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZSB9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0ICogYXMgbWlzYyBmcm9tIFwiLi9taXNjLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMmltcG9ydE1QQ1BhcmFtcyh6a2V5TmFtZU9sZCwgbXBjcGFyYW1zTmFtZSwgemtleU5hbWVOZXcsIG5hbWUsIGxvZ2dlcikge1xuXG4gICAgY29uc3Qge2ZkOiBmZFpLZXlPbGQsIHNlY3Rpb25zOiBzZWN0aW9uc1pLZXlPbGR9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lT2xkLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleUhlYWRlciA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmYWxzZSk7XG4gICAgaWYgKHprZXlIZWFkZXIucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleUhlYWRlci5xKTtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgY29uc3Qgb2xkTVBDUGFyYW1zID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRaS2V5T2xkLCBjdXJ2ZSwgc2VjdGlvbnNaS2V5T2xkKTtcbiAgICBjb25zdCBuZXdNUENQYXJhbXMgPSB7fTtcblxuICAgIGNvbnN0IGZkTVBDUGFyYW1zID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKG1wY3BhcmFtc05hbWUpO1xuXG4gICAgZmRNUENQYXJhbXMucG9zID1cbiAgICAgICAgc0cxKjMgKyBzRzIqMyArICAgICAgICAgICAgICAgICAgICAgLy8gdktleVxuICAgICAgICA4ICsgc0cxKnprZXlIZWFkZXIublZhcnMgKyAgICAgICAgICAgICAgLy8gSUMgKyBDXG4gICAgICAgIDQgKyBzRzEqKHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSArICAgICAvLyBIXG4gICAgICAgIDQgKyBzRzEqemtleUhlYWRlci5uVmFycyArICAgICAgICAgICAgICAvLyBBXG4gICAgICAgIDQgKyBzRzEqemtleUhlYWRlci5uVmFycyArICAgICAgICAgICAgICAvLyBCMVxuICAgICAgICA0ICsgc0cyKnprZXlIZWFkZXIublZhcnM7ICAgICAgICAgICAgICAgLy8gQjJcblxuICAgIC8vIGNzSGFzaFxuICAgIG5ld01QQ1BhcmFtcy5jc0hhc2ggPSAgYXdhaXQgZmRNUENQYXJhbXMucmVhZCg2NCk7XG5cbiAgICBjb25zdCBuQ29udHJpYnV0aW9ucyA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5Db250cmlidXRpb25zOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IHsgZGVsdGE6e30gfTtcbiAgICAgICAgYy5kZWx0YUFmdGVyID0gYXdhaXQgcmVhZEcxKGZkTVBDUGFyYW1zKTtcbiAgICAgICAgYy5kZWx0YS5nMV9zID0gYXdhaXQgcmVhZEcxKGZkTVBDUGFyYW1zKTtcbiAgICAgICAgYy5kZWx0YS5nMV9zeCA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgICAgIGMuZGVsdGEuZzJfc3B4ID0gYXdhaXQgcmVhZEcyKGZkTVBDUGFyYW1zKTtcbiAgICAgICAgYy50cmFuc2NyaXB0ID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZCg2NCk7XG4gICAgICAgIGlmIChpPG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgYy50eXBlID0gb2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0udHlwZTtcbiAgICAgICAgICAgIGlmIChjLnR5cGU9PTEpIHtcbiAgICAgICAgICAgICAgICBjLmJlYWNvbkhhc2ggPSBvbGRNUENQYXJhbXMuY29udHJpYnV0aW9uc1tpXS5iZWFjb25IYXNoO1xuICAgICAgICAgICAgICAgIGMubnVtSXRlcmF0aW9uc0V4cCA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm51bUl0ZXJhdGlvbnNFeHA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0ubmFtZSkge1xuICAgICAgICAgICAgICAgIGMubmFtZSA9IG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldLm5hbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICB9XG5cbiAgICBpZiAoIW1pc2MuaGFzaElzRXF1YWwobmV3TVBDUGFyYW1zLmNzSGFzaCwgb2xkTVBDUGFyYW1zLmNzSGFzaCkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSGFzaCBvZiB0aGUgb3JpZ2luYWwgY2lyY3VpdCBkb2VzIG5vdCBtYXRjaCB3aXRoIHRoZSBNUEMgb25lXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCA+IG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aCkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJUaGUgaW1wb2VydGVkIGZpbGUgZG9lcyBub3QgaW5jbHVkZSBuZXcgY29udHJpYnV0aW9uc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGZvciAobGV0IGk9MDsgaTxvbGRNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoIWNvbnRyaWJ1dGlvbklzRXF1YWwob2xkTVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0sIG5ld01QQ1BhcmFtcy5jb250cmlidXRpb25zW2ldKSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKGBQcmV2aW91cyBjb250cmlidXRpb24gJHtpfSBkb2VzIG5vdCBtYXRjaGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBTZXQgdGhlIHNhbWUgbmFtZSB0byBhbGwgbmV3IGNvbnRyaWJ1dGlvbnNcbiAgICBpZiAobmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpPW9sZE1QQ1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaTxuZXdNUENQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV3TVBDUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0ubmFtZSA9IG5hbWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmZFpLZXlOZXcgPSBhd2FpdCBiaW5GaWxlVXRpbHMuY3JlYXRlQmluRmlsZSh6a2V5TmFtZU5ldywgXCJ6a2V5XCIsIDEsIDEwKTtcbiAgICBmZE1QQ1BhcmFtcy5wb3MgPSAwO1xuXG4gICAgLy8gSGVhZGVyXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMTsgIC8vIGlnbm9yZSBhbHBoYTEgKGtlZXAgb3JpZ2luYWwpXG4gICAgZmRNUENQYXJhbXMucG9zICs9IHNHMTsgIC8vIGlnbm9yZSBiZXRhMVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzI7ICAvLyBpZ25vcmUgYmV0YTJcbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cyOyAgLy8gaWdub3JlIGdhbW1hMlxuICAgIHprZXlIZWFkZXIudmtfZGVsdGFfMSA9IGF3YWl0IHJlYWRHMShmZE1QQ1BhcmFtcyk7XG4gICAgemtleUhlYWRlci52a19kZWx0YV8yID0gYXdhaXQgcmVhZEcyKGZkTVBDUGFyYW1zKTtcbiAgICBhd2FpdCB6a2V5VXRpbHMud3JpdGVIZWFkZXIoZmRaS2V5TmV3LCB6a2V5SGVhZGVyKTtcblxuICAgIC8vIElDIChLZWVwIG9yaWdpbmFsKVxuICAgIGNvbnN0IG5JQyA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuSUMgIT0gemtleUhlYWRlci5uUHVibGljICsxKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBJQ1wiKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5TmV3LmRpc2NhcmQoKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmZE1QQ1BhcmFtcy5wb3MgKz0gc0cxKih6a2V5SGVhZGVyLm5QdWJsaWMrMSk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkWktleU9sZCwgc2VjdGlvbnNaS2V5T2xkLCBmZFpLZXlOZXcsIDMpO1xuXG4gICAgLy8gQ29lZmZzIChLZWVwIG9yaWdpbmFsKVxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCA0KTtcblxuICAgIC8vIEggU2VjdGlvblxuICAgIGNvbnN0IG5IID0gYXdhaXQgZmRNUENQYXJhbXMucmVhZFVCRTMyKCk7XG4gICAgaWYgKG5IICE9IHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBIXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBidWZmSDtcbiAgICBjb25zdCBidWZmVGF1VSA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoc0cxKih6a2V5SGVhZGVyLmRvbWFpblNpemUtMSkpO1xuICAgIGNvbnN0IGJ1ZmZUYXVMRU0gPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaFV0b0xFTShidWZmVGF1VSk7XG4gICAgYnVmZkggPSBuZXcgVWludDhBcnJheSh6a2V5SGVhZGVyLmRvbWFpblNpemUqc0cxKTtcbiAgICBidWZmSC5zZXQoYnVmZlRhdUxFTSk7ICAgLy8gTGV0IHRoZSBsYXN0IG9uZSB0byB6ZXJvLlxuICAgIGN1cnZlLkcxLnRvUnByTEVNKGJ1ZmZILCBzRzEqKHprZXlIZWFkZXIuZG9tYWluU2l6ZS0xKSwgY3VydmUuRzEuemVyb0FmZmluZSk7XG4gICAgY29uc3QgbjJJbnYgPSBjdXJ2ZS5Gci5uZWcoY3VydmUuRnIuaW52KGN1cnZlLkZyLmUoMikpKTtcbiAgICBjb25zdCB3SW52ID0gY3VydmUuRnIuaW52KGN1cnZlLkZyLndbemtleUhlYWRlci5wb3dlcisxXSk7XG4gICAgYnVmZkggPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaEFwcGx5S2V5KGJ1ZmZILCBuMkludiwgd0ludiwgXCJhZmZpbmVcIiwgXCJqYWNvYmlhblwiLCBsb2dnZXIpO1xuICAgIGJ1ZmZIID0gYXdhaXQgY3VydmUuRzEuaWZmdChidWZmSCwgXCJqYWNvYmlhblwiLCBcImFmZmluZVwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFdyaXRlU2VjdGlvbihmZFpLZXlOZXcsIDkpO1xuICAgIGF3YWl0IGZkWktleU5ldy53cml0ZShidWZmSCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbihmZFpLZXlOZXcpO1xuXG4gICAgLy8gQyBTZWN0aW9uIChMIHNlY3Rpb24pXG4gICAgY29uc3QgbkwgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkwgIT0gKHprZXlIZWFkZXIublZhcnMtemtleUhlYWRlci5uUHVibGljLTEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBMXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGxldCBidWZmTDtcbiAgICBidWZmTCA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWQoc0cxKih6a2V5SGVhZGVyLm5WYXJzLXprZXlIZWFkZXIublB1YmxpYy0xKSk7XG4gICAgYnVmZkwgPSBhd2FpdCBjdXJ2ZS5HMS5iYXRjaFV0b0xFTShidWZmTCk7XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleU5ldywgOCk7XG4gICAgYXdhaXQgZmRaS2V5TmV3LndyaXRlKGJ1ZmZMKTtcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kV3JpdGVTZWN0aW9uKGZkWktleU5ldyk7XG5cbiAgICAvLyBBIFNlY3Rpb25cbiAgICBjb25zdCBuQSA9IGF3YWl0IGZkTVBDUGFyYW1zLnJlYWRVQkUzMigpO1xuICAgIGlmIChuQSAhPSB6a2V5SGVhZGVyLm5WYXJzKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHBvaW50cyBpbiBBXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzEqKHprZXlIZWFkZXIublZhcnMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCA1KTtcblxuICAgIC8vIEIxIFNlY3Rpb25cbiAgICBjb25zdCBuQjEgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkIxICE9IHprZXlIZWFkZXIublZhcnMpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIEIxXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzEqKHprZXlIZWFkZXIublZhcnMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCA2KTtcblxuICAgIC8vIEIyIFNlY3Rpb25cbiAgICBjb25zdCBuQjIgPSBhd2FpdCBmZE1QQ1BhcmFtcy5yZWFkVUJFMzIoKTtcbiAgICBpZiAobkIyICE9IHprZXlIZWFkZXIublZhcnMpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBudW1iZXIgb2YgcG9pbnRzIGluIEIyXCIpO1xuICAgICAgICBhd2FpdCBmZFpLZXlOZXcuZGlzY2FyZCgpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZkTVBDUGFyYW1zLnBvcyArPSBzRzIqKHprZXlIZWFkZXIublZhcnMpO1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZFpLZXlPbGQsIHNlY3Rpb25zWktleU9sZCwgZmRaS2V5TmV3LCA3KTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyhmZFpLZXlOZXcsIGN1cnZlLCBuZXdNUENQYXJhbXMpO1xuXG4gICAgYXdhaXQgZmRNUENQYXJhbXMuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFpLZXlOZXcuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFpLZXlPbGQuY2xvc2UoKTtcblxuICAgIHJldHVybiB0cnVlO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcmVhZEcxKGZkKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZC5yZWFkKGN1cnZlLkcxLkYubjgqMik7XG4gICAgICAgIHJldHVybiBjdXJ2ZS5HMS5mcm9tUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDApO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJlYWRHMihmZCkge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cblxuICAgIGZ1bmN0aW9uIGNvbnRyaWJ1dGlvbklzRXF1YWwoYzEsIGMyKSB7XG4gICAgICAgIGlmICghY3VydmUuRzEuZXEoYzEuZGVsdGFBZnRlciAgICwgYzIuZGVsdGFBZnRlcikpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFjdXJ2ZS5HMS5lcShjMS5kZWx0YS5nMV9zICAgLCBjMi5kZWx0YS5nMV9zKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWN1cnZlLkcxLmVxKGMxLmRlbHRhLmcxX3N4ICAsIGMyLmRlbHRhLmcxX3N4KSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAoIWN1cnZlLkcyLmVxKGMxLmRlbHRhLmcyX3NweCAsIGMyLmRlbHRhLmcyX3NweCkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKGMxLnRyYW5zY3JpcHQsIGMyLnRyYW5zY3JpcHQpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuXG59XG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5jb25zdCBzYW1lUmF0aW8gPSBtaXNjLnNhbWVSYXRpbztcbmltcG9ydCB7aGFzaEcxLCBoYXNoUHViS2V5fSBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIENoYUNoYSwgQmlnQnVmZmVyIH0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UydmVyaWZ5RnJvbUluaXQoaW5pdEZpbGVOYW1lLCBwVGF1RmlsZU5hbWUsIHprZXlGaWxlTmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBsZXQgc3I7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qge2ZkLCBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleUZpbGVOYW1lLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkLCBzZWN0aW9ucywgZmFsc2UpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZ3JvdGgxNlwiKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBhY2N1bXVsYXRlZEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIGFjY3VtdWxhdGVkSGFzaGVyLnVwZGF0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBsZXQgY3VyRGVsdGEgPSBjdXJ2ZS5HMS5nO1xuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBjID0gbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV07XG4gICAgICAgIGNvbnN0IG91ckhhc2hlciA9IG1pc2MuY2xvbmVIYXNoZXIoYWNjdW11bGF0ZWRIYXNoZXIpO1xuXG4gICAgICAgIGhhc2hHMShvdXJIYXNoZXIsIGN1cnZlLCBjLmRlbHRhLmcxX3MpO1xuICAgICAgICBoYXNoRzEob3VySGFzaGVyLCBjdXJ2ZSwgYy5kZWx0YS5nMV9zeCk7XG5cbiAgICAgICAgaWYgKCFtaXNjLmhhc2hJc0VxdWFsKG91ckhhc2hlci5kaWdlc3QoKSwgYy50cmFuc2NyaXB0KSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IEluY29uc2lzdGVudCB0cmFuc2NyaXB0IGApO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGVsdGFfZzJfc3AgPSBoYXNoVG9HMihjdXJ2ZSwgYy50cmFuc2NyaXB0KTtcblxuICAgICAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgYy5kZWx0YS5nMV9zLCBjLmRlbHRhLmcxX3N4LCBkZWx0YV9nMl9zcCwgYy5kZWx0YS5nMl9zcHgpO1xuICAgICAgICBpZiAoc3IgIT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBJTlZBTElEKCR7aX0pOiBwdWJsaWMga2V5IEcxIGFuZCBHMiBkbyBub3QgaGF2ZSB0aGUgc2FtZSByYXRpb24gYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VyRGVsdGEsIGMuZGVsdGFBZnRlciwgZGVsdGFfZzJfc3AsIGMuZGVsdGEuZzJfc3B4KTtcbiAgICAgICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogZGVsdGFBZnRlciBkb2VzIG5vdCBmaWxsb3cgdGhlIHB1YmxpYyBrZXkgYCk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYy50eXBlID09IDEpIHtcbiAgICAgICAgICAgIGNvbnN0IHJuZyA9IGF3YWl0IG1pc2Mucm5nRnJvbUJlYWNvblBhcmFtcyhjLmJlYWNvbkhhc2gsIGMubnVtSXRlcmF0aW9uc0V4cCk7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZF9wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgICAgICAgICBjb25zdCBleHBlY3RlZF9nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICAgICAgICAgIGNvbnN0IGV4cGVjdGVkX2cxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNGcihleHBlY3RlZF9nMV9zLCBleHBlY3RlZF9wcnZLZXkpKTtcbiAgICAgICAgICAgIGlmIChjdXJ2ZS5HMS5lcShleHBlY3RlZF9nMV9zLCBjLmRlbHRhLmcxX3MpICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYElOVkFMSUQoJHtpfSk6IEtleSBvZiB0aGUgYmVhY29uIGRvZXMgbm90IG1hdGNoLiBnMV9zIGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjdXJ2ZS5HMS5lcShleHBlY3RlZF9nMV9zeCwgYy5kZWx0YS5nMV9zeCkgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgSU5WQUxJRCgke2l9KTogS2V5IG9mIHRoZSBiZWFjb24gZG9lcyBub3QgbWF0Y2guIGcxX3N4IGApO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGhhc2hQdWJLZXkoYWNjdW11bGF0ZWRIYXNoZXIsIGN1cnZlLCBjKTtcblxuICAgICAgICBjb25zdCBjb250cmlidXRpb25IYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICAgICAgaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjKTtcblxuICAgICAgICBjLmNvbnRyaWJ1dGlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICAgICAgY3VyRGVsdGEgPSBjLmRlbHRhQWZ0ZXI7XG4gICAgfVxuXG5cbiAgICBjb25zdCB7ZmQ6IGZkSW5pdCwgc2VjdGlvbnM6IHNlY3Rpb25zSW5pdH0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoaW5pdEZpbGVOYW1lLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleUluaXQgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZEluaXQsIHNlY3Rpb25zSW5pdCwgZmFsc2UpO1xuXG4gICAgaWYgKHprZXlJbml0LnByb3RvY29sICE9IFwiZ3JvdGgxNlwiKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXlpbml0IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgaWYgKCAgKCFTY2FsYXIuZXEoemtleUluaXQucSwgemtleS5xKSlcbiAgICAgICAgfHwoIVNjYWxhci5lcSh6a2V5SW5pdC5yLCB6a2V5LnIpKVxuICAgICAgICB8fCh6a2V5SW5pdC5uOHEgIT0gemtleS5uOHEpXG4gICAgICAgIHx8KHprZXlJbml0Lm44ciAhPSB6a2V5Lm44cikpXG4gICAge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgRGlmZmVyZW50IGN1cnZlc1wiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICggICh6a2V5SW5pdC5uVmFycyAhPSB6a2V5Lm5WYXJzKVxuICAgICAgICB8fCh6a2V5SW5pdC5uUHVibGljICE9ICB6a2V5Lm5QdWJsaWMpXG4gICAgICAgIHx8KHprZXlJbml0LmRvbWFpblNpemUgIT0gemtleS5kb21haW5TaXplKSlcbiAgICB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBEaWZmZXJlbnQgY2lyY3VpdCBwYXJhbWV0ZXJzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCFjdXJ2ZS5HMS5lcSh6a2V5LnZrX2FscGhhXzEsIHprZXlJbml0LnZrX2FscGhhXzEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGFscGhhMVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKHprZXkudmtfYmV0YV8xLCB6a2V5SW5pdC52a19iZXRhXzEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGJldGExXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICghY3VydmUuRzIuZXEoemtleS52a19iZXRhXzIsIHprZXlJbml0LnZrX2JldGFfMikpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgYmV0YTJcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCFjdXJ2ZS5HMi5lcSh6a2V5LnZrX2dhbW1hXzIsIHprZXlJbml0LnZrX2dhbW1hXzIpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGdhbW1hMlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIWN1cnZlLkcxLmVxKHprZXkudmtfZGVsdGFfMSwgY3VyRGVsdGEpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGRlbHRhMVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgY3VydmUuRzEuZywgY3VyRGVsdGEsIGN1cnZlLkcyLmcsIHprZXkudmtfZGVsdGFfMik7XG4gICAgaWYgKHNyICE9PSB0cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIklOVkFMSUQ6ICBJbnZhbGlkIGRlbHRhMlwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IG1wY1BhcmFtc0luaXQgPSBhd2FpdCB6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyhmZEluaXQsIGN1cnZlLCBzZWN0aW9uc0luaXQpO1xuICAgIGlmICghbWlzYy5oYXNoSXNFcXVhbChtcGNQYXJhbXMuY3NIYXNoLCBtcGNQYXJhbXNJbml0LmNzSGFzaCkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIENpcmN1aXQgZG9lcyBub3QgbWF0Y2hcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBzaXplcyBvZiBzZWN0aW9uc1xuICAgIGlmIChzZWN0aW9uc1s4XVswXS5zaXplICE9IHNHMSooemtleS5uVmFycy16a2V5Lm5QdWJsaWMtMSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgTCBzZWN0aW9uIHNpemVcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoc2VjdGlvbnNbOV1bMF0uc2l6ZSAhPSBzRzEqKHprZXkuZG9tYWluU2l6ZSkpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSU5WQUxJRDogIEludmFsaWQgSCBzZWN0aW9uIHNpemVcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgc3M7XG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgMyk7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJTlZBTElEOiAgSUMgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgNCk7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJDb2VmZnMgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgNSk7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJBIHNlY3Rpb24gaXMgbm90IGlkZW50aWNhbFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHNzID0gYXdhaXQgYmluRmlsZVV0aWxzLnNlY3Rpb25Jc0VxdWFsKGZkLCBzZWN0aW9ucywgZmRJbml0LCBzZWN0aW9uc0luaXQsIDYpO1xuICAgIGlmICghc3MpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiQjEgc2VjdGlvbiBpcyBub3QgaWRlbnRpY2FsXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwoZmQsIHNlY3Rpb25zLCBmZEluaXQsIHNlY3Rpb25zSW5pdCwgNyk7XG4gICAgaWYgKCFzcykge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJCMiBzZWN0aW9uIGlzIG5vdCBpZGVudGljYWxcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBMXG4gICAgc3IgPSBhd2FpdCBzZWN0aW9uSGFzU2FtZVJhdGlvKFwiRzFcIiwgZmRJbml0LCBzZWN0aW9uc0luaXQsIGZkLCBzZWN0aW9ucywgOCwgemtleS52a19kZWx0YV8yLCB6a2V5SW5pdC52a19kZWx0YV8yLCBcIkwgc2VjdGlvblwiKTtcbiAgICBpZiAoc3IhPT10cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkwgc2VjdGlvbiBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIENoZWNrIEhcbiAgICBzciA9IGF3YWl0IHNhbWVSYXRpb0goKTtcbiAgICBpZiAoc3IhPT10cnVlKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIkggc2VjdGlvbiBkb2VzIG5vdCBtYXRjaFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChtcGNQYXJhbXMuY3NIYXNoLCBcIkNpcmN1aXQgSGFzaDogXCIpKTtcblxuICAgIGF3YWl0IGZkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmRJbml0LmNsb3NlKCk7XG5cbiAgICBmb3IgKGxldCBpPW1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aC0xOyBpPj0wOyBpLS0pIHtcbiAgICAgICAgY29uc3QgYyA9IG1wY1BhcmFtcy5jb250cmlidXRpb25zW2ldO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjLmNvbnRyaWJ1dGlvbkhhc2gsIGBjb250cmlidXRpb24gIyR7aSsxfSAke2MubmFtZSA/IGMubmFtZSA6IFwiXCJ9OmApKTtcbiAgICAgICAgaWYgKGMudHlwZSA9PSAxKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgQmVhY29uIGdlbmVyYXRvcjogJHttaXNjLmJ5dGVBcnJheTJoZXgoYy5iZWFjb25IYXNoKX1gKTtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGBCZWFjb24gaXRlcmF0aW9ucyBFeHA6ICR7Yy5udW1JdGVyYXRpb25zRXhwfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiWktleSBPayFcIik7XG5cbiAgICByZXR1cm4gdHJ1ZTtcblxuXG4gICAgYXN5bmMgZnVuY3Rpb24gc2VjdGlvbkhhc1NhbWVSYXRpbyhncm91cE5hbWUsIGZkMSwgc2VjdGlvbnMxLCBmZDIsIHNlY3Rpb25zMiwgaWRTZWN0aW9uLCBnMnNwLCBnMnNweCwgc2VjdGlvbk5hbWUpIHtcbiAgICAgICAgY29uc3QgTUFYX0NIVU5LX1NJWkUgPSAxPDwyMDtcbiAgICAgICAgY29uc3QgRyA9IGN1cnZlW2dyb3VwTmFtZV07XG4gICAgICAgIGNvbnN0IHNHID0gRy5GLm44KjI7XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uKGZkMSwgc2VjdGlvbnMxLCBpZFNlY3Rpb24pO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZDIsIHNlY3Rpb25zMiwgaWRTZWN0aW9uKTtcblxuICAgICAgICBsZXQgUjEgPSBHLnplcm87XG4gICAgICAgIGxldCBSMiA9IEcuemVybztcblxuICAgICAgICBjb25zdCBuUG9pbnRzID0gc2VjdGlvbnMxW2lkU2VjdGlvbl1bMF0uc2l6ZSAvIHNHO1xuXG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuUG9pbnRzOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYFNhbWUgcmF0aW8gY2hlY2sgJHtzZWN0aW9uTmFtZX06ICAke2l9LyR7blBvaW50c31gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbihuUG9pbnRzIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuICAgICAgICAgICAgY29uc3QgYmFzZXMxID0gYXdhaXQgZmQxLnJlYWQobipzRyk7XG4gICAgICAgICAgICBjb25zdCBiYXNlczIgPSBhd2FpdCBmZDIucmVhZChuKnNHKTtcblxuICAgICAgICAgICAgY29uc3Qgc2NhbGFycyA9IG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCpuKTtcblxuICAgICAgICAgICAgY29uc3QgcjEgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJhc2VzMSwgc2NhbGFycyk7XG4gICAgICAgICAgICBjb25zdCByMiA9IGF3YWl0IEcubXVsdGlFeHBBZmZpbmUoYmFzZXMyLCBzY2FsYXJzKTtcblxuICAgICAgICAgICAgUjEgPSBHLmFkZChSMSwgcjEpO1xuICAgICAgICAgICAgUjIgPSBHLmFkZChSMiwgcjIpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGJpbkZpbGVVdGlscy5lbmRSZWFkU2VjdGlvbihmZDEpO1xuICAgICAgICBhd2FpdCBiaW5GaWxlVXRpbHMuZW5kUmVhZFNlY3Rpb24oZmQyKTtcblxuICAgICAgICBpZiAoblBvaW50cyA9PSAwKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgUjEsIFIyLCBnMnNwLCBnMnNweCk7XG4gICAgICAgIGlmIChzciAhPT0gdHJ1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHNhbWVSYXRpb0goKSB7XG4gICAgICAgIGNvbnN0IE1BWF9DSFVOS19TSVpFID0gMTw8MjA7XG4gICAgICAgIGNvbnN0IEcgPSBjdXJ2ZS5HMTtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgY29uc3Qgc0cgPSBHLkYubjgqMjtcblxuICAgICAgICBjb25zdCB7ZmQ6IGZkUFRhdSwgc2VjdGlvbnM6IHNlY3Rpb25zUFRhdX0gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUocFRhdUZpbGVOYW1lLCBcInB0YXVcIiwgMSk7XG5cbiAgICAgICAgbGV0IGJ1ZmZfciA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogemtleS5uOHIpO1xuXG4gICAgICAgIGNvbnN0IHNlZWQ9IG5ldyBBcnJheSg4KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPDg7IGkrKykge1xuICAgICAgICAgICAgc2VlZFtpXSA9IG1pc2MucmVhZFVJbnQzMkJFKG1pc2MuZ2V0UmFuZG9tQnl0ZXMoNCksIDApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJuZyA9IG5ldyBDaGFDaGEoc2VlZCk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTx6a2V5LmRvbWFpblNpemUtMTsgaSsrKSB7ICAgLy8gTm90ZSB0aGF0IGxhc3Qgb25lIGlzIHplcm9cbiAgICAgICAgICAgIGNvbnN0IGUgPSBGci5mcm9tUm5nKHJuZyk7XG4gICAgICAgICAgICBGci50b1JwckxFKGJ1ZmZfciwgaSp6a2V5Lm44ciwgZSk7XG4gICAgICAgIH1cbiAgICAgICAgRnIudG9ScHJMRShidWZmX3IsICh6a2V5LmRvbWFpblNpemUtMSkqemtleS5uOHIsIEZyLnplcm8pO1xuXG4gICAgICAgIGxldCBSMSA9IEcuemVybztcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHprZXkuZG9tYWluU2l6ZTsgaSArPSBNQVhfQ0hVTktfU0laRSkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGBIIFZlcmlmaWNhdGlvbih0YXUpOiAgJHtpfS8ke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG4gPSBNYXRoLm1pbih6a2V5LmRvbWFpblNpemUgLSBpLCBNQVhfQ0hVTktfU0laRSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYxID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cqbiwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyB6a2V5LmRvbWFpblNpemUqc0cgKyBpKnNHKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYyID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cqbiwgc2VjdGlvbnNQVGF1WzJdWzBdLnAgKyBpKnNHKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZkIgPSBhd2FpdCBiYXRjaFN1YnRyYWN0KGJ1ZmYxLCBidWZmMik7XG4gICAgICAgICAgICBjb25zdCBidWZmUyA9IGJ1ZmZfci5zbGljZShpKnprZXkubjhyLCAoaStuKSp6a2V5Lm44cik7XG4gICAgICAgICAgICBjb25zdCByID0gYXdhaXQgRy5tdWx0aUV4cEFmZmluZShidWZmQiwgYnVmZlMpO1xuXG4gICAgICAgICAgICBSMSA9IEcuYWRkKFIxLCByKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGN1bGF0ZSBvZGQgY29lZmZpY2llbnRzIGluIHRyYW5zZm9ybWVkIGRvbWFpblxuXG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZfcik7XG4gICAgICAgIC8vIGNvbnN0IGZpcnN0ID0gY3VydmUuRnIubmVnKGN1cnZlLkZyLmludihjdXJ2ZS5Gci5lKDIpKSk7XG4gICAgICAgIC8vIFdvcmtzKjIgICBjb25zdCBmaXJzdCA9IGN1cnZlLkZyLm5lZyhjdXJ2ZS5Gci5lKDIpKTtcblxuXG4gICAgICAgIGxldCBmaXJzdDtcblxuICAgICAgICBpZiAoemtleS5wb3dlciA8IEZyLnMpIHtcbiAgICAgICAgICAgIGZpcnN0ID0gRnIubmVnKEZyLmUoMikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc21hbGxfbSAgPSAyICoqIEZyLnM7XG4gICAgICAgICAgICBjb25zdCBzaGlmdF90b19zbWFsbF9tID0gRnIuZXhwKEZyLnNoaWZ0LCBzbWFsbF9tKTtcbiAgICAgICAgICAgIGZpcnN0ID0gRnIuc3ViKCBzaGlmdF90b19zbWFsbF9tLCBGci5vbmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29uc3QgaW5jID0gY3VydmUuRnIuaW52KGN1cnZlLlBGci53W3prZXkucG93ZXIrMV0pO1xuICAgICAgICBjb25zdCBpbmMgPSB6a2V5LnBvd2VyIDwgRnIucyA/IEZyLndbemtleS5wb3dlcisxXSA6IEZyLnNoaWZ0O1xuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5iYXRjaEFwcGx5S2V5KGJ1ZmZfciwgZmlyc3QsIGluYyk7XG4gICAgICAgIGJ1ZmZfciA9IGF3YWl0IEZyLmZmdChidWZmX3IpO1xuICAgICAgICBidWZmX3IgPSBhd2FpdCBGci5iYXRjaEZyb21Nb250Z29tZXJ5KGJ1ZmZfcik7XG5cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLnN0YXJ0UmVhZFVuaXF1ZVNlY3Rpb24oZmQsIHNlY3Rpb25zLCA5KTtcbiAgICAgICAgbGV0IFIyID0gRy56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8emtleS5kb21haW5TaXplOyBpICs9IE1BWF9DSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYEggVmVyaWZpY2F0aW9uKGxhZ3JhbmdlKTogICR7aX0vJHt6a2V5LmRvbWFpblNpemV9YCk7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4oemtleS5kb21haW5TaXplIC0gaSwgTUFYX0NIVU5LX1NJWkUpO1xuXG4gICAgICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRypuKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZTID0gYnVmZl9yLnNsaWNlKGkqemtleS5uOHIsIChpK24pKnprZXkubjhyKTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSBhd2FpdCBHLm11bHRpRXhwQWZmaW5lKGJ1ZmYsIGJ1ZmZTKTtcblxuICAgICAgICAgICAgUjIgPSBHLmFkZChSMiwgcik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgICAgICBzciA9IGF3YWl0IHNhbWVSYXRpbyhjdXJ2ZSwgUjEsIFIyLCB6a2V5LnZrX2RlbHRhXzIsIHprZXlJbml0LnZrX2RlbHRhXzIpO1xuICAgICAgICBpZiAoc3IgIT09IHRydWUpIHJldHVybiBmYWxzZTtcblxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gYmF0Y2hTdWJ0cmFjdChidWZmMSwgYnVmZjIpIHtcbiAgICAgICAgY29uc3Qgc0cgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmMS5ieXRlTGVuZ3RoIC8gc0c7XG4gICAgICAgIGNvbnN0IGNvbmN1cnJlbmN5PSBjdXJ2ZS50bS5jb25jdXJyZW5jeTtcbiAgICAgICAgY29uc3QgblBvaW50c1BlclRocmVhZCA9IE1hdGguZmxvb3IoblBvaW50cyAvIGNvbmN1cnJlbmN5KTtcbiAgICAgICAgY29uc3Qgb3BQcm9taXNlcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8Y29uY3VycmVuY3k7IGkrKykge1xuICAgICAgICAgICAgbGV0IG47XG4gICAgICAgICAgICBpZiAoaTwgY29uY3VycmVuY3ktMSkge1xuICAgICAgICAgICAgICAgIG4gPSBuUG9pbnRzUGVyVGhyZWFkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuID0gblBvaW50cyAtIGkqblBvaW50c1BlclRocmVhZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuPT0wKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3Qgc3ViQnVmZjEgPSBidWZmMS5zbGljZShpKm5Qb2ludHNQZXJUaHJlYWQqc0cxLCAoaSpuUG9pbnRzUGVyVGhyZWFkK24pKnNHMSk7XG4gICAgICAgICAgICBjb25zdCBzdWJCdWZmMiA9IGJ1ZmYyLnNsaWNlKGkqblBvaW50c1BlclRocmVhZCpzRzEsIChpKm5Qb2ludHNQZXJUaHJlYWQrbikqc0cxKTtcbiAgICAgICAgICAgIG9wUHJvbWlzZXMucHVzaChiYXRjaFN1YnRyYWN0VGhyZWFkKHN1YkJ1ZmYxLCBzdWJCdWZmMikpO1xuICAgICAgICB9XG5cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBQcm9taXNlLmFsbChvcFByb21pc2VzKTtcblxuICAgICAgICBjb25zdCBmdWxsQnVmZk91dCA9IG5ldyBVaW50OEFycmF5KG5Qb2ludHMqc0cpO1xuICAgICAgICBsZXQgcCA9MDtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgZnVsbEJ1ZmZPdXQuc2V0KHJlc3VsdFtpXVswXSwgcCk7XG4gICAgICAgICAgICBwKz1yZXN1bHRbaV1bMF0uYnl0ZUxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmdWxsQnVmZk91dDtcbiAgICB9XG5cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGJhdGNoU3VidHJhY3RUaHJlYWQoYnVmZjEsIGJ1ZmYyKSB7XG4gICAgICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjgqMjtcbiAgICAgICAgY29uc3Qgc0dtaWQgPSBjdXJ2ZS5HMS5GLm44KjM7XG4gICAgICAgIGNvbnN0IG5Qb2ludHMgPSBidWZmMS5ieXRlTGVuZ3RoL3NHMTtcbiAgICAgICAgY29uc3QgdGFzayA9IFtdO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJBTExPQ1NFVFwiLCB2YXI6IDAsIGJ1ZmY6IGJ1ZmYxfSk7XG4gICAgICAgIHRhc2sucHVzaCh7Y21kOiBcIkFMTE9DU0VUXCIsIHZhcjogMSwgYnVmZjogYnVmZjJ9KTtcbiAgICAgICAgdGFzay5wdXNoKHtjbWQ6IFwiQUxMT0NcIiwgdmFyOiAyLCBsZW46IG5Qb2ludHMqc0dtaWR9KTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPG5Qb2ludHM7IGkrKykge1xuICAgICAgICAgICAgdGFzay5wdXNoKHtcbiAgICAgICAgICAgICAgICBjbWQ6IFwiQ0FMTFwiLFxuICAgICAgICAgICAgICAgIGZuTmFtZTogXCJnMW1fc3ViQWZmaW5lXCIsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBbXG4gICAgICAgICAgICAgICAgICAgIHt2YXI6IDAsIG9mZnNldDogaSpzRzF9LFxuICAgICAgICAgICAgICAgICAgICB7dmFyOiAxLCBvZmZzZXQ6IGkqc0cxfSxcbiAgICAgICAgICAgICAgICAgICAge3ZhcjogMiwgb2Zmc2V0OiBpKnNHbWlkfSxcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJDQUxMXCIsIGZuTmFtZTogXCJnMW1fYmF0Y2hUb0FmZmluZVwiLCBwYXJhbXM6IFtcbiAgICAgICAgICAgIHt2YXI6IDJ9LFxuICAgICAgICAgICAge3ZhbDogblBvaW50c30sXG4gICAgICAgICAgICB7dmFyOiAyfSxcbiAgICAgICAgXX0pO1xuICAgICAgICB0YXNrLnB1c2goe2NtZDogXCJHRVRcIiwgb3V0OiAwLCB2YXI6IDIsIGxlbjogblBvaW50cypzRzF9KTtcblxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS50bS5xdWV1ZUFjdGlvbih0YXNrKTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgbmV3WktleSBmcm9tIFwiLi96a2V5X25ldy5qc1wiO1xuaW1wb3J0IHBoYXNlMnZlcmlmeUZyb21Jbml0IGZyb20gXCIuL3prZXlfdmVyaWZ5X2Zyb21pbml0LmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBoYXNlMnZlcmlmeUZyb21SMWNzKHIxY3NGaWxlTmFtZSwgcFRhdUZpbGVOYW1lLCB6a2V5RmlsZU5hbWUsIGxvZ2dlcikge1xuXG4gICAgLy8gY29uc3QgaW5pdEZpbGVOYW1lID0gXCJ+XCIgKyB6a2V5RmlsZU5hbWUgKyBcIi5pbml0XCI7XG4gICAgY29uc3QgaW5pdEZpbGVOYW1lID0ge3R5cGU6IFwiYmlnTWVtXCJ9O1xuICAgIGF3YWl0IG5ld1pLZXkocjFjc0ZpbGVOYW1lLCBwVGF1RmlsZU5hbWUsIGluaXRGaWxlTmFtZSwgbG9nZ2VyKTtcblxuICAgIHJldHVybiBhd2FpdCBwaGFzZTJ2ZXJpZnlGcm9tSW5pdChpbml0RmlsZU5hbWUsIHBUYXVGaWxlTmFtZSwgemtleUZpbGVOYW1lLCBsb2dnZXIpO1xufVxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCAqIGFzIHprZXlVdGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21RIGFzIGdldEN1cnZlIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGhhc2hUb0cyIGFzIGhhc2hUb0cyIH0gZnJvbSBcIi4va2V5cGFpci5qc1wiO1xuaW1wb3J0IHsgYXBwbHlLZXlUb1NlY3Rpb24gfSBmcm9tIFwiLi9tcGNfYXBwbHlrZXkuanNcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGhhc2UyY29udHJpYnV0ZSh6a2V5TmFtZU9sZCwgemtleU5hbWVOZXcsIG5hbWUsIGVudHJvcHksIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IHtmZDogZmRPbGQsIHNlY3Rpb25zOiBzZWN0aW9uc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUoemtleU5hbWVPbGQsIFwiemtleVwiLCAyKTtcbiAgICBjb25zdCB6a2V5ID0gYXdhaXQgemtleVV0aWxzLnJlYWRIZWFkZXIoZmRPbGQsIHNlY3Rpb25zKTtcbiAgICBpZiAoemtleS5wcm90b2NvbCAhPSBcImdyb3RoMTZcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IGdyb3RoMTZcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRPbGQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHprZXlOYW1lTmV3LCBcInprZXlcIiwgMSwgMTApO1xuXG5cbiAgICBjb25zdCBybmcgPSBhd2FpdCBtaXNjLmdldFJhbmRvbVJuZyhlbnRyb3B5KTtcblxuICAgIGNvbnN0IHRyYW5zY3JpcHRIYXNoZXIgPSBCbGFrZTJiKDY0KTtcbiAgICB0cmFuc2NyaXB0SGFzaGVyLnVwZGF0ZShtcGNQYXJhbXMuY3NIYXNoKTtcbiAgICBmb3IgKGxldCBpPTA7IGk8bXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdXRpbHMuaGFzaFB1YktleSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnNbaV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGN1ckNvbnRyaWJ1dGlvbiA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YSA9IHt9O1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkgPSBjdXJ2ZS5Gci5mcm9tUm5nKHJuZyk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MgPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS5mcm9tUm5nKHJuZykpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zKTtcbiAgICB1dGlscy5oYXNoRzEodHJhbnNjcmlwdEhhc2hlciwgY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zeCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLnRyYW5zY3JpcHQgPSB0cmFuc2NyaXB0SGFzaGVyLmRpZ2VzdCgpO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMl9zcCA9IGhhc2hUb0cyKGN1cnZlLCBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NweCA9IGN1cnZlLkcyLnRvQWZmaW5lKGN1cnZlLkcyLnRpbWVzRnIoY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KSk7XG5cbiAgICB6a2V5LnZrX2RlbHRhXzEgPSBjdXJ2ZS5HMS50aW1lc0ZyKHprZXkudmtfZGVsdGFfMSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG4gICAgemtleS52a19kZWx0YV8yID0gY3VydmUuRzIudGltZXNGcih6a2V5LnZrX2RlbHRhXzIsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuXG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhQWZ0ZXIgPSB6a2V5LnZrX2RlbHRhXzE7XG5cbiAgICBjdXJDb250cmlidXRpb24udHlwZSA9IDA7XG4gICAgaWYgKG5hbWUpIGN1ckNvbnRyaWJ1dGlvbi5uYW1lID0gbmFtZTtcblxuICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZUhlYWRlcihmZE5ldywgemtleSk7XG5cbiAgICAvLyBJQ1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcblxuICAgIC8vIENvZWZmcyAoS2VlcCBvcmlnaW5hbClcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG5cbiAgICAvLyBBIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNSk7XG5cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDYpO1xuXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTtcblxuICAgIGNvbnN0IGludkRlbHRhID0gY3VydmUuRnIuaW52KGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDgsIGN1cnZlLCBcIkcxXCIsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIkwgU2VjdGlvblwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDksIGN1cnZlLCBcIkcxXCIsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIkggU2VjdGlvblwiLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlTVBDUGFyYW1zKGZkTmV3LCBjdXJ2ZSwgbXBjUGFyYW1zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIHV0aWxzLmhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2gobXBjUGFyYW1zLmNzSGFzaCwgXCJDaXJjdWl0IEhhc2g6IFwiKSk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8obWlzYy5mb3JtYXRIYXNoKGNvbnRyaWJ1dGlvbkhhc2gsIFwiQ29udHJpYnV0aW9uIEhhc2g6IFwiKSk7XG5cbiAgICByZXR1cm4gY29udHJpYnV0aW9uSGFzaDtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7IGdldEN1cnZlRnJvbVEgYXMgZ2V0Q3VydmUgfSBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCAqIGFzIG1pc2MgZnJvbSBcIi4vbWlzYy5qc1wiO1xuaW1wb3J0IEJsYWtlMmIgZnJvbSBcImJsYWtlMmItd2FzbVwiO1xuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5pbXBvcnQgeyBhcHBseUtleVRvU2VjdGlvbiB9IGZyb20gXCIuL21wY19hcHBseWtleS5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlYWNvbih6a2V5TmFtZU9sZCwgemtleU5hbWVOZXcsIG5hbWUsIGJlYWNvbkhhc2hTdHIsIG51bUl0ZXJhdGlvbnNFeHAsIGxvZ2dlcikge1xuICAgIGF3YWl0IEJsYWtlMmIucmVhZHkoKTtcblxuICAgIGNvbnN0IGJlYWNvbkhhc2ggPSBtaXNjLmhleDJCeXRlQXJyYXkoYmVhY29uSGFzaFN0cik7XG4gICAgaWYgKCAgIChiZWFjb25IYXNoLmJ5dGVMZW5ndGggPT0gMClcbiAgICAgICAgfHwgKGJlYWNvbkhhc2guYnl0ZUxlbmd0aCoyICE9YmVhY29uSGFzaFN0ci5sZW5ndGgpKVxuICAgIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiSW52YWxpZCBCZWFjb24gSGFzaC4gKEl0IG11c3QgYmUgYSB2YWxpZCBoZXhhZGVjaW1hbCBzZXF1ZW5jZSlcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGJlYWNvbkhhc2gubGVuZ3RoPj0yNTYpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiTWF4aW11bSBsZW5ndGggb2YgYmVhY29uIGhhc2ggaXMgMjU1IGJ5dGVzXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgbnVtSXRlcmF0aW9uc0V4cCA9IHBhcnNlSW50KG51bUl0ZXJhdGlvbnNFeHApO1xuICAgIGlmICgobnVtSXRlcmF0aW9uc0V4cDwxMCl8fChudW1JdGVyYXRpb25zRXhwPjYzKSkge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJJbnZhbGlkIG51bUl0ZXJhdGlvbnNFeHAuIChNdXN0IGJlIGJldHdlZW4gMTAgYW5kIDYzKVwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuXG4gICAgY29uc3Qge2ZkOiBmZE9sZCwgc2VjdGlvbnM6IHNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5TmFtZU9sZCwgXCJ6a2V5XCIsIDIpO1xuICAgIGNvbnN0IHprZXkgPSBhd2FpdCB6a2V5VXRpbHMucmVhZEhlYWRlcihmZE9sZCwgc2VjdGlvbnMpO1xuXG4gICAgaWYgKHprZXkucHJvdG9jb2wgIT0gXCJncm90aDE2XCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIGlzIG5vdCBncm90aDE2XCIpO1xuICAgIH1cblxuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgY29uc3QgbXBjUGFyYW1zID0gYXdhaXQgemtleVV0aWxzLnJlYWRNUENQYXJhbXMoZmRPbGQsIGN1cnZlLCBzZWN0aW9ucyk7XG5cbiAgICBjb25zdCBmZE5ldyA9IGF3YWl0IGJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlKHprZXlOYW1lTmV3LCBcInprZXlcIiwgMSwgMTApO1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5ybmdGcm9tQmVhY29uUGFyYW1zKGJlYWNvbkhhc2gsIG51bUl0ZXJhdGlvbnNFeHApO1xuXG4gICAgY29uc3QgdHJhbnNjcmlwdEhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIHRyYW5zY3JpcHRIYXNoZXIudXBkYXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGZvciAobGV0IGk9MDsgaTxtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB1dGlscy5oYXNoUHViS2V5KHRyYW5zY3JpcHRIYXNoZXIsIGN1cnZlLCBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXSk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcyA9IGN1cnZlLkcxLnRvQWZmaW5lKGN1cnZlLkcxLmZyb21Sbmcocm5nKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4ID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzFfcywgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSkpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4KTtcbiAgICBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCA9IHRyYW5zY3JpcHRIYXNoZXIuZGlnZXN0KCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0KTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AsIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpKTtcblxuICAgIHprZXkudmtfZGVsdGFfMSA9IGN1cnZlLkcxLnRpbWVzRnIoemtleS52a19kZWx0YV8xLCBjdXJDb250cmlidXRpb24uZGVsdGEucHJ2S2V5KTtcbiAgICB6a2V5LnZrX2RlbHRhXzIgPSBjdXJ2ZS5HMi50aW1lc0ZyKHprZXkudmtfZGVsdGFfMiwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSk7XG5cbiAgICBjdXJDb250cmlidXRpb24uZGVsdGFBZnRlciA9IHprZXkudmtfZGVsdGFfMTtcblxuICAgIGN1ckNvbnRyaWJ1dGlvbi50eXBlID0gMTtcbiAgICBjdXJDb250cmlidXRpb24ubnVtSXRlcmF0aW9uc0V4cCA9IG51bUl0ZXJhdGlvbnNFeHA7XG4gICAgY3VyQ29udHJpYnV0aW9uLmJlYWNvbkhhc2ggPSBiZWFjb25IYXNoO1xuXG4gICAgaWYgKG5hbWUpIGN1ckNvbnRyaWJ1dGlvbi5uYW1lID0gbmFtZTtcblxuICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGF3YWl0IHprZXlVdGlscy53cml0ZUhlYWRlcihmZE5ldywgemtleSk7XG5cbiAgICAvLyBJQ1xuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCAzKTtcblxuICAgIC8vIENvZWZmcyAoS2VlcCBvcmlnaW5hbClcbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNCk7XG5cbiAgICAvLyBBIFNlY3Rpb25cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuY29weVNlY3Rpb24oZmRPbGQsIHNlY3Rpb25zLCBmZE5ldywgNSk7XG5cbiAgICAvLyBCMSBTZWN0aW9uXG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmNvcHlTZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDYpO1xuXG4gICAgLy8gQjIgU2VjdGlvblxuICAgIGF3YWl0IGJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbihmZE9sZCwgc2VjdGlvbnMsIGZkTmV3LCA3KTtcblxuICAgIGNvbnN0IGludkRlbHRhID0gY3VydmUuRnIuaW52KGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5wcnZLZXkpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDgsIGN1cnZlLCBcIkcxXCIsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIkwgU2VjdGlvblwiLCBsb2dnZXIpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9TZWN0aW9uKGZkT2xkLCBzZWN0aW9ucywgZmROZXcsIDksIGN1cnZlLCBcIkcxXCIsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIkggU2VjdGlvblwiLCBsb2dnZXIpO1xuXG4gICAgYXdhaXQgemtleVV0aWxzLndyaXRlTVBDUGFyYW1zKGZkTmV3LCBjdXJ2ZSwgbXBjUGFyYW1zKTtcblxuICAgIGF3YWl0IGZkT2xkLmNsb3NlKCk7XG4gICAgYXdhaXQgZmROZXcuY2xvc2UoKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2hlciA9IEJsYWtlMmIoNjQpO1xuICAgIHV0aWxzLmhhc2hQdWJLZXkoY29udHJpYnV0aW9uSGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uKTtcblxuICAgIGNvbnN0IGNvbnRyaWJ1dGlvbkhhc2ggPSBjb250cmlidXRpb25IYXNoZXIuZGlnZXN0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhtaXNjLmZvcm1hdEhhc2goY29udHJpYnV0aW9uSGFzaCwgXCJDb250cmlidXRpb24gSGFzaDogXCIpKTtcblxuICAgIHJldHVybiBjb250cmlidXRpb25IYXNoO1xufVxuIiwiaW1wb3J0IHsgcmVhZFpLZXkgYXMgcmVhZFpLZXkgfSBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gemtleUV4cG9ydEpzb24oemtleUZpbGVOYW1lKSB7XG5cbiAgICBjb25zdCB6S2V5ID0gYXdhaXQgcmVhZFpLZXkoemtleUZpbGVOYW1lLCB0cnVlKTtcbiAgICBkZWxldGUgektleS5jdXJ2ZTtcbiAgICBkZWxldGUgektleS5GO1xuXG4gICAgcmV0dXJuIHV0aWxzLnN0cmluZ2lmeUJpZ0ludHMoektleSk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBGb3JtYXQgb2YgdGhlIG91dHB1dFxuLy8gICAgICBIYXNoIG9mIHRoZSBsYXN0IGNvbnRyaWJ1dGlvbiAgNjQgQnl0ZXNcbi8vICAgICAgMl5OKjItMSBUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBUYXVHMiBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIDJeTiBBbHBoYVRhdUcxIFBvaW50cyAoY29tcHJlc3NlZClcbi8vICAgICAgMl5OIEJldGFUYXVHMSBQb2ludHMgKGNvbXByZXNzZWQpXG4vLyAgICAgIFB1YmxpYyBLZXlcbi8vICAgICAgICAgIEJldGFHMiAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnMgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSpzKnRhdSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnQgKGNvbXByZXNzZWQpXG4vLyAgICAgICAgICBHMSp0KmFscGhhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzEqdSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcxKnUqYmV0YSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnNwKnRhdSAoY29tcHJlc3NlZClcbi8vICAgICAgICAgIEcyKnRwKmFscGhhIChjb21wcmVzc2VkKVxuLy8gICAgICAgICAgRzIqdXAqYmV0YSAoY29tcHJlc3NlZClcblxuaW1wb3J0ICogYXMgZmFzdEZpbGUgZnJvbSBcImZhc3RmaWxlXCI7XG5pbXBvcnQgQmxha2UyYiBmcm9tIFwiYmxha2UyYi13YXNtXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi96a2V5X3V0aWxzLmpzXCI7XG5pbXBvcnQgKiBhcyBtaXNjIGZyb20gXCIuL21pc2MuanNcIjtcbmltcG9ydCB7IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uIH0gZnJvbSBcIi4vbXBjX2FwcGx5a2V5LmpzXCI7XG5pbXBvcnQgeyBoYXNoUHViS2V5IH0gZnJvbSBcIi4vemtleV91dGlscy5qc1wiO1xuaW1wb3J0IHsgaGFzaFRvRzIgYXMgaGFzaFRvRzIgfSBmcm9tIFwiLi9rZXlwYWlyLmpzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGJlbGxtYW5Db250cmlidXRlKGN1cnZlLCBjaGFsbGVuZ2VGaWxlbmFtZSwgcmVzcG9uc2VGaWxlTmFtZSwgZW50cm9weSwgbG9nZ2VyKSB7XG4gICAgYXdhaXQgQmxha2UyYi5yZWFkeSgpO1xuXG4gICAgY29uc3Qgcm5nID0gYXdhaXQgbWlzYy5nZXRSYW5kb21SbmcoZW50cm9weSk7XG5cbiAgICBjb25zdCBkZWx0YSA9IGN1cnZlLkZyLmZyb21Sbmcocm5nKTtcbiAgICBjb25zdCBpbnZEZWx0YSA9IGN1cnZlLkZyLmludihkZWx0YSk7XG5cbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44KjI7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuXG4gICAgY29uc3QgZmRGcm9tID0gYXdhaXQgZmFzdEZpbGUucmVhZEV4aXN0aW5nKGNoYWxsZW5nZUZpbGVuYW1lKTtcbiAgICBjb25zdCBmZFRvID0gYXdhaXQgZmFzdEZpbGUuY3JlYXRlT3ZlcnJpZGUocmVzcG9uc2VGaWxlTmFtZSk7XG5cblxuICAgIGF3YWl0IGNvcHkoc0cxKTsgLy8gYWxwaGExXG4gICAgYXdhaXQgY29weShzRzEpOyAvLyBiZXRhMVxuICAgIGF3YWl0IGNvcHkoc0cyKTsgLy8gYmV0YTJcbiAgICBhd2FpdCBjb3B5KHNHMik7IC8vIGdhbW1hMlxuICAgIGNvbnN0IG9sZERlbHRhMSA9IGF3YWl0IHJlYWRHMSgpO1xuICAgIGNvbnN0IGRlbHRhMSA9IGN1cnZlLkcxLnRpbWVzRnIob2xkRGVsdGExLCBkZWx0YSk7XG4gICAgYXdhaXQgd3JpdGVHMShkZWx0YTEpO1xuICAgIGNvbnN0IG9sZERlbHRhMiA9IGF3YWl0IHJlYWRHMigpO1xuICAgIGNvbnN0IGRlbHRhMiA9IGN1cnZlLkcyLnRpbWVzRnIob2xkRGVsdGEyLCBkZWx0YSk7XG4gICAgYXdhaXQgd3JpdGVHMihkZWx0YTIpO1xuXG4gICAgLy8gSUNcbiAgICBjb25zdCBuSUMgPSBhd2FpdCBmZEZyb20ucmVhZFVCRTMyKCk7XG4gICAgYXdhaXQgZmRUby53cml0ZVVCRTMyKG5JQyk7XG4gICAgYXdhaXQgY29weShuSUMqc0cxKTtcblxuICAgIC8vIEhcbiAgICBjb25zdCBuSCA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkgpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uKGZkRnJvbSwgZmRUbywgbnVsbCwgY3VydmUsIFwiRzFcIiwgbkgsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIlVOQ09NUFJFU1NFRFwiLCBcIkhcIiwgbG9nZ2VyKTtcblxuICAgIC8vIExcbiAgICBjb25zdCBuTCA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkwpO1xuICAgIGF3YWl0IGFwcGx5S2V5VG9DaGFsbGVuZ2VTZWN0aW9uKGZkRnJvbSwgZmRUbywgbnVsbCwgY3VydmUsIFwiRzFcIiwgbkwsIGludkRlbHRhLCBjdXJ2ZS5Gci5lKDEpLCBcIlVOQ09NUFJFU1NFRFwiLCBcIkxcIiwgbG9nZ2VyKTtcblxuICAgIC8vIEFcbiAgICBjb25zdCBuQSA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkEpO1xuICAgIGF3YWl0IGNvcHkobkEqc0cxKTtcblxuICAgIC8vIEIxXG4gICAgY29uc3QgbkIxID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihuQjEpO1xuICAgIGF3YWl0IGNvcHkobkIxKnNHMSk7XG5cbiAgICAvLyBCMlxuICAgIGNvbnN0IG5CMiA9IGF3YWl0IGZkRnJvbS5yZWFkVUJFMzIoKTtcbiAgICBhd2FpdCBmZFRvLndyaXRlVUJFMzIobkIyKTtcbiAgICBhd2FpdCBjb3B5KG5CMipzRzIpO1xuXG5cbiAgICAvLy8vLy8vLy8vXG4gICAgLy8vIFJlYWQgY29udHJpYnV0aW9uc1xuICAgIC8vLy8vLy8vLy9cbiAgICBjb25zdCB0cmFuc2NyaXB0SGFzaGVyID0gQmxha2UyYig2NCk7XG5cbiAgICBjb25zdCBtcGNQYXJhbXMgPSB7fTtcbiAgICAvLyBjc0hhc2hcbiAgICBtcGNQYXJhbXMuY3NIYXNoID0gIGF3YWl0IGZkRnJvbS5yZWFkKDY0KTtcbiAgICB0cmFuc2NyaXB0SGFzaGVyLnVwZGF0ZShtcGNQYXJhbXMuY3NIYXNoKTtcblxuICAgIGNvbnN0IG5Db250cmlidXRpb25zID0gYXdhaXQgZmRGcm9tLnJlYWRVQkUzMigpO1xuICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zID0gW107XG4gICAgZm9yIChsZXQgaT0wOyBpPG5Db250cmlidXRpb25zOyBpKyspIHtcbiAgICAgICAgY29uc3QgYyA9IHsgZGVsdGE6e30gfTtcbiAgICAgICAgYy5kZWx0YUFmdGVyID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgICAgIGMuZGVsdGEuZzFfcyA9IGF3YWl0IHJlYWRHMSgpO1xuICAgICAgICBjLmRlbHRhLmcxX3N4ID0gYXdhaXQgcmVhZEcxKCk7XG4gICAgICAgIGMuZGVsdGEuZzJfc3B4ID0gYXdhaXQgcmVhZEcyKCk7XG4gICAgICAgIGMudHJhbnNjcmlwdCA9IGF3YWl0IGZkRnJvbS5yZWFkKDY0KTtcbiAgICAgICAgbXBjUGFyYW1zLmNvbnRyaWJ1dGlvbnMucHVzaChjKTtcbiAgICAgICAgaGFzaFB1YktleSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgYyk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VyQ29udHJpYnV0aW9uID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhID0ge307XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLnBydktleSA9IGRlbHRhO1xuICAgIGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zID0gY3VydmUuRzEudG9BZmZpbmUoY3VydmUuRzEuZnJvbVJuZyhybmcpKTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzFfc3ggPSBjdXJ2ZS5HMS50b0FmZmluZShjdXJ2ZS5HMS50aW1lc0ZyKGN1ckNvbnRyaWJ1dGlvbi5kZWx0YS5nMV9zLCBkZWx0YSkpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3MpO1xuICAgIHV0aWxzLmhhc2hHMSh0cmFuc2NyaXB0SGFzaGVyLCBjdXJ2ZSwgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcxX3N4KTtcbiAgICBjdXJDb250cmlidXRpb24udHJhbnNjcmlwdCA9IHRyYW5zY3JpcHRIYXNoZXIuZGlnZXN0KCk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhLmcyX3NwID0gaGFzaFRvRzIoY3VydmUsIGN1ckNvbnRyaWJ1dGlvbi50cmFuc2NyaXB0KTtcbiAgICBjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3B4ID0gY3VydmUuRzIudG9BZmZpbmUoY3VydmUuRzIudGltZXNGcihjdXJDb250cmlidXRpb24uZGVsdGEuZzJfc3AsIGRlbHRhKSk7XG4gICAgY3VyQ29udHJpYnV0aW9uLmRlbHRhQWZ0ZXIgPSBkZWx0YTE7XG4gICAgY3VyQ29udHJpYnV0aW9uLnR5cGUgPSAwO1xuICAgIG1wY1BhcmFtcy5jb250cmlidXRpb25zLnB1c2goY3VyQ29udHJpYnV0aW9uKTtcblxuXG4gICAgLy8vLy8vLy8vL1xuICAgIC8vLyBXcml0ZSBDb250cmlidXRpb25cbiAgICAvLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBmZFRvLndyaXRlKG1wY1BhcmFtcy5jc0hhc2gpO1xuICAgIGF3YWl0IGZkVG8ud3JpdGVVQkUzMihtcGNQYXJhbXMuY29udHJpYnV0aW9ucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaT0wOyBpPG1wY1BhcmFtcy5jb250cmlidXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGMgPSBtcGNQYXJhbXMuY29udHJpYnV0aW9uc1tpXTtcbiAgICAgICAgYXdhaXQgd3JpdGVHMShjLmRlbHRhQWZ0ZXIpO1xuICAgICAgICBhd2FpdCB3cml0ZUcxKGMuZGVsdGEuZzFfcyk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzEoYy5kZWx0YS5nMV9zeCk7XG4gICAgICAgIGF3YWl0IHdyaXRlRzIoYy5kZWx0YS5nMl9zcHgpO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGMudHJhbnNjcmlwdCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaGVyID0gQmxha2UyYig2NCk7XG4gICAgaGFzaFB1YktleShjb250cmlidXRpb25IYXNoZXIsIGN1cnZlLCBjdXJDb250cmlidXRpb24pO1xuXG4gICAgY29uc3QgY29udHJpYnV0aW9uSGFzaCA9IGNvbnRyaWJ1dGlvbkhhc2hlci5kaWdlc3QoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKG1pc2MuZm9ybWF0SGFzaChjb250cmlidXRpb25IYXNoLCBcIkNvbnRyaWJ1dGlvbiBIYXNoOiBcIikpO1xuXG4gICAgYXdhaXQgZmRUby5jbG9zZSgpO1xuICAgIGF3YWl0IGZkRnJvbS5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGNvbnRyaWJ1dGlvbkhhc2g7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb3B5KG5CeXRlcykge1xuICAgICAgICBjb25zdCBDSFVOS19TSVpFID0gZmRGcm9tLnBhZ2VTaXplKjI7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxuQnl0ZXM7IGkrPSBDSFVOS19TSVpFKSB7XG4gICAgICAgICAgICBjb25zdCBuID0gTWF0aC5taW4obkJ5dGVzIC1pLCBDSFVOS19TSVpFKTtcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChuKTtcbiAgICAgICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzEoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChjdXJ2ZS5HMS5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzEuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByZWFkRzIoKSB7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBhd2FpdCBmZEZyb20ucmVhZChjdXJ2ZS5HMi5GLm44KjIpO1xuICAgICAgICByZXR1cm4gY3VydmUuRzIuZnJvbVJwclVuY29tcHJlc3NlZChidWZmLCAwKTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUcxKFApIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IG5ldyBVaW50OEFycmF5KHNHMSk7XG4gICAgICAgIGN1cnZlLkcxLnRvUnByVW5jb21wcmVzc2VkKGJ1ZmYsIDAsIFApO1xuICAgICAgICBhd2FpdCBmZFRvLndyaXRlKGJ1ZmYpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlRzIoUCkge1xuICAgICAgICBjb25zdCBidWZmID0gbmV3IFVpbnQ4QXJyYXkoc0cyKTtcbiAgICAgICAgY3VydmUuRzIudG9ScHJVbmNvbXByZXNzZWQoYnVmZiwgMCwgUCk7XG4gICAgICAgIGF3YWl0IGZkVG8ud3JpdGUoYnVmZik7XG4gICAgfVxuXG5cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMTggMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCB7Z2V0Q3VydmVGcm9tUSBhcyBnZXRDdXJ2ZX0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQge0ZGTE9OS19QUk9UT0NPTF9JRH0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcblxuY29uc3Qge3N0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHprZXlFeHBvcnRWZXJpZmljYXRpb25LZXkoemtleU5hbWUsIGxvZ2dlcikge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRVhQT1JUIFZFUklGSUNBVElPTiBLRVkgU1RBUlRFRFwiKTtcblxuICAgIGNvbnN0IHtmZCwgc2VjdGlvbnN9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlOYW1lLCBcInprZXlcIiwgMik7XG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkLCBzZWN0aW9ucyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gRGV0ZWN0ZWQgcHJvdG9jb2w6IFwiICsgemtleS5wcm90b2NvbCk7XG5cbiAgICBsZXQgcmVzO1xuICAgIGlmICh6a2V5LnByb3RvY29sID09PSBcImdyb3RoMTZcIikge1xuICAgICAgICByZXMgPSBhd2FpdCBncm90aDE2VmsoemtleSwgZmQsIHNlY3Rpb25zKTtcbiAgICB9IGVsc2UgaWYgKHprZXkucHJvdG9jb2wgPT09IFwicGxvbmtcIikge1xuICAgICAgICByZXMgPSBhd2FpdCBwbG9ua1ZrKHprZXkpO1xuICAgIH0gZWxzZSBpZiAoemtleS5wcm90b2NvbElkICYmIHprZXkucHJvdG9jb2xJZCA9PT0gRkZMT05LX1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHJlcyA9IGF3YWl0IGV4cG9ydEZGbG9ua1ZrKHprZXksIGxvZ2dlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiemtleSBmaWxlIHByb3RvY29sIHVucmVjb2duaXplZFwiKTtcbiAgICB9XG5cbiAgICBhd2FpdCBmZC5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJFWFBPUlQgVkVSSUZJQ0FUSU9OIEtFWSBGSU5JU0hFRFwiKTtcblxuICAgIHJldHVybiByZXM7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gZ3JvdGgxNlZrKHprZXksIGZkLCBzZWN0aW9ucykge1xuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmUoemtleS5xKTtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44ICogMjtcblxuICAgIGNvbnN0IGFscGhhQmV0YSA9IGF3YWl0IGN1cnZlLnBhaXJpbmcoemtleS52a19hbHBoYV8xLCB6a2V5LnZrX2JldGFfMik7XG5cbiAgICBsZXQgdktleSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHprZXkucHJvdG9jb2wsXG4gICAgICAgIGN1cnZlOiBjdXJ2ZS5uYW1lLFxuICAgICAgICBuUHVibGljOiB6a2V5Lm5QdWJsaWMsXG5cbiAgICAgICAgdmtfYWxwaGFfMTogY3VydmUuRzEudG9PYmplY3QoemtleS52a19hbHBoYV8xKSxcblxuICAgICAgICB2a19iZXRhXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkudmtfYmV0YV8yKSxcbiAgICAgICAgdmtfZ2FtbWFfMjogY3VydmUuRzIudG9PYmplY3QoemtleS52a19nYW1tYV8yKSxcbiAgICAgICAgdmtfZGVsdGFfMjogY3VydmUuRzIudG9PYmplY3QoemtleS52a19kZWx0YV8yKSxcblxuICAgICAgICB2a19hbHBoYWJldGFfMTI6IGN1cnZlLkd0LnRvT2JqZWN0KGFscGhhQmV0YSlcbiAgICB9O1xuXG4gICAgLy8gUmVhZCBJQyBTZWN0aW9uXG4gICAgLy8vLy8vLy8vLy9cbiAgICBhd2FpdCBiaW5GaWxlVXRpbHMuc3RhcnRSZWFkVW5pcXVlU2VjdGlvbihmZCwgc2VjdGlvbnMsIDMpO1xuICAgIHZLZXkuSUMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBidWZmID0gYXdhaXQgZmQucmVhZChzRzEpO1xuICAgICAgICBjb25zdCBQID0gY3VydmUuRzEudG9PYmplY3QoYnVmZik7XG4gICAgICAgIHZLZXkuSUMucHVzaChQKTtcbiAgICB9XG4gICAgYXdhaXQgYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uKGZkKTtcblxuICAgIHZLZXkgPSBzdHJpbmdpZnlCaWdJbnRzKHZLZXkpO1xuXG4gICAgcmV0dXJuIHZLZXk7XG59XG5cblxuYXN5bmMgZnVuY3Rpb24gcGxvbmtWayh6a2V5KSB7XG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZSh6a2V5LnEpO1xuXG4gICAgbGV0IHZLZXkgPSB7XG4gICAgICAgIHByb3RvY29sOiB6a2V5LnByb3RvY29sLFxuICAgICAgICBjdXJ2ZTogY3VydmUubmFtZSxcbiAgICAgICAgblB1YmxpYzogemtleS5uUHVibGljLFxuICAgICAgICBwb3dlcjogemtleS5wb3dlcixcblxuICAgICAgICBrMTogY3VydmUuRnIudG9PYmplY3QoemtleS5rMSksXG4gICAgICAgIGsyOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LmsyKSxcblxuICAgICAgICBRbTogY3VydmUuRzEudG9PYmplY3QoemtleS5RbSksXG4gICAgICAgIFFsOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFsKSxcbiAgICAgICAgUXI6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUXIpLFxuICAgICAgICBRbzogY3VydmUuRzEudG9PYmplY3QoemtleS5RbyksXG4gICAgICAgIFFjOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlFjKSxcbiAgICAgICAgUzE6IGN1cnZlLkcxLnRvT2JqZWN0KHprZXkuUzEpLFxuICAgICAgICBTMjogY3VydmUuRzEudG9PYmplY3QoemtleS5TMiksXG4gICAgICAgIFMzOiBjdXJ2ZS5HMS50b09iamVjdCh6a2V5LlMzKSxcblxuICAgICAgICBYXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkuWF8yKSxcblxuICAgICAgICB3OiBjdXJ2ZS5Gci50b09iamVjdChjdXJ2ZS5Gci53W3prZXkucG93ZXJdKVxuICAgIH07XG5cbiAgICB2S2V5ID0gc3RyaW5naWZ5QmlnSW50cyh2S2V5KTtcblxuICAgIHJldHVybiB2S2V5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHBvcnRGRmxvbmtWayh6a2V5LCBsb2dnZXIpIHtcbiAgICBjb25zdCBjdXJ2ZSA9IGF3YWl0IGdldEN1cnZlKHprZXkucSk7XG5cbiAgICBsZXQgdktleSA9IHtcbiAgICAgICAgcHJvdG9jb2w6IHprZXkucHJvdG9jb2wsXG4gICAgICAgIGN1cnZlOiBjdXJ2ZS5uYW1lLFxuICAgICAgICBuUHVibGljOiB6a2V5Lm5QdWJsaWMsXG4gICAgICAgIHBvd2VyOiB6a2V5LnBvd2VyLFxuXG4gICAgICAgIGsxOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LmsxKSxcbiAgICAgICAgazI6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkuazIpLFxuXG4gICAgICAgIHc6IGN1cnZlLkZyLnRvT2JqZWN0KGN1cnZlLkZyLndbemtleS5wb3dlcl0pLFxuICAgICAgICAvL3dXOiBjdXJ2ZS5Gci50b09iamVjdChjdXJ2ZS5Gci53W3prZXkucG93ZXIgKyAxXSksXG4gICAgICAgIHczOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LnczKSxcbiAgICAgICAgdzQ6IGN1cnZlLkZyLnRvT2JqZWN0KHprZXkudzQpLFxuICAgICAgICB3ODogY3VydmUuRnIudG9PYmplY3QoemtleS53OCksXG4gICAgICAgIHdyOiBjdXJ2ZS5Gci50b09iamVjdCh6a2V5LndyKSxcblxuICAgICAgICBYXzI6IGN1cnZlLkcyLnRvT2JqZWN0KHprZXkuWF8yKSxcblxuICAgICAgICBDMDogY3VydmUuRzEudG9PYmplY3QoemtleS5DMCksXG4gICAgfTtcblxuICAgIHJldHVybiBzdHJpbmdpZnlCaWdJbnRzKHZLZXkpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IGVqcyBmcm9tIFwiZWpzXCI7XG5pbXBvcnQge2dldEN1cnZlRnJvbU5hbWV9IGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHt1dGlsc30gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuXG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzLCBzdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtFeHBvcnRTb2xpZGl0eVZlcmlmaWVyKHZrLCB0ZW1wbGF0ZXMsIGxvZ2dlcikge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIEVYUE9SVCBTT0xJRElUWSBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZUZyb21OYW1lKHZrLmN1cnZlKTtcblxuICAgIC8vIFByZWNvbXB1dGUgdzNfMiwgdzRfMiBhbmQgdzRfM1xuICAgIGxldCB3MyA9IGZyb21Wa2V5KHZrLnczKTtcbiAgICB2ay53M18yID0gdG9Wa2V5KGN1cnZlLkZyLnNxdWFyZSh3MykpO1xuXG4gICAgbGV0IHc0ID0gZnJvbVZrZXkodmsudzQpO1xuICAgIHZrLnc0XzIgPSB0b1ZrZXkoY3VydmUuRnIuc3F1YXJlKHc0KSk7XG4gICAgdmsudzRfMyA9IHRvVmtleShjdXJ2ZS5Gci5tdWwoY3VydmUuRnIuc3F1YXJlKHc0KSwgdzQpKTtcblxuICAgIGxldCB3OCA9IGZyb21Wa2V5KHZrLnc4KTtcbiAgICBsZXQgYWNjID0gY3VydmUuRnIub25lO1xuXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCA4OyBpKyspIHtcbiAgICAgICAgYWNjID0gY3VydmUuRnIubXVsKGFjYywgdzgpO1xuICAgICAgICB2a1tcInc4X1wiICsgaV0gPSB0b1ZrZXkoYWNjKTtcbiAgICB9XG5cbiAgICBsZXQgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNbdmsucHJvdG9jb2xdO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgRVhQT1JUIFNPTElESVRZIFZFUklGSUVSIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIGVqcy5yZW5kZXIodGVtcGxhdGUsIHZrKTtcblxuICAgIGZ1bmN0aW9uIGZyb21Wa2V5KHN0cikge1xuICAgICAgICBjb25zdCB2YWwgPSB1bnN0cmluZ2lmeUJpZ0ludHMoc3RyKTtcbiAgICAgICAgcmV0dXJuIGN1cnZlLkZyLmZyb21PYmplY3QodmFsKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0b1ZrZXkodmFsKSB7XG4gICAgICAgIGNvbnN0IHN0ciA9IGN1cnZlLkZyLnRvT2JqZWN0KHZhbCk7XG4gICAgICAgIHJldHVybiBzdHJpbmdpZnlCaWdJbnRzKHN0cik7XG4gICAgfVxufVxuXG4iLCJpbXBvcnQgZWpzIGZyb20gXCJlanNcIjtcblxuaW1wb3J0IGV4cG9ydFZlcmlmaWNhdGlvbktleSBmcm9tIFwiLi96a2V5X2V4cG9ydF92ZXJpZmljYXRpb25rZXkuanNcIjtcbmltcG9ydCBmZmxvbmtFeHBvcnRTb2xpZGl0eVZlcmlmaWVyQ21kIGZyb20gXCIuL2ZmbG9ua19leHBvcnRfc29saWRpdHlfdmVyaWZpZXIuanNcIjtcbi8vIE5vdCByZWFkeSB5ZXRcbi8vIG1vZHVsZS5leHBvcnRzLmdlbmVyYXRlVmVyaWZpZXJfa2ltbGVlb2ggPSBnZW5lcmF0ZVZlcmlmaWVyX2tpbWxlZW9oO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBleHBvcnRTb2xpZGl0eVZlcmlmaWVyKHpLZXlOYW1lLCB0ZW1wbGF0ZXMsIGxvZ2dlcikge1xuXG4gICAgY29uc3QgdmVyaWZpY2F0aW9uS2V5ID0gYXdhaXQgZXhwb3J0VmVyaWZpY2F0aW9uS2V5KHpLZXlOYW1lLCBsb2dnZXIpO1xuXG4gICAgaWYgKFwiZmZsb25rXCIgPT09IHZlcmlmaWNhdGlvbktleS5wcm90b2NvbCkge1xuICAgICAgICByZXR1cm4gZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllckNtZCh2ZXJpZmljYXRpb25LZXksIHRlbXBsYXRlcywgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBsZXQgdGVtcGxhdGUgPSB0ZW1wbGF0ZXNbdmVyaWZpY2F0aW9uS2V5LnByb3RvY29sXTtcblxuICAgIHJldHVybiBlanMucmVuZGVyKHRlbXBsYXRlLCB2ZXJpZmljYXRpb25LZXkpO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAxOCAwS0lNUyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJrSlMuXG5cbiAgICBzbmFya0pTIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdFxuICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtKUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICAgIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpY1xuICAgIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gICAgYWxvbmcgd2l0aCBzbmFya0pTLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuXG5leHBvcnQge2RlZmF1bHQgYXMgbmV3WktleX0gZnJvbSBcIi4vemtleV9uZXcuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRCZWxsbWFufSBmcm9tIFwiLi96a2V5X2V4cG9ydF9iZWxsbWFuLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgaW1wb3J0QmVsbG1hbn0gZnJvbSBcIi4vemtleV9pbXBvcnRfYmVsbG1hbi5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHZlcmlmeUZyb21SMWNzfSBmcm9tIFwiLi96a2V5X3ZlcmlmeV9mcm9tcjFjcy5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIHZlcmlmeUZyb21Jbml0fSBmcm9tIFwiLi96a2V5X3ZlcmlmeV9mcm9taW5pdC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGNvbnRyaWJ1dGV9IGZyb20gXCIuL3prZXlfY29udHJpYnV0ZS5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGJlYWNvbn0gZnJvbSBcIi4vemtleV9iZWFjb24uanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRKc29ufSBmcm9tIFwiLi96a2V5X2V4cG9ydF9qc29uLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgYmVsbG1hbkNvbnRyaWJ1dGV9IGZyb20gXCIuL3prZXlfYmVsbG1hbl9jb250cmlidXRlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgZXhwb3J0VmVyaWZpY2F0aW9uS2V5fSBmcm9tIFwiLi96a2V5X2V4cG9ydF92ZXJpZmljYXRpb25rZXkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRTb2xpZGl0eVZlcmlmaWVyfSBmcm9tIFwiLi96a2V5X2V4cG9ydF9zb2xpZGl0eXZlcmlmaWVyLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgKi9cblxuaW1wb3J0IHtyZWFkUjFjc0ZkfSBmcm9tIFwicjFjc2ZpbGVcIjtcbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gXCIuL3Bvd2Vyc29mdGF1X3V0aWxzLmpzXCI7XG5pbXBvcnQge1xuICAgIHJlYWRCaW5GaWxlLFxuICAgIGNyZWF0ZUJpbkZpbGUsXG4gICAgcmVhZFNlY3Rpb24sXG4gICAgd3JpdGVCaWdJbnQsXG4gICAgc3RhcnRXcml0ZVNlY3Rpb24sXG4gICAgZW5kV3JpdGVTZWN0aW9uLFxufSBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHsgbG9nMiAgfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIEJpZ0J1ZmZlciB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCBCbGFrZTJiIGZyb20gXCJibGFrZTJiLXdhc21cIjtcbmltcG9ydCBCaWdBcnJheSBmcm9tIFwiLi9iaWdhcnJheS5qc1wiO1xuXG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rU2V0dXAocjFjc05hbWUsIHB0YXVOYW1lLCB6a2V5TmFtZSwgbG9nZ2VyKSB7XG5cbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG5cbiAgICBhd2FpdCBCbGFrZTJiLnJlYWR5KCk7XG5cbiAgICBjb25zdCB7ZmQ6IGZkUFRhdSwgc2VjdGlvbnM6IHNlY3Rpb25zUFRhdX0gPSBhd2FpdCByZWFkQmluRmlsZShwdGF1TmFtZSwgXCJwdGF1XCIsIDEsIDE8PDIyLCAxPDwyNCk7XG4gICAgY29uc3Qge2N1cnZlLCBwb3dlcn0gPSBhd2FpdCB1dGlscy5yZWFkUFRhdUhlYWRlcihmZFBUYXUsIHNlY3Rpb25zUFRhdSk7XG4gICAgY29uc3Qge2ZkOiBmZFIxY3MsIHNlY3Rpb25zOiBzZWN0aW9uc1IxY3N9ID0gYXdhaXQgcmVhZEJpbkZpbGUocjFjc05hbWUsIFwicjFjc1wiLCAxLCAxPDwyMiwgMTw8MjQpO1xuXG4gICAgY29uc3QgcjFjcyA9IGF3YWl0IHJlYWRSMWNzRmQoZmRSMWNzLCBzZWN0aW9uc1IxY3MsIHtsb2FkQ29uc3RyYWludHM6IHRydWUsIGxvYWRDdXN0b21HYXRlczogdHJ1ZX0pO1xuXG4gICAgY29uc3Qgc0cxID0gY3VydmUuRzEuRi5uOCoyO1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3Qgc0cyID0gY3VydmUuRzIuRi5uOCoyO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgbjhyID0gY3VydmUuRnIubjg7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlJlYWRpbmcgcjFjc1wiKTtcbiAgICBsZXQgc1IxY3MgPSBhd2FpdCByZWFkU2VjdGlvbihmZFIxY3MsIHNlY3Rpb25zUjFjcywgMik7XG5cbiAgICBjb25zdCBwbG9ua0NvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgY29uc3QgcGxvbmtBZGRpdGlvbnMgPSBuZXcgQmlnQXJyYXkoKTtcbiAgICBsZXQgcGxvbmtOVmFycyA9IHIxY3MublZhcnM7XG5cbiAgICBjb25zdCBuUHVibGljID0gcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0cztcblxuICAgIGF3YWl0IHByb2Nlc3NDb25zdHJhaW50cyhjdXJ2ZS5GciwgcjFjcywgbG9nZ2VyKTtcblxuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuICAgIGNvbnN0IGZkWktleSA9IGF3YWl0IGNyZWF0ZUJpbkZpbGUoemtleU5hbWUsIFwiemtleVwiLCAxLCAxNCwgMTw8MjIsIDE8PDI0KTtcblxuXG4gICAgaWYgKHIxY3MucHJpbWUgIT0gY3VydmUucikge1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZXJyb3IoXCJyMWNzIGN1cnZlIGRvZXMgbm90IG1hdGNoIHBvd2VycyBvZiB0YXUgY2VyZW1vbnkgY3VydmVcIik7XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG5cbiAgICBsZXQgY2lyUG93ZXIgPSBsb2cyKHBsb25rQ29uc3RyYWludHMubGVuZ3RoIC0xKSArMTtcbiAgICBpZiAoY2lyUG93ZXIgPCAzKSBjaXJQb3dlciA9IDM7ICAgLy8gQXMgdGhlIHQgcG9seW5vbWlhbCBpcyBuKzUgd2UgbmVlZCBhdCBsZWFzdCBhIHBvd2VyIG9mIDRcbiAgICBjb25zdCBkb21haW5TaXplID0gMiAqKiBjaXJQb3dlcjtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiUGxvbmsgY29uc3RyYWludHM6IFwiICsgcGxvbmtDb25zdHJhaW50cy5sZW5ndGgpO1xuICAgIGlmIChjaXJQb3dlciA+IHBvd2VyKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihgY2lyY3VpdCB0b28gYmlnIGZvciB0aGlzIHBvd2VyIG9mIHRhdSBjZXJlbW9ueS4gJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH0gPiAyKioke3Bvd2VyfWApO1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgaWYgKCFzZWN0aW9uc1BUYXVbMTJdKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlBvd2VycyBvZiB0YXUgaXMgbm90IHByZXBhcmVkLlwiKTtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cblxuXG4gICAgY29uc3QgTFBvaW50cyA9IG5ldyBCaWdCdWZmZXIoZG9tYWluU2l6ZSpzRzEpO1xuICAgIGNvbnN0IG8gPSBzZWN0aW9uc1BUYXVbMTJdWzBdLnAgKyAoKDIgKiogKGNpclBvd2VyKSkgLTEpKnNHMTtcbiAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKExQb2ludHMsIDAsIGRvbWFpblNpemUqc0cxLCBvKTtcblxuICAgIGNvbnN0IFtrMSwgazJdID0gZ2V0SzFLMigpO1xuXG4gICAgY29uc3QgdmsgPSB7fTtcblxuXG4gICAgYXdhaXQgd3JpdGVBZGRpdGlvbnMoMywgXCJBZGRpdGlvbnNcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcCg0LCAwLCBcIkFtYXBcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcCg1LCAxLCBcIkJtYXBcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlV2l0bmVzc01hcCg2LCAyLCBcIkNtYXBcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCg3LCAzLCBcIlFtXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVFNYXAoOCwgNCwgXCJRbFwiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDksIDUsIFwiUXJcIik7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgIGF3YWl0IHdyaXRlUU1hcCgxMCwgNiwgXCJRb1wiKTtcbiAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgYXdhaXQgd3JpdGVRTWFwKDExLCA3LCBcIlFjXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZVNpZ21hKDEyLCBcInNpZ21hXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICBhd2FpdCB3cml0ZUxzKDEzLCBcImxhZ3JhbmdlIHBvbHlub21pYWxzXCIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuICAgIC8vIFdyaXRlIFBUYXUgcG9pbnRzXG4gICAgLy8vLy8vLy8vLy8vXG5cbiAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDE0KTtcbiAgICBjb25zdCBidWZmT3V0ID0gbmV3IEJpZ0J1ZmZlcigoZG9tYWluU2l6ZSs2KSpzRzEpO1xuICAgIGF3YWl0IGZkUFRhdS5yZWFkVG9CdWZmZXIoYnVmZk91dCwgMCwgKGRvbWFpblNpemUrNikqc0cxLCBzZWN0aW9uc1BUYXVbMl1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cblxuXG4gICAgYXdhaXQgd3JpdGVIZWFkZXJzKCk7XG5cbiAgICBhd2FpdCBmZFpLZXkuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFIxY3MuY2xvc2UoKTtcbiAgICBhd2FpdCBmZFBUYXUuY2xvc2UoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiU2V0dXAgRmluaXNoZWRcIik7XG5cbiAgICByZXR1cm4gO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0NvbnN0cmFpbnRzKEZyLCByMWNzLCBsb2dnZXIpIHtcblxuICAgICAgICBmdW5jdGlvbiBub3JtYWxpemUobGluZWFyQ29tYikge1xuICAgICAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsaW5lYXJDb21iKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobGluZWFyQ29tYltzc1tpXV0gPT0gMG4pIGRlbGV0ZSBsaW5lYXJDb21iW3NzW2ldXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGpvaW4obGluZWFyQ29tYjEsIGssIGxpbmVhckNvbWIyKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7fTtcblxuICAgICAgICAgICAgZm9yIChsZXQgcyBpbiBsaW5lYXJDb21iMSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzW3NdID09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzW3NdID0gRnIubXVsKGssIGxpbmVhckNvbWIxW3NdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXNbc10gPSBGci5hZGQocmVzW3NdLCBGci5tdWwoaywgbGluZWFyQ29tYjFbc10pKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IHMgaW4gbGluZWFyQ29tYjIpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlc1tzXSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1tzXSA9IGxpbmVhckNvbWIyW3NdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc1tzXSA9IEZyLmFkZChyZXNbc10sIGxpbmVhckNvbWIyW3NdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub3JtYWxpemUocmVzKTtcbiAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiByZWR1Y2VDb2VmcyhsaW5lYXJDb21iLCBtYXhDKSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgICAgICAgICAgazogRnIuemVybyxcbiAgICAgICAgICAgICAgICBzOiBbXSxcbiAgICAgICAgICAgICAgICBjb2VmczogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBjcyA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBzIGluIGxpbmVhckNvbWIpIHtcbiAgICAgICAgICAgICAgICBpZiAocyA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5rID0gRnIuYWRkKHJlcy5rLCBsaW5lYXJDb21iW3NdKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmVhckNvbWJbc10gIT0gMG4pIHtcbiAgICAgICAgICAgICAgICAgICAgY3MucHVzaChbTnVtYmVyKHMpLCBsaW5lYXJDb21iW3NdXSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY3MubGVuZ3RoID4gbWF4Qykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGMxID0gY3Muc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjMiA9IGNzLnNoaWZ0KCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzbCA9IGMxWzBdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNyID0gYzJbMF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc28gPSBwbG9ua05WYXJzKys7XG4gICAgICAgICAgICAgICAgY29uc3QgcW0gPSBGci56ZXJvO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFsID0gRnIubmVnKGMxWzFdKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxciA9IEZyLm5lZyhjMlsxXSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcW8gPSBGci5vbmU7XG4gICAgICAgICAgICAgICAgY29uc3QgcWMgPSBGci56ZXJvO1xuXG4gICAgICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKFtzbCwgc3IsIHNvLCBxbSwgcWwsIHFyLCBxbywgcWNdKTtcblxuICAgICAgICAgICAgICAgIHBsb25rQWRkaXRpb25zLnB1c2goW3NsLCBzciwgYzFbMV0sIGMyWzFdXSk7XG5cbiAgICAgICAgICAgICAgICBjcy5wdXNoKFtzbywgRnIub25lXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNbaV0gPSBjc1tpXVswXTtcbiAgICAgICAgICAgICAgICByZXMuY29lZnNbaV0gPSBjc1tpXVsxXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChyZXMuY29lZnMubGVuZ3RoIDwgbWF4Qykge1xuICAgICAgICAgICAgICAgIHJlcy5zLnB1c2goMCk7XG4gICAgICAgICAgICAgICAgcmVzLmNvZWZzLnB1c2goRnIuemVybyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYWRkQ29uc3RyYWludFN1bShsYykge1xuICAgICAgICAgICAgY29uc3QgQyA9IHJlZHVjZUNvZWZzKGxjLCAzKTtcbiAgICAgICAgICAgIGNvbnN0IHNsID0gQy5zWzBdO1xuICAgICAgICAgICAgY29uc3Qgc3IgPSBDLnNbMV07XG4gICAgICAgICAgICBjb25zdCBzbyA9IEMuc1syXTtcbiAgICAgICAgICAgIGNvbnN0IHFtID0gRnIuemVybztcbiAgICAgICAgICAgIGNvbnN0IHFsID0gQy5jb2Vmc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHFyID0gQy5jb2Vmc1sxXTtcbiAgICAgICAgICAgIGNvbnN0IHFvID0gQy5jb2Vmc1syXTtcbiAgICAgICAgICAgIGNvbnN0IHFjID0gQy5rO1xuICAgICAgICAgICAgcGxvbmtDb25zdHJhaW50cy5wdXNoKFtzbCwgc3IsIHNvLCBxbSwgcWwsIHFyLCBxbywgcWNdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZENvbnN0cmFpbnRNdWwobGNBLCBsY0IsIGxjQykge1xuICAgICAgICAgICAgY29uc3QgQSA9IHJlZHVjZUNvZWZzKGxjQSwgMSk7XG4gICAgICAgICAgICBjb25zdCBCID0gcmVkdWNlQ29lZnMobGNCLCAxKTtcbiAgICAgICAgICAgIGNvbnN0IEMgPSByZWR1Y2VDb2VmcyhsY0MsIDEpO1xuXG5cbiAgICAgICAgICAgIGNvbnN0IHNsID0gQS5zWzBdO1xuICAgICAgICAgICAgY29uc3Qgc3IgPSBCLnNbMF07XG4gICAgICAgICAgICBjb25zdCBzbyA9IEMuc1swXTtcbiAgICAgICAgICAgIGNvbnN0IHFtID0gRnIubXVsKEEuY29lZnNbMF0sIEIuY29lZnNbMF0pO1xuICAgICAgICAgICAgY29uc3QgcWwgPSBGci5tdWwoQS5jb2Vmc1swXSwgQi5rKTtcbiAgICAgICAgICAgIGNvbnN0IHFyID0gRnIubXVsKEEuaywgQi5jb2Vmc1swXSk7XG4gICAgICAgICAgICBjb25zdCBxbyA9IEZyLm5lZyhDLmNvZWZzWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHFjID0gRnIuc3ViKEZyLm11bChBLmssIEIuayksIEMuayk7XG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goW3NsLCBzciwgc28sIHFtLCBxbCwgcXIsIHFvLCBxY10pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjKSB7XG4gICAgICAgICAgICBsZXQgayA9IEZyLnplcm87XG4gICAgICAgICAgICBsZXQgbiA9IDA7XG4gICAgICAgICAgICBjb25zdCBzcyA9IE9iamVjdC5rZXlzKGxjKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAobGNbc3NbaV1dID09IDBuKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBsY1tzc1tpXV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzc1tpXSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGsgPSBGci5hZGQoaywgbGNbc3NbaV1dKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBuKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gbi50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKGsgIT0gRnIuemVybykgcmV0dXJuIFwia1wiO1xuICAgICAgICAgICAgcmV0dXJuIFwiMFwiO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcHJvY2VzcyhsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgICAgICBjb25zdCBsY3RBID0gZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQSk7XG4gICAgICAgICAgICBjb25zdCBsY3RCID0gZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQik7XG4gICAgICAgICAgICBpZiAoKGxjdEEgPT09IFwiMFwiKSB8fCAobGN0QiA9PT0gXCIwXCIpKSB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplKGxjQyk7XG4gICAgICAgICAgICAgICAgYWRkQ29uc3RyYWludFN1bShsY0MpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChsY3RBID09PSBcImtcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxjQ0MgPSBqb2luKGxjQiwgbGNBWzBdLCBsY0MpO1xuICAgICAgICAgICAgICAgIGFkZENvbnN0cmFpbnRTdW0obGNDQyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxjdEIgPT09IFwia1wiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbGNDQyA9IGpvaW4obGNBLCBsY0JbMF0sIGxjQyk7XG4gICAgICAgICAgICAgICAgYWRkQ29uc3RyYWludFN1bShsY0NDKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYWRkQ29uc3RyYWludE11bChsY0EsIGxjQiwgbGNDKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHMgPSAxOyBzIDw9IG5QdWJsaWM7IHMrKykge1xuICAgICAgICAgICAgY29uc3Qgc2wgPSBzO1xuICAgICAgICAgICAgY29uc3Qgc3IgPSAwO1xuICAgICAgICAgICAgY29uc3Qgc28gPSAwO1xuICAgICAgICAgICAgY29uc3QgcW0gPSBGci56ZXJvO1xuICAgICAgICAgICAgY29uc3QgcWwgPSBGci5vbmU7XG4gICAgICAgICAgICBjb25zdCBxciA9IEZyLnplcm87XG4gICAgICAgICAgICBjb25zdCBxbyA9IEZyLnplcm87XG4gICAgICAgICAgICBjb25zdCBxYyA9IEZyLnplcm87XG5cbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChbc2wsIHNyLCBzbywgcW0sIHFsLCBxciwgcW8sIHFjXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBjID0gMDsgYyA8IHIxY3MuY29uc3RyYWludHMubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoYyAlIDEwMDAwID09PSAwKSkgbG9nZ2VyLmRlYnVnKGBwcm9jZXNzaW5nIGNvbnN0cmFpbnRzOiAke2N9LyR7cjFjcy5uQ29uc3RyYWludHN9YCk7XG4gICAgICAgICAgICBwcm9jZXNzKC4uLnIxY3MuY29uc3RyYWludHNbY10pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVXaXRuZXNzTWFwKHNlY3Rpb25OdW0sIHBvc0NvbnN0cmFpbnQsIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHBsb25rQ29uc3RyYWludHNbaV1bcG9zQ29uc3RyYWludF0pO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpJiYoaSUxMDAwMDAwID09IDApKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlUU1hcChzZWN0aW9uTnVtLCBwb3NDb25zdHJhaW50LCBuYW1lKSB7XG4gICAgICAgIGxldCBRID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKm44cik7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBRLnNldChwbG9ua0NvbnN0cmFpbnRzW2ldW3Bvc0NvbnN0cmFpbnRdLCBpKm44cik7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihpJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQNChRKTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgICAgIFEgPSBhd2FpdCBGci5iYXRjaEZyb21Nb250Z29tZXJ5KFEpO1xuICAgICAgICB2a1tuYW1lXT0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoTFBvaW50cywgUSwgbG9nZ2VyLCBcIm11bHRpZXhwIFwiK25hbWUpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlUDQoYnVmZikge1xuICAgICAgICBjb25zdCBxID0gYXdhaXQgRnIuaWZmdChidWZmKTtcbiAgICAgICAgY29uc3QgcTQgPSBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUqbjhyKjQpO1xuICAgICAgICBxNC5zZXQocSwgMCk7XG4gICAgICAgIGNvbnN0IFE0ID0gYXdhaXQgRnIuZmZ0KHE0KTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHEpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoUTQpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlQWRkaXRpb25zKHNlY3Rpb25OdW0sIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgY29uc3QgYnVmZk91dCA9IG5ldyBVaW50OEFycmF5KCgyKjQrMipuOHIpKTtcbiAgICAgICAgY29uc3QgYnVmZk91dFYgPSBuZXcgRGF0YVZpZXcoYnVmZk91dC5idWZmZXIpO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cGxvbmtBZGRpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGFkZGl0aW9uPXBsb25rQWRkaXRpb25zW2ldO1xuICAgICAgICAgICAgbGV0IG89MDtcbiAgICAgICAgICAgIGJ1ZmZPdXRWLnNldFVpbnQzMihvLCBhZGRpdGlvblswXSwgdHJ1ZSk7IG8rPTQ7XG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIobywgYWRkaXRpb25bMV0sIHRydWUpOyBvKz00O1xuICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIHN0b3JlZCBpbiBNb250Z29tZXJ5LiBzdG9yZWQgPSB2KlJcbiAgICAgICAgICAgIC8vIHNvIHdoZW4gbW9udGdvbWVyeSBtdWx0aXBsaWVkIGJ5IHRoZSB3aXRuZXNzLCBpdCdzIHJlc3VsdCA9IHYqUip3L1IgPSB2KndcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzJdLCBvKTsgbys9IG44cjtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzNdLCBvKTsgbys9IG44cjtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShidWZmT3V0KTtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX06ICR7aX0vJHtwbG9ua0FkZGl0aW9ucy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVTaWdtYShzZWN0aW9uTnVtLCBuYW1lKSB7XG4gICAgICAgIGNvbnN0IHNpZ21hID0gbmV3IEJpZ0J1ZmZlcihuOHIqZG9tYWluU2l6ZSozKTtcbiAgICAgICAgY29uc3QgbGFzdEFwYXJlbmNlID0gIG5ldyBCaWdBcnJheShwbG9ua05WYXJzKTtcbiAgICAgICAgY29uc3QgZmlyc3RQb3MgPSBuZXcgQmlnQXJyYXkocGxvbmtOVmFycyk7XG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8ZG9tYWluU2l6ZTtpKyspIHtcbiAgICAgICAgICAgIGlmIChpPHBsb25rQ29uc3RyYWludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzBdLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMV0sIGRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMl0sIGRvbWFpblNpemUqMiArIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKDAsIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgZG9tYWluU2l6ZSArIGkpO1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgZG9tYWluU2l6ZSoyICsgaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbY2lyUG93ZXJdKTtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSYmKGklMTAwMDAwMCA9PSAwKSkgbG9nZ2VyLmRlYnVnKGB3cml0aW5nICR7bmFtZX0gcGhhc2UxOiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgcz0wOyBzPHBsb25rTlZhcnM7IHMrKykge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaXJzdFBvc1tzXSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldChsYXN0QXBhcmVuY2Vbc10sIGZpcnN0UG9zW3NdKm44cik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikmJihzJTEwMDAwMDAgPT0gMCkpIGxvZ2dlci5kZWJ1Zyhgd3JpdGluZyAke25hbWV9IHBoYXNlMjogJHtzfS8ke3Bsb25rTlZhcnN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykge2dsb2JhbFRoaXMuZ2MoKTt9XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGxldCBTMSA9IHNpZ21hLnNsaWNlKDAsIGRvbWFpblNpemUqbjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQNChTMSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgbGV0IFMyID0gc2lnbWEuc2xpY2UoZG9tYWluU2l6ZSpuOHIsIGRvbWFpblNpemUqbjhyKjIpO1xuICAgICAgICBhd2FpdCB3cml0ZVA0KFMyKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICBsZXQgUzMgPSBzaWdtYS5zbGljZShkb21haW5TaXplKm44cioyLCBkb21haW5TaXplKm44ciozKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQNChTMyk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSB7Z2xvYmFsVGhpcy5nYygpO31cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAgICAgUzEgPSBhd2FpdCBGci5iYXRjaEZyb21Nb250Z29tZXJ5KFMxKTtcbiAgICAgICAgUzIgPSBhd2FpdCBGci5iYXRjaEZyb21Nb250Z29tZXJ5KFMyKTtcbiAgICAgICAgUzMgPSBhd2FpdCBGci5iYXRjaEZyb21Nb250Z29tZXJ5KFMzKTtcblxuICAgICAgICB2ay5TMT0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoTFBvaW50cywgUzEsIGxvZ2dlciwgXCJtdWx0aWV4cCBTMVwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICB2ay5TMj0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoTFBvaW50cywgUzIsIGxvZ2dlciwgXCJtdWx0aWV4cCBTMlwiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuICAgICAgICB2ay5TMz0gYXdhaXQgY3VydmUuRzEubXVsdGlFeHBBZmZpbmUoTFBvaW50cywgUzMsIGxvZ2dlciwgXCJtdWx0aWV4cCBTM1wiKTtcbiAgICAgICAgaWYgKGdsb2JhbFRoaXMuZ2MpIHtnbG9iYWxUaGlzLmdjKCk7fVxuXG4gICAgICAgIGZ1bmN0aW9uIGJ1aWxkU2lnbWEocywgcCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBsYXN0QXBhcmVuY2Vbc10gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFBvc1tzXSA9IHA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldChsYXN0QXBhcmVuY2Vbc10sIHAqbjhyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2O1xuICAgICAgICAgICAgaWYgKHA8ZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHYgPSB3O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwPDIqZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHYgPSBGci5tdWwodywgazEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3RBcGFyZW5jZVtzXT12O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVMcyhzZWN0aW9uTnVtLCBuYW1lKSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbk51bSk7XG4gICAgICAgIGNvbnN0IGw9TWF0aC5tYXgoblB1YmxpYywgMSk7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxsOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBidWZmID0gbmV3IEJpZ0J1ZmZlcihkb21haW5TaXplKm44cik7XG4gICAgICAgICAgICBidWZmLnNldChGci5vbmUsIGkqbjhyKTtcbiAgICAgICAgICAgIGF3YWl0IHdyaXRlUDQoYnVmZik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoYHdyaXRpbmcgJHtuYW1lfSAke2l9LyR7bH1gKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUhlYWRlcnMoKSB7XG5cbiAgICAgICAgLy8gV3JpdGUgdGhlIGhlYWRlclxuICAgICAgICAvLy8vLy8vLy8vL1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIDEpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMigyKTsgLy8gUGxvbmtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG5cbiAgICAgICAgLy8gV3JpdGUgdGhlIFBsb25rIGhlYWRlciBzZWN0aW9uXG4gICAgICAgIC8vLy8vLy8vLy8vXG5cbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCAyKTtcbiAgICAgICAgY29uc3QgcHJpbWVRID0gY3VydmUucTtcbiAgICAgICAgY29uc3QgbjhxID0gKE1hdGguZmxvb3IoIChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUSkgLSAxKSAvIDY0KSArMSkqODtcblxuICAgICAgICBjb25zdCBwcmltZVIgPSBjdXJ2ZS5yO1xuICAgICAgICBjb25zdCBuOHIgPSAoTWF0aC5mbG9vciggKFNjYWxhci5iaXRMZW5ndGgocHJpbWVSKSAtIDEpIC8gNjQpICsxKSo4O1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cSk7XG4gICAgICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihuOHIpO1xuICAgICAgICBhd2FpdCB3cml0ZUJpZ0ludChmZFpLZXksIHByaW1lUiwgbjhyKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtOVmFycyk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiBiYXJzXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG5QdWJsaWMpOyAgICAgICAgICAgICAgICAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHB1YmxpYyB2YXJzIChub3QgaW5jbHVkaW5nIE9ORSlcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoZG9tYWluU2l6ZSk7ICAgICAgICAgICAgICAgICAgLy8gZG9tYWluU2l6ZVxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0FkZGl0aW9ucy5sZW5ndGgpOyAgICAgICAgICAgICAgICAgIC8vIGRvbWFpblNpemVcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtDb25zdHJhaW50cy5sZW5ndGgpOyBcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoazEpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoazIpO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RbSkpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUWwpKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlFyKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5RbykpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUWMpKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoRzEudG9BZmZpbmUodmsuUzEpKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKEcxLnRvQWZmaW5lKHZrLlMyKSk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShHMS50b0FmZmluZSh2ay5TMykpO1xuXG4gICAgICAgIGxldCBiWF8yO1xuICAgICAgICBiWF8yID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBzZWN0aW9uc1BUYXVbM11bMF0ucCArIHNHMik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShiWF8yKTtcblxuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRLMUsyKCkge1xuICAgICAgICBsZXQgazEgPSBGci50d287XG4gICAgICAgIHdoaWxlIChpc0luY2x1ZGVkKGsxLCBbXSwgY2lyUG93ZXIpKSBGci5hZGQoazEsIEZyLm9uZSk7XG4gICAgICAgIGxldCBrMiA9IEZyLmFkZChrMSwgRnIub25lKTtcbiAgICAgICAgd2hpbGUgKGlzSW5jbHVkZWQoazIsIFtrMV0sIGNpclBvd2VyKSkgRnIuYWRkKGsyLCBGci5vbmUpO1xuICAgICAgICByZXR1cm4gW2sxLCBrMl07XG5cblxuICAgICAgICBmdW5jdGlvbiBpc0luY2x1ZGVkKGssIGtBcnIsIHBvdykge1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2l6ZT0gMioqcG93O1xuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpPTA7IGk8ZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKEZyLmVxKGssIHcpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8a0Fyci5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoRnIuZXEoaywgRnIubXVsKGtBcnJbal0sIHcpKSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1twb3ddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5leHBvcnQgY2xhc3MgUHJvb2Yge1xuICAgIGNvbnN0cnVjdG9yKGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcblxuICAgICAgICB0aGlzLnJlc2V0UHJvb2YoKTtcbiAgICB9XG5cbiAgICByZXNldFByb29mKCkge1xuICAgICAgICB0aGlzLnBvbHlub21pYWxzID0ge307XG4gICAgICAgIHRoaXMuZXZhbHVhdGlvbnMgPSB7fTtcbiAgICB9XG5cbiAgICBhZGRQb2x5bm9taWFsKGtleSwgcG9seW5vbWlhbCkge1xuICAgICAgICBpZiAoa2V5IGluIHRoaXMucG9seW5vbWlhbHMpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYHByb29mOiBwb2x5bm9taWFsLiR7a2V5fSBhbHJlYWR5IGV4aXN0IGluIHByb29mYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb2x5bm9taWFsc1trZXldID0gcG9seW5vbWlhbDtcbiAgICB9XG5cbiAgICBnZXRQb2x5bm9taWFsKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gdGhpcy5wb2x5bm9taWFscykpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oYHByb29mOiBwb2x5bm9taWFsICR7a2V5fSBkb2VzIG5vdCBleGlzdCBpbiBwcm9vZmApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnBvbHlub21pYWxzW2tleV07XG4gICAgfVxuXG4gICAgYWRkRXZhbHVhdGlvbihrZXksIGV2YWx1YXRpb24pIHtcbiAgICAgICAgaWYgKGtleSBpbiB0aGlzLmV2YWx1YXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBwcm9vZjogZXZhbHVhdGlvbnMuJHtrZXl9IGFscmVhZHkgZXhpc3QgaW4gcHJvb2ZgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV2YWx1YXRpb25zW2tleV0gPSBldmFsdWF0aW9uO1xuICAgIH1cblxuICAgIGdldEV2YWx1YXRpb24oa2V5KSB7XG4gICAgICAgIGlmICghKGtleSBpbiB0aGlzLmV2YWx1YXRpb25zKSkge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXIud2FybihgcHJvb2Y6IGV2YWx1YXRpb24gJHtrZXl9IGRvZXMgbm90IGV4aXN0IGluIHByb29mYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbHVhdGlvbnNba2V5XTtcbiAgICB9XG5cbiAgICB0b09iamVjdFByb29mKHNwbGl0RmllbGRzID0gdHJ1ZSkge1xuICAgICAgICBsZXQgcmVzID0gc3BsaXRGaWVsZHMgPyB7cG9seW5vbWlhbHM6IHt9LCBldmFsdWF0aW9uczoge319IDoge307XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5wb2x5bm9taWFscykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmN1cnZlLkcxLnRvT2JqZWN0KHRoaXMucG9seW5vbWlhbHNba2V5XSk7XG4gICAgICAgICAgICBpZihzcGxpdEZpZWxkcykge1xuICAgICAgICAgICAgICAgIHJlcy5wb2x5bm9taWFsc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZXZhbHVhdGlvbnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jdXJ2ZS5Gci50b09iamVjdCh0aGlzLmV2YWx1YXRpb25zW2tleV0pO1xuICAgICAgICAgICAgaWYoc3BsaXRGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICByZXMuZXZhbHVhdGlvbnNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZyb21PYmplY3RQcm9vZihvYmplY3RQcm9vZikge1xuICAgICAgICB0aGlzLnJlc2V0UHJvb2YoKTtcblxuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3RQcm9vZi5wb2x5bm9taWFscykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb2x5bm9taWFsc1trZXldID0gdGhpcy5jdXJ2ZS5HMS5mcm9tT2JqZWN0KG9iamVjdFByb29mLnBvbHlub21pYWxzW2tleV0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBPYmplY3Qua2V5cyhvYmplY3RQcm9vZi5ldmFsdWF0aW9ucykuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ldmFsdWF0aW9uc1trZXldID0gdGhpcy5jdXJ2ZS5Gci5mcm9tT2JqZWN0KG9iamVjdFByb29mLmV2YWx1YXRpb25zW2tleV0pO1xuICAgICAgICB9KTtcbiAgICB9XG59IiwiLyoqXG4gKiBJbnRlcm5hbCBhc3NlcnRpb24gaGVscGVycy5cbiAqIEBtb2R1bGVcbiAqL1xuLyoqIEFzc2VydHMgc29tZXRoaW5nIGlzIHBvc2l0aXZlIGludGVnZXIuICovXG5mdW5jdGlvbiBhbnVtYmVyKG4pIHtcbiAgICBpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKG4pIHx8IG4gPCAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Bvc2l0aXZlIGludGVnZXIgZXhwZWN0ZWQsIGdvdCAnICsgbik7XG59XG4vKiogSXMgbnVtYmVyIGFuIFVpbnQ4QXJyYXk/IENvcGllZCBmcm9tIHV0aWxzIGZvciBwZXJmLiAqL1xuZnVuY3Rpb24gaXNCeXRlcyhhKSB7XG4gICAgcmV0dXJuIGEgaW5zdGFuY2VvZiBVaW50OEFycmF5IHx8IChBcnJheUJ1ZmZlci5pc1ZpZXcoYSkgJiYgYS5jb25zdHJ1Y3Rvci5uYW1lID09PSAnVWludDhBcnJheScpO1xufVxuLyoqIEFzc2VydHMgc29tZXRoaW5nIGlzIFVpbnQ4QXJyYXkuICovXG5mdW5jdGlvbiBhYnl0ZXMoYiwgLi4ubGVuZ3Rocykge1xuICAgIGlmICghaXNCeXRlcyhiKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVaW50OEFycmF5IGV4cGVjdGVkJyk7XG4gICAgaWYgKGxlbmd0aHMubGVuZ3RoID4gMCAmJiAhbGVuZ3Rocy5pbmNsdWRlcyhiLmxlbmd0aCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVWludDhBcnJheSBleHBlY3RlZCBvZiBsZW5ndGggJyArIGxlbmd0aHMgKyAnLCBnb3QgbGVuZ3RoPScgKyBiLmxlbmd0aCk7XG59XG4vKiogQXNzZXJ0cyBzb21ldGhpbmcgaXMgaGFzaCAqL1xuZnVuY3Rpb24gYWhhc2goaCkge1xuICAgIGlmICh0eXBlb2YgaCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgaC5jcmVhdGUgIT09ICdmdW5jdGlvbicpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSGFzaCBzaG91bGQgYmUgd3JhcHBlZCBieSB1dGlscy53cmFwQ29uc3RydWN0b3InKTtcbiAgICBhbnVtYmVyKGgub3V0cHV0TGVuKTtcbiAgICBhbnVtYmVyKGguYmxvY2tMZW4pO1xufVxuLyoqIEFzc2VydHMgYSBoYXNoIGluc3RhbmNlIGhhcyBub3QgYmVlbiBkZXN0cm95ZWQgLyBmaW5pc2hlZCAqL1xuZnVuY3Rpb24gYWV4aXN0cyhpbnN0YW5jZSwgY2hlY2tGaW5pc2hlZCA9IHRydWUpIHtcbiAgICBpZiAoaW5zdGFuY2UuZGVzdHJveWVkKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0hhc2ggaW5zdGFuY2UgaGFzIGJlZW4gZGVzdHJveWVkJyk7XG4gICAgaWYgKGNoZWNrRmluaXNoZWQgJiYgaW5zdGFuY2UuZmluaXNoZWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSGFzaCNkaWdlc3QoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCcpO1xufVxuLyoqIEFzc2VydHMgb3V0cHV0IGlzIHByb3Blcmx5LXNpemVkIGJ5dGUgYXJyYXkgKi9cbmZ1bmN0aW9uIGFvdXRwdXQob3V0LCBpbnN0YW5jZSkge1xuICAgIGFieXRlcyhvdXQpO1xuICAgIGNvbnN0IG1pbiA9IGluc3RhbmNlLm91dHB1dExlbjtcbiAgICBpZiAob3V0Lmxlbmd0aCA8IG1pbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2RpZ2VzdEludG8oKSBleHBlY3RzIG91dHB1dCBidWZmZXIgb2YgbGVuZ3RoIGF0IGxlYXN0ICcgKyBtaW4pO1xuICAgIH1cbn1cbmV4cG9ydCB7IGFudW1iZXIsIGFieXRlcywgYWhhc2gsIGFleGlzdHMsIGFvdXRwdXQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPV9hc3NlcnQuanMubWFwIiwiLyoqXG4gKiBJbnRlcm5hbCBoZWxwZXJzIGZvciB1NjQuIEJpZ1VpbnQ2NEFycmF5IGlzIHRvbyBzbG93IGFzIHBlciAyMDI1LCBzbyB3ZSBpbXBsZW1lbnQgaXQgdXNpbmcgVWludDMyQXJyYXkuXG4gKiBAdG9kbyByZS1jaGVjayBodHRwczovL2lzc3Vlcy5jaHJvbWl1bS5vcmcvaXNzdWVzLzQyMjEyNTg4XG4gKiBAbW9kdWxlXG4gKi9cbmNvbnN0IFUzMl9NQVNLNjQgPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDIgKiogMzIgLSAxKTtcbmNvbnN0IF8zMm4gPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDMyKTtcbmZ1bmN0aW9uIGZyb21CaWcobiwgbGUgPSBmYWxzZSkge1xuICAgIGlmIChsZSlcbiAgICAgICAgcmV0dXJuIHsgaDogTnVtYmVyKG4gJiBVMzJfTUFTSzY0KSwgbDogTnVtYmVyKChuID4+IF8zMm4pICYgVTMyX01BU0s2NCkgfTtcbiAgICByZXR1cm4geyBoOiBOdW1iZXIoKG4gPj4gXzMybikgJiBVMzJfTUFTSzY0KSB8IDAsIGw6IE51bWJlcihuICYgVTMyX01BU0s2NCkgfCAwIH07XG59XG5mdW5jdGlvbiBzcGxpdChsc3QsIGxlID0gZmFsc2UpIHtcbiAgICBsZXQgQWggPSBuZXcgVWludDMyQXJyYXkobHN0Lmxlbmd0aCk7XG4gICAgbGV0IEFsID0gbmV3IFVpbnQzMkFycmF5KGxzdC5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbHN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHsgaCwgbCB9ID0gZnJvbUJpZyhsc3RbaV0sIGxlKTtcbiAgICAgICAgW0FoW2ldLCBBbFtpXV0gPSBbaCwgbF07XG4gICAgfVxuICAgIHJldHVybiBbQWgsIEFsXTtcbn1cbmNvbnN0IHRvQmlnID0gKGgsIGwpID0+IChCaWdJbnQoaCA+Pj4gMCkgPDwgXzMybikgfCBCaWdJbnQobCA+Pj4gMCk7XG4vLyBmb3IgU2hpZnQgaW4gWzAsIDMyKVxuY29uc3Qgc2hyU0ggPSAoaCwgX2wsIHMpID0+IGggPj4+IHM7XG5jb25zdCBzaHJTTCA9IChoLCBsLCBzKSA9PiAoaCA8PCAoMzIgLSBzKSkgfCAobCA+Pj4gcyk7XG4vLyBSaWdodCByb3RhdGUgZm9yIFNoaWZ0IGluIFsxLCAzMilcbmNvbnN0IHJvdHJTSCA9IChoLCBsLCBzKSA9PiAoaCA+Pj4gcykgfCAobCA8PCAoMzIgLSBzKSk7XG5jb25zdCByb3RyU0wgPSAoaCwgbCwgcykgPT4gKGggPDwgKDMyIC0gcykpIHwgKGwgPj4+IHMpO1xuLy8gUmlnaHQgcm90YXRlIGZvciBTaGlmdCBpbiAoMzIsIDY0KSwgTk9URTogMzIgaXMgc3BlY2lhbCBjYXNlLlxuY29uc3Qgcm90ckJIID0gKGgsIGwsIHMpID0+IChoIDw8ICg2NCAtIHMpKSB8IChsID4+PiAocyAtIDMyKSk7XG5jb25zdCByb3RyQkwgPSAoaCwgbCwgcykgPT4gKGggPj4+IChzIC0gMzIpKSB8IChsIDw8ICg2NCAtIHMpKTtcbi8vIFJpZ2h0IHJvdGF0ZSBmb3Igc2hpZnQ9PT0zMiAoanVzdCBzd2FwcyBsJmgpXG5jb25zdCByb3RyMzJIID0gKF9oLCBsKSA9PiBsO1xuY29uc3Qgcm90cjMyTCA9IChoLCBfbCkgPT4gaDtcbi8vIExlZnQgcm90YXRlIGZvciBTaGlmdCBpbiBbMSwgMzIpXG5jb25zdCByb3RsU0ggPSAoaCwgbCwgcykgPT4gKGggPDwgcykgfCAobCA+Pj4gKDMyIC0gcykpO1xuY29uc3Qgcm90bFNMID0gKGgsIGwsIHMpID0+IChsIDw8IHMpIHwgKGggPj4+ICgzMiAtIHMpKTtcbi8vIExlZnQgcm90YXRlIGZvciBTaGlmdCBpbiAoMzIsIDY0KSwgTk9URTogMzIgaXMgc3BlY2lhbCBjYXNlLlxuY29uc3Qgcm90bEJIID0gKGgsIGwsIHMpID0+IChsIDw8IChzIC0gMzIpKSB8IChoID4+PiAoNjQgLSBzKSk7XG5jb25zdCByb3RsQkwgPSAoaCwgbCwgcykgPT4gKGggPDwgKHMgLSAzMikpIHwgKGwgPj4+ICg2NCAtIHMpKTtcbi8vIEpTIHVzZXMgMzItYml0IHNpZ25lZCBpbnRlZ2VycyBmb3IgYml0d2lzZSBvcGVyYXRpb25zIHdoaWNoIG1lYW5zIHdlIGNhbm5vdFxuLy8gc2ltcGxlIHRha2UgY2Fycnkgb3V0IG9mIGxvdyBiaXQgc3VtIGJ5IHNoaWZ0LCB3ZSBuZWVkIHRvIHVzZSBkaXZpc2lvbi5cbmZ1bmN0aW9uIGFkZChBaCwgQWwsIEJoLCBCbCkge1xuICAgIGNvbnN0IGwgPSAoQWwgPj4+IDApICsgKEJsID4+PiAwKTtcbiAgICByZXR1cm4geyBoOiAoQWggKyBCaCArICgobCAvIDIgKiogMzIpIHwgMCkpIHwgMCwgbDogbCB8IDAgfTtcbn1cbi8vIEFkZGl0aW9uIHdpdGggbW9yZSB0aGFuIDIgZWxlbWVudHNcbmNvbnN0IGFkZDNMID0gKEFsLCBCbCwgQ2wpID0+IChBbCA+Pj4gMCkgKyAoQmwgPj4+IDApICsgKENsID4+PiAwKTtcbmNvbnN0IGFkZDNIID0gKGxvdywgQWgsIEJoLCBDaCkgPT4gKEFoICsgQmggKyBDaCArICgobG93IC8gMiAqKiAzMikgfCAwKSkgfCAwO1xuY29uc3QgYWRkNEwgPSAoQWwsIEJsLCBDbCwgRGwpID0+IChBbCA+Pj4gMCkgKyAoQmwgPj4+IDApICsgKENsID4+PiAwKSArIChEbCA+Pj4gMCk7XG5jb25zdCBhZGQ0SCA9IChsb3csIEFoLCBCaCwgQ2gsIERoKSA9PiAoQWggKyBCaCArIENoICsgRGggKyAoKGxvdyAvIDIgKiogMzIpIHwgMCkpIHwgMDtcbmNvbnN0IGFkZDVMID0gKEFsLCBCbCwgQ2wsIERsLCBFbCkgPT4gKEFsID4+PiAwKSArIChCbCA+Pj4gMCkgKyAoQ2wgPj4+IDApICsgKERsID4+PiAwKSArIChFbCA+Pj4gMCk7XG5jb25zdCBhZGQ1SCA9IChsb3csIEFoLCBCaCwgQ2gsIERoLCBFaCkgPT4gKEFoICsgQmggKyBDaCArIERoICsgRWggKyAoKGxvdyAvIDIgKiogMzIpIHwgMCkpIHwgMDtcbi8vIHByZXR0aWVyLWlnbm9yZVxuZXhwb3J0IHsgZnJvbUJpZywgc3BsaXQsIHRvQmlnLCBzaHJTSCwgc2hyU0wsIHJvdHJTSCwgcm90clNMLCByb3RyQkgsIHJvdHJCTCwgcm90cjMySCwgcm90cjMyTCwgcm90bFNILCByb3RsU0wsIHJvdGxCSCwgcm90bEJMLCBhZGQsIGFkZDNMLCBhZGQzSCwgYWRkNEwsIGFkZDRILCBhZGQ1SCwgYWRkNUwsIH07XG4vLyBwcmV0dGllci1pZ25vcmVcbmNvbnN0IHU2NCA9IHtcbiAgICBmcm9tQmlnLCBzcGxpdCwgdG9CaWcsXG4gICAgc2hyU0gsIHNoclNMLFxuICAgIHJvdHJTSCwgcm90clNMLCByb3RyQkgsIHJvdHJCTCxcbiAgICByb3RyMzJILCByb3RyMzJMLFxuICAgIHJvdGxTSCwgcm90bFNMLCByb3RsQkgsIHJvdGxCTCxcbiAgICBhZGQsIGFkZDNMLCBhZGQzSCwgYWRkNEwsIGFkZDRILCBhZGQ1SCwgYWRkNUwsXG59O1xuZXhwb3J0IGRlZmF1bHQgdTY0O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9X3U2NC5qcy5tYXAiLCIvKipcbiAqIFV0aWxpdGllcyBmb3IgaGV4LCBieXRlcywgQ1NQUk5HLlxuICogQG1vZHVsZVxuICovXG4vKiEgbm9ibGUtaGFzaGVzIC0gTUlUIExpY2Vuc2UgKGMpIDIwMjIgUGF1bCBNaWxsZXIgKHBhdWxtaWxsci5jb20pICovXG4vLyBXZSB1c2UgV2ViQ3J5cHRvIGFrYSBnbG9iYWxUaGlzLmNyeXB0bywgd2hpY2ggZXhpc3RzIGluIGJyb3dzZXJzIGFuZCBub2RlLmpzIDE2Ky5cbi8vIG5vZGUuanMgdmVyc2lvbnMgZWFybGllciB0aGFuIHYxOSBkb24ndCBkZWNsYXJlIGl0IGluIGdsb2JhbCBzY29wZS5cbi8vIEZvciBub2RlLmpzLCBwYWNrYWdlLmpzb24jZXhwb3J0cyBmaWVsZCBtYXBwaW5nIHJld3JpdGVzIGltcG9ydFxuLy8gZnJvbSBgY3J5cHRvYCB0byBgY3J5cHRvTm9kZWAsIHdoaWNoIGltcG9ydHMgbmF0aXZlIG1vZHVsZS5cbi8vIE1ha2VzIHRoZSB1dGlscyB1bi1pbXBvcnRhYmxlIGluIGJyb3dzZXJzIHdpdGhvdXQgYSBidW5kbGVyLlxuLy8gT25jZSBub2RlLmpzIDE4IGlzIGRlcHJlY2F0ZWQgKDIwMjUtMDQtMzApLCB3ZSBjYW4ganVzdCBkcm9wIHRoZSBpbXBvcnQuXG5pbXBvcnQgeyBjcnlwdG8gfSBmcm9tICdAbm9ibGUvaGFzaGVzL2NyeXB0byc7XG5pbXBvcnQgeyBhYnl0ZXMgfSBmcm9tICcuL19hc3NlcnQuanMnO1xuLy8gZXhwb3J0IHsgaXNCeXRlcyB9IGZyb20gJy4vX2Fzc2VydC5qcyc7XG4vLyBXZSBjYW4ndCByZXVzZSBpc0J5dGVzIGZyb20gX2Fzc2VydCwgYmVjYXVzZSBzb21laG93IHRoaXMgY2F1c2VzIGh1Z2UgcGVyZiBpc3N1ZXNcbmV4cG9ydCBmdW5jdGlvbiBpc0J5dGVzKGEpIHtcbiAgICByZXR1cm4gYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgfHwgKEFycmF5QnVmZmVyLmlzVmlldyhhKSAmJiBhLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdVaW50OEFycmF5Jyk7XG59XG4vLyBDYXN0IGFycmF5IHRvIGRpZmZlcmVudCB0eXBlXG5leHBvcnQgZnVuY3Rpb24gdTgoYXJyKSB7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KGFyci5idWZmZXIsIGFyci5ieXRlT2Zmc2V0LCBhcnIuYnl0ZUxlbmd0aCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdTMyKGFycikge1xuICAgIHJldHVybiBuZXcgVWludDMyQXJyYXkoYXJyLmJ1ZmZlciwgYXJyLmJ5dGVPZmZzZXQsIE1hdGguZmxvb3IoYXJyLmJ5dGVMZW5ndGggLyA0KSk7XG59XG4vLyBDYXN0IGFycmF5IHRvIHZpZXdcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVWaWV3KGFycikge1xuICAgIHJldHVybiBuZXcgRGF0YVZpZXcoYXJyLmJ1ZmZlciwgYXJyLmJ5dGVPZmZzZXQsIGFyci5ieXRlTGVuZ3RoKTtcbn1cbi8qKiBUaGUgcm90YXRlIHJpZ2h0IChjaXJjdWxhciByaWdodCBzaGlmdCkgb3BlcmF0aW9uIGZvciB1aW50MzIgKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RyKHdvcmQsIHNoaWZ0KSB7XG4gICAgcmV0dXJuICh3b3JkIDw8ICgzMiAtIHNoaWZ0KSkgfCAod29yZCA+Pj4gc2hpZnQpO1xufVxuLyoqIFRoZSByb3RhdGUgbGVmdCAoY2lyY3VsYXIgbGVmdCBzaGlmdCkgb3BlcmF0aW9uIGZvciB1aW50MzIgKi9cbmV4cG9ydCBmdW5jdGlvbiByb3RsKHdvcmQsIHNoaWZ0KSB7XG4gICAgcmV0dXJuICh3b3JkIDw8IHNoaWZ0KSB8ICgod29yZCA+Pj4gKDMyIC0gc2hpZnQpKSA+Pj4gMCk7XG59XG4vKiogSXMgY3VycmVudCBwbGF0Zm9ybSBsaXR0bGUtZW5kaWFuPyBNb3N0IGFyZS4gQmlnLUVuZGlhbiBwbGF0Zm9ybTogSUJNICovXG5leHBvcnQgY29uc3QgaXNMRSA9IC8qIEBfX1BVUkVfXyAqLyAoKCkgPT4gbmV3IFVpbnQ4QXJyYXkobmV3IFVpbnQzMkFycmF5KFsweDExMjIzMzQ0XSkuYnVmZmVyKVswXSA9PT0gMHg0NCkoKTtcbi8vIFRoZSBieXRlIHN3YXAgb3BlcmF0aW9uIGZvciB1aW50MzJcbmV4cG9ydCBmdW5jdGlvbiBieXRlU3dhcCh3b3JkKSB7XG4gICAgcmV0dXJuICgoKHdvcmQgPDwgMjQpICYgMHhmZjAwMDAwMCkgfFxuICAgICAgICAoKHdvcmQgPDwgOCkgJiAweGZmMDAwMCkgfFxuICAgICAgICAoKHdvcmQgPj4+IDgpICYgMHhmZjAwKSB8XG4gICAgICAgICgod29yZCA+Pj4gMjQpICYgMHhmZikpO1xufVxuLyoqIENvbmRpdGlvbmFsbHkgYnl0ZSBzd2FwIGlmIG9uIGEgYmlnLWVuZGlhbiBwbGF0Zm9ybSAqL1xuZXhwb3J0IGNvbnN0IGJ5dGVTd2FwSWZCRSA9IGlzTEVcbiAgICA/IChuKSA9PiBuXG4gICAgOiAobikgPT4gYnl0ZVN3YXAobik7XG4vKiogSW4gcGxhY2UgYnl0ZSBzd2FwIGZvciBVaW50MzJBcnJheSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ5dGVTd2FwMzIoYXJyKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYXJyW2ldID0gYnl0ZVN3YXAoYXJyW2ldKTtcbiAgICB9XG59XG4vLyBBcnJheSB3aGVyZSBpbmRleCAweGYwICgyNDApIGlzIG1hcHBlZCB0byBzdHJpbmcgJ2YwJ1xuY29uc3QgaGV4ZXMgPSAvKiBAX19QVVJFX18gKi8gQXJyYXkuZnJvbSh7IGxlbmd0aDogMjU2IH0sIChfLCBpKSA9PiBpLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKTtcbi8qKlxuICogQ29udmVydCBieXRlIGFycmF5IHRvIGhleCBzdHJpbmcuXG4gKiBAZXhhbXBsZSBieXRlc1RvSGV4KFVpbnQ4QXJyYXkuZnJvbShbMHhjYSwgMHhmZSwgMHgwMSwgMHgyM10pKSAvLyAnY2FmZTAxMjMnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBieXRlc1RvSGV4KGJ5dGVzKSB7XG4gICAgYWJ5dGVzKGJ5dGVzKTtcbiAgICAvLyBwcmUtY2FjaGluZyBpbXByb3ZlcyB0aGUgc3BlZWQgNnhcbiAgICBsZXQgaGV4ID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBoZXggKz0gaGV4ZXNbYnl0ZXNbaV1dO1xuICAgIH1cbiAgICByZXR1cm4gaGV4O1xufVxuLy8gV2UgdXNlIG9wdGltaXplZCB0ZWNobmlxdWUgdG8gY29udmVydCBoZXggc3RyaW5nIHRvIGJ5dGUgYXJyYXlcbmNvbnN0IGFzY2lpcyA9IHsgXzA6IDQ4LCBfOTogNTcsIEE6IDY1LCBGOiA3MCwgYTogOTcsIGY6IDEwMiB9O1xuZnVuY3Rpb24gYXNjaWlUb0Jhc2UxNihjaCkge1xuICAgIGlmIChjaCA+PSBhc2NpaXMuXzAgJiYgY2ggPD0gYXNjaWlzLl85KVxuICAgICAgICByZXR1cm4gY2ggLSBhc2NpaXMuXzA7IC8vICcyJyA9PiA1MC00OFxuICAgIGlmIChjaCA+PSBhc2NpaXMuQSAmJiBjaCA8PSBhc2NpaXMuRilcbiAgICAgICAgcmV0dXJuIGNoIC0gKGFzY2lpcy5BIC0gMTApOyAvLyAnQicgPT4gNjYtKDY1LTEwKVxuICAgIGlmIChjaCA+PSBhc2NpaXMuYSAmJiBjaCA8PSBhc2NpaXMuZilcbiAgICAgICAgcmV0dXJuIGNoIC0gKGFzY2lpcy5hIC0gMTApOyAvLyAnYicgPT4gOTgtKDk3LTEwKVxuICAgIHJldHVybjtcbn1cbi8qKlxuICogQ29udmVydCBoZXggc3RyaW5nIHRvIGJ5dGUgYXJyYXkuXG4gKiBAZXhhbXBsZSBoZXhUb0J5dGVzKCdjYWZlMDEyMycpIC8vIFVpbnQ4QXJyYXkuZnJvbShbMHhjYSwgMHhmZSwgMHgwMSwgMHgyM10pXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoZXhUb0J5dGVzKGhleCkge1xuICAgIGlmICh0eXBlb2YgaGV4ICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdoZXggc3RyaW5nIGV4cGVjdGVkLCBnb3QgJyArIHR5cGVvZiBoZXgpO1xuICAgIGNvbnN0IGhsID0gaGV4Lmxlbmd0aDtcbiAgICBjb25zdCBhbCA9IGhsIC8gMjtcbiAgICBpZiAoaGwgJSAyKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2hleCBzdHJpbmcgZXhwZWN0ZWQsIGdvdCB1bnBhZGRlZCBoZXggb2YgbGVuZ3RoICcgKyBobCk7XG4gICAgY29uc3QgYXJyYXkgPSBuZXcgVWludDhBcnJheShhbCk7XG4gICAgZm9yIChsZXQgYWkgPSAwLCBoaSA9IDA7IGFpIDwgYWw7IGFpKyssIGhpICs9IDIpIHtcbiAgICAgICAgY29uc3QgbjEgPSBhc2NpaVRvQmFzZTE2KGhleC5jaGFyQ29kZUF0KGhpKSk7XG4gICAgICAgIGNvbnN0IG4yID0gYXNjaWlUb0Jhc2UxNihoZXguY2hhckNvZGVBdChoaSArIDEpKTtcbiAgICAgICAgaWYgKG4xID09PSB1bmRlZmluZWQgfHwgbjIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IGhleFtoaV0gKyBoZXhbaGkgKyAxXTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaGV4IHN0cmluZyBleHBlY3RlZCwgZ290IG5vbi1oZXggY2hhcmFjdGVyIFwiJyArIGNoYXIgKyAnXCIgYXQgaW5kZXggJyArIGhpKTtcbiAgICAgICAgfVxuICAgICAgICBhcnJheVthaV0gPSBuMSAqIDE2ICsgbjI7IC8vIG11bHRpcGx5IGZpcnN0IG9jdGV0LCBlLmcuICdhMycgPT4gMTAqMTYrMyA9PiAxNjAgKyAzID0+IDE2M1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG59XG4vKipcbiAqIFRoZXJlIGlzIG5vIHNldEltbWVkaWF0ZSBpbiBicm93c2VyIGFuZCBzZXRUaW1lb3V0IGlzIHNsb3cuXG4gKiBDYWxsIG9mIGFzeW5jIGZuIHdpbGwgcmV0dXJuIFByb21pc2UsIHdoaWNoIHdpbGwgYmUgZnVsbGZpbGVkIG9ubHkgb25cbiAqIG5leHQgc2NoZWR1bGVyIHF1ZXVlIHByb2Nlc3Npbmcgc3RlcCBhbmQgdGhpcyBpcyBleGFjdGx5IHdoYXQgd2UgbmVlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5leHRUaWNrID0gYXN5bmMgKCkgPT4geyB9O1xuLyoqIFJldHVybnMgY29udHJvbCB0byB0aHJlYWQgZWFjaCAndGljaycgbXMgdG8gYXZvaWQgYmxvY2tpbmcuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXN5bmNMb29wKGl0ZXJzLCB0aWNrLCBjYikge1xuICAgIGxldCB0cyA9IERhdGUubm93KCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyczsgaSsrKSB7XG4gICAgICAgIGNiKGkpO1xuICAgICAgICAvLyBEYXRlLm5vdygpIGlzIG5vdCBtb25vdG9uaWMsIHNvIGluIGNhc2UgaWYgY2xvY2sgZ29lcyBiYWNrd2FyZHMgd2UgcmV0dXJuIHJldHVybiBjb250cm9sIHRvb1xuICAgICAgICBjb25zdCBkaWZmID0gRGF0ZS5ub3coKSAtIHRzO1xuICAgICAgICBpZiAoZGlmZiA+PSAwICYmIGRpZmYgPCB0aWNrKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgICAgIHRzICs9IGRpZmY7XG4gICAgfVxufVxuLyoqXG4gKiBDb252ZXJ0IEpTIHN0cmluZyB0byBieXRlIGFycmF5LlxuICogQGV4YW1wbGUgdXRmOFRvQnl0ZXMoJ2FiYycpIC8vIG5ldyBVaW50OEFycmF5KFs5NywgOTgsIDk5XSlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHV0ZjhUb0J5dGVzKHN0cikge1xuICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1dGY4VG9CeXRlcyBleHBlY3RlZCBzdHJpbmcsIGdvdCAnICsgdHlwZW9mIHN0cik7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShzdHIpKTsgLy8gaHR0cHM6Ly9idWd6aWwubGEvMTY4MTgwOVxufVxuLyoqXG4gKiBOb3JtYWxpemVzIChub24taGV4KSBzdHJpbmcgb3IgVWludDhBcnJheSB0byBVaW50OEFycmF5LlxuICogV2FybmluZzogd2hlbiBVaW50OEFycmF5IGlzIHBhc3NlZCwgaXQgd291bGQgTk9UIGdldCBjb3BpZWQuXG4gKiBLZWVwIGluIG1pbmQgZm9yIGZ1dHVyZSBtdXRhYmxlIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0J5dGVzKGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKVxuICAgICAgICBkYXRhID0gdXRmOFRvQnl0ZXMoZGF0YSk7XG4gICAgYWJ5dGVzKGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBDb3BpZXMgc2V2ZXJhbCBVaW50OEFycmF5cyBpbnRvIG9uZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbmNhdEJ5dGVzKC4uLmFycmF5cykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGEgPSBhcnJheXNbaV07XG4gICAgICAgIGFieXRlcyhhKTtcbiAgICAgICAgc3VtICs9IGEubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCByZXMgPSBuZXcgVWludDhBcnJheShzdW0pO1xuICAgIGZvciAobGV0IGkgPSAwLCBwYWQgPSAwOyBpIDwgYXJyYXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGEgPSBhcnJheXNbaV07XG4gICAgICAgIHJlcy5zZXQoYSwgcGFkKTtcbiAgICAgICAgcGFkICs9IGEubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuLyoqIEZvciBydW50aW1lIGNoZWNrIGlmIGNsYXNzIGltcGxlbWVudHMgaW50ZXJmYWNlICovXG5leHBvcnQgY2xhc3MgSGFzaCB7XG4gICAgLy8gU2FmZSB2ZXJzaW9uIHRoYXQgY2xvbmVzIGludGVybmFsIHN0YXRlXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbG9uZUludG8oKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gY2hlY2tPcHRzKGRlZmF1bHRzLCBvcHRzKSB7XG4gICAgaWYgKG9wdHMgIT09IHVuZGVmaW5lZCAmJiB7fS50b1N0cmluZy5jYWxsKG9wdHMpICE9PSAnW29iamVjdCBPYmplY3RdJylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdPcHRpb25zIHNob3VsZCBiZSBvYmplY3Qgb3IgdW5kZWZpbmVkJyk7XG4gICAgY29uc3QgbWVyZ2VkID0gT2JqZWN0LmFzc2lnbihkZWZhdWx0cywgb3B0cyk7XG4gICAgcmV0dXJuIG1lcmdlZDtcbn1cbi8qKiBXcmFwcyBoYXNoIGZ1bmN0aW9uLCBjcmVhdGluZyBhbiBpbnRlcmZhY2Ugb24gdG9wIG9mIGl0ICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcENvbnN0cnVjdG9yKGhhc2hDb25zKSB7XG4gICAgY29uc3QgaGFzaEMgPSAobXNnKSA9PiBoYXNoQ29ucygpLnVwZGF0ZSh0b0J5dGVzKG1zZykpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IHRtcCA9IGhhc2hDb25zKCk7XG4gICAgaGFzaEMub3V0cHV0TGVuID0gdG1wLm91dHB1dExlbjtcbiAgICBoYXNoQy5ibG9ja0xlbiA9IHRtcC5ibG9ja0xlbjtcbiAgICBoYXNoQy5jcmVhdGUgPSAoKSA9PiBoYXNoQ29ucygpO1xuICAgIHJldHVybiBoYXNoQztcbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwQ29uc3RydWN0b3JXaXRoT3B0cyhoYXNoQ29ucykge1xuICAgIGNvbnN0IGhhc2hDID0gKG1zZywgb3B0cykgPT4gaGFzaENvbnMob3B0cykudXBkYXRlKHRvQnl0ZXMobXNnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgdG1wID0gaGFzaENvbnMoe30pO1xuICAgIGhhc2hDLm91dHB1dExlbiA9IHRtcC5vdXRwdXRMZW47XG4gICAgaGFzaEMuYmxvY2tMZW4gPSB0bXAuYmxvY2tMZW47XG4gICAgaGFzaEMuY3JlYXRlID0gKG9wdHMpID0+IGhhc2hDb25zKG9wdHMpO1xuICAgIHJldHVybiBoYXNoQztcbn1cbmV4cG9ydCBmdW5jdGlvbiB3cmFwWE9GQ29uc3RydWN0b3JXaXRoT3B0cyhoYXNoQ29ucykge1xuICAgIGNvbnN0IGhhc2hDID0gKG1zZywgb3B0cykgPT4gaGFzaENvbnMob3B0cykudXBkYXRlKHRvQnl0ZXMobXNnKSkuZGlnZXN0KCk7XG4gICAgY29uc3QgdG1wID0gaGFzaENvbnMoe30pO1xuICAgIGhhc2hDLm91dHB1dExlbiA9IHRtcC5vdXRwdXRMZW47XG4gICAgaGFzaEMuYmxvY2tMZW4gPSB0bXAuYmxvY2tMZW47XG4gICAgaGFzaEMuY3JlYXRlID0gKG9wdHMpID0+IGhhc2hDb25zKG9wdHMpO1xuICAgIHJldHVybiBoYXNoQztcbn1cbi8qKiBDcnlwdG9ncmFwaGljYWxseSBzZWN1cmUgUFJORy4gVXNlcyBpbnRlcm5hbCBPUy1sZXZlbCBgY3J5cHRvLmdldFJhbmRvbVZhbHVlc2AuICovXG5leHBvcnQgZnVuY3Rpb24gcmFuZG9tQnl0ZXMoYnl0ZXNMZW5ndGggPSAzMikge1xuICAgIGlmIChjcnlwdG8gJiYgdHlwZW9mIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoYnl0ZXNMZW5ndGgpKTtcbiAgICB9XG4gICAgLy8gTGVnYWN5IE5vZGUuanMgY29tcGF0aWJpbGl0eVxuICAgIGlmIChjcnlwdG8gJiYgdHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKGJ5dGVzTGVuZ3RoKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIG11c3QgYmUgZGVmaW5lZCcpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9dXRpbHMuanMubWFwIiwiLyoqXG4gKiBTSEEzIChrZWNjYWspIGhhc2ggZnVuY3Rpb24sIGJhc2VkIG9uIGEgbmV3IFwiU3BvbmdlIGZ1bmN0aW9uXCIgZGVzaWduLlxuICogRGlmZmVyZW50IGZyb20gb2xkZXIgaGFzaGVzLCB0aGUgaW50ZXJuYWwgc3RhdGUgaXMgYmlnZ2VyIHRoYW4gb3V0cHV0IHNpemUuXG4gKlxuICogQ2hlY2sgb3V0IFtGSVBTLTIwMl0oaHR0cHM6Ly9udmxwdWJzLm5pc3QuZ292L25pc3RwdWJzL0ZJUFMvTklTVC5GSVBTLjIwMi5wZGYpLFxuICogW1dlYnNpdGVdKGh0dHBzOi8va2VjY2FrLnRlYW0va2VjY2FrLmh0bWwpLFxuICogW3RoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFNIQS0zIGFuZCBLZWNjYWtdKGh0dHBzOi8vY3J5cHRvLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xNTcyNy93aGF0LWFyZS10aGUta2V5LWRpZmZlcmVuY2VzLWJldHdlZW4tdGhlLWRyYWZ0LXNoYS0zLXN0YW5kYXJkLWFuZC10aGUta2VjY2FrLXN1YikuXG4gKlxuICogQ2hlY2sgb3V0IGBzaGEzLWFkZG9uc2AgbW9kdWxlIGZvciBjU0hBS0UsIGsxMiwgYW5kIG90aGVycy5cbiAqIEBtb2R1bGVcbiAqL1xuaW1wb3J0IHsgYWJ5dGVzLCBhZXhpc3RzLCBhbnVtYmVyLCBhb3V0cHV0IH0gZnJvbSAnLi9fYXNzZXJ0LmpzJztcbmltcG9ydCB7IHJvdGxCSCwgcm90bEJMLCByb3RsU0gsIHJvdGxTTCwgc3BsaXQgfSBmcm9tICcuL191NjQuanMnO1xuaW1wb3J0IHsgYnl0ZVN3YXAzMiwgSGFzaCwgaXNMRSwgdG9CeXRlcywgdTMyLCB3cmFwQ29uc3RydWN0b3IsIHdyYXBYT0ZDb25zdHJ1Y3RvcldpdGhPcHRzLCB9IGZyb20gJy4vdXRpbHMuanMnO1xuLy8gVmFyaW91cyBwZXIgcm91bmQgY29uc3RhbnRzIGNhbGN1bGF0aW9uc1xuY29uc3QgU0hBM19QSSA9IFtdO1xuY29uc3QgU0hBM19ST1RMID0gW107XG5jb25zdCBfU0hBM19JT1RBID0gW107XG5jb25zdCBfMG4gPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDApO1xuY29uc3QgXzFuID0gLyogQF9fUFVSRV9fICovIEJpZ0ludCgxKTtcbmNvbnN0IF8ybiA9IC8qIEBfX1BVUkVfXyAqLyBCaWdJbnQoMik7XG5jb25zdCBfN24gPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDcpO1xuY29uc3QgXzI1Nm4gPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDI1Nik7XG5jb25zdCBfMHg3MW4gPSAvKiBAX19QVVJFX18gKi8gQmlnSW50KDB4NzEpO1xuZm9yIChsZXQgcm91bmQgPSAwLCBSID0gXzFuLCB4ID0gMSwgeSA9IDA7IHJvdW5kIDwgMjQ7IHJvdW5kKyspIHtcbiAgICAvLyBQaVxuICAgIFt4LCB5XSA9IFt5LCAoMiAqIHggKyAzICogeSkgJSA1XTtcbiAgICBTSEEzX1BJLnB1c2goMiAqICg1ICogeSArIHgpKTtcbiAgICAvLyBSb3RhdGlvbmFsXG4gICAgU0hBM19ST1RMLnB1c2goKCgocm91bmQgKyAxKSAqIChyb3VuZCArIDIpKSAvIDIpICUgNjQpO1xuICAgIC8vIElvdGFcbiAgICBsZXQgdCA9IF8wbjtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IDc7IGorKykge1xuICAgICAgICBSID0gKChSIDw8IF8xbikgXiAoKFIgPj4gXzduKSAqIF8weDcxbikpICUgXzI1Nm47XG4gICAgICAgIGlmIChSICYgXzJuKVxuICAgICAgICAgICAgdCBePSBfMW4gPDwgKChfMW4gPDwgLyogQF9fUFVSRV9fICovIEJpZ0ludChqKSkgLSBfMW4pO1xuICAgIH1cbiAgICBfU0hBM19JT1RBLnB1c2godCk7XG59XG5jb25zdCBbU0hBM19JT1RBX0gsIFNIQTNfSU9UQV9MXSA9IC8qIEBfX1BVUkVfXyAqLyBzcGxpdChfU0hBM19JT1RBLCB0cnVlKTtcbi8vIExlZnQgcm90YXRpb24gKHdpdGhvdXQgMCwgMzIsIDY0KVxuY29uc3Qgcm90bEggPSAoaCwgbCwgcykgPT4gKHMgPiAzMiA/IHJvdGxCSChoLCBsLCBzKSA6IHJvdGxTSChoLCBsLCBzKSk7XG5jb25zdCByb3RsTCA9IChoLCBsLCBzKSA9PiAocyA+IDMyID8gcm90bEJMKGgsIGwsIHMpIDogcm90bFNMKGgsIGwsIHMpKTtcbi8qKiBga2VjY2FrZjE2MDBgIGludGVybmFsIGZ1bmN0aW9uLCBhZGRpdGlvbmFsbHkgYWxsb3dzIHRvIGFkanVzdCByb3VuZCBjb3VudC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrZWNjYWtQKHMsIHJvdW5kcyA9IDI0KSB7XG4gICAgY29uc3QgQiA9IG5ldyBVaW50MzJBcnJheSg1ICogMik7XG4gICAgLy8gTk9URTogYWxsIGluZGljZXMgYXJlIHgyIHNpbmNlIHdlIHN0b3JlIHN0YXRlIGFzIHUzMiBpbnN0ZWFkIG9mIHU2NCAoYmlnaW50cyB0byBzbG93IGluIGpzKVxuICAgIGZvciAobGV0IHJvdW5kID0gMjQgLSByb3VuZHM7IHJvdW5kIDwgMjQ7IHJvdW5kKyspIHtcbiAgICAgICAgLy8gVGhldGEgzrhcbiAgICAgICAgZm9yIChsZXQgeCA9IDA7IHggPCAxMDsgeCsrKVxuICAgICAgICAgICAgQlt4XSA9IHNbeF0gXiBzW3ggKyAxMF0gXiBzW3ggKyAyMF0gXiBzW3ggKyAzMF0gXiBzW3ggKyA0MF07XG4gICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgMTA7IHggKz0gMikge1xuICAgICAgICAgICAgY29uc3QgaWR4MSA9ICh4ICsgOCkgJSAxMDtcbiAgICAgICAgICAgIGNvbnN0IGlkeDAgPSAoeCArIDIpICUgMTA7XG4gICAgICAgICAgICBjb25zdCBCMCA9IEJbaWR4MF07XG4gICAgICAgICAgICBjb25zdCBCMSA9IEJbaWR4MCArIDFdO1xuICAgICAgICAgICAgY29uc3QgVGggPSByb3RsSChCMCwgQjEsIDEpIF4gQltpZHgxXTtcbiAgICAgICAgICAgIGNvbnN0IFRsID0gcm90bEwoQjAsIEIxLCAxKSBeIEJbaWR4MSArIDFdO1xuICAgICAgICAgICAgZm9yIChsZXQgeSA9IDA7IHkgPCA1MDsgeSArPSAxMCkge1xuICAgICAgICAgICAgICAgIHNbeCArIHldIF49IFRoO1xuICAgICAgICAgICAgICAgIHNbeCArIHkgKyAxXSBePSBUbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBSaG8gKM+BKSBhbmQgUGkgKM+AKVxuICAgICAgICBsZXQgY3VySCA9IHNbMl07XG4gICAgICAgIGxldCBjdXJMID0gc1szXTtcbiAgICAgICAgZm9yIChsZXQgdCA9IDA7IHQgPCAyNDsgdCsrKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlmdCA9IFNIQTNfUk9UTFt0XTtcbiAgICAgICAgICAgIGNvbnN0IFRoID0gcm90bEgoY3VySCwgY3VyTCwgc2hpZnQpO1xuICAgICAgICAgICAgY29uc3QgVGwgPSByb3RsTChjdXJILCBjdXJMLCBzaGlmdCk7XG4gICAgICAgICAgICBjb25zdCBQSSA9IFNIQTNfUElbdF07XG4gICAgICAgICAgICBjdXJIID0gc1tQSV07XG4gICAgICAgICAgICBjdXJMID0gc1tQSSArIDFdO1xuICAgICAgICAgICAgc1tQSV0gPSBUaDtcbiAgICAgICAgICAgIHNbUEkgKyAxXSA9IFRsO1xuICAgICAgICB9XG4gICAgICAgIC8vIENoaSAoz4cpXG4gICAgICAgIGZvciAobGV0IHkgPSAwOyB5IDwgNTA7IHkgKz0gMTApIHtcbiAgICAgICAgICAgIGZvciAobGV0IHggPSAwOyB4IDwgMTA7IHgrKylcbiAgICAgICAgICAgICAgICBCW3hdID0gc1t5ICsgeF07XG4gICAgICAgICAgICBmb3IgKGxldCB4ID0gMDsgeCA8IDEwOyB4KyspXG4gICAgICAgICAgICAgICAgc1t5ICsgeF0gXj0gfkJbKHggKyAyKSAlIDEwXSAmIEJbKHggKyA0KSAlIDEwXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBJb3RhICjOuSlcbiAgICAgICAgc1swXSBePSBTSEEzX0lPVEFfSFtyb3VuZF07XG4gICAgICAgIHNbMV0gXj0gU0hBM19JT1RBX0xbcm91bmRdO1xuICAgIH1cbiAgICBCLmZpbGwoMCk7XG59XG4vKiogS2VjY2FrIHNwb25nZSBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjbGFzcyBLZWNjYWsgZXh0ZW5kcyBIYXNoIHtcbiAgICAvLyBOT1RFOiB3ZSBhY2NlcHQgYXJndW1lbnRzIGluIGJ5dGVzIGluc3RlYWQgb2YgYml0cyBoZXJlLlxuICAgIGNvbnN0cnVjdG9yKGJsb2NrTGVuLCBzdWZmaXgsIG91dHB1dExlbiwgZW5hYmxlWE9GID0gZmFsc2UsIHJvdW5kcyA9IDI0KSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuYmxvY2tMZW4gPSBibG9ja0xlbjtcbiAgICAgICAgdGhpcy5zdWZmaXggPSBzdWZmaXg7XG4gICAgICAgIHRoaXMub3V0cHV0TGVuID0gb3V0cHV0TGVuO1xuICAgICAgICB0aGlzLmVuYWJsZVhPRiA9IGVuYWJsZVhPRjtcbiAgICAgICAgdGhpcy5yb3VuZHMgPSByb3VuZHM7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgdGhpcy5wb3NPdXQgPSAwO1xuICAgICAgICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgICAgIC8vIENhbiBiZSBwYXNzZWQgZnJvbSB1c2VyIGFzIGRrTGVuXG4gICAgICAgIGFudW1iZXIob3V0cHV0TGVuKTtcbiAgICAgICAgLy8gMTYwMCA9IDV4NSBtYXRyaXggb2YgNjRiaXQuICAxNjAwIGJpdHMgPT09IDIwMCBieXRlc1xuICAgICAgICAvLyAwIDwgYmxvY2tMZW4gPCAyMDBcbiAgICAgICAgaWYgKDAgPj0gdGhpcy5ibG9ja0xlbiB8fCB0aGlzLmJsb2NrTGVuID49IDIwMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2hhMyBzdXBwb3J0cyBvbmx5IGtlY2Nhay1mMTYwMCBmdW5jdGlvbicpO1xuICAgICAgICB0aGlzLnN0YXRlID0gbmV3IFVpbnQ4QXJyYXkoMjAwKTtcbiAgICAgICAgdGhpcy5zdGF0ZTMyID0gdTMyKHRoaXMuc3RhdGUpO1xuICAgIH1cbiAgICBrZWNjYWsoKSB7XG4gICAgICAgIGlmICghaXNMRSlcbiAgICAgICAgICAgIGJ5dGVTd2FwMzIodGhpcy5zdGF0ZTMyKTtcbiAgICAgICAga2VjY2FrUCh0aGlzLnN0YXRlMzIsIHRoaXMucm91bmRzKTtcbiAgICAgICAgaWYgKCFpc0xFKVxuICAgICAgICAgICAgYnl0ZVN3YXAzMih0aGlzLnN0YXRlMzIpO1xuICAgICAgICB0aGlzLnBvc091dCA9IDA7XG4gICAgICAgIHRoaXMucG9zID0gMDtcbiAgICB9XG4gICAgdXBkYXRlKGRhdGEpIHtcbiAgICAgICAgYWV4aXN0cyh0aGlzKTtcbiAgICAgICAgY29uc3QgeyBibG9ja0xlbiwgc3RhdGUgfSA9IHRoaXM7XG4gICAgICAgIGRhdGEgPSB0b0J5dGVzKGRhdGEpO1xuICAgICAgICBjb25zdCBsZW4gPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgcG9zID0gMDsgcG9zIDwgbGVuOykge1xuICAgICAgICAgICAgY29uc3QgdGFrZSA9IE1hdGgubWluKGJsb2NrTGVuIC0gdGhpcy5wb3MsIGxlbiAtIHBvcyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRha2U7IGkrKylcbiAgICAgICAgICAgICAgICBzdGF0ZVt0aGlzLnBvcysrXSBePSBkYXRhW3BvcysrXTtcbiAgICAgICAgICAgIGlmICh0aGlzLnBvcyA9PT0gYmxvY2tMZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5rZWNjYWsoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgZmluaXNoKCkge1xuICAgICAgICBpZiAodGhpcy5maW5pc2hlZClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5maW5pc2hlZCA9IHRydWU7XG4gICAgICAgIGNvbnN0IHsgc3RhdGUsIHN1ZmZpeCwgcG9zLCBibG9ja0xlbiB9ID0gdGhpcztcbiAgICAgICAgLy8gRG8gdGhlIHBhZGRpbmdcbiAgICAgICAgc3RhdGVbcG9zXSBePSBzdWZmaXg7XG4gICAgICAgIGlmICgoc3VmZml4ICYgMHg4MCkgIT09IDAgJiYgcG9zID09PSBibG9ja0xlbiAtIDEpXG4gICAgICAgICAgICB0aGlzLmtlY2NhaygpO1xuICAgICAgICBzdGF0ZVtibG9ja0xlbiAtIDFdIF49IDB4ODA7XG4gICAgICAgIHRoaXMua2VjY2FrKCk7XG4gICAgfVxuICAgIHdyaXRlSW50byhvdXQpIHtcbiAgICAgICAgYWV4aXN0cyh0aGlzLCBmYWxzZSk7XG4gICAgICAgIGFieXRlcyhvdXQpO1xuICAgICAgICB0aGlzLmZpbmlzaCgpO1xuICAgICAgICBjb25zdCBidWZmZXJPdXQgPSB0aGlzLnN0YXRlO1xuICAgICAgICBjb25zdCB7IGJsb2NrTGVuIH0gPSB0aGlzO1xuICAgICAgICBmb3IgKGxldCBwb3MgPSAwLCBsZW4gPSBvdXQubGVuZ3RoOyBwb3MgPCBsZW47KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wb3NPdXQgPj0gYmxvY2tMZW4pXG4gICAgICAgICAgICAgICAgdGhpcy5rZWNjYWsoKTtcbiAgICAgICAgICAgIGNvbnN0IHRha2UgPSBNYXRoLm1pbihibG9ja0xlbiAtIHRoaXMucG9zT3V0LCBsZW4gLSBwb3MpO1xuICAgICAgICAgICAgb3V0LnNldChidWZmZXJPdXQuc3ViYXJyYXkodGhpcy5wb3NPdXQsIHRoaXMucG9zT3V0ICsgdGFrZSksIHBvcyk7XG4gICAgICAgICAgICB0aGlzLnBvc091dCArPSB0YWtlO1xuICAgICAgICAgICAgcG9zICs9IHRha2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG4gICAgeG9mSW50byhvdXQpIHtcbiAgICAgICAgLy8gU2hhMy9LZWNjYWsgdXNhZ2Ugd2l0aCBYT0YgaXMgcHJvYmFibHkgbWlzdGFrZSwgb25seSBTSEFLRSBpbnN0YW5jZXMgY2FuIGRvIFhPRlxuICAgICAgICBpZiAoIXRoaXMuZW5hYmxlWE9GKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdYT0YgaXMgbm90IHBvc3NpYmxlIGZvciB0aGlzIGluc3RhbmNlJyk7XG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlSW50byhvdXQpO1xuICAgIH1cbiAgICB4b2YoYnl0ZXMpIHtcbiAgICAgICAgYW51bWJlcihieXRlcyk7XG4gICAgICAgIHJldHVybiB0aGlzLnhvZkludG8obmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKTtcbiAgICB9XG4gICAgZGlnZXN0SW50byhvdXQpIHtcbiAgICAgICAgYW91dHB1dChvdXQsIHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5maW5pc2hlZClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignZGlnZXN0KCkgd2FzIGFscmVhZHkgY2FsbGVkJyk7XG4gICAgICAgIHRoaXMud3JpdGVJbnRvKG91dCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSgpO1xuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbiAgICBkaWdlc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpZ2VzdEludG8obmV3IFVpbnQ4QXJyYXkodGhpcy5vdXRwdXRMZW4pKTtcbiAgICB9XG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnN0YXRlLmZpbGwoMCk7XG4gICAgfVxuICAgIF9jbG9uZUludG8odG8pIHtcbiAgICAgICAgY29uc3QgeyBibG9ja0xlbiwgc3VmZml4LCBvdXRwdXRMZW4sIHJvdW5kcywgZW5hYmxlWE9GIH0gPSB0aGlzO1xuICAgICAgICB0byB8fCAodG8gPSBuZXcgS2VjY2FrKGJsb2NrTGVuLCBzdWZmaXgsIG91dHB1dExlbiwgZW5hYmxlWE9GLCByb3VuZHMpKTtcbiAgICAgICAgdG8uc3RhdGUzMi5zZXQodGhpcy5zdGF0ZTMyKTtcbiAgICAgICAgdG8ucG9zID0gdGhpcy5wb3M7XG4gICAgICAgIHRvLnBvc091dCA9IHRoaXMucG9zT3V0O1xuICAgICAgICB0by5maW5pc2hlZCA9IHRoaXMuZmluaXNoZWQ7XG4gICAgICAgIHRvLnJvdW5kcyA9IHJvdW5kcztcbiAgICAgICAgLy8gU3VmZml4IGNhbiBjaGFuZ2UgaW4gY1NIQUtFXG4gICAgICAgIHRvLnN1ZmZpeCA9IHN1ZmZpeDtcbiAgICAgICAgdG8ub3V0cHV0TGVuID0gb3V0cHV0TGVuO1xuICAgICAgICB0by5lbmFibGVYT0YgPSBlbmFibGVYT0Y7XG4gICAgICAgIHRvLmRlc3Ryb3llZCA9IHRoaXMuZGVzdHJveWVkO1xuICAgICAgICByZXR1cm4gdG87XG4gICAgfVxufVxuY29uc3QgZ2VuID0gKHN1ZmZpeCwgYmxvY2tMZW4sIG91dHB1dExlbikgPT4gd3JhcENvbnN0cnVjdG9yKCgpID0+IG5ldyBLZWNjYWsoYmxvY2tMZW4sIHN1ZmZpeCwgb3V0cHV0TGVuKSk7XG4vKiogU0hBMy0yMjQgaGFzaCBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBzaGEzXzIyNCA9IC8qIEBfX1BVUkVfXyAqLyBnZW4oMHgwNiwgMTQ0LCAyMjQgLyA4KTtcbi8qKiBTSEEzLTI1NiBoYXNoIGZ1bmN0aW9uLiBEaWZmZXJlbnQgZnJvbSBrZWNjYWstMjU2LiAqL1xuZXhwb3J0IGNvbnN0IHNoYTNfMjU2ID0gLyogQF9fUFVSRV9fICovIGdlbigweDA2LCAxMzYsIDI1NiAvIDgpO1xuLyoqIFNIQTMtMzg0IGhhc2ggZnVuY3Rpb24uICovXG5leHBvcnQgY29uc3Qgc2hhM18zODQgPSAvKiBAX19QVVJFX18gKi8gZ2VuKDB4MDYsIDEwNCwgMzg0IC8gOCk7XG4vKiogU0hBMy01MTIgaGFzaCBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBzaGEzXzUxMiA9IC8qIEBfX1BVUkVfXyAqLyBnZW4oMHgwNiwgNzIsIDUxMiAvIDgpO1xuLyoqIGtlY2Nhay0yMjQgaGFzaCBmdW5jdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBrZWNjYWtfMjI0ID0gLyogQF9fUFVSRV9fICovIGdlbigweDAxLCAxNDQsIDIyNCAvIDgpO1xuLyoqIGtlY2Nhay0yNTYgaGFzaCBmdW5jdGlvbi4gRGlmZmVyZW50IGZyb20gU0hBMy0yNTYuICovXG5leHBvcnQgY29uc3Qga2VjY2FrXzI1NiA9IC8qIEBfX1BVUkVfXyAqLyBnZW4oMHgwMSwgMTM2LCAyNTYgLyA4KTtcbi8qKiBrZWNjYWstMzg0IGhhc2ggZnVuY3Rpb24uICovXG5leHBvcnQgY29uc3Qga2VjY2FrXzM4NCA9IC8qIEBfX1BVUkVfXyAqLyBnZW4oMHgwMSwgMTA0LCAzODQgLyA4KTtcbi8qKiBrZWNjYWstNTEyIGhhc2ggZnVuY3Rpb24uICovXG5leHBvcnQgY29uc3Qga2VjY2FrXzUxMiA9IC8qIEBfX1BVUkVfXyAqLyBnZW4oMHgwMSwgNzIsIDUxMiAvIDgpO1xuY29uc3QgZ2VuU2hha2UgPSAoc3VmZml4LCBibG9ja0xlbiwgb3V0cHV0TGVuKSA9PiB3cmFwWE9GQ29uc3RydWN0b3JXaXRoT3B0cygob3B0cyA9IHt9KSA9PiBuZXcgS2VjY2FrKGJsb2NrTGVuLCBzdWZmaXgsIG9wdHMuZGtMZW4gPT09IHVuZGVmaW5lZCA/IG91dHB1dExlbiA6IG9wdHMuZGtMZW4sIHRydWUpKTtcbi8qKiBTSEFLRTEyOCBYT0Ygd2l0aCAxMjgtYml0IHNlY3VyaXR5LiAqL1xuZXhwb3J0IGNvbnN0IHNoYWtlMTI4ID0gLyogQF9fUFVSRV9fICovIGdlblNoYWtlKDB4MWYsIDE2OCwgMTI4IC8gOCk7XG4vKiogU0hBS0UyNTYgWE9GIHdpdGggMjU2LWJpdCBzZWN1cml0eS4gKi9cbmV4cG9ydCBjb25zdCBzaGFrZTI1NiA9IC8qIEBfX1BVUkVfXyAqLyBnZW5TaGFrZSgweDFmLCAxMzYsIDI1NiAvIDgpO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9c2hhMy5qcy5tYXAiLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQge1NjYWxhcn0gZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuaW1wb3J0IHtrZWNjYWtfMjU2fSBmcm9tICdAbm9ibGUvaGFzaGVzL3NoYTMnO1xuXG5jb25zdCBQT0xZTk9NSUFMID0gMDtcbmNvbnN0IFNDQUxBUiA9IDE7XG5cbmV4cG9ydCBjbGFzcyBLZWNjYWsyNTZUcmFuc2NyaXB0IHtcbiAgICBjb25zdHJ1Y3RvcihjdXJ2ZSkge1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMuRnIgPSBjdXJ2ZS5GcjtcblxuICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIH1cblxuICAgIGFkZFBvbENvbW1pdG1lbnQocG9seW5vbWlhbENvbW1pdG1lbnQpIHtcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goe3R5cGU6IFBPTFlOT01JQUwsIGRhdGE6IHBvbHlub21pYWxDb21taXRtZW50fSk7XG4gICAgfVxuXG4gICAgYWRkU2NhbGFyKHNjYWxhcikge1xuICAgICAgICB0aGlzLmRhdGEucHVzaCh7dHlwZTogU0NBTEFSLCBkYXRhOiBzY2FsYXJ9KTtcbiAgICB9XG5cbiAgICBnZXRDaGFsbGVuZ2UoKSB7XG4gICAgICAgIGlmKDAgPT09IHRoaXMuZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIktlY2NhazI1NlRyYW5zY3JpcHQ6IE5vIGRhdGEgdG8gZ2VuZXJhdGUgYSB0cmFuc2NyaXB0XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5Qb2x5bm9taWFscyA9IDA7XG4gICAgICAgIGxldCBuU2NhbGFycyA9IDA7XG5cbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlbWVudCA9PiBQT0xZTk9NSUFMID09PSBlbGVtZW50LnR5cGUgPyBuUG9seW5vbWlhbHMrKyA6IG5TY2FsYXJzKyspO1xuXG4gICAgICAgIGxldCBidWZmZXIgPSBuZXcgVWludDhBcnJheShuU2NhbGFycyAqIHRoaXMuRnIubjggKyBuUG9seW5vbWlhbHMgKiB0aGlzLkcxLkYubjggKiAyKTtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChQT0xZTk9NSUFMID09PSB0aGlzLmRhdGFbaV0udHlwZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuRzEudG9ScHJVbmNvbXByZXNzZWQoYnVmZmVyLCBvZmZzZXQsIHRoaXMuZGF0YVtpXS5kYXRhKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy5HMS5GLm44ICogMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5Gci50b1JwckJFKGJ1ZmZlciwgb2Zmc2V0LCB0aGlzLmRhdGFbaV0uZGF0YSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHRoaXMuRnIubjg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IFNjYWxhci5mcm9tUnByQkUoa2VjY2FrXzI1NihidWZmZXIpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuRnIuZSh2YWx1ZSk7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmV4cG9ydCBjbGFzcyBNdWxaIHtcbiAgICBzdGF0aWMgZ2V0WjEoRnIpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIEZyLnplcm8sXG4gICAgICAgICAgICBGci5hZGQoRnIuZSgtMSksIEZyLndbMl0pLFxuICAgICAgICAgICAgRnIuZSgtMiksXG4gICAgICAgICAgICBGci5zdWIoRnIuZSgtMSksIEZyLndbMl0pLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRaMihGcikge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgRnIuemVybyxcbiAgICAgICAgICAgIEZyLmFkZChGci56ZXJvLCBGci5tdWwoRnIuZSgtMiksIEZyLndbMl0pKSxcbiAgICAgICAgICAgIEZyLmUoNCksXG4gICAgICAgICAgICBGci5zdWIoRnIuemVybywgRnIubXVsKEZyLmUoLTIpLCBGci53WzJdKSksXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFozKEZyKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBGci56ZXJvLFxuICAgICAgICAgICAgRnIuYWRkKEZyLmUoMiksIEZyLm11bChGci5lKDIpLCBGci53WzJdKSksXG4gICAgICAgICAgICBGci5lKC04KSxcbiAgICAgICAgICAgIEZyLnN1YihGci5lKDIpLCBGci5tdWwoRnIuZSgyKSwgRnIud1syXSkpLFxuICAgICAgICBdO1xuXG4gICAgfVxuXG4gICAgc3RhdGljIG11bDIoYSwgYiwgYXAsIGJwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgciA9IGFfYjtcblxuICAgICAgICBsZXQgYTAgPSBGci5hZGQoYV9icCwgYXBfYik7XG5cbiAgICAgICAgbGV0IGExID0gYXBfYnA7XG5cbiAgICAgICAgcnogPSBhMDtcbiAgICAgICAgaWYgKHApIHtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjFbcF0sIGExKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsMyhhLCBiLCBjLCBhcCwgYnAsIGNwLCBwLCBGcikge1xuICAgICAgICBjb25zdCBaMSA9IHRoaXMuZ2V0WjEoRnIpO1xuICAgICAgICBjb25zdCBaMiA9IHRoaXMuZ2V0WjIoRnIpO1xuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgciA9IEZyLm11bChhX2IsIGMpO1xuXG4gICAgICAgIGxldCBhMCA9IEZyLm11bChhcF9iLCBjKTtcbiAgICAgICAgYTAgPSBGci5hZGQoYTAsIEZyLm11bChhX2JwLCBjKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjcCkpO1xuXG4gICAgICAgIGxldCBhMSA9IEZyLm11bChhcF9icCwgYyk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY3ApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhcF9iLCBjcCkpO1xuXG4gICAgICAgIHJ6ID0gYTA7XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgICBjb25zdCBhMiA9IEZyLm11bChhcF9icCwgY3ApO1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjJbcF0sIGEyKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW3IsIHJ6XTtcbiAgICB9XG5cbiAgICBzdGF0aWMgbXVsNChhLCBiLCBjLCBkLCBhcCwgYnAsIGNwLCBkcCwgcCwgRnIpIHtcbiAgICAgICAgY29uc3QgWjEgPSB0aGlzLmdldFoxKEZyKTtcbiAgICAgICAgY29uc3QgWjIgPSB0aGlzLmdldFoyKEZyKTtcbiAgICAgICAgY29uc3QgWjMgPSB0aGlzLmdldFozKEZyKTtcblxuICAgICAgICBsZXQgciwgcno7XG5cbiAgICAgICAgY29uc3QgYV9iID0gRnIubXVsKGEsIGIpO1xuICAgICAgICBjb25zdCBhX2JwID0gRnIubXVsKGEsIGJwKTtcbiAgICAgICAgY29uc3QgYXBfYiA9IEZyLm11bChhcCwgYik7XG4gICAgICAgIGNvbnN0IGFwX2JwID0gRnIubXVsKGFwLCBicCk7XG5cbiAgICAgICAgY29uc3QgY19kID0gRnIubXVsKGMsIGQpO1xuICAgICAgICBjb25zdCBjX2RwID0gRnIubXVsKGMsIGRwKTtcbiAgICAgICAgY29uc3QgY3BfZCA9IEZyLm11bChjcCwgZCk7XG4gICAgICAgIGNvbnN0IGNwX2RwID0gRnIubXVsKGNwLCBkcCk7XG5cbiAgICAgICAgciA9IEZyLm11bChhX2IsIGNfZCk7XG5cbiAgICAgICAgbGV0IGEwID0gRnIubXVsKGFwX2IsIGNfZCk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9icCwgY19kKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjcF9kKSk7XG4gICAgICAgIGEwID0gRnIuYWRkKGEwLCBGci5tdWwoYV9iLCBjX2RwKSk7XG5cbiAgICAgICAgbGV0IGExID0gRnIubXVsKGFwX2JwLCBjX2QpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFwX2IsIGNwX2QpKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhcF9iLCBjX2RwKSk7XG4gICAgICAgIGExID0gRnIuYWRkKGExLCBGci5tdWwoYV9icCwgY3BfZCkpO1xuICAgICAgICBhMSA9IEZyLmFkZChhMSwgRnIubXVsKGFfYnAsIGNfZHApKTtcbiAgICAgICAgYTEgPSBGci5hZGQoYTEsIEZyLm11bChhX2IsIGNwX2RwKSk7XG5cbiAgICAgICAgbGV0IGEyID0gRnIubXVsKGFfYnAsIGNwX2RwKTtcbiAgICAgICAgYTIgPSBGci5hZGQoYTIsIEZyLm11bChhcF9iLCBjcF9kcCkpO1xuICAgICAgICBhMiA9IEZyLmFkZChhMiwgRnIubXVsKGFwX2JwLCBjX2RwKSk7XG4gICAgICAgIGEyID0gRnIuYWRkKGEyLCBGci5tdWwoYXBfYnAsIGNwX2QpKTtcblxuICAgICAgICBsZXQgYTMgPSBGci5tdWwoYXBfYnAsIGNwX2RwKTtcblxuICAgICAgICByeiA9IGEwO1xuICAgICAgICBpZiAocCkge1xuICAgICAgICAgICAgcnogPSBGci5hZGQocnosIEZyLm11bChaMVtwXSwgYTEpKTtcbiAgICAgICAgICAgIHJ6ID0gRnIuYWRkKHJ6LCBGci5tdWwoWjJbcF0sIGEyKSk7XG4gICAgICAgICAgICByeiA9IEZyLmFkZChyeiwgRnIubXVsKFozW3BdLCBhMykpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtyLCByel07XG4gICAgfVxufSIsImV4cG9ydCBjb25zdCBaS0VZX1BMX05TRUNUSU9OUyA9IDEzO1xuXG5leHBvcnQgY29uc3QgWktFWV9QTF9IRUFERVJfU0VDVElPTiA9IDI7XG5leHBvcnQgY29uc3QgWktFWV9QTF9BRERJVElPTlNfU0VDVElPTiA9IDM7XG5leHBvcnQgY29uc3QgWktFWV9QTF9BX01BUF9TRUNUSU9OID0gNDtcbmV4cG9ydCBjb25zdCBaS0VZX1BMX0JfTUFQX1NFQ1RJT04gPSA1O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfQ19NQVBfU0VDVElPTiA9IDY7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RTV9TRUNUSU9OID0gNztcbmV4cG9ydCBjb25zdCBaS0VZX1BMX1FMX1NFQ1RJT04gPSA4O1xuZXhwb3J0IGNvbnN0IFpLRVlfUExfUVJfU0VDVElPTiA9IDk7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RT19TRUNUSU9OID0gMTA7XG5leHBvcnQgY29uc3QgWktFWV9QTF9RQ19TRUNUSU9OID0gMTE7XG5leHBvcnQgY29uc3QgWktFWV9QTF9TSUdNQV9TRUNUSU9OID0gMTI7XG5leHBvcnQgY29uc3QgWktFWV9QTF9MQUdSQU5HRV9TRUNUSU9OID0gMTM7XG5leHBvcnQgY29uc3QgWktFWV9QTF9QVEFVX1NFQ1RJT04gPSAxNDtcblxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGNsYXNzIFBvbHlub21pYWwge1xuICAgIGNvbnN0cnVjdG9yKGNvZWZmaWNpZW50cywgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLmNvZWYgPSBjb2VmZmljaWVudHM7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBmcm9tRXZhbHVhdGlvbnMoYnVmZmVyLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIGxldCBjb2VmZmljaWVudHMgPSBhd2FpdCBjdXJ2ZS5Gci5pZmZ0KGJ1ZmZlcik7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGNvZWZmaWNpZW50cywgY3VydmUsIGxvZ2dlcik7XG4gICAgfVxuXG4gICAgc3RhdGljIGZyb21Db2VmZmljaWVudHNBcnJheShhcnJheSwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgYnVmZiA9IGFycmF5Lmxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcihhcnJheS5sZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShhcnJheS5sZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIGJ1ZmYuc2V0KGFycmF5W2ldLCBpICogRnIubjgpO1xuXG4gICAgICAgIHJldHVybiBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbVBvbHlub21pYWwocG9seW5vbWlhbCwgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICBsZXQgbGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgbGV0IEZyID0gY3VydmUuRnI7XG5cbiAgICAgICAgbGV0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIobGVuZ3RoICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkobGVuZ3RoICogRnIubjgpO1xuICAgICAgICBidWZmLnNldChwb2x5bm9taWFsLmNvZWYuc2xpY2UoKSwgMCk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmYsIGN1cnZlLCBsb2dnZXIpO1xuICAgIH1cblxuICAgIGlzRXF1YWwocG9seW5vbWlhbCkge1xuICAgICAgICBjb25zdCBkZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBpZiAoZGVncmVlICE9PSBwb2x5bm9taWFsLmRlZ3JlZSgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkZWdyZWUgKyAxOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5Gci5lcSh0aGlzLmdldENvZWYoaSksIHBvbHlub21pYWwuZ2V0Q29lZihpKSkpIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGJsaW5kQ29lZmZpY2llbnRzKGJsaW5kaW5nRmFjdG9ycykge1xuICAgICAgICBibGluZGluZ0ZhY3RvcnMgPSBibGluZGluZ0ZhY3RvcnMgfHwgW107XG5cbiAgICAgICAgY29uc3QgYmxpbmRlZENvZWZmaWNpZW50cyA9ICh0aGlzLmxlbmd0aCgpICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHRoaXMubGVuZ3RoKCkgKyBibGluZGluZ0ZhY3RvcnMubGVuZ3RoKSAqIHRoaXMuRnIubjgpIDpcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KCh0aGlzLmxlbmd0aCgpICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiB0aGlzLkZyLm44KTtcblxuICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldCh0aGlzLmNvZWYsIDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zZXQoXG4gICAgICAgICAgICAgICAgdGhpcy5Gci5hZGQoXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kZWRDb2VmZmljaWVudHMuc2xpY2UoKHRoaXMubGVuZ3RoKCkgKyBpKSAqIHRoaXMuRnIubjgsICh0aGlzLmxlbmd0aCgpICsgaSArIDEpICogdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgKHRoaXMubGVuZ3RoKCkgKyBpKSAqIHRoaXMuRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBibGluZGVkQ29lZmZpY2llbnRzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRlZENvZWZmaWNpZW50cy5zbGljZShpICogdGhpcy5Gci5uOCwgKGkgKyAxKSAqIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICBibGluZGluZ0ZhY3RvcnNbaV1cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGkgKiB0aGlzLkZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY29lZiA9IGJsaW5kZWRDb2VmZmljaWVudHM7XG4gICAgfVxuXG4gICAgZ2V0Q29lZihpbmRleCkge1xuICAgICAgICBjb25zdCBpX244ID0gaW5kZXggKiB0aGlzLkZyLm44O1xuXG4gICAgICAgIGlmIChpX244ICsgdGhpcy5Gci5uOCA+IHRoaXMuY29lZi5ieXRlTGVuZ3RoKSByZXR1cm4gdGhpcy5Gci56ZXJvO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpO1xuICAgIH1cblxuICAgIHNldENvZWYoaW5kZXgsIHZhbHVlKSB7XG4gICAgICAgIGlmIChpbmRleCA+ICh0aGlzLmxlbmd0aCgpIC0gMSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvZWYgaW5kZXggaXMgbm90IGF2YWlsYWJsZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29lZi5zZXQodmFsdWUsIGluZGV4ICogdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgc3RhdGljIGFzeW5jIHRvNFQoYnVmZmVyLCBkb21haW5TaXplLCBibGluZGluZ0ZhY3RvcnMsIEZyKSB7XG4gICAgICAgIGJsaW5kaW5nRmFjdG9ycyA9IGJsaW5kaW5nRmFjdG9ycyB8fCBbXTtcbiAgICAgICAgbGV0IGEgPSBhd2FpdCBGci5pZmZ0KGJ1ZmZlcik7XG5cbiAgICAgICAgY29uc3QgYTQgPSAoZG9tYWluU2l6ZSAqIDQpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKGRvbWFpblNpemUgKiA0ICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoZG9tYWluU2l6ZSAqIDQgKiBGci5uOCk7XG4gICAgICAgIGE0LnNldChhLCAwKTtcblxuICAgICAgICBjb25zdCBBNCA9IGF3YWl0IEZyLmZmdChhNCk7XG5cbiAgICAgICAgaWYgKGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBbYSwgQTRdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYTEgPSBkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoZG9tYWluU2l6ZSArIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGgpICogRnIubjgpIDpcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KChkb21haW5TaXplICsgYmxpbmRpbmdGYWN0b3JzLmxlbmd0aCkgKiBGci5uOCk7XG5cbiAgICAgICAgYTEuc2V0KGEsIDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJsaW5kaW5nRmFjdG9ycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYTEuc2V0KFxuICAgICAgICAgICAgICAgIEZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgYTEuc2xpY2UoKGRvbWFpblNpemUgKyBpKSAqIEZyLm44LCAoZG9tYWluU2l6ZSArIGkgKyAxKSAqIEZyLm44KSxcbiAgICAgICAgICAgICAgICAgICAgYmxpbmRpbmdGYWN0b3JzW2ldXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAoZG9tYWluU2l6ZSArIGkpICogRnIubjhcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBhMS5zZXQoXG4gICAgICAgICAgICAgICAgRnIuc3ViKFxuICAgICAgICAgICAgICAgICAgICBhMS5zbGljZShpICogRnIubjgsIChpICsgMSkgKiBGci5uOCksXG4gICAgICAgICAgICAgICAgICAgIGJsaW5kaW5nRmFjdG9yc1tpXVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgaSAqIEZyLm44XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFthMSwgQTRdO1xuICAgIH1cblxuICAgIGxlbmd0aCgpIHtcbiAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgaWYgKGxlbmd0aCAhPT0gTWF0aC5mbG9vcih0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGNvZWZmaWNpZW50cyBidWZmZXIgaGFzIGluY29ycmVjdCBzaXplXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgwID09PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmxvZ2dlcikge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLndhcm4oXCJQb2x5bm9taWFsIGhhcyBsZW5ndGggemVyb1wiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cblxuICAgIGRlZ3JlZSgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAxOyBpID4gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBpZiAoIXRoaXMuRnIuZXEodGhpcy5Gci56ZXJvLCB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgZXZhbHVhdGUocG9pbnQpIHtcbiAgICAgICAgbGV0IHJlcyA9IHRoaXMuRnIuemVybztcblxuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kZWdyZWUoKSArIDE7IGkgPiAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50Q29lZmZpY2llbnQgPSB0aGlzLmNvZWYuc2xpY2UoaV9uOCAtIHRoaXMuRnIubjgsIGlfbjgpO1xuICAgICAgICAgICAgcmVzID0gdGhpcy5Gci5hZGQoY3VycmVudENvZWZmaWNpZW50LCB0aGlzLkZyLm11bChyZXMsIHBvaW50KSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIGZhc3RFdmFsdWF0ZShwb2ludCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGxldCBuVGhyZWFkcyA9IDM7XG5cbiAgICAgICAgbGV0IG5Db2VmcyA9IHRoaXMuZGVncmVlKCkgKyAxO1xuICAgICAgICBsZXQgY29lZnNUaHJlYWQgPSBwYXJzZUludChuQ29lZnMgLyBuVGhyZWFkcyk7XG4gICAgICAgIGxldCByZXNpZHVhbENvZWZzID0gbkNvZWZzIC0gY29lZnNUaHJlYWQgKiBuVGhyZWFkcztcblxuICAgICAgICBsZXQgcmVzID0gW107XG4gICAgICAgIGxldCB4TiA9IFtdO1xuXG4gICAgICAgIHhOWzBdID0gRnIub25lO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblRocmVhZHM7IGkrKykge1xuICAgICAgICAgICAgcmVzW2ldID0gRnIuemVybztcblxuICAgICAgICAgICAgbGV0IG5Db2VmcyA9IGkgPT09IChuVGhyZWFkcyAtIDEpID8gY29lZnNUaHJlYWQgKyByZXNpZHVhbENvZWZzIDogY29lZnNUaHJlYWQ7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gbkNvZWZzOyBqID4gMDsgai0tKSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldID0gRnIuYWRkKHRoaXMuZ2V0Q29lZigoaSAqIGNvZWZzVGhyZWFkKSArIGogLSAxKSwgRnIubXVsKHJlc1tpXSwgcG9pbnQpKTtcblxuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB4TlswXSA9IEZyLm11bCh4TlswXSwgcG9pbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBuVGhyZWFkczsgaSsrKSB7XG4gICAgICAgICAgICByZXNbMF0gPSBGci5hZGQocmVzWzBdLCBGci5tdWwoeE5baSAtIDFdLCByZXNbaV0pKTtcbiAgICAgICAgICAgIHhOW2ldID0gRnIubXVsKHhOW2kgLSAxXSwgeE5bMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc1swXTtcbiAgICB9XG5cbiAgICBhZGQocG9seW5vbWlhbCwgYmxpbmRpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgb3RoZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAocG9seW5vbWlhbC5sZW5ndGgoKSA+IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIG90aGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoaXNMZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBwb2x5TGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heCh0aGlzTGVuZ3RoLCBwb2x5TGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSBpIDwgdGhpc0xlbmd0aCA/IHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkgOiB0aGlzLkZyLnplcm87XG4gICAgICAgICAgICBsZXQgYiA9IGkgPCBwb2x5TGVuZ3RoID8gcG9seW5vbWlhbC5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcblxuICAgICAgICAgICAgaWYgKGJsaW5kaW5nVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLkZyLm11bChiLCBibGluZGluZ1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgICAgIHBvbHlub21pYWwuY29lZi5zZXQodGhpcy5Gci5hZGQoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuYWRkKGEsIGIpLCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2x5bm9taWFsLmNvZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdWIocG9seW5vbWlhbCwgYmxpbmRpbmdWYWx1ZSkge1xuICAgICAgICBsZXQgb3RoZXIgPSBmYWxzZTtcblxuICAgICAgICBpZiAocG9seW5vbWlhbC5sZW5ndGgoKSA+IHRoaXMubGVuZ3RoKCkpIHtcbiAgICAgICAgICAgIG90aGVyID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRoaXNMZW5ndGggPSB0aGlzLmxlbmd0aCgpO1xuICAgICAgICBjb25zdCBwb2x5TGVuZ3RoID0gcG9seW5vbWlhbC5sZW5ndGgoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBNYXRoLm1heCh0aGlzTGVuZ3RoLCBwb2x5TGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSBpIDwgdGhpc0xlbmd0aCA/IHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkgOiB0aGlzLkZyLnplcm87XG4gICAgICAgICAgICBsZXQgYiA9IGkgPCBwb2x5TGVuZ3RoID8gcG9seW5vbWlhbC5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSA6IHRoaXMuRnIuemVybztcblxuICAgICAgICAgICAgaWYgKGJsaW5kaW5nVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLkZyLm11bChiLCBibGluZGluZ1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvdGhlcikge1xuICAgICAgICAgICAgICAgIHBvbHlub21pYWwuY29lZi5zZXQodGhpcy5Gci5zdWIoYSwgYiksIGlfbjgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuc3ViKGEsIGIpLCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAob3RoZXIpIHtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmNvZWY7XG4gICAgICAgICAgICB0aGlzLmNvZWYgPSBwb2x5bm9taWFsLmNvZWY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBtdWxTY2FsYXIodmFsdWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCgpOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfbjggPSBpICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgdGhpcy5jb2VmLnNldCh0aGlzLkZyLm11bCh0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpLCB2YWx1ZSksIGlfbjgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYWRkU2NhbGFyKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IDAgPT09IHRoaXMubGVuZ3RoKCkgPyB0aGlzLkZyLnplcm8gOiB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCk7XG4gICAgICAgIHRoaXMuY29lZi5zZXQodGhpcy5Gci5hZGQoY3VycmVudFZhbHVlLCB2YWx1ZSksIDApO1xuICAgIH1cblxuICAgIHN1YlNjYWxhcih2YWx1ZSkge1xuICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSAwID09PSB0aGlzLmxlbmd0aCgpID8gdGhpcy5Gci56ZXJvIDogdGhpcy5jb2VmLnNsaWNlKDAsIHRoaXMuRnIubjgpO1xuICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIuc3ViKGN1cnJlbnRWYWx1ZSwgdmFsdWUpLCAwKTtcbiAgICB9XG5cbiAgICAvLyBNdWx0aXBseSBjdXJyZW50IHBvbHlub21pYWwgYnkgdGhlIHBvbHlub21pYWwgKFggLSB2YWx1ZSlcbiAgICBieVhTdWJWYWx1ZSh2YWx1ZSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IHJlc2l6ZSA9ICFGci5lcShGci56ZXJvLCB0aGlzLmdldENvZWYodGhpcy5sZW5ndGgoKSAtIDEpKTtcblxuICAgICAgICBjb25zdCBsZW5ndGggPSByZXNpemUgPyB0aGlzLmxlbmd0aCgpICsgMSA6IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2wgPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBTZXQgY3VycmVudCBjb2VmZmljaWVudHMgdG8gdGhlIG5ldyBidWZmZXIgc2hpZnRlZCBvbmUgcG9zaXRpb25cbiAgICAgICAgcG9sLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZSgwLCAobGVuZ3RoIC0gMSkgKiBGci5uOCksIDMyKTtcblxuICAgICAgICAvLyBTdGVwIDE6IG11bHRpcGx5IGVhY2ggY29lZmZpY2llbnQgYnkgKC12YWx1ZSlcbiAgICAgICAgdGhpcy5tdWxTY2FsYXIoRnIubmVnKHZhbHVlKSk7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBBZGQgY3VycmVudCBwb2x5bm9taWFsIHRvIGRlc3RpbmF0aW9uIHBvbHlub21pYWxcbiAgICAgICAgcG9sLmFkZCh0aGlzKTtcblxuICAgICAgICAvLyBTd2FwIGJ1ZmZlcnNcbiAgICAgICAgdGhpcy5jb2VmID0gcG9sLmNvZWY7XG4gICAgfVxuXG4gICAgLy8gTXVsdGlwbHkgY3VycmVudCBwb2x5bm9taWFsIGJ5IHRoZSBwb2x5bm9taWFsIChYXm4gKyB2YWx1ZSlcbiAgICBieVhOU3ViVmFsdWUobiwgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuICAgICAgICBjb25zdCByZXNpemUgPSAhKHRoaXMubGVuZ3RoKCkgLSBuIC0gMSA+PSB0aGlzLmRlZ3JlZSgpKTtcblxuICAgICAgICBjb25zdCBsZW5ndGggPSByZXNpemUgPyB0aGlzLmxlbmd0aCgpICsgbiA6IHRoaXMubGVuZ3RoKCk7XG4gICAgICAgIGNvbnN0IGJ1ZmYgPSBsZW5ndGggPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihsZW5ndGggKiBGci5uOCkgOiBuZXcgVWludDhBcnJheShsZW5ndGggKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2wgPSBuZXcgUG9seW5vbWlhbChidWZmLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgLy8gU3RlcCAwOiBTZXQgY3VycmVudCBjb2VmZmljaWVudHMgdG8gdGhlIG5ldyBidWZmZXIgc2hpZnRlZCBvbmUgcG9zaXRpb25cbiAgICAgICAgcG9sLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZSgwLCAodGhpcy5kZWdyZWUoKSArIDEpICogMzIsICksIG4gKiAzMik7XG5cbiAgICAgICAgLy8gU3RlcCAxOiBtdWx0aXBseSBlYWNoIGNvZWZmaWNpZW50IGJ5ICgtIHZhbHVlKVxuICAgICAgICB0aGlzLm11bFNjYWxhcih2YWx1ZSk7XG5cbiAgICAgICAgLy8gU3RlcCAyOiBBZGQgY3VycmVudCBwb2x5bm9taWFsIHRvIGRlc3RpbmF0aW9uIHBvbHlub21pYWxcbiAgICAgICAgcG9sLmFkZCh0aGlzKTtcblxuICAgICAgICAvLyBTd2FwIGJ1ZmZlcnNcbiAgICAgICAgdGhpcy5jb2VmID0gcG9sLmNvZWY7XG4gICAgfVxuXG4gICAgLy8gRXVjbGlkZWFuIGRpdmlzaW9uXG4gICAgZGl2QnkocG9seW5vbWlhbCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGNvbnN0IGRlZ3JlZUEgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBjb25zdCBkZWdyZWVCID0gcG9seW5vbWlhbC5kZWdyZWUoKTtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGRlZ3JlZUEgLSBkZWdyZWVCOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGksIEZyLmRpdihwb2xSLmdldENvZWYoaSArIGRlZ3JlZUIpLCBwb2x5bm9taWFsLmdldENvZWYoZGVncmVlQikpKTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDw9IGRlZ3JlZUI7IGorKykge1xuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpICsgaiwgRnIuc3ViKHBvbFIuZ2V0Q29lZihpICsgaiksIEZyLm11bCh0aGlzLmdldENvZWYoaSksIHBvbHlub21pYWwuZ2V0Q29lZihqKSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb2xSO1xuICAgIH1cblxuICAgIC8vIERpdmlzaW9uIGJ5IGEgUG9seW5vbWlhbCBvZiB0aGUgZm9ybSAoeF5tIC0gYmV0YSlcbiAgICBkaXZCeU1vbmljKG0sIGJldGEpIHtcbiAgICAgICAgY29uc3QgRnIgPSB0aGlzLkZyO1xuXG4gICAgICAgIGxldCBkID0gdGhpcy5kZWdyZWUoKTtcblxuICAgICAgICBsZXQgYnVmZmVyID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KTtcbiAgICAgICAgbGV0IHF1b3RpZW50ID0gbmV3IFBvbHlub21pYWwoYnVmZmVyLCB0aGlzLmN1cnZlLCB0aGlzLmxvZ2dlcik7XG5cbiAgICAgICAgbGV0IGJBcnIgPSBbXTtcblxuICAgICAgICAvLyBBZGQgdGhlIG0gbGVhZGluZyBjb2VmZmljaWVudHMgb2YgdGhpcyB0byBxdW90aWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcXVvdGllbnQuc2V0Q29lZigoZCAtIGkpIC0gbSwgdGhpcy5nZXRDb2VmKGQgLSBpKSk7XG4gICAgICAgICAgICBiQXJyW2ldID0gdGhpcy5nZXRDb2VmKGQgLSBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuVGhyZWFkcyA9IG07XG5cbiAgICAgICAgbGV0IGogPSAwO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBkIC0gMiAqIG0gLSBrOyBpID49IDA7IGkgPSBpIC0gblRocmVhZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA8IDApIGJyZWFrO1xuICAgICAgICAgICAgICAgIGxldCBpZHggPSBrO1xuICAgICAgICAgICAgICAgIGJBcnJbaWR4XSA9IEZyLmFkZCh0aGlzLmdldENvZWYoaSArIG0pLCBGci5tdWwoYkFycltpZHhdLCBiZXRhKSk7XG5cbiAgICAgICAgICAgICAgICBxdW90aWVudC5zZXRDb2VmKGksIGJBcnJbaWR4XSk7XG4gICAgICAgICAgICAgICAgaiA9IChqICsgMSkgJSBtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jb2VmID0gcXVvdGllbnQuY29lZjtcbiAgICB9XG5cbiAgICBkaXZCeVZhbmlzaGluZyhuLCBiZXRhKSB7XG4gICAgICAgIGlmICh0aGlzLmRlZ3JlZSgpIDwgbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGl2QnlWYW5pc2hpbmcgcG9seW5vbWlhbCBkaXZpc29yIG11c3QgYmUgb2YgZGVncmVlIGxvd2VyIHRoYW4gdGhlIGRpdmlkZW5kIHBvbHlub21pYWxcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgbGV0IHBvbFIgPSBuZXcgUG9seW5vbWlhbCh0aGlzLmNvZWYsIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICB0aGlzLmNvZWYgPSB0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKHRoaXMubGVuZ3RoKCkgKiBGci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogRnIubjgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmxlbmd0aCgpIC0gMTsgaSA+PSBuOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBsZWFkaW5nQ29lZiA9IHBvbFIuZ2V0Q29lZihpKTtcbiAgICAgICAgICAgIGlmIChGci5lcShGci56ZXJvLCBsZWFkaW5nQ29lZikpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBwb2xSLnNldENvZWYoaSwgRnIuemVybyk7XG4gICAgICAgICAgICBwb2xSLnNldENvZWYoaSAtIG4sIEZyLmFkZChwb2xSLmdldENvZWYoaSAtIG4pLCBGci5tdWwoYmV0YSwgbGVhZGluZ0NvZWYpKSk7XG4gICAgICAgICAgICB0aGlzLnNldENvZWYoaSAtIG4sIEZyLmFkZCh0aGlzLmdldENvZWYoaSAtIG4pLCBsZWFkaW5nQ29lZikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbFI7XG4gICAgfVxuXG4gICAgZGl2QnlWYW5pc2hpbmcyKG0sIGJldGEpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBtKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJkaXZCeVZhbmlzaGluZyBwb2x5bm9taWFsIGRpdmlzb3IgbXVzdCBiZSBvZiBkZWdyZWUgbG93ZXIgdGhhbiB0aGUgZGl2aWRlbmQgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IEZyID0gdGhpcy5GcjtcblxuICAgICAgICBsZXQgcG9sUiA9IG5ldyBQb2x5bm9taWFsKHRoaXMuY29lZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IHRoaXMubGVuZ3RoKCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIodGhpcy5sZW5ndGgoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KHRoaXMubGVuZ3RoKCkgKiBGci5uOCk7XG5cbiAgICAgICAgbGV0IG5UaHJlYWRzID0gMztcbiAgICAgICAgbGV0IG5Ub3RhbCA9IHRoaXMubGVuZ3RoKCkgLSBtO1xuICAgICAgICBsZXQgbkVsZW1lbnRzQ2h1bmsgPSBNYXRoLmZsb29yKG5Ub3RhbCAvIG5UaHJlYWRzKTtcbiAgICAgICAgbGV0IG5FbGVtZW50c0xhc3QgPSBuVG90YWwgLSAoblRocmVhZHMgLSAxKSAqIG5FbGVtZW50c0NodW5rO1xuXG4gICAgICAgIGNvbnNvbGUubG9nKG5Ub3RhbCk7XG4gICAgICAgIGNvbnNvbGUubG9nKG5FbGVtZW50c0NodW5rICsgXCIgIFwiICsgbkVsZW1lbnRzTGFzdCk7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgblRocmVhZHM7IGsrKykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCI+IFRocmVhZCBcIiArIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IChrID09PSAwID8gbkVsZW1lbnRzTGFzdCA6IG5FbGVtZW50c0NodW5rKTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGxldCBpZHhEc3QgPSBpIC0gMTtcbiAgICAgICAgICAgICAgICBpZiAoayAhPT0gMCkgaWR4RHN0ICs9IChrIC0gMSkgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgbGV0IGlkeFNyYyA9IGlkeERzdCArIG07XG5cbiAgICAgICAgICAgICAgICBsZXQgbGVhZGluZ0NvZWYgPSBwb2xSLmdldENvZWYoaWR4U3JjKTtcbiAgICAgICAgICAgICAgICBpZiAoRnIuZXEoRnIuemVybywgbGVhZGluZ0NvZWYpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpZHhTcmMsIEZyLnplcm8pO1xuICAgICAgICAgICAgICAgIHBvbFIuc2V0Q29lZihpZHhEc3QsIEZyLmFkZChwb2xSLmdldENvZWYoaWR4RHN0KSwgRnIubXVsKGJldGEsIGxlYWRpbmdDb2VmKSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihpZHhEc3QsIEZyLmFkZCh0aGlzLmdldENvZWYoaWR4RHN0KSwgbGVhZGluZ0NvZWYpKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpZHhEc3QgKyBcIiA8LS0gXCIgKyBpZHhTcmMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wcmludCgpO1xuICAgICAgICByZXR1cm4gcG9sUjtcbiAgICB9XG5cbiAgICBmYXN0RGl2QnlWYW5pc2hpbmcoZGF0YSkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGxldCBtID0gZGF0YVtpXVswXTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gZGF0YVtpXVsxXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZGVncmVlKCkgPCBtKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGl2QnlWYW5pc2hpbmcgcG9seW5vbWlhbCBkaXZpc29yIG11c3QgYmUgb2YgZGVncmVlIGxvd2VyIHRoYW4gdGhlIGRpdmlkZW5kIHBvbHlub21pYWxcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBuVGhyZWFkcyA9IDU7XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzID0gdGhpcy5sZW5ndGgoKSAtIG07XG4gICAgICAgICAgICBsZXQgbkVsZW1lbnRzQnVja2V0ID0gTWF0aC5mbG9vcihuRWxlbWVudHMgLyBuVGhyZWFkcyAvIG0pO1xuICAgICAgICAgICAgbGV0IG5FbGVtZW50c0NodW5rID0gbkVsZW1lbnRzQnVja2V0ICogbTtcbiAgICAgICAgICAgIGxldCBuRWxlbWVudHNMYXN0ID0gbkVsZW1lbnRzIC0gblRocmVhZHMgKiBuRWxlbWVudHNDaHVuaztcblxuICAgICAgICAgICAgLy9JbiBDKysgaW1wbGVtZW50YXRpb24gdGhpcyBidWZmZXIgd2lsbCBiZSBhbGxvY2F0ZWQgb25seSBvbmNlIG91dHNpZGUgdGhlIGxvb3BcbiAgICAgICAgICAgIGxldCBwb2xUbXAgPSBuZXcgUG9seW5vbWlhbCh0aGlzLmxlbmd0aCgpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5sZW5ndGgoKSAqIEZyLm44KSwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgICAgICBsZXQgcHRyID0gdGhpcy5jb2VmO1xuICAgICAgICAgICAgdGhpcy5jb2VmID0gcG9sVG1wLmNvZWY7XG4gICAgICAgICAgICBwb2xUbXAuY29lZiA9IHB0cjtcblxuICAgICAgICAgICAgLy8gU1RFUCAxOiBTZXRlamFyIGVscyBtIHZhbG9ycyBkZWwgc2Vnw7xlbnQgYnVja2V0IGFsIGNodW5rIGFjdHVhbCwgUEFSQUxFTMK3TElUWkFSXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgaWR4MCA9IChrICsgMSkgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKGlkeDAgKyBpIC0gbSwgcG9sVG1wLmdldENvZWYoaWR4MCArIGkpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5FbGVtZW50c0NodW5rIC0gbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpZHgwIC0gaSAtIDE7XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YWwgPSBGci5hZGQocG9sVG1wLmdldENvZWYob2Zmc2V0KSwgRnIubXVsKGJldGEsIHRoaXMuZ2V0Q29lZihvZmZzZXQpKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29lZihvZmZzZXQgLSBtLCB2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TVEVQIDI6IFNldGVqYXIgZWxzIHZhbG9ycyBkZWwgZWxlbWVudHMgbGFzdCBOTyBQQVJBTMK3TEVMSVRaQVJcbiAgICAgICAgICAgIGxldCBpZHgwID0gbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgIGxldCBwZW5kaW5nID0gbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbSAmJiBwZW5kaW5nOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYoaWR4MCAtIGkgLSAxLCBwb2xUbXAuZ2V0Q29lZihpZHgwICsgbSAtIGkgLSAxKSk7XG4gICAgICAgICAgICAgICAgcGVuZGluZy0tO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBlbmRpbmc7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpZHgwIC0gaSAtIDE7XG4gICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZChwb2xUbXAuZ2V0Q29lZihvZmZzZXQpLCBGci5tdWwoYmV0YSwgdGhpcy5nZXRDb2VmKG9mZnNldCkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldENvZWYob2Zmc2V0IC0gbSwgdmFsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TdGVwIDM6IGNhbGN1bGFyIGFjdW11bGF0cyBOTyAgUEFSQUxFTMK3TElUWkFSXG5cbiAgICAgICAgICAgIGxldCBhY2MgPSBbXTtcbiAgICAgICAgICAgIGxldCBiZXRhUG93ID0gRnIub25lO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuRWxlbWVudHNCdWNrZXQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGJldGFQb3cgPSBGci5tdWwoYmV0YVBvdywgYmV0YSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY3VycmVudEJldGEgPSBGci5vbmU7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGsgPSBuVGhyZWFkczsgayA+IDA7IGstLSkge1xuICAgICAgICAgICAgICAgIGxldCBpZFRocmVhZCA9IGsgLSAxO1xuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gaWRUaHJlYWQgKiBuRWxlbWVudHNDaHVuayArIG5FbGVtZW50c0xhc3Q7XG4gICAgICAgICAgICAgICAgYWNjW2lkVGhyZWFkXSA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYWNjW2lkVGhyZWFkXVtpXSA9IHRoaXMuZ2V0Q29lZihpZHgwICsgaSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGsgIT09IG5UaHJlYWRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY2NbaWRUaHJlYWRdW2ldID0gRnIuYWRkKGFjY1tpZFRocmVhZF1baV0sIEZyLm11bChiZXRhUG93LCBhY2NbaWRUaHJlYWQgKyAxXVtpXSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRCZXRhID0gRnIubXVsKGN1cnJlbnRCZXRhLCBiZXRhUG93KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9TVEVQIDQgcmVjYWxjdWxhciAgUEFSQUxFTMK3TElUWkFSXG4gICAgICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG5UaHJlYWRzOyBrKyspIHtcblxuICAgICAgICAgICAgICAgIGxldCBpZHgwID0gayAqIG5FbGVtZW50c0NodW5rICsgbkVsZW1lbnRzTGFzdDtcbiAgICAgICAgICAgICAgICBsZXQgY3VycmVudEJldGEgPSBiZXRhOyAvL1F1YW4gaG9wYXNzZW0gYSBDKysgaSBobyBwYXJhbGVsaXR6ZW0gYXF1ZXN0YSB2YXJpYWJsZSBoYSBkZSBzZXIgcHJpdmFkYVxuICAgICAgICAgICAgICAgIGxldCBjdXJyZW50TSA9IG0gLSAxO1xuXG4gICAgICAgICAgICAgICAgbGV0IGxpbWl0ID0gayA9PT0gMCA/IG5FbGVtZW50c0xhc3QgOiBuRWxlbWVudHNDaHVuaztcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbWl0OyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9mZnNldCA9IGlkeDAgLSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IEZyLmFkZCh0aGlzLmdldENvZWYob2Zmc2V0KSwgRnIubXVsKGN1cnJlbnRCZXRhLCBhY2Nba11bY3VycmVudE1dKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2VmKG9mZnNldCwgdmFsKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBUbyBhdm9pZCBtb2R1bGFyIG9wZXJhdGlvbnMgaW4gZWFjaCBsb29wLi4uXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50TSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE0gPSBtIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCZXRhID0gRnIubXVsKGN1cnJlbnRCZXRhLCBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNLS07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vIERpdmlkZSBwb2x5bm9taWFsIGJ5IFggLSB2YWx1ZVxuICAgIGRpdkJ5WFN1YlZhbHVlKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGNvZWZzID0gdGhpcy5sZW5ndGgoKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCkgOiBuZXcgVWludDhBcnJheSh0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCk7XG5cbiAgICAgICAgY29lZnMuc2V0KHRoaXMuRnIuemVybywgKHRoaXMubGVuZ3RoKCkgLSAxKSAqIHRoaXMuRnIubjgpO1xuICAgICAgICBjb2Vmcy5zZXQodGhpcy5jb2VmLnNsaWNlKCh0aGlzLmxlbmd0aCgpIC0gMSkgKiB0aGlzLkZyLm44LCB0aGlzLmxlbmd0aCgpICogdGhpcy5Gci5uOCksICh0aGlzLmxlbmd0aCgpIC0gMikgKiB0aGlzLkZyLm44KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMubGVuZ3RoKCkgLSAzOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgbGV0IGlfbjggPSBpICogdGhpcy5Gci5uODtcbiAgICAgICAgICAgIGNvZWZzLnNldChcbiAgICAgICAgICAgICAgICB0aGlzLkZyLmFkZChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNsaWNlKGlfbjggKyB0aGlzLkZyLm44LCBpX244ICsgMiAqIHRoaXMuRnIubjgpLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLkZyLm11bCh2YWx1ZSwgY29lZnMuc2xpY2UoaV9uOCArIHRoaXMuRnIubjgsIGlfbjggKyAyICogdGhpcy5Gci5uOCkpXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICBpICogdGhpcy5Gci5uOFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuRnIuZXEoXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCksXG4gICAgICAgICAgICB0aGlzLkZyLm11bCh0aGlzLkZyLm5lZyh2YWx1ZSksIGNvZWZzLnNsaWNlKDAsIHRoaXMuRnIubjgpKVxuICAgICAgICApKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb2x5bm9taWFsIGRvZXMgbm90IGRpdmlkZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZzO1xuICAgIH1cblxuICAgIGRpdlpoKGRvbWFpblNpemUsIGV4dGVuc2lvbnMgPSA0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KHRoaXMuRnIubmVnKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpLCBpX244KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwcGVyQm91bmQgPSB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGZvciAobGV0IGkgPSBkb21haW5TaXplOyBpIDwgdXBwZXJCb3VuZDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgICAgIGNvbnN0IGEgPSB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoKGkgLSBkb21haW5TaXplKSAqIHRoaXMuRnIubjgsIChpIC0gZG9tYWluU2l6ZSkgKiB0aGlzLkZyLm44ICsgdGhpcy5Gci5uOCksXG4gICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY29lZi5zZXQoYSwgaV9uOCk7XG4gICAgICAgICAgICBpZiAoaSA+IChkb21haW5TaXplICogKGV4dGVuc2lvbnMtMSkgLSBleHRlbnNpb25zKSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Gci5pc1plcm8oYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBpcyBub3QgZGl2aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGRpdkJ5WmVyb2ZpZXIobiwgYmV0YSkge1xuICAgICAgICBsZXQgRnIgPSB0aGlzLkZyO1xuICAgICAgICBjb25zdCBpbnZCZXRhID0gRnIuaW52KGJldGEpO1xuICAgICAgICBjb25zdCBpbnZCZXRhTmVnID0gRnIubmVnKGludkJldGEpO1xuXG4gICAgICAgIGxldCBpc09uZSA9IEZyLmVxKEZyLm9uZSwgaW52QmV0YU5lZyk7XG4gICAgICAgIGxldCBpc05lZ09uZSA9IEZyLmVxKEZyLm5lZ29uZSwgaW52QmV0YU5lZyk7XG5cbiAgICAgICAgaWYgKCFpc09uZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiBpbnZCZXRhTmVnID09PSAtMSB3ZSdsbCBzYXZlIGEgbXVsdGlwbGljYXRpb24gY2hhbmdpbmcgaXQgYnkgYSBuZWcgZnVuY3Rpb24gY2FsbFxuICAgICAgICAgICAgICAgIGlmIChpc05lZ09uZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gRnIubmVnKHRoaXMuY29lZi5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5tdWwoaW52QmV0YU5lZywgdGhpcy5jb2VmLnNsaWNlKGlfbjgsIGlfbjggKyB0aGlzLkZyLm44KSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5jb2VmLnNldChlbGVtZW50LCBpX244KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlzT25lID0gRnIuZXEoRnIub25lLCBpbnZCZXRhKTtcbiAgICAgICAgaXNOZWdPbmUgPSBGci5lcShGci5uZWdvbmUsIGludkJldGEpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBuOyBpIDwgdGhpcy5sZW5ndGgoKTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHRoaXMuRnIubjg7XG4gICAgICAgICAgICBjb25zdCBpX3ByZXZfbjggPSAoaSAtIG4pICogdGhpcy5Gci5uODtcblxuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLkZyLnN1YihcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9wcmV2X244LCBpX3ByZXZfbjggKyB0aGlzLkZyLm44KSxcbiAgICAgICAgICAgICAgICB0aGlzLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHRoaXMuRnIubjgpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBJZiBpbnZCZXRhID09PSAxIHdlJ2xsIG5vdCBkbyBhbnl0aGluZ1xuICAgICAgICAgICAgaWYoIWlzT25lKSB7XG4gICAgICAgICAgICAgICAgLy8gSWYgaW52QmV0YSA9PT0gLTEgd2UnbGwgc2F2ZSBhIG11bHRpcGxpY2F0aW9uIGNoYW5naW5nIGl0IGJ5IGEgbmVnIGZ1bmN0aW9uIGNhbGxcbiAgICAgICAgICAgICAgICBpZihpc05lZ09uZSkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0gRnIubmVnKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBGci5tdWwoaW52QmV0YSwgZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmNvZWYuc2V0KGVsZW1lbnQsIGlfbjgpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBpZiBwb2x5bm9taWFsIGlzIGRpdmlzaWJsZSBieSBjaGVja2luZyBpZiBuIGhpZ2ggY29lZmZpY2llbnRzIGFyZSB6ZXJvXG4gICAgICAgICAgICBpZiAoaSA+IHRoaXMubGVuZ3RoKCkgLSBuIC0gMSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5Gci5pc1plcm8oZWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUG9seW5vbWlhbCBpcyBub3QgZGl2aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuLy8gZnVuY3Rpb24gZGl2aWRlQnlWYW5pc2hpbmcoZiwgbiwgcCkge1xuLy8gICAgIC8vIHBvbHlub21pYWwgZGl2aXNpb24gZihYKSAvIChYXm4gLSAxKSB3aXRoIHJlbWFpbmRlclxuLy8gICAgIC8vIHZlcnkgY2hlYXAsIDAgbXVsdGlwbGljYXRpb25zXG4vLyAgICAgLy8gc3RyYXRlZ3k6XG4vLyAgICAgLy8gc3RhcnQgd2l0aCBxKFgpID0gMCwgcihYKSA9IGYoWClcbi8vICAgICAvLyB0aGVuIHN0YXJ0IGNoYW5naW5nIHEsIHIgd2hpbGUgcHJlc2VydmluZyB0aGUgaWRlbnRpdHk6XG4vLyAgICAgLy8gZihYKSA9IHEoWCkgKiAoWF5uIC0gMSkgKyByKFgpXG4vLyAgICAgLy8gaW4gZXZlcnkgc3RlcCwgbW92ZSBoaWdoZXN0LWRlZ3JlZSB0ZXJtIG9mIHIgaW50byB0aGUgcHJvZHVjdFxuLy8gICAgIC8vID0+IHIgZXZlbnR1YWxseSBoYXMgZGVncmVlIDwgbiBhbmQgd2UncmUgZG9uZVxuLy8gICAgIGxldCBxID0gQXJyYXkoZi5sZW5ndGgpLmZpbGwoMG4pO1xuLy8gICAgIGxldCByID0gWy4uLmZdO1xuLy8gICAgIGZvciAobGV0IGkgPSBmLmxlbmd0aCAtIDE7IGkgPj0gbjsgaS0tKSB7XG4vLyAgICAgICAgIGxldCBsZWFkaW5nQ29lZmYgPSByW2ldO1xuLy8gICAgICAgICBpZiAobGVhZGluZ0NvZWZmID09PSAwbikgY29udGludWU7XG4vLyAgICAgICAgIHJbaV0gPSAwbjtcbi8vICAgICAgICAgcltpIC0gbl0gPSBtb2QocltpIC0gbl0gKyBsZWFkaW5nQ29lZmYsIHApO1xuLy8gICAgICAgICBxW2kgLSBuXSA9IG1vZChxW2kgLSBuXSArIGxlYWRpbmdDb2VmZiwgcCk7XG4vLyAgICAgfVxuLy8gICAgIHJldHVybiBbcSwgcl07XG4vLyB9XG5cbiAgICBieVgoKSB7XG4gICAgICAgIGNvbnN0IGNvZWZzID0gKHRoaXMubGVuZ3RoKCkgKyAxKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcih0aGlzLmNvZWYuYnl0ZUxlbmd0aCArIHRoaXMuRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkodGhpcy5jb2VmLmJ5dGVMZW5ndGggKyB0aGlzLkZyLm44KTtcbiAgICAgICAgY29lZnMuc2V0KHRoaXMuRnIuemVybywgMCk7XG4gICAgICAgIGNvZWZzLnNldCh0aGlzLmNvZWYsIHRoaXMuRnIubjgpO1xuXG4gICAgICAgIHRoaXMuY29lZiA9IGNvZWZzO1xuICAgIH1cblxuLy8gQ29tcHV0ZSBhIG5ldyBwb2x5bm9taWFsIGYoeF5uKSBmcm9tIGYoeClcbi8vIGYoeCkgICA9IGFfMCArIGFfMcK3eCArIGFfMsK3eF4yICsgLi4uICsgYV9qwrd4Xmpcbi8vIGYoeF5uKSA9IGFfMCArIGFfMcK3eF5uICsgYV8ywrd4XjJuICsgLi4uICsgYV9qwrd4XmpuXG4gICAgc3RhdGljXG4gICAgYXN5bmMgZXhwWChwb2x5bm9taWFsLCBuLCB0cnVuY2F0ZSA9IGZhbHNlKSB7XG4gICAgICAgIGNvbnN0IEZyID0gcG9seW5vbWlhbC5GcjtcblxuICAgICAgICBpZiAobiA8IDEpIHtcbiAgICAgICAgICAgIC8vIG4gPT0gMCBub3QgYWxsb3dlZCBiZWNhdXNlIGl0IGhhcyBubyBzZW5zZSwgYnV0IGlmIGl0J3MgbmVjZXNzYXJ5IHdlIGhhdmUgdG8gcmV0dXJuXG4gICAgICAgICAgICAvLyBhIHplcm8gZGVncmVlIHBvbHlub21pYWwgd2l0aCBhIGNvbnN0YW50IGNvZWZmaWNpZW50IGVxdWFscyB0byB0aGUgc3VtIG9mIGFsbCB0aGUgb3JpZ2luYWwgY29lZmZpY2llbnRzXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb21wdXRlIGEgbmV3IHBvbHlub21pYWwgdG8gYSB6ZXJvIG9yIG5lZ2F0aXZlIG51bWJlciBpcyBub3QgYWxsb3dlZFwiKTtcbiAgICAgICAgfSBlbHNlIGlmICgxID09PSBuKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMocG9seW5vbWlhbC5jb2VmLCBjdXJ2ZSwgcG9seW5vbWlhbC5sb2dnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGVuZ3RoIGlzIHRoZSBsZW5ndGggb2Ygbm9uLWNvbnN0YW50IGNvZWZmaWNpZW50c1xuICAgICAgICAvLyBpZiB0cnVuY2F0ZSA9PT0gdHJ1ZSwgdGhlIGhpZ2hlc3QgemVybyBjb2VmZmljaWVudHMgKGlmIGV4aXN0KSB3aWxsIGJlIHJlbW92ZWRcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gdHJ1bmNhdGUgPyBwb2x5bm9taWFsLmRlZ3JlZSgpIDogKHBvbHlub21pYWwubGVuZ3RoKCkgLSAxKTtcbiAgICAgICAgY29uc3QgYnVmZmVyRHN0ID0gKGxlbmd0aCAqIG4gKyAxKSA+IDIgPDwgMTQgP1xuICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigobGVuZ3RoICogbiArIDEpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKGxlbmd0aCAqIG4gKyAxKSAqIEZyLm44KTtcblxuICAgICAgICAvLyBDb3B5IGNvbnN0YW50IGNvZWZmaWNpZW50IGFzIGlzIGJlY2F1c2UgaXMgbm90IHJlbGF0ZWQgdG8geFxuICAgICAgICBidWZmZXJEc3Quc2V0KHBvbHlub21pYWwuZ2V0Q29lZigwKSwgMCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIEZyLm44O1xuXG4gICAgICAgICAgICBjb25zdCBjb2VmID0gcG9seW5vbWlhbC5nZXRDb2VmKGkpO1xuICAgICAgICAgICAgYnVmZmVyRHN0LnNldChjb2VmLCBpX3NGciAqIG4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBQb2x5bm9taWFsKGJ1ZmZlckRzdCwgcG9seW5vbWlhbC5jdXJ2ZSwgcG9seW5vbWlhbC5sb2dnZXIpO1xuICAgIH1cblxuICAgIHNwbGl0KG51bVBvbHMsIGRlZ1BvbHMsIGJsaW5kaW5nRmFjdG9ycykge1xuICAgICAgICBpZiAobnVtUG9scyA8IDEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbHMgY2FuJ3QgYmUgc3BsaXQgaW4gJHtudW1Qb2xzfSBwYXJ0c2ApO1xuICAgICAgICB9IGVsc2UgaWYgKDEgPT09IG51bVBvbHMpIHtcbiAgICAgICAgICAgIHJldHVybiBbdGhpc107XG4gICAgICAgIH1cblxuICAgICAgICAvL2JsaW5kaW5nIGZhY3RvcnMgY2FuIGJlIHZvaWQgb3IgbXVzdCBoYXZlIGEgbGVuZ3RoIG9mIG51bVBvbHMgLSAxXG4gICAgICAgIGlmICgwICE9PSBibGluZGluZ0ZhY3RvcnMubGVuZ3RoICYmIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPCBudW1Qb2xzIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCbGluZGluZyBmYWN0b3JzIGxlbmd0aCBtdXN0IGJlICR7bnVtUG9scyAtIDF9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjaHVua0J5dGVMZW5ndGggPSAoZGVnUG9scyArIDEpICogdGhpcy5Gci5uODtcbiAgICAgICAgbGV0IHJlcyA9IFtdO1xuXG4gICAgICAgIC8vIENoZWNrIHBvbHlub21pYWwgY2FuIGJlIHNwbGl0IGluIG51bUNodW5rcyBwYXJ0cyBvZiBjaHVua1NpemUgYnl0ZXMuLi5cbiAgICAgICAgY29uc3QgbnVtUmVhbFBvbHMgPSBNYXRoLmNlaWwoKHRoaXMuZGVncmVlKCkgKyAxKSAqIHRoaXMuRnIubjggLyBjaHVua0J5dGVMZW5ndGgpO1xuICAgICAgICBpZiAobnVtUmVhbFBvbHMgPCBudW1Qb2xzKSB7XG4gICAgICAgICAgICAvL3Rocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbCBpcyBzaG9ydCB0byBiZSBzcGxpdCBpbiAke251bVBvbHN9IHBhcnRzIG9mICR7ZGVnUG9sc30gY29lZmZpY2llbnRzIGVhY2guYCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gbnVtUmVhbFBvbHM7IGkgPCBudW1Qb2xzOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZXNbaV0gPSBuZXcgUG9seW5vbWlhbChuZXcgVWludDhBcnJheSh0aGlzLkZyLm44KSwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbnVtUG9scyA9IE1hdGgubWluKG51bVBvbHMsIG51bVJlYWxQb2xzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1Qb2xzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTGFzdCA9IChudW1Qb2xzIC0gMSkgPT09IGk7XG4gICAgICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gaXNMYXN0ID8gdGhpcy5jb2VmLmJ5dGVMZW5ndGggLSAoKG51bVBvbHMgLSAxKSAqIGNodW5rQnl0ZUxlbmd0aCkgOiBjaHVua0J5dGVMZW5ndGggKyB0aGlzLkZyLm44O1xuXG4gICAgICAgICAgICBsZXQgYnVmZiA9IChieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkgPiAyIDw8IDE0ID8gbmV3IEJpZ0J1ZmZlcihieXRlTGVuZ3RoKSA6IG5ldyBVaW50OEFycmF5KGJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgcmVzW2ldID0gbmV3IFBvbHlub21pYWwoYnVmZiwgdGhpcy5jdXJ2ZSwgdGhpcy5sb2dnZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBmciA9IGkgKiBjaHVua0J5dGVMZW5ndGg7XG4gICAgICAgICAgICBjb25zdCB0byA9IGlzTGFzdCA/IHRoaXMuY29lZi5ieXRlTGVuZ3RoIDogKGkgKyAxKSAqIGNodW5rQnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldCh0aGlzLmNvZWYuc2xpY2UoZnIsIHRvKSwgMCk7XG5cbiAgICAgICAgICAgIC8vIEFkZCBhIGJsaW5kaW5nIGZhY3RvciBhcyBoaWdoZXIgZGVncmVlXG4gICAgICAgICAgICBpZiAoIWlzTGFzdCkge1xuICAgICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChibGluZGluZ0ZhY3RvcnNbaV0sIGNodW5rQnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIFN1YiBibGluZGluZyBmYWN0b3IgdG8gdGhlIGxvd2VzdCBkZWdyZWVcbiAgICAgICAgICAgIGlmICgwICE9PSBpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbG93ZXN0RGVncmVlID0gdGhpcy5Gci5zdWIocmVzW2ldLmNvZWYuc2xpY2UoMCwgdGhpcy5Gci5uOCksIGJsaW5kaW5nRmFjdG9yc1tpIC0gMV0pO1xuICAgICAgICAgICAgICAgIHJlc1tpXS5jb2VmLnNldChsb3dlc3REZWdyZWUsIDApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNMYXN0KSB7XG4gICAgICAgICAgICAgICAgcmVzW2ldLnRydW5jYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9sb3coWClcbiAgICAgICAgLy8gbGV0IHBvbFRMb3cgPSBuZXcgQmlnQnVmZmVyKChjaHVua1NpemUgKyAxKSAqIG44cik7XG4gICAgICAgIC8vIHBvbFRMb3cuc2V0KHQuc2xpY2UoMCwgemtleS5kb21haW5TaXplICogbjhyKSwgMCk7XG4gICAgICAgIC8vIC8vIEFkZCBibGluZGluZyBzY2FsYXIgYl8xMCBhcyBhIG5ldyBjb2VmZmljaWVudCBuXG4gICAgICAgIC8vIHBvbFRMb3cuc2V0KGNoLmJbMTBdLCB6a2V5LmRvbWFpblNpemUgKiBuOHIpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAvLyBjb21wdXRlIHRfbWlkKFgpXG4gICAgICAgIC8vIGxldCBwb2xUTWlkID0gbmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgMSkgKiBuOHIpO1xuICAgICAgICAvLyBwb2xUTWlkLnNldCh0LnNsaWNlKHprZXkuZG9tYWluU2l6ZSAqIG44ciwgemtleS5kb21haW5TaXplICogMiAqIG44ciksIDApO1xuICAgICAgICAvLyAvLyBTdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMCB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfbWlkXG4gICAgICAgIC8vIGNvbnN0IGxvd2VzdE1pZCA9IEZyLnN1Yihwb2xUTWlkLnNsaWNlKDAsIG44ciksIGNoLmJbMTBdKTtcbiAgICAgICAgLy8gcG9sVE1pZC5zZXQobG93ZXN0TWlkLCAwKTtcbiAgICAgICAgLy8gLy8gQWRkIGJsaW5kaW5nIHNjYWxhciBiXzExIGFzIGEgbmV3IGNvZWZmaWNpZW50IG5cbiAgICAgICAgLy8gcG9sVE1pZC5zZXQoY2guYlsxMV0sIHprZXkuZG9tYWluU2l6ZSAqIG44cik7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIC8vIGNvbXB1dGUgdF9oaWdoKFgpXG4gICAgICAgIC8vIGxldCBwb2xUSGlnaCA9IG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDYpICogbjhyKTtcbiAgICAgICAgLy8gcG9sVEhpZ2guc2V0KHQuc2xpY2UoemtleS5kb21haW5TaXplICogMiAqIG44ciwgKHprZXkuZG9tYWluU2l6ZSAqIDMgKyA2KSAqIG44ciksIDApO1xuICAgICAgICAvLyAvL1N1YnRyYWN0IGJsaW5kaW5nIHNjYWxhciBiXzExIHRvIHRoZSBsb3dlc3QgY29lZmZpY2llbnQgb2YgdF9oaWdoXG4gICAgICAgIC8vIGNvbnN0IGxvd2VzdEhpZ2ggPSBGci5zdWIocG9sVEhpZ2guc2xpY2UoMCwgbjhyKSwgY2guYlsxMV0pO1xuICAgICAgICAvLyBwb2xUSGlnaC5zZXQobG93ZXN0SGlnaCwgMCk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHByb29mLlQxID0gYXdhaXQgZXhwVGF1KHBvbFRMb3csIFwibXVsdGlleHAgVDFcIik7XG4gICAgICAgIC8vIHByb29mLlQyID0gYXdhaXQgZXhwVGF1KHBvbFRNaWQsIFwibXVsdGlleHAgVDJcIik7XG4gICAgICAgIC8vIHByb29mLlQzID0gYXdhaXQgZXhwVGF1KHBvbFRIaWdoLCBcIm11bHRpZXhwIFQzXCIpO1xuICAgIH1cblxuLy8gc3BsaXQyKGRlZ1BvbHMsIGJsaW5kaW5nRmFjdG9ycykge1xuLy8gICAgIGxldCBjdXJyZW50RGVncmVlID0gdGhpcy5kZWdyZWUoKTtcbi8vICAgICBjb25zdCBudW1GaWxsZWRQb2xzID0gTWF0aC5jZWlsKChjdXJyZW50RGVncmVlICsgMSkgLyAoZGVnUG9scyArIDEpKTtcbi8vXG4vLyAgICAgLy9ibGluZGluZyBmYWN0b3JzIGNhbiBiZSB2b2lkIG9yIG11c3QgaGF2ZSBhIGxlbmd0aCBvZiBudW1Qb2xzIC0gMVxuLy8gICAgIGlmICgwICE9PSBibGluZGluZ0ZhY3RvcnMubGVuZ3RoICYmIGJsaW5kaW5nRmFjdG9ycy5sZW5ndGggPCBudW1GaWxsZWRQb2xzIC0gMSkge1xuLy8gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEJsaW5kaW5nIGZhY3RvcnMgbGVuZ3RoIG11c3QgYmUgJHtudW1GaWxsZWRQb2xzIC0gMX1gKTtcbi8vICAgICB9XG4vL1xuLy8gICAgIGNvbnN0IGNodW5rQnl0ZUxlbmd0aCA9IChkZWdQb2xzICsgMSkgKiB0aGlzLkZyLm44O1xuLy9cbi8vICAgICAvLyBDaGVjayBwb2x5bm9taWFsIGNhbiBiZSBzcGxpdCBpbiBudW1DaHVua3MgcGFydHMgb2YgY2h1bmtTaXplIGJ5dGVzLi4uXG4vLyAgICAgaWYgKHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gY2h1bmtCeXRlTGVuZ3RoIDw9IG51bUZpbGxlZFBvbHMgLSAxKSB7XG4vLyAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUG9seW5vbWlhbCBpcyBzaG9ydCB0byBiZSBzcGxpdCBpbiAke251bUZpbGxlZFBvbHN9IHBhcnRzIG9mICR7ZGVnUG9sc30gY29lZmZpY2llbnRzIGVhY2guYCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICBsZXQgcmVzID0gW107XG4vLyAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1GaWxsZWRQb2xzOyBpKyspIHtcbi8vICAgICAgICAgY29uc3QgaXNMYXN0ID0gKG51bUZpbGxlZFBvbHMgLSAxKSA9PT0gaTtcbi8vICAgICAgICAgY29uc3QgYnl0ZUxlbmd0aCA9IGlzTGFzdCA/IChjdXJyZW50RGVncmVlICsgMSkgKiB0aGlzLkZyLm44IC0gKChudW1GaWxsZWRQb2xzIC0gMSkgKiBjaHVua0J5dGVMZW5ndGgpIDogY2h1bmtCeXRlTGVuZ3RoICsgdGhpcy5Gci5uODtcbi8vXG4vLyAgICAgICAgIHJlc1tpXSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoYnl0ZUxlbmd0aCksIHRoaXMuRnIsIHRoaXMubG9nZ2VyKTtcbi8vICAgICAgICAgY29uc3QgZnIgPSBpICogY2h1bmtCeXRlTGVuZ3RoO1xuLy8gICAgICAgICBjb25zdCB0byA9IGlzTGFzdCA/IChjdXJyZW50RGVncmVlICsgMSkgKiB0aGlzLkZyLm44IDogKGkgKyAxKSAqIGNodW5rQnl0ZUxlbmd0aDtcbi8vICAgICAgICAgcmVzW2ldLmNvZWYuc2V0KHRoaXMuY29lZi5zbGljZShmciwgdG8pLCAwKTtcbi8vXG4vLyAgICAgICAgIC8vIEFkZCBhIGJsaW5kaW5nIGZhY3RvciBhcyBoaWdoZXIgZGVncmVlXG4vLyAgICAgICAgIGlmICghaXNMYXN0KSB7XG4vLyAgICAgICAgICAgICByZXNbaV0uY29lZi5zZXQoYmxpbmRpbmdGYWN0b3JzW2ldLCBjaHVua0J5dGVMZW5ndGgpO1xuLy8gICAgICAgICB9XG4vL1xuLy8gICAgICAgICAvLyBTdWIgYmxpbmRpbmcgZmFjdG9yIHRvIHRoZSBsb3dlc3QgZGVncmVlXG4vLyAgICAgICAgIGlmICgwICE9PSBpKSB7XG4vLyAgICAgICAgICAgICBjb25zdCBsb3dlc3REZWdyZWUgPSB0aGlzLkZyLnN1YihyZXNbaV0uY29lZi5zbGljZSgwLCB0aGlzLkZyLm44KSwgYmxpbmRpbmdGYWN0b3JzW2kgLSAxXSk7XG4vLyAgICAgICAgICAgICByZXNbaV0uY29lZi5zZXQobG93ZXN0RGVncmVlLCAwKTtcbi8vICAgICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIHJlcztcbi8vIH1cblxuLy8gbWVyZ2UocG9scywgb3ZlcmxhcCA9IHRydWUpIHtcbi8vICAgICBsZXQgbGVuZ3RoID0gMDtcbi8vICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvbHMubGVuZ3RoOyBpKyspIHtcbi8vICAgICAgICAgbGVuZ3RoICs9IHBvbHNbaV0ubGVuZ3RoKCk7XG4vLyAgICAgfVxuLy9cbi8vICAgICBpZiAob3ZlcmxhcCkge1xuLy8gICAgICAgICBsZW5ndGggLT0gcG9scy5sZW5ndGggLSAxO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgbGV0IHJlcyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIobGVuZ3RoICogdGhpcy5Gci5uOCkpO1xuLy8gICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9scy5sZW5ndGg7IGkrKykge1xuLy8gICAgICAgICBjb25zdCBieXRlTGVuZ3RoID0gcG9sc1tpXS5jb2VmLmJ5dGVMZW5ndGg7XG4vLyAgICAgICAgIGlmICgwID09PSBpKSB7XG4vLyAgICAgICAgICAgICByZXMuY29lZi5zZXQocG9sc1tpXS5jb2VmLCAwKTtcbi8vICAgICAgICAgfSBlbHNlIHtcbi8vXG4vLyAgICAgICAgIH1cbi8vICAgICB9XG4vL1xuLy8gICAgIHJldHVybiByZXM7XG4vLyB9XG5cbiAgICB0cnVuY2F0ZSgpIHtcbiAgICAgICAgY29uc3QgZGVnID0gdGhpcy5kZWdyZWUoKTtcbiAgICAgICAgaWYgKGRlZyArIDEgPCB0aGlzLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjgpIHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0NvZWZzID0gKGRlZyArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICAgICAgbmV3IEJpZ0J1ZmZlcigoZGVnICsgMSkgKiB0aGlzLkZyLm44KSA6IG5ldyBVaW50OEFycmF5KChkZWcgKyAxKSAqIHRoaXMuRnIubjgpO1xuXG4gICAgICAgICAgICBuZXdDb2Vmcy5zZXQodGhpcy5jb2VmLnNsaWNlKDAsIChkZWcgKyAxKSAqIHRoaXMuRnIubjgpLCAwKTtcbiAgICAgICAgICAgIHRoaXMuY29lZiA9IG5ld0NvZWZzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIGxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oeEFyciwgeUFyciwgY3VydmUpIHtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBjb21wdXRlTGFncmFuZ2VQb2x5bm9taWFsKDApO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHhBcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHBvbHlub21pYWwuYWRkKGNvbXB1dGVMYWdyYW5nZVBvbHlub21pYWwoaSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlUG9seW5vbWlhbChpKSB7XG4gICAgICAgICAgICBsZXQgcG9seW5vbWlhbDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB4QXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IGkpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHBvbHlub21pYWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBsZXQgYnVmZiA9ICh4QXJyLmxlbmd0aCkgPiAyIDw8IDE0ID9cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCaWdCdWZmZXIoKHhBcnIubGVuZ3RoKSAqIEZyLm44KSA6IG5ldyBVaW50OEFycmF5KCh4QXJyLmxlbmd0aCkgKiBGci5uOCk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChidWZmLCBjdXJ2ZSk7XG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigwLCBGci5uZWcoeEFycltqXSkpO1xuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFsLnNldENvZWYoMSwgRnIub25lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFsLmJ5WFN1YlZhbHVlKHhBcnJbal0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGRlbm9taW5hdG9yID0gcG9seW5vbWlhbC5ldmFsdWF0ZSh4QXJyW2ldKTtcbiAgICAgICAgICAgIGRlbm9taW5hdG9yID0gRnIuaW52KGRlbm9taW5hdG9yKTtcbiAgICAgICAgICAgIGNvbnN0IG11bEZhY3RvciA9IEZyLm11bCh5QXJyW2ldLCBkZW5vbWluYXRvcik7XG5cbiAgICAgICAgICAgIHBvbHlub21pYWwubXVsU2NhbGFyKG11bEZhY3Rvcik7XG5cbiAgICAgICAgICAgIHJldHVybiBwb2x5bm9taWFsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc3RhdGljIHplcm9maWVyUG9seW5vbWlhbCh4QXJyLCBjdXJ2ZSkge1xuICAgICAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgICAgICBsZXQgYnVmZiA9ICh4QXJyLmxlbmd0aCArIDEpID4gMiA8PCAxNCA/XG4gICAgICAgICAgICBuZXcgQmlnQnVmZmVyKCh4QXJyLmxlbmd0aCArIDEpICogRnIubjgpIDogbmV3IFVpbnQ4QXJyYXkoKHhBcnIubGVuZ3RoICsgMSkgKiBGci5uOCk7XG4gICAgICAgIGxldCBwb2x5bm9taWFsID0gbmV3IFBvbHlub21pYWwoYnVmZiwgY3VydmUpO1xuXG4gICAgICAgIC8vIEJ1aWxkIGEgemVyb2ZpZXIgcG9seW5vbWlhbCB3aXRoIHRoZSBmb2xsb3dpbmcgZm9ybTpcbiAgICAgICAgLy8gemVyb2ZpZXIoWCkgPSAoWC14QXJyWzBdKShYLXhBcnJbMV0pLi4uKFgteEFycltuXSlcbiAgICAgICAgcG9seW5vbWlhbC5zZXRDb2VmKDAsIEZyLm5lZyh4QXJyWzBdKSk7XG4gICAgICAgIHBvbHlub21pYWwuc2V0Q29lZigxLCBGci5vbmUpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgeEFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgcG9seW5vbWlhbC5ieVhTdWJWYWx1ZSh4QXJyW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIHByaW50KCkge1xuICAgICAgICBjb25zdCBGciA9IHRoaXMuRnI7XG4gICAgICAgIGxldCByZXMgPSBcIlwiO1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kZWdyZWUoKTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IGNvZWYgPSB0aGlzLmdldENvZWYoaSk7XG4gICAgICAgICAgICBpZiAoIUZyLmVxKEZyLnplcm8sIGNvZWYpKSB7XG4gICAgICAgICAgICAgICAgaWYgKEZyLmlzTmVnYXRpdmUoY29lZikpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiIC0gXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpICE9PSB0aGlzLmRlZ3JlZSgpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIiArIFwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXMgKz0gRnIudG9TdHJpbmcoY29lZik7XG4gICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBpID4gMSA/IFwieF5cIiArIGkgOiBcInhcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICB9XG5cbiAgICBhc3luYyBtdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIG5hbWUpIHtcbiAgICAgICAgY29uc3QgbiA9IHRoaXMuY29lZi5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uODtcbiAgICAgICAgY29uc3QgUFRhdU4gPSBQVGF1LnNsaWNlKDAsIG4gKiB0aGlzLkcxLkYubjggKiAyKTtcbiAgICAgICAgY29uc3QgYm0gPSBhd2FpdCB0aGlzLkZyLmJhdGNoRnJvbU1vbnRnb21lcnkodGhpcy5jb2VmKTtcbiAgICAgICAgbGV0IHJlcyA9IGF3YWl0IHRoaXMuRzEubXVsdGlFeHBBZmZpbmUoUFRhdU4sIGJtLCB0aGlzLmxvZ2dlciwgbmFtZSk7XG4gICAgICAgIHJlcyA9IHRoaXMuRzEudG9BZmZpbmUocmVzKTtcbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IHtCaWdCdWZmZXJ9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcblxuZXhwb3J0IGNsYXNzIEV2YWx1YXRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcihldmFsdWF0aW9ucywgY3VydmUsIGxvZ2dlcikge1xuICAgICAgICB0aGlzLmV2YWwgPSBldmFsdWF0aW9ucztcbiAgICAgICAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICAgICAgICB0aGlzLkZyID0gY3VydmUuRnI7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIHN0YXRpYyBhc3luYyBmcm9tUG9seW5vbWlhbChwb2x5bm9taWFsLCBleHRlbnNpb24sIGN1cnZlLCBsb2dnZXIpIHtcbiAgICAgICAgY29uc3QgY29lZmZpY2llbnRzTiA9IG5ldyBCaWdCdWZmZXIocG9seW5vbWlhbC5sZW5ndGgoKSAqIGV4dGVuc2lvbiAqIGN1cnZlLkZyLm44KTtcbiAgICAgICAgY29lZmZpY2llbnRzTi5zZXQocG9seW5vbWlhbC5jb2VmLCAwKTtcblxuICAgICAgICBjb25zdCBldmFsdWF0aW9ucyA9IGF3YWl0IGN1cnZlLkZyLmZmdChjb2VmZmljaWVudHNOKTtcblxuICAgICAgICByZXR1cm4gbmV3IEV2YWx1YXRpb25zKGV2YWx1YXRpb25zLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICB9XG5cbiAgICBnZXRFdmFsdWF0aW9uKGluZGV4KSB7XG4gICAgICAgIGNvbnN0IGlfbjggPSBpbmRleCAqIHRoaXMuRnIubjg7XG5cbiAgICAgICAgaWYgKGlfbjggKyB0aGlzLkZyLm44ID4gdGhpcy5ldmFsLmJ5dGVMZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV2YWx1YXRpb25zLmdldEV2YWx1YXRpb24oKSBvdXQgb2YgYm91bmRzXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZXZhbC5zbGljZShpX244LCBpX244ICsgdGhpcy5Gci5uOCk7XG4gICAgfVxuXG4gICAgbGVuZ3RoKCkge1xuICAgICAgICBsZXQgbGVuZ3RoID0gdGhpcy5ldmFsLmJ5dGVMZW5ndGggLyB0aGlzLkZyLm44O1xuICAgICAgICBpZiAobGVuZ3RoICE9PSBNYXRoLmZsb29yKHRoaXMuZXZhbC5ieXRlTGVuZ3RoIC8gdGhpcy5Gci5uOCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBvbHlub21pYWwgZXZhbHVhdGlvbnMgYnVmZmVyIGhhcyBpbmNvcnJlY3Qgc2l6ZVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoMCA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlci53YXJuKFwiUG9seW5vbWlhbCBoYXMgbGVuZ3RoIHplcm9cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxlbmd0aDtcbiAgICB9XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMSAwa2ltcyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuLyogSW1wbGVtZW50YXRpb24gb2YgdGhpcyBwYXBlcjogaHR0cHM6Ly9lcHJpbnQuaWFjci5vcmcvMjAxOS85NTMucGRmIHNlY3Rpb24gOC40ICovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIsIHV0aWxzLCBCaWdCdWZmZXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7c3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5pbXBvcnQgeyBNdWxaIH0gZnJvbSBcIi4vbXVsX3ouanNcIjtcbmltcG9ydCB7ICBaS0VZX1BMX0hFQURFUl9TRUNUSU9OLFxuICAgIFpLRVlfUExfQURESVRJT05TX1NFQ1RJT04sXG4gICAgWktFWV9QTF9BX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfUExfQl9NQVBfU0VDVElPTixcbiAgICBaS0VZX1BMX0NfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RTV9TRUNUSU9OLFxuICAgIFpLRVlfUExfUUxfU0VDVElPTixcbiAgICBaS0VZX1BMX1FSX1NFQ1RJT04sXG4gICAgWktFWV9QTF9RT19TRUNUSU9OLFxuICAgIFpLRVlfUExfUUNfU0VDVElPTixcbiAgICBaS0VZX1BMX1NJR01BX1NFQ1RJT04sXG4gICAgWktFWV9QTF9MQUdSQU5HRV9TRUNUSU9OLFxuICAgIFpLRVlfUExfUFRBVV9TRUNUSU9OLFxufSBmcm9tIFwiLi9wbG9ua19jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCB7IEV2YWx1YXRpb25zIH0gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuICAgIFxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcGxvbmsxNlByb3ZlKHprZXlGaWxlTmFtZSwgd2l0bmVzc0ZpbGVOYW1lLCBsb2dnZXIsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB7ZmQ6IGZkV3Rucywgc2VjdGlvbnM6IHNlY3Rpb25zV3Ruc30gPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUod2l0bmVzc0ZpbGVOYW1lLCBcInd0bnNcIiwgMiwgMTw8MjUsIDE8PDIzKTtcblxuICAgIC8vIFJlYWQgd2l0bmVzcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBSZWFkaW5nIHdpdG5lc3MgZmlsZVwiKTtcbiAgICBjb25zdCB3dG5zID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCBzZWN0aW9uc1d0bnMpO1xuXG4gICAgLy8gUmVhZCB6a2V5IGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgemtleSBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRaS2V5LCBzZWN0aW9uczogemtleVNlY3Rpb25zfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh6a2V5RmlsZU5hbWUsIFwiemtleVwiLCAyLCAxPDwyNSwgMTw8MjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgemtleVNlY3Rpb25zLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuICAgIGlmICh6a2V5LnByb3RvY29sICE9IFwicGxvbmtcIikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ6a2V5IGZpbGUgaXMgbm90IHBsb25rXCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgIHd0bnMucSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ3VydmUgb2YgdGhlIHdpdG5lc3MgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnZlIG9mIHRoZSBwcm92aW5nIGtleVwiKTtcbiAgICB9XG5cbiAgICBpZiAod3Rucy5uV2l0bmVzcyAhPSB6a2V5Lm5WYXJzIC16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgbGVuZ3RoLiBDaXJjdWl0OiAke3prZXkublZhcnN9LCB3aXRuZXNzOiAke3d0bnMubldpdG5lc3N9LCAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJ2ZSA9IHprZXkuY3VydmU7XG5cbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IG44ciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNEb21haW4gPSB6a2V5LmRvbWFpblNpemUgKiBuOHI7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIiAgUExPTksgUFJPVkUgU0VUVElOR1NcIik7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDdXJ2ZTogICAgICAgICAke2N1cnZlLm5hbWV9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBDaXJjdWl0IHBvd2VyOiAke3prZXkucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgICBEb21haW4gc2l6ZTogICAke3prZXkuZG9tYWluU2l6ZX1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFZhcnM6ICAgICAgICAgICR7emtleS5uVmFyc31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIFB1YmxpYyB2YXJzOiAgICR7emtleS5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoYCAgQ29uc3RyYWludHM6ICAgJHt6a2V5Lm5Db25zdHJhaW50c31gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGAgIEFkZGl0aW9uczogICAgICR7emtleS5uQWRkaXRpb25zfWApO1xuICAgICAgICBsb2dnZXIuZGVidWcoXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vUmVhZCB3aXRuZXNzIGRhdGFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJlYWRpbmcgd2l0bmVzcyBmaWxlIGRhdGFcIik7XG4gICAgY29uc3QgYnVmZldpdG5lc3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRXdG5zLCBzZWN0aW9uc1d0bnMsIDIpO1xuXG4gICAgLy8gRmlyc3QgZWxlbWVudCBpbiBwbG9uayBpcyBub3QgdXNlZCBhbmQgY2FuIGJlIGFueSB2YWx1ZS4gKEJ1dCBhbHdheXMgdGhlIHNhbWUpLlxuICAgIC8vIFdlIHNldCBpdCB0byB6ZXJvIHRvIGdvIGZhc3RlciBpbiB0aGUgZXhwb25lbnRpYXRpb25zLlxuICAgIGJ1ZmZXaXRuZXNzLnNldChGci56ZXJvLCAwKTtcbiAgICBjb25zdCBidWZmSW50ZXJuYWxXaXRuZXNzID0gbmV3IEJpZ0J1ZmZlcihuOHIqemtleS5uQWRkaXRpb25zKTtcblxuICAgIGxldCBidWZmZXJzID0ge307XG4gICAgbGV0IHBvbHlub21pYWxzID0ge307XG4gICAgbGV0IGV2YWx1YXRpb25zID0ge307XG5cbiAgICBsZXQgY2hhbGxlbmdlcyA9IHt9O1xuICAgIGxldCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKGA+IFJlYWRpbmcgU2VjdGlvbiAke1pLRVlfUExfQURESVRJT05TX1NFQ1RJT059LiBBZGRpdGlvbnNgKTtcbiAgICBhd2FpdCBjYWxjdWxhdGVBZGRpdGlvbnMoKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1NJR01BX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBwb2x5bm9taWFscyBcIik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWExID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEyID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgcG9seW5vbWlhbHMuU2lnbWEzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMS5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNSAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWEzLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX1BMX1NJR01BX1NFQ1RJT05dWzBdLnAgKyAxMCAqIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IFJlYWRpbmcgU2lnbWEgZXZhbHVhdGlvbnNcIik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWExID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTIgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlNpZ21hMS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfU0lHTUFfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEyLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgNiAqIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEzLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9TSUdNQV9TRUNUSU9OXVswXS5wICsgMTEgKiBzRG9tYWluKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX1BMX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICBjb25zdCBQVGF1ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX1BUQVVfU0VDVElPTik7XG5cbiAgICBsZXQgcHVibGljU2lnbmFscyA9IFtdO1xuXG4gICAgZm9yIChsZXQgaT0xOyBpPD0gemtleS5uUHVibGljOyBpKyspIHtcbiAgICAgICAgY29uc3QgcHViID0gYnVmZldpdG5lc3Muc2xpY2UoaSpGci5uOCwgaSpGci5uOCtGci5uOCk7XG4gICAgICAgIHB1YmxpY1NpZ25hbHMucHVzaChTY2FsYXIuZnJvbVJwckxFKHB1YikpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDFcIik7XG4gICAgYXdhaXQgcm91bmQxKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDJcIik7XG4gICAgYXdhaXQgcm91bmQyKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDNcIik7XG4gICAgYXdhaXQgcm91bmQzKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDRcIik7XG4gICAgYXdhaXQgcm91bmQ0KCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IFJPVU5EIDVcIik7XG4gICAgYXdhaXQgcm91bmQ1KCk7XG5cbiAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuICAgIC8vIEZpbmFsIGFkanVzdG1lbnRzIC8vXG4gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGF3YWl0IGZkV3Rucy5jbG9zZSgpO1xuXG4gICAgLy8gUHJlcGFyZSBwcm9vZlxuICAgIGxldCBfcHJvb2YgPSBwcm9vZi50b09iamVjdFByb29mKGZhbHNlKTtcbiAgICBfcHJvb2YucHJvdG9jb2wgPSBcInBsb25rXCI7XG4gICAgX3Byb29mLmN1cnZlID0gY3VydmUubmFtZTtcbiAgICBcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJQTE9OSyBQUk9WRVIgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBwcm9vZjogc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpLFxuICAgICAgICBwdWJsaWNTaWduYWxzOiBzdHJpbmdpZnlCaWdJbnRzKHB1YmxpY1NpZ25hbHMpXG4gICAgfTtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNhbGN1bGF0ZUFkZGl0aW9ucygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBhZGRpdGlvbnNcIik7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0J1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIHNpemVzOiB3aXJlSWRfeCA9IDQgYnl0ZXMgKDMyIGJpdHMpLCBmYWN0b3JfeCA9IGZpZWxkIHNpemUgYml0c1xuICAgICAgICAvLyBBZGRpdGlvbiBmb3JtOiB3aXJlSWRfYSB3aXJlSWRfYiBmYWN0b3JfYSBmYWN0b3JfYiAoc2l6ZSBpcyA0ICsgNCArIHNGciArIHNGcilcbiAgICAgICAgY29uc3Qgc1N1bSA9IDggKyBuOHIgKiAyO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmRlYnVnKGAgICAgYWRkaXRpb24gJHtpfS8ke3prZXkubkFkZGl0aW9uc31gKTtcblxuICAgICAgICAgICAgLy8gUmVhZCBhZGRpdGlvbiB2YWx1ZXNcbiAgICAgICAgICAgIGxldCBvZmZzZXQgPSBpICogc1N1bTtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkMSA9IHJlYWRVSW50MzIoYWRkaXRpb25zQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCArPSA0O1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQyID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IxID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIG44cik7XG4gICAgICAgICAgICBvZmZzZXQgKz0gbjhyO1xuICAgICAgICAgICAgY29uc3QgZmFjdG9yMiA9IGFkZGl0aW9uc0J1ZmYuc2xpY2Uob2Zmc2V0LCBvZmZzZXQgKyBuOHIpO1xuXG4gICAgICAgICAgICAvLyBHZXQgd2l0bmVzcyB2YWx1ZVxuICAgICAgICAgICAgY29uc3Qgd2l0bmVzczEgPSBnZXRXaXRuZXNzKHNpZ25hbElkMSk7XG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMiA9IGdldFdpdG5lc3Moc2lnbmFsSWQyKTtcblxuICAgICAgICAgICAgLy9DYWxjdWxhdGUgZmluYWwgcmVzdWx0XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBGci5hZGQoRnIubXVsKGZhY3RvcjEsIHdpdG5lc3MxKSwgRnIubXVsKGZhY3RvcjIsIHdpdG5lc3MyKSk7XG5cbiAgICAgICAgICAgIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2V0KHJlc3VsdCwgbjhyICogaSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiByZWFkVUludDMyKGIsIG8pIHtcbiAgICAgICAgY29uc3QgYnVmZiA9IGIuc2xpY2Uobywgbys0KTtcbiAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIsIGJ1ZmYuYnl0ZU9mZnNldCwgYnVmZi5ieXRlTGVuZ3RoKTtcbiAgICAgICAgcmV0dXJuIGJ1ZmZWLmdldFVpbnQzMigwLCB0cnVlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRXaXRuZXNzKGlkeCkge1xuICAgICAgICBpZiAoaWR4IDwgemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBidWZmV2l0bmVzcy5zbGljZShpZHgqbjhyLCBpZHgqbjhyK244cik7XG4gICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgemtleS5uVmFycykge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZJbnRlcm5hbFdpdG5lc3Muc2xpY2UoKGlkeCAtICh6a2V5Lm5WYXJzLXprZXkubkFkZGl0aW9ucykpKm44ciwgKGlkeC0oemtleS5uVmFycy16a2V5Lm5BZGRpdGlvbnMpKSpuOHIgKyBuOHIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGN1cnZlLkZyLnplcm87XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDEoKSB7XG4gICAgICAgIC8vIFNURVAgMS4xIC0gR2VuZXJhdGUgcmFuZG9tIGJsaW5kaW5nIHNjYWxhcnMgKGIxLCAuLi4sIGIxMSkg4oiIIEZcbiAgICAgICAgY2hhbGxlbmdlcy5iID0gW107XG4gICAgICAgIGZvciAobGV0IGk9MTsgaTw9MTE7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy5iW2ldID0gY3VydmUuRnIucmFuZG9tKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDEuMiAtIENvbXB1dGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgd2lyZSBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVdpcmVQb2x5bm9taWFscygpO1xuXG4gICAgICAgIC8vIFNURVAgMS4zIC0gQ29tcHV0ZSBbYV1fMSwgW2JdXzEsIFtjXV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIEEsIEIsIEMgTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0QSA9IGF3YWl0IHBvbHlub21pYWxzLkEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIkFcIik7XG4gICAgICAgIGxldCBjb21taXRCID0gYXdhaXQgcG9seW5vbWlhbHMuQi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQlwiKTtcbiAgICAgICAgbGV0IGNvbW1pdEMgPSBhd2FpdCBwb2x5bm9taWFscy5DLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJDXCIpO1xuXG4gICAgICAgIC8vIEZpcnN0IG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbQV1fMSwgW0JdXzEsIFtDXV8xKVxuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiQVwiLCBjb21taXRBKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIkJcIiwgY29tbWl0Qik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDXCIsIGNvbW1pdEMpO1xuXG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVXaXJlUG9seW5vbWlhbHMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBSZWFkaW5nIGRhdGEgZnJvbSB6a2V5IGZpbGVcIik7XG5cbiAgICAgICAgLy8gQnVpbGQgQSwgQiBhbmQgQyBldmFsdWF0aW9ucyBidWZmZXIgZnJvbSB6a2V5IGFuZCB3aXRuZXNzIGZpbGVzXG4gICAgICAgIGJ1ZmZlcnMuQSA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgIGJ1ZmZlcnMuQyA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCB6a2V5IGZpbGUgdG8gdGhlIGJ1ZmZlcnNcbiAgICAgICAgY29uc3QgYU1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfUExfQV9NQVBfU0VDVElPTik7XG4gICAgICAgIGNvbnN0IGJNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX1BMX0JfTUFQX1NFQ1RJT04pO1xuICAgICAgICBjb25zdCBjTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9QTF9DX01BUF9TRUNUSU9OKTtcblxuICAgICAgICAvLyBDb21wdXRlIGFsbCB3aXRuZXNzIGZyb20gc2lnbmFsIGlkcyBhbmQgc2V0IHRoZW0gdG8gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQ29uc3RyYWludHM7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogbjhyO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gaSAqIDQ7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgQSB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZEEgPSByZWFkVUludDMyKGFNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgYnVmZmVycy5BLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQSksIGlfc0ZyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBCIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQiA9IHJlYWRVSW50MzIoYk1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBidWZmZXJzLkIuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRCKSwgaV9zRnIpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIEMgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRDID0gcmVhZFVJbnQzMihjTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEMpLCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICBidWZmZXJzLkEgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkEpO1xuICAgICAgICBidWZmZXJzLkIgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkIpO1xuICAgICAgICBidWZmZXJzLkMgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkMpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpIGZyb20gQSxCICYgQyBidWZmZXJzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5BID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5BLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkIgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLkIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgaWZmdFwiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQyA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgQSBmZnRcIik7XG4gICAgICAgIGV2YWx1YXRpb25zLkEgPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5BLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBCIGZmdFwiKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuQiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkIsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIEMgZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5DID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQywgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgYShYKSwgYihYKSBhbmQgYyhYKSBwb2x5bm9taWFscyBjb2VmZmljaWVudHMgd2l0aCBibGluZGluZyBzY2FsYXJzIGJcbiAgICAgICAgcG9seW5vbWlhbHMuQS5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzJdLCBjaGFsbGVuZ2VzLmJbMV1dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQi5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzRdLCBjaGFsbGVuZ2VzLmJbM11dKTtcbiAgICAgICAgcG9seW5vbWlhbHMuQy5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzZdLCBjaGFsbGVuZ2VzLmJbNV1dKTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVzXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5BLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5CLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwb2x5bm9taWFscy5DLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9ICAgICAgICBcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDIoKSB7XG4gICAgICAgIC8vIFNURVAgMi4xIC0gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YSBhbmQgZ2FtbWEg4oiIIEZcbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgYmV0YVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBjaGFsbGVuZ2VzIGJldGEgYW5kIGdhbW1hXCIpO1xuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG5cbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW0pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RbCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlFyKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUW8pO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5RYyk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh6a2V5LlMxKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHprZXkuUzIpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5TMyk7XG5cbiAgICAgICAgLy8gQWRkIEEgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoYnVmZmVycy5BLnNsaWNlKGkgKiBuOHIsIGkgKiBuOHIgKyBuOHIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBBLCBCLCBDIHRvIHRoZSB0cmFuc2NyaXB0XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiQ1wiKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy5iZXRhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuYmV0YTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmJldGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgZ2FtbWFcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IGNoYWxsZW5nZXMuZ2FtbWE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5nYW1tYSwgMTYpKTtcbiAgICBcbiAgICAgICAgLy8gU1RFUCAyLjIgLSBDb21wdXRlIHBlcm11dGF0aW9uIHBvbHlub21pYWwgeihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBaIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVaKCk7XG5cbiAgICAgICAgLy8gU1RFUCAyLjMgLSBDb21wdXRlIHBlcm11dGF0aW9uIFt6XV8xXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFogTVNNXCIpO1xuICAgICAgICBsZXQgY29tbWl0WiA9IGF3YWl0IHBvbHlub21pYWxzLloubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlpcIik7XG5cbiAgICAgICAgLy8gU2Vjb25kIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbWl1fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlpcIiwgY29tbWl0Wik7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVooKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICBsZXQgbnVtQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgbGV0IGRlbkFyciA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG5cbiAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCB2YWx1ZXMgdG8gMVxuICAgICAgICBudW1BcnIuc2V0KEZyLm9uZSwgMCk7XG4gICAgICAgIGRlbkFyci5zZXQoRnIub25lLCAwKTtcblxuICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5LmRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgaV9uOHIgPSBpICogbjhyO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBhID0gYnVmZmVycy5BLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBiID0gYnVmZmVycy5CLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG4gICAgICAgICAgICBjb25zdCBjID0gYnVmZmVycy5DLnNsaWNlKGlfbjhyLCBpX244ciArIG44cik7XG5cbiAgICAgICAgICAgIC8vIFooWCkgOj0gbnVtQXJyIC8gZGVuQXJyXG4gICAgICAgICAgICAvLyBudW1BcnIgOj0gKGEgKyBiZXRhwrfPiSArIGdhbW1hKShiICsgYmV0YcK3z4nCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrfPicK3azIgKyBnYW1tYSlcbiAgICAgICAgICAgIGNvbnN0IGJldGF3ID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgdyk7XG5cbiAgICAgICAgICAgIGxldCBuMSA9IEZyLmFkZChhLCBiZXRhdyk7XG4gICAgICAgICAgICBuMSA9IEZyLmFkZChuMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBuMiA9IEZyLmFkZChiLCBGci5tdWwoemtleS5rMSwgYmV0YXcpKTtcbiAgICAgICAgICAgIG4yID0gRnIuYWRkKG4yLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IG4zID0gRnIuYWRkKGMsIEZyLm11bCh6a2V5LmsyLCBiZXRhdykpO1xuICAgICAgICAgICAgbjMgPSBGci5hZGQobjMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgbnVtID0gRnIubXVsKG4xLCBGci5tdWwobjIsIG4zKSk7XG5cbiAgICAgICAgICAgIC8vIGRlbkFyciA6PSAoYSArIGJldGHCt3NpZ21hMSArIGdhbW1hKShiICsgYmV0YcK3c2lnbWEyICsgZ2FtbWEpKGMgKyBiZXRhwrdzaWdtYTMgKyBnYW1tYSlcbiAgICAgICAgICAgIGxldCBkMSA9IEZyLmFkZChhLCBGci5tdWwoZXZhbHVhdGlvbnMuU2lnbWExLmdldEV2YWx1YXRpb24oaSAqIDQpLCBjaGFsbGVuZ2VzLmJldGEpKTtcbiAgICAgICAgICAgIGQxID0gRnIuYWRkKGQxLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGQyID0gRnIuYWRkKGIsIEZyLm11bChldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpICogNCksIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICAgICAgZDIgPSBGci5hZGQoZDIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZDMgPSBGci5hZGQoYywgRnIubXVsKGV2YWx1YXRpb25zLlNpZ21hMy5nZXRFdmFsdWF0aW9uKGkgKiA0KSwgY2hhbGxlbmdlcy5iZXRhKSk7XG4gICAgICAgICAgICBkMyA9IEZyLmFkZChkMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBkZW4gPSBGci5tdWwoZDEsIEZyLm11bChkMiwgZDMpKTtcblxuICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBudW0gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIG51bUFyclxuICAgICAgICAgICAgbnVtID0gRnIubXVsKG51bUFyci5zbGljZShpX244ciwgaV9uOHIgKyBuOHIpLCBudW0pO1xuICAgICAgICAgICAgbnVtQXJyLnNldChudW0sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIG44cik7XG5cbiAgICAgICAgICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgZGVuIHZhbHVlIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzYXZlZCBpbiBkZW5BcnJcbiAgICAgICAgICAgIGRlbiA9IEZyLm11bChkZW5BcnIuc2xpY2UoaV9uOHIsIGlfbjhyICsgbjhyKSwgZGVuKTtcbiAgICAgICAgICAgIGRlbkFyci5zZXQoZGVuLCAoKGkgKyAxKSAlIHprZXkuZG9tYWluU2l6ZSkgKiBuOHIpO1xuXG4gICAgICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgaW52ZXJzZSBvZiBkZW5BcnIgdG8gY29tcHV0ZSBpbiB0aGUgbmV4dCBjb21tYW5kIHRoZVxuICAgICAgICAvLyBkaXZpc2lvbiBudW1BcnIvZGVuQXJyIGJ5IG11bHRpcGx5aW5nIG51bSDCtyAxL2RlbkFyclxuICAgICAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgICAgICAvLyBUT0RPOiBEbyBpdCBpbiBhc3NlbWJseSBhbmQgaW4gcGFyYWxsZWxcbiAgICAgICAgLy8gTXVsdGlwbHkgbnVtQXJyIMK3IGRlbkFyciB3aGVyZSBkZW5BcnIgd2FzIGludmVydGVkIGluIHRoZSBwcmV2aW91cyBjb21tYW5kXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIG44cjtcblxuICAgICAgICAgICAgY29uc3QgeiA9IEZyLm11bChudW1BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgbjhyKSwgZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIG44cikpO1xuICAgICAgICAgICAgbnVtQXJyLnNldCh6LCBpX3NGcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGcm9tIG5vdyBvbiB0aGUgdmFsdWVzIHNhdmVkIG9uIG51bUFyciB3aWxsIGJlIFooWCkgYnVmZmVyXG4gICAgICAgIGJ1ZmZlcnMuWiA9IG51bUFycjtcblxuICAgICAgICBpZiAoIUZyLmVxKG51bUFyci5zbGljZSgwLCBuOHIpLCBGci5vbmUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3B5IGNvbnN0cmFpbnRzIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB6KFgpIGZyb20gYnVmZmVycy5aXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgWiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5aID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5aLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBDb21wdXRlIGV4dGVuZGVkIGV2YWx1YXRpb25zIG9mIHooWCkgcG9seW5vbWlhbFxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgQ29tcHV0aW5nIFogZmZ0XCIpO1xuICAgICAgICBldmFsdWF0aW9ucy5aID0gYXdhaXQgRXZhbHVhdGlvbnMuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuWiwgNCwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gQmxpbmQgeihYKSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICBwb2x5bm9taWFscy5aLmJsaW5kQ29lZmZpY2llbnRzKFtjaGFsbGVuZ2VzLmJbOV0sIGNoYWxsZW5nZXMuYls4XSwgY2hhbGxlbmdlcy5iWzddXSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgIGlmIChwb2x5bm9taWFscy5aLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlogUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuWjtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZSBhbHBoYVwiKTtcblxuICAgICAgICAvLyBTVEVQIDMuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgYWxwaGEg4oiIIEZcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJaXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmFscGhhID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgY2hhbGxlbmdlcy5hbHBoYTIgPSBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmFscGhhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYWxwaGEsIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBxdW90aWVudCBwb2x5bm9taWFsIFQoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgVCBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVCgpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgW1QxXV8xLCBbVDJdXzEsIFtUM11fMVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBUIE1TTVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFQxID0gYXdhaXQgcG9seW5vbWlhbHMuVDEubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlQxXCIpO1xuICAgICAgICBsZXQgY29tbWl0VDIgPSBhd2FpdCBwb2x5bm9taWFscy5UMi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiVDJcIik7XG4gICAgICAgIGxldCBjb21taXRUMyA9IGF3YWl0IHBvbHlub21pYWxzLlQzLm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJUM1wiKTtcblxuICAgICAgICAvLyBUaGlyZCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW1QxXV8xLCBbVDJdXzEsIFtUM11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQxXCIsIGNvbW1pdFQxKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQyXCIsIGNvbW1pdFQyKTtcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIlQzXCIsIGNvbW1pdFQzKTsgICAgICAgIFxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUKCkge1xuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGDCt8K3wrcgUmVhZGluZyBzZWN0aW9ucyAke1pLRVlfUExfUUxfU0VDVElPTn0sICR7WktFWV9QTF9RUl9TRUNUSU9OfWAgK1xuICAgICAgICAgICAgICAgIGAsICR7WktFWV9QTF9RTV9TRUNUSU9OfSwgJHtaS0VZX1BMX1FPX1NFQ1RJT059LCAke1pLRVlfUExfUUNfU0VDVElPTn0uIFEgc2VsZWN0b3JzYCk7XG4gICAgICAgIC8vIFJlc2VydmUgbWVtb3J5IGZvciBRJ3MgZXZhbHVhdGlvbnNcbiAgICAgICAgZXZhbHVhdGlvbnMuUUwgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RUiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIGV2YWx1YXRpb25zLlFNID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgZXZhbHVhdGlvbnMuUU8gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9ucy5RQyA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgLy8gUmVhZCBRJ3MgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTC5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFSLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RUl9TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuUU0uZXZhbCwgMCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX1FNX1NFQ1RJT05dWzBdLnAgKyBzRG9tYWluKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLlFDLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9QTF9RQ19TRUNUSU9OXVswXS5wICsgc0RvbWFpbik7XG5cbiAgICAgICAgLy8gUmVhZCBMYWdyYW5nZSBwb2x5bm9taWFscyAmIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGV2YWx1YXRpb25zLkxhZ3JhbmdlID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQgKiB6a2V5Lm5QdWJsaWMpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkublB1YmxpYzsgaSsrKSB7XG4gICAgICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKGV2YWx1YXRpb25zLkxhZ3JhbmdlLmV2YWwsIGkgKiBzRG9tYWluICogNCwgc0RvbWFpbiAqIDQsIHprZXlTZWN0aW9uc1taS0VZX1BMX0xBR1JBTkdFX1NFQ1RJT05dWzBdLnAgKyBpICogNSAqIHNEb21haW4gKyBzRG9tYWluKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGJ1ZmZlcnMuVCA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpO1xuICAgICAgICBidWZmZXJzLlR6ID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGV2YWx1YXRpb25zXCIpO1xuXG4gICAgICAgIGxldCB3ID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZSAqIDQ7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKVxuICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgICAgICAgVCBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICBjb25zdCBhID0gZXZhbHVhdGlvbnMuQS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgYiA9IGV2YWx1YXRpb25zLkIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCB6ID0gZXZhbHVhdGlvbnMuWi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgencgPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oKHprZXkuZG9tYWluU2l6ZSAqIDQgKyA0ICsgaSkgJSAoemtleS5kb21haW5TaXplICogNCkpO1xuXG4gICAgICAgICAgICBjb25zdCBxbSA9IGV2YWx1YXRpb25zLlFNLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbCA9IGV2YWx1YXRpb25zLlFMLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxciA9IGV2YWx1YXRpb25zLlFSLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxbyA9IGV2YWx1YXRpb25zLlFPLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBxYyA9IGV2YWx1YXRpb25zLlFDLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICBjb25zdCBzMSA9IGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgY29uc3QgczIgPSBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgIGNvbnN0IHMzID0gZXZhbHVhdGlvbnMuU2lnbWEzLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFwID0gRnIuYWRkKGNoYWxsZW5nZXMuYlsyXSwgRnIubXVsKGNoYWxsZW5nZXMuYlsxXSwgdykpO1xuICAgICAgICAgICAgY29uc3QgYnAgPSBGci5hZGQoY2hhbGxlbmdlcy5iWzRdLCBGci5tdWwoY2hhbGxlbmdlcy5iWzNdLCB3KSk7XG4gICAgICAgICAgICBjb25zdCBjcCA9IEZyLmFkZChjaGFsbGVuZ2VzLmJbNl0sIEZyLm11bChjaGFsbGVuZ2VzLmJbNV0sIHcpKTtcblxuICAgICAgICAgICAgY29uc3QgdzIgPSBGci5zcXVhcmUodyk7XG4gICAgICAgICAgICBjb25zdCB6cCA9IEZyLmFkZChGci5hZGQoRnIubXVsKGNoYWxsZW5nZXMuYls3XSwgdzIpLCBGci5tdWwoY2hhbGxlbmdlcy5iWzhdLCB3KSksIGNoYWxsZW5nZXMuYls5XSk7XG4gICAgICAgICAgICBjb25zdCB3VyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgICAgIGNvbnN0IHdXMiA9IEZyLnNxdWFyZSh3Vyk7XG4gICAgICAgICAgICBjb25zdCB6V3AgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIHdXMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIHdXKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgIGxldCBwaSA9IEZyLnplcm87XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHprZXkublB1YmxpYzsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gKGogKiA0ICogemtleS5kb21haW5TaXplKSArIGk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBsUG9sID0gZXZhbHVhdGlvbnMuTGFncmFuZ2UuZ2V0RXZhbHVhdGlvbihvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFWYWwgPSBidWZmZXJzLkEuc2xpY2UoaiAqIG44ciwgKGogKyAxKSAqIG44cik7XG5cbiAgICAgICAgICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKGxQb2wsIGFWYWwpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZTEgOj0gYShYKWIoWClxTShYKSArIGEoWClxTChYKSArIGIoWClxUihYKSArIGMoWClxTyhYKSArIFBJKFgpICsgcUMoWClcbiAgICAgICAgICAgIGxldCBbZTEsIGUxel0gPSBNdWxaLm11bDIoYSwgYiwgYXAsIGJwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTEgPSBGci5tdWwoZTEsIHFtKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLm11bChlMXosIHFtKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIEZyLm11bChhLCBxbCkpO1xuICAgICAgICAgICAgZTF6ID0gRnIuYWRkKGUxeiwgRnIubXVsKGFwLCBxbCkpO1xuXG4gICAgICAgICAgICBlMSA9IEZyLmFkZChlMSwgRnIubXVsKGIsIHFyKSk7XG4gICAgICAgICAgICBlMXogPSBGci5hZGQoZTF6LCBGci5tdWwoYnAsIHFyKSk7XG5cbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBGci5tdWwoYywgcW8pKTtcbiAgICAgICAgICAgIGUxeiA9IEZyLmFkZChlMXosIEZyLm11bChjcCwgcW8pKTtcblxuICAgICAgICAgICAgZTEgPSBGci5hZGQoZTEsIHBpKTtcbiAgICAgICAgICAgIGUxID0gRnIuYWRkKGUxLCBxYyk7XG5cbiAgICAgICAgICAgIC8vIGUyIDo9IM6xWyhhKFgpICsgzrJYICsgzrMpKGIoWCkgKyDOsmsxWCArIM6zKShjKFgpICsgzrJrMlggKyDOsyl6KFgpXVxuICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcbiAgICAgICAgICAgIGxldCBlMmEgPSBhO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgYmV0YXcpO1xuICAgICAgICAgICAgZTJhID0gRnIuYWRkKGUyYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlMmIgPSBiO1xuICAgICAgICAgICAgZTJiID0gRnIuYWRkKGUyYiwgRnIubXVsKGJldGF3LCB6a2V5LmsxKSk7XG4gICAgICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUyYyA9IGM7XG4gICAgICAgICAgICBlMmMgPSBGci5hZGQoZTJjLCBGci5tdWwoYmV0YXcsIHprZXkuazIpKTtcbiAgICAgICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTJkID0gejtcblxuICAgICAgICAgICAgbGV0IFtlMiwgZTJ6XSA9IE11bFoubXVsNChlMmEsIGUyYiwgZTJjLCBlMmQsIGFwLCBicCwgY3AsIHpwLCBpICUgNCwgRnIpO1xuICAgICAgICAgICAgZTIgPSBGci5tdWwoZTIsIGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICAgICAgZTJ6ID0gRnIubXVsKGUyeiwgY2hhbGxlbmdlcy5hbHBoYSk7XG5cbiAgICAgICAgICAgIC8vIGUzIDo9IM6xWyhhKFgpICsgzrJTz4MxKFgpICsgzrMpKGIoWCkgKyDOslPPgzIoWCkgKyDOsykoYyhYKSArIM6yU8+DMyhYKSArIM6zKXooWM+JKV1cbiAgICAgICAgICAgIGxldCBlM2EgPSBhO1xuICAgICAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgczEpKTtcbiAgICAgICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICBsZXQgZTNiID0gYjtcbiAgICAgICAgICAgIGUzYiA9IEZyLmFkZChlM2IsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHMyKSk7XG4gICAgICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgbGV0IGUzYyA9IGM7XG4gICAgICAgICAgICBlM2MgPSBGci5hZGQoZTNjLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzMykpO1xuICAgICAgICAgICAgZTNjID0gRnIuYWRkKGUzYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgIGxldCBlM2QgPSB6dztcbiAgICAgICAgICAgIGxldCBbZTMsIGUzel0gPSBNdWxaLm11bDQoZTNhLCBlM2IsIGUzYywgZTNkLCBhcCwgYnAsIGNwLCB6V3AsIGkgJSA0LCBGcik7XG5cbiAgICAgICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgICAgIGUzeiA9IEZyLm11bChlM3osIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgICAgICAvLyBlNCA6PSDOsV4yKHooWCniiJIxKUwxKFgpXG4gICAgICAgICAgICBsZXQgZTQgPSBGci5zdWIoeiwgRnIub25lKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBldmFsdWF0aW9ucy5MYWdyYW5nZS5nZXRFdmFsdWF0aW9uKGkpKTtcbiAgICAgICAgICAgIGU0ID0gRnIubXVsKGU0LCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgICAgIGxldCBlNHogPSBGci5tdWwoenAsIGV2YWx1YXRpb25zLkxhZ3JhbmdlLmdldEV2YWx1YXRpb24oaSkpO1xuICAgICAgICAgICAgZTR6ID0gRnIubXVsKGU0eiwgY2hhbGxlbmdlcy5hbHBoYTIpO1xuXG5cbiAgICAgICAgICAgIGxldCB0ID0gRnIuYWRkKEZyLnN1YihGci5hZGQoZTEsIGUyKSwgZTMpLCBlNCk7XG4gICAgICAgICAgICBsZXQgdHogPSBGci5hZGQoRnIuc3ViKEZyLmFkZChlMXosIGUyeiksIGUzeiksIGU0eik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuVC5zZXQodCwgaSAqIG44cik7XG4gICAgICAgICAgICBidWZmZXJzLlR6LnNldCh0eiwgaSAqIG44cik7XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1t6a2V5LnBvd2VyICsgMl0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQwKFgpIGZyb20gYnVmZmVycy5UMFxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUIGlmZnRcIik7XG4gICAgICAgIHBvbHlub21pYWxzLlQgPSBhd2FpdCBQb2x5bm9taWFsLmZyb21FdmFsdWF0aW9ucyhidWZmZXJzLlQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMCBieSBaX0goWClcbiAgICAgICAgaWYgKGxvZ2dlcilcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVCAvIFpIXCIpO1xuICAgICAgICBwb2x5bm9taWFscy5ULmRpdlpoKHprZXkuZG9tYWluU2l6ZSwgNCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFR6KFgpIGZyb20gYnVmZmVycy5UelxuICAgICAgICBpZiAobG9nZ2VyKVxuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiwrfCt8K3IENvbXB1dGluZyBUeiBpZmZ0XCIpO1xuICAgICAgICBwb2x5bm9taWFscy5UeiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVHosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIEFkZCB0aGUgcG9seW5vbWlhbCBUMXogdG8gVDEgdG8gZ2V0IHRoZSBmaW5hbCBwb2x5bm9taWFsIFQxXG4gICAgICAgIHBvbHlub21pYWxzLlQuYWRkKHBvbHlub21pYWxzLlR6KTtcblxuICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgaWYgKHBvbHlub21pYWxzLlQuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplICogMyArIDYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlQgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gdCh4KSBoYXMgZGVncmVlIDNuICsgNSwgd2UgYXJlIGdvaW5nIHRvIHNwbGl0IHQoeCkgaW50byB0aHJlZSBzbWFsbGVyIHBvbHlub21pYWxzOlxuICAgICAgICAvLyBUMScgYW5kIFQyJyAgd2l0aCBhIGRlZ3JlZSA8IG4gYW5kIFQzJyB3aXRoIGEgZGVncmVlIG4rNVxuICAgICAgICAvLyBzdWNoIHRoYXQgdCh4KSA9IFQxJyhYKSArIFhebiBUMicoWCkgKyBYXnsybn0gVDMnKFgpXG4gICAgICAgIC8vIFRvIHJhbmRvbWl6ZSB0aGUgcGFydHMgd2UgdXNlIGJsaW5kaW5nIHNjYWxhcnMgYl8xMCBhbmQgYl8xMSBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgY2hhbmdlIHQoWCk6XG4gICAgICAgIC8vIFQxKFgpID0gVDEnKFgpICsgYl8xMCBYXm5cbiAgICAgICAgLy8gVDIoWCkgPSBUMicoWCkgLSBiXzEwICsgYl8xMSBYXm5cbiAgICAgICAgLy8gVDMoWCkgPSBUMycoWCkgLSBiXzExXG4gICAgICAgIC8vIHN1Y2ggdGhhdFxuICAgICAgICAvLyB0KFgpID0gVDEoWCkgKyBYXm4gVDIoWCkgKyBYXjJuIFQzKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBDb21wdXRpbmcgVDEsIFQyLCBUMyBwb2x5bm9taWFsc1wiKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKCh6a2V5LmRvbWFpblNpemUgKyAxKSAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5UMiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDEpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgIHBvbHlub21pYWxzLlQzID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcigoemtleS5kb21haW5TaXplICsgNikgKiBuOHIpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICBwb2x5bm9taWFscy5UMS5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2UoMCwgc0RvbWFpbiksIDApO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5jb2VmLnNldChwb2x5bm9taWFscy5ULmNvZWYuc2xpY2Uoc0RvbWFpbiwgc0RvbWFpbiAqIDIpLCAwKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDMuY29lZi5zZXQocG9seW5vbWlhbHMuVC5jb2VmLnNsaWNlKHNEb21haW4gKiAyLCBzRG9tYWluICogMyArIDYgKiBuOHIpLCAwKTtcblxuICAgICAgICAvLyBBZGQgYmxpbmRpbmcgc2NhbGFyIGJfMTAgYXMgYSBuZXcgY29lZmZpY2llbnQgblxuICAgICAgICBwb2x5bm9taWFscy5UMS5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzEwXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X21pZChYKVxuICAgICAgICAvLyBTdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMCB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfbWlkXG4gICAgICAgIGNvbnN0IGxvd2VzdE1pZCA9IEZyLnN1Yihwb2x5bm9taWFscy5UMi5nZXRDb2VmKDApLCBjaGFsbGVuZ2VzLmJbMTBdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuVDIuc2V0Q29lZigwLCBsb3dlc3RNaWQpO1xuICAgICAgICBwb2x5bm9taWFscy5UMi5zZXRDb2VmKHprZXkuZG9tYWluU2l6ZSwgY2hhbGxlbmdlcy5iWzExXSk7XG5cbiAgICAgICAgLy8gY29tcHV0ZSB0X2hpZ2goWClcbiAgICAgICAgLy9TdWJ0cmFjdCBibGluZGluZyBzY2FsYXIgYl8xMSB0byB0aGUgbG93ZXN0IGNvZWZmaWNpZW50IG9mIHRfaGlnaFxuICAgICAgICBjb25zdCBsb3dlc3RIaWdoID0gRnIuc3ViKHBvbHlub21pYWxzLlQzLmdldENvZWYoMCksIGNoYWxsZW5nZXMuYlsxMV0pO1xuICAgICAgICBwb2x5bm9taWFscy5UMy5zZXRDb2VmKDAsIGxvd2VzdEhpZ2gpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNCgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHhpXCIpO1xuXG4gICAgICAgIC8vIFNURVAgNC4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB4aSDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYWxwaGEpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIlQxXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJUMlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVDNcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBjaGFsbGVuZ2VzLnhpdyA9IEZyLm11bChjaGFsbGVuZ2VzLnhpLCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnhpOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueGksIDE2KSk7ICBcblxuICAgICAgICAvLyBGb3VydGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKCBhKHhpKSwgYih4aSksIGMoeGkpLCBzMSh4aSksIHMyKHhpKSwgeih4aXcpIClcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYVwiLCBwb2x5bm9taWFscy5BLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfYlwiLCBwb2x5bm9taWFscy5CLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfY1wiLCBwb2x5bm9taWFscy5DLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczFcIiwgcG9seW5vbWlhbHMuU2lnbWExLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfczJcIiwgcG9seW5vbWlhbHMuU2lnbWEyLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImV2YWxfendcIiwgcG9seW5vbWlhbHMuWi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHZcIik7XG4gICAgICAgIFxuICAgICAgICAvLyBTVEVQIDUuMSAtIENvbXB1dGUgZXZhbHVhdGlvbiBjaGFsbGVuZ2UgdiDiiIggRlxuICAgICAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMueGkpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9hXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfYlwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX2NcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiZXZhbF9zMVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJldmFsX3MyXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImV2YWxfendcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMudiA9IFtdO1xuICAgICAgICBjaGFsbGVuZ2VzLnZbMV0gPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCLCt8K3wrcgY2hhbGxlbmdlcy52OiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMudlsxXSwgMTYpKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMjsgaSA8IDY7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy52W2ldID0gRnIubXVsKGNoYWxsZW5nZXMudltpIC0gMV0sIGNoYWxsZW5nZXMudlsxXSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDUuMiBDb21wdXRlIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCByKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIGxpbmVhcmlzYXRpb24gcG9seW5vbWlhbCBSKFgpXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlUigpO1xuXG4gICAgICAgIC8vU1RFUCA1LjMgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIG9wZW5pbmcgcHJvb2YgcG9seW5vbWlhbCBXeGkoWCkgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgY29tcHV0ZVd4aSgpO1xuXG4gICAgICAgIC8vU1RFUCA1LjQgQ29tcHV0ZSBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCI+IENvbXB1dGluZyBvcGVuaW5nIHByb29mIHBvbHlub21pYWwgV3hpdyhYKSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb21wdXRlV3hpdygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIj4gQ29tcHV0aW5nIFd4aSwgV3hpdyBNU01cIik7XG4gICAgICAgIGxldCBjb21taXRXeGkgPSBhd2FpdCBwb2x5bm9taWFscy5XeGkubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIld4aVwiKTtcbiAgICAgICAgbGV0IGNvbW1pdFd4aXcgPSBhd2FpdCBwb2x5bm9taWFscy5XeGl3Lm11bHRpRXhwb25lbnRpYXRpb24oUFRhdSwgXCJXeGl3XCIpO1xuXG4gICAgICAgIC8vIEZpZnRoIG91dHB1dCBvZiB0aGUgcHJvdmVyIGlzIChbV3hpXV8xLCBbV3hpd11fMSlcbiAgICAgICAgcHJvb2YuYWRkUG9seW5vbWlhbChcIld4aVwiLCBjb21taXRXeGkpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiV3hpd1wiLCBjb21taXRXeGl3KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlUigpIHtcbiAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBcbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBwb2x5bm9taWFsc1xuICAgICAgICBwb2x5bm9taWFscy5RTCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RQyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUwuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUxfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUVIuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUVJfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU0uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU1fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU8uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUU9fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfUExfUUNfU0VDVElPTl1bMF0ucCk7ICAgXG4gICAgICAgIFxuICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IGNoYWxsZW5nZXMueGk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5wb3dlcjsgaSsrKSB7XG4gICAgICAgICAgICBjaGFsbGVuZ2VzLnhpbiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIH1cblxuICAgICAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKGNoYWxsZW5nZXMueGluLCBGci5vbmUpO1xuXG4gICAgICAgIGNvbnN0IEwgPSBbXTtcblxuICAgICAgICBjb25zdCBuID0gRnIuZSh6a2V5LmRvbWFpblNpemUpO1xuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gTWF0aC5tYXgoMSwgemtleS5uUHVibGljKTsgaSsrKSB7XG4gICAgICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2YWxfbDEgPSBGci5kaXYoXG4gICAgICAgICAgICBGci5zdWIoY2hhbGxlbmdlcy54aW4sIEZyLm9uZSksXG4gICAgICAgICAgICBGci5tdWwobiwgRnIuc3ViKGNoYWxsZW5nZXMueGksIEZyLm9uZSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKFwiTGFncmFuZ2UgRXZhbHVhdGlvbnM6IFwiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGk9MTsgaTxMLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKGBMJHtpfSh4aSk9YCArIEZyLnRvU3RyaW5nKExbaV0sIDE2KSk7ICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGV2YWxfcGkgPSBGci56ZXJvO1xuICAgICAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgICAgICBldmFsX3BpID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bCh3LCBMW2krMV0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5kZWJ1ZyhcIlBJOiBcIiArIEZyLnRvU3RyaW5nKGV2YWxfcGksIDE2KSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBjb25zdGFudCBwYXJ0cyBvZiBSKFgpXG4gICAgICAgIGNvbnN0IGNvZWZfYWIgPSBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2IpO1xuXG4gICAgICAgIGxldCBlMmEgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBiZXRheGkpO1xuICAgICAgICBlMmEgPSBGci5hZGQoZTJhLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTJiID0gcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9iO1xuICAgICAgICBlMmIgPSBGci5hZGQoZTJiLCBGci5tdWwoYmV0YXhpLCB6a2V5LmsxKSk7XG4gICAgICAgIGUyYiA9IEZyLmFkZChlMmIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgIGxldCBlMmMgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2M7XG4gICAgICAgIGUyYyA9IEZyLmFkZChlMmMsIEZyLm11bChiZXRheGksIHprZXkuazIpKTtcbiAgICAgICAgZTJjID0gRnIuYWRkKGUyYywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgY29uc3QgZTIgPSBGci5tdWwoRnIubXVsKEZyLm11bChlMmEsIGUyYiksIGUyYyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgICAgIGxldCBlM2EgPSBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2E7XG4gICAgICAgIGUzYSA9IEZyLmFkZChlM2EsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgbGV0IGUzYiA9IHByb29mLmV2YWx1YXRpb25zLmV2YWxfYjtcbiAgICAgICAgZTNiID0gRnIuYWRkKGUzYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9zMikpO1xuICAgICAgICBlM2IgPSBGci5hZGQoZTNiLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICBsZXQgZTMgPSBGci5tdWwoZTNhLCBlM2IpO1xuICAgICAgICBlMyA9IEZyLm11bChlMywgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF96dyk7XG4gICAgICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgICAgICBjb25zdCBlNCA9IEZyLm11bChldmFsX2wxLCBjaGFsbGVuZ2VzLmFscGhhMik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoKHprZXkuZG9tYWluU2l6ZSArIDYpICogbjhyKSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUU0sIGNvZWZfYWIpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RTCwgcHJvb2YuZXZhbHVhdGlvbnMuZXZhbF9hKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5hZGQocG9seW5vbWlhbHMuUVIsIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYik7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlFPLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX2MpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5RQyk7XG4gICAgICAgIHBvbHlub21pYWxzLlIuYWRkKHBvbHlub21pYWxzLlosIGUyKTtcbiAgICAgICAgcG9seW5vbWlhbHMuUi5zdWIocG9seW5vbWlhbHMuU2lnbWEzLCBGci5tdWwoZTMsIGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICBwb2x5bm9taWFscy5SLmFkZChwb2x5bm9taWFscy5aLCBlNCk7XG5cbiAgICAgICAgbGV0IHRtcCA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuVDMsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgICAgICB0bXAuYWRkKHBvbHlub21pYWxzLlQyLCBjaGFsbGVuZ2VzLnhpbik7XG4gICAgICAgIHRtcC5hZGQocG9seW5vbWlhbHMuVDEpO1xuICAgICAgICB0bXAubXVsU2NhbGFyKGNoYWxsZW5nZXMuemgpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLlIuc3ViKHRtcCk7XG5cbiAgICAgICAgbGV0IHIwID0gRnIuc3ViKGV2YWxfcGksIEZyLm11bChlMywgRnIuYWRkKHByb29mLmV2YWx1YXRpb25zLmV2YWxfYywgY2hhbGxlbmdlcy5nYW1tYSkpKTtcbiAgICAgICAgcjAgPSBGci5zdWIocjAsIGU0KTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcblxuICAgICAgICBwb2x5bm9taWFscy5SLmFkZFNjYWxhcihyMCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVd4aSgpIHtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluICsgNiAqIG44ciksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuUik7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuQSwgY2hhbGxlbmdlcy52WzFdKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmFkZChwb2x5bm9taWFscy5CLCBjaGFsbGVuZ2VzLnZbMl0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLkMsIGNoYWxsZW5nZXMudlszXSk7XG4gICAgICAgIHBvbHlub21pYWxzLld4aS5hZGQocG9seW5vbWlhbHMuU2lnbWExLCBjaGFsbGVuZ2VzLnZbNF0pO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuYWRkKHBvbHlub21pYWxzLlNpZ21hMiwgY2hhbGxlbmdlcy52WzVdKTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMV0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYSkpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbMl0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYikpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfYykpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGkuc3ViU2NhbGFyKEZyLm11bChjaGFsbGVuZ2VzLnZbNF0sIHByb29mLmV2YWx1YXRpb25zLmV2YWxfczEpKTtcbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLnN1YlNjYWxhcihGci5tdWwoY2hhbGxlbmdlcy52WzVdLCBwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3MyKSk7XG5cbiAgICAgICAgcG9seW5vbWlhbHMuV3hpLmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVd4aXcoKSB7XG4gICAgICAgIHBvbHlub21pYWxzLld4aXcgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLlosIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5XeGl3LnN1YlNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5ldmFsX3p3KTtcblxuICAgICAgICBwb2x5bm9taWFscy5XeGl3LmRpdkJ5WmVyb2ZpZXIoMSwgY2hhbGxlbmdlcy54aXcpO1xuICAgIH1cbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCBwbG9ua19wcm92ZSBmcm9tIFwiLi9wbG9ua19wcm92ZS5qc1wiO1xuaW1wb3J0IHd0bnNfY2FsY3VsYXRlIGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua0Z1bGxQcm92ZShfaW5wdXQsIHdhc21GaWxlLCB6a2V5RmlsZU5hbWUsIGxvZ2dlciwgd3Ruc0NhbGNPcHRpb25zLCBwcm92ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgaW5wdXQgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX2lucHV0KTtcblxuICAgIGNvbnN0IHd0bnM9IHtcbiAgICAgICAgdHlwZTogXCJtZW1cIlxuICAgIH07XG4gICAgYXdhaXQgd3Ruc19jYWxjdWxhdGUoaW5wdXQsIHdhc21GaWxlLCB3dG5zLCB3dG5zQ2FsY09wdGlvbnMpO1xuICAgIHJldHVybiBhd2FpdCBwbG9ua19wcm92ZSh6a2V5RmlsZU5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBraW1zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHBhcGVyOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE5Lzk1My5wZGYgKi9cbmltcG9ydCAqIGFzIGN1cnZlcyBmcm9tIFwiLi9jdXJ2ZXMuanNcIjtcbmltcG9ydCB7ICB1dGlscyB9ICAgZnJvbSBcImZmamF2YXNjcmlwdFwiO1xuY29uc3Qge3Vuc3RyaW5naWZ5QmlnSW50c30gPSB1dGlscztcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5cblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBwbG9ua1ZlcmlmeShfdmtfdmVyaWZpZXIsIF9wdWJsaWNTaWduYWxzLCBfcHJvb2YsIGxvZ2dlcikge1xuICAgIGxldCB2a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIF9wcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGxldCBwdWJsaWNTaWduYWxzID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWJsaWNTaWduYWxzKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgY3VydmVzLmdldEN1cnZlRnJvbU5hbWUodmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJQTE9OSyBWRVJJRklFUiBTVEFSVEVEXCIpO1xuXG4gICAgbGV0IHByb29mID0gZnJvbU9iamVjdFByb29mKGN1cnZlLF9wcm9vZik7XG4gICAgdmtfdmVyaWZpZXIgPSBmcm9tT2JqZWN0VmsoY3VydmUsIHZrX3ZlcmlmaWVyKTtcblxuICAgIGlmICghaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSkge1xuICAgICAgICBsb2dnZXIuZXJyb3IoXCJQcm9vZiBpcyBub3Qgd2VsbCBjb25zdHJ1Y3RlZFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIkludmFsaWQgbnVtYmVyIG9mIHB1YmxpYyBpbnB1dHNcIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2hhbGxlbmdlcyA9IGNhbGN1bGF0ZWNoYWxsZW5nZXMoY3VydmUsIHByb29mLCBwdWJsaWNTaWduYWxzLCB2a192ZXJpZmllcik7XG4gICAgXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJiZXRhOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSwgMTYpKTsgICAgXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcImdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEsIDE2KSk7ICAgIFxuICAgICAgICBsb2dnZXIuZGVidWcoXCJhbHBoYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmFscGhhLCAxNikpOyAgICBcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwieGk6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy54aSwgMTYpKTtcbiAgICAgICAgZm9yKGxldCBpPTE7aTw2O2krKykge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmRlYnVnKFwidjogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnZbaV0sIDE2KSk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwidTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnUsIDE2KSk7ICAgIFxuICAgIH1cbiAgICBjb25zdCBMID0gY2FsY3VsYXRlTGFncmFuZ2VFdmFsdWF0aW9ucyhjdXJ2ZSwgY2hhbGxlbmdlcywgdmtfdmVyaWZpZXIpO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgZm9yIChsZXQgaT0xOyBpPEwubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZyhgTCR7aX0oeGkpPWAgKyBGci50b1N0cmluZyhMW2ldLCAxNikpO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIGlmIChwdWJsaWNTaWduYWxzLmxlbmd0aCAhPSB2a192ZXJpZmllci5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIk51bWJlciBvZiBwdWJsaWMgc2lnbmFscyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZrXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcGkgPSBjYWxjdWxhdGVQSShjdXJ2ZSwgcHVibGljU2lnbmFscywgTCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJQSSh4aSk6IFwiICsgRnIudG9TdHJpbmcocGksIDE2KSk7XG4gICAgfVxuICAgIFxuICAgIGNvbnN0IHIwID0gY2FsY3VsYXRlUjAoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCBwaSwgTFsxXSk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJyMDogXCIgKyBGci50b1N0cmluZyhyMCwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCBEID0gY2FsY3VsYXRlRChjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBMWzFdKTtcbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcIkQ6IFwiICsgRzEudG9TdHJpbmcoRzEudG9BZmZpbmUoRCksIDE2KSk7XG4gICAgfVxuXG4gICAgY29uc3QgRiA9IGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2a192ZXJpZmllciwgRCk7XG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuZGVidWcoXCJGOiBcIiArIEcxLnRvU3RyaW5nKEcxLnRvQWZmaW5lKEYpLCAxNikpO1xuICAgIH1cblxuICAgIGNvbnN0IEUgPSBjYWxjdWxhdGVFKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcjApO1xuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFwiRTogXCIgKyBHMS50b1N0cmluZyhHMS50b0FmZmluZShFKSwgMTYpKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBpc1ZhbGlkUGFpcmluZyhjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHZrX3ZlcmlmaWVyLCBFLCBGKTtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgbG9nZ2VyLmluZm8oXCJPSyFcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIkludmFsaWQgUHJvb2ZcIik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbmZ1bmN0aW9uIGZyb21PYmplY3RQcm9vZihjdXJ2ZSwgcHJvb2YpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgY29uc3QgcmVzID0ge307XG4gICAgcmVzLkEgPSBHMS5mcm9tT2JqZWN0KHByb29mLkEpO1xuICAgIHJlcy5CID0gRzEuZnJvbU9iamVjdChwcm9vZi5CKTtcbiAgICByZXMuQyA9IEcxLmZyb21PYmplY3QocHJvb2YuQyk7XG4gICAgcmVzLlogPSBHMS5mcm9tT2JqZWN0KHByb29mLlopO1xuICAgIHJlcy5UMSA9IEcxLmZyb21PYmplY3QocHJvb2YuVDEpO1xuICAgIHJlcy5UMiA9IEcxLmZyb21PYmplY3QocHJvb2YuVDIpO1xuICAgIHJlcy5UMyA9IEcxLmZyb21PYmplY3QocHJvb2YuVDMpO1xuICAgIHJlcy5ldmFsX2EgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfYSk7XG4gICAgcmVzLmV2YWxfYiA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9iKTtcbiAgICByZXMuZXZhbF9jID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX2MpO1xuICAgIHJlcy5ldmFsX3p3ID0gRnIuZnJvbU9iamVjdChwcm9vZi5ldmFsX3p3KTtcbiAgICByZXMuZXZhbF9zMSA9IEZyLmZyb21PYmplY3QocHJvb2YuZXZhbF9zMSk7XG4gICAgcmVzLmV2YWxfczIgPSBGci5mcm9tT2JqZWN0KHByb29mLmV2YWxfczIpO1xuICAgIHJlcy5XeGkgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aSk7XG4gICAgcmVzLld4aXcgPSBHMS5mcm9tT2JqZWN0KHByb29mLld4aXcpO1xuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGZyb21PYmplY3RWayhjdXJ2ZSwgdmspIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEcyID0gY3VydmUuRzI7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCByZXMgPSB2aztcbiAgICByZXMuUW0gPSBHMS5mcm9tT2JqZWN0KHZrLlFtKTtcbiAgICByZXMuUWwgPSBHMS5mcm9tT2JqZWN0KHZrLlFsKTtcbiAgICByZXMuUXIgPSBHMS5mcm9tT2JqZWN0KHZrLlFyKTtcbiAgICByZXMuUW8gPSBHMS5mcm9tT2JqZWN0KHZrLlFvKTtcbiAgICByZXMuUWMgPSBHMS5mcm9tT2JqZWN0KHZrLlFjKTtcbiAgICByZXMuUzEgPSBHMS5mcm9tT2JqZWN0KHZrLlMxKTtcbiAgICByZXMuUzIgPSBHMS5mcm9tT2JqZWN0KHZrLlMyKTtcbiAgICByZXMuUzMgPSBHMS5mcm9tT2JqZWN0KHZrLlMzKTtcbiAgICByZXMuazEgPSBGci5mcm9tT2JqZWN0KHZrLmsxKTtcbiAgICByZXMuazIgPSBGci5mcm9tT2JqZWN0KHZrLmsyKTtcbiAgICByZXMuWF8yID0gRzIuZnJvbU9iamVjdCh2ay5YXzIpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gaXNXZWxsQ29uc3RydWN0ZWQoY3VydmUsIHByb29mKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQSkpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuQykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuWikpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuVDEpKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFHMS5pc1ZhbGlkKHByb29mLlQyKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5UMykpIHJldHVybiBmYWxzZTtcbiAgICBpZiAoIUcxLmlzVmFsaWQocHJvb2YuV3hpKSkgcmV0dXJuIGZhbHNlO1xuICAgIGlmICghRzEuaXNWYWxpZChwcm9vZi5XeGl3KSkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVjaGFsbGVuZ2VzKGN1cnZlLCBwcm9vZiwgcHVibGljU2lnbmFscywgdmspIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuICAgIGNvbnN0IHJlcyA9IHt9O1xuICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBuZXcgS2VjY2FrMjU2VHJhbnNjcmlwdChjdXJ2ZSk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMjogYmV0YSBhbmQgZ2FtbWFcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW0pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RbCk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlFyKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUW8pO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5RYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHZrLlMxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQodmsuUzIpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5TMyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoRnIuZShwdWJsaWNTaWduYWxzW2ldKSk7XG4gICAgfVxuXG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLkEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5CKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuQyk7XG5cbiAgICByZXMuYmV0YSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHJlcy5nYW1tYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgMzogYWxwaGFcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmJldGEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy5nYW1tYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlopO1xuICAgIHJlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICAvLyBDaGFsbGVuZ2Ugcm91bmQgNDogeGlcbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocmVzLmFscGhhKTtcbiAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuVDEpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5UMik7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLlQzKTtcbiAgICByZXMueGkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIFxuICAgIC8vIENoYWxsZW5nZSByb3VuZCA1OiB2XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHJlcy54aSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9hKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsX2IpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWxfYyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMSk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF9zMik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbF96dyk7XG4gICAgcmVzLnYgPSBbXTtcbiAgICByZXMudlsxXSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICBmb3IgKGxldCBpPTI7IGk8NjsgaSsrICkgcmVzLnZbaV0gPSBGci5tdWwocmVzLnZbaS0xXSwgcmVzLnZbMV0pO1xuXG4gICAgLy8gQ2hhbGxlbmdlOiB1XG4gICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGkpO1xuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5XeGl3KTtcbiAgICByZXMudSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2aykge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgeGluID0gY2hhbGxlbmdlcy54aTtcbiAgICBsZXQgZG9tYWluU2l6ZSA9IDE7XG4gICAgZm9yIChsZXQgaT0wOyBpPHZrLnBvd2VyOyBpKyspIHtcbiAgICAgICAgeGluID0gRnIuc3F1YXJlKHhpbik7XG4gICAgICAgIGRvbWFpblNpemUgKj0gMjtcbiAgICB9XG4gICAgY2hhbGxlbmdlcy54aW4gPSB4aW47XG5cbiAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKHhpbiwgRnIub25lKTtcblxuICAgIGNvbnN0IEwgPSBbXTtcblxuICAgIGNvbnN0IG4gPSBGci5lKGRvbWFpblNpemUpO1xuICAgIGxldCB3ID0gRnIub25lO1xuICAgIGZvciAobGV0IGk9MTsgaTw9TWF0aC5tYXgoMSwgdmsublB1YmxpYyk7IGkrKykge1xuICAgICAgICBMW2ldID0gRnIuZGl2KEZyLm11bCh3LCBjaGFsbGVuZ2VzLnpoKSwgRnIubXVsKG4sIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSkpO1xuICAgICAgICB3ID0gRnIubXVsKHcsIEZyLndbdmsucG93ZXJdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gTDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIEwpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IHBpID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpPTA7IGk8cHVibGljU2lnbmFscy5sZW5ndGg7IGkrKykgeyAgICAgICAgXG4gICAgICAgIGNvbnN0IHcgPSBGci5lKHB1YmxpY1NpZ25hbHNbaV0pO1xuICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKHcsIExbaSsxXSkpO1xuICAgIH1cbiAgICByZXR1cm4gcGk7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVIwKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgcGksIGwxKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IGUxID0gcGk7XG5cbiAgICBjb25zdCBlMiA9IEZyLm11bChsMSwgRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpKTtcblxuICAgIGxldCBlM2EgPSBGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSk7XG4gICAgZTNhID0gRnIuYWRkKGUzYSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBsZXQgZTNiID0gRnIuYWRkKHByb29mLmV2YWxfYiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUzYiA9IEZyLmFkZChlM2IsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzYyA9IEZyLmFkZChwcm9vZi5ldmFsX2MsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgbGV0IGUzID0gRnIubXVsKEZyLm11bChlM2EsIGUzYiksIGUzYyk7XG4gICAgZTMgPSBGci5tdWwoZTMsIHByb29mLmV2YWxfencpO1xuICAgIGUzID0gRnIubXVsKGUzLCBjaGFsbGVuZ2VzLmFscGhhKTtcblxuICAgIGNvbnN0IHIwID0gRnIuc3ViKEZyLnN1YihlMSwgZTIpLCBlMyk7XG5cbiAgICByZXR1cm4gcjA7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUQoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgbDEpIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgXG4gICAgbGV0IGQxID0gRzEudGltZXNGcih2ay5RbSwgRnIubXVsKHByb29mLmV2YWxfYSwgcHJvb2YuZXZhbF9iKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIEcxLnRpbWVzRnIodmsuUWwsIHByb29mLmV2YWxfYSkpO1xuICAgIGQxID0gRzEuYWRkKGQxLCBHMS50aW1lc0ZyKHZrLlFyLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBkMSA9IEcxLmFkZChkMSwgRzEudGltZXNGcih2ay5RbywgcHJvb2YuZXZhbF9jKSk7XG4gICAgZDEgPSBHMS5hZGQoZDEsIHZrLlFjKTtcblxuICAgIGNvbnN0IGJldGF4aSA9IEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGNoYWxsZW5nZXMueGkpO1xuXG4gICAgY29uc3QgZDJhMSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBiZXRheGkpLCBjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICBjb25zdCBkMmEyID0gRnIuYWRkKEZyLmFkZChwcm9vZi5ldmFsX2IsIEZyLm11bChiZXRheGksIHZrLmsxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQyYTMgPSBGci5hZGQoRnIuYWRkKHByb29mLmV2YWxfYywgRnIubXVsKGJldGF4aSwgdmsuazIpKSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICBjb25zdCBkMmEgPSBGci5tdWwoRnIubXVsKEZyLm11bChkMmExLCBkMmEyKSwgZDJhMyksIGNoYWxsZW5nZXMuYWxwaGEpO1xuXG4gICAgY29uc3QgZDJiID0gRnIubXVsKGwxLCBGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgY29uc3QgZDIgPSBHMS50aW1lc0ZyKHByb29mLlosIEZyLmFkZChGci5hZGQoZDJhLCBkMmIpLCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGNvbnN0IGQzYSA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9hLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MxKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYiA9IEZyLmFkZChGci5hZGQocHJvb2YuZXZhbF9iLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBwcm9vZi5ldmFsX3MyKSksIGNoYWxsZW5nZXMuZ2FtbWEpO1xuICAgIGNvbnN0IGQzYyA9IEZyLm11bChGci5tdWwoY2hhbGxlbmdlcy5hbHBoYSwgY2hhbGxlbmdlcy5iZXRhKSwgcHJvb2YuZXZhbF96dyk7XG5cbiAgICBjb25zdCBkMyA9IEcxLnRpbWVzRnIodmsuUzMsIEZyLm11bChGci5tdWwoZDNhLCBkM2IpLCBkM2MpKTtcbiAgICBcbiAgICBjb25zdCBkNGxvdyA9IHByb29mLlQxO1xuICAgIGNvbnN0IGQ0bWlkID0gRzEudGltZXNGcihwcm9vZi5UMiwgY2hhbGxlbmdlcy54aW4pO1xuICAgIGNvbnN0IGQ0aGlnaCA9IEcxLnRpbWVzRnIocHJvb2YuVDMsIEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpbikpO1xuICAgIGxldCBkNCA9IEcxLmFkZChkNGxvdywgRzEuYWRkKGQ0bWlkLCBkNGhpZ2gpKTtcbiAgICBkNCA9IEcxLnRpbWVzRnIoZDQsIGNoYWxsZW5nZXMuemgpO1xuXG4gICAgY29uc3QgZCA9IEcxLnN1YihHMS5zdWIoRzEuYWRkKGQxLCBkMiksIGQzKSwgZDQpO1xuXG4gICAgcmV0dXJuIGQ7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZUYoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRCkge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBsZXQgcmVzID0gRzEuYWRkKEQsIEcxLnRpbWVzRnIocHJvb2YuQSwgY2hhbGxlbmdlcy52WzFdKSk7XG4gICAgcmVzID0gRzEuYWRkKHJlcywgRzEudGltZXNGcihwcm9vZi5CLCBjaGFsbGVuZ2VzLnZbMl0pKTtcbiAgICByZXMgPSBHMS5hZGQocmVzLCBHMS50aW1lc0ZyKHByb29mLkMsIGNoYWxsZW5nZXMudlszXSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzEsIGNoYWxsZW5nZXMudls0XSkpO1xuICAgIHJlcyA9IEcxLmFkZChyZXMsIEcxLnRpbWVzRnIodmsuUzIsIGNoYWxsZW5nZXMudls1XSkpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlRShjdXJ2ZSwgcHJvb2YsIGNoYWxsZW5nZXMsIHIwKSB7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGUgPSBGci5hZGQoRnIubmVnKHIwKSwgRnIubXVsKGNoYWxsZW5nZXMudlsxXSwgcHJvb2YuZXZhbF9hKSk7XG4gICAgZSA9IEZyLmFkZChlLCBGci5tdWwoY2hhbGxlbmdlcy52WzJdLCBwcm9vZi5ldmFsX2IpKTtcbiAgICBlID0gRnIuYWRkKGUsIEZyLm11bChjaGFsbGVuZ2VzLnZbM10sIHByb29mLmV2YWxfYykpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls0XSwgcHJvb2YuZXZhbF9zMSkpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudls1XSwgcHJvb2YuZXZhbF9zMikpO1xuICAgIGUgPSBGci5hZGQoZSwgRnIubXVsKGNoYWxsZW5nZXMudSwgcHJvb2YuZXZhbF96dykpO1xuXG4gICAgY29uc3QgcmVzID0gRzEudGltZXNGcihHMS5vbmUsIGUpO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRSwgRikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBBMSA9IHByb29mLld4aTtcbiAgICBBMSA9IEcxLmFkZChBMSwgRzEudGltZXNGcihwcm9vZi5XeGl3LCBjaGFsbGVuZ2VzLnUpKTtcblxuICAgIGxldCBCMSA9IEcxLnRpbWVzRnIocHJvb2YuV3hpLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICBjb25zdCBzID0gRnIubXVsKEZyLm11bChjaGFsbGVuZ2VzLnUsIGNoYWxsZW5nZXMueGkpLCBGci53W3ZrLnBvd2VyXSk7XG4gICAgQjEgPSBHMS5hZGQoQjEsIEcxLnRpbWVzRnIocHJvb2YuV3hpdywgcykpO1xuICAgIEIxID0gRzEuYWRkKEIxLCBGKTtcbiAgICBCMSA9IEcxLnN1YihCMSwgRSk7XG5cbiAgICBjb25zdCByZXMgPSBhd2FpdCBjdXJ2ZS5wYWlyaW5nRXEoXG4gICAgICAgIEcxLm5lZyhBMSkgLCB2ay5YXzIsXG4gICAgICAgIEIxICwgY3VydmUuRzIub25lXG4gICAgKTtcblxuICAgIHJldHVybiByZXM7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIxIDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG5pbXBvcnQgeyBnZXRDdXJ2ZUZyb21OYW1lIH0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQgeyAgdXRpbHMgfSAgIGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5mdW5jdGlvbiBpMmhleChpKSB7XG4gICAgcmV0dXJuIChcIjBcIiArIGkudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7XG59XG5cbmZ1bmN0aW9uIHAyNTYobikge1xuICAgIGxldCBuc3RyID0gbi50b1N0cmluZygxNik7XG4gICAgd2hpbGUgKG5zdHIubGVuZ3RoIDwgNjQpIG5zdHIgPSBcIjBcIituc3RyO1xuICAgIG5zdHIgPSBgXCIweCR7bnN0cn1cImA7XG4gICAgcmV0dXJuIG5zdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIHBsb25rRXhwb3J0U29saWRpdHlDYWxsRGF0YShfcHJvb2YsIF9wdWIpIHtcbiAgICBjb25zdCBwcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuICAgIGNvbnN0IHB1YiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHViKTtcblxuICAgIGNvbnN0IGN1cnZlID0gYXdhaXQgZ2V0Q3VydmVGcm9tTmFtZShwcm9vZi5jdXJ2ZSk7XG4gICAgY29uc3QgRzEgPSBjdXJ2ZS5HMTtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IGlucHV0cyA9IFwiXCI7XG4gICAgZm9yIChsZXQgaT0wOyBpPHB1Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5wdXRzICE9IFwiXCIpIGlucHV0cyA9IGlucHV0cyArIFwiLFwiO1xuICAgICAgICBpbnB1dHMgPSBpbnB1dHMgKyBwMjU2KHB1YltpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGBbJHtwMjU2KHByb29mLkFbMF0pfSwgJHtwMjU2KHByb29mLkFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLkJbMF0pfSwke3AyNTYocHJvb2YuQlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuQ1swXSl9LCR7cDI1Nihwcm9vZi5DWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5aWzBdKX0sJHtwMjU2KHByb29mLlpbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLlQxWzBdKX0sJHtwMjU2KHByb29mLlQxWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5UMlswXSl9LCR7cDI1Nihwcm9vZi5UMlsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuVDNbMF0pfSwke3AyNTYocHJvb2YuVDNbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aVswXSl9LCR7cDI1Nihwcm9vZi5XeGlbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLld4aXdbMF0pfSwke3AyNTYocHJvb2YuV3hpd1sxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbF9hKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9iKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9jKX0sYCArIFxuICAgIGAke3AyNTYocHJvb2YuZXZhbF9zMSl9LGAgKyBcbiAgICBgJHtwMjU2KHByb29mLmV2YWxfczIpfSxgICsgXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsX3p3KX1dYCArIFxuICAgIGBbJHtpbnB1dHN9XWA7XG59XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDE4IDBLSU1TIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtKUy5cblxuICAgIHNuYXJrSlMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0XG4gICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya0pTIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUXG4gICAgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljXG4gICAgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAgICBhbG9uZyB3aXRoIHNuYXJrSlMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBaS0VZIGNvbnN0YW50c1xuZXhwb3J0IHtkZWZhdWx0IGFzIHNldHVwfSBmcm9tIFwiLi9wbG9ua19zZXR1cC5qc1wiO1xuZXhwb3J0IHtkZWZhdWx0IGFzIGZ1bGxQcm92ZX0gZnJvbSBcIi4vcGxvbmtfZnVsbHByb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgcHJvdmV9IGZyb20gXCIuL3Bsb25rX3Byb3ZlLmpzXCI7XG5leHBvcnQge2RlZmF1bHQgYXMgdmVyaWZ5fSBmcm9tIFwiLi9wbG9ua192ZXJpZnkuanNcIjtcbmV4cG9ydCB7ZGVmYXVsdCBhcyBleHBvcnRTb2xpZGl0eUNhbGxEYXRhfSBmcm9tIFwiLi9wbG9ua19leHBvcnRzb2xpZGl0eWNhbGxkYXRhLmpzXCI7XG4iLCIvKlxuICAgIENvcHlyaWdodCAyMDIyIGlkZW4zIGFzc29jaWF0aW9uLlxuXG4gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc25hcmtqcy5cblxuICAgIHNuYXJranMgaXMgYSBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlXG4gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pXG4gICAgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgICBzbmFya2pzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZXG4gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yXG4gICAgbW9yZSBkZXRhaWxzLlxuXG4gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aFxuICAgIHNuYXJranMuIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4qL1xuXG4vLyBXZSBleHBvcnQgdG8gemtleSB0aGUgc2lnbmFscyBhbmQgdmFsdWVzIG9mIHRoZSBhLCBiLCBjLCBxbCwgcXIsIHFtLCBxbyBhbmQgcWNcblxuLy8gYSwgYiBhbmQgYyBhcmUgc2lnbmFscyBpZCAoMzItYml0IGludGVnZXJzKVxuLy8gcWwsIHFyLCBxbSwgcW8gYW5kIHFjIGFyZSBmaWVsZCB2YWx1ZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludChzaWduYWwxLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgMCwgMCwgRnIub25lLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvLCBGci56ZXJvXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZGbG9ua0FkZGl0aW9uQ29uc3RyYWludChzaWduYWwxLCBzaWduYWwyLCBzaWduYWxPdXQsIHFsLCBxciwgcW0sIHFvLCBxYykge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RkZsb25rTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNpZ25hbDEsIHNpZ25hbDIsIHNpZ25hbE91dCwgcWwsIHFyLCBxbSwgcW8sIHFjLCBGcikge1xuICAgIHJldHVybiBbc2lnbmFsMSwgc2lnbmFsMiwgc2lnbmFsT3V0LCBxbCwgcXIsIHFtLCBxbywgcWNdO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuY29uc3QgTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFID0gMDtcbmNvbnN0IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCA9IDE7XG5jb25zdCBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEUgPSAyO1xuXG5leHBvcnQgY2xhc3MgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3Ige1xuICAgIGNvbnN0cnVjdG9yKEZyLCBmbkdldENvbnN0YW50Q29uc3RyYWludCwgZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQsIGZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50LCBsb2dnZXIpIHtcbiAgICAgICAgdGhpcy5GciA9IEZyO1xuICAgICAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICAgICAgdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludCA9IGZuR2V0QWRkaXRpb25Db25zdHJhaW50O1xuICAgICAgICB0aGlzLmZuR2V0TXVsdGlwbGljYXRpb25Db25zdHJhaW50ID0gZm5HZXRNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQ7XG4gICAgfVxuXG4gICAgcHJvY2Vzc1IxY3NDb25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKSB7XG4gICAgICAgIHRoaXMubm9ybWFsaXplTGluZWFyQ29tYmluYXRpb24obGNBKTtcbiAgICAgICAgdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihsY0IpO1xuICAgICAgICB0aGlzLm5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxjQyk7XG5cbiAgICAgICAgY29uc3QgbGN0QSA9IHRoaXMuZ2V0TGluZWFyQ29tYmluYXRpb25UeXBlKGxjQSk7XG4gICAgICAgIGNvbnN0IGxjdEIgPSB0aGlzLmdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsY0IpO1xuXG4gICAgICAgIGlmICgobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSB8fCAobGN0QiA9PT0gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQyk7XG4gICAgICAgIH0gZWxzZSBpZiAobGN0QSA9PT0gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UKSB7XG4gICAgICAgICAgICBjb25zdCBsY0NDID0gdGhpcy5qb2luTGluZWFyQ29tYmluYXRpb25zKGxjQiwgbGNDLCBsY0FbMF0pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucHJvY2Vzc1IxY3NBZGRpdGlvbkNvbnN0cmFpbnQoc2V0dGluZ3MsIGxjQ0MpO1xuICAgICAgICB9IGVsc2UgaWYgKGxjdEIgPT09IExJTkVBUl9DT01CSU5BVElPTl9DT05TVEFOVCkge1xuICAgICAgICAgICAgY29uc3QgbGNDQyA9IHRoaXMuam9pbkxpbmVhckNvbWJpbmF0aW9ucyhsY0EsIGxjQywgbGNCWzBdKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzQWRkaXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0NDKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NSMWNzTXVsdGlwbGljYXRpb25Db25zdHJhaW50KHNldHRpbmdzLCBsY0EsIGxjQiwgbGNDKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldExpbmVhckNvbWJpbmF0aW9uVHlwZShsaW5Db20pIHtcbiAgICAgICAgLy8gbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGNvbnN0IHNpZ25hbElkcyA9IE9iamVjdC5rZXlzKGxpbkNvbSk7XG4gICAgICAgIC8vIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmFsSWRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vICAgICBpZiAoc2lnbmFsSWRzW2ldID09PSBcIjBcIikge1xuICAgICAgICAvLyAgICAgICAgIGsgPSB0aGlzLkZyLmFkZChrLCBsaW5Db21bc2lnbmFsSWRzW2ldXSk7XG4gICAgICAgIC8vICAgICB9IGVsc2Uge1xuICAgICAgICAvLyAgICAgICAgIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fVkFSSUFCTEU7XG4gICAgICAgIC8vICAgICB9XG4gICAgICAgIC8vIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gaWYgKCF0aGlzLkZyLmVxKGssIHRoaXMuRnIuemVybykpIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fQ09OU1RBTlQ7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIHJldHVybiBMSU5FQVJfQ09NQklOQVRJT05fTlVMTEFCTEU7XG5cbiAgICAgICAgbGV0IGsgPSB0aGlzLkZyLnplcm87XG4gICAgICAgIGxldCBuID0gMDtcbiAgICAgICAgY29uc3Qgc3MgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGluQ29tW3NzW2ldXSA9PSAwbikge1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBsaW5Db21bc3NbaV1dO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChzc1tpXSA9PSAwKSB7XG4gICAgICAgICAgICAgICAgayA9IHRoaXMuRnIuYWRkKGssIGxpbkNvbVtzc1tpXV0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4gPiAwKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX1ZBUklBQkxFO1xuICAgICAgICBpZiAoIXRoaXMuRnIuaXNaZXJvKGspKSByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX0NPTlNUQU5UO1xuICAgICAgICByZXR1cm4gTElORUFSX0NPTUJJTkFUSU9OX05VTExBQkxFO1xuICAgIH1cblxuICAgIG5vcm1hbGl6ZUxpbmVhckNvbWJpbmF0aW9uKGxpbkNvbSkge1xuICAgICAgICBjb25zdCBzaWduYWxJZHMgPSBPYmplY3Qua2V5cyhsaW5Db20pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hbElkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuRnIuaXNaZXJvKGxpbkNvbVtzaWduYWxJZHNbaV1dKSkgZGVsZXRlIGxpbkNvbVtzaWduYWxJZHNbaV1dO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGxpbkNvbTtcbiAgICB9XG5cbiAgICBqb2luTGluZWFyQ29tYmluYXRpb25zKGxpbkNvbTEsIGxpbkNvbTIsIGspIHtcbiAgICAgICAgY29uc3QgcmVzID0ge307XG5cbiAgICAgICAgLy8gZm9yIChsZXQgcyBpbiBsaW5Db20xKSB7XG4gICAgICAgIC8vICAgICBjb25zdCB2YWwgPSB0aGlzLkZyLm11bChrLCBsaW5Db20xW3NdKTtcbiAgICAgICAgLy8gICAgIHJlc1tzXSA9ICEocyBpbiByZXMpID8gdmFsIDogdGhpcy5Gci5hZGQodmFsLCByZXNbc10pO1xuICAgICAgICAvLyB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAvLyAgICAgY29uc3QgdmFsID0gdGhpcy5Gci5tdWwoaywgbGluQ29tMltzXSk7XG4gICAgICAgIC8vICAgICByZXNbc10gPSAhKHMgaW4gcmVzKSA/IHZhbCA6IHRoaXMuRnIuYWRkKHZhbCwgcmVzW3NdKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNbc10gPSB0aGlzLkZyLmFkZChyZXNbc10sIHRoaXMuRnIubXVsKGssIGxpbkNvbTFbc10pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IHMgaW4gbGluQ29tMikge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNbc10gPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IGxpbkNvbTJbc107XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc1tzXSA9IHRoaXMuRnIuYWRkKHJlc1tzXSwgbGluQ29tMltzXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVMaW5lYXJDb21iaW5hdGlvbihyZXMpO1xuICAgIH1cblxuICAgIHJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIG1heEMpIHtcbiAgICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAgICAgazogdGhpcy5Gci56ZXJvLFxuICAgICAgICAgICAgc2lnbmFsczogW10sXG4gICAgICAgICAgICBjb2VmczogW11cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgY3MgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBzaWduYWxJZCBpbiBsaW5Db20pIHtcbiAgICAgICAgICAgIGlmIChzaWduYWxJZCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgcmVzLmsgPSB0aGlzLkZyLmFkZChyZXMuaywgbGluQ29tW3NpZ25hbElkXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGxpbkNvbVtzaWduYWxJZF0gIT0gMG4pIHtcbiAgICAgICAgICAgICAgICBjcy5wdXNoKFtOdW1iZXIoc2lnbmFsSWQpLCBsaW5Db21bc2lnbmFsSWRdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAoY3MubGVuZ3RoID4gbWF4Qykge1xuICAgICAgICAgICAgY29uc3QgYzEgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3QgYzIgPSBjcy5zaGlmdCgpO1xuICAgICAgICAgICAgY29uc3Qgc28gPSBzZXR0aW5ncy5uVmFycysrO1xuXG4gICAgICAgICAgICBjb25zdCBjb25zdHJhaW50cyA9IHRoaXMuZm5HZXRBZGRpdGlvbkNvbnN0cmFpbnQoXG4gICAgICAgICAgICAgICAgYzFbMF0sIGMyWzBdLCBzbyxcbiAgICAgICAgICAgICAgICB0aGlzLkZyLm5lZyhjMVsxXSksIHRoaXMuRnIubmVnKGMyWzFdKSwgdGhpcy5Gci56ZXJvLCB0aGlzLkZyLm9uZSwgdGhpcy5Gci56ZXJvKTtcblxuICAgICAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG4gICAgICAgICAgICBhZGRpdGlvbnNBcnIucHVzaChbYzFbMF0sIGMyWzBdLCBjMVsxXSwgYzJbMV1dKTtcblxuICAgICAgICAgICAgY3MucHVzaChbc28sIHRoaXMuRnIub25lXSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICByZXMuc2lnbmFsc1tpXSA9IGNzW2ldWzBdO1xuICAgICAgICAgICAgcmVzLmNvZWZzW2ldID0gY3NbaV1bMV07XG4gICAgICAgIH1cblxuICAgICAgICB3aGlsZSAocmVzLmNvZWZzLmxlbmd0aCA8IG1heEMpIHtcbiAgICAgICAgICAgIHJlcy5zaWduYWxzLnB1c2goMCk7XG4gICAgICAgICAgICByZXMuY29lZnMucHVzaCh0aGlzLkZyLnplcm8pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlcztcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc0FkZGl0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGluQ29tKSB7XG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzQXJyID0gW107XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0FyciA9IFtdO1xuXG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsaW5Db20sIDMpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldEFkZGl0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEMuc2lnbmFsc1swXSwgQy5zaWduYWxzWzFdLCBDLnNpZ25hbHNbMl0sXG4gICAgICAgICAgICBDLmNvZWZzWzBdLCBDLmNvZWZzWzFdLCB0aGlzLkZyLnplcm8sIEMuY29lZnNbMl0sIEMuayk7XG5cbiAgICAgICAgY29uc3RyYWludHNBcnIucHVzaChjb25zdHJhaW50cyk7XG5cbiAgICAgICAgcmV0dXJuIFtjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyXTtcbiAgICB9XG5cbiAgICBwcm9jZXNzUjFjc011bHRpcGxpY2F0aW9uQ29uc3RyYWludChzZXR0aW5ncywgbGNBLCBsY0IsIGxjQykge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50c0FyciA9IFtdO1xuICAgICAgICBjb25zdCBhZGRpdGlvbnNBcnIgPSBbXTtcblxuICAgICAgICBjb25zdCBBID0gdGhpcy5yZWR1Y2VDb2VmcyhzZXR0aW5ncywgY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0FyciwgbGNBLCAxKTtcbiAgICAgICAgY29uc3QgQiA9IHRoaXMucmVkdWNlQ29lZnMoc2V0dGluZ3MsIGNvbnN0cmFpbnRzQXJyLCBhZGRpdGlvbnNBcnIsIGxjQiwgMSk7XG4gICAgICAgIGNvbnN0IEMgPSB0aGlzLnJlZHVjZUNvZWZzKHNldHRpbmdzLCBjb25zdHJhaW50c0FyciwgYWRkaXRpb25zQXJyLCBsY0MsIDEpO1xuXG4gICAgICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gdGhpcy5mbkdldE11bHRpcGxpY2F0aW9uQ29uc3RyYWludChcbiAgICAgICAgICAgIEEuc2lnbmFsc1swXSwgQi5zaWduYWxzWzBdLCBDLnNpZ25hbHNbMF0sXG4gICAgICAgICAgICB0aGlzLkZyLm11bChBLmNvZWZzWzBdLCBCLmspLFxuICAgICAgICAgICAgdGhpcy5Gci5tdWwoQS5rLCBCLmNvZWZzWzBdKSxcbiAgICAgICAgICAgIHRoaXMuRnIubXVsKEEuY29lZnNbMF0sIEIuY29lZnNbMF0pLFxuICAgICAgICAgICAgdGhpcy5Gci5uZWcoQy5jb2Vmc1swXSksXG4gICAgICAgICAgICB0aGlzLkZyLnN1Yih0aGlzLkZyLm11bChBLmssIEIuayksIEMuaykpO1xuXG4gICAgICAgIGNvbnN0cmFpbnRzQXJyLnB1c2goY29uc3RyYWludHMpO1xuXG4gICAgICAgIHJldHVybiBbY29uc3RyYWludHNBcnIsIGFkZGl0aW9uc0Fycl07XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbi8vIENQb2x5bm9taWFsIGlzIGEgQ29tYmluZWQgUG9seW5vbWlhbCBvZiB0aGUgdHlwZSA6XG4vLyBDUG9seW5vbWlhbChYKSA6PSBQXzAoWF5uKSArIFjCt1BfMShYXm4pICsgLi4uICsgWF57bi0xfcK3UF97bi0xfShYXm4pXG4vLyBXZSBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYXZvaWQgdGhlIGFsbG9jYXRpb24gb2YgYSBiaWcgbWVtb3J5IGJ1ZmZlclxuLy8gZm9yIHRoZSBjb2VmZmljaWVudHMgYmVjYXVzZSBpbiBzb21lIGNhc2VzIGEgYmlnIG51bWJlciBvZiB0aGUgY29lZmZpY2llbnRzIGFyZSB6ZXJvXG5cbmltcG9ydCB7QmlnQnVmZmVyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQge2xvZzJ9IGZyb20gXCIuLi9taXNjLmpzXCI7XG5pbXBvcnQge1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwuanNcIjtcblxuZXhwb3J0IGNsYXNzIENQb2x5bm9taWFsIHtcbiAgICBjb25zdHJ1Y3RvcihuLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgICAgIHRoaXMubiA9IG47XG4gICAgICAgIHRoaXMucG9seW5vbWlhbHMgPSBBcnJheShuKS5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgICAgICAgdGhpcy5GciA9IGN1cnZlLkZyO1xuICAgICAgICB0aGlzLkcxID0gY3VydmUuRzE7XG4gICAgICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyO1xuICAgIH1cblxuICAgIGFkZFBvbHlub21pYWwocG9zaXRpb24sIHBvbHlub21pYWwpIHtcbiAgICAgICAgaWYgKHBvc2l0aW9uID4gdGhpcy5uIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ1BvbHlub21pYWw6YWRkUG9seW5vbWlhbCwgY2Fubm90IGFkZCBhIHBvbHlub21pYWwgdG8gYSBwb3NpdGlvbiBncmVhdGVyIHRoYW4gbi0xXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5wb2x5bm9taWFsc1twb3NpdGlvbl0gPSBwb2x5bm9taWFsO1xuICAgIH1cblxuICAgIGRlZ3JlZSgpIHtcbiAgICAgICAgbGV0IGRlZ3JlZXMgPSB0aGlzLnBvbHlub21pYWxzLm1hcChcbiAgICAgICAgICAgIChwb2x5bm9taWFsLCBpbmRleCkgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkgKiB0aGlzLm4gKyBpbmRleCk7XG4gICAgICAgIHJldHVybiBNYXRoLm1heCguLi5kZWdyZWVzKTtcbiAgICB9XG5cbiAgICBnZXRQb2x5bm9taWFsKCkge1xuICAgICAgICBsZXQgZGVncmVlcyA9IHRoaXMucG9seW5vbWlhbHMubWFwKHBvbHlub21pYWwgPT4gcG9seW5vbWlhbCA9PT0gdW5kZWZpbmVkID8gMCA6IHBvbHlub21pYWwuZGVncmVlKCkpO1xuICAgICAgICBjb25zdCBtYXhEZWdyZWUgPSB0aGlzLmRlZ3JlZSgpO1xuICAgICAgICBjb25zdCBsZW5ndGhCdWZmZXIgPSAyICoqIChsb2cyKG1heERlZ3JlZSAtIDEpICsgMSk7XG4gICAgICAgIGNvbnN0IHNGciA9IHRoaXMuRnIubjg7XG5cbiAgICAgICAgbGV0IHBvbHlub21pYWwgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKGxlbmd0aEJ1ZmZlciAqIHNGciksIHRoaXMuY3VydmUsIHRoaXMubG9nZ2VyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1heERlZ3JlZTsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBpX244ID0gaSAqIHNGcjtcbiAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaV9uOCAqIHRoaXMubjtcblxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLm47IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBvbHlub21pYWxzW2pdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gZGVncmVlc1tqXSkgcG9seW5vbWlhbC5jb2VmLnNldCh0aGlzLnBvbHlub21pYWxzW2pdLmNvZWYuc2xpY2UoaV9uOCwgaV9uOCArIHNGciksIGlfc0ZyICsgaiAqIHNGcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBvbHlub21pYWw7XG4gICAgfVxuXG4gICAgYXN5bmMgbXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBuYW1lKSB7XG4gICAgICAgIGxldCBwb2x5bm9taWFsID0gdGhpcy5nZXRQb2x5bm9taWFsKCk7XG4gICAgICAgIGNvbnN0IG4gPSBwb2x5bm9taWFsLmNvZWYuYnl0ZUxlbmd0aCAvIHRoaXMuRnIubjg7XG4gICAgICAgIGNvbnN0IFBUYXVOID0gUFRhdS5zbGljZSgwLCBuICogdGhpcy5HMS5GLm44ICogMik7XG4gICAgICAgIGNvbnN0IGJtID0gYXdhaXQgdGhpcy5Gci5iYXRjaEZyb21Nb250Z29tZXJ5KHBvbHlub21pYWwuY29lZik7XG4gICAgICAgIGxldCByZXMgPSBhd2FpdCB0aGlzLkcxLm11bHRpRXhwQWZmaW5lKFBUYXVOLCBibSwgdGhpcy5sb2dnZXIsIG5hbWUpO1xuICAgICAgICByZXMgPSB0aGlzLkcxLnRvQWZmaW5lKHJlcyk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufSIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7cmVhZFIxY3NGZH0gZnJvbSBcInIxY3NmaWxlXCI7XG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi9wb3dlcnNvZnRhdV91dGlscy5qc1wiO1xuaW1wb3J0IHtjcmVhdGVCaW5GaWxlLCBlbmRXcml0ZVNlY3Rpb24sIHJlYWRCaW5GaWxlLCBzdGFydFdyaXRlU2VjdGlvbiwgd3JpdGVCaWdJbnQsfSBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0IHtsb2cyfSBmcm9tIFwiLi9taXNjLmpzXCI7XG5pbXBvcnQge0JpZ0J1ZmZlciwgU2NhbGFyfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgQmlnQXJyYXkgZnJvbSBcIi4vYmlnYXJyYXkuanNcIjtcbmltcG9ydCB7XG4gICAgWktFWV9GRl9IRUFERVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OLFxuICAgIFpLRVlfRkZfQV9NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DX01BUF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FSX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RTV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUU9fU0VDVElPTixcbiAgICBaS0VZX0ZGX1FDX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTFfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMl9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEzX1NFQ1RJT04sXG4gICAgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfUFRBVV9TRUNUSU9OLFxuICAgIEZGX1RfUE9MX0RFR19NSU4sXG4gICAgWktFWV9GRl9OU0VDVElPTlMsXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxufSBmcm9tIFwiLi9mZmxvbmtfY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQge0ZGTE9OS19QUk9UT0NPTF9JRCwgSEVBREVSX1pLRVlfU0VDVElPTn0gZnJvbSBcIi4vemtleV9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7XG4gICAgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LFxuICAgIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCxcbiAgICBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnRcbn0gZnJvbSBcIi4vcGxvbmtfZXF1YXRpb24uanNcIjtcbmltcG9ydCB7cjFjc0NvbnN0cmFpbnRQcm9jZXNzb3J9IGZyb20gXCIuL3IxY3NfY29uc3RyYWludF9wcm9jZXNzb3IuanNcIjtcbmltcG9ydCB7UG9seW5vbWlhbH0gZnJvbSBcIi4vcG9seW5vbWlhbC9wb2x5bm9taWFsLmpzXCI7XG5pbXBvcnQgKiBhcyBiaW5GaWxlVXRpbHMgZnJvbSBcIkBpZGVuMy9iaW5maWxldXRpbHNcIjtcbmltcG9ydCB7RXZhbHVhdGlvbnN9IGZyb20gXCIuL3BvbHlub21pYWwvZXZhbHVhdGlvbnMuanNcIjtcbmltcG9ydCB7Q1BvbHlub21pYWx9IGZyb20gXCIuL3BvbHlub21pYWwvY3BvbHlub21pYWwuanNcIjtcblxuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtTZXR1cChyMWNzRmlsZW5hbWUsIHB0YXVGaWxlbmFtZSwgemtleUZpbGVuYW1lLCBsb2dnZXIpIHtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIkZGTE9OSyBTRVRVUCBTVEFSVEVEXCIpO1xuXG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJlYWQgUFRhdSBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgUFRhdSBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRQVGF1LCBzZWN0aW9uczogcFRhdVNlY3Rpb25zfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHB0YXVGaWxlbmFtZSwgXCJwdGF1XCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGlmICghcFRhdVNlY3Rpb25zWzEyXSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDEyIG1pc3NpbmcuXCIpO1xuICAgIH1cblxuICAgIC8vIEdldCBjdXJ2ZSBkZWZpbmVkIGluIFBUYXVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gR2V0dGluZyBjdXJ2ZSBmcm9tIFBUYXUgc2V0dGluZ3NcIik7XG4gICAgY29uc3Qge2N1cnZlfSA9IGF3YWl0IHV0aWxzLnJlYWRQVGF1SGVhZGVyKGZkUFRhdSwgcFRhdVNlY3Rpb25zKTtcblxuICAgIC8vIFJlYWQgcjFjcyBmaWxlXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFJlYWRpbmcgcjFjcyBmaWxlXCIpO1xuICAgIGNvbnN0IHtmZDogZmRSMWNzLCBzZWN0aW9uczogc2VjdGlvbnNSMWNzfSA9IGF3YWl0IHJlYWRCaW5GaWxlKHIxY3NGaWxlbmFtZSwgXCJyMWNzXCIsIDEsIDEgPDwgMjIsIDEgPDwgMjQpO1xuICAgIGNvbnN0IHIxY3MgPSBhd2FpdCByZWFkUjFjc0ZkKGZkUjFjcywgc2VjdGlvbnNSMWNzLCB7bG9hZENvbnN0cmFpbnRzOiBmYWxzZSwgbG9hZEN1c3RvbUdhdGVzOiB0cnVlfSk7XG5cbiAgICAvLyBQb3RlbnRpYWwgZXJyb3IgY2hlY2tzXG4gICAgaWYgKHIxY3MucHJpbWUgIT09IGN1cnZlLnIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicjFjcyBjdXJ2ZSBkb2VzIG5vdCBtYXRjaCBwb3dlcnMgb2YgdGF1IGNlcmVtb255IGN1cnZlXCIpO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemF0aW9uc1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBzRnIgPSBjdXJ2ZS5Gci5uODtcbiAgICBjb25zdCBzRzEgPSBjdXJ2ZS5HMS5GLm44ICogMjtcbiAgICBjb25zdCBzRzIgPSBjdXJ2ZS5HMi5GLm44ICogMjtcblxuICAgIGxldCBwb2x5bm9taWFscyA9IHt9O1xuICAgIGxldCBldmFsdWF0aW9ucyA9IHt9O1xuICAgIGxldCBQVGF1O1xuXG4gICAgbGV0IHNldHRpbmdzID0ge1xuICAgICAgICBuVmFyczogcjFjcy5uVmFycyxcbiAgICAgICAgblB1YmxpYzogcjFjcy5uT3V0cHV0cyArIHIxY3MublB1YklucHV0c1xuICAgIH07XG5cbiAgICBjb25zdCBwbG9ua0NvbnN0cmFpbnRzID0gbmV3IEJpZ0FycmF5KCk7XG4gICAgbGV0IHBsb25rQWRkaXRpb25zID0gbmV3IEJpZ0FycmF5KCk7XG5cbiAgICAvLyBQcm9jZXNzIGNvbnN0cmFpbnRzIGluc2lkZSByMWNzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFByb2Nlc3NpbmcgRkZsb25rIGNvbnN0cmFpbnRzXCIpO1xuICAgIGF3YWl0IGNvbXB1dGVGRkNvbnN0cmFpbnRzKGN1cnZlLkZyLCByMWNzLCBsb2dnZXIpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBBcyB0aGUgdCBwb2x5bm9taWFsIGlzIG4rNSB3ZSBuZWVkIGF0IGxlYXN0IGEgcG93ZXIgb2YgNFxuICAgIC8vVE9ETyBjaGVjayEhISFcbiAgICAvLyBOT1RFIDogcGxvbmtDb25zdHJhaW50cyArIDIgPSAjY29uc3RyYWludHMgKyBibGluZGluZyBjb2VmZmljaWVudHMgZm9yIGVhY2ggd2lyZSBwb2x5bm9taWFsXG4gICAgc2V0dGluZ3MuY2lyUG93ZXIgPSBNYXRoLm1heChGRl9UX1BPTF9ERUdfTUlOLCBsb2cyKChwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCArIDIpIC0gMSkgKyAxKTtcbiAgICBzZXR0aW5ncy5kb21haW5TaXplID0gMiAqKiBzZXR0aW5ncy5jaXJQb3dlcjtcblxuICAgIGlmIChwVGF1U2VjdGlvbnNbMl1bMF0uc2l6ZSA8IChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGlzIGNpcmN1aXQgc2l6ZS4gU2VjdGlvbiAyIHRvbyBzbWFsbC5cIik7XG4gICAgfVxuICAgIGlmIChwVGF1U2VjdGlvbnNbM11bMF0uc2l6ZSA8IHNHMikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQb3dlcnMgb2YgVGF1IGlzIG5vdCB3ZWxsIHByZXBhcmVkLiBTZWN0aW9uIDMgdG9vIHNtYWxsLlwiKTtcbiAgICB9XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIEZGTE9OSyBTRVRVUCBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3NldHRpbmdzLmNpclBvd2VyfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBEb21haW4gc2l6ZTogICAke3NldHRpbmdzLmRvbWFpblNpemV9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFZhcnM6ICAgICAgICAgICR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7c2V0dGluZ3MublB1YmxpY31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ29uc3RyYWludHM6ICAgJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQWRkaXRpb25zOiAgICAgJHtwbG9ua0FkZGl0aW9ucy5sZW5ndGh9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGsxIGFuZCBrMiB0byBiZSB1c2VkIGluIHRoZSBwZXJtdXRhdGlvbiBjaGVja3NcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIGsxIGFuZCBrMlwiKTtcbiAgICBjb25zdCBbazEsIGsyXSA9IGNvbXB1dGVLMUsyKCk7XG5cbiAgICAvLyBDb21wdXRlIG9tZWdhIDMgKHczKSBhbmQgb21lZ2EgNCAodzQpIHRvIGJlIHVzZWQgaW4gdGhlIHByb3ZlciBhbmQgdGhlIHZlcmlmaWVyXG4gICAgLy8gdzNeMyA9IDEgYW5kICB3NF40ID0gMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgdzNcIik7XG4gICAgY29uc3QgdzMgPSBjb21wdXRlVzMoKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gY29tcHV0aW5nIHc0XCIpO1xuICAgIGNvbnN0IHc0ID0gY29tcHV0ZVc0KCk7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IGNvbXB1dGluZyB3OFwiKTtcbiAgICBjb25zdCB3OCA9IGNvbXB1dGVXOCgpO1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBjb21wdXRpbmcgd3JcIik7XG4gICAgY29uc3Qgd3IgPSBnZXRPbWVnYUN1YmljUm9vdChzZXR0aW5ncy5jaXJQb3dlciwgY3VydmUuRnIpO1xuXG4gICAgLy8gV3JpdGUgb3V0cHV0IHprZXkgZmlsZVxuICAgIGF3YWl0IHdyaXRlWmtleUZpbGUoKTtcblxuICAgIGF3YWl0IGZkUjFjcy5jbG9zZSgpO1xuICAgIGF3YWl0IGZkUFRhdS5jbG9zZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgU0VUVVAgRklOSVNIRURcIik7XG5cbiAgICByZXR1cm4gMDtcblxuICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGRkNvbnN0cmFpbnRzKEZyLCByMWNzLCBsb2dnZXIpIHtcbiAgICAgICAgLy8gQWRkIHB1YmxpYyBpbnB1dHMgYW5kIG91dHB1dHNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uUHVibGljOyBpKyspIHtcbiAgICAgICAgICAgIHBsb25rQ29uc3RyYWludHMucHVzaChnZXRGRmxvbmtDb25zdGFudENvbnN0cmFpbnQoaSArIDEsIEZyKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZGQgYWxsIGNvbnN0cmFpbnRzIGZyb20gcjFjcyBmaWxlXG4gICAgICAgIGNvbnN0IHIxY3NQcm9jZXNzb3IgPSBuZXcgcjFjc0NvbnN0cmFpbnRQcm9jZXNzb3IoRnIsIGdldEZGbG9ua0NvbnN0YW50Q29uc3RyYWludCwgZ2V0RkZsb25rQWRkaXRpb25Db25zdHJhaW50LCBnZXRGRmxvbmtNdWx0aXBsaWNhdGlvbkNvbnN0cmFpbnQsIGxvZ2dlcik7XG5cbiAgICAgICAgY29uc3QgYlIxY3MgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRSMWNzLCBzZWN0aW9uc1IxY3MsIDIpO1xuICAgICAgICBsZXQgYlIxY3NQb3MgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHIxY3MubkNvbnN0cmFpbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGlmICgobG9nZ2VyKSAmJiAoaSAhPT0gMCkgJiYgKGkgJSA1MDAwMDAgPT09IDApKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oYCAgICBwcm9jZXNzaW5nIHIxY3MgY29uc3RyYWludHMgJHtpfS8ke3IxY3MubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgW2NvbnN0cmFpbnRzLCBhZGRpdGlvbnNdID0gcjFjc1Byb2Nlc3Nvci5wcm9jZXNzUjFjc0NvbnN0cmFpbnQoc2V0dGluZ3MsIC4uLnJlYWRDb25zdHJhaW50KCkpO1xuXG4gICAgICAgICAgICBwbG9ua0NvbnN0cmFpbnRzLnB1c2goLi4uY29uc3RyYWludHMpO1xuICAgICAgICAgICAgcGxvbmtBZGRpdGlvbnMucHVzaCguLi5hZGRpdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gcmVhZENvbnN0cmFpbnQoKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gW107XG4gICAgICAgICAgICBjWzBdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzFdID0gcmVhZExDKCk7XG4gICAgICAgICAgICBjWzJdID0gcmVhZExDKCk7XG4gICAgICAgICAgICByZXR1cm4gYztcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlYWRMQygpIHtcbiAgICAgICAgICAgIGNvbnN0IGxjID0ge307XG5cbiAgICAgICAgICAgIGNvbnN0IGJ1ZmZVTDMyID0gYlIxY3Muc2xpY2UoYlIxY3NQb3MsIGJSMWNzUG9zICsgNCk7XG4gICAgICAgICAgICBiUjFjc1BvcyArPSA0O1xuICAgICAgICAgICAgY29uc3QgYnVmZlVMMzJWID0gbmV3IERhdGFWaWV3KGJ1ZmZVTDMyLmJ1ZmZlcik7XG4gICAgICAgICAgICBjb25zdCBuSWR4ID0gYnVmZlVMMzJWLmdldFVpbnQzMigwLCB0cnVlKTtcblxuICAgICAgICAgICAgY29uc3QgYnVmZiA9IGJSMWNzLnNsaWNlKGJSMWNzUG9zLCBiUjFjc1BvcyArICg0ICsgcjFjcy5uOCkgKiBuSWR4KTtcbiAgICAgICAgICAgIGJSMWNzUG9zICs9ICg0ICsgcjFjcy5uOCkgKiBuSWR4O1xuICAgICAgICAgICAgY29uc3QgYnVmZlYgPSBuZXcgRGF0YVZpZXcoYnVmZi5idWZmZXIpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSWR4OyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpZHggPSBidWZmVi5nZXRVaW50MzIoaSAqICg0ICsgcjFjcy5uOCksIHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHIxY3MuRi5mcm9tUnByTEUoYnVmZiwgaSAqICg0ICsgcjFjcy5uOCkgKyA0KTtcbiAgICAgICAgICAgICAgICBsY1tpZHhdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGxjO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5RmlsZSgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IFdyaXRpbmcgdGhlIHprZXkgZmlsZVwiKTtcbiAgICAgICAgY29uc3QgZmRaS2V5ID0gYXdhaXQgY3JlYXRlQmluRmlsZSh6a2V5RmlsZW5hbWUsIFwiemtleVwiLCAxLCBaS0VZX0ZGX05TRUNUSU9OUywgMSA8PCAyMiwgMSA8PCAyNCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtIRUFERVJfWktFWV9TRUNUSU9OfS4gWmtleSBIZWFkZXJgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVaa2V5SGVhZGVyKGZkWktleSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OfS4gQWRkaXRpb25zYCk7XG4gICAgICAgIGF3YWl0IHdyaXRlQWRkaXRpb25zKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FfTUFQX1NFQ1RJT059LiBBIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sIDAsIFwiQSBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0JfTUFQX1NFQ1RJT059LiBCIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sIDEsIFwiQiBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0NfTUFQX1NFQ1RJT059LiBDIE1hcGApO1xuICAgICAgICBhd2FpdCB3cml0ZVdpdG5lc3NNYXAoZmRaS2V5LCBaS0VZX0ZGX0NfTUFQX1NFQ1RJT04sIDIsIFwiQyBtYXBcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FMX1NFQ1RJT059LiBRTGApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FMX1NFQ1RJT04sIDMsIFwiUUxcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FSX1NFQ1RJT059LiBRUmApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FSX1NFQ1RJT04sIDQsIFwiUVJcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FNX1NFQ1RJT059LiBRTWApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FNX1NFQ1RJT04sIDUsIFwiUU1cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FPX1NFQ1RJT059LiBRT2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FPX1NFQ1RJT04sIDYsIFwiUU9cIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1FDX1NFQ1RJT059LiBRQ2ApO1xuICAgICAgICBhd2FpdCB3cml0ZVFNYXAoZmRaS2V5LCBaS0VZX0ZGX1FDX1NFQ1RJT04sIDcsIFwiUUNcIik7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb25zICR7WktFWV9GRl9TSUdNQTFfU0VDVElPTn0sJHtaS0VZX0ZGX1NJR01BMl9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEzX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVTaWdtYShmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKGDCt8K3wrcgV3JpdGluZyBTZWN0aW9uICR7WktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OfS4gTGFncmFuZ2UgUG9seW5vbWlhbHNgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVMYWdyYW5nZVBvbHlub21pYWxzKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX1BUQVVfU0VDVElPTn0uIFBvd2VycyBvZiBUYXVgKTtcbiAgICAgICAgYXdhaXQgd3JpdGVQdGF1KGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0MwX1NFQ1RJT059LiBDMGApO1xuICAgICAgICBhd2FpdCB3cml0ZUMwKGZkWktleSk7XG4gICAgICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYMK3wrfCtyBXcml0aW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0hFQURFUl9TRUNUSU9OfS4gRkZsb25rIEhlYWRlcmApO1xuICAgICAgICBhd2FpdCB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpO1xuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBXcml0aW5nIHRoZSB6a2V5IGZpbGUgZmluaXNoZWRcIik7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LmNsb3NlKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVaa2V5SGVhZGVyKGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIEhFQURFUl9aS0VZX1NFQ1RJT04pO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihGRkxPTktfUFJPVE9DT0xfSUQpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUFkZGl0aW9ucyhmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OKTtcblxuICAgICAgICAvLyBXcml0dGVuIHZhbHVlcyBhcmUgMiAqIDMyIGJpdCBpbnRlZ2VycyAoMiAqIDQgYnl0ZXMpICsgMiBmaWVsZCBzaXplIHZhbHVlcyAoIDIgKiBzRnIgYnl0ZXMpXG4gICAgICAgIGNvbnN0IGJ1ZmZPdXQgPSBuZXcgVWludDhBcnJheSg4ICsgMiAqIHNGcik7XG4gICAgICAgIGNvbnN0IGJ1ZmZPdXRWID0gbmV3IERhdGFWaWV3KGJ1ZmZPdXQuYnVmZmVyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQWRkaXRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgQWRkaXRpb25zOiAke2l9LyR7cGxvbmtBZGRpdGlvbnMubGVuZ3RofWApO1xuXG4gICAgICAgICAgICBjb25zdCBhZGRpdGlvbiA9IHBsb25rQWRkaXRpb25zW2ldO1xuXG4gICAgICAgICAgICBidWZmT3V0Vi5zZXRVaW50MzIoMCwgYWRkaXRpb25bMF0sIHRydWUpO1xuICAgICAgICAgICAgYnVmZk91dFYuc2V0VWludDMyKDQsIGFkZGl0aW9uWzFdLCB0cnVlKTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzJdLCA4KTtcbiAgICAgICAgICAgIGJ1ZmZPdXQuc2V0KGFkZGl0aW9uWzNdLCA4ICsgc0ZyKTtcblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGJ1ZmZPdXQpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlV2l0bmVzc01hcChmZFpLZXksIHNlY3Rpb25OdW0sIHBvc0NvbnN0cmFpbnQsIG5hbWUpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyB3aXRuZXNzICR7bmFtZX06ICR7aX0vJHtwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aH1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIocGxvbmtDb25zdHJhaW50c1tpXVtwb3NDb25zdHJhaW50XSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVRTWFwKGZkWktleSwgc2VjdGlvbk51bSwgcG9zQ29uc3RyYWludCwgbmFtZSkge1xuICAgICAgICAvLyBDb21wdXRlIFEgZnJvbSBxIGV2YWx1YXRpb25zXG4gICAgICAgIGxldCBRID0gbmV3IEJpZ0J1ZmZlcihzZXR0aW5ncy5kb21haW5TaXplICogc0ZyKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIFEuc2V0KHBsb25rQ29uc3RyYWludHNbaV1bcG9zQ29uc3RyYWludF0sIGkgKiBzRnIpO1xuICAgICAgICAgICAgaWYgKChsb2dnZXIpICYmIChpICE9PSAwKSAmJiAoaSAlIDUwMDAwMCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhgICAgICAgd3JpdGluZyAke25hbWV9OiAke2l9LyR7cGxvbmtDb25zdHJhaW50cy5sZW5ndGh9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwb2x5bm9taWFsc1tuYW1lXSA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKFEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAvLyBXcml0ZSBRIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBzZWN0aW9uTnVtKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzW25hbWVdLmNvZWYpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoZXZhbHVhdGlvbnNbbmFtZV0uZXZhbCk7XG4gICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHdyaXRlU2lnbWEoZmRaS2V5KSB7XG4gICAgICAgIC8vIENvbXB1dGUgc2lnbWFcbiAgICAgICAgY29uc3Qgc2lnbWEgPSBuZXcgQmlnQnVmZmVyKHNGciAqIHNldHRpbmdzLmRvbWFpblNpemUgKiAzKTtcbiAgICAgICAgY29uc3QgbGFzdFNlZW4gPSBuZXcgQmlnQXJyYXkoc2V0dGluZ3MublZhcnMpO1xuICAgICAgICBjb25zdCBmaXJzdFBvcyA9IG5ldyBCaWdBcnJheShzZXR0aW5ncy5uVmFycyk7XG5cbiAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3MuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoaSA8IHBsb25rQ29uc3RyYWludHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYShwbG9ua0NvbnN0cmFpbnRzW2ldWzBdLCBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMV0sIHNldHRpbmdzLmRvbWFpblNpemUgKyBpKTtcbiAgICAgICAgICAgICAgICBidWlsZFNpZ21hKHBsb25rQ29uc3RyYWludHNbaV1bMl0sIHNldHRpbmdzLmRvbWFpblNpemUgKiAyICsgaSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgPCBzZXR0aW5ncy5kb21haW5TaXplIC0gMikge1xuICAgICAgICAgICAgICAgIGJ1aWxkU2lnbWEoMCwgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICsgaSk7XG4gICAgICAgICAgICAgICAgYnVpbGRTaWdtYSgwLCBzZXR0aW5ncy5kb21haW5TaXplICogMiArIGkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaWdtYS5zZXQodywgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KEZyLm11bCh3LCBrMSksIChzZXR0aW5ncy5kb21haW5TaXplICsgaSkgKiBzRnIpO1xuICAgICAgICAgICAgICAgIHNpZ21hLnNldChGci5tdWwodywgazIpLCAoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDIgKyBpKSAqIHNGcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHcgPSBGci5tdWwodywgRnIud1tzZXR0aW5ncy5jaXJQb3dlcl0pO1xuXG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKGAgICAgICB3cml0aW5nIHNpZ21hIHBoYXNlMTogJHtpfS8ke3Bsb25rQ29uc3RyYWludHMubGVuZ3RofWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5ncy5uVmFyczsgaSsrKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpcnN0UG9zW2ldICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW2ldLCBmaXJzdFBvc1tpXSAqIHNGcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcIlZhcmlhYmxlIG5vdCB1c2VkXCIpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVmFyaWFibGUgbm90IHVzZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGxvZ2dlcikgJiYgKGkgIT09IDApICYmIChpICUgNTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICAgIHdyaXRpbmcgc2lnbWEgcGhhc2UyOiAke2l9LyR7c2V0dGluZ3MublZhcnN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuXG4gICAgICAgIC8vIFdyaXRlIHNpZ21hIGNvZWZmaWNpZW50cyBhbmQgZXZhbHVhdGlvbnNcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHNlY3Rpb25JZCA9IDAgPT09IGkgPyBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OIDogMSA9PT0gaSA/IFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04gOiBaS0VZX0ZGX1NJR01BM19TRUNUSU9OO1xuXG4gICAgICAgICAgICBsZXQgbmFtZSA9IFwiU1wiICsgKGkgKyAxKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzW25hbWVdID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoc2lnbWEuc2xpY2Uoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGciAqIGksIHNldHRpbmdzLmRvbWFpblNpemUgKiBzRnIgKiAoaSArIDEpKSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBldmFsdWF0aW9uc1tuYW1lXSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzW25hbWVdLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgc2VjdGlvbklkKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShwb2x5bm9taWFsc1tuYW1lXS5jb2VmKTtcbiAgICAgICAgICAgIGF3YWl0IGZkWktleS53cml0ZShldmFsdWF0aW9uc1tuYW1lXS5ldmFsKTtcbiAgICAgICAgICAgIGF3YWl0IGVuZFdyaXRlU2VjdGlvbihmZFpLZXkpO1xuXG4gICAgICAgICAgICBpZiAoZ2xvYmFsVGhpcy5nYykgZ2xvYmFsVGhpcy5nYygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgZnVuY3Rpb24gYnVpbGRTaWdtYShzaWduYWxJZCwgaWR4KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RTZWVuW3NpZ25hbElkXSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIGZpcnN0UG9zW3NpZ25hbElkXSA9IGlkeDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2lnbWEuc2V0KGxhc3RTZWVuW3NpZ25hbElkXSwgaWR4ICogc0ZyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB2O1xuICAgICAgICAgICAgaWYgKGlkeCA8IHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gdztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaWR4IDwgMiAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB2ID0gRnIubXVsKHcsIGsxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdiA9IEZyLm11bCh3LCBrMik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RTZWVuW3NpZ25hbElkXSA9IHY7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUxhZ3JhbmdlUG9seW5vbWlhbHMoZmRaS2V5KSB7XG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9MQUdSQU5HRV9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBsID0gTWF0aC5tYXgoc2V0dGluZ3MublB1YmxpYywgMSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYnVmZiA9IG5ldyBCaWdCdWZmZXIoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIHNGcik7XG4gICAgICAgICAgICBidWZmLnNldChGci5vbmUsIGkgKiBzRnIpO1xuXG4gICAgICAgICAgICBhd2FpdCB3cml0ZVA0KGZkWktleSwgYnVmZik7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQdGF1KGZkWktleSkge1xuICAgICAgICBhd2FpdCBzdGFydFdyaXRlU2VjdGlvbihmZFpLZXksIFpLRVlfRkZfUFRBVV9TRUNUSU9OKTtcblxuICAgICAgICAvLyBkb21haW5TaXplICogOSArIDE4ID0gbWF4aW11bSBTUlMgbGVuZ3RoIG5lZWRlZCwgc3BlY2lmaWNhbGx5IHRvIGNvbW1pdCBDMlxuICAgICAgICBQVGF1ID0gbmV3IEJpZ0J1ZmZlcigoc2V0dGluZ3MuZG9tYWluU2l6ZSAqIDkgKyAxOCkgKiBzRzEpO1xuICAgICAgICBhd2FpdCBmZFBUYXUucmVhZFRvQnVmZmVyKFBUYXUsIDAsIChzZXR0aW5ncy5kb21haW5TaXplICogOSArIDE4KSAqIHNHMSwgcFRhdVNlY3Rpb25zWzJdWzBdLnApO1xuXG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShQVGF1KTtcbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVDMChmZFpLZXkpIHtcbiAgICAgICAgLy8gQzAoWCkgOj0gUUwoWF44KSArIFggwrcgUVIoWF44KSArIFheMiDCtyBRTyhYXjgpICsgWF4zIMK3IFFNKFheOCkgKyBYXjQgwrcgUUMoWF44KVxuICAgICAgICAvLyAgICAgICAgICAgICsgWF41IMK3IFNJR01BMShYXjgpICsgWF42IMK3IFNJR01BMihYXjgpICsgWF43IMK3IFNJR01BMyhYXjgpXG4gICAgICAgIGxldCBDMCA9IG5ldyBDUG9seW5vbWlhbCg4LCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgwLCBwb2x5bm9taWFscy5RTCk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoMSwgcG9seW5vbWlhbHMuUVIpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDIsIHBvbHlub21pYWxzLlFPKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCgzLCBwb2x5bm9taWFscy5RTSk7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNCwgcG9seW5vbWlhbHMuUUMpO1xuICAgICAgICBDMC5hZGRQb2x5bm9taWFsKDUsIHBvbHlub21pYWxzLlMxKTtcbiAgICAgICAgQzAuYWRkUG9seW5vbWlhbCg2LCBwb2x5bm9taWFscy5TMik7XG4gICAgICAgIEMwLmFkZFBvbHlub21pYWwoNywgcG9seW5vbWlhbHMuUzMpO1xuXG4gICAgICAgIHBvbHlub21pYWxzLkMwID0gQzAuZ2V0UG9seW5vbWlhbCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICBpZiAocG9seW5vbWlhbHMuQzAuZGVncmVlKCkgPj0gOCAqIHNldHRpbmdzLmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMwIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHN0YXJ0V3JpdGVTZWN0aW9uKGZkWktleSwgWktFWV9GRl9DMF9TRUNUSU9OKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKHBvbHlub21pYWxzLkMwLmNvZWYpO1xuICAgICAgICBhd2FpdCBlbmRXcml0ZVNlY3Rpb24oZmRaS2V5KTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB3cml0ZUZGbG9ua0hlYWRlcihmZFpLZXkpIHtcbiAgICAgICAgYXdhaXQgc3RhcnRXcml0ZVNlY3Rpb24oZmRaS2V5LCBaS0VZX0ZGX0hFQURFUl9TRUNUSU9OKTtcblxuICAgICAgICBjb25zdCBwcmltZVEgPSBjdXJ2ZS5xO1xuICAgICAgICBjb25zdCBuOHEgPSAoTWF0aC5mbG9vcigoU2NhbGFyLmJpdExlbmd0aChwcmltZVEpIC0gMSkgLyA2NCkgKyAxKSAqIDg7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKG44cSk7XG4gICAgICAgIGF3YWl0IHdyaXRlQmlnSW50KGZkWktleSwgcHJpbWVRLCBuOHEpO1xuXG4gICAgICAgIGNvbnN0IHByaW1lUiA9IGN1cnZlLnI7XG4gICAgICAgIGNvbnN0IG44ciA9IChNYXRoLmZsb29yKChTY2FsYXIuYml0TGVuZ3RoKHByaW1lUikgLSAxKSAvIDY0KSArIDEpICogODtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIobjhyKTtcbiAgICAgICAgYXdhaXQgd3JpdGVCaWdJbnQoZmRaS2V5LCBwcmltZVIsIG44cik7XG5cbiAgICAgICAgLy8gVG90YWwgbnVtYmVyIG9mIHIxY3MgdmFyc1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihzZXR0aW5ncy5uVmFycyk7XG4gICAgICAgIC8vIFRvdGFsIG51bWJlciBvZiByMWNzIHB1YmxpYyB2YXJzID0gb3V0cHV0cyArIHB1YmxpYyBpbnB1dHNcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlVUxFMzIoc2V0dGluZ3MublB1YmxpYyk7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZVVMRTMyKHNldHRpbmdzLmRvbWFpblNpemUpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0FkZGl0aW9ucy5sZW5ndGgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGVVTEUzMihwbG9ua0NvbnN0cmFpbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsxKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGsyKTtcblxuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzMpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzQpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUodzgpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUod3IpO1xuXG4gICAgICAgIGxldCBiWF8yO1xuICAgICAgICBiWF8yID0gYXdhaXQgZmRQVGF1LnJlYWQoc0cyLCBwVGF1U2VjdGlvbnNbM11bMF0ucCArIHNHMik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShiWF8yKTtcblxuICAgICAgICBsZXQgY29tbWl0QzAgPSBhd2FpdCBwb2x5bm9taWFscy5DMC5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzBcIik7XG4gICAgICAgIGF3YWl0IGZkWktleS53cml0ZShjb21taXRDMCk7XG5cbiAgICAgICAgYXdhaXQgZW5kV3JpdGVTZWN0aW9uKGZkWktleSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gd3JpdGVQNChmZFpLZXksIGJ1ZmYpIHtcbiAgICAgICAgY29uc3QgW2NvZWZmaWNpZW50cywgZXZhbHVhdGlvbnM0XSA9IGF3YWl0IFBvbHlub21pYWwudG80VChidWZmLCBzZXR0aW5ncy5kb21haW5TaXplLCBbXSwgRnIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkud3JpdGUoY29lZmZpY2llbnRzKTtcbiAgICAgICAgYXdhaXQgZmRaS2V5LndyaXRlKGV2YWx1YXRpb25zNCk7XG5cbiAgICAgICAgcmV0dXJuIFtjb2VmZmljaWVudHMsIGV2YWx1YXRpb25zNF07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZUsxSzIoKSB7XG4gICAgICAgIGxldCBrMSA9IEZyLnR3bztcbiAgICAgICAgd2hpbGUgKGlzSW5jbHVkZWQoazEsIFtdLCBzZXR0aW5ncy5jaXJQb3dlcikpIEZyLmFkZChrMSwgRnIub25lKTtcbiAgICAgICAgbGV0IGsyID0gRnIuYWRkKGsxLCBGci5vbmUpO1xuICAgICAgICB3aGlsZSAoaXNJbmNsdWRlZChrMiwgW2sxXSwgc2V0dGluZ3MuY2lyUG93ZXIpKSBGci5hZGQoazIsIEZyLm9uZSk7XG4gICAgICAgIHJldHVybiBbazEsIGsyXTtcblxuICAgICAgICBmdW5jdGlvbiBpc0luY2x1ZGVkKGssIGtBcnIsIHBvdykge1xuICAgICAgICAgICAgY29uc3QgZG9tYWluU2l6ZSA9IDIgKiogcG93O1xuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRvbWFpblNpemU7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCB3KSkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBrQXJyLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGci5lcShrLCBGci5tdWwoa0FycltqXSwgdykpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3Bvd10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVczKCkge1xuICAgICAgICBsZXQgZ2VuZXJhdG9yID0gRnIuZSgzMTYyNCk7XG5cbiAgICAgICAgLy8gRXhwb25lbnQgaXMgb3JkZXIociAtIDEpIC8gM1xuICAgICAgICBsZXQgb3JkZXJSc3ViMSA9IDM2NDgwNDA0Nzg2Mzk4NzkyMDM3MDc3MzQyOTA4NzYyMTI1MTQ3NTgwNjA3MzM0MDI2NzIzOTA2MTYzNjczNjQ0MjkzMDE0MTU5MzZuO1xuICAgICAgICBsZXQgZXhwb25lbnQgPSBTY2FsYXIuZGl2KG9yZGVyUnN1YjEsIFNjYWxhci5lKDMpKTtcblxuICAgICAgICByZXR1cm4gRnIuZXhwKGdlbmVyYXRvciwgZXhwb25lbnQpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNvbXB1dGVXNCgpIHtcbiAgICAgICAgcmV0dXJuIEZyLndbMl07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY29tcHV0ZVc4KCkge1xuICAgICAgICByZXR1cm4gRnIud1szXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRPbWVnYUN1YmljUm9vdChwb3dlciwgRnIpIHtcbiAgICAgICAgLy8gSGFyZGNvcmRlZCAzdGgtcm9vdCBvZiBGci53WzI4XVxuICAgICAgICBjb25zdCBmaXJzdFJvb3QgPSBGci5lKDQ2Nzc5OTE2NTg4NjA2OTYxMDAzNjA0Njg2Njc5OTI2NDAyNjQ4MTM0NDI5OTA3OTAxMTc2MjAyNjc3NDUzMzc3NDM0NTk4ODA4MG4pO1xuXG4gICAgICAgIHJldHVybiBGci5leHAoZmlyc3RSb290LCAyICoqICgyOCAtIHBvd2VyKSk7XG4gICAgfVxufVxuXG5cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjIgaWRlbjMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya2pzLlxuXG4gICAgc25hcmtqcyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGVcbiAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbilcbiAgICBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJranMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3JcbiAgICBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoXG4gICAgc25hcmtqcy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCAqIGFzIGJpbkZpbGVVdGlscyBmcm9tIFwiQGlkZW4zL2JpbmZpbGV1dGlsc1wiO1xuaW1wb3J0ICogYXMgemtleVV0aWxzIGZyb20gXCIuL3prZXlfdXRpbHMuanNcIjtcbmltcG9ydCAqIGFzIHd0bnNVdGlscyBmcm9tIFwiLi93dG5zX3V0aWxzLmpzXCI7XG5pbXBvcnQgeyBCaWdCdWZmZXIsIFNjYWxhciwgdXRpbHMgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5pbXBvcnQgeyBGRkxPTktfUFJPVE9DT0xfSUQgfSBmcm9tIFwiLi96a2V5X2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHtcbiAgICBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9BRERJVElPTlNfU0VDVElPTixcbiAgICBaS0VZX0ZGX0JfTUFQX1NFQ1RJT04sXG4gICAgWktFWV9GRl9DMF9TRUNUSU9OLFxuICAgIFpLRVlfRkZfQ19NQVBfU0VDVElPTixcbiAgICBaS0VZX0ZGX0xBR1JBTkdFX1NFQ1RJT04sXG4gICAgWktFWV9GRl9QVEFVX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RQ19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUUxfU0VDVElPTixcbiAgICBaS0VZX0ZGX1FNX1NFQ1RJT04sXG4gICAgWktFWV9GRl9RT19TRUNUSU9OLFxuICAgIFpLRVlfRkZfUVJfU0VDVElPTixcbiAgICBaS0VZX0ZGX1NJR01BMV9TRUNUSU9OLFxuICAgIFpLRVlfRkZfU0lHTUEyX1NFQ1RJT04sXG4gICAgWktFWV9GRl9TSUdNQTNfU0VDVElPTixcbn0gZnJvbSBcIi4vZmZsb25rX2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgS2VjY2FrMjU2VHJhbnNjcmlwdCB9IGZyb20gXCIuL0tlY2NhazI1NlRyYW5zY3JpcHQuanNcIjtcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IFBvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL3BvbHlub21pYWwuanNcIjtcbmltcG9ydCB7IEV2YWx1YXRpb25zIH0gZnJvbSBcIi4vcG9seW5vbWlhbC9ldmFsdWF0aW9ucy5qc1wiO1xuaW1wb3J0IHsgQ1BvbHlub21pYWwgfSBmcm9tIFwiLi9wb2x5bm9taWFsL2Nwb2x5bm9taWFsLmpzXCI7XG5cbmNvbnN0IHsgc3RyaW5naWZ5QmlnSW50cyB9ID0gdXRpbHM7XG5cblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rUHJvdmUoemtleUZpbGVOYW1lLCB3aXRuZXNzRmlsZU5hbWUsIGxvZ2dlciwgb3B0aW9ucykge1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFBST1ZFUiBTVEFSVEVEXCIpO1xuXG4gICAgLy8gUmVhZCB3aXRuZXNzIGZpbGVcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGVcIik7XG4gICAgY29uc3Qge1xuICAgICAgICBmZDogZmRXdG5zLFxuICAgICAgICBzZWN0aW9uczogd3Ruc1NlY3Rpb25zXG4gICAgfSA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkQmluRmlsZSh3aXRuZXNzRmlsZU5hbWUsIFwid3Ruc1wiLCAyLCAxIDw8IDI1LCAxIDw8IDIzKTtcbiAgICBjb25zdCB3dG5zID0gYXdhaXQgd3Ruc1V0aWxzLnJlYWRIZWFkZXIoZmRXdG5zLCB3dG5zU2VjdGlvbnMpO1xuXG4gICAgLy9SZWFkIHprZXkgZmlsZVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIHprZXkgZmlsZVwiKTtcbiAgICBjb25zdCB7XG4gICAgICAgIGZkOiBmZFpLZXksXG4gICAgICAgIHNlY3Rpb25zOiB6a2V5U2VjdGlvbnNcbiAgICB9ID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRCaW5GaWxlKHprZXlGaWxlTmFtZSwgXCJ6a2V5XCIsIDIsIDEgPDwgMjUsIDEgPDwgMjMpO1xuXG4gICAgY29uc3QgemtleSA9IGF3YWl0IHprZXlVdGlscy5yZWFkSGVhZGVyKGZkWktleSwgemtleVNlY3Rpb25zLCB1bmRlZmluZWQsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHprZXkucHJvdG9jb2xJZCAhPT0gRkZMT05LX1BST1RPQ09MX0lEKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInprZXkgZmlsZSBpcyBub3QgZmZsb25rXCIpO1xuICAgIH1cblxuICAgIGlmICghU2NhbGFyLmVxKHprZXkuciwgd3Rucy5xKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDdXJ2ZSBvZiB0aGUgd2l0bmVzcyBkb2VzIG5vdCBtYXRjaCB0aGUgY3VydmUgb2YgdGhlIHByb3Zpbmcga2V5XCIpO1xuICAgIH1cblxuICAgIGlmICh3dG5zLm5XaXRuZXNzICE9PSB6a2V5Lm5WYXJzIC0gemtleS5uQWRkaXRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB3aXRuZXNzIGxlbmd0aC4gQ2lyY3VpdDogJHt6a2V5Lm5WYXJzfSwgd2l0bmVzczogJHt3dG5zLm5XaXRuZXNzfSwgJHt6a2V5Lm5BZGRpdGlvbnN9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY3VydmUgPSB6a2V5LmN1cnZlO1xuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IHNGciA9IGN1cnZlLkZyLm44O1xuICAgIGNvbnN0IHNHMSA9IGN1cnZlLkcxLkYubjggKiAyO1xuICAgIGNvbnN0IHNEb21haW4gPSB6a2V5LmRvbWFpblNpemUgKiBzRnI7XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVwiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCIgIEZGTE9OSyBQUk9WRSBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3prZXkucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIERvbWFpbiBzaXplOiAgICR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBWYXJzOiAgICAgICAgICAke3prZXkublZhcnN9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7emtleS5uUHVibGljfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDb25zdHJhaW50czogICAke3prZXkubkNvbnN0cmFpbnRzfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBBZGRpdGlvbnM6ICAgICAke3prZXkubkFkZGl0aW9uc31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vUmVhZCB3aXRuZXNzIGRhdGFcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUmVhZGluZyB3aXRuZXNzIGZpbGUgZGF0YVwiKTtcbiAgICBjb25zdCBidWZmV2l0bmVzcyA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFd0bnMsIHd0bnNTZWN0aW9ucywgMik7XG4gICAgYXdhaXQgZmRXdG5zLmNsb3NlKCk7XG5cbiAgICAvLyBGaXJzdCBlbGVtZW50IGluIHBsb25rIGlzIG5vdCB1c2VkIGFuZCBjYW4gYmUgYW55IHZhbHVlLiAoQnV0IGFsd2F5cyB0aGUgc2FtZSkuXG4gICAgLy8gV2Ugc2V0IGl0IHRvIHplcm8gdG8gZ28gZmFzdGVyIGluIHRoZSBleHBvbmVudGlhdGlvbnMuXG4gICAgYnVmZldpdG5lc3Muc2V0KEZyLnplcm8sIDApO1xuICAgIGNvbnN0IGJ1ZmZJbnRlcm5hbFdpdG5lc3MgPSBuZXcgQmlnQnVmZmVyKHprZXkubkFkZGl0aW9ucyAqIHNGcik7XG5cbiAgICBsZXQgYnVmZmVycyA9IHt9O1xuICAgIGxldCBwb2x5bm9taWFscyA9IHt9O1xuICAgIGxldCBldmFsdWF0aW9ucyA9IHt9O1xuXG4gICAgLy8gVG8gZGl2aWRlIHByaW1lIGZpZWxkcyB0aGUgRXh0ZW5kZWQgRXVjbGlkZWFuIEFsZ29yaXRobSBmb3IgY29tcHV0aW5nIG1vZHVsYXIgaW52ZXJzZXMgaXMgbmVlZGVkLlxuICAgIC8vIE5PVEU6IFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY29tcHV0ZSAxL2Rlbm9taW5hdG9yIGFuZCB0aGVuIG11bHRpcGx5IGl0IGJ5IHRoZSBudW1lcmF0b3IuXG4gICAgLy8gVGhlIEV4dGVuZGVkIEV1Y2xpZGVhbiBBbGdvcml0aG0gaXMgZXhwZW5zaXZlIGluIHRlcm1zIG9mIGNvbXB1dGF0aW9uLlxuICAgIC8vIEZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHdlIG5lZWQgdG8gZG8gbWFueSBtb2R1bGFyIGludmVyc2VzLCB0aGVyZSdzIGEgc2ltcGxlIG1hdGhlbWF0aWNhbCB0cmlja1xuICAgIC8vIHRoYXQgYWxsb3dzIHVzIHRvIGNvbXB1dGUgbWFueSBpbnZlcnNlcywgY2FsbGVkIE1vbnRnb21lcnkgYmF0Y2ggaW52ZXJzaW9uLlxuICAgIC8vIE1vcmUgaW5mbzogaHR0cHM6Ly92aXRhbGlrLmNhL2dlbmVyYWwvMjAxOC8wNy8yMS9zdGFya3NfcGFydF8zLmh0bWxcbiAgICAvLyBNb250Z29tZXJ5IGJhdGNoIGludmVyc2lvbiByZWR1Y2VzIHRoZSBuIGludmVyc2UgY29tcHV0YXRpb25zIHRvIGEgc2luZ2xlIG9uZVxuICAgIC8vIFRvIHNhdmUgdGhpcyAoc2luZ2xlKSBpbnZlcnNlIGNvbXB1dGF0aW9uIG9uLWNoYWluLCB3aWxsIGNvbXB1dGUgaXQgaW4gcHJvdmluZyB0aW1lIGFuZCBzZW5kIGl0IHRvIHRoZSB2ZXJpZmllci5cbiAgICAvLyBUaGUgdmVyaWZpZXIgd2lsbCBoYXZlIHRvIGNoZWNrOlxuICAgIC8vIDEpIHRoZSBkZW5vbWluYXRvciBpcyBjb3JyZWN0IG11bHRpcGx5aW5nIGJ5IGhpbXNlbGYgbm9uLWludmVydGVkIC0+IGEgKiAxL2EgPT0gMVxuICAgIC8vIDIpIGNvbXB1dGUgdGhlIHJlc3Qgb2YgdGhlIGRlbm9taW5hdG9ycyB1c2luZyB0aGUgTW9udGdvbWVyeSBiYXRjaCBpbnZlcnNpb25cbiAgICAvLyBUaGUgaW52ZXJzaW9ucyBhcmU6XG4gICAgLy8gICDCtyBkZW5vbWluYXRvciBuZWVkZWQgaW4gc3RlcCA4IGFuZCA5IG9mIHRoZSB2ZXJpZmllciB0byBtdWx0aXBseSBieSAxL1pfSCh4aSlcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiBzdGVwIDEwIGFuZCAxMSBvZiB0aGUgdmVyaWZpZXJcbiAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiB0aGUgdmVyaWZpZXIgd2hlbiBjb21wdXRpbmcgTF9pXntTMX0oWCkgYW5kIExfaV57UzJ9KFgpXG4gICAgLy8gICDCtyBMX2kgaT0xIHRvIG51bSBwdWJsaWMgaW5wdXRzLCBuZWVkZWQgaW4gc3RlcCA2IGFuZCA3IG9mIHRoZSB2ZXJpZmllciB0byBjb21wdXRlIExfMSh4aSkgYW5kIFBJKHhpKVxuICAgIGxldCB0b0ludmVyc2UgPSB7fTtcblxuICAgIGxldCBjaGFsbGVuZ2VzID0ge307XG4gICAgbGV0IHJvb3RzID0ge307XG5cbiAgICBsZXQgcHJvb2YgPSBuZXcgUHJvb2YoY3VydmUsIGxvZ2dlcik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb24gJHtaS0VZX0ZGX0FERElUSU9OU19TRUNUSU9OfS4gQWRkaXRpb25zYCk7XG4gICAgYXdhaXQgY2FsY3VsYXRlQWRkaXRpb25zKCk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgPiBSZWFkaW5nIFNlY3Rpb25zICR7WktFWV9GRl9TSUdNQTFfU0VDVElPTn0sJHtaS0VZX0ZGX1NJR01BMl9TRUNUSU9OfSwke1pLRVlfRkZfU0lHTUEzX1NFQ1RJT059LiBTaWdtYTEsIFNpZ21hMiAmIFNpZ21hIDNgKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBSZWFkaW5nIFNpZ21hIHBvbHlub21pYWxzIFwiKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTEgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTIgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwb2x5bm9taWFscy5TaWdtYTMgPSBuZXcgUG9seW5vbWlhbChuZXcgQmlnQnVmZmVyKHNEb21haW4pLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuU2lnbWExLmNvZWYsIDAsIHNEb21haW4sIHprZXlTZWN0aW9uc1taS0VZX0ZGX1NJR01BMV9TRUNUSU9OXVswXS5wKTtcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLlNpZ21hMi5jb2VmLCAwLCBzRG9tYWluLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTJfU0VDVElPTl1bMF0ucCk7XG4gICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihwb2x5bm9taWFscy5TaWdtYTMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfU0lHTUEzX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgUmVhZGluZyBTaWdtYSBldmFsdWF0aW9uc1wiKTtcbiAgICBldmFsdWF0aW9ucy5TaWdtYTEgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgIGV2YWx1YXRpb25zLlNpZ21hMiA9IG5ldyBFdmFsdWF0aW9ucyhuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KSwgY3VydmUsIGxvZ2dlcik7XG4gICAgZXZhbHVhdGlvbnMuU2lnbWEzID0gbmV3IEV2YWx1YXRpb25zKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDQpLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWExLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTFfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEyLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTJfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIoZXZhbHVhdGlvbnMuU2lnbWEzLmV2YWwsIDAsIHNEb21haW4gKiA0LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9TSUdNQTNfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oYD4gUmVhZGluZyBTZWN0aW9uICR7WktFWV9GRl9QVEFVX1NFQ1RJT059LiBQb3dlcnMgb2YgVGF1YCk7XG4gICAgY29uc3QgUFRhdSA9IG5ldyBCaWdCdWZmZXIoemtleS5kb21haW5TaXplICogMTYgKiBzRzEpO1xuICAgIC8vIGRvbWFpblNpemUgKiA5ICsgMTggPSBTUlMgbGVuZ3RoIGluIHRoZSB6a2V5IHNhdmVkIGluIHNldHVwIHByb2Nlc3MuXG4gICAgLy8gaXQgY29ycmVzcG9uZHMgdG8gdGhlIG1heGltdW0gU1JTIGxlbmd0aCBuZWVkZWQsIHNwZWNpZmljYWxseSB0byBjb21taXQgQzJcbiAgICAvLyBub3RpY2UgdGhhdCB0aGUgcmVzZXJ2ZWQgYnVmZmVycyBzaXplIGlzIHprZXkuZG9tYWluU2l6ZSAqIDE2ICogc0cxIGJlY2F1c2UgYSBwb3dlciBvZiB0d28gYnVmZmVyIHNpemUgaXMgbmVlZGVkXG4gICAgLy8gdGhlIHJlbWFpbmluZyBidWZmZXIgbm90IGZpbGxlZCBmcm9tIFNSUyBhcmUgc2V0IHRvIDBcbiAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKFBUYXUsIDAsICh6a2V5LmRvbWFpblNpemUgKiA5ICsgMTgpICogc0cxLCB6a2V5U2VjdGlvbnNbWktFWV9GRl9QVEFVX1NFQ1RJT05dWzBdLnApO1xuXG4gICAgLy8gU1RBUlQgRkZMT05LIFBST1ZFUiBQUk9UT0NPTFxuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCAxLiBDb21wdXRlIEMxKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlwiKTtcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgMVwiKTtcbiAgICBhd2FpdCByb3VuZDEoKTtcblxuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMDtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUUw7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFSO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5RTTtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuUU87XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlFDO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCAyLiBDb21wdXRlIEMyKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgMlwiKTtcbiAgICBhd2FpdCByb3VuZDIoKTtcblxuICAgIGRlbGV0ZSBidWZmZXJzLkE7XG4gICAgZGVsZXRlIGJ1ZmZlcnMuQjtcbiAgICBkZWxldGUgYnVmZmVycy5DO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5BO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5CO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5DO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5TaWdtYTE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlNpZ21hMjtcbiAgICBkZWxldGUgZXZhbHVhdGlvbnMuU2lnbWEzO1xuICAgIGRlbGV0ZSBldmFsdWF0aW9ucy5sYWdyYW5nZTE7XG4gICAgZGVsZXRlIGV2YWx1YXRpb25zLlo7XG4gICAgaWYgKGdsb2JhbFRoaXMuZ2MpIGdsb2JhbFRoaXMuZ2MoKTtcblxuICAgIC8vIFJPVU5EIDMuIENvbXB1dGUgb3BlbmluZyBldmFsdWF0aW9uc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCAzXCIpO1xuICAgIGF3YWl0IHJvdW5kMygpO1xuXG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkM7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlo7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlQxO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMjtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuU2lnbWExO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5TaWdtYTI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlNpZ21hMztcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUUw7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFSO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5RTTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUUM7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlFPO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCA0LiBDb21wdXRlIFcoWCkgcG9seW5vbWlhbFxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBST1VORCA0XCIpO1xuICAgIGF3YWl0IHJvdW5kNCgpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICAvLyBST1VORCA1LiBDb21wdXRlIFcnKFgpIHBvbHlub21pYWxcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gUk9VTkQgNVwiKTtcbiAgICBhd2FpdCByb3VuZDUoKTtcblxuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5DMDtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuQzE7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkMyO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5SMTtcbiAgICBkZWxldGUgcG9seW5vbWlhbHMuUjI7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkY7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLkw7XG4gICAgZGVsZXRlIHBvbHlub21pYWxzLlpUO1xuICAgIGRlbGV0ZSBwb2x5bm9taWFscy5aVFMyO1xuICAgIGF3YWl0IGZkWktleS5jbG9zZSgpO1xuICAgIGlmIChnbG9iYWxUaGlzLmdjKSBnbG9iYWxUaGlzLmdjKCk7XG5cbiAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiaW52XCIsIGdldE1vbnRnb21lcnlCYXRjaGVkSW52ZXJzZSgpKTtcblxuICAgIC8vIFByZXBhcmUgcHJvb2ZcbiAgICBsZXQgX3Byb29mID0gcHJvb2YudG9PYmplY3RQcm9vZigpO1xuICAgIF9wcm9vZi5wcm90b2NvbCA9IFwiZmZsb25rXCI7XG4gICAgX3Byb29mLmN1cnZlID0gY3VydmUubmFtZTtcblxuICAgIC8vIFByZXBhcmUgcHVibGljIGlucHV0c1xuICAgIGxldCBwdWJsaWNTaWduYWxzID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG5cbiAgICAgICAgY29uc3QgcHViID0gYnVmZldpdG5lc3Muc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgcHVibGljU2lnbmFscy5wdXNoKFNjYWxhci5mcm9tUnByTEUocHViKSk7XG4gICAgfVxuXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgUFJPVkVSIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgcHJvb2Y6IHN0cmluZ2lmeUJpZ0ludHMoX3Byb29mKSxcbiAgICAgICAgcHVibGljU2lnbmFsczogc3RyaW5naWZ5QmlnSW50cyhwdWJsaWNTaWduYWxzKVxuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBjYWxjdWxhdGVBZGRpdGlvbnMoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBhZGRpdGlvbnNcIik7XG4gICAgICAgIGNvbnN0IGFkZGl0aW9uc0J1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQURESVRJT05TX1NFQ1RJT04pO1xuXG4gICAgICAgIC8vIHNpemVzOiB3aXJlSWRfeCA9IDQgYnl0ZXMgKDMyIGJpdHMpLCBmYWN0b3JfeCA9IGZpZWxkIHNpemUgYml0c1xuICAgICAgICAvLyBBZGRpdGlvbiBmb3JtOiB3aXJlSWRfYSB3aXJlSWRfYiBmYWN0b3JfYSBmYWN0b3JfYiAoc2l6ZSBpcyA0ICsgNCArIHNGciArIHNGcilcbiAgICAgICAgY29uc3Qgc1N1bSA9IDggKyBzRnIgKiAyO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5uQWRkaXRpb25zOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICBhZGRpdGlvbiAke2l9LyR7emtleS5uQWRkaXRpb25zfWApO1xuXG4gICAgICAgICAgICAvLyBSZWFkIGFkZGl0aW9uIHZhbHVlc1xuICAgICAgICAgICAgbGV0IG9mZnNldCA9IGkgKiBzU3VtO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWQxID0gcmVhZFVJbnQzMihhZGRpdGlvbnNCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICBjb25zdCBzaWduYWxJZDIgPSByZWFkVUludDMyKGFkZGl0aW9uc0J1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIGNvbnN0IGZhY3RvcjEgPSBhZGRpdGlvbnNCdWZmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgc0ZyKTtcbiAgICAgICAgICAgIG9mZnNldCArPSBzRnI7XG4gICAgICAgICAgICBjb25zdCBmYWN0b3IyID0gYWRkaXRpb25zQnVmZi5zbGljZShvZmZzZXQsIG9mZnNldCArIHNGcik7XG5cbiAgICAgICAgICAgIC8vIEdldCB3aXRuZXNzIHZhbHVlXG4gICAgICAgICAgICBjb25zdCB3aXRuZXNzMSA9IGdldFdpdG5lc3Moc2lnbmFsSWQxKTtcbiAgICAgICAgICAgIGNvbnN0IHdpdG5lc3MyID0gZ2V0V2l0bmVzcyhzaWduYWxJZDIpO1xuXG4gICAgICAgICAgICAvL0NhbGN1bGF0ZSBmaW5hbCByZXN1bHRcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IEZyLmFkZChGci5tdWwoZmFjdG9yMSwgd2l0bmVzczEpLCBGci5tdWwoZmFjdG9yMiwgd2l0bmVzczIpKTtcblxuICAgICAgICAgICAgYnVmZkludGVybmFsV2l0bmVzcy5zZXQocmVzdWx0LCBzRnIgKiBpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJlYWRVSW50MzIoYiwgbykge1xuICAgICAgICBjb25zdCBidWZmID0gYi5zbGljZShvLCBvICsgNCk7XG4gICAgICAgIGNvbnN0IGJ1ZmZWID0gbmV3IERhdGFWaWV3KGJ1ZmYuYnVmZmVyLCBidWZmLmJ5dGVPZmZzZXQsIGJ1ZmYuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHJldHVybiBidWZmVi5nZXRVaW50MzIoMCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0V2l0bmVzcyhpZHgpIHtcbiAgICAgICAgbGV0IGRpZmYgPSB6a2V5Lm5WYXJzIC0gemtleS5uQWRkaXRpb25zO1xuICAgICAgICBpZiAoaWR4IDwgZGlmZikge1xuICAgICAgICAgICAgcmV0dXJuIGJ1ZmZXaXRuZXNzLnNsaWNlKGlkeCAqIHNGciwgaWR4ICogc0ZyICsgc0ZyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpZHggPCB6a2V5Lm5WYXJzKSB7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAoaWR4IC0gZGlmZikgKiBzRnI7XG4gICAgICAgICAgICByZXR1cm4gYnVmZkludGVybmFsV2l0bmVzcy5zbGljZShvZmZzZXQsIG9mZnNldCArIHNGcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRnIuemVybztcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDEoKSB7XG4gICAgICAgIC8vIFNURVAgMS4xIC0gR2VuZXJhdGUgcmFuZG9tIGJsaW5kaW5nIHNjYWxhcnMgKGJfMSwgLi4uLCBiOSkg4oiIIEZcbiAgICAgICAgY2hhbGxlbmdlcy5iID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDk7IGkrKykge1xuICAgICAgICAgICAgY2hhbGxlbmdlcy5iW2ldID0gRnIucmFuZG9tKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTVEVQIDEuMiAtIENvbXB1dGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQSwgQiwgQyB3aXJlIHBvbHlub21pYWxzXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlV2lyZVBvbHlub21pYWxzKCk7XG5cbiAgICAgICAgLy8gU1RFUCAxLjMgLSBDb21wdXRlIHRoZSBxdW90aWVudCBwb2x5bm9taWFsIFQwKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVDAgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVQwKCk7XG5cbiAgICAgICAgLy8gU1RFUCAxLjQgLSBDb21wdXRlIHRoZSBGRlQtc3R5bGUgY29tYmluYXRpb24gcG9seW5vbWlhbCBDMShYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGF3YWl0IGNvbXB1dGVDMSgpO1xuXG4gICAgICAgIC8vIFRoZSBmaXJzdCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW0MxXV8xKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMxIG11bHRpIGV4cG9uZW50aWF0aW9uXCIpO1xuICAgICAgICBsZXQgY29tbWl0QzEgPSBhd2FpdCBwb2x5bm9taWFscy5DMS5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzFcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDMVwiLCBjb21taXRDMSk7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVdpcmVQb2x5bm9taWFscygpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IFJlYWRpbmcgZGF0YSBmcm9tIHprZXkgZmlsZVwiKTtcbiAgICAgICAgICAgIC8vIEJ1aWxkIEEsIEIgYW5kIEMgZXZhbHVhdGlvbnMgYnVmZmVyIGZyb20gemtleSBhbmQgd2l0bmVzcyBmaWxlc1xuICAgICAgICAgICAgYnVmZmVycy5BID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQiA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgICAgICBidWZmZXJzLkMgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBSZWFkIHprZXkgc2VjdGlvbnMgYW5kIGZpbGwgdGhlIGJ1ZmZlcnNcbiAgICAgICAgICAgIGNvbnN0IGFNYXBCdWZmID0gYXdhaXQgYmluRmlsZVV0aWxzLnJlYWRTZWN0aW9uKGZkWktleSwgemtleVNlY3Rpb25zLCBaS0VZX0ZGX0FfTUFQX1NFQ1RJT04pO1xuICAgICAgICAgICAgY29uc3QgYk1hcEJ1ZmYgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfQl9NQVBfU0VDVElPTik7XG4gICAgICAgICAgICBjb25zdCBjTWFwQnVmZiA9IGF3YWl0IGJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbihmZFpLZXksIHprZXlTZWN0aW9ucywgWktFWV9GRl9DX01BUF9TRUNUSU9OKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBhbGwgd2l0bmVzcyBmcm9tIHNpZ25hbCBpZHMgYW5kIHNldCB0aGVtIHRvIEEsQiAmIEMgYnVmZmVyc1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5Db25zdHJhaW50czsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaV9zRnIgPSBpICogc0ZyO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldCA9IGkgKiA0O1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBBIHZhbHVlIGZyb20gYSBzaWduYWwgaWRcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduYWxJZEEgPSByZWFkVUludDMyKGFNYXBCdWZmLCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuQS5zZXQoZ2V0V2l0bmVzcyhzaWduYWxJZEEpLCBpX3NGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIEIgdmFsdWUgZnJvbSBhIHNpZ25hbCBpZFxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hbElkQiA9IHJlYWRVSW50MzIoYk1hcEJ1ZmYsIG9mZnNldCk7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5CLnNldChnZXRXaXRuZXNzKHNpZ25hbElkQiksIGlfc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgQyB2YWx1ZSBmcm9tIGEgc2lnbmFsIGlkXG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmFsSWRDID0gcmVhZFVJbnQzMihjTWFwQnVmZiwgb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBidWZmZXJzLkMuc2V0KGdldFdpdG5lc3Moc2lnbmFsSWRDKSwgaV9zRnIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBCbGluZCBhKFgpLCBiKFgpIGFuZCBjKFgpIHBvbHlub21pYWxzIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICAgICAgYnVmZmVycy5BLnNldChjaGFsbGVuZ2VzLmJbMV0sIHNEb21haW4gLSA2NCk7XG4gICAgICAgICAgICBidWZmZXJzLkEuc2V0KGNoYWxsZW5nZXMuYlsyXSwgc0RvbWFpbiAtIDMyKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQi5zZXQoY2hhbGxlbmdlcy5iWzNdLCBzRG9tYWluIC0gNjQpO1xuICAgICAgICAgICAgYnVmZmVycy5CLnNldChjaGFsbGVuZ2VzLmJbNF0sIHNEb21haW4gLSAzMik7XG4gICAgICAgICAgICBidWZmZXJzLkMuc2V0KGNoYWxsZW5nZXMuYls1XSwgc0RvbWFpbiAtIDY0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQy5zZXQoY2hhbGxlbmdlcy5iWzZdLCBzRG9tYWluIC0gMzIpO1xuXG4gICAgICAgICAgICBidWZmZXJzLkEgPSBhd2FpdCBGci5iYXRjaFRvTW9udGdvbWVyeShidWZmZXJzLkEpO1xuICAgICAgICAgICAgYnVmZmVycy5CID0gYXdhaXQgRnIuYmF0Y2hUb01vbnRnb21lcnkoYnVmZmVycy5CKTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuQyA9IGF3YWl0IEZyLmJhdGNoVG9Nb250Z29tZXJ5KGJ1ZmZlcnMuQyk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgd2lyZSBwb2x5bm9taWFscyBhKFgpLCBiKFgpIGFuZCBjKFgpIGZyb20gQSxCICYgQyBidWZmZXJzXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQSBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQSA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQSwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQiwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgQyBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuQyA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuQywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgZXh0ZW5kZWQgZXZhbHVhdGlvbnMgb2YgYShYKSwgYihYKSBhbmQgYyhYKSBwb2x5bm9taWFsc1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEEgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQSA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkEsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEIgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQiA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkIsIDQsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMgZmZ0XCIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuQyA9IGF3YWl0IEV2YWx1YXRpb25zLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMsIDQsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVzXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQS5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5CLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkIgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkMuZGVncmVlKCkgPj0gemtleS5kb21haW5TaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQyBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlVDAoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhgwrfCt8K3IFJlYWRpbmcgc2VjdGlvbnMgJHtaS0VZX0ZGX1FMX1NFQ1RJT059LCAke1pLRVlfRkZfUVJfU0VDVElPTn1gICtcbiAgICAgICAgICAgICAgICBgLCAke1pLRVlfRkZfUU1fU0VDVElPTn0sICR7WktFWV9GRl9RT19TRUNUSU9OfSwgJHtaS0VZX0ZGX1FDX1NFQ1RJT059LiBRIHNlbGVjdG9yc2ApO1xuICAgICAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBldmFsdWF0aW9uc1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUUwgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUVIgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUU0gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUU8gPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZXZhbHVhdGlvbnMuUUMgPSBuZXcgRXZhbHVhdGlvbnMobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBSZWFkIFEncyBldmFsdWF0aW9ucyBmcm9tIHprZXkgZmlsZVxuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTC5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUxfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RUi5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUVJfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTS5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU1fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RTy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU9fU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuICAgICAgICAgICAgYXdhaXQgZmRaS2V5LnJlYWRUb0J1ZmZlcihldmFsdWF0aW9ucy5RQy5ldmFsLCAwLCBzRG9tYWluICogNCwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUNfU0VDVElPTl1bMF0ucCArIHNEb21haW4pO1xuXG4gICAgICAgICAgICAvLyBSZWFkIExhZ3JhbmdlIHBvbHlub21pYWxzICYgZXZhbHVhdGlvbnMgZnJvbSB6a2V5IGZpbGVcbiAgICAgICAgICAgIGNvbnN0IGxhZ3JhbmdlUG9seW5vbWlhbHMgPSBhd2FpdCBiaW5GaWxlVXRpbHMucmVhZFNlY3Rpb24oZmRaS2V5LCB6a2V5U2VjdGlvbnMsIFpLRVlfRkZfTEFHUkFOR0VfU0VDVElPTik7XG4gICAgICAgICAgICBldmFsdWF0aW9ucy5sYWdyYW5nZTEgPSBuZXcgRXZhbHVhdGlvbnMobGFncmFuZ2VQb2x5bm9taWFscywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIFJlc2VydmUgbWVtb3J5IGZvciBidWZmZXJzIFQwXG4gICAgICAgICAgICBidWZmZXJzLlQwID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMCBldmFsdWF0aW9uc1wiKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogNDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgICAgVDAgZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplICogNH1gKTtcblxuICAgICAgICAgICAgICAgIC8vIEdldCByZWxhdGVkIGV2YWx1YXRpb25zIHRvIGNvbXB1dGUgY3VycmVudCBUMCBldmFsdWF0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgYSA9IGV2YWx1YXRpb25zLkEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBiID0gZXZhbHVhdGlvbnMuQi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGMgPSBldmFsdWF0aW9ucy5DLmdldEV2YWx1YXRpb24oaSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBxbCA9IGV2YWx1YXRpb25zLlFMLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcXIgPSBldmFsdWF0aW9ucy5RUi5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHFtID0gZXZhbHVhdGlvbnMuUU0uZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBxbyA9IGV2YWx1YXRpb25zLlFPLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgcWMgPSBldmFsdWF0aW9ucy5RQy5nZXRFdmFsdWF0aW9uKGkpO1xuXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBjdXJyZW50IHB1YmxpYyBpbnB1dFxuICAgICAgICAgICAgICAgIGxldCBwaSA9IEZyLnplcm87XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB6a2V5Lm5QdWJsaWM7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvZmZzZXQgPSAoaiAqIDUgKiB6a2V5LmRvbWFpblNpemUpICsgemtleS5kb21haW5TaXplICsgaTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBsUG9sID0gZXZhbHVhdGlvbnMubGFncmFuZ2UxLmdldEV2YWx1YXRpb24ob2Zmc2V0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYVZhbCA9IGJ1ZmZlcnMuQS5zbGljZShqICogc0ZyLCAoaiArIDEpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgICAgICBwaSA9IEZyLnN1YihwaSwgRnIubXVsKGxQb2wsIGFWYWwpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL1QwKFgpID0gW3FfTChYKcK3YShYKSArIHFfUihYKcK3YihYKSArIHFfTShYKcK3YShYKcK3YihYKSArIHFfTyhYKcK3YyhYKSArIHFfQyhYKSArIFBJKFgpXSDCtyAxL1pfSChYKVxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgZmlyc3QgVDAoWCnCt1pfSChYKSwgc28gZGl2aWRlIGxhdGVyIHRoZSByZXN1bHRpbmcgcG9seW5vbWlhbCBieSBaX0goWClcbiAgICAgICAgICAgICAgICAvLyBleHByZXNzaW9uIDEgLT4gcV9MKFgpwrdhKFgpXG4gICAgICAgICAgICAgICAgY29uc3QgZTEgPSBGci5tdWwoYSwgcWwpO1xuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAyIC0+IHFfUihYKcK3YihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGUyID0gRnIubXVsKGIsIHFyKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMyAtPiBxX00oWCnCt2EoWCnCt2IoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlMyA9IEZyLm11bChGci5tdWwoYSwgYiksIHFtKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gNCAtPiBxX08oWCnCt2MoWClcbiAgICAgICAgICAgICAgICBjb25zdCBlNCA9IEZyLm11bChjLCBxbyk7XG5cbiAgICAgICAgICAgICAgICAvLyB0MCA9IGV4cHJlc3Npb25zIDEgKyBleHByZXNzaW9uIDIgKyBleHByZXNzaW9uIDMgKyBleHByZXNzaW9uIDQgKyBxYyArIHBpXG4gICAgICAgICAgICAgICAgY29uc3QgdDAgPSBGci5hZGQoZTEsIEZyLmFkZChlMiwgRnIuYWRkKGUzLCBGci5hZGQoZTQsIEZyLmFkZChxYywgcGkpKSkpKTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcnMuVDAuc2V0KHQwLCBpICogc0ZyKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJidWZmZXIgVDA6IFwiICsgYnVmZmVycy5UMC5ieXRlTGVuZ3RoIC8gc0ZyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIHRoZSBwb2x5bm9taWFsIFQwKFgpIGZyb20gYnVmZmVycy5UMFxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5UMCA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVDAsIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlQwIGxlbmd0aDogXCIgKyBwb2x5bm9taWFscy5UMC5sZW5ndGgoKSk7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIlQwIGRlZ3JlZTogXCIgKyBwb2x5bm9taWFscy5UMC5kZWdyZWUoKSk7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMCBieSBaX0goWClcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMCAvIFpIXCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDAuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQwLmRlZ3JlZSgpID49IDIgKiB6a2V5LmRvbWFpblNpemUgLSAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBUMCBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWQgKGRlZ3JlZSBpcyAke3BvbHlub21pYWxzLlQwLmRlZ3JlZSgpfSBhbmQgbXVzdCBiZSBsZXNzIHRoYW4gJHsyICogemtleS5kb21haW5TaXplICsgMn1gKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDA7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlQzEoKSB7XG4gICAgICAgICAgICBsZXQgQzEgPSBuZXcgQ1BvbHlub21pYWwoNCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDAsIHBvbHlub21pYWxzLkEpO1xuICAgICAgICAgICAgQzEuYWRkUG9seW5vbWlhbCgxLCBwb2x5bm9taWFscy5CKTtcbiAgICAgICAgICAgIEMxLmFkZFBvbHlub21pYWwoMiwgcG9seW5vbWlhbHMuQyk7XG4gICAgICAgICAgICBDMS5hZGRQb2x5bm9taWFsKDMsIHBvbHlub21pYWxzLlQwKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbHMuQzEgPSBDMS5nZXRQb2x5bm9taWFsKCk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLkMxLmRlZ3JlZSgpID49IDggKiB6a2V5LmRvbWFpblNpemUgLSA4KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQzEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gcm91bmQyKCkge1xuICAgICAgICAvLyBTVEVQIDIuMSAtIENvbXB1dGUgcGVybXV0YXRpb24gY2hhbGxlbmdlIGJldGEgYW5kIGdhbW1hIOKIiCBGXG4gICAgICAgIC8vIENvbXB1dGUgcGVybXV0YXRpb24gY2hhbGxlbmdlIGJldGFcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2VzIGJldGEgYW5kIGdhbW1hXCIpO1xuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuXG4gICAgICAgIC8vIEFkZCBDMCB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQoemtleS5DMCk7XG5cbiAgICAgICAgLy8gQWRkIEEgdG8gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB6a2V5Lm5QdWJsaWM7IGkrKykge1xuICAgICAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoYnVmZmVycy5BLnNsaWNlKGkgKiBzRnIsIGkgKiBzRnIgKyBzRnIpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFkZCBDMSB0byB0aGUgdHJhbnNjcmlwdFxuICAgICAgICB0cmFuc2NyaXB0LmFkZFBvbENvbW1pdG1lbnQocHJvb2YuZ2V0UG9seW5vbWlhbChcIkMxXCIpKTtcblxuICAgICAgICBjaGFsbGVuZ2VzLmJldGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmJldGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5iZXRhKSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBwZXJtdXRhdGlvbiBjaGFsbGVuZ2UgZ2FtbWFcbiAgICAgICAgdHJhbnNjcmlwdC5yZXNldCgpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmJldGEpO1xuICAgICAgICBjaGFsbGVuZ2VzLmdhbW1hID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy5nYW1tYTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLmdhbW1hKSk7XG5cbiAgICAgICAgLy8gU1RFUCAyLjIgLSBDb21wdXRlIHBlcm11dGF0aW9uIHBvbHlub21pYWwgeihYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFogcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVooKTtcblxuICAgICAgICAvLyBTVEVQIDIuMyAtIENvbXB1dGUgcXVvdGllbnQgcG9seW5vbWlhbCBUMShYKSBhbmQgVDIoWClcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMSBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDEoKTtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBUMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlVDIoKTtcblxuICAgICAgICAvLyBTVEVQIDIuNCAtIENvbXB1dGUgdGhlIEZGVC1zdHlsZSBjb21iaW5hdGlvbiBwb2x5bm9taWFsIEMyKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgQzIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUMyKCk7XG5cbiAgICAgICAgLy8gVGhlIHNlY29uZCBvdXRwdXQgb2YgdGhlIHByb3ZlciBpcyAoW0MyXV8xKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEMyIG11bHRpIGV4cG9uZW50aWF0aW9uXCIpO1xuICAgICAgICBsZXQgY29tbWl0QzIgPSBhd2FpdCBwb2x5bm9taWFscy5DMi5tdWx0aUV4cG9uZW50aWF0aW9uKFBUYXUsIFwiQzJcIik7XG4gICAgICAgIHByb29mLmFkZFBvbHlub21pYWwoXCJDMlwiLCBjb21taXRDMik7XG5cbiAgICAgICAgcmV0dXJuIDA7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVooKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgWiBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgbGV0IG51bUFyciA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbik7XG4gICAgICAgICAgICBsZXQgZGVuQXJyID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluKTtcblxuICAgICAgICAgICAgLy8gU2V0IHRoZSBmaXJzdCB2YWx1ZXMgdG8gMVxuICAgICAgICAgICAgbnVtQXJyLnNldChGci5vbmUsIDApO1xuICAgICAgICAgICAgZGVuQXJyLnNldChGci5vbmUsIDApO1xuXG4gICAgICAgICAgICAvLyBTZXQgaW5pdGlhbCBvbWVnYVxuICAgICAgICAgICAgbGV0IHcgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFogZXZhbHVhdGlvbiAke2l9LyR7emtleS5kb21haW5TaXplfWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlfc0ZyID0gaSAqIHNGcjtcblxuICAgICAgICAgICAgICAgIC8vIFooWCkgOj0gbnVtQXJyIC8gZGVuQXJyXG4gICAgICAgICAgICAgICAgLy8gbnVtQXJyIDo9IChhICsgYmV0YcK3z4kgKyBnYW1tYSkoYiArIGJldGHCt8+JwrdrMSArIGdhbW1hKShjICsgYmV0YcK3z4nCt2syICsgZ2FtbWEpXG4gICAgICAgICAgICAgICAgY29uc3QgYmV0YXcgPSBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCB3KTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0xID0gYnVmZmVycy5BLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgbnVtMSA9IEZyLmFkZChudW0xLCBiZXRhdyk7XG4gICAgICAgICAgICAgICAgbnVtMSA9IEZyLmFkZChudW0xLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBudW0yID0gYnVmZmVycy5CLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgbnVtMiA9IEZyLmFkZChudW0yLCBGci5tdWwoemtleS5rMSwgYmV0YXcpKTtcbiAgICAgICAgICAgICAgICBudW0yID0gRnIuYWRkKG51bTIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IG51bTMgPSBidWZmZXJzLkMuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBudW0zID0gRnIuYWRkKG51bTMsIEZyLm11bCh6a2V5LmsyLCBiZXRhdykpO1xuICAgICAgICAgICAgICAgIG51bTMgPSBGci5hZGQobnVtMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgbnVtID0gRnIubXVsKG51bTEsIEZyLm11bChudW0yLCBudW0zKSk7XG5cbiAgICAgICAgICAgICAgICAvLyBkZW5BcnIgOj0gKGEgKyBiZXRhwrdzaWdtYTEgKyBnYW1tYSkoYiArIGJldGHCt3NpZ21hMiArIGdhbW1hKShjICsgYmV0YcK3c2lnbWEzICsgZ2FtbWEpXG4gICAgICAgICAgICAgICAgbGV0IGRlbjEgPSBidWZmZXJzLkEuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKTtcbiAgICAgICAgICAgICAgICBkZW4xID0gRnIuYWRkKGRlbjEsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIGV2YWx1YXRpb25zLlNpZ21hMS5nZXRFdmFsdWF0aW9uKGkgKiA0KSkpO1xuICAgICAgICAgICAgICAgIGRlbjEgPSBGci5hZGQoZGVuMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZGVuMiA9IGJ1ZmZlcnMuQi5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpO1xuICAgICAgICAgICAgICAgIGRlbjIgPSBGci5hZGQoZGVuMiwgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgZXZhbHVhdGlvbnMuU2lnbWEyLmdldEV2YWx1YXRpb24oaSAqIDQpKSk7XG4gICAgICAgICAgICAgICAgZGVuMiA9IEZyLmFkZChkZW4yLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBkZW4zID0gYnVmZmVycy5DLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGcik7XG4gICAgICAgICAgICAgICAgZGVuMyA9IEZyLmFkZChkZW4zLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBldmFsdWF0aW9ucy5TaWdtYTMuZ2V0RXZhbHVhdGlvbihpICogNCkpKTtcbiAgICAgICAgICAgICAgICBkZW4zID0gRnIuYWRkKGRlbjMsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGRlbiA9IEZyLm11bChkZW4xLCBGci5tdWwoZGVuMiwgZGVuMykpO1xuXG4gICAgICAgICAgICAgICAgLy8gTXVsdGlwbHkgY3VycmVudCBudW0gdmFsdWUgd2l0aCB0aGUgcHJldmlvdXMgb25lIHNhdmVkIGluIG51bUFyclxuICAgICAgICAgICAgICAgIG51bSA9IEZyLm11bChudW1BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSwgbnVtKTtcbiAgICAgICAgICAgICAgICBudW1BcnIuc2V0KG51bSwgKChpICsgMSkgJSB6a2V5LmRvbWFpblNpemUpICogc0ZyKTtcblxuICAgICAgICAgICAgICAgIC8vIE11bHRpcGx5IGN1cnJlbnQgZGVuIHZhbHVlIHdpdGggdGhlIHByZXZpb3VzIG9uZSBzYXZlZCBpbiBkZW5BcnJcbiAgICAgICAgICAgICAgICBkZW4gPSBGci5tdWwoZGVuQXJyLnNsaWNlKGlfc0ZyLCBpX3NGciArIHNGciksIGRlbik7XG4gICAgICAgICAgICAgICAgZGVuQXJyLnNldChkZW4sICgoaSArIDEpICUgemtleS5kb21haW5TaXplKSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBOZXh0IG9tZWdhXG4gICAgICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGludmVyc2Ugb2YgZGVuQXJyIHRvIGNvbXB1dGUgaW4gdGhlIG5leHQgY29tbWFuZCB0aGVcbiAgICAgICAgICAgIC8vIGRpdmlzaW9uIG51bUFyci9kZW5BcnIgYnkgbXVsdGlwbHlpbmcgbnVtIMK3IDEvZGVuQXJyXG4gICAgICAgICAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgICAgICAgICAgLy8gVE9ETzogRG8gaXQgaW4gYXNzZW1ibHkgYW5kIGluIHBhcmFsbGVsXG4gICAgICAgICAgICAvLyBNdWx0aXBseSBudW1BcnIgwrcgZGVuQXJyIHdoZXJlIGRlbkFyciB3YXMgaW52ZXJ0ZWQgaW4gdGhlIHByZXZpb3VzIGNvbW1hbmRcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplOyBpKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpX3NGciA9IGkgKiBzRnI7XG5cbiAgICAgICAgICAgICAgICBjb25zdCB6ID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBzRnIpLCBkZW5BcnIuc2xpY2UoaV9zRnIsIGlfc0ZyICsgc0ZyKSk7XG4gICAgICAgICAgICAgICAgbnVtQXJyLnNldCh6LCBpX3NGcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGcm9tIG5vdyBvbiB0aGUgdmFsdWVzIHNhdmVkIG9uIG51bUFyciB3aWxsIGJlIFooWCkgYnVmZmVyXG4gICAgICAgICAgICBidWZmZXJzLlogPSBudW1BcnI7XG5cbiAgICAgICAgICAgIGlmICghRnIuZXEobnVtQXJyLnNsaWNlKDAsIHNGciksIEZyLm9uZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3B5IGNvbnN0cmFpbnRzIGRvZXMgbm90IG1hdGNoXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHBvbHlub21pYWwgY29lZmZpY2llbnRzIHooWCkgZnJvbSBidWZmZXJzLlpcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGlmZnRcIik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5aID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5aLCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQ29tcHV0ZSBleHRlbmRlZCBldmFsdWF0aW9ucyBvZiB6KFgpIHBvbHlub21pYWxcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBaIGZmdFwiKTtcbiAgICAgICAgICAgIGV2YWx1YXRpb25zLlogPSBhd2FpdCBFdmFsdWF0aW9ucy5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5aLCA0LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQmxpbmQgeihYKSBwb2x5bm9taWFsIGNvZWZmaWNpZW50cyB3aXRoIGJsaW5kaW5nIHNjYWxhcnMgYlxuICAgICAgICAgICAgcG9seW5vbWlhbHMuWi5ibGluZENvZWZmaWNpZW50cyhbY2hhbGxlbmdlcy5iWzldLCBjaGFsbGVuZ2VzLmJbOF0sIGNoYWxsZW5nZXMuYls3XV0pO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5aLmRlZ3JlZSgpID49IHprZXkuZG9tYWluU2l6ZSArIDMpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJaIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuWjtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVUMSgpIHtcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMSBldmFsdWF0aW9uc1wiKTtcblxuICAgICAgICAgICAgYnVmZmVycy5UMSA9IG5ldyBCaWdCdWZmZXIoc0RvbWFpbiAqIDIpO1xuICAgICAgICAgICAgYnVmZmVycy5UMXogPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiAyKTtcblxuICAgICAgICAgICAgLy8gU2V0IGluaXRpYWwgb21lZ2FcbiAgICAgICAgICAgIGxldCBvbWVnYSA9IEZyLm9uZTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgemtleS5kb21haW5TaXplICogMjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvZ2dlciAmJiAoMCAhPT0gaSkgJiYgKGkgJSAxMDAwMDAgPT09IDApKSBsb2dnZXIuaW5mbyhgICAgIFQxIGV2YWx1YXRpb24gJHtpfS8ke3prZXkuZG9tYWluU2l6ZSAqIDR9YCk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYTIgPSBGci5zcXVhcmUob21lZ2EpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgeiA9IGV2YWx1YXRpb25zLlouZ2V0RXZhbHVhdGlvbihpICogMik7XG4gICAgICAgICAgICAgICAgY29uc3QgenAgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIG9tZWdhKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUMShYKSA6PSAoeihYKSAtIDEpIMK3IExfMShYKVxuICAgICAgICAgICAgICAgIC8vIENvbXB1dGUgZmlyc3QgVDEoWCnCt1pfSChYKSwgc28gZGl2aWRlIGxhdGVyIHRoZSByZXN1bHRpbmcgcG9seW5vbWlhbCBieSBaX0goWClcbiAgICAgICAgICAgICAgICBjb25zdCBsYWdyYW5nZTEgPSBldmFsdWF0aW9ucy5sYWdyYW5nZTEuZ2V0RXZhbHVhdGlvbih6a2V5LmRvbWFpblNpemUgKyBpICogMik7XG4gICAgICAgICAgICAgICAgbGV0IHQxID0gRnIubXVsKEZyLnN1Yih6LCBGci5vbmUpLCBsYWdyYW5nZTEpO1xuICAgICAgICAgICAgICAgIGxldCB0MXogPSBGci5tdWwoenAsIGxhZ3JhbmdlMSk7XG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLlQxLnNldCh0MSwgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMXouc2V0KHQxeiwgaSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICBvbWVnYSA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyICsgMV0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDEoWCkgZnJvbSBidWZmZXJzLlQxXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDEgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMSBieSBaX0goWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxLmRpdkJ5WmVyb2ZpZXIoemtleS5kb21haW5TaXplLCBGci5vbmUpO1xuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDF6KFgpIGZyb20gYnVmZmVycy5UMXpcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMXogaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxeiA9IGF3YWl0IFBvbHlub21pYWwuZnJvbUV2YWx1YXRpb25zKGJ1ZmZlcnMuVDF6LCBjdXJ2ZSwgbG9nZ2VyKTtcblxuICAgICAgICAgICAgLy8gQWRkIHRoZSBwb2x5bm9taWFsIFQxeiB0byBUMSB0byBnZXQgdGhlIGZpbmFsIHBvbHlub21pYWwgVDFcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQxLmFkZChwb2x5bm9taWFscy5UMXopO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5UMS5kZWdyZWUoKSA+PSB6a2V5LmRvbWFpblNpemUgKyAyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVDEgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZWxldGUgYnVmZmVycy5UMTtcbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQxejtcbiAgICAgICAgICAgIGRlbGV0ZSBwb2x5bm9taWFscy5UMXo7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjb21wdXRlVDIoKSB7XG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDIgZXZhbHVhdGlvbnNcIik7XG5cbiAgICAgICAgICAgIGJ1ZmZlcnMuVDIgPSBuZXcgQmlnQnVmZmVyKHNEb21haW4gKiA0KTtcbiAgICAgICAgICAgIGJ1ZmZlcnMuVDJ6ID0gbmV3IEJpZ0J1ZmZlcihzRG9tYWluICogNCk7XG5cbiAgICAgICAgICAgIC8vIFNldCBpbml0aWFsIG9tZWdhXG4gICAgICAgICAgICBsZXQgb21lZ2EgPSBGci5vbmU7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkuZG9tYWluU2l6ZSAqIDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChsb2dnZXIgJiYgKDAgIT09IGkpICYmIChpICUgMTAwMDAwID09PSAwKSkgbG9nZ2VyLmluZm8oYCAgICBUMiBldmFsdWF0aW9uICR7aX0vJHt6a2V5LmRvbWFpblNpemUgKiA0fWApO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb21lZ2EyID0gRnIuc3F1YXJlKG9tZWdhKTtcbiAgICAgICAgICAgICAgICBjb25zdCBvbWVnYVcgPSBGci5tdWwob21lZ2EsIEZyLndbemtleS5wb3dlcl0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IG9tZWdhVzIgPSBGci5zcXVhcmUob21lZ2FXKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBldmFsdWF0aW9ucy5BLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYiA9IGV2YWx1YXRpb25zLkIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBjID0gZXZhbHVhdGlvbnMuQy5nZXRFdmFsdWF0aW9uKGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHogPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oaSk7XG4gICAgICAgICAgICAgICAgY29uc3QgelcgPSBldmFsdWF0aW9ucy5aLmdldEV2YWx1YXRpb24oKHprZXkuZG9tYWluU2l6ZSAqIDQgKyA0ICsgaSkgJSAoemtleS5kb21haW5TaXplICogNCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgenAgPSBGci5hZGQoRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJbN10sIG9tZWdhMiksIEZyLm11bChjaGFsbGVuZ2VzLmJbOF0sIG9tZWdhKSksIGNoYWxsZW5nZXMuYls5XSk7XG4gICAgICAgICAgICAgICAgY29uc3QgeldwID0gRnIuYWRkKEZyLmFkZChGci5tdWwoY2hhbGxlbmdlcy5iWzddLCBvbWVnYVcyKSwgRnIubXVsKGNoYWxsZW5nZXMuYls4XSwgb21lZ2FXKSksIGNoYWxsZW5nZXMuYls5XSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTEgPSBldmFsdWF0aW9ucy5TaWdtYTEuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTIgPSBldmFsdWF0aW9ucy5TaWdtYTIuZ2V0RXZhbHVhdGlvbihpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWdtYTMgPSBldmFsdWF0aW9ucy5TaWdtYTMuZ2V0RXZhbHVhdGlvbihpKTtcblxuICAgICAgICAgICAgICAgIC8vIFQyKFgpIDo9IFsgKGEoWCkgKyBiZXRhwrdYICsgZ2FtbWEpKGIoWCkgKyBiZXRhwrdrMcK3WCArIGdhbW1hKShjKFgpICsgYmV0YcK3azLCt1ggKyBnYW1tYSl6KFgpXG4gICAgICAgICAgICAgICAgLy8gICAgICAgICAgIC0oYShYKSArIGJldGHCt3NpZ21hMShYKSArIGdhbW1hKShiKFgpICsgYmV0YcK3c2lnbWEyKFgpICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdzaWdtYTMoWCkgKyBnYW1tYSl6KFjPiSldIMK3IDEvWl9IKFgpXG4gICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSBmaXJzdCBUMihYKcK3Wl9IKFgpLCBzbyBkaXZpZGUgbGF0ZXIgdGhlIHJlc3VsdGluZyBwb2x5bm9taWFsIGJ5IFpfSChYKVxuXG4gICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiAxIC0+IChhKFgpICsgYmV0YcK3WCArIGdhbW1hKShiKFgpICsgYmV0YcK3azHCt1ggKyBnYW1tYSkoYyhYKSArIGJldGHCt2sywrdYICsgZ2FtbWEpeihYKVxuICAgICAgICAgICAgICAgIGNvbnN0IGJldGFYID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgb21lZ2EpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxMSA9IEZyLmFkZChhLCBiZXRhWCk7XG4gICAgICAgICAgICAgICAgZTExID0gRnIuYWRkKGUxMSwgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTEyID0gRnIuYWRkKGIsIEZyLm11bChiZXRhWCwgemtleS5rMSkpO1xuICAgICAgICAgICAgICAgIGUxMiA9IEZyLmFkZChlMTIsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUxMyA9IEZyLmFkZChjLCBGci5tdWwoYmV0YVgsIHprZXkuazIpKTtcbiAgICAgICAgICAgICAgICBlMTMgPSBGci5hZGQoZTEzLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMSA9IEZyLm11bChGci5tdWwoRnIubXVsKGUxMSwgZTEyKSwgZTEzKSwgeik7XG4gICAgICAgICAgICAgICAgbGV0IGUxeiA9IEZyLm11bChGci5tdWwoRnIubXVsKGUxMSwgZTEyKSwgZTEzKSwgenApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IFtlMSwgZTF6XSA9IE11bFoubXVsNChlMTEsIGUxMiwgZTEzLCB6LCBhcCwgYnAsIGNwLCB6cCwgaSAlIDQsIEZyKTtcblxuICAgICAgICAgICAgICAgIC8vIGV4cHJlc3Npb24gMiAtPiAoYShYKSArIGJldGHCt3NpZ21hMShYKSArIGdhbW1hKShiKFgpICsgYmV0YcK3c2lnbWEyKFgpICsgZ2FtbWEpKGMoWCkgKyBiZXRhwrdzaWdtYTMoWCkgKyBnYW1tYSl6KFjPiSlcbiAgICAgICAgICAgICAgICBsZXQgZTIxID0gRnIuYWRkKGEsIEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHNpZ21hMSkpO1xuICAgICAgICAgICAgICAgIGUyMSA9IEZyLmFkZChlMjEsIGNoYWxsZW5nZXMuZ2FtbWEpO1xuXG4gICAgICAgICAgICAgICAgbGV0IGUyMiA9IEZyLmFkZChiLCBGci5tdWwoY2hhbGxlbmdlcy5iZXRhLCBzaWdtYTIpKTtcbiAgICAgICAgICAgICAgICBlMjIgPSBGci5hZGQoZTIyLCBjaGFsbGVuZ2VzLmdhbW1hKTtcblxuICAgICAgICAgICAgICAgIGxldCBlMjMgPSBGci5hZGQoYywgRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgc2lnbWEzKSk7XG4gICAgICAgICAgICAgICAgZTIzID0gRnIuYWRkKGUyMywgY2hhbGxlbmdlcy5nYW1tYSk7XG5cbiAgICAgICAgICAgICAgICBsZXQgZTIgPSBGci5tdWwoRnIubXVsKEZyLm11bChlMjEsIGUyMiksIGUyMyksIHpXKTtcbiAgICAgICAgICAgICAgICBsZXQgZTJ6ID0gRnIubXVsKEZyLm11bChGci5tdWwoZTIxLCBlMjIpLCBlMjMpLCB6V3ApO1xuICAgICAgICAgICAgICAgIC8vIGNvbnN0IFtlMiwgZTJ6XSA9IE11bFoubXVsNChlMjEsIGUyMiwgZTIzLCB6VywgYXAsIGJwLCBjcCwgeldwLCBpICUgNCwgRnIpO1xuXG4gICAgICAgICAgICAgICAgbGV0IHQyID0gRnIuc3ViKGUxLCBlMik7XG4gICAgICAgICAgICAgICAgbGV0IHQyeiA9IEZyLnN1YihlMXosIGUyeik7XG5cbiAgICAgICAgICAgICAgICBidWZmZXJzLlQyLnNldCh0MiwgaSAqIHNGcik7XG4gICAgICAgICAgICAgICAgYnVmZmVycy5UMnouc2V0KHQyeiwgaSAqIHNGcik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb21wdXRlIG5leHQgb21lZ2FcbiAgICAgICAgICAgICAgICBvbWVnYSA9IEZyLm11bChvbWVnYSwgRnIud1t6a2V5LnBvd2VyICsgMl0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBjb2VmZmljaWVudHMgb2YgdGhlIHBvbHlub21pYWwgVDIoWCkgZnJvbSBidWZmZXJzLlQyXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIsK3wrfCtyBDb21wdXRpbmcgVDIgaWZmdFwiKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlQyID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMiwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAgICAgICAgIC8vIERpdmlkZSB0aGUgcG9seW5vbWlhbCBUMiBieSBaX0goWClcbiAgICAgICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMiAvIFpIXCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIuZGl2QnlaZXJvZmllcih6a2V5LmRvbWFpblNpemUsIEZyLm9uZSk7XG5cbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiB0aGUgcG9seW5vbWlhbCBUMnooWCkgZnJvbSBidWZmZXJzLlQyelxuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQyeiBpZmZ0XCIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDJ6ID0gYXdhaXQgUG9seW5vbWlhbC5mcm9tRXZhbHVhdGlvbnMoYnVmZmVycy5UMnosIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgICAgICAvLyBBZGQgdGhlIHBvbHlub21pYWwgVDJ6IHRvIFQyIHRvIGdldCB0aGUgZmluYWwgcG9seW5vbWlhbCBUMlxuICAgICAgICAgICAgcG9seW5vbWlhbHMuVDIuYWRkKHBvbHlub21pYWxzLlQyeik7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIGRlZ3JlZVxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlQyLmRlZ3JlZSgpID49IDMgKiB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUMiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJzLlQyO1xuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuVDJ6O1xuICAgICAgICAgICAgZGVsZXRlIHBvbHlub21pYWxzLlQyejtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVDMigpIHtcbiAgICAgICAgICAgIGxldCBDMiA9IG5ldyBDUG9seW5vbWlhbCgzLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMCwgcG9seW5vbWlhbHMuWik7XG4gICAgICAgICAgICBDMi5hZGRQb2x5bm9taWFsKDEsIHBvbHlub21pYWxzLlQxKTtcbiAgICAgICAgICAgIEMyLmFkZFBvbHlub21pYWwoMiwgcG9seW5vbWlhbHMuVDIpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5DMiA9IEMyLmdldFBvbHlub21pYWwoKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgZGVncmVlXG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuQzIuZGVncmVlKCkgPj0gOSAqIHprZXkuZG9tYWluU2l6ZSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkMyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kMygpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgeGlcIik7XG4gICAgICAgIC8vIFNURVAgMy4xIC0gQ29tcHV0ZSBldmFsdWF0aW9uIGNoYWxsZW5nZSB4aSDiiIggU1xuICAgICAgICBjb25zdCB0cmFuc2NyaXB0ID0gbmV3IEtlY2NhazI1NlRyYW5zY3JpcHQoY3VydmUpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihjaGFsbGVuZ2VzLmdhbW1hKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLmdldFBvbHlub21pYWwoXCJDMlwiKSk7XG5cbiAgICAgICAgLy8gT2J0YWluIGEgeGlfc2VlZGVyIGZyb20gdGhlIHRyYW5zY3JpcHRcbiAgICAgICAgLy8gVG8gZm9yY2UgaDFeNCA9IHhpLCBoMl4zID0geGkgYW5kIGhfM14yID0geGnPiVxuICAgICAgICAvLyB3ZSBjb21wdXRlIHhpID0geGlfc2VlZGVyXjEyLCBoMSA9IHhpX3NlZWRlcl4zLCBoMiA9IHhpX3NlZWRlcl40IGFuZCBoMyA9IHhpX3NlZWRlcl42XG4gICAgICAgIGNoYWxsZW5nZXMueGlTZWVkID0gdHJhbnNjcmlwdC5nZXRDaGFsbGVuZ2UoKTtcbiAgICAgICAgY29uc3QgeGlTZWVkMiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpU2VlZCk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSBvbWVnYTgsIG9tZWdhNCBhbmQgb21lZ2EzXG4gICAgICAgIHJvb3RzLnc4ID0gW107XG4gICAgICAgIHJvb3RzLnc4WzBdID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDg7IGkrKykge1xuICAgICAgICAgICAgcm9vdHMudzhbaV0gPSBGci5tdWwocm9vdHMudzhbaSAtIDFdLCB6a2V5Lnc4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RzLnc0ID0gW107XG4gICAgICAgIHJvb3RzLnc0WzBdID0gRnIub25lO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgcm9vdHMudzRbaV0gPSBGci5tdWwocm9vdHMudzRbaSAtIDFdLCB6a2V5Lnc0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJvb3RzLnczID0gW107XG4gICAgICAgIHJvb3RzLnczWzBdID0gRnIub25lO1xuICAgICAgICByb290cy53M1sxXSA9IHprZXkudzM7XG4gICAgICAgIHJvb3RzLnczWzJdID0gRnIuc3F1YXJlKHprZXkudzMpO1xuXG4gICAgICAgIC8vIENvbXB1dGUgaDAgPSB4aVNlZWRlcl4zXG4gICAgICAgIHJvb3RzLlMwID0ge307XG4gICAgICAgIHJvb3RzLlMwLmgwdzggPSBbXTtcbiAgICAgICAgcm9vdHMuUzAuaDB3OFswXSA9IEZyLm11bCh4aVNlZWQyLCBjaGFsbGVuZ2VzLnhpU2VlZCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICByb290cy5TMC5oMHc4W2ldID0gRnIubXVsKHJvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLnc4W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbXB1dGUgaDEgPSB4aV9zZWVkZXJeNlxuICAgICAgICByb290cy5TMSA9IHt9O1xuICAgICAgICByb290cy5TMS5oMXc0ID0gW107XG4gICAgICAgIHJvb3RzLlMxLmgxdzRbMF0gPSBGci5zcXVhcmUocm9vdHMuUzAuaDB3OFswXSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgICAgICByb290cy5TMS5oMXc0W2ldID0gRnIubXVsKHJvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLnc0W2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbXB1dGUgaDIgPSB4aV9zZWVkZXJeOFxuICAgICAgICByb290cy5TMiA9IHt9O1xuICAgICAgICByb290cy5TMi5oMnczID0gW107XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMF0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgeGlTZWVkMik7XG4gICAgICAgIHJvb3RzLlMyLmgydzNbMV0gPSBGci5tdWwocm9vdHMuUzIuaDJ3M1swXSwgcm9vdHMudzNbMV0pO1xuICAgICAgICByb290cy5TMi5oMnczWzJdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLnczWzJdKTtcblxuICAgICAgICByb290cy5TMi5oM3czID0gW107XG4gICAgICAgIC8vIE11bHRpcGx5IGgzIGJ5IHRoaXJkLXJvb3Qtb21lZ2EgdG8gb2J0YWluIGhfM14zID0geGnPiVxuICAgICAgICAvLyBTbywgaDMgPSB4aV9zZWVkZXJeOCDPiV57MS8zfVxuICAgICAgICByb290cy5TMi5oM3czWzBdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHprZXkud3IpO1xuICAgICAgICByb290cy5TMi5oM3czWzFdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLnczWzFdKTtcbiAgICAgICAgcm9vdHMuUzIuaDN3M1syXSA9IEZyLm11bChyb290cy5TMi5oM3czWzBdLCByb290cy53M1syXSk7XG5cbiAgICAgICAgLy8gQ29tcHV0ZSB4aSA9IHhpX3NlZWRlcl4yNFxuICAgICAgICBjaGFsbGVuZ2VzLnhpID0gRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oMnczWzBdKSwgcm9vdHMuUzIuaDJ3M1swXSk7XG5cbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy54aTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnhpKSk7XG5cbiAgICAgICAgLy8gUmVzZXJ2ZSBtZW1vcnkgZm9yIFEncyBwb2x5bm9taWFsc1xuICAgICAgICBwb2x5bm9taWFscy5RTCA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RUiA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTSA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RTyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBwb2x5bm9taWFscy5RQyA9IG5ldyBQb2x5bm9taWFsKG5ldyBCaWdCdWZmZXIoc0RvbWFpbiksIGN1cnZlLCBsb2dnZXIpO1xuXG4gICAgICAgIC8vIFJlYWQgUSdzIGV2YWx1YXRpb25zIGZyb20gemtleSBmaWxlXG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUwuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUxfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUVIuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUVJfU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU0uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU1fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUU8uY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUU9fU0VDVElPTl1bMF0ucCk7XG4gICAgICAgIGF3YWl0IGZkWktleS5yZWFkVG9CdWZmZXIocG9seW5vbWlhbHMuUUMuY29lZiwgMCwgc0RvbWFpbiwgemtleVNlY3Rpb25zW1pLRVlfRkZfUUNfU0VDVElPTl1bMF0ucCk7XG5cbiAgICAgICAgLy8gU1RFUCAzLjIgLSBDb21wdXRlIG9wZW5pbmcgZXZhbHVhdGlvbnMgYW5kIGFkZCB0aGVtIHRvIHRoZSBwcm9vZiAodGhpcmQgb3V0cHV0IG9mIHRoZSBwcm92ZXIpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBldmFsdWF0aW9uc1wiKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFsXCIsIHBvbHlub21pYWxzLlFMLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFyXCIsIHBvbHlub21pYWxzLlFSLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFtXCIsIHBvbHlub21pYWxzLlFNLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFvXCIsIHBvbHlub21pYWxzLlFPLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInFjXCIsIHBvbHlub21pYWxzLlFDLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInMxXCIsIHBvbHlub21pYWxzLlNpZ21hMS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJzMlwiLCBwb2x5bm9taWFscy5TaWdtYTIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiczNcIiwgcG9seW5vbWlhbHMuU2lnbWEzLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcImFcIiwgcG9seW5vbWlhbHMuQS5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJiXCIsIHBvbHlub21pYWxzLkIuZXZhbHVhdGUoY2hhbGxlbmdlcy54aSkpO1xuICAgICAgICBwcm9vZi5hZGRFdmFsdWF0aW9uKFwiY1wiLCBwb2x5bm9taWFscy5DLmV2YWx1YXRlKGNoYWxsZW5nZXMueGkpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInpcIiwgcG9seW5vbWlhbHMuWi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpKSk7XG5cbiAgICAgICAgY2hhbGxlbmdlcy54aXcgPSBGci5tdWwoY2hhbGxlbmdlcy54aSwgRnIud1t6a2V5LnBvd2VyXSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJ6d1wiLCBwb2x5bm9taWFscy5aLmV2YWx1YXRlKGNoYWxsZW5nZXMueGl3KSk7XG4gICAgICAgIHByb29mLmFkZEV2YWx1YXRpb24oXCJ0MXdcIiwgcG9seW5vbWlhbHMuVDEuZXZhbHVhdGUoY2hhbGxlbmdlcy54aXcpKTtcbiAgICAgICAgcHJvb2YuYWRkRXZhbHVhdGlvbihcInQyd1wiLCBwb2x5bm9taWFscy5UMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnhpdykpO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHJvdW5kNCgpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENvbXB1dGluZyBjaGFsbGVuZ2UgYWxwaGFcIik7XG4gICAgICAgIC8vIFNURVAgNC4xIC0gQ29tcHV0ZSBjaGFsbGVuZ2UgYWxwaGEg4oiIIEZcbiAgICAgICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy54aVNlZWQpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicWxcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicXJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicW1cIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicW9cIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwicWNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczFcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczJcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiczNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwiYVwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJiXCIpKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZ2V0RXZhbHVhdGlvbihcImNcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwielwiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ6d1wiKSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmdldEV2YWx1YXRpb24oXCJ0MXdcIikpO1xuICAgICAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5nZXRFdmFsdWF0aW9uKFwidDJ3XCIpKTtcbiAgICAgICAgY2hhbGxlbmdlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYWxwaGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5hbHBoYSkpO1xuXG4gICAgICAgIC8vIFNURVAgNC4yIC0gQ29tcHV0ZSBGKFgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBSZWFkaW5nIEMwIHBvbHlub21pYWxcIik7XG4gICAgICAgIHBvbHlub21pYWxzLkMwID0gbmV3IFBvbHlub21pYWwobmV3IEJpZ0J1ZmZlcihzRG9tYWluICogOCksIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICBhd2FpdCBmZFpLZXkucmVhZFRvQnVmZmVyKHBvbHlub21pYWxzLkMwLmNvZWYsIDAsIHNEb21haW4gKiA4LCB6a2V5U2VjdGlvbnNbWktFWV9GRl9DMF9TRUNUSU9OXVswXS5wKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIwIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMCgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIxIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMSgpO1xuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFIyIHBvbHlub21pYWxcIik7XG4gICAgICAgIGNvbXB1dGVSMigpO1xuXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBhd2FpdCBjb21wdXRlRigpO1xuXG4gICAgICAgIC8vIFRoZSBmb3VydGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtXMV1fMSksIHdoZXJlIFcxOj0oZi9aX3QpKHgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVzEgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRXMSA9IGF3YWl0IHBvbHlub21pYWxzLkYubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlcxXCIpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVzFcIiwgY29tbWl0VzEpO1xuXG4gICAgICAgIHJldHVybiAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVSMCgpIHtcbiAgICAgICAgICAgIC8vIENPTVBVVEUgUjBcbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiBSMChYKSBmcm9tIDggZXZhbHVhdGlvbnMgdXNpbmcgbGFncmFuZ2UgaW50ZXJwb2xhdGlvbi4gUjAoWCkg4oiIIEZfezw4fVtYXVxuICAgICAgICAgICAgLy8gV2UgZGVjaWRlIHRvIHVzZSBMYWdyYW5nZSBpbnRlcnBvbGF0aW9ucyBiZWNhdXNlIHRoZSBSMCBkZWdyZWUgaXMgdmVyeSBzbWFsbCAoZGVnKFIwKT09PTcpLFxuICAgICAgICAgICAgLy8gYW5kIHdlIHdlcmUgbm90IGFibGUgdG8gY29tcHV0ZSBpdCB1c2luZyBjdXJyZW50IGlmZnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB0aGUgb21lZ2EgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgcG9seW5vbWlhbHMuUjAgPSBQb2x5bm9taWFsLmxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMwLmgwdzhbMF0sIHJvb3RzLlMwLmgwdzhbMV0sIHJvb3RzLlMwLmgwdzhbMl0sIHJvb3RzLlMwLmgwdzhbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMwLmgwdzhbNF0sIHJvb3RzLlMwLmgwdzhbNV0sIHJvb3RzLlMwLmgwdzhbNl0sIHJvb3RzLlMwLmgwdzhbN11dLFxuICAgICAgICAgICAgICAgIFtwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzBdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFsxXSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbMl0pLCBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzNdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs0XSksIHBvbHlub21pYWxzLkMwLmV2YWx1YXRlKHJvb3RzLlMwLmgwdzhbNV0pLFxuICAgICAgICAgICAgICAgICAgICBwb2x5bm9taWFscy5DMC5ldmFsdWF0ZShyb290cy5TMC5oMHc4WzZdKSwgcG9seW5vbWlhbHMuQzAuZXZhbHVhdGUocm9vdHMuUzAuaDB3OFs3XSldLCBjdXJ2ZSk7XG5cbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSBkZWdyZWUgb2YgcjAoWCkgPCA4XG4gICAgICAgICAgICBpZiAocG9seW5vbWlhbHMuUjAuZGVncmVlKCkgPiA3KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUjAgUG9seW5vbWlhbCBpcyBub3Qgd2VsbCBjYWxjdWxhdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZVIxKCkge1xuICAgICAgICAgICAgLy8gQ09NUFVURSBSMVxuICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgY29lZmZpY2llbnRzIG9mIFIxKFgpIGZyb20gNCBldmFsdWF0aW9ucyB1c2luZyBsYWdyYW5nZSBpbnRlcnBvbGF0aW9uLiBSMShYKSDiiIggRl97PDR9W1hdXG4gICAgICAgICAgICAvLyBXZSBkZWNpZGUgdG8gdXNlIExhZ3JhbmdlIGludGVycG9sYXRpb25zIGJlY2F1c2UgdGhlIFIxIGRlZ3JlZSBpcyB2ZXJ5IHNtYWxsIChkZWcoUjEpPT09MyksXG4gICAgICAgICAgICAvLyBhbmQgd2Ugd2VyZSBub3QgYWJsZSB0byBjb21wdXRlIGl0IHVzaW5nIGN1cnJlbnQgaWZmdCBpbXBsZW1lbnRhdGlvbiBiZWNhdXNlIHRoZSBvbWVnYSBhcmUgZGlmZmVyZW50XG4gICAgICAgICAgICBwb2x5bm9taWFscy5SMSA9IFBvbHlub21pYWwubGFncmFuZ2VQb2x5bm9taWFsSW50ZXJwb2xhdGlvbihcbiAgICAgICAgICAgICAgICBbcm9vdHMuUzEuaDF3NFswXSwgcm9vdHMuUzEuaDF3NFsxXSwgcm9vdHMuUzEuaDF3NFsyXSwgcm9vdHMuUzEuaDF3NFszXV0sXG4gICAgICAgICAgICAgICAgW3BvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbMF0pLCBwb2x5bm9taWFscy5DMS5ldmFsdWF0ZShyb290cy5TMS5oMXc0WzFdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzEuZXZhbHVhdGUocm9vdHMuUzEuaDF3NFsyXSksIHBvbHlub21pYWxzLkMxLmV2YWx1YXRlKHJvb3RzLlMxLmgxdzRbM10pXSwgY3VydmUpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgZGVncmVlIG9mIHIxKFgpIDwgNFxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlIxLmRlZ3JlZSgpID4gMykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlIxIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGNvbXB1dGVSMigpIHtcbiAgICAgICAgICAgIC8vIENPTVBVVEUgUjJcbiAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIGNvZWZmaWNpZW50cyBvZiByMihYKSBmcm9tIDYgZXZhbHVhdGlvbnMgdXNpbmcgbGFncmFuZ2UgaW50ZXJwb2xhdGlvbi4gcjIoWCkg4oiIIEZfezw2fVtYXVxuICAgICAgICAgICAgLy8gV2UgZGVjaWRlIHRvIHVzZSBMYWdyYW5nZSBpbnRlcnBvbGF0aW9ucyBiZWNhdXNlIHRoZSBSMi5kZWdyZWUgaXMgdmVyeSBzbWFsbCAoZGVnKFIyKT09PTUpLFxuICAgICAgICAgICAgLy8gYW5kIHdlIHdlcmUgbm90IGFibGUgdG8gY29tcHV0ZSBpdCB1c2luZyBjdXJyZW50IGlmZnQgaW1wbGVtZW50YXRpb24gYmVjYXVzZSB0aGUgb21lZ2EgYXJlIGRpZmZlcmVudFxuICAgICAgICAgICAgcG9seW5vbWlhbHMuUjIgPSBQb2x5bm9taWFsLmxhZ3JhbmdlUG9seW5vbWlhbEludGVycG9sYXRpb24oXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLFxuICAgICAgICAgICAgICAgIFtwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oMnczWzBdKSwgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDJ3M1sxXSksXG4gICAgICAgICAgICAgICAgICAgIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgydzNbMl0pLCBwb2x5bm9taWFscy5DMi5ldmFsdWF0ZShyb290cy5TMi5oM3czWzBdKSxcbiAgICAgICAgICAgICAgICAgICAgcG9seW5vbWlhbHMuQzIuZXZhbHVhdGUocm9vdHMuUzIuaDN3M1sxXSksIHBvbHlub21pYWxzLkMyLmV2YWx1YXRlKHJvb3RzLlMyLmgzdzNbMl0pXSwgY3VydmUpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayB0aGUgZGVncmVlIG9mIHIyKFgpIDwgNlxuICAgICAgICAgICAgaWYgKHBvbHlub21pYWxzLlIyLmRlZ3JlZSgpID4gNSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlIyIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVGKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEYgcG9seW5vbWlhbFwiKTtcblxuICAgICAgICAgICAgLy8gQ09NUFVURSBGKFgpXG4gICAgICAgICAgICBwb2x5bm9taWFscy5GID0gUG9seW5vbWlhbC5mcm9tUG9seW5vbWlhbChwb2x5bm9taWFscy5DMCwgY3VydmUsIGxvZ2dlcik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLnN1Yihwb2x5bm9taWFscy5SMCk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmRpdkJ5WmVyb2ZpZXIoOCwgY2hhbGxlbmdlcy54aSk7XG5cbiAgICAgICAgICAgIGxldCBmMiA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzEsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZjIuc3ViKHBvbHlub21pYWxzLlIxKTtcbiAgICAgICAgICAgIGYyLm11bFNjYWxhcihjaGFsbGVuZ2VzLmFscGhhKTtcbiAgICAgICAgICAgIGYyLmRpdkJ5WmVyb2ZpZXIoNCwgY2hhbGxlbmdlcy54aSk7XG5cbiAgICAgICAgICAgIGxldCBmMyA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgZjMuc3ViKHBvbHlub21pYWxzLlIyKTtcbiAgICAgICAgICAgIGYzLm11bFNjYWxhcihGci5zcXVhcmUoY2hhbGxlbmdlcy5hbHBoYSkpO1xuICAgICAgICAgICAgZjMuZGl2QnlaZXJvZmllcigzLCBjaGFsbGVuZ2VzLnhpKTtcbiAgICAgICAgICAgIGYzLmRpdkJ5WmVyb2ZpZXIoMywgY2hhbGxlbmdlcy54aXcpO1xuXG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmFkZChmMik7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLmFkZChmMyk7XG5cbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5GLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUgLSA2KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRiBQb2x5bm9taWFsIGlzIG5vdCB3ZWxsIGNhbGN1bGF0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiByb3VuZDUoKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgY2hhbGxlbmdlIHlcIik7XG5cbiAgICAgICAgLy8gU1RFUCA1LjEgLSBDb21wdXRlIHJhbmRvbSBldmFsdWF0aW9uIHBvaW50IHkg4oiIIEZcbiAgICAgICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudChwcm9vZi5nZXRQb2x5bm9taWFsKFwiVzFcIikpO1xuXG4gICAgICAgIGNoYWxsZW5nZXMueSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMueTogXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnkpKTtcblxuICAgICAgICAvLyBTVEVQIDUuMiAtIENvbXB1dGUgTChYKVxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEwgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZUwoKTtcblxuICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFpUUzIgcG9seW5vbWlhbFwiKTtcbiAgICAgICAgYXdhaXQgY29tcHV0ZVpUUzIoKTtcblxuICAgICAgICBsZXQgWlRTMlkgPSBwb2x5bm9taWFscy5aVFMyLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgIFpUUzJZID0gRnIuaW52KFpUUzJZKTtcbiAgICAgICAgcG9seW5vbWlhbHMuTC5tdWxTY2FsYXIoWlRTMlkpO1xuXG4gICAgICAgIGNvbnN0IHBvbERpdmlkZW5kID0gUG9seW5vbWlhbC5mcm9tQ29lZmZpY2llbnRzQXJyYXkoW0ZyLm5lZyhjaGFsbGVuZ2VzLnkpLCBGci5vbmVdLCBjdXJ2ZSk7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVycgPSBMIC8gWlRTMiBwb2x5bm9taWFsXCIpO1xuICAgICAgICBjb25zdCBwb2xSZW1haW5kZXIgPSBwb2x5bm9taWFscy5MLmRpdkJ5KHBvbERpdmlkZW5kKTtcblxuICAgICAgICAvL0NoZWNrIHBvbFJlbWluZGVyIGRlZ3JlZSBpcyBlcXVhbCB0byB6ZXJvXG4gICAgICAgIGlmIChwb2xSZW1haW5kZXIuZGVncmVlKCkgPiAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERlZ3JlZSBvZiBMKFgpLyhaVFMyKHkpKFgteSkpIHJlbWFpbmRlciBpcyAke3BvbFJlbWFpbmRlci5kZWdyZWUoKX0gYW5kIHNob3VsZCBiZSAwYCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9seW5vbWlhbHMuTC5kZWdyZWUoKSA+PSA5ICogemtleS5kb21haW5TaXplIC0gMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGVncmVlIG9mIEwoWCkvKFpUUzIoeSkoWC15KSkgaXMgbm90IGNvcnJlY3RcIik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUaGUgZmlmdGggb3V0cHV0IG9mIHRoZSBwcm92ZXIgaXMgKFtXMl1fMSksIHdoZXJlIFcyOj0oZi9aX3QpKHgpXG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgVycgbXVsdGkgZXhwb25lbnRpYXRpb25cIik7XG4gICAgICAgIGxldCBjb21taXRXMiA9IGF3YWl0IHBvbHlub21pYWxzLkwubXVsdGlFeHBvbmVudGlhdGlvbihQVGF1LCBcIlcyXCIpO1xuICAgICAgICBwcm9vZi5hZGRQb2x5bm9taWFsKFwiVzJcIiwgY29tbWl0VzIpO1xuXG4gICAgICAgIHJldHVybiAwO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVMKCkge1xuICAgICAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEwgcG9seW5vbWlhbFwiKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFIwWSA9IHBvbHlub21pYWxzLlIwLmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgICAgICBjb25zdCBldmFsUjFZID0gcG9seW5vbWlhbHMuUjEuZXZhbHVhdGUoY2hhbGxlbmdlcy55KTtcbiAgICAgICAgICAgIGNvbnN0IGV2YWxSMlkgPSBwb2x5bm9taWFscy5SMi5ldmFsdWF0ZShjaGFsbGVuZ2VzLnkpO1xuXG4gICAgICAgICAgICBsZXQgbXVsTDAgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMC5oMHc4WzBdKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbXVsTDAgPSBGci5tdWwobXVsTDAsIEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbaV0pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IG11bEwxID0gRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzEuaDF3NFswXSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICAgICAgICAgIG11bEwxID0gRnIubXVsKG11bEwxLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0W2ldKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBtdWxMMiA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbMF0pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMiA9IEZyLm11bChtdWxMMiwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDJ3M1tpXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcbiAgICAgICAgICAgICAgICBtdWxMMiA9IEZyLm11bChtdWxMMiwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzIuaDN3M1tpXSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcHJlTDAgPSBGci5tdWwobXVsTDEsIG11bEwyKTtcbiAgICAgICAgICAgIGxldCBwcmVMMSA9IEZyLm11bChjaGFsbGVuZ2VzLmFscGhhLCBGci5tdWwobXVsTDAsIG11bEwyKSk7XG4gICAgICAgICAgICBsZXQgcHJlTDIgPSBGci5tdWwoRnIuc3F1YXJlKGNoYWxsZW5nZXMuYWxwaGEpLCBGci5tdWwobXVsTDAsIG11bEwxKSk7XG5cbiAgICAgICAgICAgIHRvSW52ZXJzZVtcImRlbkgxXCJdID0gbXVsTDE7XG4gICAgICAgICAgICB0b0ludmVyc2VbXCJkZW5IMlwiXSA9IG11bEwyO1xuXG4gICAgICAgICAgICAvLyBDT01QVVRFIEwoWClcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMwLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwuc3ViU2NhbGFyKGV2YWxSMFkpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5tdWxTY2FsYXIocHJlTDApO1xuXG4gICAgICAgICAgICBsZXQgbDIgPSBQb2x5bm9taWFsLmZyb21Qb2x5bm9taWFsKHBvbHlub21pYWxzLkMxLCBjdXJ2ZSwgbG9nZ2VyKTtcbiAgICAgICAgICAgIGwyLnN1YlNjYWxhcihldmFsUjFZKTtcbiAgICAgICAgICAgIGwyLm11bFNjYWxhcihwcmVMMSk7XG5cbiAgICAgICAgICAgIGxldCBsMyA9IFBvbHlub21pYWwuZnJvbVBvbHlub21pYWwocG9seW5vbWlhbHMuQzIsIGN1cnZlLCBsb2dnZXIpO1xuICAgICAgICAgICAgbDMuc3ViU2NhbGFyKGV2YWxSMlkpO1xuICAgICAgICAgICAgbDMubXVsU2NhbGFyKHByZUwyKTtcblxuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5hZGQobDIpO1xuICAgICAgICAgICAgcG9seW5vbWlhbHMuTC5hZGQobDMpO1xuXG4gICAgICAgICAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIFpUIHBvbHlub21pYWxcIik7XG4gICAgICAgICAgICBhd2FpdCBjb21wdXRlWlQoKTtcblxuICAgICAgICAgICAgY29uc3QgZXZhbFpUWSA9IHBvbHlub21pYWxzLlpULmV2YWx1YXRlKGNoYWxsZW5nZXMueSk7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5GLm11bFNjYWxhcihldmFsWlRZKTtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLkwuc3ViKHBvbHlub21pYWxzLkYpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBkZWdyZWVcbiAgICAgICAgICAgIGlmIChwb2x5bm9taWFscy5MLmRlZ3JlZSgpID49IDkgKiB6a2V5LmRvbWFpblNpemUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJMIFBvbHlub21pYWwgaXMgbm90IHdlbGwgY2FsY3VsYXRlZFwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcnMuTDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbXB1dGVaVCgpIHtcbiAgICAgICAgICAgIHBvbHlub21pYWxzLlpUID0gUG9seW5vbWlhbC56ZXJvZmllclBvbHlub21pYWwoXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICByb290cy5TMC5oMHc4WzBdLCByb290cy5TMC5oMHc4WzFdLCByb290cy5TMC5oMHc4WzJdLCByb290cy5TMC5oMHc4WzNdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMC5oMHc4WzRdLCByb290cy5TMC5oMHc4WzVdLCByb290cy5TMC5oMHc4WzZdLCByb290cy5TMC5oMHc4WzddLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMS5oMXc0WzBdLCByb290cy5TMS5oMXc0WzFdLCByb290cy5TMS5oMXc0WzJdLCByb290cy5TMS5oMXc0WzNdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMi5oMnczWzBdLCByb290cy5TMi5oMnczWzFdLCByb290cy5TMi5oMnczWzJdLFxuICAgICAgICAgICAgICAgICAgICByb290cy5TMi5oM3czWzBdLCByb290cy5TMi5oM3czWzFdLCByb290cy5TMi5oM3czWzJdXSwgY3VydmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY29tcHV0ZVpUUzIoKSB7XG4gICAgICAgICAgICBwb2x5bm9taWFscy5aVFMyID0gUG9seW5vbWlhbC56ZXJvZmllclBvbHlub21pYWwoXG4gICAgICAgICAgICAgICAgW3Jvb3RzLlMxLmgxdzRbMF0sIHJvb3RzLlMxLmgxdzRbMV0sIHJvb3RzLlMxLmgxdzRbMl0sIHJvb3RzLlMxLmgxdzRbM10sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgydzNbMF0sIHJvb3RzLlMyLmgydzNbMV0sIHJvb3RzLlMyLmgydzNbMl0sXG4gICAgICAgICAgICAgICAgICAgIHJvb3RzLlMyLmgzdzNbMF0sIHJvb3RzLlMyLmgzdzNbMV0sIHJvb3RzLlMyLmgzdzNbMl1dLCBjdXJ2ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRNb250Z29tZXJ5QmF0Y2hlZEludmVyc2UoKSB7XG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgOCBhbmQgOSBvZiB0aGUgdmVyaWZpZXIgdG8gbXVsdGlwbHkgYnkgMS9aX0goeGkpXG4gICAgICAgIGxldCB4aU4gPSBjaGFsbGVuZ2VzLnhpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHprZXkucG93ZXI7IGkrKykge1xuICAgICAgICAgICAgeGlOID0gRnIuc3F1YXJlKHhpTik7XG4gICAgICAgIH1cbiAgICAgICAgdG9JbnZlcnNlW1wiemhcIl0gPSBGci5zdWIoeGlOLCBGci5vbmUpO1xuXG4gICAgICAgIC8vICAgwrcgZGVub21pbmF0b3IgbmVlZGVkIGluIHN0ZXAgMTAgYW5kIDExIG9mIHRoZSB2ZXJpZmllclxuICAgICAgICAvLyAgICAgdG9JbnZlcnNlLmRlbkgxICYgdG9JbnZlcnNlLmRlbkgyICAtPiBDb21wdXRlZCBpbiByb3VuZDUsIGNvbXB1dGVMKClcblxuICAgICAgICAvLyAgIMK3IGRlbm9taW5hdG9yIG5lZWRlZCBpbiB0aGUgdmVyaWZpZXIgd2hlbiBjb21wdXRpbmcgTF9pXntTMH0oWCksIExfaV57UzF9KFgpIGFuZCBMX2lee1MyfShYKVxuICAgICAgICBjb21wdXRlTGlTMCh0b0ludmVyc2UsIHJvb3RzLlMwLmgwdzgsIGNoYWxsZW5nZXMueSwgY3VydmUpO1xuXG4gICAgICAgIGNvbXB1dGVMaVMxKHRvSW52ZXJzZSwgcm9vdHMuUzEuaDF3NCwgY2hhbGxlbmdlcy55LCBjdXJ2ZSk7XG5cbiAgICAgICAgY29tcHV0ZUxpUzIodG9JbnZlcnNlLCByb290cy5TMi5oMnczLCByb290cy5TMi5oM3czLCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGNoYWxsZW5nZXMueGl3LCBjdXJ2ZSk7XG5cbiAgICAgICAgLy8gICDCtyBMX2kgaT0xIHRvIG51bSBwdWJsaWMgaW5wdXRzLCBuZWVkZWQgaW4gc3RlcCA2IGFuZCA3IG9mIHRoZSB2ZXJpZmllciB0byBjb21wdXRlIExfMSh4aSkgYW5kIFBJKHhpKVxuICAgICAgICBjb25zdCBzaXplID0gTWF0aC5tYXgoMSwgemtleS5uUHVibGljKTtcblxuICAgICAgICBsZXQgdyA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgICAgIHRvSW52ZXJzZVtcIkxpX1wiICsgKGkgKyAxKV0gPSBGci5tdWwoRnIuZSh6a2V5LmRvbWFpblNpemUpLCBGci5zdWIoY2hhbGxlbmdlcy54aSwgdykpO1xuICAgICAgICAgICAgdyA9IEZyLm11bCh3LCBGci53W3prZXkucG93ZXJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBtdWxBY2N1bXVsYXRvciA9IEZyLm9uZTtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIE9iamVjdC52YWx1ZXModG9JbnZlcnNlKSkge1xuICAgICAgICAgICAgaWYoQXJyYXkuaXNBcnJheShlbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViRWxlbWVudCBvZiBlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIG11bEFjY3VtdWxhdG9yID0gRnIubXVsKG11bEFjY3VtdWxhdG9yLCBzdWJFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG11bEFjY3VtdWxhdG9yID0gRnIubXVsKG11bEFjY3VtdWxhdG9yLCBlbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRnIuaW52KG11bEFjY3VtdWxhdG9yKTtcblxuICAgICAgICBcbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxpUzAodG9JbnZlcnNlLCByb290cywgeCwgY3VydmUpIHtcbiAgICAgICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZGVuMSA9IEZyLm11bChGci5lKGxlbiksIEZyLmV4cChyb290c1swXSwgbGVuIC0gMikpO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMwX1wiICsgKGkgKyAxKV1dID0gRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAgICAgcmV0dXJuIExpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY29tcHV0ZUxpUzEodG9JbnZlcnNlLCByb290cywgeCwgY3VydmUpIHtcbiAgICAgICAgICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG4gICAgICAgIFxuICAgICAgICAgICAgY29uc3QgZGVuMSA9IEZyLm11bChGci5lKGxlbiksIEZyLmV4cChyb290c1swXSwgbGVuIC0gMikpO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IExpID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgICAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih4LCByb290c1tpXSk7XG4gICAgICAgIFxuICAgICAgICAgICAgICAgIHRvSW52ZXJzZVtbXCJMaVMxX1wiICsgKGkgKyAxKV1dID0gRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMyk7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBjb21wdXRlTGlTMih0b0ludmVyc2UsIFMyLCBTMnAsIHZhbHVlLCB4aSwgeGl3LCBjdXJ2ZSkge1xuICAgICAgICAgICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBMaSA9IFtdO1xuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IF8zaDIgPSBGci5tdWwoRnIuZSgzKSwgUzJbMF0pO1xuICAgICAgICAgICAgY29uc3QgeGlzdWJ4aXcgPSBGci5zdWIoeGksIHhpdyk7XG4gICAgICAgICAgICBsZXQgZGVuMSA9IEZyLm11bChfM2gyLCB4aXN1Ynhpdyk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjIgPSBTMlsyICogaSAlIDNdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIodmFsdWUsIFMyW2ldKTtcbiAgICAgICAgXG4gICAgICAgICAgICAgICAgdG9JbnZlcnNlW1tcIkxpUzJfXCIgKyAoaSArIDEpXV0gPSBGci5tdWwoZGVuMSxGci5tdWwoZGVuMiwgZGVuMykpO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgIGNvbnN0IF8zaDMgPSBGci5tdWwoRnIuZSgzKSwgUzJwWzBdKTtcbiAgICAgICAgICAgIGNvbnN0IHhpd3N1YnhpID0gRnIuc3ViKHhpdywgeGkpO1xuICAgICAgICAgICAgZGVuMSA9IEZyLm11bChfM2gzLCB4aXdzdWJ4aSk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlbjIgPSBTMnBbMiAqIGkgJSAzXTtcbiAgICAgICAgICAgICAgICBjb25zdCBkZW4zID0gRnIuc3ViKHZhbHVlLCBTMnBbaV0pO1xuICAgICAgICBcbiAgICAgICAgICAgICAgICB0b0ludmVyc2VbW1wiTGlTMl9cIiArIChpICsgMSArIDMpXV0gPSBGci5tdWwoZGVuMSxGci5tdWwoZGVuMiwgZGVuMykpOyAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICByZXR1cm4gTGk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCIvKlxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0IGZmbG9ua1Byb3ZlIGZyb20gXCIuL2ZmbG9ua19wcm92ZS5qc1wiO1xuaW1wb3J0IHd0bnNfY2FsY3VsYXRlIGZyb20gXCIuL3d0bnNfY2FsY3VsYXRlLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5jb25zdCB7dW5zdHJpbmdpZnlCaWdJbnRzfSA9IHV0aWxzO1xuXG5leHBvcnQgZGVmYXVsdCBhc3luYyBmdW5jdGlvbiBmZmxvbmtGdWxsUHJvdmUoX2lucHV0LCB3YXNtRmlsZW5hbWUsIHprZXlGaWxlbmFtZSwgbG9nZ2VyLCB3dG5zQ2FsY09wdGlvbnMsIHByb3Zlck9wdGlvbnMpIHtcbiAgICBjb25zdCBpbnB1dCA9IHVuc3RyaW5naWZ5QmlnSW50cyhfaW5wdXQpO1xuXG4gICAgY29uc3Qgd3Rucz0ge3R5cGU6IFwibWVtXCJ9O1xuXG4gICAgLy8gQ29tcHV0ZSB0aGUgd2l0bmVzc1xuICAgIGF3YWl0IHd0bnNfY2FsY3VsYXRlKGlucHV0LCB3YXNtRmlsZW5hbWUsIHd0bnMsIHd0bnNDYWxjT3B0aW9ucyk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBwcm9vZlxuICAgIHJldHVybiBhd2FpdCBmZmxvbmtQcm92ZSh6a2V5RmlsZW5hbWUsIHd0bnMsIGxvZ2dlciwgcHJvdmVyT3B0aW9ucyk7XG59IiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuaW1wb3J0ICogYXMgY3VydmVzIGZyb20gXCIuL2N1cnZlcy5qc1wiO1xuaW1wb3J0IHsgQmlnQnVmZmVyLCB1dGlscyB9IGZyb20gXCJmZmphdmFzY3JpcHRcIjtcbmltcG9ydCB7IFByb29mIH0gZnJvbSBcIi4vcHJvb2YuanNcIjtcbmltcG9ydCB7IEtlY2NhazI1NlRyYW5zY3JpcHQgfSBmcm9tIFwiLi9LZWNjYWsyNTZUcmFuc2NyaXB0LmpzXCI7XG5pbXBvcnQgeyBTY2FsYXIgfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IHsgdW5zdHJpbmdpZnlCaWdJbnRzIH0gPSB1dGlscztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmZsb25rVmVyaWZ5KF92a192ZXJpZmllciwgX3B1YmxpY1NpZ25hbHMsIF9wcm9vZiwgbG9nZ2VyKSB7XG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCJGRkxPTksgVkVSSUZJRVIgU1RBUlRFRFwiKTtcblxuICAgIF92a192ZXJpZmllciA9IHVuc3RyaW5naWZ5QmlnSW50cyhfdmtfdmVyaWZpZXIpO1xuICAgIF9wcm9vZiA9IHVuc3RyaW5naWZ5QmlnSW50cyhfcHJvb2YpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBjdXJ2ZXMuZ2V0Q3VydmVGcm9tTmFtZShfdmtfdmVyaWZpZXIuY3VydmUpO1xuXG4gICAgY29uc3QgdmsgPSBmcm9tT2JqZWN0VmsoY3VydmUsIF92a192ZXJpZmllcik7XG5cbiAgICAvLyBUT0RPID8/PyBDb21wdXRlIHdyXjMgYW5kIGNoZWNrIGlmIGl0IG1hdGNoZXMgd2l0aCB3XG5cbiAgICBjb25zdCBwcm9vZiA9IG5ldyBQcm9vZihjdXJ2ZSwgbG9nZ2VyKTtcbiAgICBwcm9vZi5mcm9tT2JqZWN0UHJvb2YoX3Byb29mKTtcblxuICAgIGNvbnN0IHB1YmxpY1NpZ25hbHMgPSB1bnN0cmluZ2lmeUJpZ0ludHMoX3B1YmxpY1NpZ25hbHMpO1xuXG4gICAgaWYgKHB1YmxpY1NpZ25hbHMubGVuZ3RoICE9PSB2ay5uUHVibGljKSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihcIk51bWJlciBvZiBwdWJsaWMgc2lnbmFscyBkb2VzIG5vdCBtYXRjaCB3aXRoIHZrXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGlmIChsb2dnZXIpIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIiAgRkZMT05LIFZFUklGWSBTRVRUSU5HU1wiKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oYCAgQ3VydmU6ICAgICAgICAgJHtjdXJ2ZS5uYW1lfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBDaXJjdWl0IHBvd2VyOiAke3ZrLnBvd2VyfWApO1xuICAgICAgICBsb2dnZXIuaW5mbyhgICBEb21haW4gc2l6ZTogICAkezIgKiogdmsucG93ZXJ9YCk7XG4gICAgICAgIGxvZ2dlci5pbmZvKGAgIFB1YmxpYyB2YXJzOiAgICR7dmsublB1YmxpY31gKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXCIpO1xuICAgIH1cblxuICAgIC8vIFNURVAgMSAtIFZhbGlkYXRlIHRoYXQgYWxsIHBvbHlub21pYWwgY29tbWl0bWVudHMg4oiIIEdfMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyBjb21taXRtZW50cyBiZWxvbmcgdG8gRzFcIik7XG4gICAgaWYgKCFjb21taXRtZW50c0JlbG9uZ1RvRzEoY3VydmUsIHByb29mLCB2aykpIHtcbiAgICAgICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmVycm9yKFwiUHJvb2YgY29tbWl0bWVudHMgYXJlIG5vdCB2YWxpZFwiKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNURVAgMiAtIFZhbGlkYXRlIHRoYXQgYWxsIGV2YWx1YXRpb25zIOKIiCBGXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCI+IENoZWNraW5nIGV2YWx1YXRpb25zIGJlbG9uZyB0byBGXCIpO1xuICAgIGlmICghZXZhbHVhdGlvbnNBcmVWYWxpZChjdXJ2ZSwgcHJvb2YpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlByb29mIGV2YWx1YXRpb25zIGFyZSBub3QgdmFsaWQuXCIpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gU1RFUCAzIC0gVmFsaWRhdGUgdGhhdCB3X2kg4oiIIEYgZm9yIGkg4oiIIFtsXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDaGVja2luZyBwdWJsaWMgaW5wdXRzIGJlbG9uZyB0byBGXCIpO1xuICAgIGlmICghcHVibGljSW5wdXRzQXJlVmFsaWQoY3VydmUsIHB1YmxpY1NpZ25hbHMpKSB7XG4gICAgICAgIGlmIChsb2dnZXIpIGxvZ2dlci5lcnJvcihcIlB1YmxpYyBpbnB1dHMgYXJlIG5vdCB2YWxpZC5cIik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTVEVQIDQgLSBDb21wdXRlIHRoZSBjaGFsbGVuZ2VzOiBiZXRhLCBnYW1tYSwgeGksIGFscGhhIGFuZCB5IOKIiCBGXG4gICAgLy8gYXMgaW4gcHJvdmVyIGRlc2NyaXB0aW9uLCBmcm9tIHRoZSBjb21tb24gcHJlcHJvY2Vzc2VkIGlucHV0cywgcHVibGljIGlucHV0cyBhbmQgZWxlbWVudHMgb2Ygz4BfU05BUktcbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIGNoYWxsZW5nZXNcIik7XG4gICAgY29uc3QgeyBjaGFsbGVuZ2VzLCByb290cyB9ID0gY29tcHV0ZUNoYWxsZW5nZXMoY3VydmUsIHByb29mLCB2aywgcHVibGljU2lnbmFscywgbG9nZ2VyKTtcblxuICAgIC8vIFNURVAgNSAtIENvbXB1dGUgdGhlIHplcm8gcG9seW5vbWlhbCBldmFsdWF0aW9uIFpfSCh4aSkgPSB4aV5uIC0gMVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgWmVybyBwb2x5bm9taWFsIGV2YWx1YXRpb24gWl9IKHhpKVwiKTtcbiAgICBjaGFsbGVuZ2VzLnpoID0gRnIuc3ViKGNoYWxsZW5nZXMueGlOLCBGci5vbmUpO1xuICAgIGNoYWxsZW5nZXMuaW52emggPSBGci5pbnYoY2hhbGxlbmdlcy56aCk7XG5cbiAgICAvLyBTVEVQIDYgLSBDb21wdXRlIHRoZSBsYWdyYW5nZSBwb2x5bm9taWFsIGV2YWx1YXRpb24gTF8xKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgTGFncmFuZ2UgZXZhbHVhdGlvbnNcIik7XG4gICAgY29uc3QgbGFncmFuZ2VFdmFscyA9IGF3YWl0IGNvbXB1dGVMYWdyYW5nZUV2YWx1YXRpb25zKGN1cnZlLCBjaGFsbGVuZ2VzLCB2ayk7XG5cbiAgICAvLyBTVEVQIDcgLSBDb21wdXRlIHB1YmxpYyBpbnB1dCBldmFsdWF0aW9uIFBJKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcG9seW5vbWlhbCBpZGVudGl0aWVzIFBJKFgpXCIpO1xuICAgIGNvbnN0IHBpID0gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIGxhZ3JhbmdlRXZhbHMpO1xuXG4gICAgLy8gU1RFUCA4IC0gQ29tcHV0ZSBwb2x5bm9taWFsIHIwIOKIiCBGX3s8NH1bWF1cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIHIwKHkpXCIpO1xuICAgIGNvbnN0IHIwID0gY29tcHV0ZVIwKHByb29mLCBjaGFsbGVuZ2VzLCByb290cywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAvLyBTVEVQIDkgLSBDb21wdXRlIHBvbHlub21pYWwgcjEg4oiIIEZfezw0fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjEoeSlcIik7XG4gICAgY29uc3QgcjEgPSBjb21wdXRlUjEocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBwaSwgY3VydmUsIGxvZ2dlcik7XG5cbiAgICAvLyBTVEVQIDkgLSBDb21wdXRlIHBvbHlub21pYWwgcjIg4oiIIEZfezw2fVtYXVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgcjIoeSlcIik7XG4gICAgY29uc3QgcjIgPSBjb21wdXRlUjIocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBsYWdyYW5nZUV2YWxzWzFdLCB2aywgY3VydmUsIGxvZ2dlcik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEZcIik7XG4gICAgY29uc3QgRiA9IGNvbXB1dGVGKGN1cnZlLCBwcm9vZiwgdmssIGNoYWxsZW5nZXMsIHJvb3RzKTtcblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiPiBDb21wdXRpbmcgRVwiKTtcbiAgICBjb25zdCBFID0gY29tcHV0ZUUoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgcjAsIHIxLCByMik7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gQ29tcHV0aW5nIEpcIik7XG4gICAgY29uc3QgSiA9IGNvbXB1dGVKKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcyk7XG5cbiAgICBpZiAobG9nZ2VyKSBsb2dnZXIuaW5mbyhcIj4gVmFsaWRhdGUgYWxsIGV2YWx1YXRpb25zIHdpdGggYSBwYWlyaW5nXCIpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGlzVmFsaWRQYWlyaW5nKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcywgdmssIEYsIEUsIEopO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICBsb2dnZXIuaW5mbyhcIlBST09GIFZFUklGSUVEIFNVQ0NFU1NGVUxMWVwiKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiSW52YWxpZCBQcm9vZlwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiRkZMT05LIFZFUklGSUVSIEZJTklTSEVEXCIpO1xuXG4gICAgcmV0dXJuIHJlcztcblxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0VmsoY3VydmUsIHZrKSB7XG4gICAgY29uc3QgcmVzID0gdms7XG4gICAgcmVzLmsxID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay5rMSk7XG4gICAgcmVzLmsyID0gY3VydmUuRnIuZnJvbU9iamVjdCh2ay5rMik7XG4gICAgcmVzLncgPSBjdXJ2ZS5Gci5mcm9tT2JqZWN0KHZrLncpO1xuICAgIC8vIHJlcy53VyA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsud1cpO1xuICAgIHJlcy53MyA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzMpO1xuICAgIHJlcy53NCA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzQpO1xuICAgIHJlcy53OCA9IGN1cnZlLkZyLmZyb21PYmplY3QodmsudzgpO1xuICAgIHJlcy53ciA9IGN1cnZlLkZyLmZyb21PYmplY3Qodmsud3IpO1xuICAgIHJlcy5YXzIgPSBjdXJ2ZS5HMi5mcm9tT2JqZWN0KHZrLlhfMik7XG4gICAgcmVzLkMwID0gY3VydmUuRzEuZnJvbU9iamVjdCh2ay5DMCk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29tbWl0bWVudHNCZWxvbmdUb0cxKGN1cnZlLCBwcm9vZiwgdmspIHtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIHJldHVybiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLkMxKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLkMyKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLlcxKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHByb29mLnBvbHlub21pYWxzLlcyKVxuICAgICAgICAmJiBHMS5pc1ZhbGlkKHZrLkMwKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tWYWx1ZUJlbG9uZ1RvRmllbGQoY3VydmUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIFNjYWxhci5sdCh2YWx1ZSwgY3VydmUucik7XG59XG5cbmZ1bmN0aW9uIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIGV2YWx1YXRpb24pIHtcbiAgICByZXR1cm4gY2hlY2tWYWx1ZUJlbG9uZ1RvRmllbGQoY3VydmUsIFNjYWxhci5mcm9tUnByTEUoZXZhbHVhdGlvbikpO1xufVxuXG5mdW5jdGlvbiBldmFsdWF0aW9uc0FyZVZhbGlkKGN1cnZlLCBwcm9vZikge1xuICAgIHJldHVybiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xbClcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucXIpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnFtKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5xbylcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMucWMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnMxKVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy5zMilcbiAgICAgICAgJiYgY2hlY2tFdmFsdWF0aW9uSXNWYWxpZChjdXJ2ZSwgcHJvb2YuZXZhbHVhdGlvbnMuczMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmEpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmIpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLmMpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnopXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnp3KVxuICAgICAgICAmJiBjaGVja0V2YWx1YXRpb25Jc1ZhbGlkKGN1cnZlLCBwcm9vZi5ldmFsdWF0aW9ucy50MXcpXG4gICAgICAgICYmIGNoZWNrRXZhbHVhdGlvbklzVmFsaWQoY3VydmUsIHByb29mLmV2YWx1YXRpb25zLnQydyk7XG59XG5cbmZ1bmN0aW9uIHB1YmxpY0lucHV0c0FyZVZhbGlkKGN1cnZlLCBwdWJsaWNJbnB1dHMpIHtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgcHVibGljSW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmKCFjaGVja1ZhbHVlQmVsb25nVG9GaWVsZChjdXJ2ZSwgcHVibGljSW5wdXRzW2ldKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQ2hhbGxlbmdlcyhjdXJ2ZSwgcHJvb2YsIHZrLCBwdWJsaWNTaWduYWxzLCBsb2dnZXIpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgY2hhbGxlbmdlcyA9IHt9O1xuICAgIGNvbnN0IHJvb3RzID0ge307XG4gICAgY29uc3QgdHJhbnNjcmlwdCA9IG5ldyBLZWNjYWsyNTZUcmFuc2NyaXB0KGN1cnZlKTtcblxuICAgIC8vIEFkZCBDMCB0byB0aGUgdHJhbnNjcmlwdFxuICAgIHRyYW5zY3JpcHQuYWRkUG9sQ29tbWl0bWVudCh2ay5DMCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoRnIuZShwdWJsaWNTaWduYWxzW2ldKSk7XG4gICAgfVxuXG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLkMxKTtcbiAgICBjaGFsbGVuZ2VzLmJldGEgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIHRyYW5zY3JpcHQucmVzZXQoKTtcblxuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKGNoYWxsZW5nZXMuYmV0YSk7XG4gICAgY2hhbGxlbmdlcy5nYW1tYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5nYW1tYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLkMyKTtcbiAgICBjb25zdCB4aVNlZWQgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuICAgIGNvbnN0IHhpU2VlZDIgPSBGci5zcXVhcmUoeGlTZWVkKTtcblxuICAgIGxldCB3OCA9IFtdO1xuICAgIHc4WzFdID0gdmsudzg7XG4gICAgdzhbMl0gPSBGci5zcXVhcmUodmsudzgpO1xuICAgIHc4WzNdID0gRnIubXVsKHc4WzJdLCB2ay53OCk7XG4gICAgdzhbNF0gPSBGci5tdWwodzhbM10sIHZrLnc4KTtcbiAgICB3OFs1XSA9IEZyLm11bCh3OFs0XSwgdmsudzgpO1xuICAgIHc4WzZdID0gRnIubXVsKHc4WzVdLCB2ay53OCk7XG4gICAgdzhbN10gPSBGci5tdWwodzhbNl0sIHZrLnc4KTtcbiAgICBsZXQgdzQgPSBbXTtcbiAgICB3NFsxXSA9IHZrLnc0O1xuICAgIHc0WzJdID0gRnIuc3F1YXJlKHZrLnc0KTtcbiAgICB3NFszXSA9IEZyLm11bCh3NFsyXSwgdmsudzQpO1xuICAgIGxldCB3MyA9IFtdO1xuICAgIHczWzFdID0gdmsudzM7XG4gICAgdzNbMl0gPSBGci5zcXVhcmUodmsudzMpO1xuXG4gICAgLy8gY29uc3QgdzRfMiA9IEZyLnNxdWFyZSh2ay53NCk7XG4gICAgLy8gY29uc3QgdzRfMyA9IEZyLm11bCh3NF8yLCB2ay53NCk7XG4gICAgLy8gY29uc3QgdzNfMiA9IEZyLnNxdWFyZSh2ay53Myk7XG5cbiAgICAvLyBDb21wdXRlIGgwID0geGlTZWVkZXJeM1xuICAgIHJvb3RzLlMwID0ge307XG4gICAgcm9vdHMuUzAuaDB3OCA9IFtdO1xuICAgIHJvb3RzLlMwLmgwdzhbMF0gPSBGci5tdWwoeGlTZWVkMiwgeGlTZWVkKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDg7IGkrKykge1xuICAgICAgICByb290cy5TMC5oMHc4W2ldID0gRnIubXVsKHJvb3RzLlMwLmgwdzhbMF0sIHc4W2ldKTtcbiAgICB9XG5cbiAgICAvLyBDb21wdXRlIGgxID0geGlfc2VlZGVyXjZcbiAgICByb290cy5TMSA9IHt9O1xuICAgIHJvb3RzLlMxLmgxdzQgPSBbXTtcbiAgICByb290cy5TMS5oMXc0WzBdID0gRnIuc3F1YXJlKHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHJvb3RzLlMxLmgxdzRbaV0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgdzRbaV0pO1xuICAgIH1cblxuICAgIC8vIENvbXB1dGUgaDIgPSB4aV9zZWVkZXJeOFxuICAgIHJvb3RzLlMyID0ge307XG4gICAgcm9vdHMuUzIuaDJ3MyA9IFtdO1xuICAgIHJvb3RzLlMyLmgydzNbMF0gPSBGci5tdWwocm9vdHMuUzEuaDF3NFswXSwgeGlTZWVkMik7XG4gICAgcm9vdHMuUzIuaDJ3M1sxXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCB3M1sxXSk7XG4gICAgcm9vdHMuUzIuaDJ3M1syXSA9IEZyLm11bChyb290cy5TMi5oMnczWzBdLCB3M1syXSk7XG5cbiAgICByb290cy5TMi5oM3czID0gW107XG4gICAgLy8gTXVsdGlwbHkgaDMgYnkgdGhpcmQtcm9vdC1vbWVnYSB0byBvYnRhaW4gaF8zXjMgPSB4ac+JXG4gICAgLy8gU28sIGgzID0geGlfc2VlZGVyXjggz4leezEvM31cbiAgICByb290cy5TMi5oM3czWzBdID0gRnIubXVsKHJvb3RzLlMyLmgydzNbMF0sIHZrLndyKTtcbiAgICByb290cy5TMi5oM3czWzFdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHczWzFdKTtcbiAgICByb290cy5TMi5oM3czWzJdID0gRnIubXVsKHJvb3RzLlMyLmgzdzNbMF0sIHczWzJdKTtcblxuICAgIC8vIENvbXB1dGUgeGkgPSB4aV9zZWVkZXJeMTJcbiAgICBjaGFsbGVuZ2VzLnhpID0gRnIubXVsKEZyLnNxdWFyZShyb290cy5TMi5oMnczWzBdKSwgcm9vdHMuUzIuaDJ3M1swXSk7XG4gICAgY2hhbGxlbmdlcy54aXcgPSBGci5tdWwoY2hhbGxlbmdlcy54aSwgRnIud1t2ay5wb3dlcl0pO1xuXG4gICAgY2hhbGxlbmdlcy54aU4gPSBjaGFsbGVuZ2VzLnhpO1xuICAgIHZrLmRvbWFpblNpemUgPSAxO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmsucG93ZXI7IGkrKykge1xuICAgICAgICBjaGFsbGVuZ2VzLnhpTiA9IEZyLnNxdWFyZShjaGFsbGVuZ2VzLnhpTik7XG4gICAgICAgIHZrLmRvbWFpblNpemUgKj0gMjtcbiAgICB9XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoeGlTZWVkKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xbCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucXIpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnFtKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5xbyk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMucWMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnMxKTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy5zMik7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIocHJvb2YuZXZhbHVhdGlvbnMuczMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmEpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmIpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLmMpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnopO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnp3KTtcbiAgICB0cmFuc2NyaXB0LmFkZFNjYWxhcihwcm9vZi5ldmFsdWF0aW9ucy50MXcpO1xuICAgIHRyYW5zY3JpcHQuYWRkU2NhbGFyKHByb29mLmV2YWx1YXRpb25zLnQydyk7XG4gICAgY2hhbGxlbmdlcy5hbHBoYSA9IHRyYW5zY3JpcHQuZ2V0Q2hhbGxlbmdlKCk7XG5cbiAgICB0cmFuc2NyaXB0LnJlc2V0KCk7XG4gICAgdHJhbnNjcmlwdC5hZGRTY2FsYXIoY2hhbGxlbmdlcy5hbHBoYSk7XG4gICAgdHJhbnNjcmlwdC5hZGRQb2xDb21taXRtZW50KHByb29mLnBvbHlub21pYWxzLlcxKTtcbiAgICBjaGFsbGVuZ2VzLnkgPSB0cmFuc2NyaXB0LmdldENoYWxsZW5nZSgpO1xuXG4gICAgaWYgKGxvZ2dlcikge1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmJldGE6ICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuYmV0YSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLmdhbW1hOiBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMuZ2FtbWEpKTtcbiAgICAgICAgbG9nZ2VyLmluZm8oXCLCt8K3wrcgY2hhbGxlbmdlcy54aTogICAgXCIgKyBGci50b1N0cmluZyhjaGFsbGVuZ2VzLnhpKSk7XG4gICAgICAgIGxvZ2dlci5pbmZvKFwiwrfCt8K3IGNoYWxsZW5nZXMuYWxwaGE6IFwiICsgRnIudG9TdHJpbmcoY2hhbGxlbmdlcy5hbHBoYSkpO1xuICAgICAgICBsb2dnZXIuaW5mbyhcIsK3wrfCtyBjaGFsbGVuZ2VzLnk6ICAgICBcIiArIEZyLnRvU3RyaW5nKGNoYWxsZW5nZXMueSkpO1xuICAgIH1cblxuICAgIHJldHVybiB7IGNoYWxsZW5nZXM6IGNoYWxsZW5nZXMsIHJvb3RzOiByb290cyB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb21wdXRlTGFncmFuZ2VFdmFsdWF0aW9ucyhjdXJ2ZSwgY2hhbGxlbmdlcywgdmspIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3Qgc2l6ZSA9IE1hdGgubWF4KDEsIHZrLm5QdWJsaWMpO1xuICAgIGNvbnN0IG51bUFyciA9IG5ldyBCaWdCdWZmZXIoc2l6ZSAqIEZyLm44KTtcbiAgICBsZXQgZGVuQXJyID0gbmV3IEJpZ0J1ZmZlcihzaXplICogRnIubjgpO1xuXG4gICAgbGV0IHcgPSBGci5vbmU7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG4gICAgICAgIG51bUFyci5zZXQoRnIubXVsKHcsIGNoYWxsZW5nZXMuemgpLCBpX3NGcik7XG4gICAgICAgIGRlbkFyci5zZXQoRnIubXVsKEZyLmUodmsuZG9tYWluU2l6ZSksIEZyLnN1YihjaGFsbGVuZ2VzLnhpLCB3KSksIGlfc0ZyKTtcbiAgICAgICAgdyA9IEZyLm11bCh3LCB2ay53KTtcbiAgICB9XG5cbiAgICBkZW5BcnIgPSBhd2FpdCBGci5iYXRjaEludmVyc2UoZGVuQXJyKTtcblxuICAgIGxldCBMID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHtcbiAgICAgICAgY29uc3QgaV9zRnIgPSBpICogRnIubjg7XG4gICAgICAgIExbaSArIDFdID0gRnIubXVsKG51bUFyci5zbGljZShpX3NGciwgaV9zRnIgKyBGci5uOCksIGRlbkFyci5zbGljZShpX3NGciwgaV9zRnIgKyBGci5uOCkpO1xuICAgIH1cbiAgICByZXR1cm4gTDtcbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlUEkoY3VydmUsIHB1YmxpY1NpZ25hbHMsIGxhZ3JhbmdlRXZhbHMpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgbGV0IHBpID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY1NpZ25hbHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgdyA9IEZyLmUocHVibGljU2lnbmFsc1tpXSk7XG4gICAgICAgIHBpID0gRnIuc3ViKHBpLCBGci5tdWwodywgbGFncmFuZ2VFdmFsc1tpICsgMV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIHBpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjAocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBjdXJ2ZSwgbG9nZ2VyKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGNvbnN0IExpID0gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cy5TMC5oMHc4LCBjaGFsbGVuZ2VzLnksIGNoYWxsZW5nZXMueGksIGN1cnZlKTtcblxuICAgIC8vIHIwKHkpID0g4oiRXzFeOCBDXzAoaF8wIM+JXzhee2ktMX0pIExfaSh5KS4gVG8gdGhpcyBlbmQgd2UgbmVlZCB0byBjb21wdXRlXG5cbiAgICAvLyBDb21wdXRlIHRoZSA4IEMwIHZhbHVlc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyByMCh5KVwiKTtcblxuICAgIGxldCByZXMgPSBGci56ZXJvO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIGxldCBjb2VmVmFsdWVzID0gW107XG4gICAgICAgIGNvZWZWYWx1ZXNbMV0gPSByb290cy5TMC5oMHc4W2ldO1xuICAgICAgICBmb3IgKGxldCBqID0gMjsgaiA8IDg7IGorKykge1xuICAgICAgICAgICAgY29lZlZhbHVlc1tqXSA9IEZyLm11bChjb2VmVmFsdWVzW2ogLSAxXSwgcm9vdHMuUzAuaDB3OFtpXSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYzAgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMucWwsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xciwgY29lZlZhbHVlc1sxXSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFvLCBjb2VmVmFsdWVzWzJdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucW0sIGNvZWZWYWx1ZXNbM10pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5xYywgY29lZlZhbHVlc1s0XSkpO1xuICAgICAgICBjMCA9IEZyLmFkZChjMCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnMxLCBjb2VmVmFsdWVzWzVdKSk7XG4gICAgICAgIGMwID0gRnIuYWRkKGMwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuczIsIGNvZWZWYWx1ZXNbNl0pKTtcbiAgICAgICAgYzAgPSBGci5hZGQoYzAsIEZyLm11bChwcm9vZi5ldmFsdWF0aW9ucy5zMywgY29lZlZhbHVlc1s3XSkpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMCwgTGlbaV0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlUjEocHJvb2YsIGNoYWxsZW5nZXMsIHJvb3RzLCBwaSwgY3VydmUsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaSA9IGNvbXB1dGVMYWdyYW5nZUxpU2kocm9vdHMuUzEuaDF3NCwgY2hhbGxlbmdlcy55LCBjaGFsbGVuZ2VzLnhpLCBjdXJ2ZSk7XG5cbiAgICAvLyByMSh5KSA9IOKIkV8xXjQgQ18xKGhfMSDPiV80XntpLTF9KSBMX2koeSkuIFRvIHRoaXMgZW5kIHdlIG5lZWQgdG8gY29tcHV0ZVxuICAgIC8vIFoxID0ge0MxKGhfMX0sIEMxKGhfMSDPiV80KSwgQzEoaF8xIM+JXzReMiksIEMxKGhfMSDPiV80XjMpfVxuICAgIC8vIHdoZXJlIENfMShoXzEgz4lfNF57aS0xfSkgPSBldmFsLmEgKyBoXzEgz4lfNF5pIGV2YWwuYiArIChoXzEgz4lfNF5pKV4yIGV2YWwuYyArIChoXzEgz4lfNF5pKV4zIFQwKHhpKSxcbiAgICAvLyB3aGVyZSBUMCh4aSkgPSBbIHFMwrdhICsgcVLCt2IgKyBxTcK3YcK3YiArIHFPwrdjICsgcUMgKyBQSSh4aSkgXSAvIFpfSCh4aSlcblxuICAgIC8vIENvbXB1dGUgVDAoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQwKHhpKVwiKTtcbiAgICBsZXQgdDAgPSBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucWwsIHByb29mLmV2YWx1YXRpb25zLmEpO1xuICAgIHQwID0gRnIuYWRkKHQwLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMucXIsIHByb29mLmV2YWx1YXRpb25zLmIpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFtLCBGci5tdWwocHJvb2YuZXZhbHVhdGlvbnMuYSwgcHJvb2YuZXZhbHVhdGlvbnMuYikpKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgRnIubXVsKHByb29mLmV2YWx1YXRpb25zLnFvLCBwcm9vZi5ldmFsdWF0aW9ucy5jKSk7XG4gICAgdDAgPSBGci5hZGQodDAsIHByb29mLmV2YWx1YXRpb25zLnFjKTtcbiAgICB0MCA9IEZyLmFkZCh0MCwgcGkpO1xuICAgIHQwID0gRnIubXVsKHQwLCBjaGFsbGVuZ2VzLmludnpoKTtcblxuICAgIC8vIENvbXB1dGUgdGhlIDQgQzEgdmFsdWVzXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIEMxKGhfMc+JXzReaSkgdmFsdWVzXCIpO1xuXG4gICAgbGV0IHJlcyA9IEZyLnplcm87XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgICAgbGV0IGMxID0gcHJvb2YuZXZhbHVhdGlvbnMuYTtcbiAgICAgICAgYzEgPSBGci5hZGQoYzEsIEZyLm11bChyb290cy5TMS5oMXc0W2ldLCBwcm9vZi5ldmFsdWF0aW9ucy5iKSk7XG4gICAgICAgIGNvbnN0IGgxdzRTcXVhcmVkID0gRnIuc3F1YXJlKHJvb3RzLlMxLmgxdzRbaV0pO1xuICAgICAgICBjMSA9IEZyLmFkZChjMSwgRnIubXVsKGgxdzRTcXVhcmVkLCBwcm9vZi5ldmFsdWF0aW9ucy5jKSk7XG4gICAgICAgIGMxID0gRnIuYWRkKGMxLCBGci5tdWwoRnIubXVsKGgxdzRTcXVhcmVkLCByb290cy5TMS5oMXc0W2ldKSwgdDApKTtcblxuICAgICAgICByZXMgPSBGci5hZGQocmVzLCBGci5tdWwoYzEsIExpW2ldKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVIyKHByb29mLCBjaGFsbGVuZ2VzLCByb290cywgbGFncmFuZ2UxLCB2aywgY3VydmUsIGxvZ2dlcikge1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBjb25zdCBMaVMyID0gY29tcHV0ZUxhZ3JhbmdlTGlTMihbcm9vdHMuUzIuaDJ3Mywgcm9vdHMuUzIuaDN3M10sIGNoYWxsZW5nZXMueSwgY2hhbGxlbmdlcy54aSwgY2hhbGxlbmdlcy54aXcsIGN1cnZlKTtcblxuICAgIC8vIHIyKHkpID0g4oiRXzFeMyBDXzIoaF8yIM+JXzNee2ktMX0pIExfaSh5KSArIOKIkV8xXjMgQ18yKGhfMyDPiV8zXntpLTF9KSBMX3tpKzN9KHkpLiBUbyB0aGlzIGVuZCB3ZSBuZWVkIHRvIGNvbXB1dGVcbiAgICAvLyBaMiA9IHtbQzIoaF8yfSwgQzIoaF8yIM+JXzMpLCBDMihoXzIgz4lfM14yKV0sIFtDMihoXzN9LCBDMihoXzMgz4lfMyksIEMyKGhfMyDPiV8zXjIpXX1cbiAgICAvLyB3aGVyZSBDXzIoaF8yIM+JXzNee2ktMX0pID0gZXZhbC56ICsgaF8yIM+JXzJeaSBUMSh4aSkgKyAoaF8yIM+JXzNeaSleMiBUMih4aSksXG4gICAgLy8gd2hlcmUgQ18yKGhfMyDPiV8zXntpLTF9KSA9IGV2YWwueiArIGhfMyDPiV8yXmkgVDEoeGkpICsgKGhfMyDPiV8zXmkpXjIgVDIoeGkpLFxuICAgIC8vIHdoZXJlIFQxKHhpKSA9IFsgTF8xKHhpKSh6LTEpXSAvIFpfSCh4aSlcbiAgICAvLyBhbmQgVDIoeGkpID0gWyAgKGEgKyBiZXRhwrd4aSArIGdhbW1hKShiICsgYmV0YcK3eGnCt2sxICsgZ2FtbWEpKGMgKyBiZXRhwrd4acK3azIgKyBnYW1tYSl6XG4gICAgLy8gICAgICAgICAgICAgICAtIChhICsgYmV0YcK3c2lnbWExICsgZ2FtbWEpKGIgKyBiZXRhwrdzaWdtYTIgKyBnYW1tYSkoYyArIGJldGHCt3NpZ21hMyArIGdhbW1hKXrPiSAgXSAvIFpfSCh4aSlcblxuICAgIC8vIENvbXB1dGUgVDEoeGkpXG4gICAgaWYgKGxvZ2dlcikgbG9nZ2VyLmluZm8oXCLCt8K3wrcgQ29tcHV0aW5nIFQxKHhpKVwiKTtcbiAgICBsZXQgdDEgPSBGci5zdWIocHJvb2YuZXZhbHVhdGlvbnMueiwgRnIub25lKTtcbiAgICB0MSA9IEZyLm11bCh0MSwgbGFncmFuZ2UxKTtcbiAgICB0MSA9IEZyLm11bCh0MSwgY2hhbGxlbmdlcy5pbnZ6aCk7XG5cbiAgICAvLyBDb21wdXRlIFQyKHhpKVxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBUMih4aSlcIik7XG4gICAgY29uc3QgYmV0YXhpID0gRnIubXVsKGNoYWxsZW5nZXMuYmV0YSwgY2hhbGxlbmdlcy54aSk7XG4gICAgY29uc3QgdDIxMSA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5hLCBGci5hZGQoYmV0YXhpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxMiA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5iLCBGci5hZGQoRnIubXVsKGJldGF4aSwgdmsuazEpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxMyA9IEZyLmFkZChwcm9vZi5ldmFsdWF0aW9ucy5jLCBGci5hZGQoRnIubXVsKGJldGF4aSwgdmsuazIpLCBjaGFsbGVuZ2VzLmdhbW1hKSk7XG4gICAgY29uc3QgdDIxID0gRnIubXVsKHQyMTEsIEZyLm11bCh0MjEyLCBGci5tdWwodDIxMywgcHJvb2YuZXZhbHVhdGlvbnMueikpKTtcblxuICAgIGNvbnN0IHQyMjEgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYSwgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMxKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMjIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYiwgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMyKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMjMgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuYywgRnIuYWRkKEZyLm11bChjaGFsbGVuZ2VzLmJldGEsIHByb29mLmV2YWx1YXRpb25zLnMzKSwgY2hhbGxlbmdlcy5nYW1tYSkpO1xuICAgIGNvbnN0IHQyMiA9IEZyLm11bCh0MjIxLCBGci5tdWwodDIyMiwgRnIubXVsKHQyMjMsIHByb29mLmV2YWx1YXRpb25zLnp3KSkpO1xuXG4gICAgbGV0IHQyID0gRnIuc3ViKHQyMSwgdDIyKTtcbiAgICB0MiA9IEZyLm11bCh0MiwgY2hhbGxlbmdlcy5pbnZ6aCk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSA2IEMyIHZhbHVlc1xuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDMihoXzLPiV8zXmkpIHZhbHVlc1wiKTtcbiAgICBsZXQgcmVzID0gRnIuemVybztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICBsZXQgYzIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMueiwgRnIubXVsKHJvb3RzLlMyLmgydzNbaV0sIHQxKSk7XG4gICAgICAgIGMyID0gRnIuYWRkKGMyLCBGci5tdWwoRnIuc3F1YXJlKHJvb3RzLlMyLmgydzNbaV0pLCB0MikpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMiwgTGlTMltpXSkpO1xuICAgIH1cblxuICAgIGlmIChsb2dnZXIpIGxvZ2dlci5pbmZvKFwiwrfCt8K3IENvbXB1dGluZyBDMihoXzPPiV8zXmkpIHZhbHVlc1wiKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICBsZXQgYzIgPSBGci5hZGQocHJvb2YuZXZhbHVhdGlvbnMuencsIEZyLm11bChyb290cy5TMi5oM3czW2ldLCBwcm9vZi5ldmFsdWF0aW9ucy50MXcpKTtcbiAgICAgICAgYzIgPSBGci5hZGQoYzIsIEZyLm11bChGci5zcXVhcmUocm9vdHMuUzIuaDN3M1tpXSksIHByb29mLmV2YWx1YXRpb25zLnQydykpO1xuXG4gICAgICAgIHJlcyA9IEZyLmFkZChyZXMsIEZyLm11bChjMiwgTGlTMltpICsgM10pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRihjdXJ2ZSwgcHJvb2YsIHZrLCBjaGFsbGVuZ2VzLCByb290cykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBtdWxIMCA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMwLmgwdzhbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgODsgaSsrKSB7XG4gICAgICAgIG11bEgwID0gRnIubXVsKG11bEgwLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMC5oMHc4W2ldKSk7XG4gICAgfVxuXG4gICAgY2hhbGxlbmdlcy50ZW1wID0gbXVsSDA7XG5cbiAgICBsZXQgbXVsSDEgPSBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMS5oMXc0WzBdKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IDQ7IGkrKykge1xuICAgICAgICBtdWxIMSA9IEZyLm11bChtdWxIMSwgRnIuc3ViKGNoYWxsZW5nZXMueSwgcm9vdHMuUzEuaDF3NFtpXSkpO1xuICAgIH1cblxuICAgIGxldCBtdWxIMiA9IEZyLnN1YihjaGFsbGVuZ2VzLnksIHJvb3RzLlMyLmgydzNbMF0pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIG11bEgyID0gRnIubXVsKG11bEgyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oMnczW2ldKSk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIG11bEgyID0gRnIubXVsKG11bEgyLCBGci5zdWIoY2hhbGxlbmdlcy55LCByb290cy5TMi5oM3czW2ldKSk7XG4gICAgfVxuXG4gICAgY2hhbGxlbmdlcy5xdW90aWVudDEgPSBGci5tdWwoY2hhbGxlbmdlcy5hbHBoYSwgRnIuZGl2KG11bEgwLCBtdWxIMSkpO1xuICAgIGNoYWxsZW5nZXMucXVvdGllbnQyID0gRnIubXVsKEZyLnNxdWFyZShjaGFsbGVuZ2VzLmFscGhhKSwgRnIuZGl2KG11bEgwLCBtdWxIMikpO1xuXG4gICAgbGV0IEYyID0gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5DMSwgY2hhbGxlbmdlcy5xdW90aWVudDEpO1xuICAgIGxldCBGMyA9IEcxLnRpbWVzRnIocHJvb2YucG9seW5vbWlhbHMuQzIsIGNoYWxsZW5nZXMucXVvdGllbnQyKTtcblxuICAgIHJldHVybiBHMS5hZGQodmsuQzAsIEcxLmFkZChGMiwgRjMpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUUoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgcjAsIHIxLCByMikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcblxuICAgIGxldCBFMiA9IEZyLm11bChyMSwgY2hhbGxlbmdlcy5xdW90aWVudDEpO1xuICAgIGxldCBFMyA9IEZyLm11bChyMiwgY2hhbGxlbmdlcy5xdW90aWVudDIpO1xuXG4gICAgcmV0dXJuIEcxLnRpbWVzRnIoRzEub25lLCBGci5hZGQocjAsIEZyLmFkZChFMiwgRTMpKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVKKGN1cnZlLCBwcm9vZiwgY2hhbGxlbmdlcykge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICByZXR1cm4gRzEudGltZXNGcihwcm9vZi5wb2x5bm9taWFscy5XMSwgY2hhbGxlbmdlcy50ZW1wKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNWYWxpZFBhaXJpbmcoY3VydmUsIHByb29mLCBjaGFsbGVuZ2VzLCB2aywgRiwgRSwgSikge1xuICAgIGNvbnN0IEcxID0gY3VydmUuRzE7XG5cbiAgICBsZXQgQTEgPSBHMS50aW1lc0ZyKHByb29mLnBvbHlub21pYWxzLlcyLCBjaGFsbGVuZ2VzLnkpO1xuICAgIEExID0gRzEuYWRkKEcxLnN1YihHMS5zdWIoRiwgRSksIEopLCBBMSk7XG4gICAgY29uc3QgQTIgPSBjdXJ2ZS5HMi5vbmU7XG5cbiAgICBjb25zdCBCMSA9IHByb29mLnBvbHlub21pYWxzLlcyO1xuICAgIGNvbnN0IEIyID0gdmsuWF8yO1xuXG4gICAgcmV0dXJuIGF3YWl0IGN1cnZlLnBhaXJpbmdFcShHMS5uZWcoQTEpLCBBMiwgQjEsIEIyKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZUxhZ3JhbmdlTGlTaShyb290cywgeCwgeGksIGN1cnZlKSB7XG4gICAgY29uc3QgRnIgPSBjdXJ2ZS5GcjtcbiAgICBjb25zdCBsZW4gPSByb290cy5sZW5ndGg7XG5cbiAgICBjb25zdCBudW0gPSBGci5zdWIoRnIuZXhwKHgsIGxlbiksIHhpKTtcbiAgICBjb25zdCBkZW4xID0gRnIubXVsKEZyLmUobGVuKSwgRnIuZXhwKHJvb3RzWzBdLCBsZW4gLSAyKSk7XG5cbiAgICBjb25zdCBMaSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgY29uc3QgZGVuMiA9IHJvb3RzWygobGVuIC0gMSkgKiBpKSAlIGxlbl07XG4gICAgICAgIGNvbnN0IGRlbjMgPSBGci5zdWIoeCwgcm9vdHNbaV0pO1xuXG4gICAgICAgIExpW2ldID0gRnIuZGl2KG51bSwgRnIubXVsKEZyLm11bChkZW4xLCBkZW4yKSwgZGVuMykpO1xuICAgIH1cblxuICAgIHJldHVybiBMaTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVMYWdyYW5nZUxpUzIocm9vdHMsIHZhbHVlLCB4aTAsIHhpMSwgY3VydmUpIHtcbiAgICBjb25zdCBGciA9IGN1cnZlLkZyO1xuXG4gICAgY29uc3QgTGkgPSBbXTtcblxuICAgIGNvbnN0IGxlbiA9IHJvb3RzWzBdLmxlbmd0aDtcbiAgICBjb25zdCBuID0gbGVuICogcm9vdHMubGVuZ3RoO1xuXG4gICAgY29uc3QgbnVtMSA9IEZyLmV4cCh2YWx1ZSwgbik7XG4gICAgY29uc3QgbnVtMiA9IEZyLm11bChGci5hZGQoeGkwLCB4aTEpLCBGci5leHAodmFsdWUsIGxlbikpO1xuICAgIGNvbnN0IG51bTMgPSBGci5tdWwoeGkwLCB4aTEpO1xuICAgIGNvbnN0IG51bSA9IEZyLmFkZChGci5zdWIobnVtMSwgbnVtMiksIG51bTMpO1xuXG4gICAgbGV0IGRlbjEgPSBGci5tdWwoRnIubXVsKEZyLmUobGVuKSwgcm9vdHNbMF1bMF0pLCBGci5zdWIoeGkwLCB4aTEpKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRlbjIgPSByb290c1swXVsobGVuIC0gMSkgKiBpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgcm9vdHNbMF1baV0pO1xuXG4gICAgICAgIGNvbnN0IGRlbiA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgTGlbaV0gPSBGci5kaXYobnVtLCBkZW4pO1xuICAgIH1cblxuICAgIGRlbjEgPSBGci5tdWwoRnIubXVsKEZyLmUobGVuKSwgcm9vdHNbMV1bMF0pLCBGci5zdWIoeGkxLCB4aTApKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRlbjIgPSByb290c1sxXVsobGVuIC0gMSkgKiBpICUgbGVuXTtcbiAgICAgICAgY29uc3QgZGVuMyA9IEZyLnN1Yih2YWx1ZSwgcm9vdHNbMV1baV0pO1xuXG4gICAgICAgIGNvbnN0IGRlbiA9IEZyLm11bChkZW4xLEZyLm11bChkZW4yLCBkZW4zKSk7XG5cbiAgICAgICAgTGlbaSArIGxlbl0gPSBGci5kaXYobnVtLCBkZW4pO1xuICAgIH1cblxuICAgIHJldHVybiBMaTtcbn1cbiIsIi8qXG4gICAgQ29weXJpZ2h0IDIwMjEgMEtJTVMgYXNzb2NpYXRpb24uXG5cbiAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzbmFya0pTLlxuXG4gICAgc25hcmtKUyBpcyBhIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXRcbiAgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgIHNuYXJrSlMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVRcbiAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFlcbiAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWNcbiAgICBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICAgIGFsb25nIHdpdGggc25hcmtKUy4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi5cbiovXG5cbmltcG9ydCB7Z2V0Q3VydmVGcm9tTmFtZX0gZnJvbSBcIi4vY3VydmVzLmpzXCI7XG5pbXBvcnQge3V0aWxzfSBmcm9tIFwiZmZqYXZhc2NyaXB0XCI7XG5cbmNvbnN0IHt1bnN0cmluZ2lmeUJpZ0ludHN9ID0gdXRpbHM7XG5cbmZ1bmN0aW9uIGkyaGV4KGkpIHtcbiAgICByZXR1cm4gKFwiMFwiICsgaS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtcbn1cblxuZnVuY3Rpb24gcDI1NihuKSB7XG4gICAgbGV0IG5zdHIgPSBuLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAobnN0ci5sZW5ndGggPCA2NCkgbnN0ciA9IFwiMFwiICsgbnN0cjtcbiAgICBuc3RyID0gYDB4JHtuc3RyfWA7XG4gICAgcmV0dXJuIG5zdHI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZmbG9ua0V4cG9ydENhbGxEYXRhKF9wdWIsIF9wcm9vZikge1xuICAgIGNvbnN0IHByb29mID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wcm9vZik7XG4gICAgY29uc3QgcHViID0gdW5zdHJpbmdpZnlCaWdJbnRzKF9wdWIpO1xuXG4gICAgY29uc3QgY3VydmUgPSBhd2FpdCBnZXRDdXJ2ZUZyb21OYW1lKHByb29mLmN1cnZlKTtcbiAgICBjb25zdCBHMSA9IGN1cnZlLkcxO1xuICAgIGNvbnN0IEZyID0gY3VydmUuRnI7XG5cbiAgICBsZXQgaW5wdXRzID0gXCJcIjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1Yi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5wdXRzICE9PSBcIlwiKSBpbnB1dHMgPSBpbnB1dHMgKyBcIixcIjtcbiAgICAgICAgaW5wdXRzID0gaW5wdXRzICsgcDI1NihwdWJbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBgWyR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5DMVswXSl9LCAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuQzFbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMyWzBdKX0sJHtwMjU2KHByb29mLnBvbHlub21pYWxzLkMyWzFdKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMVswXSl9LCR7cDI1Nihwcm9vZi5wb2x5bm9taWFscy5XMVsxXSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YucG9seW5vbWlhbHMuVzJbMF0pfSwke3AyNTYocHJvb2YucG9seW5vbWlhbHMuVzJbMV0pfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFsKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFyKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnFtKX0sYCArXG4gICAgYCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5xbyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5xYyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5zMSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuczIpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuczMpfSwke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuYSl9LGAgK1xuICAgIGAke3AyNTYocHJvb2YuZXZhbHVhdGlvbnMuYil9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy5jKX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnopfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnp3KX0sJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLnQxdyl9LCR7cDI1Nihwcm9vZi5ldmFsdWF0aW9ucy50MncpfSxgICtcbiAgICBgJHtwMjU2KHByb29mLmV2YWx1YXRpb25zLmludil9XSxgICtcbiAgICBgWyR7aW5wdXRzfV1gO1xufVxuIiwiLypcbiAgICBDb3B5cmlnaHQgMjAyMiBpZGVuMyBhc3NvY2lhdGlvbi5cblxuICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHNuYXJranMuXG5cbiAgICBzbmFya2pzIGlzIGEgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZVxuICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKVxuICAgIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICAgc25hcmtqcyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWVxuICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvclxuICAgIG1vcmUgZGV0YWlscy5cblxuICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGhcbiAgICBzbmFya2pzLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LlxuKi9cblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBzZXR1cCB9IGZyb20gXCIuL2ZmbG9ua19zZXR1cC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcm92ZSB9IGZyb20gXCIuL2ZmbG9ua19wcm92ZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBmdWxsUHJvdmUgfSBmcm9tIFwiLi9mZmxvbmtfZnVsbF9wcm92ZS5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB2ZXJpZnkgfSBmcm9tIFwiLi9mZmxvbmtfdmVyaWZ5LmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5VmVyaWZpZXIgfSBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X3NvbGlkaXR5X3ZlcmlmaWVyLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGV4cG9ydFNvbGlkaXR5Q2FsbERhdGEgfSBmcm9tIFwiLi9mZmxvbmtfZXhwb3J0X2NhbGxkYXRhLmpzXCI7XG4iXSwibmFtZXMiOlsiaGV4TGVuIiwiZnJvbVN0cmluZyIsImUiLCJiaXRMZW5ndGgkNiIsImlzTmVnYXRpdmUkNCIsImlzWmVybyQxIiwic2hpZnRMZWZ0Iiwic2hpZnRSaWdodCIsImlzT2RkJDUiLCJiaXRzIiwidG9OdW1iZXIkMSIsImFkZCIsInN1YiIsIm5lZyIsIm11bCIsInBvdyIsImRpdiIsIm1vZCIsImVxIiwiZ3QiLCJnZXEiLCJiYW5kIiwidG9ScHJMRSIsInRvUnByQkUiLCJmcm9tUnByTEUiLCJmcm9tUnByQkUiLCJ0b1N0cmluZyIsInRvTEVCdWZmIiwiemVybyIsIm9uZSIsImV4cCIsImJ1aWxkU3FydCIsImFsZzVfdG9uZWxsaVNoYW5rcyIsImFsZzRfa29uZyIsImFsZzNfYXRraW4iLCJhbGcyX3NoYW5rcyIsImFsZzEwX2FkaiIsImFsZzlfYWRqIiwiYWxnOF9jb21wbGV4IiwicXVhcnRlclJvdW5kIiwiZG91YmxlUm91bmQiLCJDaGFDaGEiLCJnZXRSYW5kb21CeXRlcyIsImdldFJhbmRvbVNlZWQiLCJ0aHJlYWRSbmciLCJnZXRUaHJlYWRSbmciLCJGRlQiLCJsb2cyJDEiLCJfX2ZmdCIsIlpxRmllbGQiLCJ1dGlscyQ2IiwiYnVpbGRfaW50IiwiYnVpbGRfdGltZXNzY2FsYXIiLCJidWlsZF9iYXRjaGludmVyc2UiLCJidWlsZEJhdGNoSW52ZXJzZSQzIiwiYnVpbGRfYmF0Y2hjb252ZXJ0aW9uIiwiYnVpbGRCYXRjaENvbnZlcnRpb24kMyIsImJ1aWxkX2JhdGNob3AiLCJidWlsZEJhdGNoQ29udmVydGlvbiQyIiwiYmlnaW50IiwiY29tcGFyZSIsInNxdWFyZSQxIiwiaXNPZGQkNCIsImlzRXZlbiIsImlzTmVnYXRpdmUkMyIsImlzUG9zaXRpdmUiLCJiaXRMZW5ndGgkNSIsImFicyIsImlzVW5pdCIsIm1vZEludiQzIiwibW9kUG93JDIiLCJjb21wYXJlQWJzIiwiaXNEaXZpc2libGVCeSIsImlzQmFzaWNQcmltZSIsInByZXYiLCJtaWxsZXJSYWJpblRlc3QiLCJpc1ByaW1lJDEiLCJidWlsZEludCIsInV0aWxzJDUiLCJidWlsZEV4cCQyIiwiYnVpbGRCYXRjaEludmVyc2UkMiIsImJ1aWxkQmF0Y2hDb252ZXJ0aW9uJDEiLCJidWlsZEJhdGNoT3AiLCJiaXRMZW5ndGgkNCIsIm1vZEludiQyIiwibW9kUG93JDEiLCJpc1ByaW1lIiwiaXNPZGQkMyIsInNxdWFyZSIsImJ1aWxkX2YxbSIsImJ1aWxkRjFtJDIiLCJiaXRMZW5ndGgkMyIsImJ1aWxkX2YxIiwiYnVpbGRFeHAkMSIsImJ1aWxkQmF0Y2hJbnZlcnNlJDEiLCJ1dGlscyQ0IiwiYnVpbGRfZjJtIiwiYnVpbGRFeHAiLCJidWlsZEJhdGNoSW52ZXJzZSIsImJ1aWxkX2YzbSIsImJ1aWxkX3RpbWVzc2NhbGFybmFmIiwiYnVpbGRfbXVsdGlleHAiLCJidWlsZFRpbWVzU2NhbGFyTkFGIiwiYnVpbGRCYXRjaENvbnZlcnRpb24iLCJidWlsZE11bHRpZXhwJDEiLCJidWlsZF9jdXJ2ZV9qYWNvYmlhbl9hMCIsImlzT2RkJDIiLCJtb2RJbnYkMSIsIm1vZFBvdyIsInV0aWxzJDMiLCJidWlsZF9mZnQiLCJidWlsZF9wb2wiLCJidWlsZF9xYXAiLCJidWlsZF9hcHBseWtleSIsInV0aWxzJDIiLCJidWlsZEYxbSQxIiwiYnVpbGRGMSQxIiwiYnVpbGRGMm0kMSIsImJ1aWxkRjNtJDEiLCJidWlsZEN1cnZlJDEiLCJidWlsZEZGVCQyIiwiYnVpbGRQb2wkMSIsImJ1aWxkUUFQJDEiLCJidWlsZEFwcGx5S2V5JDEiLCJiaXRMZW5ndGgkMiIsIm1vZEludiIsImlzT2RkJDEiLCJpc05lZ2F0aXZlJDIiLCJidWlsZF9ibjEyOCIsInV0aWxzJDEiLCJidWlsZEYxbSIsImJ1aWxkRjEiLCJidWlsZEYybSIsImJ1aWxkRjNtIiwiYnVpbGRDdXJ2ZSIsImJ1aWxkRkZUJDEiLCJidWlsZFBvbCIsImJ1aWxkUUFQIiwiYnVpbGRBcHBseUtleSIsImJpdExlbmd0aCQxIiwiaXNPZGQiLCJpc05lZ2F0aXZlJDEiLCJidWlsZF9ibHMxMjM4MSIsImJ1aWxkQm4xMjgkMSIsImJ1aWxkQmxzMTIzODEkMSIsInN0cmluZ2lmeUJpZ0ludHMiLCJ1bnN0cmluZ2lmeUJpZ0ludHMiLCJsZUludDJCdWZmIiwiX3JldlRhYmxlIiwiX3JldlNsb3ciLCJiaXRSZXZlcnNlIiwibG9nMiIsImJ1ZmZSZXZlcnNlQml0cyIsImFycmF5MmJ1ZmZlciIsImJ1ZmZlcjJhcnJheSIsIlBBR0VfU0laRSIsIkJpZ0J1ZmZlciIsImJ1aWxkQmF0Y2hDb252ZXJ0IiwiV2FzbUZpZWxkMSIsIldhc21GaWVsZDIiLCJXYXNtRmllbGQzIiwiV2FzbUN1cnZlIiwidGhyZWFkIiwiTUVNX1NJWkUiLCJEZWZlcnJlZCIsInNsZWVwIiwid29ya2VyU291cmNlIiwidGhyZWFkU3RyIiwiYnVpbGRUaHJlYWRNYW5hZ2VyIiwiVGhyZWFkTWFuYWdlciIsImJ1aWxkQmF0Y2hBcHBseUtleSIsImJ1aWxkUGFpcmluZyIsInBUU2l6ZXMiLCJidWlsZE11bHRpZXhwIiwiYnVpbGRGRlQiLCJidWlsZEVuZ2luZSIsInRvTnVtYmVyIiwiaXNOZWdhdGl2ZSIsImlzWmVybyIsImJpdExlbmd0aCIsInUzMiIsInRvVVRGOEFycmF5Iiwic3RyaW5nIiwidmFydWludDMyIiwidmFydWludCIsInZhcmludCIsInZhcmludDMyIiwidmFyaW50NjQiLCJ0b0hleFN0cmluZyIsIkNvZGVCdWlsZGVyIiwidHlwZUNvZGVzIiwiRnVuY3Rpb25CdWlsZGVyIiwiTW9kdWxlQnVpbGRlciIsImJ1aWxkQm4xMjgiLCJidWlsZEJsczEyMzgxIiwiY3JlYXRlTmV3IiwicmVhZEV4aXN0aW5nIiwidG1wQnVmZjMyIiwidG1wQnVmZjMydiIsInRtcEJ1ZmY2NCIsInRtcEJ1ZmY2NHYiLCJtZW1GaWxlLmNyZWF0ZU5ldyIsImJpZ01lbUZpbGUuY3JlYXRlTmV3IiwibWVtRmlsZS5yZWFkRXhpc3RpbmciLCJiaWdNZW1GaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLnJlYWRFeGlzdGluZyIsImZhc3RGaWxlLmNyZWF0ZU92ZXJyaWRlIiwiYmxzMTIzODFyIiwiYm4xMjhyIiwiZ2V0Q3VydmVGcm9tUiIsImFzc2VydCIsImJ5dGVMZW5ndGgiLCJ3cml0ZSIsImFzY2lpIiwicmVxdWlyZSQkMCIsImJhc2U2NCIsInJlcXVpcmUkJDEiLCJoZXgiLCJyZXF1aXJlJCQyIiwidXRmOCIsInJlcXVpcmUkJDMiLCJ1dGYxNmxlIiwicmVxdWlyZSQkNCIsImJsYWtlMmJXYXNtTW9kdWxlIiwiYmxha2UyYldhc20iLCJCbGFrZTJiIiwic2FtZVJhdGlvIiwiYmluRmlsZVV0aWxzLnN0YXJ0V3JpdGVTZWN0aW9uIiwiYmluRmlsZVV0aWxzLmVuZFdyaXRlU2VjdGlvbiIsImdldEN1cnZlIiwiYmluRmlsZVV0aWxzLndyaXRlQmlnSW50IiwicmVhZEhlYWRlciIsImJpbkZpbGVVdGlscy5zdGFydFJlYWRVbmlxdWVTZWN0aW9uIiwiYmluRmlsZVV0aWxzLmVuZFJlYWRTZWN0aW9uIiwiYmluRmlsZVV0aWxzLnJlYWRCaWdJbnQiLCJiaW5GaWxlVXRpbHMucmVhZEJpbkZpbGUiLCJGMUZpZWxkIiwicmVhZENvbnRyaWJ1dGlvbiIsIndyaXRlQ29udHJpYnV0aW9uIiwid3Ruc1V0aWxzLnJlYWRIZWFkZXIiLCJ6a2V5VXRpbHMucmVhZEhlYWRlciIsImJpbkZpbGVVdGlscy5yZWFkU2VjdGlvbiIsIldpdG5lc3NDYWxjdWxhdG9yQnVpbGRlciIsImJpbkZpbGVVdGlscy5jcmVhdGVCaW5GaWxlIiwid3Ruc1V0aWxzLndyaXRlQmluIiwid3Ruc19jYWxjdWxhdGUiLCJncm90aDE2X3Byb3ZlIiwiY3VydmVzLmdldEN1cnZlRnJvbU5hbWUiLCJwdWJsaWNJbnB1dHNBcmVWYWxpZCIsImlzV2VsbENvbnN0cnVjdGVkIiwicDI1NiIsImJsYWtlMmIiLCJtaXNjLnJuZ0Zyb21CZWFjb25QYXJhbXMiLCJrZXlQYWlyLmNyZWF0ZVBUYXVLZXkiLCJwdGF1VXRpbHMud3JpdGVQVGF1SGVhZGVyIiwicHRhdVV0aWxzLmNhbGN1bGF0ZUZpcnN0Q2hhbGxlbmdlSGFzaCIsIm1pc2MuZm9ybWF0SGFzaCIsInV0aWxzLnJlYWRQVGF1SGVhZGVyIiwidXRpbHMucmVhZENvbnRyaWJ1dGlvbnMiLCJ1dGlscy5jYWxjdWxhdGVGaXJzdENoYWxsZW5nZUhhc2giLCJtaXNjLmhhc2hJc0VxdWFsIiwidXRpbHMud3JpdGVQVGF1SGVhZGVyIiwidXRpbHMuZnJvbVB0YXVQdWJLZXlScHIiLCJ1dGlscy53cml0ZUNvbnRyaWJ1dGlvbnMiLCJtaXNjLnNhbWVSYXRpbyIsInV0aWxzLmtleUZyb21CZWFjb24iLCJrZXlQYWlyLmdldEcyc3AiLCJ1dGlscy50b1B0YXVQdWJLZXlScHIiLCJtaXNjLmJ5dGVBcnJheTJoZXgiLCJtaXNjLmdldFJhbmRvbUJ5dGVzIiwibWlzYy5yZWFkVUludDMyQkUiLCJtaXNjLmdldFJhbmRvbVJuZyIsImJlYWNvbiIsIm1pc2MuaGV4MkJ5dGVBcnJheSIsImJpbkZpbGVVdGlscy5jb3B5U2VjdGlvbiIsIlNVQkFSUkFZX1NJWkUiLCJCaWdBcnJheUhhbmRsZXIiLCJfQmlnQXJyYXkiLCJCaWdBcnJheSIsImxvYWRTeW1zIiwid3Ruc1V0aWxzLndyaXRlIiwiY3VydmVzLmdldEN1cnZlRnJvbVIiLCJ6a2V5VXRpbHMucmVhZE1QQ1BhcmFtcyIsInprZXlVdGlscy53cml0ZUhlYWRlciIsInprZXlVdGlscy53cml0ZU1QQ1BhcmFtcyIsIm1pc2MuY2xvbmVIYXNoZXIiLCJiaW5GaWxlVXRpbHMuc2VjdGlvbklzRXF1YWwiLCJ1dGlscy5oYXNoUHViS2V5IiwidXRpbHMuaGFzaEcxIiwiZXhwb3J0VmVyaWZpY2F0aW9uS2V5IiwiZmZsb25rRXhwb3J0U29saWRpdHlWZXJpZmllckNtZCIsInBsb25rX3Byb3ZlIiwiZnJvbU9iamVjdFZrIiwiY2FsY3VsYXRlUEkiLCJpc1ZhbGlkUGFpcmluZyJdLCJtYXBwaW5ncyI6Ijs7O0lBQUE7SUFDQSxNQUFNQSxRQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRTtJQUNBLFNBQVNDLFlBQVUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQzlCLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMvQixRQUFRLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEtBQUssTUFBTSxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtJQUNsQyxZQUFZLE9BQU8sTUFBTSxDQUFD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QUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3JCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDRDtJQUNBLFNBQVMsS0FBSyxDQUFDLENBQUMsRUFBRTtJQUNsQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsS0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsSUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDbEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztBQUNEO0lBQ0EsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQixJQUFJLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2xCLElBQUksT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcs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QUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUdaLFlBQVUsQ0FBQ1csTUFBSSxDQUFDZCxZQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7QUFDRDtJQUNBO0lBQ0EsU0FBU2dCLFNBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxD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Q0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRCxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzVDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNkLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDbEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSyxDQUFDO0lBQ04sQ0FBQztBQUNEO0FBQ0E7SUFDQSxTQUFTMEIsY0FBWSxDQUFDLENBQUMsRUFBRTtJQUN6QixJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsV0FBVztJQUN4QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUN0RCxLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0QztJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7QUFDRDtJQUNBLFNBQVNDLGFBQVcsQ0FBQyxFQUFFLEVBQUU7SUFDekIsSUFBSUQsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSUEsY0FBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJQSxjQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUlBLGNBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsTUFBTUUsUUFBTSxDQUFDO0FBQ2I7SUFDQSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7SUFDdEIsUUFBUSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRztJQUNyQixZQUFZLFVBQVU7SUFDdEIsWUFBWSxVQUFVO0lBQ3RCLFlBQVksVUFBVTtJQUN0QixZQUFZLFVBQVU7SUFDdEIsWUFBWSxJQUFJLENBQUMsQ0FB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QUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQztJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNyQixZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLENBQUMsRUFBRSxDQUFDO0lBQ2hCLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUN4QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLENBQUMsRUFBRTtJQUNqQixRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN2RCxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQy9CLFlBQVksTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxZQUFZLE1BQU0sTUFBTSxHQUFHLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsYUFBYTtBQUNiO0lBQ0EsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNuQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxJQUFJLEdBQUdDLFFBQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxHQUFHQyxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ1o7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLElBQUksR0FBR0QsUUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxJQUFJQyxPQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7QUFDQTtJQUNBLENBQUM7QUFDRDtJQUNBLFNBQVNELFFBQU0sRUFBRSxDQUFDO0lBQ2xCO0lBQ0EsSUFBSSxRQUFRLEVBQUUsRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxVQUFVLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLFVBQVUsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsVUFBVSxPQUFPLENBQUMsRUFBRSxHQUFHO0lBQzVSLENBQUM7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QUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHOUMsYUFBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUNwRTtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzNDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxTQUFTO0FBQ1Q7QUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDN0I7SUFDQSxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRTtJQUNqRCxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUN4QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRDtJQUNBLFFBQVE0QixXQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSWUsS0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RDtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDOUI7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLElBQUksR0FBRyxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNoQixZQUFZLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsU0FBUyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRTtJQUMxQixZQUFZLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVM7SUFDVCxRQUFRLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRTtJQUNyQixZQUFZLElBQUksSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQzVCLFlBQVksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNyRCxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFCLFFBQVEsT0FBTyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDaEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ1gsUUFBUSxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE1BQU0sRUFBRSxH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QVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0lBQ2xDLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7SUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FB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QUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUss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LENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0E7QUFDQTtBQUNBO0lBQ0EsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxJQUFJRSxTQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsUUFBUSxPQUFPRCxVQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDckUsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQztBQUN2QjtJQUNBLElBQUksT0FBTyxDQUFDLENBQUNFLFNBQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUU7SUFDeEMsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdEIsS0FBSztJQUNMLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVB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LEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckc7SUFDQSxZQUFZLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDMUIsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUk7SUFDOUIsb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDL0Qsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFB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LFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFT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QSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDN0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMs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RyxFQUFFLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZ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LENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFT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RyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDbEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQztBQUN0RDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUM1QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUM3QyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLFdBQVcsR0FBRztJQUMzQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFH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LENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMzQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENB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QyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDeEQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtB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S0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFD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TUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFD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QUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQy9ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxT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QUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxTQUFTLENB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RSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztBQUM3QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQs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LGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDN0Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxD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QyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVB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QUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEM7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsUUFBUSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUdDLFNBQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2Y7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbkMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDdEIsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUdGLFVBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM3QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FB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Q0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNsQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakQs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R0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQ3hFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUc7SUFDbEIsUUFBUTtJQUNSLFlBQVksOEVBQThFO0lBQzFGLFlBQVksOEVBQThFO0lBQzFGLFNBQVMsQ0FBQztJQUNWLFlBQVksNkVBQTZFO0lBQ3pGLFlBQVksNkVBQTZFO0lBQ3pGLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDL0IsUUFBUTtJQUNSLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzFFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxNQUFNLEdBQUc7SUFDbkIsUUFBUTtJQUNSLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVMsQ0FBQztJQUNWLFlBQVksRUFBRTtJQUNkLFlBQVksRUFBRTtJQUNkLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUs7SUFDaEMsUUFBUTtJQUNSLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzNFLFNBQVM7SUFDVCxLQUFLLENBQUM7QUFDTjtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMvQixRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFF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RSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDekQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQ2pGO0FBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDakQ7SUFDQTtJQUNBO0FBQ0E7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxTQUFTLG1CQUFtQixHQUFHO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQzdFO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztBQUN6RDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEU7SUFDQSxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUNqRCxZQUFZLEdBQUdaLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLCtFQUErRSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzlJLFlBQVksR0FBR0EsU0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsK0VBQStFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDOUksU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNaO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDakQsWUFBWSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyw4RUFBOEUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3SSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLDhFQUE4RSxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzdJLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDWjtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7SUFDOUIsUUFBUSxXQUFXLEVBQUUsQ0FBQztJQUN0QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN6RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUM5QztJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQzFDLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSTtBQUMxQjtJQUNBLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkUsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDN0Y7SUFDQSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQztJQUNwRSxvQkFBb0I7SUFDcEIsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2Rix3QkFBd0IsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLHFCQUFxQjtJQUNyQixpQkFBaUI7SUFDakIsZ0JBQWdCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ3pELGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNFLGdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2QixhQUFhLENBQUM7SUFDZCxTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzlDLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUN6RjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2RSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekYsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGdCQUFnQixHQUFHO0lBQ2hDLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDOUQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsT0FBTyxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3JELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxhQUFhLEdBQUc7SUFDN0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDcEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxlQUFlLEdBQUc7SUFDL0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ25DLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDNUU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7QUFDQTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQztBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxH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QztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDNUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsa0JBQWtCLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRTtJQUNsRCxRQUFRLE1BQU0sZ0JBQWdCLEdBQUcs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USxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtBQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFH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QUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDeEM7SUFDQSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlGLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUYsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JF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Q0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMxRSxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHO0lBQ25CLFFBQVE7SUFDUixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTLENBQUM7SUFDVixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTLENBQUM7SUFDVixZQUFZLEVBQUU7SUFDZCxZQUFZLEVBQUU7SUFDZCxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLO0lBQ2hDLFFBQVE7SUFDUixZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxZQUFZLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUMzRSxTQUFTO0lBQ1QsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDL0IsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsUUFBUSxHQUFHQSxTQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDN0QsS0FBSyxDQUFDLENBQUM7QUFDUDtJQUNBLElBQUksTUFBTSxjQUFjLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN6QyxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxRQUFRLEdBQUdBLFNBQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM3RCxLQUFLLENBQUMsQ0FBQztBQUNQO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FB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QyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0FBQ0E7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUM7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxnQkFBZ0IsR0FBRztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLENB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QUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztBQUNBO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ3REO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUN0RCxTQUFTLENBQUM7SUFDVixLQUFLO0lBQ0wsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUNyQjtBQUNBO0lBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztJQUN4QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDMUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFDMUQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsU0FBUyxDQUFDO0FBQ1Y7SUFDQSxLQUFLO0lBQ0wsSUFBSSxRQUFRLEVBQUUsQ0FBQztBQUNmO0lBQ0Es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QUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFF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Q0FBQyxTQUFTLEdBQUcsWUFBWSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDbkQ7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUywyQkFBMkIsR0FBRztJQUMzQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDeEUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxveENBQW94QyxDQUFDO0FBQzl5QztJQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQ1osU0FBTyxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNoRjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xILFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLElBQUksTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QztJQUNBLElBQUksU0FBUyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUU7QUFDN0M7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyRSxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDeEMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsU0FBUztJQUNULFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0FBQ0E7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN2RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QztJQUNBLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFD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R0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN6RCxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFD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LENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDM0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGNBQWMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFB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QUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHdEIsWUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUVzQixLQUFHLENBQUMsQ0FBQztJQUM1QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUM1QixRQUFRLElBQUks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QyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNaLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLGNBQWMsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNaLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxFQUFFO0lBQ3hDLFlBQVksQ0FBQyxHQUFHbEksVUFBUSxDQUFDekIsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEcsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNaLFFBQVEsSUFBSSxDQUFDLFlBQVksVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLFFBQVEsSUFBSSxFQUFFLEdBQUdBLEdBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsUUFBUSxJQUFJRSxjQUFZLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDOUIsWUFBWSxFQUFFLEdBQUdTLEtBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixZQUFZLElBQUlNLElBQUUsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2hDLGdCQUFnQixFQUFFLEdBQUdGLEtBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLGFBQWE7SUFDYixZQUFZLEVBQUUsR0FBR0wsS0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakMsU0FBUyxNQUFNO0lBQ2YsWUFBWSxJQUFJTyxJQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNoQyxnQkFBZ0IsRUFBRSxHQUFHRixLQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsU0FBUztJQUNULFFBQVEsTUFBTSxJQUFJLEdBQUdrSSxZQUFVLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxRQUFRLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFO0lBQ3ZCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLE1BQU0sQ0FBQyxHQUFHM0gsV0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE9BQU9FLFVBQVEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDZCxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxRQUFRLEdBQUc7SUFDWCxZQUFZLENBQUMsR0FBR0UsTUFBSSxDQUFDO0lBQ3JCLFlBQVksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDM0MsZ0JBQWdCLENBQUMsR0FBR2pCLEtBQUcsQ0FBQyxDQUFDLEdBQUdMLFdBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsYUFBYTtJQUNiLFlBQVksQ0FBQyxHQUFHZSxNQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxTQUFTLFFBQVFELEtBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2pDLFFBQVFFLFNBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sR0FBRztJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDdUIsY0FBWSxFQUFFLENBQUMsQ0FBQztJQUM1QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsT0FBT3JCLFdBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLFFBQVFGLFNBQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckMsUUFBUSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDN0IsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDakQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDN0IsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3hDLFlBQVksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxZQUFZLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDckMsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM1QixRQUFRLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzdCLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6RCxRQUFRLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sWUFBWSxDQUFDLE1BQU0sRUFBRTtJQUMvQixRQUFRLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUNoQyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDNUIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzdCO0lBQ0EsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDbkMsWUFBWSxNQUFNLEdBQUdtSSxjQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2hELFlBQVksV0FBVyxHQUFHLElBQUksQ0FBQztJQUMvQixTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEQsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUQsUUFBUSxLQUFLLE9BQU8sR0FBRyxHQUFHLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtJQUNsRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxTQUFTO0lBQ1QsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZFLFFBQVEsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQzlCLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDMUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDbkMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDL0MsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVM7QUFDL0I7SUFDQSxZQUFZLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLFlBQVksTUFBTSxJQUFJLEdBQUc7SUFDekIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLE1BQU0sRUFBRTtJQUM3RSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDOUIsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7SUFDL0IsaUJBQWlCLENBQUM7SUFDbEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDMUQsYUFBYSxDQUFDO0lBQ2QsWUFBWSxVQUFVLENBQUMsSUFBSTtJQUMzQixnQkFBZ0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQ3pDLGFBQWEsQ0FBQztJQUNkLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxJQUFJLFdBQVcsQ0FBQztJQUN4QixRQUFRLElBQUksTUFBTSxZQUFZRyxXQUFTLEVBQUU7SUFDekMsWUFBWSxXQUFXLEdBQUcsSUFBSUEsV0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxTQUFTLE1BQU07SUFDZixZQUFZLFdBQVcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QyxZQUFZLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLFdBQVcsRUFBRTtJQUN6QixZQUFZLE9BQU9GLGNBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLFdBQVcsQ0FBQztJQUMvQixTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7SUFDQSxDQUFDO0FBQ0Q7SUFDQSxNQUFNSyxZQUFVLENBQUM7QUFDakI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUMvQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0I7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xEO0lB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RUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxLQUFLO0FB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QUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0UsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENB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QUU7SUFDWixRQUFRLElBQUksQ0FBQyxZQUFZLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFlBQVksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsWUFBWSxPQUFPLEdBQUcsQ0FBQztJQUN2QixTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQzJDLGNBQVksRUFBRSxDQUFDLENBQUM7SUFDNUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQixRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNWLFFBQVEsT0FB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QUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pHLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdB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Q0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN0QyxZQUFZLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsU0FBUyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQztJQUNBLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbkM7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtJQUMzQixZQUFZLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzVCLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1QyxhQUFhLENBQUM7SUFDZCxTQUFTO0lBQ1QsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNkLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUMsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekIsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ2xCLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxDQUFDO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsTUFBTTtJQUNmLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzNCLFNBQVM7SUFDVCxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDMUMsWUFBWSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDbkMsU0FBUyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDN0MsWUFBWSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJ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QUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxhQUFhLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzVCLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSyxDQUFDO0FBQ047SUFDQSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsRUFBRTtJQUM1QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvRSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVB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QyxPQUFPLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsWUFBWSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELFlBQVksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsWUFBWSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNyRDtJQUNBLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFV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QUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDM0IsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDMUUsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDakUsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDaEU7QUFDQTtJQUNBLFFBQVEsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQSxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ2hKO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDNUI7SUFDQSxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUs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QUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUk0SixZQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUEsWUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUlDLFlBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSUUsV0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNHLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJRCxZQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUlELFlBQVUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ3pCO0lBQ0EsSUFBSVcsb0JBQWtCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLElBQUlBLG9CQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJQSxvQkFBa0IsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxJQUFJRyxlQUFhLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9CLElBQUlBLGVBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0I7SUFDQSxJQUFJQyxVQUFRLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFCLElBQUlBLFVBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsSUFBSUEsVUFBUSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQjtJQUNBLElBQUlILGNBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QjtJQUNBLElBQUksS0FBSyxDQUFDLFlBQVksR0FBRyxTQUFTLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDM0MsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxLQUFLLENBQUMsWUFBWSxHQUFHLFNBQVMsSUFBSSxHQUFHLEVBQUUsRUFBRTtJQUM3QyxRQUFRLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFNBQVM7SUFDVCxRQUFRLE9BQU8sR0FBRyxDQUFDO0lBQ25CLEtBQUssQ0FBQztBQUNOO0lBQ0EsSUFBSSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0FBQ0Q7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLFNBQVNLLFVBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDckIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxZQUFVLENBQUMsQ0FBQyxFQUFFO0lBQ3ZCLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2xCLENBQUM7QUFDRDtJQUNBLFNBQVNDLFFBQU0sQ0FBQyxDQUFDLEVBQUU7SUFDbkIsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztBQUNEO0lBQ0EsU0FBU0MsV0FBUyxDQUFDLENBQUMsRUFBRTtJQUN0QixJQUFJLElBQUlGLFlBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2QixRQUFRLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTTtJQUNYLFFBQVEsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNwQyxLQUFLO0lBQ0wsQ0FBQztBQUNEO0lBQ0EsU0FBU0csS0FBRyxDQUFDLENBQUMsRUFBRTtJQUNoQixJQUFJLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLE1BQU0sQ0FBQyxHQUFHSixVQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNwQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztBQUNEO0lBQ0EsU0FBU0ssYUFBVyxDQUFDLEdBQUcsRUFBRTtJQUMxQixJQUFJLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNsQixJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3ZDLFFBQVEsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksUUFBUSxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pELGFBQWEsSUFBSSxRQUFRLEdBQUcsS0FBSyxFQUFFO0lBQ25DLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQztJQUM1QyxnQkFBZ0IsSUFBSSxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFNBQVM7SUFDVCxhQUFhLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxRQUFRLElBQUksTUFBTSxFQUFFO0lBQzFELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUM3QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDN0MsZ0JBQWdCLElBQUksSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxQyxTQUFTO0lBQ1Q7SUFDQSxhQUFhO0lBQ2IsWUFBWSxDQUFDLEVBQUUsQ0FBQztJQUNoQjtJQUNBO0lBQ0E7SUFDQSxZQUFZLFFBQVEsR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDLFFBQVEsR0FBRyxLQUFLLEdBQUcsRUFBRTtJQUN6RCx5QkFBeUIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUM1QyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDOUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzdDLGdCQUFnQixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUMsU0FBUztJQUNULEtBQUs7SUFDTCxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDRDtJQUNBLFNBQVNDLFFBQU0sQ0FBQyxHQUFHLEVBQUU7SUFDckIsSUFBSSxNQUFNLEtBQUssR0FBR0QsYUFBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLElBQUksT0FBTyxFQUFFLEdBQUdFLFdBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0FBQ0Q7SUFDQSxTQUFTQyxTQUFPLENBQUMsQ0FBQyxFQUFFO0lBQ3BCLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksSUFBSSxDQUFDLEdBQUdSLFVBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLElBQUlDLFlBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7SUFDcEUsSUFBSSxPQUFPLENBQUNDLFFBQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2QixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsS0FBSztJQUNMLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3hDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakMsS0FBSztJQUNMLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0lBQ0EsU0FBU08sUUFBTSxDQUFDLEVBQUUsRUFBRTtJQUNwQixJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQztJQUNoQixJQUFJLE1BQU0sSUFBSSxHQUFHTixXQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0IsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksR0FBRyxJQUFJLENBQUM7SUFDcEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxLQUFLLE1BQU07SUFDWCxRQUFRLElBQUksR0FBRyxLQUFLLENBQUM7SUFDckIsUUFBUSxDQUFDLEdBQUdILFVBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QixLQUFLO0lBQ0wsSUFBSSxNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDO0lBQ0EsSUFBSSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLElBQUksTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUM1RDtJQUNBLElBQUksTUFBTSxJQUFJLEdBQUdRLFNBQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7QUFDdEM7SUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDZixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUNoRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDRDtJQUNBLFNBQVNFLFVBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDckIsSUFBSSxJQUFJLENBQUMsR0FBR1YsVUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsV0FBVyxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFlBQVksQ0FBQztJQUM5QztJQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzlELElBQUksT0FBT1MsUUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7QUFDRDtJQUNBLFNBQVNFLFVBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDckIsSUFBSSxJQUFJLENBQUMsR0FBR1gsVUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25FLElBQUksSUFBSSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxvQkFBb0IsQ0FBQztJQUM5RDtJQUNBLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDdkUsSUFBSSxPQUFPUyxRQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztBQUNEO0lBQ0EsU0FBU0YsV0FBUyxDQUFDLENBQUMsRUFBRTtJQUN0QixJQUFJLElBQUksQ0FBQyxHQUFHUCxVQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxXQUFXLEVBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNELElBQUksT0FBT1EsU0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7QUFDRDtJQUNBLFNBQVNJLGFBQVcsQ0FBQyxTQUFTLEVBQUU7SUFDaEMsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsSUFBSSxFQUFFO0lBQ2hELFFBQVEsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDO0FBQ0Q7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0EsTUFBTUMsYUFBVyxDQUFDO0lBQ2xCLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzlDLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xDLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7SUFDakMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxLQUFLLFNBQVM7SUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0csUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUdOLFdBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUU7SUFDakMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN4RCxRQUFRLElBQUksR0FBRyxLQUFLLFNBQVM7SUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsc0NBQXNDLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0csUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUdBLFdBQVMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLFNBQVMsRUFBRTtJQUN4QixRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsSUFBSSxHQUFHLEtBQUssU0FBUztJQUM3QixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRyxRQUFRLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBR0EsV0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDdkMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNsRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDM0IsWUFBWSxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQy9CLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFH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QUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUdBLFdBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHQSxXQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUs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LE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlELEtBQUs7SUFDTCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHQSxXQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ25GLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBR0EsV0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN6RCxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMzQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM3QztJQUNBLElBQUksU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBR0ksVUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2RCxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUdELFVBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkQ7QUFDQTtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ2pELElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUM1RCxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzVELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ25ELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ25EO0lBQ0EsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8s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LENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxNQUFNLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzdCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRDtJQUNBLFFBQVEsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxRQUFRLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcs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QUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRRCxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDekM7SUFDQSxRQUFRLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQ0QsV0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3pDLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxVQUFVLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRTtJQUM3QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVFDLFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDRCxXQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUU7SUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUI7SUFDQSxRQUFRRyxZQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RELFFBQVFBLFlBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUNELFdBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksTUFBTSxTQUFTLENBQUMsR0FBRyxFQUFFO0lBQ3pCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQzFCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUMxQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sU0FBUyxDQUFDLEdBQUcsRUFBRTtJQUN6QixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztJQUMxQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDMUM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sVUFBVSxDQUFDLEdBQUcsRUFBRTtJQUMxQixRQUFRLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQjtJQUNBLFFBQVEsSUFBSSxlQUFlLEdBQUcsT0FBTyxHQUFHLElBQUks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LEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzQyxLQUFLO0lBQ0wsSUFBSSxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3RDLElBQUksTUFBTSxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELElBQUksTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7SUFDeEMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsS0FBSztJQUNMLElBQUksTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxNQUFNLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RTtJQUNBLENBQUM7QUFDRDtJQUNPLGVBQWUsV0FBVyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7QUFDM0U7SUFDQSxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELElBQUksTUFBTSxHQUFHLENBQUMsT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FB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LENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxHQUFFO0FBQzNEO0lBQ0EsRUFBRSxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3hCLENBQUM7QUFDRDtJQUNBLFNBQVN6TCxVQUFRLEVBQUUsTUFBTSxFQUFFO0lBQzNCLEVBQUUsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFdBQVU7QUFDL0I7SUFDQSxFQUFFLElBQUksTUFBTSxHQUFHLEdBQUU7QUFDakI7SUFDQSxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUNuQyxJQUFJLE1BQU07SUFDVixNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRSxNQUFNLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNsQyxNQUFLO0lBQ0wsR0FBRztBQUNIO0lBQ0EsRUFBRSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ3JCLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBRztJQUN6RCxHQUFHLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUM1QixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUk7SUFDMUQsR0FBRztBQUNIO0lBQ0EsRUFBRSxPQUFPLE1BQU07SUFDZixDQUNBO0lBQ0EsU0FBUzBMLE9BQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHRCxZQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDekUsRUFBRSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBQztBQUMxRDtJQUNBLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDMUMsSUFBSSxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztJQUM3QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBQztBQUM3QztJQUNBLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUM7SUFDckMsSUFBSSxNQUFNLENB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RSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5RSxPQUFPLENBQUMsTUFBTSxLQUFLO0lBQ3JCLEtBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEgsS0FBSSxLQUFLLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUk7V0FDaEMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7V0FDN0UsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkYsT0FBTSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsT0FBTSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxH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LElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRzlFLE1BQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM1RCxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0QsSUFBSSxNQUFNa0YsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEI7SUFDQSxDQUFDO0FBQ0Q7SUFDQSxlQUFlLGVBQWUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDaEUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQzVCO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUQsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3JDLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU1FLFVBQXVCLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNQSxVQUF1QixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwRCxJQUFJLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTUwsYUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RDLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN4QyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHOUUsTUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QyxJQUFJLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDM0MsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdDLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsSUFBSSxNQUFNa0YsY0FBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMxQztJQUNBLElBQUksT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztBQUNEO0lBQ0EsZUFBZSxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUU7SUFDakUsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEI7SUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQztBQUN6QztJQUNBLElBQUksTUFBTUQsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BGLElBQUksTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDckMsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsTUFBTUUsVUFBdUIsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU1MLGFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyQyxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNSyxVQUF1QixDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN0QyxJQUFJLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLEtBQUssR0FBR25GLE1BQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsSUFBSSxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUM3QztJQUNBLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQztJQUNBLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLENBQUMsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLElBQUksSUFBSSxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakM7SUFDQSxJQUFJLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7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LEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RCxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDdkQsSUFBSSxDQUFDLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxFQUFFLENBQUMsU0FBUyxFQUFFLENBQUM7QUFDbEM7SUFDQSxJQUFJLE1BQU0sV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzdDLElBQUksTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQztJQUMxQixJQUFJLElBQUksUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwQixJQUFJLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxFQUFFO0lBQ3hDLFFBQVEsTUFBTSxRQUFRLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxFQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNyRyxRQUFRLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsUUFBUSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDNUIsWUFBWSxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsWUFBWSxNQUFNLE9BQU8sR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEQsWUFB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LE1BQU0sRUFBRSxDQUFDO0lBQ2hDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQztJQUNBLElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3hELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFO0lBQ0EsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzFDLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNEO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQztBQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRjtBQUNBO0lBQ0EsSUFBSSxJQUFJLGFBQWEsR0FBRyxFQUFFLENBQUM7QUFDM0I7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFFBQVEsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsUUFBUSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RELElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDL0IsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDN0I7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3pCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDekI7SUFDQSxJQUFJLEtBQUssR0FBR2hHLGtCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLElBQUksYUFBYSxHQUFHQSxrQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7QUFDQTtJQUNBLGVBQWUsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7SUFDL0QsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNqQyxJQUFJLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ2hEO0lBQ0EsSUFBSSxNQUFNLFFBQVEsR0FBRyxJQUFJVyxXQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN6RCxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSUEsV0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDekQ7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDO0lBQzFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFFBQVEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN4RCxRQUFRLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUMsUUFBUSxNQUFNLENBQUMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO0lBQ3JCLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQ3hCLGdCQUFnQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoRSxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLFFBQVEsUUFBUSxDQUFDLEdBQUc7SUFDcEIsWUFBWSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUc7SUFDeEIsZ0JBQWdCLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUM3QyxnQkFBZ0IsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUM7SUFDQSxDQUFDO0FBQ0Q7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsZUFBZSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDckQsSUFBSSxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ25DO0lBQ0EsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzQixJQUFJLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsSUFBSSxNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDeEI7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsUUFBUSxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsR0FBRyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDekQ7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN4QjtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDWixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLENBQUM7SUFDMUUsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEIsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNaLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FB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SUFDckMsUUFBUSxJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUUsTUFBTSxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDaEQsUUFBUSxNQUFNLEdBQUcsTUFBTSxHQUFHd0csTUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxDQUFDLENBQUM7SUFDVixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3pELFFBQVEsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRUEsTUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQzFILFFBQVEsQ0FBQyxDQUFDLEVBQUVBLE1BQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFQSxNQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QjtJQUNBLElBQUksT0FBTyxDQUFDLENBQUM7SUFD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Q3RDLElBQUksTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7QUFDdEM7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNM0IsaUJBQThCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLE1BQU0sSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDaEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0EsSUFBSSxNQUFNRCxpQkFBOEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxNQUFNLFVBQVUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFFLEtBQUs7SUFDTCxJQUFJLE1BQU1DLGVBQTRCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDM0M7SUFDQTtJQUNBO0lBQ0Es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QWdCLENBQUMsQ0FBQztBQUNySDtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ2hFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLDhEQUE4RCxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3BJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0lBQ2xFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLCtEQUErRCxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3JJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztJQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3BFLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdFQUFnRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3RJLFlBQVksT0FBTyxLQUFLLENBQUM7SUFDekIsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDcEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsZ0VBQWdFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdEksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDdEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUVBQWlFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkksWUFBWSxPQUFPLEtBQUssQ0FBQztJQUN6QixTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDeEUsWUFBWSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0VBQWtFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEksWUFBWSxP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QztJQUNsRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDOUYsUUFBUSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUMxRixRQUFRLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUY7SUFDQSxRQUFRLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLEtBQUs7QUFDTDtBQUNBO0lBQ0E7O0lDL0RBO0lBQ0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQU1BO0lBQ2UsZUFBZSxPQUFPLENBQUMsZUFBZSxF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Q0FBQztBQXFCRDtJQUNBO0lBQ0EsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2pDLElBQUksTUFBTSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0YsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDM0YsQ0FBQztBQUNEO0lBQ0E7SUFDQSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDakMsSUFBSSxNQUFNLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkgsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzdFLElBQUksT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0Q7SUFDQTtJQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQ2hDLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQy9CLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixJQUFJLE1BQU0sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsSUFBSSxLQUFLLElBQUksQ0FBQyxD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LENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0M7SUFDQSxJQUFJLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLEVBQUU7SUFDekIsUUFBUSxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sSUFBSSxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1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R0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUQsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSyxDQUFDO0lBQ04sQ0FBQztBQUNEO0FBQ0E7SUFDQSxTQUFTLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDekIsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLFdBQVc7SUFDeEIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDdEQsS0FBSyxDQUFDO0lBQ04sQ0FBQztBQUNEO0lBQ0EsU0FBUyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0QztJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDM0Q7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pELENBQUM7QUFDRDtJQUNBLFNBQVMsV0FBVyxDQUFDLEVBQUUsRUFBRTtJQUN6QixJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakM7SUFDQSxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsSUFBSSxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLElBQUksWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxJQUFJLFlBQVksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNEO0lBQ0EsTUFBTSxNQUFNLENBQUM7QUFDYjtJQUNBLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtJQUN0QixRQUFR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QUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLGFBQWE7QUFDYjtJQUNBLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDbkMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzNCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzFELFNBQVM7SUFDVCxRQUFRLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxPQUFPLEdBQUcsQ0FBQztJQUNuQixLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDWjtJQUNBLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsUUFBUSxNQUFNLENB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QUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2hDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdFLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQTtBQUNBO0lBQ0EsTUFBTSxPQUFPLENBQUM7SUFDZCxJQUFJLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QixRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUIsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3ZDLFFBQVEsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3BFO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDM0MsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVM7QUFDVDtBQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QjtJQUNBLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ2pELFlBQVksSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxZQUFZLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3hDLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0lBQ0EsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEI7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUM5QjtJQUNBLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSztBQUNMO0lBQ0EsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLFlBQVksR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixTQUFTLE1BQU0sSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQzFCLFlBQVksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsU0FBUztJQUNULFFBQVEsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQ3JCLFlBQVksSUFBSSxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDNUIsWUFBWSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDakMsU0FBUyxNQUFNO0lBQ2YsWUFBWSxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3JELFNBQVM7QUFDVDtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUIsUUFBUSxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNoRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDWCxRQUFRLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVCLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxPQUFPLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUIsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDZCxRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3ZCLEtBQUs7QUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDYixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxF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LENBQUMsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDL0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25CLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDWjtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN0QixZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQy9CLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkUsU0FBUyxDQUFDLENBQUM7SUFDWCxLQUFLO0FBQ0w7QUFD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LFNBQVMsUUFBUSxHQUFHO0lBQ3hCLFFBQVEsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN2QztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNyQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRyxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsV0FBVyxHQUFHO0lBQzNCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFB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QyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElB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Q3ZEO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDN0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sQ0FBQztBQUMxRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDdEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFNBQVMsQ0FBQztBQUNWO0lBQ0EsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsaUJBQWlCLEdBQUc7SUFDakMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FB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QyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekc7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDcEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxDQUFDO0lBQ3ZDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDM0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEU7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDcEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsWUFBWSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRTtBQUNoRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDOUM7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxLQUFL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RUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRSxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3RFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNyRDtBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0FBQ2xEO0lBQ0EsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDdEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDdEQsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7QUFDdEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNyRCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDNUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNyRCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDN0MsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNyRCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxXQUFXLEdBQUc7SUFDM0IsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDL0I7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ25EO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDM0MsWUFBWSxDQUFDLENBQUMs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QUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNuRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDM0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDM0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNoRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFD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R0FBRyxRQUFRLENBQUMsQ0FBQztJQUN4RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFF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aEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRSxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEYsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDbEQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztJQUM1RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUMxRDtJQUNBLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELGdCQUFnQixDQUFDLENBQUMsRUFBRTtJQUNwQixvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsb0JBQW9CLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQzFELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hFO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMxRSxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxhQUFhO0lBQ2IsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkYsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUM7SUFDNUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDMUQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsV0FBVyxHQUFHO0lBQzNCLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDekQsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0I7SUFDaEIsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRixvQkFBb0IsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNoQyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksQ0FBQyxDQUFDLEVBQUU7SUFDaEIsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDakQsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQjtJQUNqQixhQUFhO0FBQ2I7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2hFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0FBQ2hFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtJQUNBLElBQUksU0FBUyxpQkFBaUIsR0FBRztJQUNqQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQy9ELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakIsWUFBWSxDQUFDLENBQUMsRUFBRTtJQUNoQixnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsZUFBZSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEUsZ0JBQWdCO0lBQ2hCLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekYsb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDaEMsaUJBQWlCO0lBQ2pCLGFBQWE7QUFDYjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDO0lBQy9ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFD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USxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRixRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUss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QUFDO0FBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQztBQUM3RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO0FBQ3ZEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUN0RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztBQUM3QjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNoQztJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRTtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLENBQUMsR0FB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QVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDN0Q7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUN2RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7SUFDdEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDcEQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUM1RCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEYsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFD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QUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDO0lBQzdELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMs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LENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELFFBQVEsR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7SUFDNUQsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRTtJQUM1RCxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFO0lBQzVELEtBQUssQ0FBQyxDQUFDO0FBQ1A7SUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENB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QUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3ZFO0lBQ0EsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sTUFBTSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzlFO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDekIsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87SUFDakI7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDakQ7QUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUM7SUFDcEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUM7SUFDekQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSyxDQUFDO0FBQ2pGO0FBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUM7QUFDakQ7SUFDQTtJQUNBO0FBQ0E7SUFDQSxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7QUFDQTtBQUNBO0lBQ0EsSUFBSSxTQUFTLG1CQUFtQixHQUFHO0lBQ25DLFFBQVEsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDN0QsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNoQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLFFBQVEsTUFBTSxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDOUU7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN0RTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0MsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNqRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0M7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdB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QUFNLENBQUMsQ0FBQztJQUM1QyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxPQUFPLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQztJQUNwRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxRQUFRLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDckQsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxTQUFTLGFBQWEsR0FBRztJQUM3QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzNELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUN0RDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDMUU7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtBQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7QUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25EO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFFO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0FBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUMxRTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtBQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQ7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxTQUFTLGVBQWUsR0FBRztJQUMvQixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9CLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM1RTtJQUNBLFFBQVEsTUFBTSxLQUFLLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxNQUFNLE1BQU0sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM5RTtBQUNBO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUN6QztJQUNBLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxD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Qy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUM7SUFDMUIsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3BEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDL0M7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQyxTQUFTLENBQUM7SUFDVixLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMscUJBQXFCLEdBQUc7SUFDckMsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMvQjtJQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQzFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVB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LEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3BELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDcEQsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNwRCxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FB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QUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0FBQ0E7SUFDQSxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0FBQ2pCO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDO0FBQ3ZEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNqRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDOUM7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxnQkFBZ0IsR0FBRztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQixRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRCxRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQztBQUN2RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDakQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7SUFDeEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2pELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDO0lBQ3hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDbEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUM7QUFDMUQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUM7QUFDeEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxZQUFZ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Q0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RTtJQUNBLFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztBQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQzNEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDaEQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFdBQVcsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztJQUM1QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0FBQ3JEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztBQUNyRDtBQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNuRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDdkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDbkQ7QUFDQTtJQUNBLFNBQVMsQ0FBQztJQUNWLEtBQUs7SUFDTCxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0FBQ0E7SUFDQSxJQUFJLFNBQVMsY0FBYyxHQUFHO0FBQzlCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUMzRCxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEM7SUFDQSxRQUFRLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztBQUNBO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEU7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNyRDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3hEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUM7QUFDM0Q7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0lBQ3RELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ3REO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQztJQUN0RCxTQUFTLENBQUM7SUFDVixLQUFLO0lBQ0wsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUNyQjtBQUNBO0lBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztJQUN4QixRQUFRLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2hDO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFO0lBQ0EsUUFBUSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxNQUFNLE9BQU8sSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzlDLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLE1BQU0sT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEYsUUFBUSxNQUFNLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FB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LEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckUsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRSxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3REO0FBQ0E7SUFDQSxRQUFRLENBQUMsQ0FBQyxPQUFPO0lBQ2pCO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDO0FBQ3BEO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2hELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDckQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDcEQ7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDaEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbEQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7SUFDbkQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNyRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNwRDtJQUNBO0lBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsQ0FBQztJQUM1RSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNsRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNuRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ2xELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2xEO0lBQ0E7SUFDQTtJQUNB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QUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUNyQztJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckQsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyRDtJQUNBLFFBQVEsQ0FBQyxDQUFDLE9BQU87QUFDakI7SUFDQTtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN6RDtJQUNBO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFB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RCxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsUUFBUSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN0RCxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QztBQUNBO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUN4RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQztBQUN4RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzVELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7QUFDbkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQ25ELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0FBQzNEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDO0lBQzNELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQzlELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUM7QUFDcEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQztJQUMzRCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztJQUM5RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDO0FBQ3BEO0lBQ0EsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUM7SUFDM0QsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7SUFDOUQsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQztBQUNwRDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEdBQUcsQ0FBQztBQUMzQztJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDekUsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7QUFDdkQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxHQUFHO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkUsYUFBYTtJQUNiLFNBQVMsQ0FBQztBQUNWO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNwRSxRQUFRLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLFFBQVEsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUQ7SUFDQSxRQUFRLFFBQVEsQ0FBQyxPQUFPO0lBQ3hCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDO0FBQ3RFO0lBQ0EsWUFBWSxFQUFFLENBQUMsR0FBRztJQUNsQixnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDO0lBQzNELGFBQWE7SUFDYixTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxjQUFjLEdBQUc7SUFDOUIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2xFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0IsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sSUFBSSxHQUFHLG9IQUFvSCxDQUFDO0lBQzFJLFFBQVEsTUFBTSxLQUFLLEdBQUcsaUdBQWlHLENBQUM7SUFDeEgsUUFBUSxNQUFNLE1BQU0sR0FBRyxDQUFDLFNBQVMsR0FBRyxTQUFTLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN6RDtJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEc7SUFDQSxRQUFRLE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckY7QUFDQTtJQUNBLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsUUFBUSxDQUFDLENBQUMsT0FBTztJQUNqQixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwRSxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7SUFDYixZQUFZLENBQUMsQ0FBQyxFQUFFO0lBQ2hCLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRixnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLGFBQWE7QUFDYjtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDO0lBQ3JELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUM7QUFDaEQ7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQztJQUN2RCxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDO0FBQ2pEO0FBQ0E7SUFDQSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGVBQWUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQ3ZELFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNwRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUN4RDtJQUNBLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDL0U7SUFDQSxZQUFZLENBQUMsQ0FBQyxHQUFHO0lBQ2pCLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQztJQUN2RCxhQUFhO0FBQ2I7SUFDQSxTQUFTLENBQUM7QUFDVjtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUM7SUFDcEUsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4QyxRQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLE1BQU0sRUFBRSxHQUFHLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztBQUM3QztJQUNBLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFEO0lBQ0EsUUFBUSxRQUFRLENBQUMsT0FBTztJQUN4QixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksQ0FBQztBQUN0RTtJQUNBLFlBQVksRUFBRSxDQUFDLEdBQUc7SUFDbEIsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLGdCQUFnQixFQUFFLElBQUksQ0FBQztJQUMzRCxhQUFhO0lBQ2IsU0FBUyxDQUFDO0lBQ1YsS0FBSztBQUNMO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdCLFFBQVEsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsUUFBUSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQ3JCLElBQUksY0FBYyxFQUFFLENBQUM7QUFDckI7SUFDQSxJQUFJLGdCQUFnQixFQUFFLENBQUM7SUFDdkIsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO0FBQzFCO0lBQ0EsSUFBSSxjQUFjLEVBQUUsQ0FBQztJQUNyQixJQUFJLGNBQWMsRUFBRSxDQUFDO0FBQ3JCO0lBQ0EsSUFBSSxlQUFlLEVBQUUsQ0FBQztBQUN0QjtJQUNBLElBQUksMkJBQTJCLEVBQUUsQ0FBQztJQUNsQyxJQUFJLHdCQUF3QixFQUFFLENBQUM7QUFDL0I7SUFDQSxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0IsUUFBUSxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxRQUFRLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksRUFBRSxDQUFDO0FBQ25CO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQztBQUMvQztBQUNBO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQztJQUNqRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxDQUFDO0lBQ2pELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLENBQUM7SUFDbEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxDQUFDO0lBQzNELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcseUJBQXlCLENBQUMsQ0FBQztJQUM5RCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLG9CQUFvQixDQUFDLENBQUM7SUFDekQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3pEO0lBQ0EsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMvQyxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDakQ7SUFDQSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQztBQUNsRDtJQUNBO0lBQ0EsQ0FBQyxDQUFDO0FBQ0Y7SUFDQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0EsSUFBSSxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQy9CLElBQUksZUFBZSxHQUFHLGNBQWMsQ0FBQztBQThHckM7SUFDQSxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFO0lBQzVCLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFdBQVcsRUFBRTtJQUNwQyxRQUFRLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkQsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUM5QixLQUFLO0lBQ0wsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLE1BQU0sS0FBSyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFO0lBQ3BCLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRTtJQUMxQixZQUFZLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25CLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsU0FBUyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUU7SUFDakMsWUFBWSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFNBQVMsTUFBTTtJQUNmLFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5RCxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixTQUFTO0lBQ1QsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEVBQUU7SUFDWCxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUM5RCxLQUFLO0lBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBd0NEO0lBQ0EsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUIsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0Q7SUFDQSxTQUFTLFFBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQzdCLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2hCLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDbEIsUUFBUSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1QixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEIsS0FBSztJQUNMLElBQUksT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFVBQVUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQy9CLElBQUk7SUFDSixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDOUIsU0FBUyxTQUFTLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxTQUFTLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdDLFNBQVMsU0FBUyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckMsU0FBUyxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ25CLE1BQU07SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakIsSUFBSTtJQUNKLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxFQUFFLElBQUksQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksVUFBVSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0QsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFVLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFNBQVMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVUsTUFBTSxDQUFDLENBQUM7SUFDaEMsTUFBTTtJQUNOLENBQUM7QUFDRDtJQUNBLFNBQVMsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7SUFDdEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUN0QyxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7SUFDeEIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDdEQsS0FBSztJQUNMLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbkIsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDO0lBQy9ELFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUN4RSxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztJQUNyQyxTQUFTO0lBQ1QsS0FBSztJQUNMLENBQUM7QUFDRDtJQUNBLFNBQVMsWUFBWSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDL0IsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pEO0lBQ0EsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDRDtJQUNBLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7SUFDaEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUNuQyxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNoQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNqRCxLQUFLO0lBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7QUFrQkQ7SUFDQSxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3hCO0lBQ0EsTUFBTSxTQUFTLENBQUM7QUFDaEI7SUFDQSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUU7SUFDdEIsUUFBUSxJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQy9CLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsU0FBUyxFQUFFO0lBQzdDLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2xELFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxTQUFTO0FBQ1Q7SUFDQSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQ2xCLFFBQVEsS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3JELFFBQVEsS0FBSyxFQUFFLEtBQUssU0FBUyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzFCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsQ0FBQztJQUNyRCxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUM1RDtJQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsSUFBSSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM3QyxZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ25GO0lBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQztBQUNqQjtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztJQUMvQjtJQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLFFBQVEsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3BCO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFlBQVksTUFBTSxPQUFPLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLFlBQVksSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLE9BQU8sT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2pELFlBQVksSUFBSSxDQUFDLElBQUksRUFBRTtJQUN2QixnQkFBZ0IsSUFBSSxHQUFHLElBQUksU0FBUyxFQUFFO0lBQ3RDLG9CQUFvQixJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsaUJBQWlCLE1BQU07SUFDdkIsb0JBQW9CLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxpQkFBaUI7SUFDakIsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUNqQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3RCLFFBQVEsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7QUFDcEM7SUFDQSxRQUFRLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPO0FBQzNCO0lBQ0EsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQztJQUN6RCxRQUFRLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQztBQUNoRTtJQUNBLFFBQVEsSUFBSSxTQUFTLElBQUksUUFBUSxFQUFFO0lBQ25DLFlBQVksSUFBSSxDQUFDLElBQUksWUFBWSxTQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDdkUsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDeEYsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDN0UsYUFBYTtBQUNiO0lBQ0EsU0FBUztBQUNUO0FBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUMxQixRQUFRLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDcEIsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDcEIsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdELFlBQVksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsWUFBWSxNQUFNLE9BQU8sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEcsWUFBWSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxDQUFDLEdBQUcsQ0FBQztJQUNqQixZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEIsU0FBUztBQUNUO0lBQ0EsS0FBSztJQUNMLENBQUM7QUFDRDtJQUNBLFNBQVMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFO0lBQ2xELElBQUksT0FBTyxlQUFlLFlBQVksQ0FBQyxNQUFNLEVBQUU7SUFDL0MsUUFBUSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDNUQsUUFBUSxLQUFLLE9BQU8sR0FBRyxHQUFHLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRTtJQUNsRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNuRCxTQUFTO0lBQ1QsUUFBUSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsUUFBUSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDOUIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3QyxZQUFZLElBQUksQ0FBQyxDQUFDO0lBQ2xCLFlBQVksSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUU7SUFDckMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7SUFDbkMsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixDQUFDLEdBQUcsT0FBTyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUM7SUFDL0MsYUFBYTtJQUNiLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFNBQVM7QUFDL0I7SUFDQSxZQUFZLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9GLFlBQVksTUFBTSxJQUFJLEdBQUc7SUFDekIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDekQsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3BELGdCQUFnQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUU7SUFDdEQsb0JBQW9CLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUM1QixvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUIsaUJBQWlCLENBQUM7SUFDbEIsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7SUFDMUQsYUFBYSxDQUFDO0lBQ2QsWUFBWSxVQUFVLENBQUMsSUFBSTtJQUMzQixnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsYUFBYSxDQUFDO0lBQ2QsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQ7SUFDQSxRQUFRLElBQUksV0FBVyxDQUFDO0lBQ3hCLFFBQVEsSUFBSSxNQUFNLFlBQVksU0FBUyxFQUFFO0lBQ3pDLFlBQVksV0FBVyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxTQUFTLE1BQU07SUFDZixZQUFZLFdBQVcsR0FBRyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsUUFBUSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QyxZQUFZLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDdkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLFdBQVcsQ0FBQztJQUMzQixLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxNQUFNLFVBQVUsQ0FBQztBQUNqQjtJQUNBLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUNuQyxRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDN0I7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQzdEO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDdkQ7SUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7SUFDQSxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BDO0lBQ0EsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7SUFDbEMsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDMUQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDekMsWUFBWSxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEQsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDN0M7SUFDQSxRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakM7SUFDQSxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUc7SUFDOUIsWUFBWSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDbkMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQixRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQztJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUMzQyxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztJQUNoRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLG9CQUFvQixFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hHLFFBQVEsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUcsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4RixRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDbkIsUUFBUSxJQUFJLENBQUMs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LGNBQWMsQ0FBQyxDQUFDLEVBQUU7SUFDdEIsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsS0FBSztBQUNMO0lBQ0EsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNkLFFBQVEsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNkLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFD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QUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQzFCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ25CLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3ZCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJ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LE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEUsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkMsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN2QyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMvQixRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNoQixRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRSxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsUUFBUSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QixLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7SUFDbEIsUUFBUSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDVixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNyQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDVixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQyxLQUFLO0FBQ0w7SUFDQSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDVixRQUFRLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxLQUFLO0FBQ0w7SUFDQSxDQUFDO0FBQ0Q7SUFDQSxNQUFNLFNBQVMsQ0FBQztBQUNoQjtJQUNBLElBQUksV0FBVyxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO0lBQ3BELFFBQVEsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDckIsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixRQUFRLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ25CO0lBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5RCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDMUIsUUFBUSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVDO0lBQ0EsUUFBUSxJQUFJLFFBQVEsRUFBRTtJQUN0QixZQUFZLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN6QyxRQUFRLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtJQUNBLFFBQVEsSUFBSSxDQUFDLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEYsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsUUFBUSxJQUFJLENBQUMsV0FBVyxHQUFHLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxNQUFNLEdBQUcsY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixRQUFRLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxjQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRixRQUFRLElBQUksQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sR0FBRyxrQkFBa0IsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xHLFFBQVEsSUFBSSxDQUFDLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsTUFBTSxHQUFHLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDMUIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakcsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUNuQixRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RSxRQUFRLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3pCLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDdkIsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEYsS0FBSztBQUNMO0lBQ0EsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNiLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDN0MsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLGFBQWEsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3BELGdCQUFnQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ2IsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzdDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRCxhQUFhLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNwRCxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEQsYUFBYTtJQUNiLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2IsUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pDLFlBQVksSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM3QyxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsYUFBYSxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDcEQsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGFBQWEsTUFBTTtJQUNuQixnQkFBZ0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3RELGFBQWE7SUFDYixTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDN0MsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELGFBQWEsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3BELGdCQUFnQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNwRCxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ2IsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbEQsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNYLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkMsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLE1BQU0sQ0FBQyxDQUFDLEVBQUU7SUFDZCxRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFNBQVMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hELFlBQVksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRCxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLENBQUMsQ0FBQyxFQUFFO0lBQ2QsUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pDLFlBQVksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM5QyxTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEQsU0FBUyxNQUFNO0lBQ2YsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbEQsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7SUFDdEIsUUFBUSxJQUFJLEVBQUUsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxFQUFFO0lBQ3hDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxJQUFJLE1BQU0sQ0FBQztJQUNuQixRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDbEQsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztJQUN4RCxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNsQixRQUFRLElBQUksTUFBTSxDQUFDO0lBQ25CLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUM5QyxTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLGdCQUFnQixDQUFDO0lBQ3BELFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNaLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDN0MsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pELGFBQWEsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3BELGdCQUFnQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxhQUFhLE1BQU07SUFDbkIsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN0RCxhQUFhO0lBQ2IsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQzdDLGdCQUFnQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxhQUFhLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNwRCxnQkFBZ0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsYUFBYSxNQUFNO0lBQ25CLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDdEQsYUFBYTtJQUNiLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxDQUFDLEVBQUU7SUFDaEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pDLFlBQVksT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRCxTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLE9BQU8sQ0FBQyxDQUFDO0lBQ3JCLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFVBQVUsQ0FBQyxDQUFDLEVBQUU7SUFDbEIsUUFBUSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ3pDLFlBQVksT0FBTyxDQUFDLENBQUM7SUFDckIsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRixRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQSxJQUFJLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUU7SUFDckMsUUFBUSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxlQUFlLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7SUFDcEMsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RGLFNBQVMsTUFBTSxJQUFJLENBQUMsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2hELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hGLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzFELFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsUUFBUSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEYsUUFBUSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsS0FBSztBQUNMO0lBQ0EsSUFBSSxjQUFjLENBQUMsQ0FBQyxFQUFFO0lBQ3RCLFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsUUFBUSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE9BQU8sSUFBSSxDQUFDO0lBQ3BCLEtBQUs7QUFDTDtJQUNBLElBQUksUUFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFO0lBQzdCLFFBQVEsSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUN6QyxZQUFZLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9CLFlBQVksT0FBTztJQUNuQixTQUFTLE1BQU0sSUFBSSxDQUFDLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNoRCxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RixZQUFZLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxVQUFVLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRTtJQUM1QixRQUFRLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzdCLFFBQVEsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRTtJQUN2QixRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5RSxZQUFZLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbkUsWUFBWSxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDMUMsU0FBUyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDaEQsWUFBWSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BFLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLFlBQVksT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwQyxTQUFTLE1BQU07SUFDZixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUNsRCxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFO0lBQ2YsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEMsUUFBUSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekMsUUFBUSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25ELFFBQVEsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELFFBQVEsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvQixRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0IsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0lBQ2pCLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6QixRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNuQixRQUFRLElBQUksUUFBUSxDQUFDO0lBQ3JCLFFBQVEsSUFBSSxHQUFHLENBQUM7SUFDaEIsUUFBUSxHQUFHO0lBQ1gsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxZQUFZLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEMsWUFBWSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdELFNBQVMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDbkM7SUFDQSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRCxRQUFRLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsUUFBUSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25DO0lBQ0EsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7SUFDM0IsWUFBWSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNELFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBLElBQUksUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNoQixRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUM1QixZQUFZLE9BQU87SUFDbkIsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMzQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsYUFBYSxDQUFDO0lBQ2QsU0FBUztJQUNULFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pELFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25FLFFBQVEsSUFBSSxDQUFDLENBQUM7SUFDZCxRQUFRLElBQUksQ0FBQyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDekMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxTQUFTLE1BQU07SUFDZixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLEtBQUs7QUFDTDtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRTtJQUNsQixRQUFRLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNkLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRTtJQUN6QixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QyxTQUFTLE1BQU07SUFDZixZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUMzQixTQUFTO0lBQ1QsUUFBUSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzFDLFlBQVksT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ25DLFNBQVMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQzdDLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxZQUFZLE9BQU8sSUFBSSxDQUFDO0lBQ3hCLFNBQVMsTUFBTTtJQUNmLFlBQVksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFlBQVksT0FBTyxJQUFJLENBQUM7SUFDeEIsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNULFFBQVEsSUFBSSxDQUFDLFlBQVksVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLFFBQVEsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLEtBQUs7QUFDTDtJQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNULFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNy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Q0FBQyxDQUFDO0lBQzNELElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdDLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsSUFBSSxNQUFNLFVBQVUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVEO0lBQ0EsSUFBSSxFQUFFLENBQUMsUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7SUFDNUQsUUFBUSxHQUFHLEVBQUU7SUFDYixZQUFZLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTTtJQUMvQixTQUFTO0lBQ1QsS0FBSyxDQUFDLENBQUM7SUFDUDtJQUNBLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDNUIsUUFBUSxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzVCLEtBQUs7SUFDTDtJQUNBLElBQUksRUFBRSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7SUFDbkMsSUFBSSxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDcEIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsSUFBSSxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDOUIsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDNUIsSUFBSSxFQUFFLENBQUMsT0FBTyxHQUFHLElBQUks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RUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM1QyxZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUM7SUFDekMsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLE9BQU8sQ0FBQztJQUN2QixLQUFLLENBQUM7SUFDTixDQUFDO0FBQ0Q7SUFDQSxTQUFTLFlBQVksQ0FBQyxLQUFLLEVBQUU7SUFDN0IsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hCLElBQUksS0FBSyxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzNDO0lBQ0EsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0MsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbkU7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFB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QVEsR0FBRyxFQUFFLENBQUM7QUFDNUI7SUFDQSxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM5RSxRQUFRLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RTtJQUNBLFFBQVEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxNQUFNLElBQUksR0FBRyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDN0g7SUFDQSxRQUFRLElBQUksT0FBTyxDQUFDO0lBQ3BCLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUMxQyxZQUFZLE9BQU8sR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELFNBQVMsTUFBTTtJQUNmLFlBQVksT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLFFBQVEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENB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TyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN0RDtJQUNBLFlBQVksTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxZQUFZLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1QjtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNyRCxZQUFZLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDckQ7SUFDQSxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFF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LENBQUMsQ0FBQztJQUMxRSxTQUFTO0FBQ1Q7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQzNCLFlBQVksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQzFFLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ2pFLFNBQVM7QUFDVDtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2hFO0FBQ0E7SUFDQSxRQUFRLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsUUFBUSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0EsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLDJCQUEyQixFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUNoSjtJQUNBLFFBQVEsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQzVCO0lBQ0EsUUFBUSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFB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SUFBSSxDQUFDO0lBQzdCLElBQUksS0FBSyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDbEIsSUFBSSxLQUFLLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUMxQyxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkQsSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0csSUFBSSxLQUFLLENBQUMsRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxD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QU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDM0MsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUN2QyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDbEQsUUFBUSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3BDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtJQUNBLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNwRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzVDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDM0IsWUFBWSxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQy9CLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDM0UsS0FBSztBQUNMO0FBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7SUFDcEQsUUFBUSxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDO0lBQ25DLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3BDLFlBQVksTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQzlCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDMUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDN0IsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtJQUM1QyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQzNCLFlBQVksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMvQixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLEtBQUs7QUFDTDtBQUNBO0lBQ0EsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFO0lBQ25ELFFBQVEsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQztJQUNuQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUNwQyxZQUFZLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDdkIsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUM5QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0lBQzFDLFlBQVksTUFBTSxHQUFHLE9BQU8sQ0FBQztJQUM3QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQzdCLFNBQVMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDNUMsWUFBWSxNQUFNLEdBQUcsT0FBTyxDQUFDO0lBQzdCLFlBQVksS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixZQUFZLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDL0IsU0FBUztJQUNULFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMzRSxLQUFLO0FBQ0w7SUFDQSxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMxQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDMUMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFO0lBQzNDLFFBQVEsTUFBTSxNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsQ0FBQztJQUNwQyxRQUFRLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQzFELFFBQVEsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUMvRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRTtJQUMzQyxRQUFRLE1BQU0sTUFBTSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7SUFDcEMsUUFBUSxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUMxRCxRQUFRLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUU7SUFDdkMsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDMUQsUUFBUSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQy9ELEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtJQUNsRCxRQUFRLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7SUFDbkMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDcEMsWUFBWSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLFlBQVksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUN0QixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDOUIsU0FBUyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtJQUMxQyxZQUFZLE1BQU0sR0FBRyxPQUFPLENBQUM7SUFDN0IsWUFBWSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLFlBQVksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUM3QixTQUFTLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQzVDLFlBQVksTUFBTSxH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LEVBQUUsUUFBUSxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDbkYsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7SUFDekQsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDM0MsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDN0M7SUFDQSxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUN2RCxJQUFJLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUN2RDtBQUNBO0lBQ0EsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDakQsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksTUFBTSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN2RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzVELElBQUksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDNUQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDbkQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDbkQ7SUFDQSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUNuRCxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3ZFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxRQUFRLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3pFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUMxRSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDdkUsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQ3hFLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN4RSxJQUFJLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDMUUsSUFBSSxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0lBQzFFLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDekUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7SUFDeEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEdBQUcsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFD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LEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0IsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLElBQUksTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEU7SUFDQSxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxJQUFJLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDM0MsSUFBSSxNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLElBQUksTUFBTSxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUN4QztJQUNBLElBQUksSUFBSSxPQUFPLENBQUM7SUFDaEIsSUFBSSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0QsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEMsSUFBSSxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0I7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLElBQUksTUFBTSxDQUFDO0lBQ2YsSUFBSSxNQUFNLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUQsSUFBSSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsSUFBSSxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUI7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLElBQUksTUFBTSxHQUFHLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDcEMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsSUFBSSxNQUFNLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNwRDtJQUNBLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVCLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFD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RUFBRSxJQUFJLEVBQUU7SUFDcEQsUUFBUSxJQUFJLEVBQUUsQ0FBQztJQUNmLFFBQVEsSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFO0lBQy9CLFlBQVksRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUNyQixTQUFTLE1BQU07SUFDZixZQUFZLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDckIsU0FBUztBQUNUO0lBQ0EsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEcsUUFBUSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM1RDtJQUNBLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLFFBQVEsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxRQUFRLENBQUMsQ0FBQyxFQUFFO0lBQy9CLFFBQVEsTUFBTSxRQUFRLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxNQUFNLFNBQVMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xHLFFBQVEsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pDO0lBQ0EsUUFBUSxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtJQUNBOztJQzFJQTtJQUNB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QUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzFELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO0lBQzFELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzVELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFO0lBQzVELFFBQVEsSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQzdELFFBQVEsT0FBTyxLQUFLLENBQUM7SUFDckIsS0FBSztJQUNMLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7SUFDakQsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDN0QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbkYs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QUFDLENBQUM7QUFDbEQ7SUFDQSxJQUFJLE1BQU1MLFdBQXFCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdDO0lBQ0E7SUFDQSxJQUFJLE1BQU1ULFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtJQUNBO0lBQ0EsSUFBSSxNQUFNQSxXQUF3QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0lBQ0E7SUFDQSxJQUFJLE1BQU1BLFdBQXdCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUQ7SUFDQTtJQUNBLElBQUksTUFBTUEsV0FBd0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM5RDtJQUNBLElBQUksTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoRSxJQUFJLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsSCxJQUFJLE1BQU0saUJBQWlCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxN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LENBQUM7SUFDcEIsSUFBSSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQixJQUFJLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFCLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLEVBQUUsQ0FBQztJQUNyQyxJQUFJLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLE1BQU0sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFCO0lBQ0E7SUFDQSxJQUFJLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3pDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLElBQUksTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hCO0lBQ0E7SUFDQSxJQUFJLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLElBQUksTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLElBQUksTUFBTSwwQkFBMEIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoSTtJQUNBO0lB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QUksTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNsQztJQUNBLElBQUksTUFBTSxTQUFTLEdBQUcsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzNFO0lBQ0EsSUFBSSxJQUFJLElBQUksR0FBRztJQUNmLFFBQVEsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO0lBQy9CLFFBQVEsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO0lBQ3pCLFFBQVEsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO0FBQzdCO0lBQ0EsUUFBUSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUN0RDtJQUNBLFFBQVEsU0FBUyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDcEQsUUFBUSxVQUFVLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN0RCxRQUFRLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0FBQ3REO0lBQ0EsUUFBUSxlQUFlLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBQ3JELEtBQUssQ0FBQztBQUNOO0lBQ0E7SUFDQTtJQUNBLElBQUksTUFBTUcsc0JBQW1DLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUMsUUFBUSxN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Q0E7QUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUtBO0lBQ0EsTUFBTSxxQkFBQ0Msb0JBQWtCLG9CQUFFRCxrQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNyRDtJQUNlLGVBQWUsNEJBQTRCLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUU7SUFDbEYsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7QUFDdkU7SUFDQSxJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25EO0lBQ0E7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxFQUFFLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsSUFBSSxJQUFJLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLElBQUksRUFBRSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQ7SUFDQSxJQUFJLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDN0IsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsRUFB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LENBQUM7SUFDeEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDaEMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakMsSUFBSSxJQUFJLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sVUFBVSxDQUFDLEVBQUUs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LEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsWUFBWSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsU0FBUztBQUNUO0lBQ0EsUUFBUSxTQUFTLHdCQUF3QixDQUFDLEVBQUUsRUFBRTtJQUM5QyxZQUFZLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7SUFDNUIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEIsWUFBWSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUs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QUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0QsWUFBWSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNEO0lBQ0E7SUFDQSxZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxZQUFZLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUNqRCxZQUFZLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxZQUFZLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLFNBQVM7SUFDVCxRQUFRLE1BQU0sZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLEtBQUs7QUFDTDtJQUNBLElBQUksZUFBZSxVQUFVLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRTtJQUNoRCxRQUFRLE1BQU0sS0FBSyxHQUFHLElBQUlBLFdBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsTUFBTSxZQUFZLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFH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LEVBQUUsQ0FBQyxDQUFDO0FBQy9CO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9DO0lBQ0EsUUFBUSxNQUFNLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0M7SUFDQSxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ2pCLFFBQVEsSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNsRSxRQUFRLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FB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SyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMzRTtJQUNBLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hFO0lBQ08sU0FBUyxPQUFPLENBQUMsQ0FBQyxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUU7SUFDeEMsSUFBSSxNQUFNLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckM7SUFDQSxJQUFJLEtBQUssSUFBSSxLQUFLLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFO0lBQ3ZEO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTtJQUNuQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN4RSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcs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LENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxFQUFFO0lBQ3JCLFFBQVEsT0FBTztJQUNmLFlBQVksRUFBRSxDQUFDLElBQUk7SUFDbkIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFNBQVMsQ0FBQztJQUNWLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxLQUFLLENBQUMsRUFBRSxFQUFFO0lBQ3JCLFFBQVEsT0FBTztJQUNmLFlBQVksRUFBRSxDQUFDLElBQUk7SUFDbkIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsWUFBWSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxTQUFTLENBQUM7QUFDVjtJQUNBLEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDckMsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ2xCO0lBQ0EsUUFBUSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQztJQUNBLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoQjtJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDcEM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN2QjtJQUNBLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFO0lBQ2YsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0lBQzVDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsUUFBUSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDbEI7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0I7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QztJQUNBLFFBQVEsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzFDO0lBQ0EsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLFFBQVEsSUFBSSxDQUFDLEVBQUU7SUFDZixZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkIsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7SUFDbkQsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQyxRQUFRLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEM7SUFDQSxRQUFRLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNsQjtJQUNBLFFBQVEsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckM7SUFDQSxRQUFRLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLFFBQVEsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbkMsUUFBUSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxRQUFRLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3JDO0lBQ0EsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0I7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDNUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDNUM7SUFDQSxRQUFRLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM3QyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzdDO0lBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0QztJQUNBLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNoQixRQUFRLElBQUksQ0FBQyxFQUFFO0lBQ2YsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLEtBQUs7SUFDTDs7SUNqSk8sTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7SUFDcEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDaEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDaEMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDaEMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDN0IsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDOUIsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDOUIsTUFBTSxxQkFBcUIsR0FBRyxFQUFFLENBQUM7SUFDakMsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7SUFDcEMsTUFBTSxvQkFBb0IsR0FBRyxFQUFFOztJQ2R0QztJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFHQTtJQUNPLE1BQU0sVUFBVSxDQUFDO0lBQ3hCLElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQzdDLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7SUFDakMsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQzdCLEtBQUs7QUFDTDtJQUNBLElBQUksYUFBYSxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7SUFDeEQsUUFBUSxJQUFJLFlBQVksR0FBRyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZEO0lBQ0EsUUFBUSxPQUFPLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLHFCQUFxQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ3ZELFFBQVEsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM1QixRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDekMsWUFBWSxJQUFJQSxXQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkYsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdFO0lBQ0EsUUFBUSxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVB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QUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pHLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNELEtBQUs7QUFDTDtJQUNBLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRTtJQUNyQixRQUFRLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0QsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxLQUFLLEVBQUU7SUFDdkIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RTtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSUEsV0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRTtJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRTtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0QztJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RCO0lBQ0E7SUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksWUFBWSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7SUFDM0IsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNqRTtJQUNBLFFBQVEsTUFBTSxNQUFNLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2xFLFFBQVEsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSUEsV0FBUyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RyxRQUFRLElBQUksR0FBRyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRTtJQUNBO0lBQ0EsUUFBUSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM3RTtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlCO0lBQ0E7SUFDQSxRQUFRLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEI7SUFDQTtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQzdCLEtBQUs7QUFDTDtJQUNBO0lBQ0EsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO0lBQ3RCLFFBQVEsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMzQixRQUFRLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QyxRQUFRLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUM1QztJQUNBLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RTtJQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUU7SUFDM0MsWUFBWSxJQUFJQSxXQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNyRCxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUYsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQy9DLGdCQUFnQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqSCxhQUFhO0lBQ2IsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksQ0FBQztJQUNwQixLQUFLO0FBQ0w7SUFDQTtJQUNBLElBQUksVUFBVSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUU7SUFDeEIsUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQzNCO0lBQ0EsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDOUI7SUFDQSxRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRTtJQUM1QyxZQUFZLElBQUlBLFdBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkU7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUN0QjtJQUNBO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BDLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsWUFBWSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDMUMsU0FBUztBQUNUO0lBQ0EsUUFBUSxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFHekIsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzNDLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsRUFBRTtJQUNsRSxn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QUMxQixLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsVUFBVSxHQUFHLENBQUMsRUFBRTtJQUN0QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsWUFBWSxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDeEMsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN2RixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzdELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLFVBQVUsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN0RCxZQUFZLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztBQUN4QztJQUNBLFlBQVksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQ2pDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFHLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLEtB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Q0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvRixTQUFTO0FBQ1Q7SUFDQTtJQUNBO0lBQ0EsUUFBUSxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRixRQUFRLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDcEQsWUFBWSxJQUFJQSxXQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0Y7SUFDQTtJQUNBLFFBQVEsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLFlBQVksTUFBTSxLQUFLLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDcEM7SUFDQSxZQUFZLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsWUFBWSxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RSxLQUFLO0FBQ0w7SUFDQSxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRTtJQUM3QyxRQUFRLElBQUksT0FBTyxHQUFHLENBQUMsRUFBRTtJQUN6QixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyw4QkFBOEIsRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM5RSxTQUFTLE1BQU0sSUFBSSxDQUFDLEtBQUssT0FBTyxFQUFFO0lBQ2xDLFlBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxJQUFJLENBQUMsS0FBSyxlQUFlLENBQUMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsT0FBTyxHQUFHLENBQUMsRUFBRTtJQUNsRixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxnQ0FBZ0MsRUFBRSxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLFNBQVM7QUFDVDtJQUNBLFFBQVEsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzNELFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3JCO0lBQ0E7SUFDQSxRQUFRLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDO0lBQzFGLFFBQVEsSUFBSSxXQUFXLEdBQUcsT0FBTyxFQUFFO0lBQ25DO0lBQ0EsWUFBWSxLQUFLLElBQUksQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3hELGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3RixhQUFhO0lBQ2IsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDakQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzFDLFlBQVksTUFBTSxNQUFNLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQyxZQUFZLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksZUFBZSxDQUFDLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ2hJO0lBQ0EsWUFBWSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNwSCxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkU7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUM7SUFDM0MsWUFBWSxNQUFNLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGVBQWUsQ0FBQztJQUNqRixZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RDtJQUNBO0lBQ0EsWUFBWSxJQUFJLENBQUMsTUFBTSxFQUFFO0lBQ3pCLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDckUsYUFBYTtBQUNiO0lBQ0E7SUFDQSxZQUFZLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN6QixnQkFBZ0IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNHLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakQsYUFBYTtBQUNiO0lBQ0EsWUFBWSxJQUFJLE1BQU0sRUFBRTtJQUN4QixnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLGFBQWE7SUFDYixTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sR0FBRyxDQUFDO0FBQ25CO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxLQUFLO0FBQ0w7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksUUFBUSxHQUFHO0lBQ2YsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEMsUUFBUSxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDekQsWUFBWSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDaEQsZ0JBQWdCLElBQUlBLFdBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRjtJQUNBLFlBQVksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEUsWUFBWSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUNqQyxTQUFTO0lBQ1QsS0FBSztBQUNMO0lBQ0EsSUFBSSxPQUFPLCtCQUErQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzlELFFBQVEsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM1QixRQUFRLElBQUksVUFBVSxHQUFHLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDOUMsWUFBWSxVQUFVLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekQsU0FBUztBQUNUO0lBQ0EsUUFBUSxPQUFPLFVBQVUsQ0FBQztBQUMxQjtJQUNBLFFBQVEsU0FBUyx5QkFBeUIsQ0FBQyxDQUFDLEVBQUU7SUFDOUMsWUFBWSxJQUFJLFVBQVUsQ0FBQztBQUMzQjtJQUNBLFlBQVksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsZ0JBQWdCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTO0FBQ3RDO0lBQ0EsZ0JBQWdCLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtJQUM5QyxvQkFBb0IsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFO0lBQ3RELHdCQUF3QixJQUFJQSxXQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLG9CQUFvQixVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzdELG9CQUFvQixVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDM0Qsb0JBQW9CLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxpQkFBaUIsTUFBTTtJQUN2QixvQkFBb0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxpQkFBaUI7SUFDakIsYUFBYTtBQUNiO0lBQ0EsWUFBWSxJQUFJLFdBQVcsR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksV0FBVyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsWUFBWSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztBQUMzRDtJQUNBLFlBQVksVUFBVSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM1QztJQUNBLFlBQVksT0FBTyxVQUFVLENBQUM7SUFDOUIsU0FBUztJQUNULEtBQUs7QUFDTDtJQUNBLElBQUksT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzNDLFFBQVEsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM1QixRQUFRLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7SUFDOUMsWUFBWSxJQUFJQSxXQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakcsUUFBUSxJQUFJLFVBQVUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckQ7SUFDQTtJQUNBO0lBQ0EsUUFBUSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0MsUUFBUSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDdEM7SUFDQSxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzlDLFlBQVksVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0FBQ1Q7SUFDQSxRQUFRLE9BQU8sVUFBVSxDQUFDO0lBQzFCLEtBQUs7QUFDTDtJQUNBLElBQUksS0FBSyxHQUFHO0lBQ1osUUFBUSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzNCLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNqRCxZQUFZLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekMsWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO0lBQ3ZDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDekMsb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQUM7SUFDakMsaUJBQWlCLE1BQU0sSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ2hELG9CQUFvQixHQUFHLElBQUksS0FBSyxDQUFDO0lBQ2pDLGlCQUFpQjtJQUNqQixnQkFBZ0IsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtJQUMzQixvQkFBb0IsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDbEQsaUJBQWlCO0lBQ2pCLGFBQWE7SUFDYixTQUFTO0lBQ1QsUUFBUSxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0lBQzFDLFFBQVEsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDcEQsUUFBUSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELFFBQVEsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxRQUFRLElBQUksR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdFLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsT0FBTyxHQUFHLENBQUM7SUFDbkIsS0FBSztJQUNMOztJQ2o5QkE7SUFDQTtBQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBR0E7SUFDTyxNQUFNLFdBQVcsQ0FBQztJQUN6QixJQUFJLFdBQVcsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM1QyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQ2hDLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDM0IsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUM3QixLQUFLO0FBQ0w7SUFDQSxJQUFJLGFBQWEsY0FBYyxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUN0RSxRQUFRLE1BQU0sYUFBYSxHQUFHLElBQUlBLFdBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLEdBQUcsU0FBUyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0YsUUFBUSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUM7SUFDQSxRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDOUQ7SUFDQSxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMzRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLGFBQWEsQ0FBQyxLQUFLLEVBQUU7SUFDekIsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDeEM7SUFDQSxRQUFRLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO0lBQ3RELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ3pFLFNBQVM7QUFDVDtJQUNBLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsS0FBSztBQUNMO0lBQ0EsSUFBSSxNQUFNLEdBQUc7SUFDYixRQUFRLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3ZELFFBQVEsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ3RFLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2hGLFNBQVM7SUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtJQUMxQixZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDM0QsU0FBUztJQUNULFFBQVEsT0FBTyxNQUFNLENBQUM7SUFDdEIsS0FBSztJQUNMOztJQzFEQTtJQUNBO0FBQ0E7SUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFRQSxNQUFNLG1CQUFDWCxrQkFBZ0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQW9CakM7SUFDZSxlQUFlLFlBQVksQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUU7SUFDM0YsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTTBGLFdBQXdCLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFlLENBQUMsQ0FBQztBQUMxSDtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFDdkQsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNSSxVQUFvQixDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUNsRTtJQUNBO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDcEQsSUFBSSxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLEdBQUcsTUFBTUosV0FBd0IsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLENBQWUsQ0FBQyxDQUFDO0FBQ3ZIO0lBQ0EsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNSyxZQUFvQixDQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRTtJQUNsQyxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUNsRCxLQUFLO0FBQ0w7SUFDQSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ3JDLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO0lBQzVGLEtBQUs7QUFDTDtJQUNBLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtJQUN0RCxRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsQ0FBQyxpQ0FBaUMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pILEtBQUs7QUFDTDtJQUNBLElBQUksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUM3QjtJQUNBLElBQUksTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUN4QixJQUFJLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzVCLElBQUksTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFDMUM7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFO0lBQ2hCLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQy9DLFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxRQUFRLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlELFFBQVEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsUUFBUSxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7SUFDckQsS0FBSztBQUNMO0lBQ0E7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM1RCxJQUFJLE1BQU0sV0FBVyxHQUFHLE1BQU1DLFdBQXdCLENBQUMsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNoRjtJQUNBO0lBQ0E7SUFDQSxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoQyxJQUFJLE1BQU0sbUJBQW1CLEdBQUcsSUFBSXJGLFdBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ25FO0lBQ0EsSUFBSSxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDckIsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDekIsSUFBSSxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUM7QUFDekI7SUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN4QixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxJQUFJLE1BQU0sVUFBVSxHQUFHLElBQUksbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdEQ7SUFDQSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFGLElBQUksTUFBTSxrQkFBa0IsRUFBRSxDQUFDO0FBQy9CO0lBQ0EsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsa0JBQWtCLEVBQUUscUJBQXFCLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0lBQy9ELElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJQSxXQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9FO0lBQ0EsSUFBSSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxJQUFJLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDM0gsSUFBSSxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxZQUFZLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxD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R0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pEO0lBQ0E7SUFDQSxZQUFZLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLFlBQVksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QztJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDakcsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlDO0lBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDakQ7SUFDQTtJQUNBLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ2hFLFlBQVksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMvRDtJQUNBO0lBQ0EsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEUsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQy9EO0lBQ0EsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM1QyxTQUFTO0FBQ1Q7SUFDQTtJQUNBO0lBQ0EsUUFBUSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DO0lBQ0E7SUFDQTtJQUNBLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsWUFBWSxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ2xDO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssR0FBRyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNqRyxZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQjtJQUNBLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0lBQ2xELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQy9ELFNBQVM7QUFDVDtJQUNBO0lBQ0EsUUFBUSxJQUFJLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLHNC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LEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9FO0lBQ0EsWUFBWSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JELFlBQVksTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxNQUFNLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyRCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUc7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkQsWUFBWSxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxZQUFZLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNELFlBQVksTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0Q7SUFDQSxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRSxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzRTtJQUNBLFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwQyxZQUFZLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hILFlBQVksTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRCxZQUFZLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsWUFBWSxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuSDtJQUNBLFlBQVksSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztJQUM3QixZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ25ELGdCQUFnQixNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7QUFDN0Q7SUFDQSxnQkFBZ0IsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDeEUsZ0JBQWdCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3JFO0lBQ0EsZ0JBQWdCLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELGFBQWE7QUFDYjtJQUNBO0lBQ0EsWUFBWSxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsWUFBWSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDaEMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDbEM7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNDLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDOUM7SUFDQSxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNoQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNoQztJQUNBO0lBQ0EsWUFBWSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckQsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hEO0lBQ0EsWUFBWSxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDeEIsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEQsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0F